From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v5 01/14] generic-sections: add section core helpers Date: Wed, 21 Dec 2016 18:37:57 -0800 Message-ID: <20161222023811.21246-2-mcgrof@kernel.org> References: <1471642454-5679-1-git-send-email-mcgrof@kernel.org> <20161222023811.21246-1-mcgrof@kernel.org> Return-path: In-Reply-To: <20161222023811.21246-1-mcgrof@kernel.org> Sender: platform-driver-x86-owner@vger.kernel.org To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel List-Id: linux-arch.vger.kernel.org Linux makes extensive use of custom ELF header sections, documentation for these are well scatterred. Unify this documentation in a central place and provide helpers to build custom Linux sections. This also generalizes sections code to enable avoiding modifying the linker scripts when we want to add new custom Linux sections. In order to make this generally useful we need to ensure all architectures can make use of core section helpers but that they can also override should this be needed. Instead of relying on section.h this adds a sections-core.h since this will be targetted to be safe to be used on asm code, linker scripts and C code. v5: o Huge documentation revamp based on a careful review of the ELF specifications. Includes documentation now also about usage of two dots (..) when prefixing ELF program specific sections. o Replace macros for sections names in favor of just using the section names explicitly in the linker script. This is perhaps more work to grep but this is what folks seem to currently prefer. o Fix .text and .rodata documentation to explain memory protection strategies which architectures can embrace upon initialization (documents CONFIG_DEBUG_RODATA and mark_rodata_ro()) o Skip the 'Linux section ordering' documentation section, we'll instead add this on subsequent patch which will expand on it considerably o Dropped tree on MAINTAINERS -- as per discussions with Arnd, hpa and Josh, its easier to just let changes for sections go in through the respective tree that needs the changes. o Fix typos on documentation o Dropped SECTION_ALL(), __SECTION_CORE(), SECTION_CORE_ALL() macros since we are favoring using explicit section names. These are useless if we are being explicit. o Drop LINUX_SECTION_SIZE(), LINUX_SECTION_EMPTY() in favor of having section ranges and linker tables define their own, to avoid confusion and make code more readable. o Add __define_initcall() documentation and a small section describing our current initcall levels. This should help also clarify what was meant about keeping backward compatiblity. v4: o Port to shiny new sphinx documentation format o fix a unicore32 build, turns out this actually fixes unicore32 defconfig builds which were failing for a long while. unicore32 does not seem to grok well the type passed on a section declaration, this ignores it. o Use VMLINUX_SYMBOL() in more user symbols (extern C code), not doing this was causing final linker issues with blackfin -- this is a CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX=y architecture. The other one being metatag. metatag is not supported on 0-day so I cannot confirm compilation there. o Added SECTION_CORE() for C code, used later by __LINUX_RANGE() o Since SECTION_CORE() is defined for linker script and C code, share the same helper and just use a __stringify() for the C code as is done for the other C helpers. o move generic sections to asm-generic/section-core.h instead. PowerPC compilation blows up if asm/jump_labels.h gets section.h included, fixing this is not in any way easy. The list of issues are endless. Moving new data to a new simple file resolves this. o since things are now in asm-generic/section-core.h the guard changes on asm-generic/sections.h and each architecture sections.h are no longer needed o Give generic sections some maintainer love, that change is Acked-by Arnd Bergmann, Josh and hpa. o A few checkpatch.pl style fixes o As suggested by James Hogan use generic-y to copy generic header files on architectures that do not have a sections.h instead of writing a simple file only to include the generic one. v3: o add missing sections.h for architectures that did not have it o move generic sections to asm-generic/sections.h o add generic asm helpers section_type(), section_type_asmtype(), push_section_type() -- these helpers enable easy use for for later declaring and using of custom linux sections using more standard APIs in both C code, asm code (C asm calls, or asm files), enabling future standardized section types to be more immediately accessible to asm code, not just C code. Note for ASM_CMD_SEP we use by default "\n", architectures needed to override can do so on their own sections.h prior to inclusion of asm-generic/sections.h Signed-off-by: Luis R. Rodriguez --- Documentation/index.rst | 1 + Documentation/sections/background.rst | 105 ++++++++++ Documentation/sections/conf.py | 4 + Documentation/sections/index.rst | 17 ++ Documentation/sections/section-core.rst | 148 ++++++++++++++ MAINTAINERS | 12 ++ arch/alpha/include/asm/Kbuild | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arm/include/asm/Kbuild | 1 + arch/arm64/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/h8300/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/m68k/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + arch/openrisc/include/asm/Kbuild | 1 + arch/parisc/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/sh/include/asm/Kbuild | 1 + arch/sparc/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/section-core.h | 19 ++ arch/x86/include/asm/Kbuild | 1 + arch/xtensa/include/asm/Kbuild | 1 + include/asm-generic/section-core.h | 307 ++++++++++++++++++++++++++++++ include/asm-generic/sections.h | 2 + include/asm-generic/vmlinux.lds.h | 1 + include/linux/init.h | 89 +++++++-- include/linux/sections.h | 87 +++++++++ 42 files changed, 809 insertions(+), 13 deletions(-) create mode 100644 Documentation/sections/background.rst create mode 100644 Documentation/sections/conf.py create mode 100644 Documentation/sections/index.rst create mode 100644 Documentation/sections/section-core.rst create mode 100644 arch/unicore32/include/asm/section-core.h create mode 100644 include/asm-generic/section-core.h create mode 100644 include/linux/sections.h diff --git a/Documentation/index.rst b/Documentation/index.rst index cb5d77699c60..71e0305c036d 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -57,6 +57,7 @@ needed). media/index gpu/index security/index + sections/index sound/index crypto/index diff --git a/Documentation/sections/background.rst b/Documentation/sections/background.rst new file mode 100644 index 000000000000..0ecf9104aaa2 --- /dev/null +++ b/Documentation/sections/background.rst @@ -0,0 +1,105 @@ +====================== +ELF section background +====================== + +About +===== + +The purpose of this chapter is to help those not familiar with ELF to brush up +the latest ELF specifications in order to help understand how Linux uses and +defines its own ELF sections. + +Standardized ELF +================ + +The first publication documenting ELF was UNIX System Laboratories' (USL) +*System V Release 4 Application Binary Interface* (`SRV4 ABI`_) specification. +Originally ELF was only a small part of the SRV4 ABI, with time however new +specifications only put focus on ELF, such was the case of the *TIS Portable +Formats Specification version 1.2* (`TIS 1.2`_). As of TIS 1.2, ELF was +supplemented with processor specific ELF addendums, available on the *Linux +Foundation referenced specification page* (`LF ref page`_). The latest ELF +specification is the *System V Application Binary Interface - DRAFT - 24 April +2001* (`gabi4`_). + +.. _SRV4 ABI: http://www.sco.com/developers/devspecs/gabi41.pdf +.. _TIS 1.2: https://refspecs.linuxbase.org/elf/elf.pdf +.. _LF ref page: https://refspecs.linuxbase.org/ +.. _gabi4: https://refspecs.linuxbase.org/elf/gabi4+/contents.html + +ELF views on Linux +================== + +There are two views which can be used for inspecting data in an ELF file, a +Linking view, and an Execution view. A Section Header Table enables one to +describe an object using the Linking view while a Program Header Table enables +one to describe an object using the Execution view. The views are not mutually +exclusive. For intance, vmlinux can be viewed under both views, ``readelf -S +vmlinux`` for the Linking view, and ``readelf -l vmlinux`` for the Execution +view. In Linux only the vmlinux file will have an Execution view, even modules +lack an Execution view given that vmlinux is the only file that describes how +the the kernel runs from the start. All other Linux kernel object files have +an available Linking view. + +Under the Linking view, the Section Header Table describes all available +sections. The Section Header Table is an array of ELF section header data +structures. If on a 32-bit system this is ``struct elf32_shd``, if on a 64-bit +this is ``struct elf64_shdr``. Sections are only visible on object files that +have a Linking view, since all Linux kernel files have Linking view, all kernel +objects have ELF sections. + +Limitations on ELF sections +=========================== + +We provide a summary on the limitations of ELF sections. Refer to the public +ELF specifications for details. Note that 64-bit limitations may depend +on processor specific section attributes to be used, refer to your processsor +specification if unsure. + +Its worth ellaborating on the limitations on the name of an ELF section: +ELF section names are stored as strings as per the ELF specification, and +as can be expected, these don't have explicit limitations. The implicit +limitation then depends on the size of an ELF object file and ELF section. + +If using really large kernels or objects with large amounts of sections one +would still need to be sure that ELF loader in charge of loading the Linux +kernel is properly updated to handle coping with the latest ELF extensions. + + .. flat-table:: Limitations on ELF Sections + + * - Section attribute + - 32-bit + - 64-bit + + * - ELF section name + - Size of an ELF section + - Size of an ELF section + + * - Size of an ELF section + - 4 GiB + - 16 EiB + + * - Max number of sections in an object file + - 4 GiEntries (4294967296) + - 16 EiEntries (18446744073709551616) + +Program specific ELF sections +============================= + +The ELF specification allows for a section type to be specified as +*Program specific section*, defined as ``SHT_PROGBITS``. This sections type +enables programs to customize sections for their own use. In assembly this +specified ``@progbits`` on most architectures, on ARM this is ``%progbits``. + +``SHT_PROGBITS`` is used by Linux for defining and using Linux ELF sections. + +Special ELF Sections +==================== + +The ELF specification defines *Special ELF Sections* on chapter 4 (`gabi4 +ch4`_). These are defined as sections which hold program and control +information. Of these sections, a few have the section type as +``SHT_PROGBITS``. This enables Linux to *further customize* use of the section +beyond what the ELF specification suggests. + +.. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections diff --git a/Documentation/sections/conf.py b/Documentation/sections/conf.py new file mode 100644 index 000000000000..faa1c57595e1 --- /dev/null +++ b/Documentation/sections/conf.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8; mode: python -*- + +project = 'Linux Kernel ELF sections' +html_search_language = 'en' diff --git a/Documentation/sections/index.rst b/Documentation/sections/index.rst new file mode 100644 index 000000000000..f37511ef05e7 --- /dev/null +++ b/Documentation/sections/index.rst @@ -0,0 +1,17 @@ +========================= +Linux Kernel ELF sections +========================= + +This book documents the different ELF sections used on the Linux kernel. +We start off by providing references to how ELF was standardized, references +to the standards on ELF sections, review limitations of ELF sections, and +finally how Linux uses ELF sections in the Linux kernel. Certain important +Linux ELF sections are documented carefully: we describe the goal of the +ELF section, and address concurrency considerations when applicable. A few +common a set of Linux helpers for ELF sections are also documented. + +.. toctree:: + :maxdepth: 4 + + background + section-core diff --git a/Documentation/sections/section-core.rst b/Documentation/sections/section-core.rst new file mode 100644 index 000000000000..ac5815a0d9b3 --- /dev/null +++ b/Documentation/sections/section-core.rst @@ -0,0 +1,148 @@ +=================================== +Linux ELF program specific sections +=================================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux ELF program specific sections + +Linux linker script +=================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux linker script + +Memory protection +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Memory protection + +mark_rodata_ro +----------------------- +.. kernel-doc:: include/linux/init.h + :functions: mark_rodata_ro + +.rodata +------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .rodata + +.text +----- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .text + +.data +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .data + +Linux .init\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux init sections + +.init.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.text + +.init.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.data + +.init.rodata +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.rodata + +Initcall levels +--------------- +.. kernel-doc:: include/linux/init.h + :doc: Initcall levels + +.initcall +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .initcall + +__define_initcall +----------------- +.. kernel-doc:: include/linux/init.h + :functions: __define_initcall + +Linux .exit\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux exit sections + +.exit.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.text + +.exit.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.data + +.exitcall.exit +-------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exitcall.exit + +Linux .ref\* sections +===================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux references to init sections + +.ref.text +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.text + +.ref.data +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.data + +.ref.rodata +----------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.rodata + +Generic Linux kernel section helpers +==================================== + +Introduction +------------- +.. kernel-doc:: include/linux/sections.h + :doc: Introduction + +LINUX_SECTION_ALIGNMENT +----------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_ALIGNMENT + +LINUX_SECTION_START +------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_START + +LINUX_SECTION_END +----------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_END + +DECLARE_LINUX_SECTION +--------------------- +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION + +DECLARE_LINUX_SECTION_RO +------------------------ +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION_RO diff --git a/MAINTAINERS b/MAINTAINERS index d0b2b50705bd..308826f5094b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5422,6 +5422,18 @@ S: Supported F: drivers/base/power/domain*.c F: include/linux/pm_domain.h +GENERIC SECTIONS +M: "Luis R. Rodriguez" +M: Josh Poimboeuf +M: "H. Peter Anvin" +L: linux-arch@vger.kernel.org +L: linux-kernel@vger.kernel.org +S: Supported +F: include/asm-generic/section-core.h +F: include/asm-generic/sections.h +F: include/asm-generic/vmlinux.lds.h +F: Documentation/sections/section-core.rst + GENERIC UIO DRIVER FOR PCI DEVICES M: "Michael S. Tsirkin" L: kvm@vger.kernel.org diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild index bf8475ce85ee..5422827f1585 100644 --- a/arch/alpha/include/asm/Kbuild +++ b/arch/alpha/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h +generic-y += section-core.h diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index c332604606dd..7b2cb3dea5fc 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -51,3 +51,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild index efb21757d41f..9b69a22a9ae1 100644 --- a/arch/arm/include/asm/Kbuild +++ b/arch/arm/include/asm/Kbuild @@ -41,3 +41,4 @@ generic-y += unaligned.h generated-y += mach-types.h generated-y += unistd-nr.h +generic-y += section-core.h diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild index 8365a84c2640..00ace5e826f1 100644 --- a/arch/arm64/include/asm/Kbuild +++ b/arch/arm64/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += vga.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 241b9b9729d8..f2c3b656a0e7 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -22,3 +22,4 @@ generic-y += trace_clock.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index 2fb67b59d188..bf20541bcf21 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild @@ -47,3 +47,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index 64465e7e2245..38127ce747be 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -62,3 +62,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/cris/include/asm/Kbuild b/arch/cris/include/asm/Kbuild index 1778805f6380..385cd88a9d9e 100644 --- a/arch/cris/include/asm/Kbuild +++ b/arch/cris/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += types.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild index 1fa084cf1a43..46d7c599d9b8 100644 --- a/arch/frv/include/asm/Kbuild +++ b/arch/frv/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/h8300/include/asm/Kbuild b/arch/h8300/include/asm/Kbuild index 373cb23301e3..1ec04ec1c82b 100644 --- a/arch/h8300/include/asm/Kbuild +++ b/arch/h8300/include/asm/Kbuild @@ -75,3 +75,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild index db8ddabc6bd2..37d7bfae7619 100644 --- a/arch/hexagon/include/asm/Kbuild +++ b/arch/hexagon/include/asm/Kbuild @@ -60,3 +60,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild index 502a91d8dbbd..672c6d5da18c 100644 --- a/arch/ia64/include/asm/Kbuild +++ b/arch/ia64/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += trace_clock.h generic-y += vtime.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m32r/include/asm/Kbuild b/arch/m32r/include/asm/Kbuild index 860e440611c9..6111e1523750 100644 --- a/arch/m32r/include/asm/Kbuild +++ b/arch/m32r/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index 1f2e5d31cb24..1277b45bf4f9 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild @@ -34,3 +34,4 @@ generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/metag/include/asm/Kbuild b/arch/metag/include/asm/Kbuild index 167150c701d1..b1011375cd7a 100644 --- a/arch/metag/include/asm/Kbuild +++ b/arch/metag/include/asm/Kbuild @@ -55,3 +55,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild index b0ae88c9fed9..c6c2cf6edc98 100644 --- a/arch/microblaze/include/asm/Kbuild +++ b/arch/microblaze/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += syscalls.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild index 45b0d6568270..a67d3177f3ca 100644 --- a/arch/mips/include/asm/Kbuild +++ b/arch/mips/include/asm/Kbuild @@ -20,3 +20,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index 1c8dd0f5cd5d..f8145bc85835 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/nios2/include/asm/Kbuild b/arch/nios2/include/asm/Kbuild index d63330e88379..c9c7cb82b00f 100644 --- a/arch/nios2/include/asm/Kbuild +++ b/arch/nios2/include/asm/Kbuild @@ -63,3 +63,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/openrisc/include/asm/Kbuild b/arch/openrisc/include/asm/Kbuild index 2832f031fb11..86175e701869 100644 --- a/arch/openrisc/include/asm/Kbuild +++ b/arch/openrisc/include/asm/Kbuild @@ -71,3 +71,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 91f53c07f410..18a9d4c5ead7 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -28,3 +28,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild index 5c4fbc80dc6c..4322d9746cdb 100644 --- a/arch/powerpc/include/asm/Kbuild +++ b/arch/powerpc/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += rwsem.h generic-y += vtime.h +generic-y += section-core.h diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild index 8aea32fe8bd2..63a1c2924b91 100644 --- a/arch/s390/include/asm/Kbuild +++ b/arch/s390/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/score/include/asm/Kbuild b/arch/score/include/asm/Kbuild index a05218ff3fe4..f089a264cd38 100644 --- a/arch/score/include/asm/Kbuild +++ b/arch/score/include/asm/Kbuild @@ -14,3 +14,4 @@ generic-y += trace_clock.h generic-y += xor.h generic-y += serial.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 751c3373a92c..7b0356dca562 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -39,3 +39,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += ucontext.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild index 0569bfac4afb..438f86573dc5 100644 --- a/arch/sparc/include/asm/Kbuild +++ b/arch/sparc/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += serial.h generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/tile/include/asm/Kbuild b/arch/tile/include/asm/Kbuild index 2d1f5638974c..fb6b831c1fba 100644 --- a/arch/tile/include/asm/Kbuild +++ b/arch/tile/include/asm/Kbuild @@ -40,3 +40,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += types.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/um/include/asm/Kbuild b/arch/um/include/asm/Kbuild index 052f7f6d0551..580bd5ff828f 100644 --- a/arch/um/include/asm/Kbuild +++ b/arch/um/include/asm/Kbuild @@ -26,3 +26,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/unicore32/include/asm/section-core.h b/arch/unicore32/include/asm/section-core.h new file mode 100644 index 000000000000..0b9c68429a1a --- /dev/null +++ b/arch/unicore32/include/asm/section-core.h @@ -0,0 +1,19 @@ +#ifndef __UNICORE_SECTION_CORE_ASM_H__ +#define __UNICORE_SECTION_CORE_ASM_H__ +/* + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/* Unicore32 has known to not work properly with the type set, so ignore it */ + +#define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags + +#include + +#endif /* __UNICORE_SECTION_CORE_ASM_H__ */ diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild index 2b892e2313a9..af975f21eeee 100644 --- a/arch/x86/include/asm/Kbuild +++ b/arch/x86/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += dma-contiguous.h generic-y += early_ioremap.h generic-y += mcs_spinlock.h generic-y += mm-arch-hooks.h +generic-y += section-core.h diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild index b7fbaa56b51a..7879c31e66a7 100644 --- a/arch/xtensa/include/asm/Kbuild +++ b/arch/xtensa/include/asm/Kbuild @@ -32,3 +32,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/include/asm-generic/section-core.h b/include/asm-generic/section-core.h new file mode 100644 index 000000000000..bb16befc4251 --- /dev/null +++ b/include/asm-generic/section-core.h @@ -0,0 +1,307 @@ +#ifndef _ASM_GENERIC_SECTION_CORE_H_ +#define _ASM_GENERIC_SECTION_CORE_H_ +/* + * Linux section core definitions + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/** + * DOC: Linux ELF program specific sections + * + * Linux makes extensive use of ``SHT_PROGBITS`` to both extend use and + * definition of *Special ELF Sections* (`gabi4 ch4`_) and to define its own + * sections. This chaper is dedicated to documenting Linux program specific + * sections and helpers available to make use of these easier to implement and + * use. + * + * .. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections + */ + +/** + * DOC: Linux linker script + * + * Linux uses a custom linker script to build the vmlinux binary, it uses it to + * strategically place and define Linux ELF sections. Each architecture needs + * to implement its own linker script, it is expected to reside in + * ``arch/$(ARCH)/kernel/vmlinux.lds.S``. Architecture Linux linker scripts in + * turn include and use definitions from ``include/asm-generic/vmlinux.lds.h``, + * as well as some helpers documented in this chapter. + * + * In assembly it is common practice to use dots (``.``) in labels to avoid + * clashes with C symbols. Similarly, a dot (``.``) can be part of a section + * name but not a C symbol. Historically then, two dots are used (``..``) + * have been used in linker scripts when adding program specific sections + * when there are concerns to avoid clashes with compiler generated sections. + */ + +/** + * DOC: Memory protection + * + * Linux allows architectures which support memory protection features to + * take advantage of them by letting architectures define and enable + * ``CONFIG_DEBUG_RODATA`` and implement a mark_rodata_ro() call. + * mark_rodata_ro() can be used for instance to mark specific sections as + * read-only or non-executable. + * + * Linux typically follows a convention to have the .rodata ELF section follow + * after the .text ELF section, it does this to help architectures which + * support memory protection to mark both .text and .rodata as read-only in + * one shot. + * + * For more details refer to mark_rodata_ro(). + */ + +/** + * DOC: .rodata + * + * ELF section used for data which must be protected from write access. + */ + +/** + * DOC: .text + * + * ELF section name used for code (functions) used during regular + * kernel run time. + */ + +/** + * DOC: .data + * + * ELF section used for read-write data. + */ + +/** + * DOC: Linux init sections + * + * These sections are used for code and data structures used during boot or + * module initialization. On architectures that support it (x86, x86_64), all + * this code is freed up by the kernel right before the fist userspace init + * process is called when built-in to the kernel, and if modular it is freed + * after module initialization. Since the code is freed so early, in theory + * there should be no races against freeing this code with other CPUs. Init + * section code and data structures should never be exported with + * EXPORT_SYMBOL*() as the code will quickly become unavailable to the kernel + * after bootup. + */ + +/** + * DOC: .init.text + * + * ELF section for code (functions) used only during boot or driver + * initialization. + * + */ + +/** + * DOC: .init.data + * + * ELF section used for data structures used only during boot or driver + * initialization. + */ + +/** + * DOC: .init.rodata + * + * ELF section used for read-only code (functions) used only during boot + * or driver initialization. + */ + +/** + * DOC: .initcall + * + * ELF section used for subsystem init calls. There are init levels + * representing different functionality in the kernel. For more details + * refer to __define_initcall(). + */ + +/** + * DOC: Linux exit sections + * + * These sections are used to declare a functions and data structures which + * are only required on exit, the function or data structure will be dropped + * if the code declaring this section is not compiled as a module on + * architectures that support this (x86, x86_64). There is no special case + * handling for this code when built-in to the kernel. + */ + +/** + * DOC: .exit.text + * + * ELF section used to for code (functions) used only during module unload. + */ + +/** + * DOC: .exit.data + * + * ELF section used to for data structures used only during module + * unload. + */ + +/** + * DOC: .exitcall.exit + * + * ELF section used for exit routines, order is important and maintained by + * link order. + */ + +/** + * DOC: Linux references to init sections + * + * These sections are used to teach modpost to not warn about possible + * misuses of init section code from other sections. If you use this + * your use case should document why you are certain such use of init + * sectioned code is valid. For more details refer to ``include/linux/init.h`` + * ``__ref``, ``__refdata``, and ``__refconst`` documentation. + */ + +/** + * DOC: .ref.text + * + * ELF section used to annotate code (functions) which has been vetteed as + * valid for its reference or use of other code (functions) or data structures + * which are part of the init sections. + */ + +/** + * DOC: .ref.data + * + * ELF section used for data structures which have been vetteed for its + * reference or use of other code (functions) or data structures part of the + * init sections. + */ + +/** + * DOC: .ref.rodata + * + * ELF section used to annotate const code (functions) const data structures + * which has been vetteed for its reference or use of other code (functions) + * or data structures part of the init sections. + */ + +/* Can be used on foo.S for instance */ +#ifndef __set_section_core_type +# define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags, ___type +#endif + +#ifndef __set_section_core +# define __set_section_core(___section, ___core, ___name, ___level, ___flags) \ + .section ___section..___core.___name.___level, ___flags +#endif + +#ifndef __push_section_core +# define __push_section_core(__section, __core, __name, __level, __flags) \ + .pushsection __section..__core.__name.__level, __flags +#endif + +#ifdef __KERNEL__ +#include +#endif + +#if defined(__ASSEMBLER__) || defined(__ASSEMBLY__) + +# ifndef LINKER_SCRIPT + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, __level, __flags) \ + __push_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, \ + __level, __flags) \ + __set_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, \ + __level, __flags, __type) \ + __set_section_core_type(__section, __core, __name, __level, \ + __stringify(__flags), __type) +# endif + +# endif /* LINKER_SCRIPT */ +#else /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ + +/* + * As per gcc's documentation a common asm separator is a new line followed + * by tab [0], it however seems possible to also just use a newline as its + * the most commonly empirically observed semantic and folks seem to agree + * this even works on S390. In case your architecture disagrees you may + * override this and define your own and keep the rest of the macros. + * + * [0] https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html#Basic-Asm + */ +# ifndef ASM_CMD_SEP +# define ASM_CMD_SEP "\n" +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, __level, __flags) \ + __stringify(__set_section_core_type(__section, __core, __name, \ + __level, __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +/* + * Some architectures (arm, and avr32 are two examples on kprobes) seem + * currently explicitly specify the type [0] -- this can be any of the + * optional constants on ELF: + * + * @progbits - section contains data + * @nobits - section does not contain data (i.e., section only occupies space) + * @note - section contains data which is used by things other than the program + * @init_array - section contains an array of pointers to init functions + * @fini_array - section contains an array of pointers to finish functions + * @preinit_array - section contains an array of pointers to pre-init functions + * + * ARM requires % instead of @. + * + * At least as per nasm (x86/x86_64 only), in the absence of qualifiers the + * defaults are as follows: + * + * section .text progbits alloc exec nowrite align=16 + * section .rodata progbits alloc noexec nowrite align=4 + * section .lrodata progbits alloc noexec nowrite align=4 + * section .data progbits alloc noexec write align=4 + * section .ldata progbits alloc noexec write align=4 + * section .bss nobits alloc noexec write align=4 + * section .lbss nobits alloc noexec write align=4 + * section .tdata progbits alloc noexec write align=4 tls + * section .tbss nobits alloc noexec write align=4 tls + * section .comment progbits noalloc noexec nowrite align=1 + * section other progbits alloc noexec nowrite align=1 + * + * gas should have sensible defaults for architectures... + * + * [0] http://www.nasm.us/doc/nasmdoc7.html + */ +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, __level, \ + __flags, __type) \ + __stringify(__set_section_core_type(__section, __core, \ + __name, __level, \ + __stringify(__flags), \ + __type)) \ + ASM_CMD_SEP +# endif + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, \ + __level, __flags) \ + __stringify(__push_section_core(__section, __core, \ + __name, __level, \ + __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +#endif /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ +#endif /* _ASM_GENERIC_SECTION_CORE_H_ */ diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 4df64a1fc09e..b145ae8d9cbe 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -1,6 +1,8 @@ #ifndef _ASM_GENERIC_SECTIONS_H_ #define _ASM_GENERIC_SECTIONS_H_ +#include + /* References to section boundaries */ #include diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0968d13b3885..483f60c451f9 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -55,6 +55,7 @@ #endif #include +#include /* Align . to a 8 byte boundary equals to maximum function alignment. */ #define ALIGN_FUNCTION() . = ALIGN(8) diff --git a/include/linux/init.h b/include/linux/init.h index 885c3e6d0f9d..116e3262332a 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -130,6 +130,24 @@ int __init init_rootfs(void); extern bool rodata_enabled; #endif #ifdef CONFIG_DEBUG_RODATA +/** + * mark_rodata_ro - implemement memory protection for ELF sections + * + * Architectures which support memory protection define a kernel configuration + * entry for CONFIG_DEBUG_RODATA, enable it in and implement mark_rodata_ro(). + * mark_rodata_ro() should strive to adjust the .rodata and .text ELF sections + * with read-only memory protection to prevent modifications of these sections + * after bootup. It can also try to use memory protection to prevent execution + * on the .rodata ELF section. + * + * In order to help architectures set both .text and .rodata as read-only with + * memory protections in one shot Linux has typically followed the convention + * to have the .rodata ELF section follow the .text ELF section on the vmlinux + * linker script. + * + * Linux calls mark_rodata_ro() after freeing .init code and prior to calling + * the first init userspace process. + */ void mark_rodata_ro(void); #endif @@ -140,25 +158,70 @@ extern bool initcall_debug; #endif #ifndef MODULE +/** + * DOC: Initcall levels + * + * When Linux boots the kernel do_initcalls() iterates over each Linux + * initialization level ID and calls all routines embedded on each level ID. + * Prior to v2.5.2.3 Linux had only one init level onto which all init + * functions folded onto using __initcall(). After v2.5.2.4 Linux split up + * initcalls into 7 separate initcall subsection levels, each level describing + * different functionality part of the kernel (commit `9d6ba121b7e17085`_ + * (v2.5.2.3 -> v2.5.2.4)). In order to remain backward compatible __initcall() + * calls were left mapped to device_initcall(). + * + * Each init level consists of a dedicated ELF section, init functions are + * associated to an init level by linking it into the respective level's + * ELF section. + * + * Lower order init levels run prior to higher order init levels. Ordering + * inside each initcall level is determined by respective link order. + * + * .. _9d6ba121b7e17085: https://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/?id=9d6ba121b7e17085c95139233686b27a4d4c650e + */ #ifndef __ASSEMBLY__ -/* - * initcalls are now grouped by functionality into separate - * subsections. Ordering inside the subsections is determined - * by link order. - * For backwards compatibility, initcall() puts the call in - * the device init subsection. +/** + * __define_initcall - wrapper for definiting init levels * - * The `id' arg to __define_initcall() is needed so that multiple initcalls - * can point at the same handler without causing duplicate-symbol build errors. + * @fn: init routine + * @id: init level * - * Initcalls are run by placing pointers in initcall sections that the - * kernel iterates at runtime. The linker can do dead code / data elimination - * and remove that completely, so the initcall sections have to be marked - * as KEEP() in the linker script. + * Defines a kernel initialization level. A respective linker script entry + * is required to ensure the init level is accounted for and to ensure symbols + * exist for iterating over all functions in the init level. A init level + * represents a series of functionality in the kernel. + * + * Ordering within an initialization level is determined by link order, so + * for instance if a Makefile had:: + * + * obj-y += foo.o + * obj-y += bar.o + * + * And foo.c:: + * + * subsys_initcall(foo_init); + * + * And bar.c had:: + * + * subsys_initcall(bar_init); + * + * foo_init() would be called prior to bar_init(). + * + * Note that @id in __define_initcall() also enables multiple initcalls + * to be created using the same handler for different init levels without + * causing duplicate-symbol build errors. + * + * Initcalls are run by placing start symbols to initcall levels inside ELF + * sections, the kernel in turn uses these symbols to iterate over each init + * level at runtime with do_initcall_level(). The end of each init level is + * marked by the subsequent's symbol's start address until we reach the symbol + * ``__initcall_end``. The linker can do dead code / data elimination and each + * init level start symbol could be removed completely in this process, to + * avoid this each init level start symbols must be marked as 'KEEP()' in the + * linker script to avoid any linker optimization heuristic on initcalls. */ - #define __define_initcall(fn, id) \ static initcall_t __initcall_##fn##id __used \ __attribute__((__section__(".initcall" #id ".init"))) = fn; diff --git a/include/linux/sections.h b/include/linux/sections.h new file mode 100644 index 000000000000..6771c727bcd1 --- /dev/null +++ b/include/linux/sections.h @@ -0,0 +1,87 @@ +#ifndef _LINUX_SECTIONS_H +#define _LINUX_SECTIONS_H +/* + * Linux de-facto sections + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +#include +#include + +#ifndef __ASSEMBLY__ + +/** + * DOC: Introduction + * + * Linux defines a set of common helpers which can be used to against its use + * of standard or custom Linux sections, this section is dedicated to these + * helpers. + */ + +/** + * LINUX_SECTION_ALIGNMENT - get section alignment + * + * @name: section name + * + * Gives you the alignment for the section. + */ +#define LINUX_SECTION_ALIGNMENT(name) __alignof__(*VMLINUX_SYMBOL(name)) + +/** + * LINUX_SECTION_START - get address of start of section + * + * @name: section name + * + * This gives you the start address of the section. + * This should give you the address of the first entry. + * + */ +#define LINUX_SECTION_START(name) VMLINUX_SYMBOL(name) + +/** + * LINUX_SECTION_END - get address of end of the section + * + * @name: section name + * + * This gives you the end address of the section. + * This should give you the address of the end of the + * section. This will match the start address if the + * section is empty. + */ +#define LINUX_SECTION_END(name) VMLINUX_SYMBOL(name##__end) + +/** + * DECLARE_LINUX_SECTION - Declares a custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-write custom Linux section + */ +#define DECLARE_LINUX_SECTION(type, name) \ + extern type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +/** + * DECLARE_LINUX_SECTION_RO - Declares a read-only custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-only custom Linux section + */ +#define DECLARE_LINUX_SECTION_RO(type, name) \ + extern const type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +#define __SECTION_CORE(section, core, name, level) \ + #section ".." #core "." #name "." #level + +#endif /* __ASSEMBLY__ */ + +#endif /* _LINUX_SECTIONS_H */ -- 2.10.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.136]:59596 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757659AbcLVCie (ORCPT ); Wed, 21 Dec 2016 21:38:34 -0500 From: "Luis R. Rodriguez" Subject: [PATCH v5 01/14] generic-sections: add section core helpers Date: Wed, 21 Dec 2016 18:37:57 -0800 Message-ID: <20161222023811.21246-2-mcgrof@kernel.org> In-Reply-To: <20161222023811.21246-1-mcgrof@kernel.org> References: <1471642454-5679-1-git-send-email-mcgrof@kernel.org> <20161222023811.21246-1-mcgrof@kernel.org> Sender: linux-arch-owner@vger.kernel.org List-ID: To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel.org, tony.luck@intel.com, akpm@linux-foundation.org, linux-ia64@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, rostedt@goodmis.org, jani.nikula@intel.com, mchehab@osg.samsung.com, markus.heiser@darmarit.de, jolsa@kernel.org, msalter@redhat.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, adrian.hunter@intel.com, dsahern@gmail.com, namhyung@kernel.org, wangnan0@huawei.com, dmitry.torokhov@gmail.com, joro@8bytes.org, paulus@samba.org, mpe@ellerman.id.au, James.Bottomley@HansenPartnership.com, "Luis R. Rodriguez" Message-ID: <20161222023757.FarvdWfwbD-XakysfL2oIbG0DDwJX3qyfE7_ZJRp7os@z> Linux makes extensive use of custom ELF header sections, documentation for these are well scatterred. Unify this documentation in a central place and provide helpers to build custom Linux sections. This also generalizes sections code to enable avoiding modifying the linker scripts when we want to add new custom Linux sections. In order to make this generally useful we need to ensure all architectures can make use of core section helpers but that they can also override should this be needed. Instead of relying on section.h this adds a sections-core.h since this will be targetted to be safe to be used on asm code, linker scripts and C code. v5: o Huge documentation revamp based on a careful review of the ELF specifications. Includes documentation now also about usage of two dots (..) when prefixing ELF program specific sections. o Replace macros for sections names in favor of just using the section names explicitly in the linker script. This is perhaps more work to grep but this is what folks seem to currently prefer. o Fix .text and .rodata documentation to explain memory protection strategies which architectures can embrace upon initialization (documents CONFIG_DEBUG_RODATA and mark_rodata_ro()) o Skip the 'Linux section ordering' documentation section, we'll instead add this on subsequent patch which will expand on it considerably o Dropped tree on MAINTAINERS -- as per discussions with Arnd, hpa and Josh, its easier to just let changes for sections go in through the respective tree that needs the changes. o Fix typos on documentation o Dropped SECTION_ALL(), __SECTION_CORE(), SECTION_CORE_ALL() macros since we are favoring using explicit section names. These are useless if we are being explicit. o Drop LINUX_SECTION_SIZE(), LINUX_SECTION_EMPTY() in favor of having section ranges and linker tables define their own, to avoid confusion and make code more readable. o Add __define_initcall() documentation and a small section describing our current initcall levels. This should help also clarify what was meant about keeping backward compatiblity. v4: o Port to shiny new sphinx documentation format o fix a unicore32 build, turns out this actually fixes unicore32 defconfig builds which were failing for a long while. unicore32 does not seem to grok well the type passed on a section declaration, this ignores it. o Use VMLINUX_SYMBOL() in more user symbols (extern C code), not doing this was causing final linker issues with blackfin -- this is a CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX=y architecture. The other one being metatag. metatag is not supported on 0-day so I cannot confirm compilation there. o Added SECTION_CORE() for C code, used later by __LINUX_RANGE() o Since SECTION_CORE() is defined for linker script and C code, share the same helper and just use a __stringify() for the C code as is done for the other C helpers. o move generic sections to asm-generic/section-core.h instead. PowerPC compilation blows up if asm/jump_labels.h gets section.h included, fixing this is not in any way easy. The list of issues are endless. Moving new data to a new simple file resolves this. o since things are now in asm-generic/section-core.h the guard changes on asm-generic/sections.h and each architecture sections.h are no longer needed o Give generic sections some maintainer love, that change is Acked-by Arnd Bergmann, Josh and hpa. o A few checkpatch.pl style fixes o As suggested by James Hogan use generic-y to copy generic header files on architectures that do not have a sections.h instead of writing a simple file only to include the generic one. v3: o add missing sections.h for architectures that did not have it o move generic sections to asm-generic/sections.h o add generic asm helpers section_type(), section_type_asmtype(), push_section_type() -- these helpers enable easy use for for later declaring and using of custom linux sections using more standard APIs in both C code, asm code (C asm calls, or asm files), enabling future standardized section types to be more immediately accessible to asm code, not just C code. Note for ASM_CMD_SEP we use by default "\n", architectures needed to override can do so on their own sections.h prior to inclusion of asm-generic/sections.h Signed-off-by: Luis R. Rodriguez --- Documentation/index.rst | 1 + Documentation/sections/background.rst | 105 ++++++++++ Documentation/sections/conf.py | 4 + Documentation/sections/index.rst | 17 ++ Documentation/sections/section-core.rst | 148 ++++++++++++++ MAINTAINERS | 12 ++ arch/alpha/include/asm/Kbuild | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arm/include/asm/Kbuild | 1 + arch/arm64/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/h8300/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/m68k/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + arch/openrisc/include/asm/Kbuild | 1 + arch/parisc/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/sh/include/asm/Kbuild | 1 + arch/sparc/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/section-core.h | 19 ++ arch/x86/include/asm/Kbuild | 1 + arch/xtensa/include/asm/Kbuild | 1 + include/asm-generic/section-core.h | 307 ++++++++++++++++++++++++++++++ include/asm-generic/sections.h | 2 + include/asm-generic/vmlinux.lds.h | 1 + include/linux/init.h | 89 +++++++-- include/linux/sections.h | 87 +++++++++ 42 files changed, 809 insertions(+), 13 deletions(-) create mode 100644 Documentation/sections/background.rst create mode 100644 Documentation/sections/conf.py create mode 100644 Documentation/sections/index.rst create mode 100644 Documentation/sections/section-core.rst create mode 100644 arch/unicore32/include/asm/section-core.h create mode 100644 include/asm-generic/section-core.h create mode 100644 include/linux/sections.h diff --git a/Documentation/index.rst b/Documentation/index.rst index cb5d77699c60..71e0305c036d 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -57,6 +57,7 @@ needed). media/index gpu/index security/index + sections/index sound/index crypto/index diff --git a/Documentation/sections/background.rst b/Documentation/sections/background.rst new file mode 100644 index 000000000000..0ecf9104aaa2 --- /dev/null +++ b/Documentation/sections/background.rst @@ -0,0 +1,105 @@ +====================== +ELF section background +====================== + +About +===== + +The purpose of this chapter is to help those not familiar with ELF to brush up +the latest ELF specifications in order to help understand how Linux uses and +defines its own ELF sections. + +Standardized ELF +================ + +The first publication documenting ELF was UNIX System Laboratories' (USL) +*System V Release 4 Application Binary Interface* (`SRV4 ABI`_) specification. +Originally ELF was only a small part of the SRV4 ABI, with time however new +specifications only put focus on ELF, such was the case of the *TIS Portable +Formats Specification version 1.2* (`TIS 1.2`_). As of TIS 1.2, ELF was +supplemented with processor specific ELF addendums, available on the *Linux +Foundation referenced specification page* (`LF ref page`_). The latest ELF +specification is the *System V Application Binary Interface - DRAFT - 24 April +2001* (`gabi4`_). + +.. _SRV4 ABI: http://www.sco.com/developers/devspecs/gabi41.pdf +.. _TIS 1.2: https://refspecs.linuxbase.org/elf/elf.pdf +.. _LF ref page: https://refspecs.linuxbase.org/ +.. _gabi4: https://refspecs.linuxbase.org/elf/gabi4+/contents.html + +ELF views on Linux +================== + +There are two views which can be used for inspecting data in an ELF file, a +Linking view, and an Execution view. A Section Header Table enables one to +describe an object using the Linking view while a Program Header Table enables +one to describe an object using the Execution view. The views are not mutually +exclusive. For intance, vmlinux can be viewed under both views, ``readelf -S +vmlinux`` for the Linking view, and ``readelf -l vmlinux`` for the Execution +view. In Linux only the vmlinux file will have an Execution view, even modules +lack an Execution view given that vmlinux is the only file that describes how +the the kernel runs from the start. All other Linux kernel object files have +an available Linking view. + +Under the Linking view, the Section Header Table describes all available +sections. The Section Header Table is an array of ELF section header data +structures. If on a 32-bit system this is ``struct elf32_shd``, if on a 64-bit +this is ``struct elf64_shdr``. Sections are only visible on object files that +have a Linking view, since all Linux kernel files have Linking view, all kernel +objects have ELF sections. + +Limitations on ELF sections +=========================== + +We provide a summary on the limitations of ELF sections. Refer to the public +ELF specifications for details. Note that 64-bit limitations may depend +on processor specific section attributes to be used, refer to your processsor +specification if unsure. + +Its worth ellaborating on the limitations on the name of an ELF section: +ELF section names are stored as strings as per the ELF specification, and +as can be expected, these don't have explicit limitations. The implicit +limitation then depends on the size of an ELF object file and ELF section. + +If using really large kernels or objects with large amounts of sections one +would still need to be sure that ELF loader in charge of loading the Linux +kernel is properly updated to handle coping with the latest ELF extensions. + + .. flat-table:: Limitations on ELF Sections + + * - Section attribute + - 32-bit + - 64-bit + + * - ELF section name + - Size of an ELF section + - Size of an ELF section + + * - Size of an ELF section + - 4 GiB + - 16 EiB + + * - Max number of sections in an object file + - 4 GiEntries (4294967296) + - 16 EiEntries (18446744073709551616) + +Program specific ELF sections +============================= + +The ELF specification allows for a section type to be specified as +*Program specific section*, defined as ``SHT_PROGBITS``. This sections type +enables programs to customize sections for their own use. In assembly this +specified ``@progbits`` on most architectures, on ARM this is ``%progbits``. + +``SHT_PROGBITS`` is used by Linux for defining and using Linux ELF sections. + +Special ELF Sections +==================== + +The ELF specification defines *Special ELF Sections* on chapter 4 (`gabi4 +ch4`_). These are defined as sections which hold program and control +information. Of these sections, a few have the section type as +``SHT_PROGBITS``. This enables Linux to *further customize* use of the section +beyond what the ELF specification suggests. + +.. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections diff --git a/Documentation/sections/conf.py b/Documentation/sections/conf.py new file mode 100644 index 000000000000..faa1c57595e1 --- /dev/null +++ b/Documentation/sections/conf.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8; mode: python -*- + +project = 'Linux Kernel ELF sections' +html_search_language = 'en' diff --git a/Documentation/sections/index.rst b/Documentation/sections/index.rst new file mode 100644 index 000000000000..f37511ef05e7 --- /dev/null +++ b/Documentation/sections/index.rst @@ -0,0 +1,17 @@ +========================= +Linux Kernel ELF sections +========================= + +This book documents the different ELF sections used on the Linux kernel. +We start off by providing references to how ELF was standardized, references +to the standards on ELF sections, review limitations of ELF sections, and +finally how Linux uses ELF sections in the Linux kernel. Certain important +Linux ELF sections are documented carefully: we describe the goal of the +ELF section, and address concurrency considerations when applicable. A few +common a set of Linux helpers for ELF sections are also documented. + +.. toctree:: + :maxdepth: 4 + + background + section-core diff --git a/Documentation/sections/section-core.rst b/Documentation/sections/section-core.rst new file mode 100644 index 000000000000..ac5815a0d9b3 --- /dev/null +++ b/Documentation/sections/section-core.rst @@ -0,0 +1,148 @@ +=================================== +Linux ELF program specific sections +=================================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux ELF program specific sections + +Linux linker script +=================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux linker script + +Memory protection +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Memory protection + +mark_rodata_ro +----------------------- +.. kernel-doc:: include/linux/init.h + :functions: mark_rodata_ro + +.rodata +------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .rodata + +.text +----- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .text + +.data +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .data + +Linux .init\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux init sections + +.init.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.text + +.init.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.data + +.init.rodata +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.rodata + +Initcall levels +--------------- +.. kernel-doc:: include/linux/init.h + :doc: Initcall levels + +.initcall +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .initcall + +__define_initcall +----------------- +.. kernel-doc:: include/linux/init.h + :functions: __define_initcall + +Linux .exit\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux exit sections + +.exit.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.text + +.exit.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.data + +.exitcall.exit +-------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exitcall.exit + +Linux .ref\* sections +===================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux references to init sections + +.ref.text +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.text + +.ref.data +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.data + +.ref.rodata +----------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.rodata + +Generic Linux kernel section helpers +==================================== + +Introduction +------------- +.. kernel-doc:: include/linux/sections.h + :doc: Introduction + +LINUX_SECTION_ALIGNMENT +----------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_ALIGNMENT + +LINUX_SECTION_START +------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_START + +LINUX_SECTION_END +----------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_END + +DECLARE_LINUX_SECTION +--------------------- +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION + +DECLARE_LINUX_SECTION_RO +------------------------ +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION_RO diff --git a/MAINTAINERS b/MAINTAINERS index d0b2b50705bd..308826f5094b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5422,6 +5422,18 @@ S: Supported F: drivers/base/power/domain*.c F: include/linux/pm_domain.h +GENERIC SECTIONS +M: "Luis R. Rodriguez" +M: Josh Poimboeuf +M: "H. Peter Anvin" +L: linux-arch@vger.kernel.org +L: linux-kernel@vger.kernel.org +S: Supported +F: include/asm-generic/section-core.h +F: include/asm-generic/sections.h +F: include/asm-generic/vmlinux.lds.h +F: Documentation/sections/section-core.rst + GENERIC UIO DRIVER FOR PCI DEVICES M: "Michael S. Tsirkin" L: kvm@vger.kernel.org diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild index bf8475ce85ee..5422827f1585 100644 --- a/arch/alpha/include/asm/Kbuild +++ b/arch/alpha/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h +generic-y += section-core.h diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index c332604606dd..7b2cb3dea5fc 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -51,3 +51,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild index efb21757d41f..9b69a22a9ae1 100644 --- a/arch/arm/include/asm/Kbuild +++ b/arch/arm/include/asm/Kbuild @@ -41,3 +41,4 @@ generic-y += unaligned.h generated-y += mach-types.h generated-y += unistd-nr.h +generic-y += section-core.h diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild index 8365a84c2640..00ace5e826f1 100644 --- a/arch/arm64/include/asm/Kbuild +++ b/arch/arm64/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += vga.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 241b9b9729d8..f2c3b656a0e7 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -22,3 +22,4 @@ generic-y += trace_clock.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index 2fb67b59d188..bf20541bcf21 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild @@ -47,3 +47,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index 64465e7e2245..38127ce747be 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -62,3 +62,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/cris/include/asm/Kbuild b/arch/cris/include/asm/Kbuild index 1778805f6380..385cd88a9d9e 100644 --- a/arch/cris/include/asm/Kbuild +++ b/arch/cris/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += types.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild index 1fa084cf1a43..46d7c599d9b8 100644 --- a/arch/frv/include/asm/Kbuild +++ b/arch/frv/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/h8300/include/asm/Kbuild b/arch/h8300/include/asm/Kbuild index 373cb23301e3..1ec04ec1c82b 100644 --- a/arch/h8300/include/asm/Kbuild +++ b/arch/h8300/include/asm/Kbuild @@ -75,3 +75,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild index db8ddabc6bd2..37d7bfae7619 100644 --- a/arch/hexagon/include/asm/Kbuild +++ b/arch/hexagon/include/asm/Kbuild @@ -60,3 +60,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild index 502a91d8dbbd..672c6d5da18c 100644 --- a/arch/ia64/include/asm/Kbuild +++ b/arch/ia64/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += trace_clock.h generic-y += vtime.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m32r/include/asm/Kbuild b/arch/m32r/include/asm/Kbuild index 860e440611c9..6111e1523750 100644 --- a/arch/m32r/include/asm/Kbuild +++ b/arch/m32r/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index 1f2e5d31cb24..1277b45bf4f9 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild @@ -34,3 +34,4 @@ generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/metag/include/asm/Kbuild b/arch/metag/include/asm/Kbuild index 167150c701d1..b1011375cd7a 100644 --- a/arch/metag/include/asm/Kbuild +++ b/arch/metag/include/asm/Kbuild @@ -55,3 +55,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild index b0ae88c9fed9..c6c2cf6edc98 100644 --- a/arch/microblaze/include/asm/Kbuild +++ b/arch/microblaze/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += syscalls.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild index 45b0d6568270..a67d3177f3ca 100644 --- a/arch/mips/include/asm/Kbuild +++ b/arch/mips/include/asm/Kbuild @@ -20,3 +20,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index 1c8dd0f5cd5d..f8145bc85835 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/nios2/include/asm/Kbuild b/arch/nios2/include/asm/Kbuild index d63330e88379..c9c7cb82b00f 100644 --- a/arch/nios2/include/asm/Kbuild +++ b/arch/nios2/include/asm/Kbuild @@ -63,3 +63,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/openrisc/include/asm/Kbuild b/arch/openrisc/include/asm/Kbuild index 2832f031fb11..86175e701869 100644 --- a/arch/openrisc/include/asm/Kbuild +++ b/arch/openrisc/include/asm/Kbuild @@ -71,3 +71,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 91f53c07f410..18a9d4c5ead7 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -28,3 +28,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild index 5c4fbc80dc6c..4322d9746cdb 100644 --- a/arch/powerpc/include/asm/Kbuild +++ b/arch/powerpc/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += rwsem.h generic-y += vtime.h +generic-y += section-core.h diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild index 8aea32fe8bd2..63a1c2924b91 100644 --- a/arch/s390/include/asm/Kbuild +++ b/arch/s390/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/score/include/asm/Kbuild b/arch/score/include/asm/Kbuild index a05218ff3fe4..f089a264cd38 100644 --- a/arch/score/include/asm/Kbuild +++ b/arch/score/include/asm/Kbuild @@ -14,3 +14,4 @@ generic-y += trace_clock.h generic-y += xor.h generic-y += serial.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 751c3373a92c..7b0356dca562 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -39,3 +39,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += ucontext.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild index 0569bfac4afb..438f86573dc5 100644 --- a/arch/sparc/include/asm/Kbuild +++ b/arch/sparc/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += serial.h generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/tile/include/asm/Kbuild b/arch/tile/include/asm/Kbuild index 2d1f5638974c..fb6b831c1fba 100644 --- a/arch/tile/include/asm/Kbuild +++ b/arch/tile/include/asm/Kbuild @@ -40,3 +40,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += types.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/um/include/asm/Kbuild b/arch/um/include/asm/Kbuild index 052f7f6d0551..580bd5ff828f 100644 --- a/arch/um/include/asm/Kbuild +++ b/arch/um/include/asm/Kbuild @@ -26,3 +26,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/unicore32/include/asm/section-core.h b/arch/unicore32/include/asm/section-core.h new file mode 100644 index 000000000000..0b9c68429a1a --- /dev/null +++ b/arch/unicore32/include/asm/section-core.h @@ -0,0 +1,19 @@ +#ifndef __UNICORE_SECTION_CORE_ASM_H__ +#define __UNICORE_SECTION_CORE_ASM_H__ +/* + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/* Unicore32 has known to not work properly with the type set, so ignore it */ + +#define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags + +#include + +#endif /* __UNICORE_SECTION_CORE_ASM_H__ */ diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild index 2b892e2313a9..af975f21eeee 100644 --- a/arch/x86/include/asm/Kbuild +++ b/arch/x86/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += dma-contiguous.h generic-y += early_ioremap.h generic-y += mcs_spinlock.h generic-y += mm-arch-hooks.h +generic-y += section-core.h diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild index b7fbaa56b51a..7879c31e66a7 100644 --- a/arch/xtensa/include/asm/Kbuild +++ b/arch/xtensa/include/asm/Kbuild @@ -32,3 +32,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/include/asm-generic/section-core.h b/include/asm-generic/section-core.h new file mode 100644 index 000000000000..bb16befc4251 --- /dev/null +++ b/include/asm-generic/section-core.h @@ -0,0 +1,307 @@ +#ifndef _ASM_GENERIC_SECTION_CORE_H_ +#define _ASM_GENERIC_SECTION_CORE_H_ +/* + * Linux section core definitions + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/** + * DOC: Linux ELF program specific sections + * + * Linux makes extensive use of ``SHT_PROGBITS`` to both extend use and + * definition of *Special ELF Sections* (`gabi4 ch4`_) and to define its own + * sections. This chaper is dedicated to documenting Linux program specific + * sections and helpers available to make use of these easier to implement and + * use. + * + * .. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections + */ + +/** + * DOC: Linux linker script + * + * Linux uses a custom linker script to build the vmlinux binary, it uses it to + * strategically place and define Linux ELF sections. Each architecture needs + * to implement its own linker script, it is expected to reside in + * ``arch/$(ARCH)/kernel/vmlinux.lds.S``. Architecture Linux linker scripts in + * turn include and use definitions from ``include/asm-generic/vmlinux.lds.h``, + * as well as some helpers documented in this chapter. + * + * In assembly it is common practice to use dots (``.``) in labels to avoid + * clashes with C symbols. Similarly, a dot (``.``) can be part of a section + * name but not a C symbol. Historically then, two dots are used (``..``) + * have been used in linker scripts when adding program specific sections + * when there are concerns to avoid clashes with compiler generated sections. + */ + +/** + * DOC: Memory protection + * + * Linux allows architectures which support memory protection features to + * take advantage of them by letting architectures define and enable + * ``CONFIG_DEBUG_RODATA`` and implement a mark_rodata_ro() call. + * mark_rodata_ro() can be used for instance to mark specific sections as + * read-only or non-executable. + * + * Linux typically follows a convention to have the .rodata ELF section follow + * after the .text ELF section, it does this to help architectures which + * support memory protection to mark both .text and .rodata as read-only in + * one shot. + * + * For more details refer to mark_rodata_ro(). + */ + +/** + * DOC: .rodata + * + * ELF section used for data which must be protected from write access. + */ + +/** + * DOC: .text + * + * ELF section name used for code (functions) used during regular + * kernel run time. + */ + +/** + * DOC: .data + * + * ELF section used for read-write data. + */ + +/** + * DOC: Linux init sections + * + * These sections are used for code and data structures used during boot or + * module initialization. On architectures that support it (x86, x86_64), all + * this code is freed up by the kernel right before the fist userspace init + * process is called when built-in to the kernel, and if modular it is freed + * after module initialization. Since the code is freed so early, in theory + * there should be no races against freeing this code with other CPUs. Init + * section code and data structures should never be exported with + * EXPORT_SYMBOL*() as the code will quickly become unavailable to the kernel + * after bootup. + */ + +/** + * DOC: .init.text + * + * ELF section for code (functions) used only during boot or driver + * initialization. + * + */ + +/** + * DOC: .init.data + * + * ELF section used for data structures used only during boot or driver + * initialization. + */ + +/** + * DOC: .init.rodata + * + * ELF section used for read-only code (functions) used only during boot + * or driver initialization. + */ + +/** + * DOC: .initcall + * + * ELF section used for subsystem init calls. There are init levels + * representing different functionality in the kernel. For more details + * refer to __define_initcall(). + */ + +/** + * DOC: Linux exit sections + * + * These sections are used to declare a functions and data structures which + * are only required on exit, the function or data structure will be dropped + * if the code declaring this section is not compiled as a module on + * architectures that support this (x86, x86_64). There is no special case + * handling for this code when built-in to the kernel. + */ + +/** + * DOC: .exit.text + * + * ELF section used to for code (functions) used only during module unload. + */ + +/** + * DOC: .exit.data + * + * ELF section used to for data structures used only during module + * unload. + */ + +/** + * DOC: .exitcall.exit + * + * ELF section used for exit routines, order is important and maintained by + * link order. + */ + +/** + * DOC: Linux references to init sections + * + * These sections are used to teach modpost to not warn about possible + * misuses of init section code from other sections. If you use this + * your use case should document why you are certain such use of init + * sectioned code is valid. For more details refer to ``include/linux/init.h`` + * ``__ref``, ``__refdata``, and ``__refconst`` documentation. + */ + +/** + * DOC: .ref.text + * + * ELF section used to annotate code (functions) which has been vetteed as + * valid for its reference or use of other code (functions) or data structures + * which are part of the init sections. + */ + +/** + * DOC: .ref.data + * + * ELF section used for data structures which have been vetteed for its + * reference or use of other code (functions) or data structures part of the + * init sections. + */ + +/** + * DOC: .ref.rodata + * + * ELF section used to annotate const code (functions) const data structures + * which has been vetteed for its reference or use of other code (functions) + * or data structures part of the init sections. + */ + +/* Can be used on foo.S for instance */ +#ifndef __set_section_core_type +# define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags, ___type +#endif + +#ifndef __set_section_core +# define __set_section_core(___section, ___core, ___name, ___level, ___flags) \ + .section ___section..___core.___name.___level, ___flags +#endif + +#ifndef __push_section_core +# define __push_section_core(__section, __core, __name, __level, __flags) \ + .pushsection __section..__core.__name.__level, __flags +#endif + +#ifdef __KERNEL__ +#include +#endif + +#if defined(__ASSEMBLER__) || defined(__ASSEMBLY__) + +# ifndef LINKER_SCRIPT + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, __level, __flags) \ + __push_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, \ + __level, __flags) \ + __set_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, \ + __level, __flags, __type) \ + __set_section_core_type(__section, __core, __name, __level, \ + __stringify(__flags), __type) +# endif + +# endif /* LINKER_SCRIPT */ +#else /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ + +/* + * As per gcc's documentation a common asm separator is a new line followed + * by tab [0], it however seems possible to also just use a newline as its + * the most commonly empirically observed semantic and folks seem to agree + * this even works on S390. In case your architecture disagrees you may + * override this and define your own and keep the rest of the macros. + * + * [0] https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html#Basic-Asm + */ +# ifndef ASM_CMD_SEP +# define ASM_CMD_SEP "\n" +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, __level, __flags) \ + __stringify(__set_section_core_type(__section, __core, __name, \ + __level, __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +/* + * Some architectures (arm, and avr32 are two examples on kprobes) seem + * currently explicitly specify the type [0] -- this can be any of the + * optional constants on ELF: + * + * @progbits - section contains data + * @nobits - section does not contain data (i.e., section only occupies space) + * @note - section contains data which is used by things other than the program + * @init_array - section contains an array of pointers to init functions + * @fini_array - section contains an array of pointers to finish functions + * @preinit_array - section contains an array of pointers to pre-init functions + * + * ARM requires % instead of @. + * + * At least as per nasm (x86/x86_64 only), in the absence of qualifiers the + * defaults are as follows: + * + * section .text progbits alloc exec nowrite align=16 + * section .rodata progbits alloc noexec nowrite align=4 + * section .lrodata progbits alloc noexec nowrite align=4 + * section .data progbits alloc noexec write align=4 + * section .ldata progbits alloc noexec write align=4 + * section .bss nobits alloc noexec write align=4 + * section .lbss nobits alloc noexec write align=4 + * section .tdata progbits alloc noexec write align=4 tls + * section .tbss nobits alloc noexec write align=4 tls + * section .comment progbits noalloc noexec nowrite align=1 + * section other progbits alloc noexec nowrite align=1 + * + * gas should have sensible defaults for architectures... + * + * [0] http://www.nasm.us/doc/nasmdoc7.html + */ +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, __level, \ + __flags, __type) \ + __stringify(__set_section_core_type(__section, __core, \ + __name, __level, \ + __stringify(__flags), \ + __type)) \ + ASM_CMD_SEP +# endif + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, \ + __level, __flags) \ + __stringify(__push_section_core(__section, __core, \ + __name, __level, \ + __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +#endif /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ +#endif /* _ASM_GENERIC_SECTION_CORE_H_ */ diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 4df64a1fc09e..b145ae8d9cbe 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -1,6 +1,8 @@ #ifndef _ASM_GENERIC_SECTIONS_H_ #define _ASM_GENERIC_SECTIONS_H_ +#include + /* References to section boundaries */ #include diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0968d13b3885..483f60c451f9 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -55,6 +55,7 @@ #endif #include +#include /* Align . to a 8 byte boundary equals to maximum function alignment. */ #define ALIGN_FUNCTION() . = ALIGN(8) diff --git a/include/linux/init.h b/include/linux/init.h index 885c3e6d0f9d..116e3262332a 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -130,6 +130,24 @@ int __init init_rootfs(void); extern bool rodata_enabled; #endif #ifdef CONFIG_DEBUG_RODATA +/** + * mark_rodata_ro - implemement memory protection for ELF sections + * + * Architectures which support memory protection define a kernel configuration + * entry for CONFIG_DEBUG_RODATA, enable it in and implement mark_rodata_ro(). + * mark_rodata_ro() should strive to adjust the .rodata and .text ELF sections + * with read-only memory protection to prevent modifications of these sections + * after bootup. It can also try to use memory protection to prevent execution + * on the .rodata ELF section. + * + * In order to help architectures set both .text and .rodata as read-only with + * memory protections in one shot Linux has typically followed the convention + * to have the .rodata ELF section follow the .text ELF section on the vmlinux + * linker script. + * + * Linux calls mark_rodata_ro() after freeing .init code and prior to calling + * the first init userspace process. + */ void mark_rodata_ro(void); #endif @@ -140,25 +158,70 @@ extern bool initcall_debug; #endif #ifndef MODULE +/** + * DOC: Initcall levels + * + * When Linux boots the kernel do_initcalls() iterates over each Linux + * initialization level ID and calls all routines embedded on each level ID. + * Prior to v2.5.2.3 Linux had only one init level onto which all init + * functions folded onto using __initcall(). After v2.5.2.4 Linux split up + * initcalls into 7 separate initcall subsection levels, each level describing + * different functionality part of the kernel (commit `9d6ba121b7e17085`_ + * (v2.5.2.3 -> v2.5.2.4)). In order to remain backward compatible __initcall() + * calls were left mapped to device_initcall(). + * + * Each init level consists of a dedicated ELF section, init functions are + * associated to an init level by linking it into the respective level's + * ELF section. + * + * Lower order init levels run prior to higher order init levels. Ordering + * inside each initcall level is determined by respective link order. + * + * .. _9d6ba121b7e17085: https://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/?id=9d6ba121b7e17085c95139233686b27a4d4c650e + */ #ifndef __ASSEMBLY__ -/* - * initcalls are now grouped by functionality into separate - * subsections. Ordering inside the subsections is determined - * by link order. - * For backwards compatibility, initcall() puts the call in - * the device init subsection. +/** + * __define_initcall - wrapper for definiting init levels * - * The `id' arg to __define_initcall() is needed so that multiple initcalls - * can point at the same handler without causing duplicate-symbol build errors. + * @fn: init routine + * @id: init level * - * Initcalls are run by placing pointers in initcall sections that the - * kernel iterates at runtime. The linker can do dead code / data elimination - * and remove that completely, so the initcall sections have to be marked - * as KEEP() in the linker script. + * Defines a kernel initialization level. A respective linker script entry + * is required to ensure the init level is accounted for and to ensure symbols + * exist for iterating over all functions in the init level. A init level + * represents a series of functionality in the kernel. + * + * Ordering within an initialization level is determined by link order, so + * for instance if a Makefile had:: + * + * obj-y += foo.o + * obj-y += bar.o + * + * And foo.c:: + * + * subsys_initcall(foo_init); + * + * And bar.c had:: + * + * subsys_initcall(bar_init); + * + * foo_init() would be called prior to bar_init(). + * + * Note that @id in __define_initcall() also enables multiple initcalls + * to be created using the same handler for different init levels without + * causing duplicate-symbol build errors. + * + * Initcalls are run by placing start symbols to initcall levels inside ELF + * sections, the kernel in turn uses these symbols to iterate over each init + * level at runtime with do_initcall_level(). The end of each init level is + * marked by the subsequent's symbol's start address until we reach the symbol + * ``__initcall_end``. The linker can do dead code / data elimination and each + * init level start symbol could be removed completely in this process, to + * avoid this each init level start symbols must be marked as 'KEEP()' in the + * linker script to avoid any linker optimization heuristic on initcalls. */ - #define __define_initcall(fn, id) \ static initcall_t __initcall_##fn##id __used \ __attribute__((__section__(".initcall" #id ".init"))) = fn; diff --git a/include/linux/sections.h b/include/linux/sections.h new file mode 100644 index 000000000000..6771c727bcd1 --- /dev/null +++ b/include/linux/sections.h @@ -0,0 +1,87 @@ +#ifndef _LINUX_SECTIONS_H +#define _LINUX_SECTIONS_H +/* + * Linux de-facto sections + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +#include +#include + +#ifndef __ASSEMBLY__ + +/** + * DOC: Introduction + * + * Linux defines a set of common helpers which can be used to against its use + * of standard or custom Linux sections, this section is dedicated to these + * helpers. + */ + +/** + * LINUX_SECTION_ALIGNMENT - get section alignment + * + * @name: section name + * + * Gives you the alignment for the section. + */ +#define LINUX_SECTION_ALIGNMENT(name) __alignof__(*VMLINUX_SYMBOL(name)) + +/** + * LINUX_SECTION_START - get address of start of section + * + * @name: section name + * + * This gives you the start address of the section. + * This should give you the address of the first entry. + * + */ +#define LINUX_SECTION_START(name) VMLINUX_SYMBOL(name) + +/** + * LINUX_SECTION_END - get address of end of the section + * + * @name: section name + * + * This gives you the end address of the section. + * This should give you the address of the end of the + * section. This will match the start address if the + * section is empty. + */ +#define LINUX_SECTION_END(name) VMLINUX_SYMBOL(name##__end) + +/** + * DECLARE_LINUX_SECTION - Declares a custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-write custom Linux section + */ +#define DECLARE_LINUX_SECTION(type, name) \ + extern type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +/** + * DECLARE_LINUX_SECTION_RO - Declares a read-only custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-only custom Linux section + */ +#define DECLARE_LINUX_SECTION_RO(type, name) \ + extern const type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +#define __SECTION_CORE(section, core, name, level) \ + #section ".." #core "." #name "." #level + +#endif /* __ASSEMBLY__ */ + +#endif /* _LINUX_SECTIONS_H */ -- 2.10.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Thu, 22 Dec 2016 02:37:57 +0000 Subject: [PATCH v5 01/14] generic-sections: add section core helpers Message-Id: <20161222023811.21246-2-mcgrof@kernel.org> List-Id: References: <1471642454-5679-1-git-send-email-mcgrof@kernel.org> <20161222023811.21246-1-mcgrof@kernel.org> In-Reply-To: <20161222023811.21246-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="macroman" Content-Transfer-Encoding: base64 To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcnJlZC4gVW5pZnkgdGhpcwpk b2N1bWVudGF0aW9uIGluIGEgY2VudHJhbCBwbGFjZSBhbmQgcHJvdmlkZSBoZWxwZXJzIHRvCmJ1 aWxkIGN1c3RvbSBMaW51eCBzZWN0aW9ucy4KClRoaXMgYWxzbyBnZW5lcmFsaXplcyBzZWN0aW9u cyBjb2RlIHRvIGVuYWJsZSBhdm9pZGluZwptb2RpZnlpbmcgdGhlIGxpbmtlciBzY3JpcHRzIHdo ZW4gd2Ugd2FudCB0byBhZGQgbmV3CmN1c3RvbSBMaW51eCBzZWN0aW9ucy4gSW4gb3JkZXIgdG8g bWFrZSB0aGlzIGdlbmVyYWxseQp1c2VmdWwgd2UgbmVlZCB0byBlbnN1cmUgYWxsIGFyY2hpdGVj dHVyZXMgY2FuIG1ha2UgdXNlIG9mCmNvcmUgc2VjdGlvbiBoZWxwZXJzIGJ1dCB0aGF0IHRoZXkg Y2FuIGFsc28gb3ZlcnJpZGUgc2hvdWxkCnRoaXMgYmUgbmVlZGVkLiBJbnN0ZWFkIG9mIHJlbHlp bmcgb24gc2VjdGlvbi5oIHRoaXMgYWRkcwphIHNlY3Rpb25zLWNvcmUuaCBzaW5jZSB0aGlzIHdp bGwgYmUgdGFyZ2V0dGVkIHRvIGJlIHNhZmUKdG8gYmUgdXNlZCBvbiBhc20gY29kZSwgbGlua2Vy IHNjcmlwdHMgYW5kIEMgY29kZS4KCnY1OgoKbyBIdWdlIGRvY3VtZW50YXRpb24gcmV2YW1wIGJh c2VkIG9uIGEgY2FyZWZ1bCByZXZpZXcgb2YgdGhlIEVMRgogIHNwZWNpZmljYXRpb25zLiBJbmNs dWRlcyBkb2N1bWVudGF0aW9uIG5vdyBhbHNvIGFib3V0IHVzYWdlIG9mCiAgdHdvIGRvdHMgKC4u KSB3aGVuIHByZWZpeGluZyBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucy4KCm8gUmVwbGFj ZSBtYWNyb3MgZm9yIHNlY3Rpb25zIG5hbWVzIGluIGZhdm9yIG9mIGp1c3QgdXNpbmcKICB0aGUg c2VjdGlvbiBuYW1lcyBleHBsaWNpdGx5IGluIHRoZSBsaW5rZXIgc2NyaXB0LiBUaGlzIGlzCiAg cGVyaGFwcyBtb3JlIHdvcmsgdG8gZ3JlcCBidXQgdGhpcyBpcyB3aGF0IGZvbGtzIHNlZW0gdG8K ICBjdXJyZW50bHkgcHJlZmVyLgoKbyBGaXggLnRleHQgYW5kIC5yb2RhdGEgZG9jdW1lbnRhdGlv biB0byBleHBsYWluIG1lbW9yeSBwcm90ZWN0aW9uCiAgc3RyYXRlZ2llcyB3aGljaCBhcmNoaXRl Y3R1cmVzIGNhbiBlbWJyYWNlIHVwb24gaW5pdGlhbGl6YXRpb24KICAoZG9jdW1lbnRzIENPTkZJ R19ERUJVR19ST0RBVEEgYW5kIG1hcmtfcm9kYXRhX3JvKCkpCgpvIFNraXAgdGhlICdMaW51eCBz ZWN0aW9uIG9yZGVyaW5nJyBkb2N1bWVudGF0aW9uIHNlY3Rpb24sIHdlJ2xsIGluc3RlYWQKICBh ZGQgdGhpcyBvbiBzdWJzZXF1ZW50IHBhdGNoIHdoaWNoIHdpbGwgZXhwYW5kIG9uIGl0IGNvbnNp ZGVyYWJseQoKbyBEcm9wcGVkIHRyZWUgb24gTUFJTlRBSU5FUlMgLS0gYXMgcGVyIGRpc2N1c3Np b25zIHdpdGggQXJuZCwgaHBhIGFuZAogIEpvc2gsIGl0cyBlYXNpZXIgdG8ganVzdCBsZXQgY2hh bmdlcyBmb3Igc2VjdGlvbnMgZ28gaW4gdGhyb3VnaCB0aGUKICByZXNwZWN0aXZlIHRyZWUgdGhh dCBuZWVkcyB0aGUgY2hhbmdlcy4KCm8gRml4IHR5cG9zIG9uIGRvY3VtZW50YXRpb24KCm8gRHJv cHBlZCBTRUNUSU9OX0FMTCgpLCBfX1NFQ1RJT05fQ09SRSgpLCBTRUNUSU9OX0NPUkVfQUxMKCkg bWFjcm9zCiAgc2luY2Ugd2UgYXJlIGZhdm9yaW5nIHVzaW5nIGV4cGxpY2l0IHNlY3Rpb24gbmFt ZXMuIFRoZXNlIGFyZQogIHVzZWxlc3MgaWYgd2UgYXJlIGJlaW5nIGV4cGxpY2l0LgoKbyBEcm9w IExJTlVYX1NFQ1RJT05fU0laRSgpLCBMSU5VWF9TRUNUSU9OX0VNUFRZKCkgaW4gZmF2b3Igb2Yg aGF2aW5nCiAgc2VjdGlvbiByYW5nZXMgYW5kIGxpbmtlciB0YWJsZXMgZGVmaW5lIHRoZWlyIG93 biwgdG8gYXZvaWQgY29uZnVzaW9uCiAgYW5kIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlLgoKbyBB ZGQgX19kZWZpbmVfaW5pdGNhbGwoKSBkb2N1bWVudGF0aW9uIGFuZCBhIHNtYWxsIHNlY3Rpb24g ZGVzY3JpYmluZwogIG91ciBjdXJyZW50IGluaXRjYWxsIGxldmVscy4gVGhpcyBzaG91bGQgaGVs cCBhbHNvIGNsYXJpZnkgd2hhdCB3YXMKICBtZWFudCBhYm91dCBrZWVwaW5nIGJhY2t3YXJkIGNv bXBhdGlibGl0eS4KCnY0OgoKbyBQb3J0IHRvIHNoaW55IG5ldyBzcGhpbnggZG9jdW1lbnRhdGlv biBmb3JtYXQKCm8gZml4IGEgdW5pY29yZTMyIGJ1aWxkLCB0dXJucyBvdXQgdGhpcyBhY3R1YWxs eSBmaXhlcyB1bmljb3JlMzIKICBkZWZjb25maWcgYnVpbGRzIHdoaWNoIHdlcmUgZmFpbGluZyBm b3IgYSBsb25nIHdoaWxlLiB1bmljb3JlMzIKICBkb2VzIG5vdCBzZWVtIHRvIGdyb2sgd2VsbCB0 aGUgdHlwZSBwYXNzZWQgb24gYSBzZWN0aW9uIGRlY2xhcmF0aW9uLAogIHRoaXMgaWdub3JlcyBp dC4KCm8gVXNlIFZNTElOVVhfU1lNQk9MKCkgaW4gbW9yZSB1c2VyIHN5bWJvbHMgKGV4dGVybiBD IGNvZGUpLCBub3QgZG9pbmcKICB0aGlzIHdhcyBjYXVzaW5nIGZpbmFsIGxpbmtlciBpc3N1ZXMg d2l0aCBibGFja2ZpbiAtLSB0aGlzIGlzCiAgYSBDT05GSUdfSEFWRV9VTkRFUlNDT1JFX1NZTUJP TF9QUkVGSVg9eSBhcmNoaXRlY3R1cmUuIFRoZSBvdGhlciBvbmUKICBiZWluZyBtZXRhdGFnLiBt ZXRhdGFnIGlzIG5vdCBzdXBwb3J0ZWQgb24gMC1kYXkgc28gSSBjYW5ub3QgY29uZmlybQogIGNv bXBpbGF0aW9uIHRoZXJlLgoKbyBBZGRlZCBTRUNUSU9OX0NPUkUoKSBmb3IgQyBjb2RlLCB1c2Vk IGxhdGVyIGJ5IF9fTElOVVhfUkFOR0UoKQoKbyBTaW5jZSBTRUNUSU9OX0NPUkUoKSBpcyBkZWZp bmVkIGZvciBsaW5rZXIgc2NyaXB0IGFuZCBDIGNvZGUsIHNoYXJlCiAgdGhlIHNhbWUgaGVscGVy IGFuZCBqdXN0IHVzZSBhIF9fc3RyaW5naWZ5KCkgZm9yIHRoZSBDIGNvZGUgYXMgaXMgZG9uZQog IGZvciB0aGUgb3RoZXIgQyBoZWxwZXJzLgoKbyBtb3ZlIGdlbmVyaWMgc2VjdGlvbnMgdG8gYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggaW5zdGVhZC4KICBQb3dlclBDIGNvbXBpbGF0aW9uIGJs b3dzIHVwIGlmIGFzbS9qdW1wX2xhYmVscy5oIGdldHMKICBzZWN0aW9uLmggaW5jbHVkZWQsIGZp eGluZyB0aGlzIGlzIG5vdCBpbiBhbnkgd2F5IGVhc3kuCiAgVGhlIGxpc3Qgb2YgaXNzdWVzIGFy ZSBlbmRsZXNzLiBNb3ZpbmcgbmV3IGRhdGEgdG8gYSBuZXcKICBzaW1wbGUgZmlsZSByZXNvbHZl cyB0aGlzLgoKbyBzaW5jZSB0aGluZ3MgYXJlIG5vdyBpbiBhc20tZ2VuZXJpYy9zZWN0aW9uLWNv cmUuaCB0aGUKICBndWFyZCBjaGFuZ2VzIG9uIGFzbS1nZW5lcmljL3NlY3Rpb25zLmggYW5kIGVh Y2ggYXJjaGl0ZWN0dXJlCiAgc2VjdGlvbnMuaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZAoKbyBHaXZl IGdlbmVyaWMgc2VjdGlvbnMgc29tZSBtYWludGFpbmVyIGxvdmUsIHRoYXQgY2hhbmdlIGlzCiAg QWNrZWQtYnkgQXJuZCBCZXJnbWFubiwgSm9zaCBhbmQgaHBhLgoKbyBBIGZldyBjaGVja3BhdGNo LnBsIHN0eWxlIGZpeGVzCgpvIEFzIHN1Z2dlc3RlZCBieSBKYW1lcyBIb2dhbiB1c2UgZ2VuZXJp Yy15IHRvIGNvcHkgZ2VuZXJpYwogIGhlYWRlciBmaWxlcyBvbiBhcmNoaXRlY3R1cmVzIHRoYXQg ZG8gbm90IGhhdmUgYSBzZWN0aW9ucy5oCiAgaW5zdGVhZCBvZiB3cml0aW5nIGEgc2ltcGxlIGZp bGUgb25seSB0byBpbmNsdWRlIHRoZSBnZW5lcmljIG9uZS4KCnYzOgoKbyBhZGQgbWlzc2luZyBz ZWN0aW9ucy5oIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZGlkIG5vdAogIGhhdmUgaXQKCm8gbW92 ZSBnZW5lcmljIHNlY3Rpb25zIHRvIGFzbS1nZW5lcmljL3NlY3Rpb25zLmgKCm8gYWRkIGdlbmVy aWMgYXNtIGhlbHBlcnMgc2VjdGlvbl90eXBlKCksIHNlY3Rpb25fdHlwZV9hc210eXBlKCksCiAg cHVzaF9zZWN0aW9uX3R5cGUoKSAtLSB0aGVzZSBoZWxwZXJzIGVuYWJsZSBlYXN5IHVzZSBmb3IK ICBmb3IgbGF0ZXIgZGVjbGFyaW5nIGFuZCB1c2luZyBvZiBjdXN0b20gbGludXggc2VjdGlvbnMg dXNpbmcKICBtb3JlIHN0YW5kYXJkIEFQSXMgaW4gYm90aCBDIGNvZGUsIGFzbSBjb2RlIChDIGFz bSBjYWxscywgb3IKICBhc20gZmlsZXMpLCBlbmFibGluZyBmdXR1cmUgc3RhbmRhcmRpemVkIHNl Y3Rpb24gdHlwZXMgdG8KICBiZSBtb3JlIGltbWVkaWF0ZWx5IGFjY2Vzc2libGUgdG8gYXNtIGNv ZGUsIG5vdCBqdXN0IEMgY29kZS4KICBOb3RlIGZvciBBU01fQ01EX1NFUCB3ZSB1c2UgYnkgZGVm YXVsdCAiXG4iLCBhcmNoaXRlY3R1cmVzIG5lZWRlZAogIHRvIG92ZXJyaWRlIGNhbiBkbyBzbyBv biB0aGVpciBvd24gc2VjdGlvbnMuaCBwcmlvciB0byBpbmNsdXNpb24KICBvZiBhc20tZ2VuZXJp Yy9zZWN0aW9ucy5oCgpTaWduZWQtb2ZmLWJ5OiBMdWlzIFIuIFJvZHJpZ3VleiA8bWNncm9mQGtl cm5lbC5vcmc+Ci0tLQogRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCAgICAgfCAxMDUg KysrKysrKysrKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5ICAgICAgICAgICAgfCAg IDQgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QgICAgICAgICAgfCAgMTcgKysK IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCAgIHwgMTQ4ICsrKysrKysr KysrKysrCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiAr KwogYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJj aC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm0v aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hdnIzMi9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkICAgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwog YXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9p YTY0L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tMzJyL2lu Y2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tNjhrL2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgfCAgIDEgKwogYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICAgfCAgIDEgKwogYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg fCAgIDEgKwogYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEg KwogYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJj aC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9wb3dl cnBjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zMzkwL2luY2x1 ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zY29yZS9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQg ICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggfCAgMTkgKysK IGFyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gv eHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggICAgICAgIHwgMzA3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oICAgICAgICAgICAgfCAg IDIgKwogaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oICAgICAgICAgfCAgIDEgKwog aW5jbHVkZS9saW51eC9pbml0LmggICAgICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKy0t CiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmggICAgICAgICAgICAgICAgICB8ICA4NyArKysrKysr KysKIDQyIGZpbGVzIGNoYW5nZWQsIDgwOSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24tY29yZS5yc3QKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKCmRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CmluZGV4IGNi NWQ3NzY5OWM2MC4uNzFlMDMwNWMwMzZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2luZGV4 LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2luZGV4LnJzdApAQCAtNTcsNiArNTcsNyBAQCBuZWVk ZWQpLgogICAgbWVkaWEvaW5kZXgKICAgIGdwdS9pbmRleAogICAgc2VjdXJpdHkvaW5kZXgKKyAg IHNlY3Rpb25zL2luZGV4CiAgICBzb3VuZC9pbmRleAogICAgY3J5cHRvL2luZGV4CiAKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMGVjZjkxMDRhYWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlv bi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdApAQCAtMCwwICsxLDEwNSBAQAorPT09PT09PT09PT0K K0VMRiBzZWN0aW9uIGJhY2tncm91bmQKKz09PT09PT09PT09CisKK0Fib3V0Cis9PSsKK1RoZSBw dXJwb3NlIG9mIHRoaXMgY2hhcHRlciBpcyB0byBoZWxwIHRob3NlIG5vdCBmYW1pbGlhciB3aXRo IEVMRiB0byBicnVzaCB1cAordGhlIGxhdGVzdCBFTEYgc3BlY2lmaWNhdGlvbnMgaW4gb3JkZXIg dG8gaGVscCB1bmRlcnN0YW5kIGhvdyBMaW51eCB1c2VzIGFuZAorZGVmaW5lcyBpdHMgb3duIEVM RiBzZWN0aW9ucy4KKworU3RhbmRhcmRpemVkIEVMRgorPT09PT09PT0KKworVGhlIGZpcnN0IHB1 YmxpY2F0aW9uIGRvY3VtZW50aW5nIEVMRiB3YXMgVU5JWCBTeXN0ZW0gTGFib3JhdG9yaWVzJyAo VVNMKQorKlN5c3RlbSBWIFJlbGVhc2UgNCBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlKiAo YFNSVjQgQUJJYF8pIHNwZWNpZmljYXRpb24uCitPcmlnaW5hbGx5IEVMRiB3YXMgb25seSBhIHNt YWxsIHBhcnQgb2YgdGhlIFNSVjQgQUJJLCB3aXRoIHRpbWUgaG93ZXZlciBuZXcKK3NwZWNpZmlj YXRpb25zIG9ubHkgcHV0IGZvY3VzIG9uIEVMRiwgc3VjaCB3YXMgdGhlIGNhc2Ugb2YgdGhlICpU SVMgUG9ydGFibGUKK0Zvcm1hdHMgU3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDEuMiogKGBUSVMgMS4y YF8pLiBBcyBvZiBUSVMgMS4yLCBFTEYgd2FzCitzdXBwbGVtZW50ZWQgd2l0aCBwcm9jZXNzb3Ig c3BlY2lmaWMgRUxGIGFkZGVuZHVtcywgYXZhaWxhYmxlIG9uIHRoZSAqTGludXgKK0ZvdW5kYXRp b24gcmVmZXJlbmNlZCBzcGVjaWZpY2F0aW9uIHBhZ2UqIChgTEYgcmVmIHBhZ2VgXykuIFRoZSBs YXRlc3QgRUxGCitzcGVjaWZpY2F0aW9uIGlzIHRoZSAqU3lzdGVtIFYgQXBwbGljYXRpb24gQmlu YXJ5IEludGVyZmFjZSAtIERSQUZUIC0gMjQgQXByaWwKKzIwMDEqIChgZ2FiaTRgXykuCisKKy4u IF9TUlY0IEFCSTogaHR0cDovL3d3dy5zY28uY29tL2RldmVsb3BlcnMvZGV2c3BlY3MvZ2FiaTQx LnBkZgorLi4gX1RJUyAxLjI6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZWxm LnBkZgorLi4gX0xGIHJlZiBwYWdlOiBodHRwczovL3JlZnNwZWNzLmxpbnV4YmFzZS5vcmcvCisu LiBfZ2FiaTQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZ2FiaTQrL2NvbnRl bnRzLmh0bWwKKworRUxGIHZpZXdzIG9uIExpbnV4Cis9PT09PT09PT0KKworVGhlcmUgYXJlIHR3 byB2aWV3cyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5zcGVjdGluZyBkYXRhIGluIGFuIEVMRiBm aWxlLCBhCitMaW5raW5nIHZpZXcsIGFuZCBhbiBFeGVjdXRpb24gdmlldy4gQSBTZWN0aW9uIEhl YWRlciBUYWJsZSBlbmFibGVzIG9uZSB0bworZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBM aW5raW5nIHZpZXcgd2hpbGUgYSBQcm9ncmFtIEhlYWRlciBUYWJsZSBlbmFibGVzCitvbmUgdG8g ZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBFeGVjdXRpb24gdmlldy4gVGhlIHZpZXdzIGFy ZSBub3QgbXV0dWFsbHkKK2V4Y2x1c2l2ZS4gRm9yIGludGFuY2UsIHZtbGludXggY2FuIGJlIHZp ZXdlZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExp bmtpbmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24K K3ZpZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1 dGlvbiB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhh dCB2bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtl cm5lbCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3Qg ZmlsZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtp bmcgdmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxl CitzZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBz ZWN0aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhp cyBpcyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1 Y3QgZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxl cyB0aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVz IGhhdmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25z LgorCitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92 aWRlIGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0 byB0aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2 NC1iaXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rp b24gYXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nzb3IKK3NwZWNp ZmljYXRpb24gaWYgdW5zdXJlLgorCitJdHMgd29ydGggZWxsYWJvcmF0aW5nIG9uIHRoZSBsaW1p dGF0aW9ucyBvbiB0aGUgbmFtZSBvZiBhbiBFTEYgc2VjdGlvbjoKK0VMRiBzZWN0aW9uIG5hbWVz IGFyZSBzdG9yZWQgYXMgc3RyaW5ncyBhcyBwZXIgdGhlIEVMRiBzcGVjaWZpY2F0aW9uLCBhbmQK K2FzIGNhbiBiZSBleHBlY3RlZCwgdGhlc2UgZG9uJ3QgaGF2ZSBleHBsaWNpdCBsaW1pdGF0aW9u cy4gVGhlIGltcGxpY2l0CitsaW1pdGF0aW9uIHRoZW4gZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBh biBFTEYgb2JqZWN0IGZpbGUgYW5kIEVMRiBzZWN0aW9uLgorCitJZiB1c2luZyByZWFsbHkgbGFy Z2Uga2VybmVscyBvciBvYmplY3RzIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBzZWN0aW9ucyBvbmUK K3dvdWxkIHN0aWxsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEVMRiBsb2FkZXIgaW4gY2hhcmdlIG9m IGxvYWRpbmcgdGhlIExpbnV4CitrZXJuZWwgaXMgcHJvcGVybHkgdXBkYXRlZCB0byBoYW5kbGUg Y29waW5nIHdpdGggdGhlIGxhdGVzdCBFTEYgZXh0ZW5zaW9ucy4KKworICAgLi4gZmxhdC10YWJs ZTo6IExpbWl0YXRpb25zIG9uIEVMRiBTZWN0aW9ucworCisgICAgICAqIC0gU2VjdGlvbiBhdHRy aWJ1dGUKKyAgICAgICAgLSAzMi1iaXQKKyAgICAgICAgLSA2NC1iaXQKKworICAgICAgKiAtIEVM RiBzZWN0aW9uIG5hbWUKKyAgICAgICAgLSBTaXplIG9mIGFuIEVMRiBzZWN0aW9uCisgICAgICAg IC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorCisgICAgICAqIC0gU2l6ZSBvZiBhbiBFTEYgc2Vj dGlvbgorICAgICAgICAtIDQgR2lCCisgICAgICAgIC0gMTYgRWlCCisKKyAgICAgICogLSBNYXgg bnVtYmVyIG9mIHNlY3Rpb25zIGluIGFuIG9iamVjdCBmaWxlCisgICAgICAgIC0gNCBHaUVudHJp ZXMgKDQyOTQ5NjcyOTYpCisgICAgICAgIC0gMTYgRWlFbnRyaWVzICgxODQ0Njc0NDA3MzcwOTU1 MTYxNikKKworUHJvZ3JhbSBzcGVjaWZpYyBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT09Kwor VGhlIEVMRiBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgYSBzZWN0aW9uIHR5cGUgdG8gYmUgc3Bl Y2lmaWVkIGFzCisqUHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9uKiwgZGVmaW5lZCBhcyBgYFNIVF9Q Uk9HQklUU2BgLiBUaGlzIHNlY3Rpb25zIHR5cGUKK2VuYWJsZXMgcHJvZ3JhbXMgdG8gY3VzdG9t aXplIHNlY3Rpb25zIGZvciB0aGVpciBvd24gdXNlLiBJbiBhc3NlbWJseSB0aGlzCitzcGVjaWZp ZWQgYGBAcHJvZ2JpdHNgYCBvbiBtb3N0IGFyY2hpdGVjdHVyZXMsIG9uIEFSTSB0aGlzIGlzIGBg JXByb2diaXRzYGAuCisKK2BgU0hUX1BST0dCSVRTYGAgaXMgdXNlZCBieSBMaW51eCBmb3IgZGVm aW5pbmcgYW5kIHVzaW5nIExpbnV4IEVMRiBzZWN0aW9ucy4KKworU3BlY2lhbCBFTEYgU2VjdGlv bnMKKz09PT09PT09PT0KKworVGhlIEVMRiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgKlNwZWNpYWwg RUxGIFNlY3Rpb25zKiBvbiBjaGFwdGVyIDQgKGBnYWJpNAorY2g0YF8pLiBUaGVzZSBhcmUgZGVm aW5lZCBhcyBzZWN0aW9ucyB3aGljaCBob2xkIHByb2dyYW0gYW5kIGNvbnRyb2wKK2luZm9ybWF0 aW9uLiBPZiB0aGVzZSBzZWN0aW9ucywgYSBmZXcgaGF2ZSB0aGUgc2VjdGlvbiB0eXBlIGFzCitg YFNIVF9QUk9HQklUU2BgLiBUaGlzIGVuYWJsZXMgTGludXggdG8gKmZ1cnRoZXIgY3VzdG9taXpl KiB1c2Ugb2YgdGhlIHNlY3Rpb24KK2JleW9uZCB3aGF0IHRoZSBFTEYgc3BlY2lmaWNhdGlvbiBz dWdnZXN0cy4KKworLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3Jn L2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFsX3NlY3Rpb25zCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25z L2NvbmYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWExYzU3 NTk1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkK QEAgLTAsMCArMSw0IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04OyBtb2RlOiBweXRob24gLSotCisK K3Byb2plY3QgPSAnTGludXggS2VybmVsIEVMRiBzZWN0aW9ucycKK2h0bWxfc2VhcmNoX2xhbmd1 YWdlID0gJ2VuJwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmYzNzUxMWVmMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3Vt ZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0CkBAIC0wLDAgKzEsMTcgQEAKKz09PT09PT09PT09 PStMaW51eCBLZXJuZWwgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT0rCitUaGlzIGJvb2sgZG9j dW1lbnRzIHRoZSBkaWZmZXJlbnQgRUxGIHNlY3Rpb25zIHVzZWQgb24gdGhlIExpbnV4IGtlcm5l bC4KK1dlIHN0YXJ0IG9mZiBieSBwcm92aWRpbmcgcmVmZXJlbmNlcyB0byBob3cgRUxGIHdhcyBz dGFuZGFyZGl6ZWQsIHJlZmVyZW5jZXMKK3RvIHRoZSBzdGFuZGFyZHMgb24gRUxGIHNlY3Rpb25z LCByZXZpZXcgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLCBhbmQKK2ZpbmFsbHkgaG93IExp bnV4IHVzZXMgRUxGIHNlY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwuIENlcnRhaW4gaW1wb3J0 YW50CitMaW51eCBFTEYgc2VjdGlvbnMgYXJlIGRvY3VtZW50ZWQgY2FyZWZ1bGx5OiB3ZSBkZXNj cmliZSB0aGUgZ29hbCBvZiB0aGUKK0VMRiBzZWN0aW9uLCBhbmQgYWRkcmVzcyBjb25jdXJyZW5j eSBjb25zaWRlcmF0aW9ucyB3aGVuIGFwcGxpY2FibGUuIEEgZmV3Citjb21tb24gYSBzZXQgb2Yg TGludXggaGVscGVycyBmb3IgRUxGIHNlY3Rpb25zIGFyZSBhbHNvIGRvY3VtZW50ZWQuCisKKy4u IHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiA0CisKKyAgIGJhY2tncm91bmQKKyAgIHNlY3Rpb24t Y29yZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0 IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM1ODE1YTBkOWIzCi0tLSAvZGV2L251bGwKKysr IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0CkBAIC0wLDAgKzEsMTQ4 IEBACis9PT09PT09PT09PT09PT09PStMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9u cworPT09PT09PT09PT09PT09PT0rCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJp Yy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2Vj dGlvbnMKKworTGludXggbGlua2VyIHNjcmlwdAorPT09PT09PT09KworLi4ga2VybmVsLWRvYzo6 IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGxpbmtl ciBzY3JpcHQKKworTWVtb3J5IHByb3RlY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJu ZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTWVt b3J5IHByb3RlY3Rpb24KKworbWFya19yb2RhdGFfcm8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IG1h cmtfcm9kYXRhX3JvCisKKy5yb2RhdGEKKy0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucm9kYXRhCisKKy50ZXh0Cist LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgK KyAgIDpkb2M6IC50ZXh0CisKKy5kYXRhCistLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZGF0YQorCitMaW51 eCAuaW5pdFwqIHNlY3Rpb25zCis9PT09PT09PT09PQorCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggaW5pdCBzZWN0aW9u cworCisuaW5pdC50ZXh0CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmluaXQudGV4dAorCisuaW5pdC5kYXRh CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u LWNvcmUuaAorICAgOmRvYzogLmluaXQuZGF0YQorCisuaW5pdC5yb2RhdGEKKy0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5pbml0LnJvZGF0YQorCitJbml0Y2FsbCBsZXZlbHMKKy0tLS0tLS0tLS0tLS0tLQor Li4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZG9jOiBJbml0Y2FsbCBs ZXZlbHMKKworLmluaXRjYWxsCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGlu Y2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0Y2FsbAorCitf X2RlZmluZV9pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L2luaXQuaAorICAgOmZ1bmN0aW9uczogX19kZWZpbmVfaW5pdGNhbGwKKworTGlu dXggLmV4aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1 ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGV4aXQgc2VjdGlv bnMKKworLmV4aXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LnRleHQKKworLmV4aXQuZGF0 YQorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LmRhdGEKKworLmV4aXRjYWxsLmV4aXQKKy0tLS0tLS0t LS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUu aAorICAgOmRvYzogLmV4aXRjYWxsLmV4aXQKKworTGludXggLnJlZlwqIHNlY3Rpb25zCis9PT09 PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IExpbnV4IHJlZmVyZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworCisucmVmLnRl eHQKKy0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5yZWYudGV4dAorCisucmVmLmRhdGEKKy0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6 IC5yZWYuZGF0YQorCisucmVmLnJvZGF0YQorLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVmLnJvZGF0YQor CitHZW5lcmljIExpbnV4IGtlcm5lbCBzZWN0aW9uIGhlbHBlcnMKKz09PT09PT09PT09PT09PT09 PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpkb2M6IEludHJvZHVjdGlvbgorCitMSU5VWF9TRUNUSU9O X0FMSUdOTUVOVAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NFQ1RJT05fQUxJR05N RU5UCisKK0xJTlVYX1NFQ1RJT05fU1RBUlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NF Q1RJT05fU1RBUlQKKworTElOVVhfU0VDVElPTl9FTkQKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBr ZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5V WF9TRUNUSU9OX0VORAorCitERUNMQVJFX0xJTlVYX1NFQ1RJT04KKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0 aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OCisKK0RFQ0xBUkVfTElOVVhfU0VDVElPTl9STwor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9z ZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggZDBiMmI1MDcwNWJkLi4zMDg4 MjZmNTA5NGIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC01 NDIyLDYgKzU0MjIsMTggQEAgUzoJU3VwcG9ydGVkCiBGOglkcml2ZXJzL2Jhc2UvcG93ZXIvZG9t YWluKi5jCiBGOglpbmNsdWRlL2xpbnV4L3BtX2RvbWFpbi5oCiAKK0dFTkVSSUMgU0VDVElPTlMK K006CSJMdWlzIFIuIFJvZHJpZ3VleiIgPG1jZ3JvZkBrZXJuZWwub3JnPgorTToJSm9zaCBQb2lt Ym9ldWYgPGpwb2ltYm9lQHJlZGhhdC5jb20+CitNOgkiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0 b3IuY29tPgorTDoJbGludXgtYXJjaEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0 aW9uLWNvcmUuaAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCitGOglpbmNsdWRl L2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKK0Y6CURvY3VtZW50YXRpb24vc2VjdGlvbnMvc2Vj dGlvbi1jb3JlLnJzdAorCiBHRU5FUklDIFVJTyBEUklWRVIgRk9SIFBDSSBERVZJQ0VTCiBNOgki TWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CiBMOglrdm1Admdlci5rZXJuZWwu b3JnCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYWxw aGEvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGJmODQ3NWNlODVlZS4uNTQyMjgyN2YxNTg1IDEw MDY0NAotLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2FscGhh L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJj aC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMu aAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcmMvaW5j bHVkZS9hc20vS2J1aWxkCmluZGV4IGMzMzI2MDQ2MDZkZC4uN2IyY2IzZGVhNWZjIDEwMDY0NAot LS0gYS9hcmNoL2FyYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcmMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC01MSwzICs1MSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMt eSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4 b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2FybS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZWZi MjE3NTdkNDFmLi45YjY5YTIyYTlhZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQxLDMgKzQxLDQg QEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiAKIGdlbmVyYXRlZC15ICs9IG1hY2gtdHlwZXMu aAogZ2VuZXJhdGVkLXkgKz0gdW5pc3RkLW5yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA4MzY1YTg0YzI2NDAuLjAwYWNlNWU4MjZmMSAxMDA2 NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25l ZC5oCiBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSAr PSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2F2 cjMyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IDI0MWI5Yjk3MjlkOC4uZjJjM2I2NTZhMGU3IDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MjIsMyArMjIsNCBAQCBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZn YS5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitn ZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkIGIvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg MmZiNjdiNTlkMTg4Li5iZjIwNTQxYmNmMjEgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCkBA IC00NywzICs0Nyw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHVz ZXIuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAor Z2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2M2eC9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNjQ0NjVlN2Uy MjQ1Li4zODEyN2NlNzQ3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYzZ4L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTYyLDMgKzYyLDQgQEAgZ2Vu ZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0gd29yZC1h dC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2NyaXMv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDE3Nzg4MDVmNjM4MC4uMzg1Y2Q4OGE5ZDllIDEwMDY0 NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvY3Jpcy9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHR5cGVzLmgKIGdl bmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMt eSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNo L2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggMWZhMDg0Y2YxYTQzLi40NmQ3YzU5OWQ5YjggMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTgsMyAr OCw0IEBAIGdlbmVyaWMteSArPSBtbS1hcmNoLWhvb2tzLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0 LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRp bWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAw L2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvaDgzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDM3M2NiMjMzMDFlMy4uMWVjMDRlYzFjODJiIDEwMDY0NAotLS0gYS9hcmNoL2g4MzAwL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNzUs MyArNzUsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2hleGFnb24vaW5jbHVkZS9h c20vS2J1aWxkIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCBkYjhkZGFi YzZiZDIuLjM3ZDdiZmFlNzYxOSAxMDA2NDQKLS0tIGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MCwzICs2 MCw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkg Kz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVp bGQgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDUwMmE5MWQ4ZGJiZC4uNjcy YzZkNWRhMThjIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBi L2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTksMyArOSw0IEBAIGdlbmVyaWMteSAr PSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gdnRp bWUuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9u LWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gv bTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggODYwZTQ0MDYxMWM5Li42MTExZTE1MjM3NTAg MTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tMzJy L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1w dC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL202OGsv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFmMmU1ZDMxY2IyNC4uMTI3N2I0NWJmNGY5IDEwMDY0 NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTY4ay9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTM0LDMgKzM0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAog Z2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdp dCBhL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tZXRhZy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggMTY3MTUwYzcwMWQxLi5iMTAxMTM3NWNkN2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20v S2J1aWxkCkBAIC01NSwzICs1NSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSAr PSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3Iu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxh emUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0tidWls ZAppbmRleCBiMGFlODhjOWZlZDkuLmM2YzJjZjZlZGM5OCAxMDA2NDQKLS0tIGEvYXJjaC9taWNy b2JsYXplL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xMSwzICsxMSw0IEBAIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVy aWMteSArPSBzeXNjYWxscy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0t Z2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWlwcy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggNDViMGQ2NTY4MjcwLi5hNjdkMzE3N2YzY2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjAsMyArMjAsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQK aW5kZXggMWM4ZGQwZjVjZDVkLi5mODE0NWJjODU4MzUgMTAwNjQ0Ci0tLSBhL2FyY2gvbW4xMDMw MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0g c2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3Jk LWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2Fy Y2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVp bGQKaW5kZXggZDYzMzMwZTg4Mzc5Li5jOWM3Y2I4MmIwMGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlv czIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxk CkBAIC02MywzICs2Myw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2Eu aAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZCBiL2FyY2gvb3BlbnJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDI4 MzJmMDMxZmIxMS4uODYxNzVlNzAxODY5IDEwMDY0NAotLS0gYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NzEsMyArNzEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDkxZjUzYzA3ZjQx MC4uMThhOWQ0YzVlYWQ3IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC0yOCwzICsyOCw0IEBA IGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24t Y29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJj aC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1YzRmYmM4MGRjNmMuLjQzMjJkOTc0 NmNkYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkg Kz0gbWNzX3NwaW5sb2NrLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSBy d3NlbS5oCiBnZW5lcmljLXkgKz0gdnRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zMzkwL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCA4YWVhMzJmZThiZDIuLjYzYTFjMjkyNGI5MSAxMDA2NDQK LS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3MzOTAvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5o CiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2Vu ZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApk aWZmIC0tZ2l0IGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3Njb3JlL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBhMDUyMThmZjNmZTQuLmYwODlhMjY0Y2QzOCAxMDA2NDQK LS0tIGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zY29yZS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTE0LDMgKzE0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB4b3IuaAogZ2VuZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkg Kz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1n aXQgYS9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDc1MWMzMzczYTkyYy4uN2IwMzU2ZGNhNTYyIDEwMDY0NAotLS0gYS9hcmNoL3No L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MzksMyArMzksNCBAQCBnZW5lcmljLXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2Vf Y2xvY2suaAogZ2VuZXJpYy15ICs9IHVjb250ZXh0LmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDA1NjliZmFj NGFmYi4uNDM4Zjg2NTczZGM1IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0ti dWlsZAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjEsMyArMjEsNCBA QCBnZW5lcmljLXkgKz0gc2VyaWFsLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmQxZjU2Mzg5NzRjLi5m YjZiODMxYzFmYmEgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDAsMyArNDAsNCBAQCBnZW5lcmlj LXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9 IHR5cGVzLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvdW0vaW5jbHVk ZS9hc20vS2J1aWxkCmluZGV4IDA1MmY3ZjZkMDU1MS4uNTgwYmQ1ZmY4MjhmIDEwMDY0NAotLS0g YS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3VtL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjYsMyArMjYsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15 ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmlj LXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJj aC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggYi9hcmNoL3VuaWNvcmUzMi9p bmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjBiOWM2ODQyOWExYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvdW5pY29yZTMy L2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCkBAIC0wLDAgKzEsMTkgQEAKKyNpZm5kZWYgX19V TklDT1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fCisjZGVmaW5lIF9fVU5JQ09SRV9TRUNUSU9OX0NP UkVfQVNNX0hfXworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJvZHJpZ3VleiA8 bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0 ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBhcyBwdWJsaXNo ZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyogVW5pY29yZTMy IGhhcyBrbm93biB0byBub3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSB0eXBlIHNldCwgc28gaWdu b3JlIGl0ICovCisKKyNkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwg X19fY29yZSwgX19fbmFtZSwJCVwKKwkJCQlfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlc CisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFn cworCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmg+CisKKyNlbmRpZiAvKiBf X1VOSUNPUkVfU0VDVElPTl9DT1JFX0FTTV9IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyYjg5 MmUyMzEzYTkuLmFmOTc1ZjIxZWVlZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v S2J1aWxkCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTIsMyArMTIsNCBA QCBnZW5lcmljLXkgKz0gZG1hLWNvbnRpZ3VvdXMuaAogZ2VuZXJpYy15ICs9IGVhcmx5X2lvcmVt YXAuaAogZ2VuZXJpYy15ICs9IG1jc19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gbW0tYXJjaC1o b29rcy5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gveHRl bnNhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCBiN2ZiYWE1NmI1MWEuLjc4NzljMzFlNjZhNyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Ev aW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApA QCAtMzIsMyArMzIsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15ICs9IHRy YWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9h c20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYjE2YmVmYzQy NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o CkBAIC0wLDAgKzEsMzA3IEBACisjaWZuZGVmIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8K KyNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJT05fQ09SRV9IXworLyoKKyAqIExpbnV4IHNlY3Rp b24gY29yZSBkZWZpbml0aW9ucworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJv ZHJpZ3VleiA8bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVu ZGVyIHRoZSB0ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBh cyBwdWJsaXNoZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyoq CisgKiBET0M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25zCisgKgorICogTGlu dXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBgYFNIVF9QUk9HQklUU2BgIHRvIGJvdGggZXh0ZW5k IHVzZSBhbmQKKyAqIGRlZmluaXRpb24gb2YgKlNwZWNpYWwgRUxGIFNlY3Rpb25zKiAoYGdhYmk0 IGNoNGBfKSBhbmQgdG8gZGVmaW5lIGl0cyBvd24KKyAqIHNlY3Rpb25zLiBUaGlzIGNoYXBlciBp cyBkZWRpY2F0ZWQgdG8gZG9jdW1lbnRpbmcgTGludXggcHJvZ3JhbSBzcGVjaWZpYworICogc2Vj dGlvbnMgYW5kIGhlbHBlcnMgYXZhaWxhYmxlIHRvIG1ha2UgdXNlIG9mIHRoZXNlIGVhc2llciB0 byBpbXBsZW1lbnQgYW5kCisgKiB1c2UuCisgKgorICogLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9y ZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFs X3NlY3Rpb25zCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGxpbmtlciBzY3JpcHQKKyAqCisg KiBMaW51eCB1c2VzIGEgY3VzdG9tIGxpbmtlciBzY3JpcHQgdG8gYnVpbGQgdGhlIHZtbGludXgg YmluYXJ5LCBpdCB1c2VzIGl0IHRvCisgKiBzdHJhdGVnaWNhbGx5IHBsYWNlIGFuZCBkZWZpbmUg TGludXggRUxGIHNlY3Rpb25zLiAgRWFjaCBhcmNoaXRlY3R1cmUgbmVlZHMKKyAqIHRvIGltcGxl bWVudCBpdHMgb3duIGxpbmtlciBzY3JpcHQsIGl0IGlzIGV4cGVjdGVkIHRvIHJlc2lkZSBpbgor ICogYGBhcmNoLyQoQVJDSCkva2VybmVsL3ZtbGludXgubGRzLlNgYC4gIEFyY2hpdGVjdHVyZSBM aW51eCBsaW5rZXIgc2NyaXB0cyBpbgorICogdHVybiBpbmNsdWRlIGFuZCB1c2UgZGVmaW5pdGlv bnMgZnJvbSBgYGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaGBgLAorICogYXMgd2Vs bCBhcyBzb21lIGhlbHBlcnMgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXIuCisgKgorICogSW4g YXNzZW1ibHkgaXQgaXMgY29tbW9uIHByYWN0aWNlIHRvIHVzZSBkb3RzIChgYC5gYCkgaW4gbGFi ZWxzIHRvIGF2b2lkCisgKiBjbGFzaGVzIHdpdGggQyBzeW1ib2xzLiBTaW1pbGFybHksIGEgZG90 IChgYC5gYCkgY2FuIGJlIHBhcnQgb2YgYSBzZWN0aW9uCisgKiBuYW1lIGJ1dCBub3QgYSBDIHN5 bWJvbC4gSGlzdG9yaWNhbGx5IHRoZW4sIHR3byBkb3RzIGFyZSB1c2VkIChgYC4uYGApCisgKiBo YXZlIGJlZW4gdXNlZCBpbiBsaW5rZXIgc2NyaXB0cyB3aGVuIGFkZGluZyBwcm9ncmFtIHNwZWNp ZmljIHNlY3Rpb25zCisgKiB3aGVuIHRoZXJlIGFyZSBjb25jZXJucyB0byBhdm9pZCBjbGFzaGVz IHdpdGggY29tcGlsZXIgZ2VuZXJhdGVkIHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiBN ZW1vcnkgcHJvdGVjdGlvbgorICoKKyAqIExpbnV4IGFsbG93cyBhcmNoaXRlY3R1cmVzIHdoaWNo IHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZmVhdHVyZXMgdG8KKyAqIHRha2UgYWR2YW50YWdl IG9mIHRoZW0gYnkgbGV0dGluZyBhcmNoaXRlY3R1cmVzIGRlZmluZSBhbmQgZW5hYmxlCisgKiBg YENPTkZJR19ERUJVR19ST0RBVEFgYCBhbmQgaW1wbGVtZW50IGEgbWFya19yb2RhdGFfcm8oKSBj YWxsLgorICogbWFya19yb2RhdGFfcm8oKSBjYW4gYmUgdXNlZCBmb3IgaW5zdGFuY2UgdG8gbWFy ayBzcGVjaWZpYyBzZWN0aW9ucyBhcworICogcmVhZC1vbmx5IG9yIG5vbi1leGVjdXRhYmxlLgor ICoKKyAqIExpbnV4IHR5cGljYWxseSBmb2xsb3dzIGEgY29udmVudGlvbiB0byBoYXZlIHRoZSAu cm9kYXRhIEVMRiBzZWN0aW9uIGZvbGxvdworICogYWZ0ZXIgdGhlIC50ZXh0IEVMRiBzZWN0aW9u LCBpdCBkb2VzIHRoaXMgdG8gaGVscCBhcmNoaXRlY3R1cmVzIHdoaWNoCisgKiBzdXBwb3J0IG1l bW9yeSBwcm90ZWN0aW9uIHRvIG1hcmsgYm90aCAudGV4dCBhbmQgLnJvZGF0YSBhcyByZWFkLW9u bHkgaW4KKyAqIG9uZSBzaG90LgorICoKKyAqIEZvciBtb3JlIGRldGFpbHMgcmVmZXIgdG8gbWFy a19yb2RhdGFfcm8oKS4KKyAqLworCisvKioKKyAqIERPQzogLnJvZGF0YQorICoKKyAqIEVMRiBz ZWN0aW9uIHVzZWQgZm9yIGRhdGEgd2hpY2ggbXVzdCBiZSBwcm90ZWN0ZWQgZnJvbSB3cml0ZSBh Y2Nlc3MuCisgKi8KKworLyoqCisgKiBET0M6IC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gbmFt ZSB1c2VkIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgZHVyaW5nIHJlZ3VsYXIKKyAqIGtlcm5l bCBydW4gdGltZS4KKyAqLworCisvKioKKyAqIERPQzogLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlv biB1c2VkIGZvciByZWFkLXdyaXRlIGRhdGEuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGlu aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0aW9ucyBhcmUgdXNlZCBmb3IgY29kZSBhbmQg ZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIGJvb3Qgb3IKKyAqIG1vZHVsZSBpbml0aWFsaXph dGlvbi4gT24gYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQgKHg4NiwgeDg2XzY0KSwgYWxs CisgKiB0aGlzIGNvZGUgaXMgZnJlZWQgdXAgYnkgdGhlIGtlcm5lbCByaWdodCBiZWZvcmUgdGhl IGZpc3QgdXNlcnNwYWNlIGluaXQKKyAqIHByb2Nlc3MgaXMgY2FsbGVkIHdoZW4gYnVpbHQtaW4g dG8gdGhlIGtlcm5lbCwgYW5kIGlmIG1vZHVsYXIgaXQgaXMgZnJlZWQKKyAqIGFmdGVyIG1vZHVs ZSBpbml0aWFsaXphdGlvbi4gU2luY2UgdGhlIGNvZGUgaXMgZnJlZWQgc28gZWFybHksIGluIHRo ZW9yeQorICogdGhlcmUgc2hvdWxkIGJlIG5vIHJhY2VzIGFnYWluc3QgZnJlZWluZyB0aGlzIGNv ZGUgd2l0aCBvdGhlciBDUFVzLiBJbml0CisgKiBzZWN0aW9uIGNvZGUgYW5kIGRhdGEgc3RydWN0 dXJlcyBzaG91bGQgbmV2ZXIgYmUgZXhwb3J0ZWQgd2l0aAorICogRVhQT1JUX1NZTUJPTCooKSBh cyB0aGUgY29kZSB3aWxsIHF1aWNrbHkgYmVjb21lIHVuYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwK KyAqIGFmdGVyIGJvb3R1cC4KKyAqLworCisvKioKKyAqIERPQzogLmluaXQudGV4dAorICoKKyAq IEVMRiBzZWN0aW9uIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgYm9vdCBv ciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICoKKyAqLworCisvKioKKyAqIERPQzogLmlu aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3RydWN0dXJlcyB1c2Vk IG9ubHkgZHVyaW5nIGJvb3Qgb3IgZHJpdmVyCisgKiBpbml0aWFsaXphdGlvbi4KKyAqLworCisv KioKKyAqIERPQzogLmluaXQucm9kYXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgcmVh ZC1vbmx5IGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290CisgKiBvciBkcml2 ZXIgaW5pdGlhbGl6YXRpb24uCisgKi8KKworLyoqCisgKiBET0M6IC5pbml0Y2FsbAorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgZm9yIHN1YnN5c3RlbSBpbml0IGNhbGxzLiBUaGVyZSBhcmUgaW5p dCBsZXZlbHMKKyAqIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBpbiB0aGUg a2VybmVsLiBGb3IgbW9yZSBkZXRhaWxzCisgKiByZWZlciB0byBfX2RlZmluZV9pbml0Y2FsbCgp LgorICovCisKKy8qKgorICogRE9DOiBMaW51eCBleGl0IHNlY3Rpb25zCisgKgorICogVGhlc2Ug c2VjdGlvbnMgYXJlIHVzZWQgdG8gZGVjbGFyZSBhIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1 cmVzIHdoaWNoCisgKiBhcmUgb25seSByZXF1aXJlZCBvbiBleGl0LCB0aGUgZnVuY3Rpb24gb3Ig ZGF0YSBzdHJ1Y3R1cmUgd2lsbCBiZSBkcm9wcGVkCisgKiBpZiB0aGUgY29kZSBkZWNsYXJpbmcg dGhpcyBzZWN0aW9uIGlzIG5vdCBjb21waWxlZCBhcyBhIG1vZHVsZSBvbgorICogYXJjaGl0ZWN0 dXJlcyB0aGF0IHN1cHBvcnQgdGhpcyAoeDg2LCB4ODZfNjQpLiBUaGVyZSBpcyBubyBzcGVjaWFs IGNhc2UKKyAqIGhhbmRsaW5nIGZvciB0aGlzIGNvZGUgd2hlbiBidWlsdC1pbiB0byB0aGUga2Vy bmVsLgorICovCisKKy8qKgorICogRE9DOiAuZXhpdC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24g dXNlZCB0byBmb3IgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZSB1bmxv YWQuCisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1 c2VkIHRvIGZvciBkYXRhIHN0cnVjdHVyZXMgdXNlZCBvbmx5IGR1cmluZyBtb2R1bGUKKyAqIHVu bG9hZC4KKyAqLworCisvKioKKyAqIERPQzogLmV4aXRjYWxsLmV4aXQKKyAqCisgKiBFTEYgc2Vj dGlvbiB1c2VkIGZvciBleGl0IHJvdXRpbmVzLCBvcmRlciBpcyBpbXBvcnRhbnQgYW5kIG1haW50 YWluZWQgYnkKKyAqIGxpbmsgb3JkZXIuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IHJlZmVy ZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIHRv IHRlYWNoIG1vZHBvc3QgdG8gbm90IHdhcm4gYWJvdXQgcG9zc2libGUKKyAqIG1pc3VzZXMgb2Yg aW5pdCBzZWN0aW9uIGNvZGUgZnJvbSBvdGhlciBzZWN0aW9ucy4gSWYgeW91IHVzZSB0aGlzCisg KiB5b3VyIHVzZSBjYXNlIHNob3VsZCBkb2N1bWVudCB3aHkgeW91IGFyZSBjZXJ0YWluIHN1Y2gg dXNlIG9mIGluaXQKKyAqIHNlY3Rpb25lZCBjb2RlIGlzIHZhbGlkLiBGb3IgbW9yZSBkZXRhaWxz IHJlZmVyIHRvIGBgaW5jbHVkZS9saW51eC9pbml0LmhgYAorICogYGBfX3JlZmBgLCBgYF9fcmVm ZGF0YWBgLCBhbmQgYGBfX3JlZmNvbnN0YGAgZG9jdW1lbnRhdGlvbi4KKyAqLworCisvKioKKyAq IERPQzogLnJlZi50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gdXNlZCB0byBhbm5vdGF0ZSBjb2Rl IChmdW5jdGlvbnMpIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgYXMKKyAqIHZhbGlkIGZvciBpdHMg cmVmZXJlbmNlIG9yIHVzZSBvZiBvdGhlciBjb2RlIChmdW5jdGlvbnMpIG9yIGRhdGEgc3RydWN0 dXJlcworICogd2hpY2ggYXJlIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyoq CisgKiBET0M6IC5yZWYuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3Ry dWN0dXJlcyB3aGljaCBoYXZlIGJlZW4gdmV0dGVlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3Ig dXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2Yg dGhlCisgKiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQor ICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25z KSBjb25zdCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgZm9yIGl0 cyByZWZlcmVuY2Ugb3IgdXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykKKyAqIG9yIGRhdGEg c3RydWN0dXJlcyBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qIENhbiBiZSB1 c2VkIG9uIGZvby5TIGZvciBpbnN0YW5jZSAqLworI2lmbmRlZiBfX3NldF9zZWN0aW9uX2NvcmVf dHlwZQorIyBkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwgX19fY29y ZSwgX19fbmFtZSwJCVwKKwkJCQkgX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MsIF9f X3R5cGUKKyNlbmRpZgorCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19z ZXRfc2VjdGlvbl9jb3JlKF9fX3NlY3Rpb24sIF9fX2NvcmUsIF9fX25hbWUsIF9fX2xldmVsLCBf X19mbGFncykgXAorCS5zZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZl bCwgX19fZmxhZ3MKKyNlbmRpZgorCisjaWZuZGVmIF9fcHVzaF9zZWN0aW9uX2NvcmUKKyMgZGVm aW5lIF9fcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZl bCwgX19mbGFncykgXAorCS5wdXNoc2VjdGlvbiBfX3NlY3Rpb24uLl9fY29yZS5fX25hbWUuX19s ZXZlbCwgX19mbGFncworI2VuZGlmCisKKyNpZmRlZiBfX0tFUk5FTF9fCisjaW5jbHVkZSA8bGlu dXgvc3RyaW5naWZ5Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwg ZGVmaW5lZChfX0FTU0VNQkxZX18pCisKKyMgaWZuZGVmIExJTktFUl9TQ1JJUFQKKworIyAgaWZu ZGVmIHB1c2hfc2VjdGlvbl9jb3JlCisjICAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2Vj dGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsIF9fZmxhZ3MpIFwKKwkgX19wdXNoX3NlY3Rp b25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCSAgXAorCQkJICAgICBfX2xldmVs LCBfX3N0cmluZ2lmeShfX2ZsYWdzKSkKKyMgIGVuZGlmCisKKyMgIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlCisjICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9f bmFtZSwJCQlcCisJCQkgICAgX19sZXZlbCwgX19mbGFncykJCQkJXAorCV9fc2V0X3NlY3Rpb25f Y29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUs IF9fbmFtZSwJCVwKKwkJCQkgX19sZXZlbCwgX19mbGFncywgX190eXBlKQkJXAorCV9fc2V0X3Nl Y3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsCVwKKwkJ CQlfX3N0cmluZ2lmeShfX2ZsYWdzKSwgX190eXBlKQorIyAgZW5kaWYKKworIyBlbmRpZiAvKiBM SU5LRVJfU0NSSVBUICovCisjZWxzZSAvKiBkZWZpbmVkKF9fQVNTRU1CTEVSX18pIHx8IGRlZmlu ZWQoX19BU1NFTUJMWV9fKSAqLworCisvKgorICogQXMgcGVyIGdjYydzIGRvY3VtZW50YXRpb24g YSBjb21tb24gYXNtIHNlcGFyYXRvciBpcyBhIG5ldyBsaW5lIGZvbGxvd2VkCisgKiBieSB0YWIg WzBdLCBpdCBob3dldmVyIHNlZW1zIHBvc3NpYmxlIHRvIGFsc28ganVzdCB1c2UgYSBuZXdsaW5l IGFzIGl0cworICogdGhlIG1vc3QgY29tbW9ubHkgZW1waXJpY2FsbHkgb2JzZXJ2ZWQgc2VtYW50 aWMgYW5kIGZvbGtzIHNlZW0gdG8gYWdyZWUKKyAqIHRoaXMgZXZlbiB3b3JrcyBvbiBTMzkwLiBJ biBjYXNlIHlvdXIgYXJjaGl0ZWN0dXJlIGRpc2FncmVlcyB5b3UgbWF5CisgKiBvdmVycmlkZSB0 aGlzIGFuZCBkZWZpbmUgeW91ciBvd24gYW5kIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIG1hY3Jvcy4K KyAqCisgKiBbMF0gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9CYXNpYy1Bc20u aHRtbCNCYXNpYy1Bc20KKyAqLworIyBpZm5kZWYgQVNNX0NNRF9TRVAKKyMgIGRlZmluZSBBU01f Q01EX1NFUAkiXG4iCisjIGVuZGlmCisKKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUKKyMgIGRl ZmluZSBzZXRfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWws IF9fZmxhZ3MpCVwKKwlfX3N0cmluZ2lmeShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rp b24sIF9fY29yZSwgX19uYW1lLAlcCisJCQkJCSAgICBfX2xldmVsLCBfX3N0cmluZ2lmeShfX2Zs YWdzKSkpIFwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisvKgorICogU29tZSBhcmNoaXRlY3R1 cmVzIChhcm0sIGFuZCBhdnIzMiBhcmUgdHdvIGV4YW1wbGVzIG9uIGtwcm9iZXMpIHNlZW0KKyAq IGN1cnJlbnRseSBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHR5cGUgWzBdIC0tIHRoaXMgY2FuIGJl IGFueSBvZiB0aGUKKyAqIG9wdGlvbmFsIGNvbnN0YW50cyBvbiBFTEY6CisgKgorICogQHByb2di aXRzIC0gc2VjdGlvbiBjb250YWlucyBkYXRhCisgKiBAbm9iaXRzIC0gc2VjdGlvbiBkb2VzIG5v dCBjb250YWluIGRhdGEgKGkuZS4sIHNlY3Rpb24gb25seSBvY2N1cGllcyBzcGFjZSkKKyAqIEBu b3RlIC0gc2VjdGlvbiBjb250YWlucyBkYXRhIHdoaWNoIGlzIHVzZWQgYnkgdGhpbmdzIG90aGVy IHRoYW4gdGhlIHByb2dyYW0KKyAqIEBpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBh cnJheSBvZiBwb2ludGVycyB0byBpbml0IGZ1bmN0aW9ucworICogQGZpbmlfYXJyYXkgLSBzZWN0 aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGZpbmlzaCBmdW5jdGlvbnMKKyAq IEBwcmVpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBhcnJheSBvZiBwb2ludGVycyB0 byBwcmUtaW5pdCBmdW5jdGlvbnMKKyAqCisgKiBBUk0gcmVxdWlyZXMgJSBpbnN0ZWFkIG9mIEAu CisgKgorICogQXQgbGVhc3QgYXMgcGVyIG5hc20gKHg4Ni94ODZfNjQgb25seSksIGluIHRoZSBh YnNlbmNlIG9mIHF1YWxpZmllcnMgdGhlCisgKiBkZWZhdWx0cyBhcmUgYXMgZm9sbG93czoKKyAq CisgKiBzZWN0aW9uIC50ZXh0ICAgIHByb2diaXRzICBhbGxvYyAgIGV4ZWMgICAgbm93cml0ZSAg YWxpZ24WCisgKiBzZWN0aW9uIC5yb2RhdGEgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAubHJvZGF0YSBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIG5vd3JpdGUgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmRhdGEgICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5sZGF0YSAgIHByb2diaXRz ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAuYnNzICAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxi c3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0 aW9uIC50ZGF0YSAgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NCAg ICB0bHMKKyAqIHNlY3Rpb24gLnRic3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0 ZSAgICBhbGlnbj00ICAgIHRscworICogc2VjdGlvbiAuY29tbWVudCBwcm9nYml0cyAgbm9hbGxv YyBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqIHNlY3Rpb24gb3RoZXIgICAgcHJvZ2JpdHMg IGFsbG9jICAgbm9leGVjICBub3dyaXRlICBhbGlnbj0xCisgKgorICogZ2FzIHNob3VsZCBoYXZl IHNlbnNpYmxlIGRlZmF1bHRzIGZvciBhcmNoaXRlY3R1cmVzLi4uCisgKgorICogWzBdIGh0dHA6 Ly93d3cubmFzbS51cy9kb2MvbmFzbWRvYzcuaHRtbAorICovCisjIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlX3R5cGUKKyMgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fZmxhZ3MsIF9fdHlwZSkJCQlcCisJX19z dHJpbmdpZnkoX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsCQlcCisJ CQkJCSAgICBfX25hbWUsIF9fbGV2ZWwsCQlcCisJCQkJCSAgICBfX3N0cmluZ2lmeShfX2ZsYWdz KSwJXAorCQkJCQkgICAgX190eXBlKSkJCQlcCisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworIyBp Zm5kZWYgcHVzaF9zZWN0aW9uX2NvcmUKKyMgIGRlZmluZSBwdXNoX3NlY3Rpb25fY29yZShfX3Nl Y3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlc CisJX19zdHJpbmdpZnkoX19wdXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwJCVwK KwkJCQkJX19uYW1lLAlfX2xldmVsLAkJXAorCQkJCQlfX3N0cmluZ2lmeShfX2ZsYWdzKSkpCQlc CisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworI2VuZGlmIC8qIGRlZmluZWQoX19BU1NFTUJMRVJf XykgfHwgZGVmaW5lZChfX0FTU0VNQkxZX18pICovCisjZW5kaWYgLyogX0FTTV9HRU5FUklDX1NF Q1RJT05fQ09SRV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u cy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCmluZGV4IDRkZjY0YTFmYzA5ZS4u YjE0NWFlOGQ5Y2JlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgK KysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCkBAIC0xLDYgKzEsOCBAQAogI2lm bmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8KICNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJ T05TX0hfCiAKKyNpbmNsdWRlIDxhc20vc2VjdGlvbi1jb3JlLmg+CisKIC8qIFJlZmVyZW5jZXMg dG8gc2VjdGlvbiBib3VuZGFyaWVzICovCiAKICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oIGIvaW5jbHVkZS9h c20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4IDA5NjhkMTNiMzg4NS4uNDgzZjYwYzQ1MWY5 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5j bHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC01NSw2ICs1NSw3IEBACiAjZW5kaWYK IAogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUu aD4KIAogLyogQWxpZ24gLiB0byBhIDggYnl0ZSBib3VuZGFyeSBlcXVhbHMgdG8gbWF4aW11bSBm dW5jdGlvbiBhbGlnbm1lbnQuICovCiAjZGVmaW5lIEFMSUdOX0ZVTkNUSU9OKCkgIC4gPSBBTElH Tig4KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0LmggYi9pbmNsdWRlL2xpbnV4L2lu aXQuaAppbmRleCA4ODVjM2U2ZDBmOWQuLjExNmUzMjYyMzMyYSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9pbml0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0LmgKQEAgLTEzMCw2ICsxMzAs MjQgQEAgaW50IF9faW5pdCBpbml0X3Jvb3Rmcyh2b2lkKTsKIGV4dGVybiBib29sIHJvZGF0YV9l bmFibGVkOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RFQlVHX1JPREFUQQorLyoqCisgKiBtYXJr X3JvZGF0YV9ybyAtIGltcGxlbWVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlv bnMKKyAqCisgKiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24g ZGVmaW5lIGEga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdf Uk9EQVRBLCBlbmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICog bWFya19yb2RhdGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQg LnRleHQgRUxGIHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0 byBwcmV2ZW50IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1 cC4gSXQgY2FuIGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4 ZWN1dGlvbgorICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIg dG8gaGVscCBhcmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQt b25seSB3aXRoCisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5 cGljYWxseSBmb2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBF TEYgc2VjdGlvbiBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4Cisg KiBsaW5rZXIgc2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0 ZXIgZnJlZWluZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3Qg aW5pdCB1c2Vyc3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsK ICNlbmRpZgogCkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1 ZzsKICNlbmRpZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2 ZWxzCisgKgorICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0 ZXJhdGVzIG92ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNh bGxzIGFsbCByb3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8g djIuNS4yLjMgTGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5p dAorICogZnVuY3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIu NS4yLjQgTGludXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNh bGwgc3Vic2VjdGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50 IGZ1bmN0aW9uYWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcw ODVgXworICogKHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNr d2FyZCBjb21wYXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0 byBkZXZpY2VfaW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2Yg YSBkZWRpY2F0ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRl ZCB0byBhbiBpbml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZl bCdzCisgKiBFTEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4g cHJpb3IgdG8gaGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVh Y2ggaW5pdGNhbGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIu CisgKgorICogLi4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dp dC9saW51eC9rZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFi N2UxNzA4NWM5NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJM WV9fCiAKLS8qCi0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkg aW50byBzZXBhcmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2Vj dGlvbnMgaXMgZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRz IGNvbXBhdGliaWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZp Y2UgaW5pdCBzdWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIg Zm9yIGRlZmluaXRpbmcgaW5pdCBsZXZlbHMKICAqCi0gKiBUaGUgYGlkJyBhcmcgdG8gX19kZWZp bmVfaW5pdGNhbGwoKSBpcyBuZWVkZWQgc28gdGhhdCBtdWx0aXBsZSBpbml0Y2FsbHMKLSAqIGNh biBwb2ludCBhdCB0aGUgc2FtZSBoYW5kbGVyIHdpdGhvdXQgY2F1c2luZyBkdXBsaWNhdGUtc3lt Ym9sIGJ1aWxkIGVycm9ycy4KKyAqIEBmbjogaW5pdCByb3V0aW5lCisgKiBAaWQ6IGluaXQgbGV2 ZWwKICAqCi0gKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHBvaW50ZXJzIGluIGluaXRj YWxsIHNlY3Rpb25zIHRoYXQgdGhlCi0gKiBrZXJuZWwgaXRlcmF0ZXMgYXQgcnVudGltZS4gVGhl IGxpbmtlciBjYW4gZG8gZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbgotICogYW5kIHJlbW92 ZSB0aGF0IGNvbXBsZXRlbHksIHNvIHRoZSBpbml0Y2FsbCBzZWN0aW9ucyBoYXZlIHRvIGJlIG1h cmtlZAotICogYXMgS0VFUCgpIGluIHRoZSBsaW5rZXIgc2NyaXB0LgorICogRGVmaW5lcyBhIGtl cm5lbCBpbml0aWFsaXphdGlvbiBsZXZlbC4gQSByZXNwZWN0aXZlIGxpbmtlciBzY3JpcHQgZW50 cnkKKyAqIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGUgaW5pdCBsZXZlbCBpcyBhY2NvdW50ZWQg Zm9yIGFuZCB0byBlbnN1cmUgc3ltYm9scworICogZXhpc3QgZm9yIGl0ZXJhdGluZyBvdmVyIGFs bCBmdW5jdGlvbnMgaW4gdGhlIGluaXQgbGV2ZWwuIEEgaW5pdCBsZXZlbAorICogcmVwcmVzZW50 cyBhIHNlcmllcyBvZiBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuCisgKgorICogT3JkZXJp bmcgd2l0aGluIGFuIGluaXRpYWxpemF0aW9uIGxldmVsIGlzIGRldGVybWluZWQgYnkgbGluayBv cmRlciwgc28KKyAqIGZvciBpbnN0YW5jZSBpZiBhIE1ha2VmaWxlIGhhZDo6CisgKgorICoJb2Jq LXkgKz0gZm9vLm8KKyAqCW9iai15ICs9IGJhci5vCisgKgorICogQW5kIGZvby5jOjoKKyAqCisg KglzdWJzeXNfaW5pdGNhbGwoZm9vX2luaXQpOworICoKKyAqIEFuZCBiYXIuYyBoYWQ6OgorICoK KyAqCXN1YnN5c19pbml0Y2FsbChiYXJfaW5pdCk7CisgKgorICogZm9vX2luaXQoKSB3b3VsZCBi ZSBjYWxsZWQgcHJpb3IgdG8gYmFyX2luaXQoKS4KKyAqCisgKiBOb3RlIHRoYXQgQGlkIGluIF9f ZGVmaW5lX2luaXRjYWxsKCkgYWxzbyBlbmFibGVzIG11bHRpcGxlIGluaXRjYWxscworICogdG8g YmUgY3JlYXRlZCB1c2luZyB0aGUgc2FtZSBoYW5kbGVyIGZvciBkaWZmZXJlbnQgaW5pdCBsZXZl bHMgd2l0aG91dAorICogY2F1c2luZyBkdXBsaWNhdGUtc3ltYm9sIGJ1aWxkIGVycm9ycy4KKyAq CisgKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHN0YXJ0IHN5bWJvbHMgdG8gaW5pdGNh bGwgbGV2ZWxzIGluc2lkZSBFTEYKKyAqIHNlY3Rpb25zLCB0aGUga2VybmVsIGluIHR1cm4gdXNl cyB0aGVzZSBzeW1ib2xzIHRvIGl0ZXJhdGUgb3ZlciBlYWNoIGluaXQKKyAqIGxldmVsIGF0IHJ1 bnRpbWUgd2l0aCBkb19pbml0Y2FsbF9sZXZlbCgpLiBUaGUgZW5kIG9mIGVhY2ggaW5pdCBsZXZl bCBpcworICogbWFya2VkIGJ5IHRoZSBzdWJzZXF1ZW50J3Mgc3ltYm9sJ3Mgc3RhcnQgYWRkcmVz cyB1bnRpbCB3ZSByZWFjaCB0aGUgc3ltYm9sCisgKiBgYF9faW5pdGNhbGxfZW5kYGAuIFRoZSBs aW5rZXIgY2FuIGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24gYW5kIGVhY2gKKyAqIGlu aXQgbGV2ZWwgc3RhcnQgc3ltYm9sIGNvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseSBpbiB0aGlz IHByb2Nlc3MsIHRvCisgKiBhdm9pZCB0aGlzIGVhY2ggaW5pdCBsZXZlbCBzdGFydCBzeW1ib2xz IG11c3QgYmUgbWFya2VkIGFzICdLRUVQKCknIGluIHRoZQorICogbGlua2VyIHNjcmlwdCB0byBh dm9pZCBhbnkgbGlua2VyIG9wdGltaXphdGlvbiBoZXVyaXN0aWMgb24gaW5pdGNhbGxzLgogICov Ci0KICNkZWZpbmUgX19kZWZpbmVfaW5pdGNhbGwoZm4sIGlkKSBcCiAJc3RhdGljIGluaXRjYWxs X3QgX19pbml0Y2FsbF8jI2ZuIyNpZCBfX3VzZWQgXAogCV9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdGNhbGwiICNpZCAiLmluaXQiKSkpID0gZm47CmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmggYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzcxYzcyN2JjZDEKLS0tIC9kZXYvbnVsbAor KysgYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKQEAgLTAsMCArMSw4NyBAQAorI2lmbmRlZiBf TElOVVhfU0VDVElPTlNfSAorI2RlZmluZSBfTElOVVhfU0VDVElPTlNfSAorLyoKKyAqIExpbnV4 IGRlLWZhY3RvIHNlY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEx1aXMgUi4gUm9k cmlndWV6IDxtY2dyb2ZAa2VybmVsLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5k ZXIgdGhlIHRlcm1zIG9mIGNvcHlsZWZ0LW5leHQgKHZlcnNpb24gMC4zLjEgb3IgbGF0ZXIpIGFz IHB1Ymxpc2hlZAorICogYXQgaHR0cDovL2NvcHlsZWZ0LW5leHQub3JnLy4KKyAqLworCisjaW5j bHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorCisj aWZuZGVmIF9fQVNTRU1CTFlfXworCisvKioKKyAqIERPQzogSW50cm9kdWN0aW9uCisgKgorICog TGludXggZGVmaW5lcyBhIHNldCBvZiBjb21tb24gaGVscGVycyB3aGljaCBjYW4gYmUgdXNlZCB0 byBhZ2FpbnN0IGl0cyB1c2UKKyAqIG9mIHN0YW5kYXJkIG9yIGN1c3RvbSBMaW51eCBzZWN0aW9u cywgdGhpcyBzZWN0aW9uIGlzIGRlZGljYXRlZCB0byB0aGVzZQorICogaGVscGVycy4KKyAqLwor CisvKioKKyAqIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UIC0gZ2V0IHNlY3Rpb24gYWxpZ25tZW50 CisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoKKyAqIEdpdmVzIHlvdSB0aGUgYWxpZ25t ZW50IGZvciB0aGUgc2VjdGlvbi4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0FMSUdOTUVO VChuYW1lKQlfX2FsaWdub2ZfXygqVk1MSU5VWF9TWU1CT0wobmFtZSkpCisKKy8qKgorICogTElO VVhfU0VDVElPTl9TVEFSVCAtIGdldCBhZGRyZXNzIG9mIHN0YXJ0IG9mIHNlY3Rpb24KKyAqCisg KiBAbmFtZTogc2VjdGlvbiBuYW1lCisgKgorICogVGhpcyBnaXZlcyB5b3UgdGhlIHN0YXJ0IGFk ZHJlc3Mgb2YgdGhlIHNlY3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVz cyBvZiB0aGUgZmlyc3QgZW50cnkuCisgKgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fU1RB UlQobmFtZSkJVk1MSU5VWF9TWU1CT0wobmFtZSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX0VO RCAtIGdldCBhZGRyZXNzIG9mIGVuZCBvZiB0aGUgc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIHNl Y3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVzcyBvZiB0aGUgZW5kIG9m IHRoZQorICogc2VjdGlvbi4gVGhpcyB3aWxsIG1hdGNoIHRoZSBzdGFydCBhZGRyZXNzIGlmIHRo ZQorICogc2VjdGlvbiBpcyBlbXB0eS4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0VORChu YW1lKQlWTUxJTlVYX1NZTUJPTChuYW1lIyNfX2VuZCkKKworLyoqCisgKiBERUNMQVJFX0xJTlVY X1NFQ1RJT04gLSBEZWNsYXJlcyBhIGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKgorICogQHR5cGU6 IHR5cGUgb2YgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqIEBuYW1lOiBjdXN0b20gc2VjdGlvbiBu YW1lCisgKgorICogRGVjbGFyZXMgYSByZWFkLXdyaXRlIGN1c3RvbSBMaW51eCBzZWN0aW9uCisg Ki8KKyNkZWZpbmUgREVDTEFSRV9MSU5VWF9TRUNUSU9OKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0 ZXJuIHR5cGUgVk1MSU5VWF9TWU1CT0wobmFtZSlbXSwgXAorCQkgICAgIFZNTElOVVhfU1lNQk9M KG5hbWUjI19fZW5kKVtdCisKKy8qKgorICogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPIC0gRGVj bGFyZXMgYSByZWFkLW9ubHkgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlw ZSBvZiBjdXN0b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUK KyAqCisgKiBEZWNsYXJlcyBhIHJlYWQtb25seSBjdXN0b20gTGludXggc2VjdGlvbgorICovCisj ZGVmaW5lIERFQ0xBUkVfTElOVVhfU0VDVElPTl9STyh0eXBlLCBuYW1lKQkJCQlcCisJIGV4dGVy biBjb25zdCB0eXBlIFZNTElOVVhfU1lNQk9MKG5hbWUpW10sCQkJXAorCQkJICAgVk1MSU5VWF9T WU1CT0wobmFtZSMjX19lbmQpW10KKworI2RlZmluZSBfX1NFQ1RJT05fQ09SRShzZWN0aW9uLCBj b3JlLCBuYW1lLCBsZXZlbCkJCQlcCisJI3NlY3Rpb24gIi4uIiAjY29yZSAiLiIgI25hbWUgIi4i ICNsZXZlbAorCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfTElOVVhf U0VDVElPTlNfSCAqLwotLSAKMi4xMC4xCgotLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtaWE2NCIgaW4KdGhlIGJvZHkgb2Yg YSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Thu, 22 Dec 2016 02:37:57 +0000 Subject: [PATCH v5 01/14] generic-sections: add section core helpers Message-Id: <20161222023811.21246-2-mcgrof@kernel.org> List-Id: References: <1471642454-5679-1-git-send-email-mcgrof@kernel.org> <20161222023811.21246-1-mcgrof@kernel.org> In-Reply-To: <20161222023811.21246-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1254" Content-Transfer-Encoding: base64 To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcnJlZC4gVW5pZnkgdGhpcwpk b2N1bWVudGF0aW9uIGluIGEgY2VudHJhbCBwbGFjZSBhbmQgcHJvdmlkZSBoZWxwZXJzIHRvCmJ1 aWxkIGN1c3RvbSBMaW51eCBzZWN0aW9ucy4KClRoaXMgYWxzbyBnZW5lcmFsaXplcyBzZWN0aW9u cyBjb2RlIHRvIGVuYWJsZSBhdm9pZGluZwptb2RpZnlpbmcgdGhlIGxpbmtlciBzY3JpcHRzIHdo ZW4gd2Ugd2FudCB0byBhZGQgbmV3CmN1c3RvbSBMaW51eCBzZWN0aW9ucy4gSW4gb3JkZXIgdG8g bWFrZSB0aGlzIGdlbmVyYWxseQp1c2VmdWwgd2UgbmVlZCB0byBlbnN1cmUgYWxsIGFyY2hpdGVj dHVyZXMgY2FuIG1ha2UgdXNlIG9mCmNvcmUgc2VjdGlvbiBoZWxwZXJzIGJ1dCB0aGF0IHRoZXkg Y2FuIGFsc28gb3ZlcnJpZGUgc2hvdWxkCnRoaXMgYmUgbmVlZGVkLiBJbnN0ZWFkIG9mIHJlbHlp bmcgb24gc2VjdGlvbi5oIHRoaXMgYWRkcwphIHNlY3Rpb25zLWNvcmUuaCBzaW5jZSB0aGlzIHdp bGwgYmUgdGFyZ2V0dGVkIHRvIGJlIHNhZmUKdG8gYmUgdXNlZCBvbiBhc20gY29kZSwgbGlua2Vy IHNjcmlwdHMgYW5kIEMgY29kZS4KCnY1OgoKbyBIdWdlIGRvY3VtZW50YXRpb24gcmV2YW1wIGJh c2VkIG9uIGEgY2FyZWZ1bCByZXZpZXcgb2YgdGhlIEVMRgogIHNwZWNpZmljYXRpb25zLiBJbmNs dWRlcyBkb2N1bWVudGF0aW9uIG5vdyBhbHNvIGFib3V0IHVzYWdlIG9mCiAgdHdvIGRvdHMgKC4u KSB3aGVuIHByZWZpeGluZyBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucy4KCm8gUmVwbGFj ZSBtYWNyb3MgZm9yIHNlY3Rpb25zIG5hbWVzIGluIGZhdm9yIG9mIGp1c3QgdXNpbmcKICB0aGUg c2VjdGlvbiBuYW1lcyBleHBsaWNpdGx5IGluIHRoZSBsaW5rZXIgc2NyaXB0LiBUaGlzIGlzCiAg cGVyaGFwcyBtb3JlIHdvcmsgdG8gZ3JlcCBidXQgdGhpcyBpcyB3aGF0IGZvbGtzIHNlZW0gdG8K ICBjdXJyZW50bHkgcHJlZmVyLgoKbyBGaXggLnRleHQgYW5kIC5yb2RhdGEgZG9jdW1lbnRhdGlv biB0byBleHBsYWluIG1lbW9yeSBwcm90ZWN0aW9uCiAgc3RyYXRlZ2llcyB3aGljaCBhcmNoaXRl Y3R1cmVzIGNhbiBlbWJyYWNlIHVwb24gaW5pdGlhbGl6YXRpb24KICAoZG9jdW1lbnRzIENPTkZJ R19ERUJVR19ST0RBVEEgYW5kIG1hcmtfcm9kYXRhX3JvKCkpCgpvIFNraXAgdGhlICdMaW51eCBz ZWN0aW9uIG9yZGVyaW5nJyBkb2N1bWVudGF0aW9uIHNlY3Rpb24sIHdlJ2xsIGluc3RlYWQKICBh ZGQgdGhpcyBvbiBzdWJzZXF1ZW50IHBhdGNoIHdoaWNoIHdpbGwgZXhwYW5kIG9uIGl0IGNvbnNp ZGVyYWJseQoKbyBEcm9wcGVkIHRyZWUgb24gTUFJTlRBSU5FUlMgLS0gYXMgcGVyIGRpc2N1c3Np b25zIHdpdGggQXJuZCwgaHBhIGFuZAogIEpvc2gsIGl0cyBlYXNpZXIgdG8ganVzdCBsZXQgY2hh bmdlcyBmb3Igc2VjdGlvbnMgZ28gaW4gdGhyb3VnaCB0aGUKICByZXNwZWN0aXZlIHRyZWUgdGhh dCBuZWVkcyB0aGUgY2hhbmdlcy4KCm8gRml4IHR5cG9zIG9uIGRvY3VtZW50YXRpb24KCm8gRHJv cHBlZCBTRUNUSU9OX0FMTCgpLCBfX1NFQ1RJT05fQ09SRSgpLCBTRUNUSU9OX0NPUkVfQUxMKCkg bWFjcm9zCiAgc2luY2Ugd2UgYXJlIGZhdm9yaW5nIHVzaW5nIGV4cGxpY2l0IHNlY3Rpb24gbmFt ZXMuIFRoZXNlIGFyZQogIHVzZWxlc3MgaWYgd2UgYXJlIGJlaW5nIGV4cGxpY2l0LgoKbyBEcm9w IExJTlVYX1NFQ1RJT05fU0laRSgpLCBMSU5VWF9TRUNUSU9OX0VNUFRZKCkgaW4gZmF2b3Igb2Yg aGF2aW5nCiAgc2VjdGlvbiByYW5nZXMgYW5kIGxpbmtlciB0YWJsZXMgZGVmaW5lIHRoZWlyIG93 biwgdG8gYXZvaWQgY29uZnVzaW9uCiAgYW5kIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlLgoKbyBB ZGQgX19kZWZpbmVfaW5pdGNhbGwoKSBkb2N1bWVudGF0aW9uIGFuZCBhIHNtYWxsIHNlY3Rpb24g ZGVzY3JpYmluZwogIG91ciBjdXJyZW50IGluaXRjYWxsIGxldmVscy4gVGhpcyBzaG91bGQgaGVs cCBhbHNvIGNsYXJpZnkgd2hhdCB3YXMKICBtZWFudCBhYm91dCBrZWVwaW5nIGJhY2t3YXJkIGNv bXBhdGlibGl0eS4KCnY0OgoKbyBQb3J0IHRvIHNoaW55IG5ldyBzcGhpbnggZG9jdW1lbnRhdGlv biBmb3JtYXQKCm8gZml4IGEgdW5pY29yZTMyIGJ1aWxkLCB0dXJucyBvdXQgdGhpcyBhY3R1YWxs eSBmaXhlcyB1bmljb3JlMzIKICBkZWZjb25maWcgYnVpbGRzIHdoaWNoIHdlcmUgZmFpbGluZyBm b3IgYSBsb25nIHdoaWxlLiB1bmljb3JlMzIKICBkb2VzIG5vdCBzZWVtIHRvIGdyb2sgd2VsbCB0 aGUgdHlwZSBwYXNzZWQgb24gYSBzZWN0aW9uIGRlY2xhcmF0aW9uLAogIHRoaXMgaWdub3JlcyBp dC4KCm8gVXNlIFZNTElOVVhfU1lNQk9MKCkgaW4gbW9yZSB1c2VyIHN5bWJvbHMgKGV4dGVybiBD IGNvZGUpLCBub3QgZG9pbmcKICB0aGlzIHdhcyBjYXVzaW5nIGZpbmFsIGxpbmtlciBpc3N1ZXMg d2l0aCBibGFja2ZpbiAtLSB0aGlzIGlzCiAgYSBDT05GSUdfSEFWRV9VTkRFUlNDT1JFX1NZTUJP TF9QUkVGSVg9eSBhcmNoaXRlY3R1cmUuIFRoZSBvdGhlciBvbmUKICBiZWluZyBtZXRhdGFnLiBt ZXRhdGFnIGlzIG5vdCBzdXBwb3J0ZWQgb24gMC1kYXkgc28gSSBjYW5ub3QgY29uZmlybQogIGNv bXBpbGF0aW9uIHRoZXJlLgoKbyBBZGRlZCBTRUNUSU9OX0NPUkUoKSBmb3IgQyBjb2RlLCB1c2Vk IGxhdGVyIGJ5IF9fTElOVVhfUkFOR0UoKQoKbyBTaW5jZSBTRUNUSU9OX0NPUkUoKSBpcyBkZWZp bmVkIGZvciBsaW5rZXIgc2NyaXB0IGFuZCBDIGNvZGUsIHNoYXJlCiAgdGhlIHNhbWUgaGVscGVy IGFuZCBqdXN0IHVzZSBhIF9fc3RyaW5naWZ5KCkgZm9yIHRoZSBDIGNvZGUgYXMgaXMgZG9uZQog IGZvciB0aGUgb3RoZXIgQyBoZWxwZXJzLgoKbyBtb3ZlIGdlbmVyaWMgc2VjdGlvbnMgdG8gYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggaW5zdGVhZC4KICBQb3dlclBDIGNvbXBpbGF0aW9uIGJs b3dzIHVwIGlmIGFzbS9qdW1wX2xhYmVscy5oIGdldHMKICBzZWN0aW9uLmggaW5jbHVkZWQsIGZp eGluZyB0aGlzIGlzIG5vdCBpbiBhbnkgd2F5IGVhc3kuCiAgVGhlIGxpc3Qgb2YgaXNzdWVzIGFy ZSBlbmRsZXNzLiBNb3ZpbmcgbmV3IGRhdGEgdG8gYSBuZXcKICBzaW1wbGUgZmlsZSByZXNvbHZl cyB0aGlzLgoKbyBzaW5jZSB0aGluZ3MgYXJlIG5vdyBpbiBhc20tZ2VuZXJpYy9zZWN0aW9uLWNv cmUuaCB0aGUKICBndWFyZCBjaGFuZ2VzIG9uIGFzbS1nZW5lcmljL3NlY3Rpb25zLmggYW5kIGVh Y2ggYXJjaGl0ZWN0dXJlCiAgc2VjdGlvbnMuaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZAoKbyBHaXZl IGdlbmVyaWMgc2VjdGlvbnMgc29tZSBtYWludGFpbmVyIGxvdmUsIHRoYXQgY2hhbmdlIGlzCiAg QWNrZWQtYnkgQXJuZCBCZXJnbWFubiwgSm9zaCBhbmQgaHBhLgoKbyBBIGZldyBjaGVja3BhdGNo LnBsIHN0eWxlIGZpeGVzCgpvIEFzIHN1Z2dlc3RlZCBieSBKYW1lcyBIb2dhbiB1c2UgZ2VuZXJp Yy15IHRvIGNvcHkgZ2VuZXJpYwogIGhlYWRlciBmaWxlcyBvbiBhcmNoaXRlY3R1cmVzIHRoYXQg ZG8gbm90IGhhdmUgYSBzZWN0aW9ucy5oCiAgaW5zdGVhZCBvZiB3cml0aW5nIGEgc2ltcGxlIGZp bGUgb25seSB0byBpbmNsdWRlIHRoZSBnZW5lcmljIG9uZS4KCnYzOgoKbyBhZGQgbWlzc2luZyBz ZWN0aW9ucy5oIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZGlkIG5vdAogIGhhdmUgaXQKCm8gbW92 ZSBnZW5lcmljIHNlY3Rpb25zIHRvIGFzbS1nZW5lcmljL3NlY3Rpb25zLmgKCm8gYWRkIGdlbmVy aWMgYXNtIGhlbHBlcnMgc2VjdGlvbl90eXBlKCksIHNlY3Rpb25fdHlwZV9hc210eXBlKCksCiAg cHVzaF9zZWN0aW9uX3R5cGUoKSAtLSB0aGVzZSBoZWxwZXJzIGVuYWJsZSBlYXN5IHVzZSBmb3IK ICBmb3IgbGF0ZXIgZGVjbGFyaW5nIGFuZCB1c2luZyBvZiBjdXN0b20gbGludXggc2VjdGlvbnMg dXNpbmcKICBtb3JlIHN0YW5kYXJkIEFQSXMgaW4gYm90aCBDIGNvZGUsIGFzbSBjb2RlIChDIGFz bSBjYWxscywgb3IKICBhc20gZmlsZXMpLCBlbmFibGluZyBmdXR1cmUgc3RhbmRhcmRpemVkIHNl Y3Rpb24gdHlwZXMgdG8KICBiZSBtb3JlIGltbWVkaWF0ZWx5IGFjY2Vzc2libGUgdG8gYXNtIGNv ZGUsIG5vdCBqdXN0IEMgY29kZS4KICBOb3RlIGZvciBBU01fQ01EX1NFUCB3ZSB1c2UgYnkgZGVm YXVsdCAiXG4iLCBhcmNoaXRlY3R1cmVzIG5lZWRlZAogIHRvIG92ZXJyaWRlIGNhbiBkbyBzbyBv biB0aGVpciBvd24gc2VjdGlvbnMuaCBwcmlvciB0byBpbmNsdXNpb24KICBvZiBhc20tZ2VuZXJp Yy9zZWN0aW9ucy5oCgpTaWduZWQtb2ZmLWJ5OiBMdWlzIFIuIFJvZHJpZ3VleiA8bWNncm9mQGtl cm5lbC5vcmc+Ci0tLQogRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCAgICAgfCAxMDUg KysrKysrKysrKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5ICAgICAgICAgICAgfCAg IDQgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QgICAgICAgICAgfCAgMTcgKysK IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCAgIHwgMTQ4ICsrKysrKysr KysrKysrCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiAr KwogYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJj aC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm0v aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hdnIzMi9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkICAgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwog YXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9p YTY0L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tMzJyL2lu Y2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tNjhrL2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgfCAgIDEgKwogYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICAgfCAgIDEgKwogYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg fCAgIDEgKwogYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEg KwogYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJj aC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9wb3dl cnBjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zMzkwL2luY2x1 ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zY29yZS9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQg ICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggfCAgMTkgKysK IGFyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gv eHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggICAgICAgIHwgMzA3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oICAgICAgICAgICAgfCAg IDIgKwogaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oICAgICAgICAgfCAgIDEgKwog aW5jbHVkZS9saW51eC9pbml0LmggICAgICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKy0t CiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmggICAgICAgICAgICAgICAgICB8ICA4NyArKysrKysr KysKIDQyIGZpbGVzIGNoYW5nZWQsIDgwOSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24tY29yZS5yc3QKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKCmRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CmluZGV4IGNi NWQ3NzY5OWM2MC4uNzFlMDMwNWMwMzZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2luZGV4 LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2luZGV4LnJzdApAQCAtNTcsNiArNTcsNyBAQCBuZWVk ZWQpLgogICAgbWVkaWEvaW5kZXgKICAgIGdwdS9pbmRleAogICAgc2VjdXJpdHkvaW5kZXgKKyAg IHNlY3Rpb25zL2luZGV4CiAgICBzb3VuZC9pbmRleAogICAgY3J5cHRvL2luZGV4CiAKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMGVjZjkxMDRhYWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlv bi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdApAQCAtMCwwICsxLDEwNSBAQAorPT09PT09PT09PT0K K0VMRiBzZWN0aW9uIGJhY2tncm91bmQKKz09PT09PT09PT09CisKK0Fib3V0Cis9PSsKK1RoZSBw dXJwb3NlIG9mIHRoaXMgY2hhcHRlciBpcyB0byBoZWxwIHRob3NlIG5vdCBmYW1pbGlhciB3aXRo IEVMRiB0byBicnVzaCB1cAordGhlIGxhdGVzdCBFTEYgc3BlY2lmaWNhdGlvbnMgaW4gb3JkZXIg dG8gaGVscCB1bmRlcnN0YW5kIGhvdyBMaW51eCB1c2VzIGFuZAorZGVmaW5lcyBpdHMgb3duIEVM RiBzZWN0aW9ucy4KKworU3RhbmRhcmRpemVkIEVMRgorPT09PT09PT0KKworVGhlIGZpcnN0IHB1 YmxpY2F0aW9uIGRvY3VtZW50aW5nIEVMRiB3YXMgVU5JWCBTeXN0ZW0gTGFib3JhdG9yaWVzJyAo VVNMKQorKlN5c3RlbSBWIFJlbGVhc2UgNCBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlKiAo YFNSVjQgQUJJYF8pIHNwZWNpZmljYXRpb24uCitPcmlnaW5hbGx5IEVMRiB3YXMgb25seSBhIHNt YWxsIHBhcnQgb2YgdGhlIFNSVjQgQUJJLCB3aXRoIHRpbWUgaG93ZXZlciBuZXcKK3NwZWNpZmlj YXRpb25zIG9ubHkgcHV0IGZvY3VzIG9uIEVMRiwgc3VjaCB3YXMgdGhlIGNhc2Ugb2YgdGhlICpU SVMgUG9ydGFibGUKK0Zvcm1hdHMgU3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDEuMiogKGBUSVMgMS4y YF8pLiBBcyBvZiBUSVMgMS4yLCBFTEYgd2FzCitzdXBwbGVtZW50ZWQgd2l0aCBwcm9jZXNzb3Ig c3BlY2lmaWMgRUxGIGFkZGVuZHVtcywgYXZhaWxhYmxlIG9uIHRoZSAqTGludXgKK0ZvdW5kYXRp b24gcmVmZXJlbmNlZCBzcGVjaWZpY2F0aW9uIHBhZ2UqIChgTEYgcmVmIHBhZ2VgXykuIFRoZSBs YXRlc3QgRUxGCitzcGVjaWZpY2F0aW9uIGlzIHRoZSAqU3lzdGVtIFYgQXBwbGljYXRpb24gQmlu YXJ5IEludGVyZmFjZSAtIERSQUZUIC0gMjQgQXByaWwKKzIwMDEqIChgZ2FiaTRgXykuCisKKy4u IF9TUlY0IEFCSTogaHR0cDovL3d3dy5zY28uY29tL2RldmVsb3BlcnMvZGV2c3BlY3MvZ2FiaTQx LnBkZgorLi4gX1RJUyAxLjI6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZWxm LnBkZgorLi4gX0xGIHJlZiBwYWdlOiBodHRwczovL3JlZnNwZWNzLmxpbnV4YmFzZS5vcmcvCisu LiBfZ2FiaTQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZ2FiaTQrL2NvbnRl bnRzLmh0bWwKKworRUxGIHZpZXdzIG9uIExpbnV4Cis9PT09PT09PT0KKworVGhlcmUgYXJlIHR3 byB2aWV3cyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5zcGVjdGluZyBkYXRhIGluIGFuIEVMRiBm aWxlLCBhCitMaW5raW5nIHZpZXcsIGFuZCBhbiBFeGVjdXRpb24gdmlldy4gQSBTZWN0aW9uIEhl YWRlciBUYWJsZSBlbmFibGVzIG9uZSB0bworZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBM aW5raW5nIHZpZXcgd2hpbGUgYSBQcm9ncmFtIEhlYWRlciBUYWJsZSBlbmFibGVzCitvbmUgdG8g ZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBFeGVjdXRpb24gdmlldy4gVGhlIHZpZXdzIGFy ZSBub3QgbXV0dWFsbHkKK2V4Y2x1c2l2ZS4gRm9yIGludGFuY2UsIHZtbGludXggY2FuIGJlIHZp ZXdlZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExp bmtpbmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24K K3ZpZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1 dGlvbiB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhh dCB2bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtl cm5lbCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3Qg ZmlsZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtp bmcgdmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxl CitzZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBz ZWN0aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhp cyBpcyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1 Y3QgZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxl cyB0aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVz IGhhdmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25z LgorCitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92 aWRlIGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0 byB0aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2 NC1iaXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rp b24gYXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nzb3IKK3NwZWNp ZmljYXRpb24gaWYgdW5zdXJlLgorCitJdHMgd29ydGggZWxsYWJvcmF0aW5nIG9uIHRoZSBsaW1p dGF0aW9ucyBvbiB0aGUgbmFtZSBvZiBhbiBFTEYgc2VjdGlvbjoKK0VMRiBzZWN0aW9uIG5hbWVz IGFyZSBzdG9yZWQgYXMgc3RyaW5ncyBhcyBwZXIgdGhlIEVMRiBzcGVjaWZpY2F0aW9uLCBhbmQK K2FzIGNhbiBiZSBleHBlY3RlZCwgdGhlc2UgZG9uJ3QgaGF2ZSBleHBsaWNpdCBsaW1pdGF0aW9u cy4gVGhlIGltcGxpY2l0CitsaW1pdGF0aW9uIHRoZW4gZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBh biBFTEYgb2JqZWN0IGZpbGUgYW5kIEVMRiBzZWN0aW9uLgorCitJZiB1c2luZyByZWFsbHkgbGFy Z2Uga2VybmVscyBvciBvYmplY3RzIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBzZWN0aW9ucyBvbmUK K3dvdWxkIHN0aWxsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEVMRiBsb2FkZXIgaW4gY2hhcmdlIG9m IGxvYWRpbmcgdGhlIExpbnV4CitrZXJuZWwgaXMgcHJvcGVybHkgdXBkYXRlZCB0byBoYW5kbGUg Y29waW5nIHdpdGggdGhlIGxhdGVzdCBFTEYgZXh0ZW5zaW9ucy4KKworICAgLi4gZmxhdC10YWJs ZTo6IExpbWl0YXRpb25zIG9uIEVMRiBTZWN0aW9ucworCisgICAgICAqIC0gU2VjdGlvbiBhdHRy aWJ1dGUKKyAgICAgICAgLSAzMi1iaXQKKyAgICAgICAgLSA2NC1iaXQKKworICAgICAgKiAtIEVM RiBzZWN0aW9uIG5hbWUKKyAgICAgICAgLSBTaXplIG9mIGFuIEVMRiBzZWN0aW9uCisgICAgICAg IC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorCisgICAgICAqIC0gU2l6ZSBvZiBhbiBFTEYgc2Vj dGlvbgorICAgICAgICAtIDQgR2lCCisgICAgICAgIC0gMTYgRWlCCisKKyAgICAgICogLSBNYXgg bnVtYmVyIG9mIHNlY3Rpb25zIGluIGFuIG9iamVjdCBmaWxlCisgICAgICAgIC0gNCBHaUVudHJp ZXMgKDQyOTQ5NjcyOTYpCisgICAgICAgIC0gMTYgRWlFbnRyaWVzICgxODQ0Njc0NDA3MzcwOTU1 MTYxNikKKworUHJvZ3JhbSBzcGVjaWZpYyBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT09Kwor VGhlIEVMRiBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgYSBzZWN0aW9uIHR5cGUgdG8gYmUgc3Bl Y2lmaWVkIGFzCisqUHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9uKiwgZGVmaW5lZCBhcyBgYFNIVF9Q Uk9HQklUU2BgLiBUaGlzIHNlY3Rpb25zIHR5cGUKK2VuYWJsZXMgcHJvZ3JhbXMgdG8gY3VzdG9t aXplIHNlY3Rpb25zIGZvciB0aGVpciBvd24gdXNlLiBJbiBhc3NlbWJseSB0aGlzCitzcGVjaWZp ZWQgYGBAcHJvZ2JpdHNgYCBvbiBtb3N0IGFyY2hpdGVjdHVyZXMsIG9uIEFSTSB0aGlzIGlzIGBg JXByb2diaXRzYGAuCisKK2BgU0hUX1BST0dCSVRTYGAgaXMgdXNlZCBieSBMaW51eCBmb3IgZGVm aW5pbmcgYW5kIHVzaW5nIExpbnV4IEVMRiBzZWN0aW9ucy4KKworU3BlY2lhbCBFTEYgU2VjdGlv bnMKKz09PT09PT09PT0KKworVGhlIEVMRiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgKlNwZWNpYWwg RUxGIFNlY3Rpb25zKiBvbiBjaGFwdGVyIDQgKGBnYWJpNAorY2g0YF8pLiBUaGVzZSBhcmUgZGVm aW5lZCBhcyBzZWN0aW9ucyB3aGljaCBob2xkIHByb2dyYW0gYW5kIGNvbnRyb2wKK2luZm9ybWF0 aW9uLiBPZiB0aGVzZSBzZWN0aW9ucywgYSBmZXcgaGF2ZSB0aGUgc2VjdGlvbiB0eXBlIGFzCitg YFNIVF9QUk9HQklUU2BgLiBUaGlzIGVuYWJsZXMgTGludXggdG8gKmZ1cnRoZXIgY3VzdG9taXpl KiB1c2Ugb2YgdGhlIHNlY3Rpb24KK2JleW9uZCB3aGF0IHRoZSBFTEYgc3BlY2lmaWNhdGlvbiBz dWdnZXN0cy4KKworLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3Jn L2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFsX3NlY3Rpb25zCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25z L2NvbmYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWExYzU3 NTk1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkK QEAgLTAsMCArMSw0IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04OyBtb2RlOiBweXRob24gLSotCisK K3Byb2plY3QgPSAnTGludXggS2VybmVsIEVMRiBzZWN0aW9ucycKK2h0bWxfc2VhcmNoX2xhbmd1 YWdlID0gJ2VuJwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmYzNzUxMWVmMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3Vt ZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0CkBAIC0wLDAgKzEsMTcgQEAKKz09PT09PT09PT09 PStMaW51eCBLZXJuZWwgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT0rCitUaGlzIGJvb2sgZG9j dW1lbnRzIHRoZSBkaWZmZXJlbnQgRUxGIHNlY3Rpb25zIHVzZWQgb24gdGhlIExpbnV4IGtlcm5l bC4KK1dlIHN0YXJ0IG9mZiBieSBwcm92aWRpbmcgcmVmZXJlbmNlcyB0byBob3cgRUxGIHdhcyBz dGFuZGFyZGl6ZWQsIHJlZmVyZW5jZXMKK3RvIHRoZSBzdGFuZGFyZHMgb24gRUxGIHNlY3Rpb25z LCByZXZpZXcgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLCBhbmQKK2ZpbmFsbHkgaG93IExp bnV4IHVzZXMgRUxGIHNlY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwuIENlcnRhaW4gaW1wb3J0 YW50CitMaW51eCBFTEYgc2VjdGlvbnMgYXJlIGRvY3VtZW50ZWQgY2FyZWZ1bGx5OiB3ZSBkZXNj cmliZSB0aGUgZ29hbCBvZiB0aGUKK0VMRiBzZWN0aW9uLCBhbmQgYWRkcmVzcyBjb25jdXJyZW5j eSBjb25zaWRlcmF0aW9ucyB3aGVuIGFwcGxpY2FibGUuIEEgZmV3Citjb21tb24gYSBzZXQgb2Yg TGludXggaGVscGVycyBmb3IgRUxGIHNlY3Rpb25zIGFyZSBhbHNvIGRvY3VtZW50ZWQuCisKKy4u IHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiA0CisKKyAgIGJhY2tncm91bmQKKyAgIHNlY3Rpb24t Y29yZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0 IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM1ODE1YTBkOWIzCi0tLSAvZGV2L251bGwKKysr IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0CkBAIC0wLDAgKzEsMTQ4 IEBACis9PT09PT09PT09PT09PT09PStMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9u cworPT09PT09PT09PT09PT09PT0rCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJp Yy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2Vj dGlvbnMKKworTGludXggbGlua2VyIHNjcmlwdAorPT09PT09PT09KworLi4ga2VybmVsLWRvYzo6 IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGxpbmtl ciBzY3JpcHQKKworTWVtb3J5IHByb3RlY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJu ZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTWVt b3J5IHByb3RlY3Rpb24KKworbWFya19yb2RhdGFfcm8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IG1h cmtfcm9kYXRhX3JvCisKKy5yb2RhdGEKKy0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucm9kYXRhCisKKy50ZXh0Cist LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgK KyAgIDpkb2M6IC50ZXh0CisKKy5kYXRhCistLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZGF0YQorCitMaW51 eCAuaW5pdFwqIHNlY3Rpb25zCis9PT09PT09PT09PQorCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggaW5pdCBzZWN0aW9u cworCisuaW5pdC50ZXh0CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmluaXQudGV4dAorCisuaW5pdC5kYXRh CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u LWNvcmUuaAorICAgOmRvYzogLmluaXQuZGF0YQorCisuaW5pdC5yb2RhdGEKKy0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5pbml0LnJvZGF0YQorCitJbml0Y2FsbCBsZXZlbHMKKy0tLS0tLS0tLS0tLS0tLQor Li4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZG9jOiBJbml0Y2FsbCBs ZXZlbHMKKworLmluaXRjYWxsCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGlu Y2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0Y2FsbAorCitf X2RlZmluZV9pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L2luaXQuaAorICAgOmZ1bmN0aW9uczogX19kZWZpbmVfaW5pdGNhbGwKKworTGlu dXggLmV4aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1 ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGV4aXQgc2VjdGlv bnMKKworLmV4aXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LnRleHQKKworLmV4aXQuZGF0 YQorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LmRhdGEKKworLmV4aXRjYWxsLmV4aXQKKy0tLS0tLS0t LS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUu aAorICAgOmRvYzogLmV4aXRjYWxsLmV4aXQKKworTGludXggLnJlZlwqIHNlY3Rpb25zCis9PT09 PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IExpbnV4IHJlZmVyZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworCisucmVmLnRl eHQKKy0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5yZWYudGV4dAorCisucmVmLmRhdGEKKy0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6 IC5yZWYuZGF0YQorCisucmVmLnJvZGF0YQorLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVmLnJvZGF0YQor CitHZW5lcmljIExpbnV4IGtlcm5lbCBzZWN0aW9uIGhlbHBlcnMKKz09PT09PT09PT09PT09PT09 PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpkb2M6IEludHJvZHVjdGlvbgorCitMSU5VWF9TRUNUSU9O X0FMSUdOTUVOVAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NFQ1RJT05fQUxJR05N RU5UCisKK0xJTlVYX1NFQ1RJT05fU1RBUlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NF Q1RJT05fU1RBUlQKKworTElOVVhfU0VDVElPTl9FTkQKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBr ZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5V WF9TRUNUSU9OX0VORAorCitERUNMQVJFX0xJTlVYX1NFQ1RJT04KKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0 aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OCisKK0RFQ0xBUkVfTElOVVhfU0VDVElPTl9STwor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9z ZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggZDBiMmI1MDcwNWJkLi4zMDg4 MjZmNTA5NGIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC01 NDIyLDYgKzU0MjIsMTggQEAgUzoJU3VwcG9ydGVkCiBGOglkcml2ZXJzL2Jhc2UvcG93ZXIvZG9t YWluKi5jCiBGOglpbmNsdWRlL2xpbnV4L3BtX2RvbWFpbi5oCiAKK0dFTkVSSUMgU0VDVElPTlMK K006CSJMdWlzIFIuIFJvZHJpZ3VleiIgPG1jZ3JvZkBrZXJuZWwub3JnPgorTToJSm9zaCBQb2lt Ym9ldWYgPGpwb2ltYm9lQHJlZGhhdC5jb20+CitNOgkiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0 b3IuY29tPgorTDoJbGludXgtYXJjaEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0 aW9uLWNvcmUuaAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCitGOglpbmNsdWRl L2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKK0Y6CURvY3VtZW50YXRpb24vc2VjdGlvbnMvc2Vj dGlvbi1jb3JlLnJzdAorCiBHRU5FUklDIFVJTyBEUklWRVIgRk9SIFBDSSBERVZJQ0VTCiBNOgki TWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CiBMOglrdm1Admdlci5rZXJuZWwu b3JnCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYWxw aGEvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGJmODQ3NWNlODVlZS4uNTQyMjgyN2YxNTg1IDEw MDY0NAotLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2FscGhh L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJj aC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMu aAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcmMvaW5j bHVkZS9hc20vS2J1aWxkCmluZGV4IGMzMzI2MDQ2MDZkZC4uN2IyY2IzZGVhNWZjIDEwMDY0NAot LS0gYS9hcmNoL2FyYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcmMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC01MSwzICs1MSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMt eSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4 b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2FybS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZWZi MjE3NTdkNDFmLi45YjY5YTIyYTlhZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQxLDMgKzQxLDQg QEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiAKIGdlbmVyYXRlZC15ICs9IG1hY2gtdHlwZXMu aAogZ2VuZXJhdGVkLXkgKz0gdW5pc3RkLW5yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA4MzY1YTg0YzI2NDAuLjAwYWNlNWU4MjZmMSAxMDA2 NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25l ZC5oCiBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSAr PSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2F2 cjMyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IDI0MWI5Yjk3MjlkOC4uZjJjM2I2NTZhMGU3IDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MjIsMyArMjIsNCBAQCBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZn YS5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitn ZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkIGIvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg MmZiNjdiNTlkMTg4Li5iZjIwNTQxYmNmMjEgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCkBA IC00NywzICs0Nyw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHVz ZXIuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAor Z2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2M2eC9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNjQ0NjVlN2Uy MjQ1Li4zODEyN2NlNzQ3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYzZ4L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTYyLDMgKzYyLDQgQEAgZ2Vu ZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0gd29yZC1h dC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2NyaXMv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDE3Nzg4MDVmNjM4MC4uMzg1Y2Q4OGE5ZDllIDEwMDY0 NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvY3Jpcy9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHR5cGVzLmgKIGdl bmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMt eSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNo L2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggMWZhMDg0Y2YxYTQzLi40NmQ3YzU5OWQ5YjggMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTgsMyAr OCw0IEBAIGdlbmVyaWMteSArPSBtbS1hcmNoLWhvb2tzLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0 LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRp bWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAw L2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvaDgzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDM3M2NiMjMzMDFlMy4uMWVjMDRlYzFjODJiIDEwMDY0NAotLS0gYS9hcmNoL2g4MzAwL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNzUs MyArNzUsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2hleGFnb24vaW5jbHVkZS9h c20vS2J1aWxkIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCBkYjhkZGFi YzZiZDIuLjM3ZDdiZmFlNzYxOSAxMDA2NDQKLS0tIGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MCwzICs2 MCw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkg Kz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVp bGQgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDUwMmE5MWQ4ZGJiZC4uNjcy YzZkNWRhMThjIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBi L2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTksMyArOSw0IEBAIGdlbmVyaWMteSAr PSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gdnRp bWUuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9u LWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gv bTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggODYwZTQ0MDYxMWM5Li42MTExZTE1MjM3NTAg MTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tMzJy L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1w dC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL202OGsv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFmMmU1ZDMxY2IyNC4uMTI3N2I0NWJmNGY5IDEwMDY0 NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTY4ay9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTM0LDMgKzM0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAog Z2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdp dCBhL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tZXRhZy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggMTY3MTUwYzcwMWQxLi5iMTAxMTM3NWNkN2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20v S2J1aWxkCkBAIC01NSwzICs1NSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSAr PSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3Iu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxh emUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0tidWls ZAppbmRleCBiMGFlODhjOWZlZDkuLmM2YzJjZjZlZGM5OCAxMDA2NDQKLS0tIGEvYXJjaC9taWNy b2JsYXplL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xMSwzICsxMSw0IEBAIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVy aWMteSArPSBzeXNjYWxscy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0t Z2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWlwcy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggNDViMGQ2NTY4MjcwLi5hNjdkMzE3N2YzY2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjAsMyArMjAsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQK aW5kZXggMWM4ZGQwZjVjZDVkLi5mODE0NWJjODU4MzUgMTAwNjQ0Ci0tLSBhL2FyY2gvbW4xMDMw MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0g c2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3Jk LWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2Fy Y2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVp bGQKaW5kZXggZDYzMzMwZTg4Mzc5Li5jOWM3Y2I4MmIwMGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlv czIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxk CkBAIC02MywzICs2Myw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2Eu aAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZCBiL2FyY2gvb3BlbnJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDI4 MzJmMDMxZmIxMS4uODYxNzVlNzAxODY5IDEwMDY0NAotLS0gYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NzEsMyArNzEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDkxZjUzYzA3ZjQx MC4uMThhOWQ0YzVlYWQ3IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC0yOCwzICsyOCw0IEBA IGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24t Y29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJj aC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1YzRmYmM4MGRjNmMuLjQzMjJkOTc0 NmNkYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkg Kz0gbWNzX3NwaW5sb2NrLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSBy d3NlbS5oCiBnZW5lcmljLXkgKz0gdnRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zMzkwL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCA4YWVhMzJmZThiZDIuLjYzYTFjMjkyNGI5MSAxMDA2NDQK LS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3MzOTAvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5o CiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2Vu ZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApk aWZmIC0tZ2l0IGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3Njb3JlL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBhMDUyMThmZjNmZTQuLmYwODlhMjY0Y2QzOCAxMDA2NDQK LS0tIGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zY29yZS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTE0LDMgKzE0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB4b3IuaAogZ2VuZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkg Kz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1n aXQgYS9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDc1MWMzMzczYTkyYy4uN2IwMzU2ZGNhNTYyIDEwMDY0NAotLS0gYS9hcmNoL3No L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MzksMyArMzksNCBAQCBnZW5lcmljLXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2Vf Y2xvY2suaAogZ2VuZXJpYy15ICs9IHVjb250ZXh0LmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDA1NjliZmFj NGFmYi4uNDM4Zjg2NTczZGM1IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0ti dWlsZAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjEsMyArMjEsNCBA QCBnZW5lcmljLXkgKz0gc2VyaWFsLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmQxZjU2Mzg5NzRjLi5m YjZiODMxYzFmYmEgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDAsMyArNDAsNCBAQCBnZW5lcmlj LXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9 IHR5cGVzLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvdW0vaW5jbHVk ZS9hc20vS2J1aWxkCmluZGV4IDA1MmY3ZjZkMDU1MS4uNTgwYmQ1ZmY4MjhmIDEwMDY0NAotLS0g YS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3VtL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjYsMyArMjYsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15 ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmlj LXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJj aC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggYi9hcmNoL3VuaWNvcmUzMi9p bmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjBiOWM2ODQyOWExYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvdW5pY29yZTMy L2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCkBAIC0wLDAgKzEsMTkgQEAKKyNpZm5kZWYgX19V TklDT1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fCisjZGVmaW5lIF9fVU5JQ09SRV9TRUNUSU9OX0NP UkVfQVNNX0hfXworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJvZHJpZ3VleiA8 bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0 ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBhcyBwdWJsaXNo ZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyogVW5pY29yZTMy IGhhcyBrbm93biB0byBub3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSB0eXBlIHNldCwgc28gaWdu b3JlIGl0ICovCisKKyNkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwg X19fY29yZSwgX19fbmFtZSwJCVwKKwkJCQlfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlc CisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFn cworCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmg+CisKKyNlbmRpZiAvKiBf X1VOSUNPUkVfU0VDVElPTl9DT1JFX0FTTV9IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyYjg5 MmUyMzEzYTkuLmFmOTc1ZjIxZWVlZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v S2J1aWxkCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTIsMyArMTIsNCBA QCBnZW5lcmljLXkgKz0gZG1hLWNvbnRpZ3VvdXMuaAogZ2VuZXJpYy15ICs9IGVhcmx5X2lvcmVt YXAuaAogZ2VuZXJpYy15ICs9IG1jc19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gbW0tYXJjaC1o b29rcy5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gveHRl bnNhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCBiN2ZiYWE1NmI1MWEuLjc4NzljMzFlNjZhNyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Ev aW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApA QCAtMzIsMyArMzIsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15ICs9IHRy YWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9h c20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYjE2YmVmYzQy NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o CkBAIC0wLDAgKzEsMzA3IEBACisjaWZuZGVmIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8K KyNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJT05fQ09SRV9IXworLyoKKyAqIExpbnV4IHNlY3Rp b24gY29yZSBkZWZpbml0aW9ucworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJv ZHJpZ3VleiA8bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVu ZGVyIHRoZSB0ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBh cyBwdWJsaXNoZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyoq CisgKiBET0M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25zCisgKgorICogTGlu dXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBgYFNIVF9QUk9HQklUU2BgIHRvIGJvdGggZXh0ZW5k IHVzZSBhbmQKKyAqIGRlZmluaXRpb24gb2YgKlNwZWNpYWwgRUxGIFNlY3Rpb25zKiAoYGdhYmk0 IGNoNGBfKSBhbmQgdG8gZGVmaW5lIGl0cyBvd24KKyAqIHNlY3Rpb25zLiBUaGlzIGNoYXBlciBp cyBkZWRpY2F0ZWQgdG8gZG9jdW1lbnRpbmcgTGludXggcHJvZ3JhbSBzcGVjaWZpYworICogc2Vj dGlvbnMgYW5kIGhlbHBlcnMgYXZhaWxhYmxlIHRvIG1ha2UgdXNlIG9mIHRoZXNlIGVhc2llciB0 byBpbXBsZW1lbnQgYW5kCisgKiB1c2UuCisgKgorICogLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9y ZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFs X3NlY3Rpb25zCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGxpbmtlciBzY3JpcHQKKyAqCisg KiBMaW51eCB1c2VzIGEgY3VzdG9tIGxpbmtlciBzY3JpcHQgdG8gYnVpbGQgdGhlIHZtbGludXgg YmluYXJ5LCBpdCB1c2VzIGl0IHRvCisgKiBzdHJhdGVnaWNhbGx5IHBsYWNlIGFuZCBkZWZpbmUg TGludXggRUxGIHNlY3Rpb25zLiAgRWFjaCBhcmNoaXRlY3R1cmUgbmVlZHMKKyAqIHRvIGltcGxl bWVudCBpdHMgb3duIGxpbmtlciBzY3JpcHQsIGl0IGlzIGV4cGVjdGVkIHRvIHJlc2lkZSBpbgor ICogYGBhcmNoLyQoQVJDSCkva2VybmVsL3ZtbGludXgubGRzLlNgYC4gIEFyY2hpdGVjdHVyZSBM aW51eCBsaW5rZXIgc2NyaXB0cyBpbgorICogdHVybiBpbmNsdWRlIGFuZCB1c2UgZGVmaW5pdGlv bnMgZnJvbSBgYGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaGBgLAorICogYXMgd2Vs bCBhcyBzb21lIGhlbHBlcnMgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXIuCisgKgorICogSW4g YXNzZW1ibHkgaXQgaXMgY29tbW9uIHByYWN0aWNlIHRvIHVzZSBkb3RzIChgYC5gYCkgaW4gbGFi ZWxzIHRvIGF2b2lkCisgKiBjbGFzaGVzIHdpdGggQyBzeW1ib2xzLiBTaW1pbGFybHksIGEgZG90 IChgYC5gYCkgY2FuIGJlIHBhcnQgb2YgYSBzZWN0aW9uCisgKiBuYW1lIGJ1dCBub3QgYSBDIHN5 bWJvbC4gSGlzdG9yaWNhbGx5IHRoZW4sIHR3byBkb3RzIGFyZSB1c2VkIChgYC4uYGApCisgKiBo YXZlIGJlZW4gdXNlZCBpbiBsaW5rZXIgc2NyaXB0cyB3aGVuIGFkZGluZyBwcm9ncmFtIHNwZWNp ZmljIHNlY3Rpb25zCisgKiB3aGVuIHRoZXJlIGFyZSBjb25jZXJucyB0byBhdm9pZCBjbGFzaGVz IHdpdGggY29tcGlsZXIgZ2VuZXJhdGVkIHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiBN ZW1vcnkgcHJvdGVjdGlvbgorICoKKyAqIExpbnV4IGFsbG93cyBhcmNoaXRlY3R1cmVzIHdoaWNo IHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZmVhdHVyZXMgdG8KKyAqIHRha2UgYWR2YW50YWdl IG9mIHRoZW0gYnkgbGV0dGluZyBhcmNoaXRlY3R1cmVzIGRlZmluZSBhbmQgZW5hYmxlCisgKiBg YENPTkZJR19ERUJVR19ST0RBVEFgYCBhbmQgaW1wbGVtZW50IGEgbWFya19yb2RhdGFfcm8oKSBj YWxsLgorICogbWFya19yb2RhdGFfcm8oKSBjYW4gYmUgdXNlZCBmb3IgaW5zdGFuY2UgdG8gbWFy ayBzcGVjaWZpYyBzZWN0aW9ucyBhcworICogcmVhZC1vbmx5IG9yIG5vbi1leGVjdXRhYmxlLgor ICoKKyAqIExpbnV4IHR5cGljYWxseSBmb2xsb3dzIGEgY29udmVudGlvbiB0byBoYXZlIHRoZSAu cm9kYXRhIEVMRiBzZWN0aW9uIGZvbGxvdworICogYWZ0ZXIgdGhlIC50ZXh0IEVMRiBzZWN0aW9u LCBpdCBkb2VzIHRoaXMgdG8gaGVscCBhcmNoaXRlY3R1cmVzIHdoaWNoCisgKiBzdXBwb3J0IG1l bW9yeSBwcm90ZWN0aW9uIHRvIG1hcmsgYm90aCAudGV4dCBhbmQgLnJvZGF0YSBhcyByZWFkLW9u bHkgaW4KKyAqIG9uZSBzaG90LgorICoKKyAqIEZvciBtb3JlIGRldGFpbHMgcmVmZXIgdG8gbWFy a19yb2RhdGFfcm8oKS4KKyAqLworCisvKioKKyAqIERPQzogLnJvZGF0YQorICoKKyAqIEVMRiBz ZWN0aW9uIHVzZWQgZm9yIGRhdGEgd2hpY2ggbXVzdCBiZSBwcm90ZWN0ZWQgZnJvbSB3cml0ZSBh Y2Nlc3MuCisgKi8KKworLyoqCisgKiBET0M6IC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gbmFt ZSB1c2VkIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgZHVyaW5nIHJlZ3VsYXIKKyAqIGtlcm5l bCBydW4gdGltZS4KKyAqLworCisvKioKKyAqIERPQzogLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlv biB1c2VkIGZvciByZWFkLXdyaXRlIGRhdGEuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGlu aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0aW9ucyBhcmUgdXNlZCBmb3IgY29kZSBhbmQg ZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIGJvb3Qgb3IKKyAqIG1vZHVsZSBpbml0aWFsaXph dGlvbi4gT24gYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQgKHg4NiwgeDg2XzY0KSwgYWxs CisgKiB0aGlzIGNvZGUgaXMgZnJlZWQgdXAgYnkgdGhlIGtlcm5lbCByaWdodCBiZWZvcmUgdGhl IGZpc3QgdXNlcnNwYWNlIGluaXQKKyAqIHByb2Nlc3MgaXMgY2FsbGVkIHdoZW4gYnVpbHQtaW4g dG8gdGhlIGtlcm5lbCwgYW5kIGlmIG1vZHVsYXIgaXQgaXMgZnJlZWQKKyAqIGFmdGVyIG1vZHVs ZSBpbml0aWFsaXphdGlvbi4gU2luY2UgdGhlIGNvZGUgaXMgZnJlZWQgc28gZWFybHksIGluIHRo ZW9yeQorICogdGhlcmUgc2hvdWxkIGJlIG5vIHJhY2VzIGFnYWluc3QgZnJlZWluZyB0aGlzIGNv ZGUgd2l0aCBvdGhlciBDUFVzLiBJbml0CisgKiBzZWN0aW9uIGNvZGUgYW5kIGRhdGEgc3RydWN0 dXJlcyBzaG91bGQgbmV2ZXIgYmUgZXhwb3J0ZWQgd2l0aAorICogRVhQT1JUX1NZTUJPTCooKSBh cyB0aGUgY29kZSB3aWxsIHF1aWNrbHkgYmVjb21lIHVuYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwK KyAqIGFmdGVyIGJvb3R1cC4KKyAqLworCisvKioKKyAqIERPQzogLmluaXQudGV4dAorICoKKyAq IEVMRiBzZWN0aW9uIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgYm9vdCBv ciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICoKKyAqLworCisvKioKKyAqIERPQzogLmlu aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3RydWN0dXJlcyB1c2Vk IG9ubHkgZHVyaW5nIGJvb3Qgb3IgZHJpdmVyCisgKiBpbml0aWFsaXphdGlvbi4KKyAqLworCisv KioKKyAqIERPQzogLmluaXQucm9kYXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgcmVh ZC1vbmx5IGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290CisgKiBvciBkcml2 ZXIgaW5pdGlhbGl6YXRpb24uCisgKi8KKworLyoqCisgKiBET0M6IC5pbml0Y2FsbAorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgZm9yIHN1YnN5c3RlbSBpbml0IGNhbGxzLiBUaGVyZSBhcmUgaW5p dCBsZXZlbHMKKyAqIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBpbiB0aGUg a2VybmVsLiBGb3IgbW9yZSBkZXRhaWxzCisgKiByZWZlciB0byBfX2RlZmluZV9pbml0Y2FsbCgp LgorICovCisKKy8qKgorICogRE9DOiBMaW51eCBleGl0IHNlY3Rpb25zCisgKgorICogVGhlc2Ug c2VjdGlvbnMgYXJlIHVzZWQgdG8gZGVjbGFyZSBhIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1 cmVzIHdoaWNoCisgKiBhcmUgb25seSByZXF1aXJlZCBvbiBleGl0LCB0aGUgZnVuY3Rpb24gb3Ig ZGF0YSBzdHJ1Y3R1cmUgd2lsbCBiZSBkcm9wcGVkCisgKiBpZiB0aGUgY29kZSBkZWNsYXJpbmcg dGhpcyBzZWN0aW9uIGlzIG5vdCBjb21waWxlZCBhcyBhIG1vZHVsZSBvbgorICogYXJjaGl0ZWN0 dXJlcyB0aGF0IHN1cHBvcnQgdGhpcyAoeDg2LCB4ODZfNjQpLiBUaGVyZSBpcyBubyBzcGVjaWFs IGNhc2UKKyAqIGhhbmRsaW5nIGZvciB0aGlzIGNvZGUgd2hlbiBidWlsdC1pbiB0byB0aGUga2Vy bmVsLgorICovCisKKy8qKgorICogRE9DOiAuZXhpdC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24g dXNlZCB0byBmb3IgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZSB1bmxv YWQuCisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1 c2VkIHRvIGZvciBkYXRhIHN0cnVjdHVyZXMgdXNlZCBvbmx5IGR1cmluZyBtb2R1bGUKKyAqIHVu bG9hZC4KKyAqLworCisvKioKKyAqIERPQzogLmV4aXRjYWxsLmV4aXQKKyAqCisgKiBFTEYgc2Vj dGlvbiB1c2VkIGZvciBleGl0IHJvdXRpbmVzLCBvcmRlciBpcyBpbXBvcnRhbnQgYW5kIG1haW50 YWluZWQgYnkKKyAqIGxpbmsgb3JkZXIuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IHJlZmVy ZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIHRv IHRlYWNoIG1vZHBvc3QgdG8gbm90IHdhcm4gYWJvdXQgcG9zc2libGUKKyAqIG1pc3VzZXMgb2Yg aW5pdCBzZWN0aW9uIGNvZGUgZnJvbSBvdGhlciBzZWN0aW9ucy4gSWYgeW91IHVzZSB0aGlzCisg KiB5b3VyIHVzZSBjYXNlIHNob3VsZCBkb2N1bWVudCB3aHkgeW91IGFyZSBjZXJ0YWluIHN1Y2gg dXNlIG9mIGluaXQKKyAqIHNlY3Rpb25lZCBjb2RlIGlzIHZhbGlkLiBGb3IgbW9yZSBkZXRhaWxz IHJlZmVyIHRvIGBgaW5jbHVkZS9saW51eC9pbml0LmhgYAorICogYGBfX3JlZmBgLCBgYF9fcmVm ZGF0YWBgLCBhbmQgYGBfX3JlZmNvbnN0YGAgZG9jdW1lbnRhdGlvbi4KKyAqLworCisvKioKKyAq IERPQzogLnJlZi50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gdXNlZCB0byBhbm5vdGF0ZSBjb2Rl IChmdW5jdGlvbnMpIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgYXMKKyAqIHZhbGlkIGZvciBpdHMg cmVmZXJlbmNlIG9yIHVzZSBvZiBvdGhlciBjb2RlIChmdW5jdGlvbnMpIG9yIGRhdGEgc3RydWN0 dXJlcworICogd2hpY2ggYXJlIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyoq CisgKiBET0M6IC5yZWYuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3Ry dWN0dXJlcyB3aGljaCBoYXZlIGJlZW4gdmV0dGVlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3Ig dXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2Yg dGhlCisgKiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQor ICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25z KSBjb25zdCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgZm9yIGl0 cyByZWZlcmVuY2Ugb3IgdXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykKKyAqIG9yIGRhdGEg c3RydWN0dXJlcyBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qIENhbiBiZSB1 c2VkIG9uIGZvby5TIGZvciBpbnN0YW5jZSAqLworI2lmbmRlZiBfX3NldF9zZWN0aW9uX2NvcmVf dHlwZQorIyBkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwgX19fY29y ZSwgX19fbmFtZSwJCVwKKwkJCQkgX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MsIF9f X3R5cGUKKyNlbmRpZgorCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19z ZXRfc2VjdGlvbl9jb3JlKF9fX3NlY3Rpb24sIF9fX2NvcmUsIF9fX25hbWUsIF9fX2xldmVsLCBf X19mbGFncykgXAorCS5zZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZl bCwgX19fZmxhZ3MKKyNlbmRpZgorCisjaWZuZGVmIF9fcHVzaF9zZWN0aW9uX2NvcmUKKyMgZGVm aW5lIF9fcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZl bCwgX19mbGFncykgXAorCS5wdXNoc2VjdGlvbiBfX3NlY3Rpb24uLl9fY29yZS5fX25hbWUuX19s ZXZlbCwgX19mbGFncworI2VuZGlmCisKKyNpZmRlZiBfX0tFUk5FTF9fCisjaW5jbHVkZSA8bGlu dXgvc3RyaW5naWZ5Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwg ZGVmaW5lZChfX0FTU0VNQkxZX18pCisKKyMgaWZuZGVmIExJTktFUl9TQ1JJUFQKKworIyAgaWZu ZGVmIHB1c2hfc2VjdGlvbl9jb3JlCisjICAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2Vj dGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsIF9fZmxhZ3MpIFwKKwkgX19wdXNoX3NlY3Rp b25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCSAgXAorCQkJICAgICBfX2xldmVs LCBfX3N0cmluZ2lmeShfX2ZsYWdzKSkKKyMgIGVuZGlmCisKKyMgIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlCisjICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9f bmFtZSwJCQlcCisJCQkgICAgX19sZXZlbCwgX19mbGFncykJCQkJXAorCV9fc2V0X3NlY3Rpb25f Y29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUs IF9fbmFtZSwJCVwKKwkJCQkgX19sZXZlbCwgX19mbGFncywgX190eXBlKQkJXAorCV9fc2V0X3Nl Y3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsCVwKKwkJ CQlfX3N0cmluZ2lmeShfX2ZsYWdzKSwgX190eXBlKQorIyAgZW5kaWYKKworIyBlbmRpZiAvKiBM SU5LRVJfU0NSSVBUICovCisjZWxzZSAvKiBkZWZpbmVkKF9fQVNTRU1CTEVSX18pIHx8IGRlZmlu ZWQoX19BU1NFTUJMWV9fKSAqLworCisvKgorICogQXMgcGVyIGdjYydzIGRvY3VtZW50YXRpb24g YSBjb21tb24gYXNtIHNlcGFyYXRvciBpcyBhIG5ldyBsaW5lIGZvbGxvd2VkCisgKiBieSB0YWIg WzBdLCBpdCBob3dldmVyIHNlZW1zIHBvc3NpYmxlIHRvIGFsc28ganVzdCB1c2UgYSBuZXdsaW5l IGFzIGl0cworICogdGhlIG1vc3QgY29tbW9ubHkgZW1waXJpY2FsbHkgb2JzZXJ2ZWQgc2VtYW50 aWMgYW5kIGZvbGtzIHNlZW0gdG8gYWdyZWUKKyAqIHRoaXMgZXZlbiB3b3JrcyBvbiBTMzkwLiBJ biBjYXNlIHlvdXIgYXJjaGl0ZWN0dXJlIGRpc2FncmVlcyB5b3UgbWF5CisgKiBvdmVycmlkZSB0 aGlzIGFuZCBkZWZpbmUgeW91ciBvd24gYW5kIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIG1hY3Jvcy4K KyAqCisgKiBbMF0gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9CYXNpYy1Bc20u aHRtbCNCYXNpYy1Bc20KKyAqLworIyBpZm5kZWYgQVNNX0NNRF9TRVAKKyMgIGRlZmluZSBBU01f Q01EX1NFUAkiXG4iCisjIGVuZGlmCisKKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUKKyMgIGRl ZmluZSBzZXRfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWws IF9fZmxhZ3MpCVwKKwlfX3N0cmluZ2lmeShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rp b24sIF9fY29yZSwgX19uYW1lLAlcCisJCQkJCSAgICBfX2xldmVsLCBfX3N0cmluZ2lmeShfX2Zs YWdzKSkpIFwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisvKgorICogU29tZSBhcmNoaXRlY3R1 cmVzIChhcm0sIGFuZCBhdnIzMiBhcmUgdHdvIGV4YW1wbGVzIG9uIGtwcm9iZXMpIHNlZW0KKyAq IGN1cnJlbnRseSBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHR5cGUgWzBdIC0tIHRoaXMgY2FuIGJl IGFueSBvZiB0aGUKKyAqIG9wdGlvbmFsIGNvbnN0YW50cyBvbiBFTEY6CisgKgorICogQHByb2di aXRzIC0gc2VjdGlvbiBjb250YWlucyBkYXRhCisgKiBAbm9iaXRzIC0gc2VjdGlvbiBkb2VzIG5v dCBjb250YWluIGRhdGEgKGkuZS4sIHNlY3Rpb24gb25seSBvY2N1cGllcyBzcGFjZSkKKyAqIEBu b3RlIC0gc2VjdGlvbiBjb250YWlucyBkYXRhIHdoaWNoIGlzIHVzZWQgYnkgdGhpbmdzIG90aGVy IHRoYW4gdGhlIHByb2dyYW0KKyAqIEBpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBh cnJheSBvZiBwb2ludGVycyB0byBpbml0IGZ1bmN0aW9ucworICogQGZpbmlfYXJyYXkgLSBzZWN0 aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGZpbmlzaCBmdW5jdGlvbnMKKyAq IEBwcmVpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBhcnJheSBvZiBwb2ludGVycyB0 byBwcmUtaW5pdCBmdW5jdGlvbnMKKyAqCisgKiBBUk0gcmVxdWlyZXMgJSBpbnN0ZWFkIG9mIEAu CisgKgorICogQXQgbGVhc3QgYXMgcGVyIG5hc20gKHg4Ni94ODZfNjQgb25seSksIGluIHRoZSBh YnNlbmNlIG9mIHF1YWxpZmllcnMgdGhlCisgKiBkZWZhdWx0cyBhcmUgYXMgZm9sbG93czoKKyAq CisgKiBzZWN0aW9uIC50ZXh0ICAgIHByb2diaXRzICBhbGxvYyAgIGV4ZWMgICAgbm93cml0ZSAg YWxpZ24WCisgKiBzZWN0aW9uIC5yb2RhdGEgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAubHJvZGF0YSBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIG5vd3JpdGUgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmRhdGEgICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5sZGF0YSAgIHByb2diaXRz ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAuYnNzICAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxi c3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0 aW9uIC50ZGF0YSAgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NCAg ICB0bHMKKyAqIHNlY3Rpb24gLnRic3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0 ZSAgICBhbGlnbj00ICAgIHRscworICogc2VjdGlvbiAuY29tbWVudCBwcm9nYml0cyAgbm9hbGxv YyBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqIHNlY3Rpb24gb3RoZXIgICAgcHJvZ2JpdHMg IGFsbG9jICAgbm9leGVjICBub3dyaXRlICBhbGlnbj0xCisgKgorICogZ2FzIHNob3VsZCBoYXZl IHNlbnNpYmxlIGRlZmF1bHRzIGZvciBhcmNoaXRlY3R1cmVzLi4uCisgKgorICogWzBdIGh0dHA6 Ly93d3cubmFzbS51cy9kb2MvbmFzbWRvYzcuaHRtbAorICovCisjIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlX3R5cGUKKyMgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fZmxhZ3MsIF9fdHlwZSkJCQlcCisJX19z dHJpbmdpZnkoX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsCQlcCisJ CQkJCSAgICBfX25hbWUsIF9fbGV2ZWwsCQlcCisJCQkJCSAgICBfX3N0cmluZ2lmeShfX2ZsYWdz KSwJXAorCQkJCQkgICAgX190eXBlKSkJCQlcCisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworIyBp Zm5kZWYgcHVzaF9zZWN0aW9uX2NvcmUKKyMgIGRlZmluZSBwdXNoX3NlY3Rpb25fY29yZShfX3Nl Y3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlc CisJX19zdHJpbmdpZnkoX19wdXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwJCVwK KwkJCQkJX19uYW1lLAlfX2xldmVsLAkJXAorCQkJCQlfX3N0cmluZ2lmeShfX2ZsYWdzKSkpCQlc CisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworI2VuZGlmIC8qIGRlZmluZWQoX19BU1NFTUJMRVJf XykgfHwgZGVmaW5lZChfX0FTU0VNQkxZX18pICovCisjZW5kaWYgLyogX0FTTV9HRU5FUklDX1NF Q1RJT05fQ09SRV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u cy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCmluZGV4IDRkZjY0YTFmYzA5ZS4u YjE0NWFlOGQ5Y2JlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgK KysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCkBAIC0xLDYgKzEsOCBAQAogI2lm bmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8KICNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJ T05TX0hfCiAKKyNpbmNsdWRlIDxhc20vc2VjdGlvbi1jb3JlLmg+CisKIC8qIFJlZmVyZW5jZXMg dG8gc2VjdGlvbiBib3VuZGFyaWVzICovCiAKICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oIGIvaW5jbHVkZS9h c20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4IDA5NjhkMTNiMzg4NS4uNDgzZjYwYzQ1MWY5 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5j bHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC01NSw2ICs1NSw3IEBACiAjZW5kaWYK IAogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUu aD4KIAogLyogQWxpZ24gLiB0byBhIDggYnl0ZSBib3VuZGFyeSBlcXVhbHMgdG8gbWF4aW11bSBm dW5jdGlvbiBhbGlnbm1lbnQuICovCiAjZGVmaW5lIEFMSUdOX0ZVTkNUSU9OKCkgIC4gPSBBTElH Tig4KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0LmggYi9pbmNsdWRlL2xpbnV4L2lu aXQuaAppbmRleCA4ODVjM2U2ZDBmOWQuLjExNmUzMjYyMzMyYSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9pbml0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0LmgKQEAgLTEzMCw2ICsxMzAs MjQgQEAgaW50IF9faW5pdCBpbml0X3Jvb3Rmcyh2b2lkKTsKIGV4dGVybiBib29sIHJvZGF0YV9l bmFibGVkOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RFQlVHX1JPREFUQQorLyoqCisgKiBtYXJr X3JvZGF0YV9ybyAtIGltcGxlbWVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlv bnMKKyAqCisgKiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24g ZGVmaW5lIGEga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdf Uk9EQVRBLCBlbmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICog bWFya19yb2RhdGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQg LnRleHQgRUxGIHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0 byBwcmV2ZW50IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1 cC4gSXQgY2FuIGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4 ZWN1dGlvbgorICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIg dG8gaGVscCBhcmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQt b25seSB3aXRoCisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5 cGljYWxseSBmb2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBF TEYgc2VjdGlvbiBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4Cisg KiBsaW5rZXIgc2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0 ZXIgZnJlZWluZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3Qg aW5pdCB1c2Vyc3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsK ICNlbmRpZgogCkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1 ZzsKICNlbmRpZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2 ZWxzCisgKgorICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0 ZXJhdGVzIG92ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNh bGxzIGFsbCByb3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8g djIuNS4yLjMgTGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5p dAorICogZnVuY3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIu NS4yLjQgTGludXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNh bGwgc3Vic2VjdGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50 IGZ1bmN0aW9uYWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcw ODVgXworICogKHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNr d2FyZCBjb21wYXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0 byBkZXZpY2VfaW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2Yg YSBkZWRpY2F0ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRl ZCB0byBhbiBpbml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZl bCdzCisgKiBFTEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4g cHJpb3IgdG8gaGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVh Y2ggaW5pdGNhbGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIu CisgKgorICogLi4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dp dC9saW51eC9rZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFi N2UxNzA4NWM5NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJM WV9fCiAKLS8qCi0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkg aW50byBzZXBhcmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2Vj dGlvbnMgaXMgZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRz IGNvbXBhdGliaWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZp Y2UgaW5pdCBzdWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIg Zm9yIGRlZmluaXRpbmcgaW5pdCBsZXZlbHMKICAqCi0gKiBUaGUgYGlkJyBhcmcgdG8gX19kZWZp bmVfaW5pdGNhbGwoKSBpcyBuZWVkZWQgc28gdGhhdCBtdWx0aXBsZSBpbml0Y2FsbHMKLSAqIGNh biBwb2ludCBhdCB0aGUgc2FtZSBoYW5kbGVyIHdpdGhvdXQgY2F1c2luZyBkdXBsaWNhdGUtc3lt Ym9sIGJ1aWxkIGVycm9ycy4KKyAqIEBmbjogaW5pdCByb3V0aW5lCisgKiBAaWQ6IGluaXQgbGV2 ZWwKICAqCi0gKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHBvaW50ZXJzIGluIGluaXRj YWxsIHNlY3Rpb25zIHRoYXQgdGhlCi0gKiBrZXJuZWwgaXRlcmF0ZXMgYXQgcnVudGltZS4gVGhl IGxpbmtlciBjYW4gZG8gZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbgotICogYW5kIHJlbW92 ZSB0aGF0IGNvbXBsZXRlbHksIHNvIHRoZSBpbml0Y2FsbCBzZWN0aW9ucyBoYXZlIHRvIGJlIG1h cmtlZAotICogYXMgS0VFUCgpIGluIHRoZSBsaW5rZXIgc2NyaXB0LgorICogRGVmaW5lcyBhIGtl cm5lbCBpbml0aWFsaXphdGlvbiBsZXZlbC4gQSByZXNwZWN0aXZlIGxpbmtlciBzY3JpcHQgZW50 cnkKKyAqIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGUgaW5pdCBsZXZlbCBpcyBhY2NvdW50ZWQg Zm9yIGFuZCB0byBlbnN1cmUgc3ltYm9scworICogZXhpc3QgZm9yIGl0ZXJhdGluZyBvdmVyIGFs bCBmdW5jdGlvbnMgaW4gdGhlIGluaXQgbGV2ZWwuIEEgaW5pdCBsZXZlbAorICogcmVwcmVzZW50 cyBhIHNlcmllcyBvZiBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuCisgKgorICogT3JkZXJp bmcgd2l0aGluIGFuIGluaXRpYWxpemF0aW9uIGxldmVsIGlzIGRldGVybWluZWQgYnkgbGluayBv cmRlciwgc28KKyAqIGZvciBpbnN0YW5jZSBpZiBhIE1ha2VmaWxlIGhhZDo6CisgKgorICoJb2Jq LXkgKz0gZm9vLm8KKyAqCW9iai15ICs9IGJhci5vCisgKgorICogQW5kIGZvby5jOjoKKyAqCisg KglzdWJzeXNfaW5pdGNhbGwoZm9vX2luaXQpOworICoKKyAqIEFuZCBiYXIuYyBoYWQ6OgorICoK KyAqCXN1YnN5c19pbml0Y2FsbChiYXJfaW5pdCk7CisgKgorICogZm9vX2luaXQoKSB3b3VsZCBi ZSBjYWxsZWQgcHJpb3IgdG8gYmFyX2luaXQoKS4KKyAqCisgKiBOb3RlIHRoYXQgQGlkIGluIF9f ZGVmaW5lX2luaXRjYWxsKCkgYWxzbyBlbmFibGVzIG11bHRpcGxlIGluaXRjYWxscworICogdG8g YmUgY3JlYXRlZCB1c2luZyB0aGUgc2FtZSBoYW5kbGVyIGZvciBkaWZmZXJlbnQgaW5pdCBsZXZl bHMgd2l0aG91dAorICogY2F1c2luZyBkdXBsaWNhdGUtc3ltYm9sIGJ1aWxkIGVycm9ycy4KKyAq CisgKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHN0YXJ0IHN5bWJvbHMgdG8gaW5pdGNh bGwgbGV2ZWxzIGluc2lkZSBFTEYKKyAqIHNlY3Rpb25zLCB0aGUga2VybmVsIGluIHR1cm4gdXNl cyB0aGVzZSBzeW1ib2xzIHRvIGl0ZXJhdGUgb3ZlciBlYWNoIGluaXQKKyAqIGxldmVsIGF0IHJ1 bnRpbWUgd2l0aCBkb19pbml0Y2FsbF9sZXZlbCgpLiBUaGUgZW5kIG9mIGVhY2ggaW5pdCBsZXZl bCBpcworICogbWFya2VkIGJ5IHRoZSBzdWJzZXF1ZW50J3Mgc3ltYm9sJ3Mgc3RhcnQgYWRkcmVz cyB1bnRpbCB3ZSByZWFjaCB0aGUgc3ltYm9sCisgKiBgYF9faW5pdGNhbGxfZW5kYGAuIFRoZSBs aW5rZXIgY2FuIGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24gYW5kIGVhY2gKKyAqIGlu aXQgbGV2ZWwgc3RhcnQgc3ltYm9sIGNvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseSBpbiB0aGlz IHByb2Nlc3MsIHRvCisgKiBhdm9pZCB0aGlzIGVhY2ggaW5pdCBsZXZlbCBzdGFydCBzeW1ib2xz IG11c3QgYmUgbWFya2VkIGFzICdLRUVQKCknIGluIHRoZQorICogbGlua2VyIHNjcmlwdCB0byBh dm9pZCBhbnkgbGlua2VyIG9wdGltaXphdGlvbiBoZXVyaXN0aWMgb24gaW5pdGNhbGxzLgogICov Ci0KICNkZWZpbmUgX19kZWZpbmVfaW5pdGNhbGwoZm4sIGlkKSBcCiAJc3RhdGljIGluaXRjYWxs X3QgX19pbml0Y2FsbF8jI2ZuIyNpZCBfX3VzZWQgXAogCV9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdGNhbGwiICNpZCAiLmluaXQiKSkpID0gZm47CmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmggYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzcxYzcyN2JjZDEKLS0tIC9kZXYvbnVsbAor KysgYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKQEAgLTAsMCArMSw4NyBAQAorI2lmbmRlZiBf TElOVVhfU0VDVElPTlNfSAorI2RlZmluZSBfTElOVVhfU0VDVElPTlNfSAorLyoKKyAqIExpbnV4 IGRlLWZhY3RvIHNlY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEx1aXMgUi4gUm9k cmlndWV6IDxtY2dyb2ZAa2VybmVsLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5k ZXIgdGhlIHRlcm1zIG9mIGNvcHlsZWZ0LW5leHQgKHZlcnNpb24gMC4zLjEgb3IgbGF0ZXIpIGFz IHB1Ymxpc2hlZAorICogYXQgaHR0cDovL2NvcHlsZWZ0LW5leHQub3JnLy4KKyAqLworCisjaW5j bHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorCisj aWZuZGVmIF9fQVNTRU1CTFlfXworCisvKioKKyAqIERPQzogSW50cm9kdWN0aW9uCisgKgorICog TGludXggZGVmaW5lcyBhIHNldCBvZiBjb21tb24gaGVscGVycyB3aGljaCBjYW4gYmUgdXNlZCB0 byBhZ2FpbnN0IGl0cyB1c2UKKyAqIG9mIHN0YW5kYXJkIG9yIGN1c3RvbSBMaW51eCBzZWN0aW9u cywgdGhpcyBzZWN0aW9uIGlzIGRlZGljYXRlZCB0byB0aGVzZQorICogaGVscGVycy4KKyAqLwor CisvKioKKyAqIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UIC0gZ2V0IHNlY3Rpb24gYWxpZ25tZW50 CisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoKKyAqIEdpdmVzIHlvdSB0aGUgYWxpZ25t ZW50IGZvciB0aGUgc2VjdGlvbi4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0FMSUdOTUVO VChuYW1lKQlfX2FsaWdub2ZfXygqVk1MSU5VWF9TWU1CT0wobmFtZSkpCisKKy8qKgorICogTElO VVhfU0VDVElPTl9TVEFSVCAtIGdldCBhZGRyZXNzIG9mIHN0YXJ0IG9mIHNlY3Rpb24KKyAqCisg KiBAbmFtZTogc2VjdGlvbiBuYW1lCisgKgorICogVGhpcyBnaXZlcyB5b3UgdGhlIHN0YXJ0IGFk ZHJlc3Mgb2YgdGhlIHNlY3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVz cyBvZiB0aGUgZmlyc3QgZW50cnkuCisgKgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fU1RB UlQobmFtZSkJVk1MSU5VWF9TWU1CT0wobmFtZSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX0VO RCAtIGdldCBhZGRyZXNzIG9mIGVuZCBvZiB0aGUgc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIHNl Y3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVzcyBvZiB0aGUgZW5kIG9m IHRoZQorICogc2VjdGlvbi4gVGhpcyB3aWxsIG1hdGNoIHRoZSBzdGFydCBhZGRyZXNzIGlmIHRo ZQorICogc2VjdGlvbiBpcyBlbXB0eS4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0VORChu YW1lKQlWTUxJTlVYX1NZTUJPTChuYW1lIyNfX2VuZCkKKworLyoqCisgKiBERUNMQVJFX0xJTlVY X1NFQ1RJT04gLSBEZWNsYXJlcyBhIGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKgorICogQHR5cGU6 IHR5cGUgb2YgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqIEBuYW1lOiBjdXN0b20gc2VjdGlvbiBu YW1lCisgKgorICogRGVjbGFyZXMgYSByZWFkLXdyaXRlIGN1c3RvbSBMaW51eCBzZWN0aW9uCisg Ki8KKyNkZWZpbmUgREVDTEFSRV9MSU5VWF9TRUNUSU9OKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0 ZXJuIHR5cGUgVk1MSU5VWF9TWU1CT0wobmFtZSlbXSwgXAorCQkgICAgIFZNTElOVVhfU1lNQk9M KG5hbWUjI19fZW5kKVtdCisKKy8qKgorICogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPIC0gRGVj bGFyZXMgYSByZWFkLW9ubHkgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlw ZSBvZiBjdXN0b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUK KyAqCisgKiBEZWNsYXJlcyBhIHJlYWQtb25seSBjdXN0b20gTGludXggc2VjdGlvbgorICovCisj ZGVmaW5lIERFQ0xBUkVfTElOVVhfU0VDVElPTl9STyh0eXBlLCBuYW1lKQkJCQlcCisJIGV4dGVy biBjb25zdCB0eXBlIFZNTElOVVhfU1lNQk9MKG5hbWUpW10sCQkJXAorCQkJICAgVk1MSU5VWF9T WU1CT0wobmFtZSMjX19lbmQpW10KKworI2RlZmluZSBfX1NFQ1RJT05fQ09SRShzZWN0aW9uLCBj b3JlLCBuYW1lLCBsZXZlbCkJCQlcCisJI3NlY3Rpb24gIi4uIiAjY29yZSAiLiIgI25hbWUgIi4i ICNsZXZlbAorCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfTElOVVhf U0VDVElPTlNfSCAqLwotLSAKMi4xMC4xCgotLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtc2giIGluCnRoZSBib2R5IG9mIGEg bWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8g YXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA== From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Thu, 22 Dec 2016 02:37:57 +0000 Subject: [PATCH v5 01/14] generic-sections: add section core helpers Message-Id: <20161222023811.21246-2-mcgrof@kernel.org> List-Id: References: <1471642454-5679-1-git-send-email-mcgrof@kernel.org> <20161222023811.21246-1-mcgrof@kernel.org> In-Reply-To: <20161222023811.21246-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1254" Content-Transfer-Encoding: base64 To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcnJlZC4gVW5pZnkgdGhpcwpk b2N1bWVudGF0aW9uIGluIGEgY2VudHJhbCBwbGFjZSBhbmQgcHJvdmlkZSBoZWxwZXJzIHRvCmJ1 aWxkIGN1c3RvbSBMaW51eCBzZWN0aW9ucy4KClRoaXMgYWxzbyBnZW5lcmFsaXplcyBzZWN0aW9u cyBjb2RlIHRvIGVuYWJsZSBhdm9pZGluZwptb2RpZnlpbmcgdGhlIGxpbmtlciBzY3JpcHRzIHdo ZW4gd2Ugd2FudCB0byBhZGQgbmV3CmN1c3RvbSBMaW51eCBzZWN0aW9ucy4gSW4gb3JkZXIgdG8g bWFrZSB0aGlzIGdlbmVyYWxseQp1c2VmdWwgd2UgbmVlZCB0byBlbnN1cmUgYWxsIGFyY2hpdGVj dHVyZXMgY2FuIG1ha2UgdXNlIG9mCmNvcmUgc2VjdGlvbiBoZWxwZXJzIGJ1dCB0aGF0IHRoZXkg Y2FuIGFsc28gb3ZlcnJpZGUgc2hvdWxkCnRoaXMgYmUgbmVlZGVkLiBJbnN0ZWFkIG9mIHJlbHlp bmcgb24gc2VjdGlvbi5oIHRoaXMgYWRkcwphIHNlY3Rpb25zLWNvcmUuaCBzaW5jZSB0aGlzIHdp bGwgYmUgdGFyZ2V0dGVkIHRvIGJlIHNhZmUKdG8gYmUgdXNlZCBvbiBhc20gY29kZSwgbGlua2Vy IHNjcmlwdHMgYW5kIEMgY29kZS4KCnY1OgoKbyBIdWdlIGRvY3VtZW50YXRpb24gcmV2YW1wIGJh c2VkIG9uIGEgY2FyZWZ1bCByZXZpZXcgb2YgdGhlIEVMRgogIHNwZWNpZmljYXRpb25zLiBJbmNs dWRlcyBkb2N1bWVudGF0aW9uIG5vdyBhbHNvIGFib3V0IHVzYWdlIG9mCiAgdHdvIGRvdHMgKC4u KSB3aGVuIHByZWZpeGluZyBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucy4KCm8gUmVwbGFj ZSBtYWNyb3MgZm9yIHNlY3Rpb25zIG5hbWVzIGluIGZhdm9yIG9mIGp1c3QgdXNpbmcKICB0aGUg c2VjdGlvbiBuYW1lcyBleHBsaWNpdGx5IGluIHRoZSBsaW5rZXIgc2NyaXB0LiBUaGlzIGlzCiAg cGVyaGFwcyBtb3JlIHdvcmsgdG8gZ3JlcCBidXQgdGhpcyBpcyB3aGF0IGZvbGtzIHNlZW0gdG8K ICBjdXJyZW50bHkgcHJlZmVyLgoKbyBGaXggLnRleHQgYW5kIC5yb2RhdGEgZG9jdW1lbnRhdGlv biB0byBleHBsYWluIG1lbW9yeSBwcm90ZWN0aW9uCiAgc3RyYXRlZ2llcyB3aGljaCBhcmNoaXRl Y3R1cmVzIGNhbiBlbWJyYWNlIHVwb24gaW5pdGlhbGl6YXRpb24KICAoZG9jdW1lbnRzIENPTkZJ R19ERUJVR19ST0RBVEEgYW5kIG1hcmtfcm9kYXRhX3JvKCkpCgpvIFNraXAgdGhlICdMaW51eCBz ZWN0aW9uIG9yZGVyaW5nJyBkb2N1bWVudGF0aW9uIHNlY3Rpb24sIHdlJ2xsIGluc3RlYWQKICBh ZGQgdGhpcyBvbiBzdWJzZXF1ZW50IHBhdGNoIHdoaWNoIHdpbGwgZXhwYW5kIG9uIGl0IGNvbnNp ZGVyYWJseQoKbyBEcm9wcGVkIHRyZWUgb24gTUFJTlRBSU5FUlMgLS0gYXMgcGVyIGRpc2N1c3Np b25zIHdpdGggQXJuZCwgaHBhIGFuZAogIEpvc2gsIGl0cyBlYXNpZXIgdG8ganVzdCBsZXQgY2hh bmdlcyBmb3Igc2VjdGlvbnMgZ28gaW4gdGhyb3VnaCB0aGUKICByZXNwZWN0aXZlIHRyZWUgdGhh dCBuZWVkcyB0aGUgY2hhbmdlcy4KCm8gRml4IHR5cG9zIG9uIGRvY3VtZW50YXRpb24KCm8gRHJv cHBlZCBTRUNUSU9OX0FMTCgpLCBfX1NFQ1RJT05fQ09SRSgpLCBTRUNUSU9OX0NPUkVfQUxMKCkg bWFjcm9zCiAgc2luY2Ugd2UgYXJlIGZhdm9yaW5nIHVzaW5nIGV4cGxpY2l0IHNlY3Rpb24gbmFt ZXMuIFRoZXNlIGFyZQogIHVzZWxlc3MgaWYgd2UgYXJlIGJlaW5nIGV4cGxpY2l0LgoKbyBEcm9w IExJTlVYX1NFQ1RJT05fU0laRSgpLCBMSU5VWF9TRUNUSU9OX0VNUFRZKCkgaW4gZmF2b3Igb2Yg aGF2aW5nCiAgc2VjdGlvbiByYW5nZXMgYW5kIGxpbmtlciB0YWJsZXMgZGVmaW5lIHRoZWlyIG93 biwgdG8gYXZvaWQgY29uZnVzaW9uCiAgYW5kIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlLgoKbyBB ZGQgX19kZWZpbmVfaW5pdGNhbGwoKSBkb2N1bWVudGF0aW9uIGFuZCBhIHNtYWxsIHNlY3Rpb24g ZGVzY3JpYmluZwogIG91ciBjdXJyZW50IGluaXRjYWxsIGxldmVscy4gVGhpcyBzaG91bGQgaGVs cCBhbHNvIGNsYXJpZnkgd2hhdCB3YXMKICBtZWFudCBhYm91dCBrZWVwaW5nIGJhY2t3YXJkIGNv bXBhdGlibGl0eS4KCnY0OgoKbyBQb3J0IHRvIHNoaW55IG5ldyBzcGhpbnggZG9jdW1lbnRhdGlv biBmb3JtYXQKCm8gZml4IGEgdW5pY29yZTMyIGJ1aWxkLCB0dXJucyBvdXQgdGhpcyBhY3R1YWxs eSBmaXhlcyB1bmljb3JlMzIKICBkZWZjb25maWcgYnVpbGRzIHdoaWNoIHdlcmUgZmFpbGluZyBm b3IgYSBsb25nIHdoaWxlLiB1bmljb3JlMzIKICBkb2VzIG5vdCBzZWVtIHRvIGdyb2sgd2VsbCB0 aGUgdHlwZSBwYXNzZWQgb24gYSBzZWN0aW9uIGRlY2xhcmF0aW9uLAogIHRoaXMgaWdub3JlcyBp dC4KCm8gVXNlIFZNTElOVVhfU1lNQk9MKCkgaW4gbW9yZSB1c2VyIHN5bWJvbHMgKGV4dGVybiBD IGNvZGUpLCBub3QgZG9pbmcKICB0aGlzIHdhcyBjYXVzaW5nIGZpbmFsIGxpbmtlciBpc3N1ZXMg d2l0aCBibGFja2ZpbiAtLSB0aGlzIGlzCiAgYSBDT05GSUdfSEFWRV9VTkRFUlNDT1JFX1NZTUJP TF9QUkVGSVg9eSBhcmNoaXRlY3R1cmUuIFRoZSBvdGhlciBvbmUKICBiZWluZyBtZXRhdGFnLiBt ZXRhdGFnIGlzIG5vdCBzdXBwb3J0ZWQgb24gMC1kYXkgc28gSSBjYW5ub3QgY29uZmlybQogIGNv bXBpbGF0aW9uIHRoZXJlLgoKbyBBZGRlZCBTRUNUSU9OX0NPUkUoKSBmb3IgQyBjb2RlLCB1c2Vk IGxhdGVyIGJ5IF9fTElOVVhfUkFOR0UoKQoKbyBTaW5jZSBTRUNUSU9OX0NPUkUoKSBpcyBkZWZp bmVkIGZvciBsaW5rZXIgc2NyaXB0IGFuZCBDIGNvZGUsIHNoYXJlCiAgdGhlIHNhbWUgaGVscGVy IGFuZCBqdXN0IHVzZSBhIF9fc3RyaW5naWZ5KCkgZm9yIHRoZSBDIGNvZGUgYXMgaXMgZG9uZQog IGZvciB0aGUgb3RoZXIgQyBoZWxwZXJzLgoKbyBtb3ZlIGdlbmVyaWMgc2VjdGlvbnMgdG8gYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggaW5zdGVhZC4KICBQb3dlclBDIGNvbXBpbGF0aW9uIGJs b3dzIHVwIGlmIGFzbS9qdW1wX2xhYmVscy5oIGdldHMKICBzZWN0aW9uLmggaW5jbHVkZWQsIGZp eGluZyB0aGlzIGlzIG5vdCBpbiBhbnkgd2F5IGVhc3kuCiAgVGhlIGxpc3Qgb2YgaXNzdWVzIGFy ZSBlbmRsZXNzLiBNb3ZpbmcgbmV3IGRhdGEgdG8gYSBuZXcKICBzaW1wbGUgZmlsZSByZXNvbHZl cyB0aGlzLgoKbyBzaW5jZSB0aGluZ3MgYXJlIG5vdyBpbiBhc20tZ2VuZXJpYy9zZWN0aW9uLWNv cmUuaCB0aGUKICBndWFyZCBjaGFuZ2VzIG9uIGFzbS1nZW5lcmljL3NlY3Rpb25zLmggYW5kIGVh Y2ggYXJjaGl0ZWN0dXJlCiAgc2VjdGlvbnMuaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZAoKbyBHaXZl IGdlbmVyaWMgc2VjdGlvbnMgc29tZSBtYWludGFpbmVyIGxvdmUsIHRoYXQgY2hhbmdlIGlzCiAg QWNrZWQtYnkgQXJuZCBCZXJnbWFubiwgSm9zaCBhbmQgaHBhLgoKbyBBIGZldyBjaGVja3BhdGNo LnBsIHN0eWxlIGZpeGVzCgpvIEFzIHN1Z2dlc3RlZCBieSBKYW1lcyBIb2dhbiB1c2UgZ2VuZXJp Yy15IHRvIGNvcHkgZ2VuZXJpYwogIGhlYWRlciBmaWxlcyBvbiBhcmNoaXRlY3R1cmVzIHRoYXQg ZG8gbm90IGhhdmUgYSBzZWN0aW9ucy5oCiAgaW5zdGVhZCBvZiB3cml0aW5nIGEgc2ltcGxlIGZp bGUgb25seSB0byBpbmNsdWRlIHRoZSBnZW5lcmljIG9uZS4KCnYzOgoKbyBhZGQgbWlzc2luZyBz ZWN0aW9ucy5oIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZGlkIG5vdAogIGhhdmUgaXQKCm8gbW92 ZSBnZW5lcmljIHNlY3Rpb25zIHRvIGFzbS1nZW5lcmljL3NlY3Rpb25zLmgKCm8gYWRkIGdlbmVy aWMgYXNtIGhlbHBlcnMgc2VjdGlvbl90eXBlKCksIHNlY3Rpb25fdHlwZV9hc210eXBlKCksCiAg cHVzaF9zZWN0aW9uX3R5cGUoKSAtLSB0aGVzZSBoZWxwZXJzIGVuYWJsZSBlYXN5IHVzZSBmb3IK ICBmb3IgbGF0ZXIgZGVjbGFyaW5nIGFuZCB1c2luZyBvZiBjdXN0b20gbGludXggc2VjdGlvbnMg dXNpbmcKICBtb3JlIHN0YW5kYXJkIEFQSXMgaW4gYm90aCBDIGNvZGUsIGFzbSBjb2RlIChDIGFz bSBjYWxscywgb3IKICBhc20gZmlsZXMpLCBlbmFibGluZyBmdXR1cmUgc3RhbmRhcmRpemVkIHNl Y3Rpb24gdHlwZXMgdG8KICBiZSBtb3JlIGltbWVkaWF0ZWx5IGFjY2Vzc2libGUgdG8gYXNtIGNv ZGUsIG5vdCBqdXN0IEMgY29kZS4KICBOb3RlIGZvciBBU01fQ01EX1NFUCB3ZSB1c2UgYnkgZGVm YXVsdCAiXG4iLCBhcmNoaXRlY3R1cmVzIG5lZWRlZAogIHRvIG92ZXJyaWRlIGNhbiBkbyBzbyBv biB0aGVpciBvd24gc2VjdGlvbnMuaCBwcmlvciB0byBpbmNsdXNpb24KICBvZiBhc20tZ2VuZXJp Yy9zZWN0aW9ucy5oCgpTaWduZWQtb2ZmLWJ5OiBMdWlzIFIuIFJvZHJpZ3VleiA8bWNncm9mQGtl cm5lbC5vcmc+Ci0tLQogRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCAgICAgfCAxMDUg KysrKysrKysrKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5ICAgICAgICAgICAgfCAg IDQgKwogRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QgICAgICAgICAgfCAgMTcgKysK IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCAgIHwgMTQ4ICsrKysrKysr KysrKysrCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiAr KwogYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJj aC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm0v aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9hdnIzMi9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkICAgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwog YXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9p YTY0L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tMzJyL2lu Y2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tNjhrL2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9L YnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgfCAgIDEgKwogYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICAgfCAgIDEgKwogYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg fCAgIDEgKwogYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEg KwogYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgfCAgIDEgKwogYXJj aC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9wb3dl cnBjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zMzkwL2luY2x1 ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zY29yZS9pbmNsdWRlL2Fz bS9LYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQg ICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAg ICAgICAgICAgfCAgIDEgKwogYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAg ICAgfCAgIDEgKwogYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICAgfCAg IDEgKwogYXJjaC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggfCAgMTkgKysK IGFyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gv eHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmggICAgICAgIHwgMzA3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oICAgICAgICAgICAgfCAg IDIgKwogaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oICAgICAgICAgfCAgIDEgKwog aW5jbHVkZS9saW51eC9pbml0LmggICAgICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKy0t CiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmggICAgICAgICAgICAgICAgICB8ICA4NyArKysrKysr KysKIDQyIGZpbGVzIGNoYW5nZWQsIDgwOSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24tY29yZS5yc3QKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKCmRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CmluZGV4IGNi NWQ3NzY5OWM2MC4uNzFlMDMwNWMwMzZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2luZGV4 LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2luZGV4LnJzdApAQCAtNTcsNiArNTcsNyBAQCBuZWVk ZWQpLgogICAgbWVkaWEvaW5kZXgKICAgIGdwdS9pbmRleAogICAgc2VjdXJpdHkvaW5kZXgKKyAg IHNlY3Rpb25zL2luZGV4CiAgICBzb3VuZC9pbmRleAogICAgY3J5cHRvL2luZGV4CiAKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMGVjZjkxMDRhYWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlv bi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdApAQCAtMCwwICsxLDEwNSBAQAorPT09PT09PT09PT0K K0VMRiBzZWN0aW9uIGJhY2tncm91bmQKKz09PT09PT09PT09CisKK0Fib3V0Cis9PSsKK1RoZSBw dXJwb3NlIG9mIHRoaXMgY2hhcHRlciBpcyB0byBoZWxwIHRob3NlIG5vdCBmYW1pbGlhciB3aXRo IEVMRiB0byBicnVzaCB1cAordGhlIGxhdGVzdCBFTEYgc3BlY2lmaWNhdGlvbnMgaW4gb3JkZXIg dG8gaGVscCB1bmRlcnN0YW5kIGhvdyBMaW51eCB1c2VzIGFuZAorZGVmaW5lcyBpdHMgb3duIEVM RiBzZWN0aW9ucy4KKworU3RhbmRhcmRpemVkIEVMRgorPT09PT09PT0KKworVGhlIGZpcnN0IHB1 YmxpY2F0aW9uIGRvY3VtZW50aW5nIEVMRiB3YXMgVU5JWCBTeXN0ZW0gTGFib3JhdG9yaWVzJyAo VVNMKQorKlN5c3RlbSBWIFJlbGVhc2UgNCBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlKiAo YFNSVjQgQUJJYF8pIHNwZWNpZmljYXRpb24uCitPcmlnaW5hbGx5IEVMRiB3YXMgb25seSBhIHNt YWxsIHBhcnQgb2YgdGhlIFNSVjQgQUJJLCB3aXRoIHRpbWUgaG93ZXZlciBuZXcKK3NwZWNpZmlj YXRpb25zIG9ubHkgcHV0IGZvY3VzIG9uIEVMRiwgc3VjaCB3YXMgdGhlIGNhc2Ugb2YgdGhlICpU SVMgUG9ydGFibGUKK0Zvcm1hdHMgU3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDEuMiogKGBUSVMgMS4y YF8pLiBBcyBvZiBUSVMgMS4yLCBFTEYgd2FzCitzdXBwbGVtZW50ZWQgd2l0aCBwcm9jZXNzb3Ig c3BlY2lmaWMgRUxGIGFkZGVuZHVtcywgYXZhaWxhYmxlIG9uIHRoZSAqTGludXgKK0ZvdW5kYXRp b24gcmVmZXJlbmNlZCBzcGVjaWZpY2F0aW9uIHBhZ2UqIChgTEYgcmVmIHBhZ2VgXykuIFRoZSBs YXRlc3QgRUxGCitzcGVjaWZpY2F0aW9uIGlzIHRoZSAqU3lzdGVtIFYgQXBwbGljYXRpb24gQmlu YXJ5IEludGVyZmFjZSAtIERSQUZUIC0gMjQgQXByaWwKKzIwMDEqIChgZ2FiaTRgXykuCisKKy4u IF9TUlY0IEFCSTogaHR0cDovL3d3dy5zY28uY29tL2RldmVsb3BlcnMvZGV2c3BlY3MvZ2FiaTQx LnBkZgorLi4gX1RJUyAxLjI6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZWxm LnBkZgorLi4gX0xGIHJlZiBwYWdlOiBodHRwczovL3JlZnNwZWNzLmxpbnV4YmFzZS5vcmcvCisu LiBfZ2FiaTQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYvZ2FiaTQrL2NvbnRl bnRzLmh0bWwKKworRUxGIHZpZXdzIG9uIExpbnV4Cis9PT09PT09PT0KKworVGhlcmUgYXJlIHR3 byB2aWV3cyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5zcGVjdGluZyBkYXRhIGluIGFuIEVMRiBm aWxlLCBhCitMaW5raW5nIHZpZXcsIGFuZCBhbiBFeGVjdXRpb24gdmlldy4gQSBTZWN0aW9uIEhl YWRlciBUYWJsZSBlbmFibGVzIG9uZSB0bworZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBM aW5raW5nIHZpZXcgd2hpbGUgYSBQcm9ncmFtIEhlYWRlciBUYWJsZSBlbmFibGVzCitvbmUgdG8g ZGVzY3JpYmUgYW4gb2JqZWN0IHVzaW5nIHRoZSBFeGVjdXRpb24gdmlldy4gVGhlIHZpZXdzIGFy ZSBub3QgbXV0dWFsbHkKK2V4Y2x1c2l2ZS4gRm9yIGludGFuY2UsIHZtbGludXggY2FuIGJlIHZp ZXdlZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExp bmtpbmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24K K3ZpZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1 dGlvbiB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhh dCB2bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtl cm5lbCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3Qg ZmlsZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtp bmcgdmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxl CitzZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBz ZWN0aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhp cyBpcyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1 Y3QgZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxl cyB0aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVz IGhhdmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25z LgorCitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92 aWRlIGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0 byB0aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2 NC1iaXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rp b24gYXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nzb3IKK3NwZWNp ZmljYXRpb24gaWYgdW5zdXJlLgorCitJdHMgd29ydGggZWxsYWJvcmF0aW5nIG9uIHRoZSBsaW1p dGF0aW9ucyBvbiB0aGUgbmFtZSBvZiBhbiBFTEYgc2VjdGlvbjoKK0VMRiBzZWN0aW9uIG5hbWVz IGFyZSBzdG9yZWQgYXMgc3RyaW5ncyBhcyBwZXIgdGhlIEVMRiBzcGVjaWZpY2F0aW9uLCBhbmQK K2FzIGNhbiBiZSBleHBlY3RlZCwgdGhlc2UgZG9uJ3QgaGF2ZSBleHBsaWNpdCBsaW1pdGF0aW9u cy4gVGhlIGltcGxpY2l0CitsaW1pdGF0aW9uIHRoZW4gZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBh biBFTEYgb2JqZWN0IGZpbGUgYW5kIEVMRiBzZWN0aW9uLgorCitJZiB1c2luZyByZWFsbHkgbGFy Z2Uga2VybmVscyBvciBvYmplY3RzIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBzZWN0aW9ucyBvbmUK K3dvdWxkIHN0aWxsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEVMRiBsb2FkZXIgaW4gY2hhcmdlIG9m IGxvYWRpbmcgdGhlIExpbnV4CitrZXJuZWwgaXMgcHJvcGVybHkgdXBkYXRlZCB0byBoYW5kbGUg Y29waW5nIHdpdGggdGhlIGxhdGVzdCBFTEYgZXh0ZW5zaW9ucy4KKworICAgLi4gZmxhdC10YWJs ZTo6IExpbWl0YXRpb25zIG9uIEVMRiBTZWN0aW9ucworCisgICAgICAqIC0gU2VjdGlvbiBhdHRy aWJ1dGUKKyAgICAgICAgLSAzMi1iaXQKKyAgICAgICAgLSA2NC1iaXQKKworICAgICAgKiAtIEVM RiBzZWN0aW9uIG5hbWUKKyAgICAgICAgLSBTaXplIG9mIGFuIEVMRiBzZWN0aW9uCisgICAgICAg IC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorCisgICAgICAqIC0gU2l6ZSBvZiBhbiBFTEYgc2Vj dGlvbgorICAgICAgICAtIDQgR2lCCisgICAgICAgIC0gMTYgRWlCCisKKyAgICAgICogLSBNYXgg bnVtYmVyIG9mIHNlY3Rpb25zIGluIGFuIG9iamVjdCBmaWxlCisgICAgICAgIC0gNCBHaUVudHJp ZXMgKDQyOTQ5NjcyOTYpCisgICAgICAgIC0gMTYgRWlFbnRyaWVzICgxODQ0Njc0NDA3MzcwOTU1 MTYxNikKKworUHJvZ3JhbSBzcGVjaWZpYyBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT09Kwor VGhlIEVMRiBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgYSBzZWN0aW9uIHR5cGUgdG8gYmUgc3Bl Y2lmaWVkIGFzCisqUHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9uKiwgZGVmaW5lZCBhcyBgYFNIVF9Q Uk9HQklUU2BgLiBUaGlzIHNlY3Rpb25zIHR5cGUKK2VuYWJsZXMgcHJvZ3JhbXMgdG8gY3VzdG9t aXplIHNlY3Rpb25zIGZvciB0aGVpciBvd24gdXNlLiBJbiBhc3NlbWJseSB0aGlzCitzcGVjaWZp ZWQgYGBAcHJvZ2JpdHNgYCBvbiBtb3N0IGFyY2hpdGVjdHVyZXMsIG9uIEFSTSB0aGlzIGlzIGBg JXByb2diaXRzYGAuCisKK2BgU0hUX1BST0dCSVRTYGAgaXMgdXNlZCBieSBMaW51eCBmb3IgZGVm aW5pbmcgYW5kIHVzaW5nIExpbnV4IEVMRiBzZWN0aW9ucy4KKworU3BlY2lhbCBFTEYgU2VjdGlv bnMKKz09PT09PT09PT0KKworVGhlIEVMRiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgKlNwZWNpYWwg RUxGIFNlY3Rpb25zKiBvbiBjaGFwdGVyIDQgKGBnYWJpNAorY2g0YF8pLiBUaGVzZSBhcmUgZGVm aW5lZCBhcyBzZWN0aW9ucyB3aGljaCBob2xkIHByb2dyYW0gYW5kIGNvbnRyb2wKK2luZm9ybWF0 aW9uLiBPZiB0aGVzZSBzZWN0aW9ucywgYSBmZXcgaGF2ZSB0aGUgc2VjdGlvbiB0eXBlIGFzCitg YFNIVF9QUk9HQklUU2BgLiBUaGlzIGVuYWJsZXMgTGludXggdG8gKmZ1cnRoZXIgY3VzdG9taXpl KiB1c2Ugb2YgdGhlIHNlY3Rpb24KK2JleW9uZCB3aGF0IHRoZSBFTEYgc3BlY2lmaWNhdGlvbiBz dWdnZXN0cy4KKworLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3Jn L2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFsX3NlY3Rpb25zCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25z L2NvbmYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWExYzU3 NTk1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkK QEAgLTAsMCArMSw0IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04OyBtb2RlOiBweXRob24gLSotCisK K3Byb2plY3QgPSAnTGludXggS2VybmVsIEVMRiBzZWN0aW9ucycKK2h0bWxfc2VhcmNoX2xhbmd1 YWdlID0gJ2VuJwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmYzNzUxMWVmMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3Vt ZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0CkBAIC0wLDAgKzEsMTcgQEAKKz09PT09PT09PT09 PStMaW51eCBLZXJuZWwgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT0rCitUaGlzIGJvb2sgZG9j dW1lbnRzIHRoZSBkaWZmZXJlbnQgRUxGIHNlY3Rpb25zIHVzZWQgb24gdGhlIExpbnV4IGtlcm5l bC4KK1dlIHN0YXJ0IG9mZiBieSBwcm92aWRpbmcgcmVmZXJlbmNlcyB0byBob3cgRUxGIHdhcyBz dGFuZGFyZGl6ZWQsIHJlZmVyZW5jZXMKK3RvIHRoZSBzdGFuZGFyZHMgb24gRUxGIHNlY3Rpb25z LCByZXZpZXcgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLCBhbmQKK2ZpbmFsbHkgaG93IExp bnV4IHVzZXMgRUxGIHNlY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwuIENlcnRhaW4gaW1wb3J0 YW50CitMaW51eCBFTEYgc2VjdGlvbnMgYXJlIGRvY3VtZW50ZWQgY2FyZWZ1bGx5OiB3ZSBkZXNj cmliZSB0aGUgZ29hbCBvZiB0aGUKK0VMRiBzZWN0aW9uLCBhbmQgYWRkcmVzcyBjb25jdXJyZW5j eSBjb25zaWRlcmF0aW9ucyB3aGVuIGFwcGxpY2FibGUuIEEgZmV3Citjb21tb24gYSBzZXQgb2Yg TGludXggaGVscGVycyBmb3IgRUxGIHNlY3Rpb25zIGFyZSBhbHNvIGRvY3VtZW50ZWQuCisKKy4u IHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiA0CisKKyAgIGJhY2tncm91bmQKKyAgIHNlY3Rpb24t Y29yZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0 IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM1ODE1YTBkOWIzCi0tLSAvZGV2L251bGwKKysr IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0CkBAIC0wLDAgKzEsMTQ4 IEBACis9PT09PT09PT09PT09PT09PStMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9u cworPT09PT09PT09PT09PT09PT0rCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJp Yy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2Vj dGlvbnMKKworTGludXggbGlua2VyIHNjcmlwdAorPT09PT09PT09KworLi4ga2VybmVsLWRvYzo6 IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGxpbmtl ciBzY3JpcHQKKworTWVtb3J5IHByb3RlY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJu ZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTWVt b3J5IHByb3RlY3Rpb24KKworbWFya19yb2RhdGFfcm8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IG1h cmtfcm9kYXRhX3JvCisKKy5yb2RhdGEKKy0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucm9kYXRhCisKKy50ZXh0Cist LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgK KyAgIDpkb2M6IC50ZXh0CisKKy5kYXRhCistLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZGF0YQorCitMaW51 eCAuaW5pdFwqIHNlY3Rpb25zCis9PT09PT09PT09PQorCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogTGludXggaW5pdCBzZWN0aW9u cworCisuaW5pdC50ZXh0CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmluaXQudGV4dAorCisuaW5pdC5kYXRh CistLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u LWNvcmUuaAorICAgOmRvYzogLmluaXQuZGF0YQorCisuaW5pdC5yb2RhdGEKKy0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5pbml0LnJvZGF0YQorCitJbml0Y2FsbCBsZXZlbHMKKy0tLS0tLS0tLS0tLS0tLQor Li4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZG9jOiBJbml0Y2FsbCBs ZXZlbHMKKworLmluaXRjYWxsCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGlu Y2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0Y2FsbAorCitf X2RlZmluZV9pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L2luaXQuaAorICAgOmZ1bmN0aW9uczogX19kZWZpbmVfaW5pdGNhbGwKKworTGlu dXggLmV4aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1 ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGV4aXQgc2VjdGlv bnMKKworLmV4aXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LnRleHQKKworLmV4aXQuZGF0 YQorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5leGl0LmRhdGEKKworLmV4aXRjYWxsLmV4aXQKKy0tLS0tLS0t LS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUu aAorICAgOmRvYzogLmV4aXRjYWxsLmV4aXQKKworTGludXggLnJlZlwqIHNlY3Rpb25zCis9PT09 PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IExpbnV4IHJlZmVyZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworCisucmVmLnRl eHQKKy0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlv bi1jb3JlLmgKKyAgIDpkb2M6IC5yZWYudGV4dAorCisucmVmLmRhdGEKKy0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6 IC5yZWYuZGF0YQorCisucmVmLnJvZGF0YQorLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVmLnJvZGF0YQor CitHZW5lcmljIExpbnV4IGtlcm5lbCBzZWN0aW9uIGhlbHBlcnMKKz09PT09PT09PT09PT09PT09 PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpkb2M6IEludHJvZHVjdGlvbgorCitMSU5VWF9TRUNUSU9O X0FMSUdOTUVOVAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NFQ1RJT05fQUxJR05N RU5UCisKK0xJTlVYX1NFQ1RJT05fU1RBUlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6IExJTlVYX1NF Q1RJT05fU1RBUlQKKworTElOVVhfU0VDVElPTl9FTkQKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBr ZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5V WF9TRUNUSU9OX0VORAorCitERUNMQVJFX0xJTlVYX1NFQ1RJT04KKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0 aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OCisKK0RFQ0xBUkVfTElOVVhfU0VDVElPTl9STwor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9z ZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggZDBiMmI1MDcwNWJkLi4zMDg4 MjZmNTA5NGIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC01 NDIyLDYgKzU0MjIsMTggQEAgUzoJU3VwcG9ydGVkCiBGOglkcml2ZXJzL2Jhc2UvcG93ZXIvZG9t YWluKi5jCiBGOglpbmNsdWRlL2xpbnV4L3BtX2RvbWFpbi5oCiAKK0dFTkVSSUMgU0VDVElPTlMK K006CSJMdWlzIFIuIFJvZHJpZ3VleiIgPG1jZ3JvZkBrZXJuZWwub3JnPgorTToJSm9zaCBQb2lt Ym9ldWYgPGpwb2ltYm9lQHJlZGhhdC5jb20+CitNOgkiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0 b3IuY29tPgorTDoJbGludXgtYXJjaEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0 aW9uLWNvcmUuaAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCitGOglpbmNsdWRl L2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKK0Y6CURvY3VtZW50YXRpb24vc2VjdGlvbnMvc2Vj dGlvbi1jb3JlLnJzdAorCiBHRU5FUklDIFVJTyBEUklWRVIgRk9SIFBDSSBERVZJQ0VTCiBNOgki TWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CiBMOglrdm1Admdlci5rZXJuZWwu b3JnCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYWxw aGEvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGJmODQ3NWNlODVlZS4uNTQyMjgyN2YxNTg1IDEw MDY0NAotLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2FscGhh L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJj aC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMu aAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcmMvaW5j bHVkZS9hc20vS2J1aWxkCmluZGV4IGMzMzI2MDQ2MDZkZC4uN2IyY2IzZGVhNWZjIDEwMDY0NAot LS0gYS9hcmNoL2FyYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcmMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC01MSwzICs1MSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMt eSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4 b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2FybS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZWZi MjE3NTdkNDFmLi45YjY5YTIyYTlhZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQxLDMgKzQxLDQg QEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiAKIGdlbmVyYXRlZC15ICs9IG1hY2gtdHlwZXMu aAogZ2VuZXJhdGVkLXkgKz0gdW5pc3RkLW5yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA4MzY1YTg0YzI2NDAuLjAwYWNlNWU4MjZmMSAxMDA2 NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25l ZC5oCiBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSAr PSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2F2 cjMyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IDI0MWI5Yjk3MjlkOC4uZjJjM2I2NTZhMGU3IDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MjIsMyArMjIsNCBAQCBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZn YS5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitn ZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkIGIvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg MmZiNjdiNTlkMTg4Li5iZjIwNTQxYmNmMjEgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCkBA IC00NywzICs0Nyw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHVz ZXIuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAor Z2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2M2eC9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNjQ0NjVlN2Uy MjQ1Li4zODEyN2NlNzQ3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYzZ4L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTYyLDMgKzYyLDQgQEAgZ2Vu ZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0gd29yZC1h dC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2NyaXMv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDE3Nzg4MDVmNjM4MC4uMzg1Y2Q4OGE5ZDllIDEwMDY0 NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvY3Jpcy9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTQ1LDMgKzQ1LDQgQEAgZ2VuZXJpYy15ICs9IHR5cGVzLmgKIGdl bmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMt eSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNo L2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggMWZhMDg0Y2YxYTQzLi40NmQ3YzU5OWQ5YjggMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTgsMyAr OCw0IEBAIGdlbmVyaWMteSArPSBtbS1hcmNoLWhvb2tzLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0 LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRp bWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAw L2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvaDgzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDM3M2NiMjMzMDFlMy4uMWVjMDRlYzFjODJiIDEwMDY0NAotLS0gYS9hcmNoL2g4MzAwL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNzUs MyArNzUsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2hleGFnb24vaW5jbHVkZS9h c20vS2J1aWxkIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCBkYjhkZGFi YzZiZDIuLjM3ZDdiZmFlNzYxOSAxMDA2NDQKLS0tIGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNt L0tidWlsZAorKysgYi9hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MCwzICs2 MCw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkg Kz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVp bGQgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDUwMmE5MWQ4ZGJiZC4uNjcy YzZkNWRhMThjIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBi L2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTksMyArOSw0IEBAIGdlbmVyaWMteSAr PSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gdnRp bWUuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9u LWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gv bTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggODYwZTQ0MDYxMWM5Li42MTExZTE1MjM3NTAg MTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tMzJy L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1w dC5oCiBnZW5lcmljLXkgKz0gc2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL202OGsv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFmMmU1ZDMxY2IyNC4uMTI3N2I0NWJmNGY5IDEwMDY0 NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTY4ay9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTM0LDMgKzM0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAog Z2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdp dCBhL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tZXRhZy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggMTY3MTUwYzcwMWQxLi5iMTAxMTM3NWNkN2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20v S2J1aWxkCkBAIC01NSwzICs1NSw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSAr PSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3Iu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxh emUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0tidWls ZAppbmRleCBiMGFlODhjOWZlZDkuLmM2YzJjZjZlZGM5OCAxMDA2NDQKLS0tIGEvYXJjaC9taWNy b2JsYXplL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xMSwzICsxMSw0IEBAIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVy aWMteSArPSBzeXNjYWxscy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0t Z2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWlwcy9pbmNsdWRlL2Fz bS9LYnVpbGQKaW5kZXggNDViMGQ2NTY4MjcwLi5hNjdkMzE3N2YzY2EgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjAsMyArMjAsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQK aW5kZXggMWM4ZGQwZjVjZDVkLi5mODE0NWJjODU4MzUgMTAwNjQ0Ci0tLSBhL2FyY2gvbW4xMDMw MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtMTAsMyArMTAsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0g c2VjdGlvbnMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3Jk LWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2Fy Y2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9LYnVp bGQKaW5kZXggZDYzMzMwZTg4Mzc5Li5jOWM3Y2I4MmIwMGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlv czIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxk CkBAIC02MywzICs2Myw0IEBAIGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2Eu aAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZCBiL2FyY2gvb3BlbnJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDI4 MzJmMDMxZmIxMS4uODYxNzVlNzAxODY5IDEwMDY0NAotLS0gYS9hcmNoL29wZW5yaXNjL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NzEsMyArNzEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDkxZjUzYzA3ZjQx MC4uMThhOWQ0YzVlYWQ3IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC0yOCwzICsyOCw0IEBA IGdlbmVyaWMteSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24t Y29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJj aC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1YzRmYmM4MGRjNmMuLjQzMjJkOTc0 NmNkYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkg Kz0gbWNzX3NwaW5sb2NrLmgKIGdlbmVyaWMteSArPSBwcmVlbXB0LmgKIGdlbmVyaWMteSArPSBy d3NlbS5oCiBnZW5lcmljLXkgKz0gdnRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zMzkwL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCA4YWVhMzJmZThiZDIuLjYzYTFjMjkyNGI5MSAxMDA2NDQK LS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3MzOTAvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBAQCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5o CiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2Vu ZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApk aWZmIC0tZ2l0IGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3Njb3JlL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBhMDUyMThmZjNmZTQuLmYwODlhMjY0Y2QzOCAxMDA2NDQK LS0tIGEvYXJjaC9zY29yZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zY29yZS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTE0LDMgKzE0LDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB4b3IuaAogZ2VuZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkg Kz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1n aXQgYS9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDc1MWMzMzczYTkyYy4uN2IwMzU2ZGNhNTYyIDEwMDY0NAotLS0gYS9hcmNoL3No L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt MzksMyArMzksNCBAQCBnZW5lcmljLXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2Vf Y2xvY2suaAogZ2VuZXJpYy15ICs9IHVjb250ZXh0LmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2Vu ZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDA1NjliZmFj NGFmYi4uNDM4Zjg2NTczZGM1IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0ti dWlsZAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjEsMyArMjEsNCBA QCBnZW5lcmljLXkgKz0gc2VyaWFsLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmQxZjU2Mzg5NzRjLi5m YjZiODMxYzFmYmEgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC90aWxlL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDAsMyArNDAsNCBAQCBnZW5lcmlj LXkgKz0gdGVybWlvcy5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9 IHR5cGVzLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5o CmRpZmYgLS1naXQgYS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvdW0vaW5jbHVk ZS9hc20vS2J1aWxkCmluZGV4IDA1MmY3ZjZkMDU1MS4uNTgwYmQ1ZmY4MjhmIDEwMDY0NAotLS0g YS9hcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3VtL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMjYsMyArMjYsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15 ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmlj LXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJj aC91bmljb3JlMzIvaW5jbHVkZS9hc20vc2VjdGlvbi1jb3JlLmggYi9hcmNoL3VuaWNvcmUzMi9p bmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjBiOWM2ODQyOWExYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvdW5pY29yZTMy L2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCkBAIC0wLDAgKzEsMTkgQEAKKyNpZm5kZWYgX19V TklDT1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fCisjZGVmaW5lIF9fVU5JQ09SRV9TRUNUSU9OX0NP UkVfQVNNX0hfXworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJvZHJpZ3VleiA8 bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0 ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBhcyBwdWJsaXNo ZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyogVW5pY29yZTMy IGhhcyBrbm93biB0byBub3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSB0eXBlIHNldCwgc28gaWdu b3JlIGl0ICovCisKKyNkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwg X19fY29yZSwgX19fbmFtZSwJCVwKKwkJCQlfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlc CisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFn cworCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmg+CisKKyNlbmRpZiAvKiBf X1VOSUNPUkVfU0VDVElPTl9DT1JFX0FTTV9IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyYjg5 MmUyMzEzYTkuLmFmOTc1ZjIxZWVlZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v S2J1aWxkCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMTIsMyArMTIsNCBA QCBnZW5lcmljLXkgKz0gZG1hLWNvbnRpZ3VvdXMuaAogZ2VuZXJpYy15ICs9IGVhcmx5X2lvcmVt YXAuaAogZ2VuZXJpYy15ICs9IG1jc19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gbW0tYXJjaC1o b29rcy5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gveHRl bnNhL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCBiN2ZiYWE1NmI1MWEuLjc4NzljMzFlNjZhNyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Ev aW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL0tidWlsZApA QCAtMzIsMyArMzIsNCBAQCBnZW5lcmljLXkgKz0gdG9wb2xvZ3kuaAogZ2VuZXJpYy15ICs9IHRy YWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9h c20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYjE2YmVmYzQy NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o CkBAIC0wLDAgKzEsMzA3IEBACisjaWZuZGVmIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8K KyNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJT05fQ09SRV9IXworLyoKKyAqIExpbnV4IHNlY3Rp b24gY29yZSBkZWZpbml0aW9ucworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBMdWlzIFIuIFJv ZHJpZ3VleiA8bWNncm9mQGtlcm5lbC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVu ZGVyIHRoZSB0ZXJtcyBvZiBjb3B5bGVmdC1uZXh0ICh2ZXJzaW9uIDAuMy4xIG9yIGxhdGVyKSBh cyBwdWJsaXNoZWQKKyAqIGF0IGh0dHA6Ly9jb3B5bGVmdC1uZXh0Lm9yZy8uCisgKi8KKworLyoq CisgKiBET0M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25zCisgKgorICogTGlu dXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBgYFNIVF9QUk9HQklUU2BgIHRvIGJvdGggZXh0ZW5k IHVzZSBhbmQKKyAqIGRlZmluaXRpb24gb2YgKlNwZWNpYWwgRUxGIFNlY3Rpb25zKiAoYGdhYmk0 IGNoNGBfKSBhbmQgdG8gZGVmaW5lIGl0cyBvd24KKyAqIHNlY3Rpb25zLiBUaGlzIGNoYXBlciBp cyBkZWRpY2F0ZWQgdG8gZG9jdW1lbnRpbmcgTGludXggcHJvZ3JhbSBzcGVjaWZpYworICogc2Vj dGlvbnMgYW5kIGhlbHBlcnMgYXZhaWxhYmxlIHRvIG1ha2UgdXNlIG9mIHRoZXNlIGVhc2llciB0 byBpbXBsZW1lbnQgYW5kCisgKiB1c2UuCisgKgorICogLi4gX2dhYmk0IGNoNDogaHR0cHM6Ly9y ZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY2g0LnNoZWFkZXIuaHRtbCNzcGVjaWFs X3NlY3Rpb25zCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGxpbmtlciBzY3JpcHQKKyAqCisg KiBMaW51eCB1c2VzIGEgY3VzdG9tIGxpbmtlciBzY3JpcHQgdG8gYnVpbGQgdGhlIHZtbGludXgg YmluYXJ5LCBpdCB1c2VzIGl0IHRvCisgKiBzdHJhdGVnaWNhbGx5IHBsYWNlIGFuZCBkZWZpbmUg TGludXggRUxGIHNlY3Rpb25zLiAgRWFjaCBhcmNoaXRlY3R1cmUgbmVlZHMKKyAqIHRvIGltcGxl bWVudCBpdHMgb3duIGxpbmtlciBzY3JpcHQsIGl0IGlzIGV4cGVjdGVkIHRvIHJlc2lkZSBpbgor ICogYGBhcmNoLyQoQVJDSCkva2VybmVsL3ZtbGludXgubGRzLlNgYC4gIEFyY2hpdGVjdHVyZSBM aW51eCBsaW5rZXIgc2NyaXB0cyBpbgorICogdHVybiBpbmNsdWRlIGFuZCB1c2UgZGVmaW5pdGlv bnMgZnJvbSBgYGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaGBgLAorICogYXMgd2Vs bCBhcyBzb21lIGhlbHBlcnMgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXIuCisgKgorICogSW4g YXNzZW1ibHkgaXQgaXMgY29tbW9uIHByYWN0aWNlIHRvIHVzZSBkb3RzIChgYC5gYCkgaW4gbGFi ZWxzIHRvIGF2b2lkCisgKiBjbGFzaGVzIHdpdGggQyBzeW1ib2xzLiBTaW1pbGFybHksIGEgZG90 IChgYC5gYCkgY2FuIGJlIHBhcnQgb2YgYSBzZWN0aW9uCisgKiBuYW1lIGJ1dCBub3QgYSBDIHN5 bWJvbC4gSGlzdG9yaWNhbGx5IHRoZW4sIHR3byBkb3RzIGFyZSB1c2VkIChgYC4uYGApCisgKiBo YXZlIGJlZW4gdXNlZCBpbiBsaW5rZXIgc2NyaXB0cyB3aGVuIGFkZGluZyBwcm9ncmFtIHNwZWNp ZmljIHNlY3Rpb25zCisgKiB3aGVuIHRoZXJlIGFyZSBjb25jZXJucyB0byBhdm9pZCBjbGFzaGVz IHdpdGggY29tcGlsZXIgZ2VuZXJhdGVkIHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiBN ZW1vcnkgcHJvdGVjdGlvbgorICoKKyAqIExpbnV4IGFsbG93cyBhcmNoaXRlY3R1cmVzIHdoaWNo IHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZmVhdHVyZXMgdG8KKyAqIHRha2UgYWR2YW50YWdl IG9mIHRoZW0gYnkgbGV0dGluZyBhcmNoaXRlY3R1cmVzIGRlZmluZSBhbmQgZW5hYmxlCisgKiBg YENPTkZJR19ERUJVR19ST0RBVEFgYCBhbmQgaW1wbGVtZW50IGEgbWFya19yb2RhdGFfcm8oKSBj YWxsLgorICogbWFya19yb2RhdGFfcm8oKSBjYW4gYmUgdXNlZCBmb3IgaW5zdGFuY2UgdG8gbWFy ayBzcGVjaWZpYyBzZWN0aW9ucyBhcworICogcmVhZC1vbmx5IG9yIG5vbi1leGVjdXRhYmxlLgor ICoKKyAqIExpbnV4IHR5cGljYWxseSBmb2xsb3dzIGEgY29udmVudGlvbiB0byBoYXZlIHRoZSAu cm9kYXRhIEVMRiBzZWN0aW9uIGZvbGxvdworICogYWZ0ZXIgdGhlIC50ZXh0IEVMRiBzZWN0aW9u LCBpdCBkb2VzIHRoaXMgdG8gaGVscCBhcmNoaXRlY3R1cmVzIHdoaWNoCisgKiBzdXBwb3J0IG1l bW9yeSBwcm90ZWN0aW9uIHRvIG1hcmsgYm90aCAudGV4dCBhbmQgLnJvZGF0YSBhcyByZWFkLW9u bHkgaW4KKyAqIG9uZSBzaG90LgorICoKKyAqIEZvciBtb3JlIGRldGFpbHMgcmVmZXIgdG8gbWFy a19yb2RhdGFfcm8oKS4KKyAqLworCisvKioKKyAqIERPQzogLnJvZGF0YQorICoKKyAqIEVMRiBz ZWN0aW9uIHVzZWQgZm9yIGRhdGEgd2hpY2ggbXVzdCBiZSBwcm90ZWN0ZWQgZnJvbSB3cml0ZSBh Y2Nlc3MuCisgKi8KKworLyoqCisgKiBET0M6IC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gbmFt ZSB1c2VkIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgZHVyaW5nIHJlZ3VsYXIKKyAqIGtlcm5l bCBydW4gdGltZS4KKyAqLworCisvKioKKyAqIERPQzogLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlv biB1c2VkIGZvciByZWFkLXdyaXRlIGRhdGEuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IGlu aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0aW9ucyBhcmUgdXNlZCBmb3IgY29kZSBhbmQg ZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIGJvb3Qgb3IKKyAqIG1vZHVsZSBpbml0aWFsaXph dGlvbi4gT24gYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQgKHg4NiwgeDg2XzY0KSwgYWxs CisgKiB0aGlzIGNvZGUgaXMgZnJlZWQgdXAgYnkgdGhlIGtlcm5lbCByaWdodCBiZWZvcmUgdGhl IGZpc3QgdXNlcnNwYWNlIGluaXQKKyAqIHByb2Nlc3MgaXMgY2FsbGVkIHdoZW4gYnVpbHQtaW4g dG8gdGhlIGtlcm5lbCwgYW5kIGlmIG1vZHVsYXIgaXQgaXMgZnJlZWQKKyAqIGFmdGVyIG1vZHVs ZSBpbml0aWFsaXphdGlvbi4gU2luY2UgdGhlIGNvZGUgaXMgZnJlZWQgc28gZWFybHksIGluIHRo ZW9yeQorICogdGhlcmUgc2hvdWxkIGJlIG5vIHJhY2VzIGFnYWluc3QgZnJlZWluZyB0aGlzIGNv ZGUgd2l0aCBvdGhlciBDUFVzLiBJbml0CisgKiBzZWN0aW9uIGNvZGUgYW5kIGRhdGEgc3RydWN0 dXJlcyBzaG91bGQgbmV2ZXIgYmUgZXhwb3J0ZWQgd2l0aAorICogRVhQT1JUX1NZTUJPTCooKSBh cyB0aGUgY29kZSB3aWxsIHF1aWNrbHkgYmVjb21lIHVuYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwK KyAqIGFmdGVyIGJvb3R1cC4KKyAqLworCisvKioKKyAqIERPQzogLmluaXQudGV4dAorICoKKyAq IEVMRiBzZWN0aW9uIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgYm9vdCBv ciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICoKKyAqLworCisvKioKKyAqIERPQzogLmlu aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3RydWN0dXJlcyB1c2Vk IG9ubHkgZHVyaW5nIGJvb3Qgb3IgZHJpdmVyCisgKiBpbml0aWFsaXphdGlvbi4KKyAqLworCisv KioKKyAqIERPQzogLmluaXQucm9kYXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgcmVh ZC1vbmx5IGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290CisgKiBvciBkcml2 ZXIgaW5pdGlhbGl6YXRpb24uCisgKi8KKworLyoqCisgKiBET0M6IC5pbml0Y2FsbAorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgZm9yIHN1YnN5c3RlbSBpbml0IGNhbGxzLiBUaGVyZSBhcmUgaW5p dCBsZXZlbHMKKyAqIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBpbiB0aGUg a2VybmVsLiBGb3IgbW9yZSBkZXRhaWxzCisgKiByZWZlciB0byBfX2RlZmluZV9pbml0Y2FsbCgp LgorICovCisKKy8qKgorICogRE9DOiBMaW51eCBleGl0IHNlY3Rpb25zCisgKgorICogVGhlc2Ug c2VjdGlvbnMgYXJlIHVzZWQgdG8gZGVjbGFyZSBhIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1 cmVzIHdoaWNoCisgKiBhcmUgb25seSByZXF1aXJlZCBvbiBleGl0LCB0aGUgZnVuY3Rpb24gb3Ig ZGF0YSBzdHJ1Y3R1cmUgd2lsbCBiZSBkcm9wcGVkCisgKiBpZiB0aGUgY29kZSBkZWNsYXJpbmcg dGhpcyBzZWN0aW9uIGlzIG5vdCBjb21waWxlZCBhcyBhIG1vZHVsZSBvbgorICogYXJjaGl0ZWN0 dXJlcyB0aGF0IHN1cHBvcnQgdGhpcyAoeDg2LCB4ODZfNjQpLiBUaGVyZSBpcyBubyBzcGVjaWFs IGNhc2UKKyAqIGhhbmRsaW5nIGZvciB0aGlzIGNvZGUgd2hlbiBidWlsdC1pbiB0byB0aGUga2Vy bmVsLgorICovCisKKy8qKgorICogRE9DOiAuZXhpdC50ZXh0CisgKgorICogRUxGIHNlY3Rpb24g dXNlZCB0byBmb3IgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZSB1bmxv YWQuCisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1 c2VkIHRvIGZvciBkYXRhIHN0cnVjdHVyZXMgdXNlZCBvbmx5IGR1cmluZyBtb2R1bGUKKyAqIHVu bG9hZC4KKyAqLworCisvKioKKyAqIERPQzogLmV4aXRjYWxsLmV4aXQKKyAqCisgKiBFTEYgc2Vj dGlvbiB1c2VkIGZvciBleGl0IHJvdXRpbmVzLCBvcmRlciBpcyBpbXBvcnRhbnQgYW5kIG1haW50 YWluZWQgYnkKKyAqIGxpbmsgb3JkZXIuCisgKi8KKworLyoqCisgKiBET0M6IExpbnV4IHJlZmVy ZW5jZXMgdG8gaW5pdCBzZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIHRv IHRlYWNoIG1vZHBvc3QgdG8gbm90IHdhcm4gYWJvdXQgcG9zc2libGUKKyAqIG1pc3VzZXMgb2Yg aW5pdCBzZWN0aW9uIGNvZGUgZnJvbSBvdGhlciBzZWN0aW9ucy4gSWYgeW91IHVzZSB0aGlzCisg KiB5b3VyIHVzZSBjYXNlIHNob3VsZCBkb2N1bWVudCB3aHkgeW91IGFyZSBjZXJ0YWluIHN1Y2gg dXNlIG9mIGluaXQKKyAqIHNlY3Rpb25lZCBjb2RlIGlzIHZhbGlkLiBGb3IgbW9yZSBkZXRhaWxz IHJlZmVyIHRvIGBgaW5jbHVkZS9saW51eC9pbml0LmhgYAorICogYGBfX3JlZmBgLCBgYF9fcmVm ZGF0YWBgLCBhbmQgYGBfX3JlZmNvbnN0YGAgZG9jdW1lbnRhdGlvbi4KKyAqLworCisvKioKKyAq IERPQzogLnJlZi50ZXh0CisgKgorICogRUxGIHNlY3Rpb24gdXNlZCB0byBhbm5vdGF0ZSBjb2Rl IChmdW5jdGlvbnMpIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgYXMKKyAqIHZhbGlkIGZvciBpdHMg cmVmZXJlbmNlIG9yIHVzZSBvZiBvdGhlciBjb2RlIChmdW5jdGlvbnMpIG9yIGRhdGEgc3RydWN0 dXJlcworICogd2hpY2ggYXJlIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyoq CisgKiBET0M6IC5yZWYuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgZm9yIGRhdGEgc3Ry dWN0dXJlcyB3aGljaCBoYXZlIGJlZW4gdmV0dGVlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3Ig dXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2Yg dGhlCisgKiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQor ICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25z KSBjb25zdCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZWQgZm9yIGl0 cyByZWZlcmVuY2Ugb3IgdXNlIG9mIG90aGVyIGNvZGUgKGZ1bmN0aW9ucykKKyAqIG9yIGRhdGEg c3RydWN0dXJlcyBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qIENhbiBiZSB1 c2VkIG9uIGZvby5TIGZvciBpbnN0YW5jZSAqLworI2lmbmRlZiBfX3NldF9zZWN0aW9uX2NvcmVf dHlwZQorIyBkZWZpbmUgX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19fc2VjdGlvbiwgX19fY29y ZSwgX19fbmFtZSwJCVwKKwkJCQkgX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MsIF9f X3R5cGUKKyNlbmRpZgorCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19z ZXRfc2VjdGlvbl9jb3JlKF9fX3NlY3Rpb24sIF9fX2NvcmUsIF9fX25hbWUsIF9fX2xldmVsLCBf X19mbGFncykgXAorCS5zZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZl bCwgX19fZmxhZ3MKKyNlbmRpZgorCisjaWZuZGVmIF9fcHVzaF9zZWN0aW9uX2NvcmUKKyMgZGVm aW5lIF9fcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZl bCwgX19mbGFncykgXAorCS5wdXNoc2VjdGlvbiBfX3NlY3Rpb24uLl9fY29yZS5fX25hbWUuX19s ZXZlbCwgX19mbGFncworI2VuZGlmCisKKyNpZmRlZiBfX0tFUk5FTF9fCisjaW5jbHVkZSA8bGlu dXgvc3RyaW5naWZ5Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwg ZGVmaW5lZChfX0FTU0VNQkxZX18pCisKKyMgaWZuZGVmIExJTktFUl9TQ1JJUFQKKworIyAgaWZu ZGVmIHB1c2hfc2VjdGlvbl9jb3JlCisjICAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2Vj dGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsIF9fZmxhZ3MpIFwKKwkgX19wdXNoX3NlY3Rp b25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCSAgXAorCQkJICAgICBfX2xldmVs LCBfX3N0cmluZ2lmeShfX2ZsYWdzKSkKKyMgIGVuZGlmCisKKyMgIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlCisjICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9f bmFtZSwJCQlcCisJCQkgICAgX19sZXZlbCwgX19mbGFncykJCQkJXAorCV9fc2V0X3NlY3Rpb25f Y29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUs IF9fbmFtZSwJCVwKKwkJCQkgX19sZXZlbCwgX19mbGFncywgX190eXBlKQkJXAorCV9fc2V0X3Nl Y3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWwsCVwKKwkJ CQlfX3N0cmluZ2lmeShfX2ZsYWdzKSwgX190eXBlKQorIyAgZW5kaWYKKworIyBlbmRpZiAvKiBM SU5LRVJfU0NSSVBUICovCisjZWxzZSAvKiBkZWZpbmVkKF9fQVNTRU1CTEVSX18pIHx8IGRlZmlu ZWQoX19BU1NFTUJMWV9fKSAqLworCisvKgorICogQXMgcGVyIGdjYydzIGRvY3VtZW50YXRpb24g YSBjb21tb24gYXNtIHNlcGFyYXRvciBpcyBhIG5ldyBsaW5lIGZvbGxvd2VkCisgKiBieSB0YWIg WzBdLCBpdCBob3dldmVyIHNlZW1zIHBvc3NpYmxlIHRvIGFsc28ganVzdCB1c2UgYSBuZXdsaW5l IGFzIGl0cworICogdGhlIG1vc3QgY29tbW9ubHkgZW1waXJpY2FsbHkgb2JzZXJ2ZWQgc2VtYW50 aWMgYW5kIGZvbGtzIHNlZW0gdG8gYWdyZWUKKyAqIHRoaXMgZXZlbiB3b3JrcyBvbiBTMzkwLiBJ biBjYXNlIHlvdXIgYXJjaGl0ZWN0dXJlIGRpc2FncmVlcyB5b3UgbWF5CisgKiBvdmVycmlkZSB0 aGlzIGFuZCBkZWZpbmUgeW91ciBvd24gYW5kIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIG1hY3Jvcy4K KyAqCisgKiBbMF0gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9CYXNpYy1Bc20u aHRtbCNCYXNpYy1Bc20KKyAqLworIyBpZm5kZWYgQVNNX0NNRF9TRVAKKyMgIGRlZmluZSBBU01f Q01EX1NFUAkiXG4iCisjIGVuZGlmCisKKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUKKyMgIGRl ZmluZSBzZXRfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsIF9fbGV2ZWws IF9fZmxhZ3MpCVwKKwlfX3N0cmluZ2lmeShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rp b24sIF9fY29yZSwgX19uYW1lLAlcCisJCQkJCSAgICBfX2xldmVsLCBfX3N0cmluZ2lmeShfX2Zs YWdzKSkpIFwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisvKgorICogU29tZSBhcmNoaXRlY3R1 cmVzIChhcm0sIGFuZCBhdnIzMiBhcmUgdHdvIGV4YW1wbGVzIG9uIGtwcm9iZXMpIHNlZW0KKyAq IGN1cnJlbnRseSBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHR5cGUgWzBdIC0tIHRoaXMgY2FuIGJl IGFueSBvZiB0aGUKKyAqIG9wdGlvbmFsIGNvbnN0YW50cyBvbiBFTEY6CisgKgorICogQHByb2di aXRzIC0gc2VjdGlvbiBjb250YWlucyBkYXRhCisgKiBAbm9iaXRzIC0gc2VjdGlvbiBkb2VzIG5v dCBjb250YWluIGRhdGEgKGkuZS4sIHNlY3Rpb24gb25seSBvY2N1cGllcyBzcGFjZSkKKyAqIEBu b3RlIC0gc2VjdGlvbiBjb250YWlucyBkYXRhIHdoaWNoIGlzIHVzZWQgYnkgdGhpbmdzIG90aGVy IHRoYW4gdGhlIHByb2dyYW0KKyAqIEBpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBh cnJheSBvZiBwb2ludGVycyB0byBpbml0IGZ1bmN0aW9ucworICogQGZpbmlfYXJyYXkgLSBzZWN0 aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGZpbmlzaCBmdW5jdGlvbnMKKyAq IEBwcmVpbml0X2FycmF5IC0gc2VjdGlvbiBjb250YWlucyBhbiBhcnJheSBvZiBwb2ludGVycyB0 byBwcmUtaW5pdCBmdW5jdGlvbnMKKyAqCisgKiBBUk0gcmVxdWlyZXMgJSBpbnN0ZWFkIG9mIEAu CisgKgorICogQXQgbGVhc3QgYXMgcGVyIG5hc20gKHg4Ni94ODZfNjQgb25seSksIGluIHRoZSBh YnNlbmNlIG9mIHF1YWxpZmllcnMgdGhlCisgKiBkZWZhdWx0cyBhcmUgYXMgZm9sbG93czoKKyAq CisgKiBzZWN0aW9uIC50ZXh0ICAgIHByb2diaXRzICBhbGxvYyAgIGV4ZWMgICAgbm93cml0ZSAg YWxpZ24WCisgKiBzZWN0aW9uIC5yb2RhdGEgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAubHJvZGF0YSBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIG5vd3JpdGUgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmRhdGEgICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5sZGF0YSAgIHByb2diaXRz ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAuYnNzICAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxi c3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0 aW9uIC50ZGF0YSAgIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NCAg ICB0bHMKKyAqIHNlY3Rpb24gLnRic3MgICAgbm9iaXRzICAgIGFsbG9jICAgbm9leGVjICB3cml0 ZSAgICBhbGlnbj00ICAgIHRscworICogc2VjdGlvbiAuY29tbWVudCBwcm9nYml0cyAgbm9hbGxv YyBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqIHNlY3Rpb24gb3RoZXIgICAgcHJvZ2JpdHMg IGFsbG9jICAgbm9leGVjICBub3dyaXRlICBhbGlnbj0xCisgKgorICogZ2FzIHNob3VsZCBoYXZl IHNlbnNpYmxlIGRlZmF1bHRzIGZvciBhcmNoaXRlY3R1cmVzLi4uCisgKgorICogWzBdIGh0dHA6 Ly93d3cubmFzbS51cy9kb2MvbmFzbWRvYzcuaHRtbAorICovCisjIGlmbmRlZiBzZXRfc2VjdGlv bl9jb3JlX3R5cGUKKyMgIGRlZmluZSBzZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fZmxhZ3MsIF9fdHlwZSkJCQlcCisJX19z dHJpbmdpZnkoX19zZXRfc2VjdGlvbl9jb3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsCQlcCisJ CQkJCSAgICBfX25hbWUsIF9fbGV2ZWwsCQlcCisJCQkJCSAgICBfX3N0cmluZ2lmeShfX2ZsYWdz KSwJXAorCQkJCQkgICAgX190eXBlKSkJCQlcCisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworIyBp Zm5kZWYgcHVzaF9zZWN0aW9uX2NvcmUKKyMgIGRlZmluZSBwdXNoX3NlY3Rpb25fY29yZShfX3Nl Y3Rpb24sIF9fY29yZSwgX19uYW1lLAkJCVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlc CisJX19zdHJpbmdpZnkoX19wdXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwJCVwK KwkJCQkJX19uYW1lLAlfX2xldmVsLAkJXAorCQkJCQlfX3N0cmluZ2lmeShfX2ZsYWdzKSkpCQlc CisJQVNNX0NNRF9TRVAKKyMgZW5kaWYKKworI2VuZGlmIC8qIGRlZmluZWQoX19BU1NFTUJMRVJf XykgfHwgZGVmaW5lZChfX0FTU0VNQkxZX18pICovCisjZW5kaWYgLyogX0FTTV9HRU5FUklDX1NF Q1RJT05fQ09SRV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9u cy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCmluZGV4IDRkZjY0YTFmYzA5ZS4u YjE0NWFlOGQ5Y2JlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgK KysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9ucy5oCkBAIC0xLDYgKzEsOCBAQAogI2lm bmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8KICNkZWZpbmUgX0FTTV9HRU5FUklDX1NFQ1RJ T05TX0hfCiAKKyNpbmNsdWRlIDxhc20vc2VjdGlvbi1jb3JlLmg+CisKIC8qIFJlZmVyZW5jZXMg dG8gc2VjdGlvbiBib3VuZGFyaWVzICovCiAKICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oIGIvaW5jbHVkZS9h c20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4IDA5NjhkMTNiMzg4NS4uNDgzZjYwYzQ1MWY5 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5j bHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC01NSw2ICs1NSw3IEBACiAjZW5kaWYK IAogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUu aD4KIAogLyogQWxpZ24gLiB0byBhIDggYnl0ZSBib3VuZGFyeSBlcXVhbHMgdG8gbWF4aW11bSBm dW5jdGlvbiBhbGlnbm1lbnQuICovCiAjZGVmaW5lIEFMSUdOX0ZVTkNUSU9OKCkgIC4gPSBBTElH Tig4KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0LmggYi9pbmNsdWRlL2xpbnV4L2lu aXQuaAppbmRleCA4ODVjM2U2ZDBmOWQuLjExNmUzMjYyMzMyYSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9pbml0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0LmgKQEAgLTEzMCw2ICsxMzAs MjQgQEAgaW50IF9faW5pdCBpbml0X3Jvb3Rmcyh2b2lkKTsKIGV4dGVybiBib29sIHJvZGF0YV9l bmFibGVkOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RFQlVHX1JPREFUQQorLyoqCisgKiBtYXJr X3JvZGF0YV9ybyAtIGltcGxlbWVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlv bnMKKyAqCisgKiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24g ZGVmaW5lIGEga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdf Uk9EQVRBLCBlbmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICog bWFya19yb2RhdGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQg LnRleHQgRUxGIHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0 byBwcmV2ZW50IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1 cC4gSXQgY2FuIGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4 ZWN1dGlvbgorICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIg dG8gaGVscCBhcmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQt b25seSB3aXRoCisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5 cGljYWxseSBmb2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBF TEYgc2VjdGlvbiBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4Cisg KiBsaW5rZXIgc2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0 ZXIgZnJlZWluZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3Qg aW5pdCB1c2Vyc3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsK ICNlbmRpZgogCkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1 ZzsKICNlbmRpZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2 ZWxzCisgKgorICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0 ZXJhdGVzIG92ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNh bGxzIGFsbCByb3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8g djIuNS4yLjMgTGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5p dAorICogZnVuY3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIu NS4yLjQgTGludXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNh bGwgc3Vic2VjdGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50 IGZ1bmN0aW9uYWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcw ODVgXworICogKHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNr d2FyZCBjb21wYXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0 byBkZXZpY2VfaW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2Yg YSBkZWRpY2F0ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRl ZCB0byBhbiBpbml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZl bCdzCisgKiBFTEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4g cHJpb3IgdG8gaGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVh Y2ggaW5pdGNhbGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIu CisgKgorICogLi4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dp dC9saW51eC9rZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFi N2UxNzA4NWM5NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJM WV9fCiAKLS8qCi0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkg aW50byBzZXBhcmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2Vj dGlvbnMgaXMgZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRz IGNvbXBhdGliaWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZp Y2UgaW5pdCBzdWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIg Zm9yIGRlZmluaXRpbmcgaW5pdCBsZXZlbHMKICAqCi0gKiBUaGUgYGlkJyBhcmcgdG8gX19kZWZp bmVfaW5pdGNhbGwoKSBpcyBuZWVkZWQgc28gdGhhdCBtdWx0aXBsZSBpbml0Y2FsbHMKLSAqIGNh biBwb2ludCBhdCB0aGUgc2FtZSBoYW5kbGVyIHdpdGhvdXQgY2F1c2luZyBkdXBsaWNhdGUtc3lt Ym9sIGJ1aWxkIGVycm9ycy4KKyAqIEBmbjogaW5pdCByb3V0aW5lCisgKiBAaWQ6IGluaXQgbGV2 ZWwKICAqCi0gKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHBvaW50ZXJzIGluIGluaXRj YWxsIHNlY3Rpb25zIHRoYXQgdGhlCi0gKiBrZXJuZWwgaXRlcmF0ZXMgYXQgcnVudGltZS4gVGhl IGxpbmtlciBjYW4gZG8gZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbgotICogYW5kIHJlbW92 ZSB0aGF0IGNvbXBsZXRlbHksIHNvIHRoZSBpbml0Y2FsbCBzZWN0aW9ucyBoYXZlIHRvIGJlIG1h cmtlZAotICogYXMgS0VFUCgpIGluIHRoZSBsaW5rZXIgc2NyaXB0LgorICogRGVmaW5lcyBhIGtl cm5lbCBpbml0aWFsaXphdGlvbiBsZXZlbC4gQSByZXNwZWN0aXZlIGxpbmtlciBzY3JpcHQgZW50 cnkKKyAqIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGUgaW5pdCBsZXZlbCBpcyBhY2NvdW50ZWQg Zm9yIGFuZCB0byBlbnN1cmUgc3ltYm9scworICogZXhpc3QgZm9yIGl0ZXJhdGluZyBvdmVyIGFs bCBmdW5jdGlvbnMgaW4gdGhlIGluaXQgbGV2ZWwuIEEgaW5pdCBsZXZlbAorICogcmVwcmVzZW50 cyBhIHNlcmllcyBvZiBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuCisgKgorICogT3JkZXJp bmcgd2l0aGluIGFuIGluaXRpYWxpemF0aW9uIGxldmVsIGlzIGRldGVybWluZWQgYnkgbGluayBv cmRlciwgc28KKyAqIGZvciBpbnN0YW5jZSBpZiBhIE1ha2VmaWxlIGhhZDo6CisgKgorICoJb2Jq LXkgKz0gZm9vLm8KKyAqCW9iai15ICs9IGJhci5vCisgKgorICogQW5kIGZvby5jOjoKKyAqCisg KglzdWJzeXNfaW5pdGNhbGwoZm9vX2luaXQpOworICoKKyAqIEFuZCBiYXIuYyBoYWQ6OgorICoK KyAqCXN1YnN5c19pbml0Y2FsbChiYXJfaW5pdCk7CisgKgorICogZm9vX2luaXQoKSB3b3VsZCBi ZSBjYWxsZWQgcHJpb3IgdG8gYmFyX2luaXQoKS4KKyAqCisgKiBOb3RlIHRoYXQgQGlkIGluIF9f ZGVmaW5lX2luaXRjYWxsKCkgYWxzbyBlbmFibGVzIG11bHRpcGxlIGluaXRjYWxscworICogdG8g YmUgY3JlYXRlZCB1c2luZyB0aGUgc2FtZSBoYW5kbGVyIGZvciBkaWZmZXJlbnQgaW5pdCBsZXZl bHMgd2l0aG91dAorICogY2F1c2luZyBkdXBsaWNhdGUtc3ltYm9sIGJ1aWxkIGVycm9ycy4KKyAq CisgKiBJbml0Y2FsbHMgYXJlIHJ1biBieSBwbGFjaW5nIHN0YXJ0IHN5bWJvbHMgdG8gaW5pdGNh bGwgbGV2ZWxzIGluc2lkZSBFTEYKKyAqIHNlY3Rpb25zLCB0aGUga2VybmVsIGluIHR1cm4gdXNl cyB0aGVzZSBzeW1ib2xzIHRvIGl0ZXJhdGUgb3ZlciBlYWNoIGluaXQKKyAqIGxldmVsIGF0IHJ1 bnRpbWUgd2l0aCBkb19pbml0Y2FsbF9sZXZlbCgpLiBUaGUgZW5kIG9mIGVhY2ggaW5pdCBsZXZl bCBpcworICogbWFya2VkIGJ5IHRoZSBzdWJzZXF1ZW50J3Mgc3ltYm9sJ3Mgc3RhcnQgYWRkcmVz cyB1bnRpbCB3ZSByZWFjaCB0aGUgc3ltYm9sCisgKiBgYF9faW5pdGNhbGxfZW5kYGAuIFRoZSBs aW5rZXIgY2FuIGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24gYW5kIGVhY2gKKyAqIGlu aXQgbGV2ZWwgc3RhcnQgc3ltYm9sIGNvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseSBpbiB0aGlz IHByb2Nlc3MsIHRvCisgKiBhdm9pZCB0aGlzIGVhY2ggaW5pdCBsZXZlbCBzdGFydCBzeW1ib2xz IG11c3QgYmUgbWFya2VkIGFzICdLRUVQKCknIGluIHRoZQorICogbGlua2VyIHNjcmlwdCB0byBh dm9pZCBhbnkgbGlua2VyIG9wdGltaXphdGlvbiBoZXVyaXN0aWMgb24gaW5pdGNhbGxzLgogICov Ci0KICNkZWZpbmUgX19kZWZpbmVfaW5pdGNhbGwoZm4sIGlkKSBcCiAJc3RhdGljIGluaXRjYWxs X3QgX19pbml0Y2FsbF8jI2ZuIyNpZCBfX3VzZWQgXAogCV9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdGNhbGwiICNpZCAiLmluaXQiKSkpID0gZm47CmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L3NlY3Rpb25zLmggYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NzcxYzcyN2JjZDEKLS0tIC9kZXYvbnVsbAor KysgYi9pbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKQEAgLTAsMCArMSw4NyBAQAorI2lmbmRlZiBf TElOVVhfU0VDVElPTlNfSAorI2RlZmluZSBfTElOVVhfU0VDVElPTlNfSAorLyoKKyAqIExpbnV4 IGRlLWZhY3RvIHNlY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEx1aXMgUi4gUm9k cmlndWV6IDxtY2dyb2ZAa2VybmVsLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5k ZXIgdGhlIHRlcm1zIG9mIGNvcHlsZWZ0LW5leHQgKHZlcnNpb24gMC4zLjEgb3IgbGF0ZXIpIGFz IHB1Ymxpc2hlZAorICogYXQgaHR0cDovL2NvcHlsZWZ0LW5leHQub3JnLy4KKyAqLworCisjaW5j bHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorCisj aWZuZGVmIF9fQVNTRU1CTFlfXworCisvKioKKyAqIERPQzogSW50cm9kdWN0aW9uCisgKgorICog TGludXggZGVmaW5lcyBhIHNldCBvZiBjb21tb24gaGVscGVycyB3aGljaCBjYW4gYmUgdXNlZCB0 byBhZ2FpbnN0IGl0cyB1c2UKKyAqIG9mIHN0YW5kYXJkIG9yIGN1c3RvbSBMaW51eCBzZWN0aW9u cywgdGhpcyBzZWN0aW9uIGlzIGRlZGljYXRlZCB0byB0aGVzZQorICogaGVscGVycy4KKyAqLwor CisvKioKKyAqIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UIC0gZ2V0IHNlY3Rpb24gYWxpZ25tZW50 CisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoKKyAqIEdpdmVzIHlvdSB0aGUgYWxpZ25t ZW50IGZvciB0aGUgc2VjdGlvbi4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0FMSUdOTUVO VChuYW1lKQlfX2FsaWdub2ZfXygqVk1MSU5VWF9TWU1CT0wobmFtZSkpCisKKy8qKgorICogTElO VVhfU0VDVElPTl9TVEFSVCAtIGdldCBhZGRyZXNzIG9mIHN0YXJ0IG9mIHNlY3Rpb24KKyAqCisg KiBAbmFtZTogc2VjdGlvbiBuYW1lCisgKgorICogVGhpcyBnaXZlcyB5b3UgdGhlIHN0YXJ0IGFk ZHJlc3Mgb2YgdGhlIHNlY3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVz cyBvZiB0aGUgZmlyc3QgZW50cnkuCisgKgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fU1RB UlQobmFtZSkJVk1MSU5VWF9TWU1CT0wobmFtZSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX0VO RCAtIGdldCBhZGRyZXNzIG9mIGVuZCBvZiB0aGUgc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIHNl Y3Rpb24uCisgKiBUaGlzIHNob3VsZCBnaXZlIHlvdSB0aGUgYWRkcmVzcyBvZiB0aGUgZW5kIG9m IHRoZQorICogc2VjdGlvbi4gVGhpcyB3aWxsIG1hdGNoIHRoZSBzdGFydCBhZGRyZXNzIGlmIHRo ZQorICogc2VjdGlvbiBpcyBlbXB0eS4KKyAqLworI2RlZmluZSBMSU5VWF9TRUNUSU9OX0VORChu YW1lKQlWTUxJTlVYX1NZTUJPTChuYW1lIyNfX2VuZCkKKworLyoqCisgKiBERUNMQVJFX0xJTlVY X1NFQ1RJT04gLSBEZWNsYXJlcyBhIGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKgorICogQHR5cGU6 IHR5cGUgb2YgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqIEBuYW1lOiBjdXN0b20gc2VjdGlvbiBu YW1lCisgKgorICogRGVjbGFyZXMgYSByZWFkLXdyaXRlIGN1c3RvbSBMaW51eCBzZWN0aW9uCisg Ki8KKyNkZWZpbmUgREVDTEFSRV9MSU5VWF9TRUNUSU9OKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0 ZXJuIHR5cGUgVk1MSU5VWF9TWU1CT0wobmFtZSlbXSwgXAorCQkgICAgIFZNTElOVVhfU1lNQk9M KG5hbWUjI19fZW5kKVtdCisKKy8qKgorICogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPIC0gRGVj bGFyZXMgYSByZWFkLW9ubHkgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlw ZSBvZiBjdXN0b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUK KyAqCisgKiBEZWNsYXJlcyBhIHJlYWQtb25seSBjdXN0b20gTGludXggc2VjdGlvbgorICovCisj ZGVmaW5lIERFQ0xBUkVfTElOVVhfU0VDVElPTl9STyh0eXBlLCBuYW1lKQkJCQlcCisJIGV4dGVy biBjb25zdCB0eXBlIFZNTElOVVhfU1lNQk9MKG5hbWUpW10sCQkJXAorCQkJICAgVk1MSU5VWF9T WU1CT0wobmFtZSMjX19lbmQpW10KKworI2RlZmluZSBfX1NFQ1RJT05fQ09SRShzZWN0aW9uLCBj b3JlLCBuYW1lLCBsZXZlbCkJCQlcCisJI3NlY3Rpb24gIi4uIiAjY29yZSAiLiIgI25hbWUgIi4i ICNsZXZlbAorCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfTElOVVhf U0VDVElPTlNfSCAqLwotLSAKMi4xMC4xCgotLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgc3BhcmNsaW51eCIgaW4KdGhlIGJvZHkgb2Yg YSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s