<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>55569</bug_id>
          
          <creation_ts>2004-06-29 07:42 0000</creation_ts>
          <short_desc>Compilation of dev-util/rapidsvn 0.6.0 fails</short_desc>
          <delta_ts>2005-05-31 03:44:58 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Ebuilds</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>klausman@gentoo.org</reporter>
          <assigned_to>dholm@gentoo.org</assigned_to>
          <cc>dking@pimpsoft.com</cc>
    
    <cc>dragonheart@gentoo.org</cc>
    
    <cc>ht_gentoo04@arcor.de</cc>
    
    <cc>waebbl@gmx.de</cc>
    
    <cc>wxwidgets@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>klausman@gentoo.org</who>
            <bug_when>2004-06-29 07:42:29 0000</bug_when>
            <thetext>make[2]: Entering directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0
if g++ -DPACKAGE_NAME=\&quot;\&quot; -DPACKAGE_TARNAME=\&quot;\&quot; -DPACKAGE_VERSION=\&quot;\&quot; -DPACKAYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H-g -fexceptions -I/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/include   /usr/include/apr-0  -I/usr/include/neon -DNEON_ZLIB -DNEON_SSL -I/usr/include/suS  -march=pentium3 -O3 -pipe -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2u-2ut_dlg.Tpo&quot; -c -o about_dlg.o about_dlg.cpp; \
then mv -f &quot;.deps/about_dlg.Tpo&quot; &quot;.deps/about_dlg.Po&quot;; else rm -f &quot;.deps/about_d
about_dlg.cpp: In constructor `AboutDlg::AboutDlg(wxWindow*)&apos;:
about_dlg.cpp:31: error: conversion from `const char[1]&apos; to `const wxString&apos; is 
   ambiguous
/usr/include/wx/string.h:306: error: candidates are: 
   wxString::wxString(wchar_t, unsigned int) &lt;near match&gt;
/usr/include/wx/string.h:284: error:                 wxString::wxString(int) 
   &lt;near match&gt;
about_dlg.cpp:38: error: call of overloaded `wxString(const char[1])&apos; is 
   ambiguous
/usr/include/wx/string.h:323: error: candidates are: wxString::wxString(const 
   wxWCharBuffer&amp;) &lt;near match&gt;
/usr/include/wx/string.h:306: error:                 
   wxString::wxString(wchar_t, unsigned int) &lt;near match&gt;
/usr/include/wx/string.h:291: error:                 wxString::wxString(const 
   wxString&amp;) &lt;near match&gt;
/usr/include/wx/string.h:284: error:                 wxString::wxString(int) 
   &lt;near match&gt;
about_dlg.cpp:46: error: ambiguous overload for &apos;operator+=&apos; in &apos;schemasStr += 
   &quot;\n&quot;&apos;
/usr/include/wx/string.h:563: error: candidates are: void 
   wxString::operator+=(const wxString&amp;) &lt;near match&gt;
/usr/include/wx/string.h:567: error:                 void 
   wxString::operator+=(wchar_t) &lt;near match&gt;
/usr/include/wx/string.h:574: error:                 void 
   wxString::operator+=(const wxWCharBuffer&amp;) &lt;near match&gt;
about_dlg.cpp:48: error: ambiguous overload for &apos;operator+=&apos; in &apos;schemasStr += 
   &quot;- &quot;&apos;
/usr/include/wx/string.h:563: error: candidates are: void 
   wxString::operator+=(const wxString&amp;) &lt;near match&gt;
/usr/include/wx/string.h:567: error:                 void 
   wxString::operator+=(wchar_t) &lt;near match&gt;
/usr/include/wx/string.h:574: error:                 void 
   wxString::operator+=(const wxWCharBuffer&amp;) &lt;near match&gt;
about_dlg.cpp:49: error: ambiguous overload for &apos;operator+=&apos; in &apos;schemasStr += 
   (&amp;schema)-&gt;std::basic_string&lt;_CharT, _Traits, _Alloc&gt;::c_str [with _CharT = 
   char, _Traits = std::char_traits&lt;char&gt;, _Alloc = std::allocator&lt;char&gt;]()&apos;
/usr/include/wx/string.h:563: error: candidates are: void 
   wxString::operator+=(const wxString&amp;) &lt;near match&gt;
/usr/include/wx/string.h:567: error:                 void 
   wxString::operator+=(wchar_t) &lt;near match&gt;
/usr/include/wx/string.h:574: error:                 void 
   wxString::operator+=(const wxWCharBuffer&amp;) &lt;near match&gt;
about_dlg.cpp:75: error: no matching function for call to `wxString::Printf(
   const char[19], int, int, int)&apos;
/usr/include/wx/string.h:733: error: candidates are: int wxString::Printf(const 
   wxChar*, ...)
about_dlg.cpp:86: error: no matching function for call to `wxString::Printf(
   const char[42], const wxChar*, const wxChar*, const char[56], const wxChar*)
   &apos;
/usr/include/wx/string.h:733: error: candidates are: int wxString::Printf(const 
   wxChar*, ...)
about_dlg.cpp:95: error: no matching function for call to `wxString::Printf(
   const char[10], const wxChar*, const wxChar*, const wxChar*)&apos;
/usr/include/wx/string.h:733: error: candidates are: int wxString::Printf(const 
   wxChar*, ...)
about_dlg.cpp:101: error: no matching function for call to `wxString::Printf(
   const char[6], const wxChar*, const wxChar*)&apos;
/usr/include/wx/string.h:733: error: candidates are: int wxString::Printf(const 
   wxChar*, ...)
make[2]: *** [about_dlg.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/
make: *** [all-recursive] Error 1

!!! ERROR: dev-util/rapidsvn-0.6.0 failed.
!!! Function src_compile, Line 30, Exitcode 2
!!! (no error message)

Installed versions:
gtk+-1.2.10-r11
gtk+-2.4.3
wxGTK-2.4.2
subversion-1.0.4-r1

emerge info:
Portage 2.0.50-r8 (default-x86-1.4, gcc-3.3.3, glibc-2.3.3.20040420-r0, 2.6.7)
=================================================================
System uname: 2.6.7 i686 Pentium III (Coppermine)
Gentoo Base System version 1.5.1
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
AUTOCLEAN=&quot;yes&quot;
CFLAGS=&quot;-march=pentium3 -O3 -pipe&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
COMPILER=&quot;gcc3&quot;
CONFIG_PROTECT=&quot;/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot;
CXXFLAGS=&quot;-march=pentium3 -O3 -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoaddcvs ccache sanbox sandbox userpriv usersandbox&quot;
GENTOO_MIRRORS=&quot;http://ftp.freenet.de/pub/ftp.snt.utwente.nl/pub/os/linux/gentoo http://gyroscope.acm.cs.rpi.edu/gentoo/&quot;
MAKEOPTS=&quot;-j1&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/usr/local/portage&quot;
SYNC=&quot;rsync://rsync5.de.gentoo.org/gentoo-portage/&quot;
USE=&quot;X aalib alsa apm avi berkdb bonobo crypt cups dga dvd encode esd exif foomaticdb gdbm ggi gif gimp gimpprint gnome gphoto2 gpm gtk gtk2 guile imap imlib java jpeg libg++ libwww mad mikmod mmx motif mozilla moznocompose moznoirc moznomail mpeg mysql ncurses nls objc oggvorbis opengl oss pam pdflib perl png postgres python quicktime readline sdl slang spell ssl svga tcltk tcpd tetex truetype unicode usb x86 xml2 xmms xv zlib&quot;

I can&apos;t really tell if this is a duplicate/relative of bug #45161</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Mark@JumpingBean.co.za</who>
            <bug_when>2004-07-02 03:23:51 0000</bug_when>
            <thetext>I get different error on emerging namely:

/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/include/svncpp/targets.hpp: At
   top level:
action.cpp:30: warning: `const char*ACTION_NAMES[20]&apos; defined but not used
make[2]: *** [action.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory 
`/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make: *** [all-recursive] Error 1
 
!!! ERROR: dev-util/rapidsvn-0.6.0 failed.
!!! Function src_compile, Line 30, Exitcode 2
!!! (no error message)



My emerge info is 

Portage 2.0.50-r8 (default-x86-2004.0, gcc-3.3.3, glibc-2.3.3.20040420-r0, 2.6.5-gentoo-r1)
=================================================================
System uname: 2.6.5-gentoo-r1 i686 Intel(R) Pentium(R) M processor 1500MHz
Gentoo Base System version 1.5.1
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
ACCEPT_KEYWORDS=&quot;x86&quot;
AUTOCLEAN=&quot;yes&quot;
CFLAGS=&quot;-march=pentium4 -O3 -pipe&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
COMPILER=&quot;gcc3&quot;
CONFIG_PROTECT=&quot;/etc /etc/tomcat /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /var/lib/jboss /var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot;
CXXFLAGS=&quot;-march=pentium4 -O3 -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoaddcvs ccache sandbox&quot;
GENTOO_MIRRORS=&quot;ftp://ftp.is.co.za/linux/distributions/gentoo http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo&quot;
MAKEOPTS=&quot;-j2&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;X aalib acl acpi aim alsa apache2 apm arts audiofile avi berkdb bonobo cdr crypt cups curl dga directfb doc dvd encode esd ethereal evo fam fbcon fdftk flash foomaticdb freetds gb gd gdbm gif ginac gnome gphoto2 gpm gstreamer gtk gtk2 gtkhtml icq imagemagick imap imlib innodb jabber java jikes jpeg junit lcms libg++ libgda libwww mad mbox mcal memlimit mikmod mmx motif mozilla mpeg mpi msn mssql mysql ncurses nls oci8 odbc oggvorbis opengl oscar oss pam pcmcia pcre pda pdflib perl plotutils png pnp postgres ppds prelude python quicktime readline samba scanner sdl slang slp spell sse ssl svg svga szip tcpd tiff truetype trusted unicode usb vhosts wmf wxwindows x86 xinerama xml xml2 xmms xosd xv xvid yahoo zeo zlib&quot;


</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>cshring@gmail.com</who>
            <bug_when>2004-07-05 10:10:57 0000</bug_when>
            <thetext>PROPOSED RESOLUTION :
The original error viz. the 

       about_dlg.cpp: In constructor `AboutDlg::AboutDlg(wxWindow*)&apos;:
       about_dlg.cpp:31: error: conversion from `const char[1]&apos; to `const wxString&apos; is ambiguous

is resolved by compiling the wxGTK with unicode turned off i.e 
USE=&quot;-unicode&quot; emerge wxGTK
Not the best way of doing things but till rapidsvn guys check the unicode strings  problem, this one works.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>klausman@gentoo.org</who>
            <bug_when>2004-07-11 08:50:41 0000</bug_when>
            <thetext>The -unicde fix works for me. Thanks.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>calin@ajvar.org</who>
            <bug_when>2004-08-11 10:43:54 0000</bug_when>
            <thetext>Created an attachment (id=37234)
Patch to make rapidsvn compile on unicode wxGTK systems (only tested on a
unicode system!)

This patch fixes the rapidsvn sourcecode to correctly use unicode strings when
interacting with wxGTK.  This fixes the compile errors one gets if one has a
unicode wxGTK library.

I have not tested this patch on non-unicode systems so I advice applying it in
the ebuild only to the unicode case.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>calin@ajvar.org</who>
            <bug_when>2004-08-11 10:45:21 0000</bug_when>
            <thetext>I created a patch that fixes the rapidsvn sourcecode to compile ok on unicode wxGTK systems.

It makes the rapidsvn sources correctly use unicode strings when interacting with wxGTK.  This fixes the compile errors one gets if one has a unicode wxGTK library.

I have not tested this patch on non-unicode systems so I advice applying it in the ebuild only to the unicode case.

Can someone add this patch to the ebuild?  It works and is better than the currently broken state of rapidsvn on unicode wxGTK systems...
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>calin@ajvar.org</who>
            <bug_when>2004-08-11 11:27:49 0000</bug_when>
            <thetext>Argh!  Please ignore my patch.  It leads to a broken rapidsvn that quickly crashes.  :(

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ht_gentoo04@arcor.de</who>
            <bug_when>2004-08-29 06:48:49 0000</bug_when>
            <thetext>Created an attachment (id=38428)
rapidsvn-0.6.0_ebuild.patch

- adds documentation
- fixes this bug #55569
- fixes libsvncpp.so containing unresolved symbols (together with following
patch in ${PORTDIR}/dev-util/rapidsvn/files</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ht_gentoo04@arcor.de</who>
            <bug_when>2004-08-29 06:52:40 0000</bug_when>
            <thetext>Created an attachment (id=38429)
svncpp_0.6.1_link.patch

- links libsvncpp.so against missing libraries

Patch is against rapidsvn 0.6.1 draft (revision 7100), but works with 0.6.0,
too.
Could post rapidsvn 0.6.1 ebuild (building from repository), too, if anyone
interested.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ht_gentoo04@arcor.de</who>
            <bug_when>2004-08-29 06:57:30 0000</bug_when>
            <thetext>Created an attachment (id=38430)
rapidsvn-0.6.0_ebuild.patch

sorry, this replaces the wrong file which did not contain the line ./autogen.sh</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sgala@apache.org</who>
            <bug_when>2004-12-08 05:15:47 0000</bug_when>
            <thetext>The same error happens with rapidsvn 0.70.0, both with gcc 3.3.4 and 3.4.3

When I tried to emerge wxGTK 2.5 to try with it, it failed too, with both gcc versions.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>andrew_esh@comcast.net</who>
            <bug_when>2005-03-10 09:21:14 0000</bug_when>
            <thetext>A different bug: I get this on an x86, using KDE, and gtk+ 2.6.2.

mkdir .libs
i386-pc-linux-gnu-g++ -O2 -mcpu=pentium3 -fomit-frame-pointer -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-2.4 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -o .libs/rapidsvn about_dlg.o action.o add_action.o auth_dlg.o bookmarks.o cert_dlg.o checkout_action.o checkout_dlg.o cleanup_action.o commit_action.o commit_dlg.o delete_action.o delete_dlg.o destination_dlg.o diff_action.o diff_dlg.o exceptions.o external_program_action.o filelist_ctrl.o file_info.o folder_browser.o folder_item_data.o get_action.o import_action.o import_dlg.o listed_dlg.o listener.o log_action.o log_dlg.o merge_action.o merge_dlg.o mkdir_action.o move_action.o preferences.o preferences_dlg.o property_action.o property_dlg.o proportional_splitter.o rapidsvn_app.o rapidsvn_frame.oreport_dlg.o resolve_action.o revert_action.o simple_worker.o switch_action.o tracer.o trace_update.o tviewer.o update_action.o update_dlg.o utils.o verblist.o view_action.o -Wl,-rpath -Wl,/usr/lib -O2 -mcpu=pentium3 -fomit-frame-pointer  -L/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src/svncpp /var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src/svncpp/.libs/libsvncpp.so -L/usr/lib /usr/lib/libsvn_client-1.so /usr/lib/libsvn_wc-1.so /usr/lib/libsvn_ra-1.so /usr/lib/libsvn_delta-1.so /usr/lib/libsvn_subr-1.so /usr/lib/libneon.so -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv /usr/lib/libxml2.so -lz /usr/lib/libapr-0.so -lrt -lm -lcrypt -lnsl -lpthread -ldl /usr/lib/libaprutil-0.so /usr/lib/libgdbm.so /usr/lib/libdb-4.1.so /usr/lib/libexpat.so -pthread-lwx_gtk2-2.4
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_detach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_attach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_rc_context_get_default_font_name&apos;
collect2: ld returned 1 exit status
make[2]: *** [rapidsvn] Error 1
make[2]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make: *** [all-recursive] Error 1</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>andrew_esh@comcast.net</who>
            <bug_when>2005-03-10 09:24:20 0000</bug_when>
            <thetext>I get this on an x86, using KDE 3.3.2 and gtk+ 2.6.2

mkdir .libs
i386-pc-linux-gnu-g++ -O2 -mcpu=pentium3 -fomit-frame-pointer -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-2.4 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -o .libs/rapidsvn about_dlg.o action.o add_action.o auth_dlg.o bookmarks.o cert_dlg.o checkout_action.o checkout_dlg.o cleanup_action.o commit_action.o commit_dlg.o delete_action.o delete_dlg.o destination_dlg.o diff_action.o diff_dlg.o exceptions.o external_program_action.o filelist_ctrl.o file_info.o folder_browser.o folder_item_data.o get_action.o import_action.o import_dlg.o listed_dlg.o listener.o log_action.o log_dlg.o merge_action.o merge_dlg.o mkdir_action.o move_action.o preferences.o preferences_dlg.o property_action.o property_dlg.o proportional_splitter.o rapidsvn_app.o rapidsvn_frame.oreport_dlg.o resolve_action.o revert_action.o simple_worker.o switch_action.o tracer.o trace_update.o tviewer.o update_action.o update_dlg.o utils.o verblist.o view_action.o -Wl,-rpath -Wl,/usr/lib -O2 -mcpu=pentium3 -fomit-frame-pointer  -L/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src/svncpp /var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src/svncpp/.libs/libsvncpp.so -L/usr/lib /usr/lib/libsvn_client-1.so /usr/lib/libsvn_wc-1.so /usr/lib/libsvn_ra-1.so /usr/lib/libsvn_delta-1.so /usr/lib/libsvn_subr-1.so /usr/lib/libneon.so -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv /usr/lib/libxml2.so -lz /usr/lib/libapr-0.so -lrt -lm -lcrypt -lnsl -lpthread -ldl /usr/lib/libaprutil-0.so /usr/lib/libgdbm.so /usr/lib/libdb-4.1.so /usr/lib/libexpat.so -pthread-lwx_gtk2-2.4
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_detach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_attach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_rc_context_get_default_font_name&apos;
collect2: ld returned 1 exit status
make[2]: *** [rapidsvn] Error 1
make[2]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/rapidsvn-0.6.0/work/rapidsvn-0.6.0/src&apos;
make: *** [all-recursive] Error 1
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dholm@gentoo.org</who>
            <bug_when>2005-03-20 04:18:28 0000</bug_when>
            <thetext>*** Bug 85988 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dholm@gentoo.org</who>
            <bug_when>2005-03-20 04:20:13 0000</bug_when>
            <thetext>What happens if you recompile wxGTK without the &quot;unicode&quot; flag?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>waebbl@gmx.de</who>
            <bug_when>2005-03-20 11:56:08 0000</bug_when>
            <thetext>Thanks, when recompiling without unicode USE flag, compilation succeeds and the program seems to work at a first attempt, i.e. it won&apos;t crash immediately. I tried an update of my local libgdiplus svn repository and it worked.

I was using rel. 0.7.1.

It it safe to remerge wxGTK with unicode enabled again? Or will I get into runtime troubles?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>charle.demers@cesart.com</who>
            <bug_when>2005-04-06 08:52:23 0000</bug_when>
            <thetext>I get the same :

/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_detach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_accel_group_attach&apos;
/usr/lib/libwx_gtk2-2.4.so: undefined reference to `_gtk_rc_context_get_default_font_name&apos;
collect2: ld returned 1 exit status
make[2]: *** [rapidsvn] Error 1
make[2]: Leaving directory `/var/tmp/portage/rapidsvn-0.7.1/work/rapidsvn-0.7.1/src&apos;
make[1]: *** [all-recursive] Error 1
[...]

On rapidsvn 0.7.1 *without* the global unicode flag.

At some point, the binary (already compiled) rapidsvn stoped working complaining about missing symbols :

rapidsvn: symbol lookup error: /usr/lib/libwx_gtk2-2.4.so: undefined symbol: _gtk_accel_group_attach

I dont use rapidsvn often so I guess it must have started when I re-compiled wxGTK, but I dont see why.  This is my current gtk use flag settings :

[ebuild   R   ] x11-libs/wxGTK-2.4.2-r2  -debug +gtk2 -no_wxgtk1 -odbc +opengl -unicode 5,255 kB

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>pythonhead@gentoo.org</who>
            <bug_when>2005-04-06 09:28:27 0000</bug_when>
            <thetext>Charle, the problem you have isn&apos;t the same as the original bug (unicode). Recent gtk+ versions have dropped some private functions wxGTK used. Re-emerging wxGTK will fix it. As for the unicode problem see bug# 62724 for a patch</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>nerdboy@gentoo.org</who>
            <bug_when>2005-05-30 20:58:34 0000</bug_when>
            <thetext>The link patch and a re-implemented 0.6.0-r1 is now in CVS.  It was broken for 
me and now it&apos;s fixed...</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2005-05-31 02:54:38 0000</bug_when>
            <thetext>*** Bug 94596 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dking@pimpsoft.com</who>
            <bug_when>2005-05-31 03:23:23 0000</bug_when>
            <thetext>(In reply to comment #19)
&gt; *** Bug 94596 has been marked as a duplicate of this bug. ***

Then that would mean that this bug is not fixed or resolved as that bug status
says it is. If your getting it on systems still, then you still have a problem
and this bug should not be closed, correct?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2005-05-31 03:38:08 0000</bug_when>
            <thetext>*** Bug 94596 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2005-05-31 03:44:58 0000</bug_when>
            <thetext>(In reply to comment #20)

&gt; Then that would mean that this bug is not fixed or resolved as that bug status
&gt; says it is. If your getting it on systems still, then you still have a problem
&gt; and this bug should not be closed, correct?

It</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2005-05-31 03:44:58 0000</bug_when>
            <thetext>(In reply to comment #20)

&gt; Then that would mean that this bug is not fixed or resolved as that bug status
&gt; says it is. If your getting it on systems still, then you still have a problem
&gt; and this bug should not be closed, correct?

It´s fixed in 0.6.0-r1 (not 0.6.0) - as clearly stated in Comment #18. </thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>37234</attachid>
            <date>2004-08-11 10:43 0000</date>
            <desc>(BROKEN) Patch to make rapidsvn compile on unicode wxGTK systems (only tested on a unicode system, and while it compiles, the program becomes unstable!)</desc>
            <filename>rapidsvn-0.6.0-unicode-fix.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2Fib3V0X2RsZy5jcHAgcmFwaWRzdm4tMC42LjAt
dW5pY29kZS1maXhlZC9zcmMvYWJvdXRfZGxnLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2Fi
b3V0X2RsZy5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNy4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlk
c3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2Fib3V0X2RsZy5jcHAJMjAwNC0wOC0xMCAxMjoy
OTo1OS4wMDAwMDAwMDAgLTA0MDAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJyZXMvYml0
bWFwcy9sb2dvLnhwbSIKIAogQWJvdXREbGc6OkFib3V0RGxnICh3eFdpbmRvdyAqIHBhcmVudCkK
LSAgOiB3eERpYWxvZyAocGFyZW50LCAtMSwgIiIsIHd4RGVmYXVsdFBvc2l0aW9uKQorICA6IHd4
RGlhbG9nIChwYXJlbnQsIC0xLCB3eFN0cmluZygpLCB3eERlZmF1bHRQb3NpdGlvbikKIHsKICAg
d3hTdHJpbmcgdGl0bGU7CiAgIHRpdGxlLlByaW50ZiAoXygiQWJvdXQgJXMiKSwgQVBQTElDQVRJ
T05fTkFNRSk7CkBAIC0zNSw3ICszNSw3IEBACiAKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IHNjaGVtYXNWZWN0b3IgPQogICAgIHN2bjo6VXJsOjpzdXBwb3J0ZWRTY2hlbWFzICgpOwotICB3
eFN0cmluZyBzY2hlbWFzU3RyICgiIik7CisgIHd4U3RyaW5nIHNjaGVtYXNTdHI7CiAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CiAgIGJvb2wgZmlyc3QgPSB0
cnVlOwogICBmb3IgKGl0ID0gc2NoZW1hc1ZlY3Rvci5iZWdpbiAoKTsgaXQgIT0gc2NoZW1hc1Zl
Y3Rvci5lbmQgKCk7IGl0KyspCkBAIC00MywxMCArNDMsMTAgQEAKICAgICBpZiAoZmlyc3QpCiAg
ICAgICBmaXJzdCA9IGZhbHNlOwogICAgIGVsc2UKLSAgICAgIHNjaGVtYXNTdHIgKz0gIlxuIjsK
KyAgICAgIHNjaGVtYXNTdHIgKz0gd3hTdHJpbmcoIlxuIiwgd3hDb252TG9jYWwpOwogICAgIHN0
ZDo6c3RyaW5nIHNjaGVtYSA9ICppdDsKLSAgICBzY2hlbWFzU3RyICs9ICItICI7Ci0gICAgc2No
ZW1hc1N0ciArPSBzY2hlbWEuY19zdHIgKCk7CisgICAgc2NoZW1hc1N0ciArPSB3eFN0cmluZygi
LSAiLCB3eENvbnZMb2NhbCk7CisgICAgc2NoZW1hc1N0ciArPSB3eFN0cmluZyhzY2hlbWEuY19z
dHIgKCksIHd4Q29udkxvY2FsKTsKICAgfQogICAgIAogCkBAIC02OSwzNCArNjksMzQgQEAKICAg
ICAgICAgICAgICAgICAgICAgIFNWTl9WRVJfTUlDUk8pOwogCiAgIHd4U3RyaW5nIHd4OwotICB3
eC5QcmludGYgKCJ3eFdpbmRvd3MgJWQuJWQuJWQiLAorICB3eC5QcmludGYgKF8oInd4V2luZG93
cyAlZC4lZC4lZCIpLAogICAgICAgICAgICAgIHd4TUFKT1JfVkVSU0lPTiwgCiAgICAgICAgICAg
ICAgd3hNSU5PUl9WRVJTSU9OLCAKICAgICAgICAgICAgICB3eFJFTEVBU0VfTlVNQkVSKTsKICAg
CiAgIHd4U3RyaW5nIGNvcHk7Ci0gIGNvcHkuUHJpbnRmICgiJXNcbiIgLy8gdmVyc2lvbgotICAg
ICAgICAgICAgICAgIiVzXG4iIC8vIG1pbGVzdG9uZQotICAgICAgICAgICAgICAgIlxuJXNcblxu
IiAvLyBjb3B5cmlnaHQKLSAgICAgICAgICAgICAgICIlc1xuIiAvLyBmb3IgbW9yZSBpbmZvcm1h
dGlvbgotICAgICAgICAgICAgICAgImh0dHA6Ly9yYXBpZHN2bi50aWdyaXMub3JnXG4iLAorICBj
b3B5LlByaW50ZiAoXygiJXNcbiIgLy8gdmVyc2lvbgorICAgICAgICAgICAgICAgICAiJXNcbiIg
Ly8gbWlsZXN0b25lCisgICAgICAgICAgICAgICAgICJcbiVzXG5cbiIgLy8gY29weXJpZ2h0Cisg
ICAgICAgICAgICAgICAgICIlc1xuIiAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgICAgICAg
ICAgICAgICAiaHR0cDovL3JhcGlkc3ZuLnRpZ3Jpcy5vcmdcbiIpLAogICAgICAgICAgICAgICAg
dmVyc2lvbi5jX3N0ciAoKSwKICAgICAgICAgICAgICAgIG1pbGVzdG9uZS5jX3N0ciAoKSwKICAg
ICAgICAgICAgICAgIFJBUElEU1ZOX0NPUFlSSUdIVCwKICAgICAgICAgICAgICAgIF8oIkZvciBt
b3JlIGluZm9ybWF0aW9uIHNlZToiKSk7CiAKICAgd3hTdHJpbmcgYnVpbHQ7Ci0gIGJ1aWx0LlBy
aW50ZiAoIiVzXG4iIC8vIGJ1aWx0IHdpdGgKLSAgICAgICAgICAgICAgICAiJXNcbiIgLy8gc3Vi
dmVyc2lvbgotICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAiJXMiLCAvLyB3
eHdpbmRvd3MKKyAgYnVpbHQuUHJpbnRmIChfKCIlc1xuIiAvLyBidWlsdCB3aXRoCisgICAgICAg
ICAgICAgICAgICAiJXNcbiIgLy8gc3VidmVyc2lvbgorICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgIiVzIiksIC8vIHd4d2luZG93cwogICAgICAgICAgICAgICAgIF8o
IkJ1aWx0IHdpdGg6IiksCiAgICAgICAgICAgICAgICAgc3VidmVyc2lvbi5jX3N0ciAoKSwKICAg
ICAgICAgICAgICAgICB3eC5jX3N0ciAoKSk7CiAKICAgd3hTdHJpbmcgc2NoZW1hczsKLSAgc2No
ZW1hcy5QcmludGYgKCIlc1xuIiAvLyAic3VwcG9ydGVkIHVybCBzY2hlbWFzIgotICAgICAgICAg
ICAgICAgICAgIiVzIiwgLy8gbGlzdCBvZiBzY2hlbWFzCisgIHNjaGVtYXMuUHJpbnRmIChfKCIl
c1xuIiAvLyAic3VwcG9ydGVkIHVybCBzY2hlbWFzIgorICAgICAgICAgICAgICAgICAgICAiJXMi
KSwgLy8gbGlzdCBvZiBzY2hlbWFzCiAgICAgICAgICAgICAgICAgICBfKCJTdXBwb3J0ZWQgVVJM
IHNjaGVtYXM6ICIpLAogICAgICAgICAgICAgICAgICAgc2NoZW1hc1N0ci5jX3N0ciAoKSk7CiAK
ZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2FjdGlvbi5jcHAgcmFwaWRzdm4tMC42LjAtdW5p
Y29kZS1maXhlZC9zcmMvYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2FjdGlvbi5j
cHAJMjAwNC0wNS0yNCAxMTo0NToxNC4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4w
LXVuaWNvZGUtZml4ZWQvc3JjL2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxMjo0MDowMS4wMDAwMDAw
MDAgLTA0MDAKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIHN1YnZlcnNpb24gYXBpCiAjaW5jbHVkZSAi
c3ZuX3djLmgiCiAKLXN0YXRpYyBjb25zdCBjaGFyICoKK3N0YXRpYyBjb25zdCB3eENoYXIgKgog
QUNUSU9OX05BTUVTIFtdID0KIHsKICAgXygiQWRkIiksICAgICAgICAgICAvLyBzdm5fd2Nfbm90
aWZ5X2FkZCwKQEAgLTI3NSw3ICsyNzUsNyBAQAogCiAgIGlmIChyZXN1bHQpCiAgIHsKLSAgICB3
eFNldFdvcmtpbmdEaXJlY3RvcnkgKG0tPnBhdGguY19zdHIgKCkpOworICAgIHd4U2V0V29ya2lu
Z0RpcmVjdG9yeSAod3hTdHJpbmcobS0+cGF0aC5jX3N0ciAoKSwgd3hDb252TG9jYWwpKTsKICAg
fQogCiAgIHJldHVybiByZXN1bHQ7CkBAIC0yOTAsMTMgKzI5MCwxMyBAQAogY29uc3QgY2hhciAq
IAogQWN0aW9uOjpHZXROYW1lICgpIGNvbnN0CiB7Ci0gIHJldHVybiBtLT5uYW1lLmNfc3RyICgp
OworICByZXR1cm4gbS0+bmFtZS5Ub0FzY2lpICgpOwogfQogCiB2b2lkCiBBY3Rpb246OlNldE5h
bWUgKGNvbnN0IGNoYXIgKiBuYW1lKQogewotICBtLT5uYW1lID0gbmFtZTsKKyAgbS0+bmFtZSA9
IHd4U3RyaW5nKG5hbWUsIHd4Q29udkxvY2FsKTsKIH0KIAogdm9pZApAQCAtMzM2LDcgKzMzNiw3
IEBACiAgIGlmIChyZXZpc2lvbi5raW5kICgpID09IHJldmlzaW9uLkhFQUQpCiAgICAgcmV2U3Ry
ID0gXygiSEVBRCIpOwogICBlbHNlCi0gICAgcmV2U3RyLlByaW50ZiAoIiUiIFNWTl9SRVZOVU1f
VF9GTVQsIHJldmlzaW9uLnJldm51bSAoKSk7CisgICAgcmV2U3RyLlByaW50ZiAoXygiJSIgU1ZO
X1JFVk5VTV9UX0ZNVCksIHJldmlzaW9uLnJldm51bSAoKSk7CiAKICAgd3hTdHJpbmcgbXNnOwog
ICBtc2cuUHJpbnRmIChfKCJHZXQgZmlsZSAlcyByZXYuICVzIiksCmRpZmYgLXVyIHJhcGlkc3Zu
LTAuNi4wL3NyYy9hdXRoX2RsZy5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMv
YXV0aF9kbGcuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvYXV0aF9kbGcuY3BwCTIwMDQtMDUt
MjQgMTE6NDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZp
eGVkL3NyYy9hdXRoX2RsZy5jcHAJMjAwNC0wOC0xMCAxMjo0MTozNy4wMDAwMDAwMDAgLTA0MDAK
QEAgLTQzLDcgKzQzLDcgQEAKICAgICAgICAgbmV3IHd4U3RhdGljVGV4dCAod2luZG93LCAtMSwg
XygiVXNlciIpKTsKIAogICAgICAgdGV4dFVzZXIgPSBuZXcgd3hUZXh0Q3RybCAoCi0gICAgICAg
IHdpbmRvdywgLTEsICIiLCB3eERlZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwgMCwKKyAg
ICAgICAgd2luZG93LCAtMSwgXygiIiksIHd4RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRTaXpl
LCAwLAogICAgICAgICB3eFRleHRWYWxpZGF0b3IgKHd4RklMVEVSX05PTkUsICZVc2VybmFtZSkp
OwogICAgIH0KIApAQCAtNTEsNyArNTEsNyBAQAogICAgICAgbmV3IHd4U3RhdGljVGV4dCAod2lu
ZG93LCAtMSwgXygiUGFzc3dvcmQiKSk7CiAKICAgICB3eFRleHRDdHJsKiB0ZXh0UGFzc3dvcmQg
PSBuZXcgd3hUZXh0Q3RybCAoCi0gICAgICB3aW5kb3csIC0xLCAiIiwgd3hQb2ludCgtMSwtMSks
IAorICAgICAgd2luZG93LCAtMSwgXygiIiksIHd4UG9pbnQoLTEsLTEpLCAKICAgICAgIHd4RGVm
YXVsdFNpemUsIHd4VEVfUEFTU1dPUkQsIAogICAgICAgd3hUZXh0VmFsaWRhdG9yICh3eEZJTFRF
Ul9OT05FLCAmUGFzc3dvcmQpKTsKIApAQCAtMTE3LDEzICsxMTcsMTMgQEAKIGNvbnN0IGNoYXIg
KiAKIEF1dGhEbGc6OkdldFVzZXJuYW1lICgpIGNvbnN0CiB7Ci0gIHJldHVybiBtLT5Vc2VybmFt
ZS5jX3N0ciAoKTsKKyAgcmV0dXJuIG0tPlVzZXJuYW1lLlRvQXNjaWkgKCk7CiB9CiAKIGNvbnN0
IGNoYXIgKgogQXV0aERsZzo6R2V0UGFzc3dvcmQgKCkgY29uc3QKIHsKLSAgcmV0dXJuIG0tPlBh
c3N3b3JkLmNfc3RyICgpOworICByZXR1cm4gbS0+UGFzc3dvcmQuVG9Bc2NpaSAoKTsKIH0KIAog
LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2Jvb2ttYXJrcy5jcHAgcmFw
aWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvYm9va21hcmtzLmNwcAotLS0gcmFwaWRzdm4t
MC42LjAvc3JjL2Jvb2ttYXJrcy5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNC4wMDAwMDAwMDAgLTA0
MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2Jvb2ttYXJrcy5jcHAJMjAw
NC0wOC0xMCAxMjo0NTo0NC4wMDAwMDAwMDAgLTA0MDAKQEAgLTcwLDEzICs3MCwxMyBAQAogICB2
b2lkIAogICBBZGRCb29rbWFyayAoY29uc3QgY2hhciAqIG5hbWVfKQogICB7Ci0gICAgd3hTdHJp
bmcgbmFtZSAobmFtZV8pOworICAgIHd4U3RyaW5nIG5hbWUgKG5hbWVfLCB3eENvbnZMb2NhbCk7
CiAKICAgICBUcmltU3RyaW5nIChuYW1lKTsKIAogICAgIGlmICghc3ZuOjpVcmw6OmlzVmFsaWQg
KG5hbWVfKSkKICAgICB7Ci0gICAgICB3eEZpbGVOYW1lIGZpbGVuYW1lIChuYW1lXyk7CisgICAg
ICB3eEZpbGVOYW1lIGZpbGVuYW1lIChuYW1lKTsKICAgICAgIG5hbWUgPSBmaWxlbmFtZS5HZXRG
dWxsUGF0aCAod3hQQVRIX05BVElWRSk7CiAgICAgfQogCkBAIC05Myw3ICs5Myw3IEBACiAgIGJv
b2wKICAgUmVtb3ZlQm9va21hcmsgKGNvbnN0IGNoYXIgKiBwYXRoKQogICB7Ci0gICAgaW50IGlu
ZGV4ID0gYm9va21hcmtzLkluZGV4IChwYXRoKTsKKyAgICBpbnQgaW5kZXggPSBib29rbWFya3Mu
SW5kZXggKHd4U3RyaW5nKHBhdGgsIHd4Q29udkxvY2FsKSk7CiAKICAgICBpZiAoaW5kZXggPT0g
d3hOT1RfRk9VTkQpCiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzEsNyArMTcxLDcgQEAKIEJv
b2ttYXJrczo6R2V0Qm9va21hcmsgKGNvbnN0IHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgd3hT
dHJpbmcgYm9va21hcmsgPSBtLT5ib29rbWFya3NbaW5kZXhdOwotICByZXR1cm4gYm9va21hcmsu
Y19zdHIgKCk7CisgIHJldHVybiBib29rbWFyay5Ub0FzY2lpKCk7CiB9CiAKIHN2bjo6Q29udGV4
dCAqCkBAIC0xODcsNyArMTg3LDcgQEAKIHN2bjo6Q29udGV4dCAqCiBCb29rbWFya3M6OkdldENv
bnRleHQgKGNvbnN0IGNoYXIgKiBwYXRoKQogewotICBpbnQgaW5kZXggPSBtLT5ib29rbWFya3Mu
SW5kZXggKHBhdGgpOworICBpbnQgaW5kZXggPSBtLT5ib29rbWFya3MuSW5kZXggKHd4U3RyaW5n
KHBhdGgsIHd4Q29udkxvY2FsKSk7CiAKICAgaWYgKGluZGV4ID09IHd4Tk9UX0ZPVU5EKQogICAg
IHJldHVybiAwOwpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvY2VydF9kbGcuY3BwIHJhcGlk
c3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2NlcnRfZGxnLmNwcAotLS0gcmFwaWRzdm4tMC42
LjAvc3JjL2NlcnRfZGxnLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE5LjAwMDAwMDAwMCAtMDQwMAor
KysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvY2VydF9kbGcuY3BwCTIwMDQtMDgt
MTAgMTI6NTA6NDIuMDAwMDAwMDAwIC0wNDAwCkBAIC0zMyw3ICszMyw3IEBACiB0eXBlZGVmIHN0
cnVjdAogewogICB3eFVpbnQzMiBmYWlsdXJlOwotICBjb25zdCBjaGFyICogZGVzY3I7CisgIGNv
bnN0IHd4Q2hhciAqIGRlc2NyOwogfSBGYWlsdXJlRW50cnk7CiAKIHN0YXRpYyBjb25zdCBGYWls
dXJlRW50cnkgQ0VSVF9GQUlMVVJFUyBbXSA9CkBAIC02Niw3ICs2Niw3IEBACiAgIHd4U3RhdGlj
VGV4dCAqIGxhYmVsVGl0bGUgPSBuZXcgd3hTdGF0aWNUZXh0ICgKICAgICB0aGlzLCAtMSwgXygi
VGhlcmUgd2VyZSBlcnJvcnMgdmFsaWRhdGluZyB0aGUgc2VydmVyIGNlcnRpZmljYXRlLlxuRG8g
eW91IHdhbnQgdG8gdHJ1c3QgdGhpcyBjZXJ0aWZpY2F0ZT8iKSk7CiAKLSAgd3hTdHJpbmcgZmFp
bHVyZVN0ciAoIiIpOworICB3eFN0cmluZyBmYWlsdXJlU3RyIChfKCIiKSk7CiAKICAgY29uc3Qg
aW50IGNvdW50ID0gc2l6ZW9mIChDRVJUX0ZBSUxVUkVTKS9zaXplb2YgKENFUlRfRkFJTFVSRVNb
MF0pOwogICBmb3IgKGludCBpPTA7IGkgPCBjb3VudDsgaSsrKQpAQCAtNzQsNyArNzQsNyBAQAog
ICAgIGlmICgoQ0VSVF9GQUlMVVJFU1tpXS5mYWlsdXJlICYgdHJ1c3REYXRhLmZhaWx1cmVzKSAh
PSAwKQogICAgIHsKICAgICAgIGZhaWx1cmVTdHIgKz0gQ0VSVF9GQUlMVVJFU1tpXS5kZXNjcjsK
LSAgICAgIGZhaWx1cmVTdHIgKz0gIlxuIjsKKyAgICAgIGZhaWx1cmVTdHIgKz0gXygiXG4iKTsK
ICAgICB9CiAgIH0KIApAQCAtOTQsMjMgKzk0LDIzIEBACiAgIGNlcnRTaXplci0+QWRkIChuZXcg
d3hTdGF0aWNUZXh0ICgKICAgICB0aGlzLCAtMSwgXygiSG9zdG5hbWU6IikpKTsKICAgY2VydFNp
emVyLT5BZGQgKG5ldyB3eFN0YXRpY1RleHQgKAotICAgIHRoaXMsIC0xLCB0cnVzdERhdGEuaG9z
dG5hbWUuY19zdHIgKCkpKTsKKyAgICB0aGlzLCAtMSwgd3hTdHJpbmcodHJ1c3REYXRhLmhvc3Ru
YW1lLmNfc3RyKCksIHd4Q29udkxvY2FsKSApICk7CiAgIGNlcnRTaXplci0+QWRkIChuZXcgd3hT
dGF0aWNUZXh0ICgKICAgICB0aGlzLCAtMSwgXygiSXNzdWU6IikpKTsKICAgY2VydFNpemVyLT5B
ZGQgKG5ldyB3eFN0YXRpY1RleHQgKAotICAgIHRoaXMsIC0xLCB0cnVzdERhdGEuaXNzdWVyRE5h
bWUuY19zdHIgKCkpKTsKKyAgICB0aGlzLCAtMSwgd3hTdHJpbmcodHJ1c3REYXRhLmlzc3VlckRO
YW1lLmNfc3RyKCksIHd4Q29udkxvY2FsKSApKTsKICAgY2VydFNpemVyLT5BZGQgKG5ldyB3eFN0
YXRpY1RleHQgKAogICAgIHRoaXMsIC0xLCBfKCJWYWxpZCBmcm9tOiIpKSk7CiAgIGNlcnRTaXpl
ci0+QWRkIChuZXcgd3hTdGF0aWNUZXh0ICgKLSAgICB0aGlzLCAtMSwgdHJ1c3REYXRhLnZhbGlk
RnJvbS5jX3N0ciAoKSkpOworICAgIHRoaXMsIC0xLCB3eFN0cmluZyh0cnVzdERhdGEudmFsaWRG
cm9tLmNfc3RyKCksIHd4Q29udkxvY2FsKSApKTsKICAgY2VydFNpemVyLT5BZGQgKG5ldyB3eFN0
YXRpY1RleHQgKAogICAgIHRoaXMsIC0xLCBfKCJWYWxpZCB1bnRpbDoiKSkpOwogICBjZXJ0U2l6
ZXItPkFkZCAobmV3IHd4U3RhdGljVGV4dCAoCi0gICAgdGhpcywgLTEsIHRydXN0RGF0YS52YWxp
ZFVudGlsLmNfc3RyICgpKSk7CisgICAgdGhpcywgLTEsIHd4U3RyaW5nKHRydXN0RGF0YS52YWxp
ZFVudGlsLmNfc3RyKCksIHd4Q29udkxvY2FsKSApKTsKICAgY2VydFNpemVyLT5BZGQgKG5ldyB3
eFN0YXRpY1RleHQgKAogICAgIHRoaXMsIC0xLCBfKCJGaW5nZXJwcmludDoiKSkpOwogICBjZXJ0
U2l6ZXItPkFkZCAobmV3IHd4U3RhdGljVGV4dCAoCi0gICAgdGhpcywgLTEsIHRydXN0RGF0YS5m
aW5nZXJwcmludC5jX3N0ciAoKSkpOworICAgIHRoaXMsIC0xLCB3eFN0cmluZyh0cnVzdERhdGEu
ZmluZ2VycHJpbnQuY19zdHIoKSwgd3hDb252TG9jYWwpICkpOwogCiAgIHd4U3RhdGljQm94ICog
Y2VydEJveCA9IG5ldyB3eFN0YXRpY0JveCAoCiAgICAgdGhpcywgLTEsIF8oIkNlcnRpZmljYXRl
IEluZm9ybWF0aW9uOiIpKTsKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2NoZWNrb3V0X2Fj
dGlvbi5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvY2hlY2tvdXRfYWN0aW9u
LmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2NoZWNrb3V0X2FjdGlvbi5jcHAJMjAwNC0wNS0y
NCAxMTo0NToxNC4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4
ZWQvc3JjL2NoZWNrb3V0X2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxMjo1MzowMC4wMDAwMDAwMDAg
LTA0MDAKQEAgLTY3LDggKzY3LDggQEAKICAgfQogICAKICAgd3hTZXRXb3JraW5nRGlyZWN0b3J5
IChtX2RhdGEuRGVzdEZvbGRlcik7Ci0gIGNsaWVudC5jaGVja291dCAobV9kYXRhLlJlcFVybC5j
X3N0ciAoKSwgCi0gICAgICAgICAgICAgICAgICAgbV9kYXRhLkRlc3RGb2xkZXIuY19zdHIgKCks
IAorICBjbGllbnQuY2hlY2tvdXQgKG1fZGF0YS5SZXBVcmwuVG9Bc2NpaSAoKSwgCisgICAgICAg
ICAgICAgICAgICAgc3ZuOjpQYXRoKG1fZGF0YS5EZXN0Rm9sZGVyLlRvQXNjaWkgKCkpLCAKICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbiwgbV9kYXRhLlJlY3Vyc2l2ZSk7CiAKICAgLy8gbm93
IHBvc3QgZXZlbnQgdG8gYWRkIGJvb2ttYXJrIHRvIGJvb2ttYXJrcwpkaWZmIC11ciByYXBpZHN2
bi0wLjYuMC9zcmMvY2hlY2tvdXRfZGxnLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVk
L3NyYy9jaGVja291dF9kbGcuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvY2hlY2tvdXRfZGxn
LmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE0LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42
LjAtdW5pY29kZS1maXhlZC9zcmMvY2hlY2tvdXRfZGxnLmNwcAkyMDA0LTA4LTEwIDEyOjU0OjQw
LjAwMDAwMDAwMCAtMDQwMApAQCAtNDQsMjMgKzQ0LDIzIEBACiAgICAgLy8gY3JlYXRlIGNvbnRy
b2xzCiAgICAgd3hUZXh0VmFsaWRhdG9yIHZhbE1vZHVsZSAod3hGSUxURVJfTk9ORSwgJmRhdGEu
UmVwVXJsKTsKICAgICBtX3RleHRSZXBVcmwgPSAKLSAgICAgIG5ldyB3eFRleHRDdHJsICh3bmQs
IC0xLCAiIiwgd3hQb2ludCgtMSwtMSksCisgICAgICBuZXcgd3hUZXh0Q3RybCAod25kLCAtMSwg
XygiIiksIHd4UG9pbnQoLTEsLTEpLAogICAgICAgICAgICAgICAgICAgICAgIHd4U2l6ZSgyMzUs
IC0xKSwgMCwgdmFsTW9kdWxlKTsKICAgICB3eFN0YXRpY0JveCogZGVzdEJveCA9IAogICAgICAg
bmV3IHd4U3RhdGljQm94KHduZCwgMCwgXygiRGVzdGluYXRpb24gRGlyZWN0b3J5IikpOwogICAg
IHd4VGV4dFZhbGlkYXRvciB2YWxEZXN0ICh3eEZJTFRFUl9OT05FLCAmZGF0YS5EZXN0Rm9sZGVy
KTsKICAgICBtX3RleHREZXN0ID0gCi0gICAgICBuZXcgd3hUZXh0Q3RybCAod25kLCAtMSwgIiIs
IHd4RGVmYXVsdFBvc2l0aW9uLCAKKyAgICAgIG5ldyB3eFRleHRDdHJsICh3bmQsIC0xLCBfKCIi
KSwgd3hEZWZhdWx0UG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHd4U2l6ZSgyMDUs
IC0xKSwgMCwgdmFsRGVzdCk7CiAgICAgd3hCdXR0b24qIGJyb3dzZSA9IAotICAgICAgbmV3IHd4
QnV0dG9uKHduZCwgSURfQlVUVE9OX0JST1dTRSwgIi4uLiIsIAorICAgICAgbmV3IHd4QnV0dG9u
KHduZCwgSURfQlVUVE9OX0JST1dTRSwgXygiLi4uIiksIAogICAgICAgICAgICAgICAgICAgIHd4
RGVmYXVsdFBvc2l0aW9uLCB3eFNpemUoMjAsIC0xKSApOwogCiAgICAgd3hTdGF0aWNCb3gqIHJl
dmlzaW9uQm94ID0gCiAgICAgICBuZXcgd3hTdGF0aWNCb3god25kLCAtMSwgXygiUmV2aXNpb24i
KSk7CiAgICAgd3hUZXh0VmFsaWRhdG9yIHZhbFJldmlzaW9uICh3eEZJTFRFUl9OVU1FUklDLCAm
ZGF0YS5SZXZpc2lvbik7CiAgICAgbV90ZXh0UmV2aXNpb24gPSAKLSAgICAgIG5ldyB3eFRleHRD
dHJsICh3bmQsIC0xLCAiIiwgd3hEZWZhdWx0UG9zaXRpb24sIAorICAgICAgbmV3IHd4VGV4dEN0
cmwgKHduZCwgLTEsIF8oIiIpLCB3eERlZmF1bHRQb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAg
ICAgICAgd3hTaXplKDUwLCAtMSksIDAsIHZhbFJldmlzaW9uKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgIHd4R2VuZXJpY1ZhbGlkYXRvciB2YWxMYXRlc3QgKCZkYXRhLlVzZUxh
dGVzdCk7CiAgICAgbV9jaGVja1VzZUxhdGVzdCA9IApAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAg
Ym9vbCBvayA9IHRydWU7CiAgICAgaWYgKCFjaGVja2VkKQogICAgIHsKLSAgICAgIG9rID0gQ2hl
Y2tSZXZpc2lvbiAobV90ZXh0UmV2aXNpb24tPkdldFZhbHVlICgpKTsKKyAgICAgIG9rID0gQ2hl
Y2tSZXZpc2lvbiAobV90ZXh0UmV2aXNpb24tPkdldFZhbHVlICgpLlRvQXNjaWkoKSk7CiAgICAg
fQogCiAgICAgaWYgKG1fdGV4dERlc3QtPkdldFZhbHVlICgpLkxlbmd0aCAoKSA8PSAwKQpkaWZm
IC11ciByYXBpZHN2bi0wLjYuMC9zcmMvY2xlYW51cF9hY3Rpb24uY3BwIHJhcGlkc3ZuLTAuNi4w
LXVuaWNvZGUtZml4ZWQvc3JjL2NsZWFudXBfYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAv
c3JjL2NsZWFudXBfYWN0aW9uLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE5LjAwMDAwMDAwMCAtMDQw
MAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvY2xlYW51cF9hY3Rpb24uY3Bw
CTIwMDQtMDgtMTAgMTI6NTU6NDMuMDAwMDAwMDAwIC0wNDAwCkBAIC00MCw3ICs0MCw3IEBACiAg
IHN2bjo6Q2xpZW50IGNsaWVudCAoR2V0Q29udGV4dCAoKSk7CiAgIGNvbnN0IHN2bjo6UGF0aCAm
IHBhdGggPSBHZXRQYXRoICgpOwogCi0gIHd4U2V0V29ya2luZ0RpcmVjdG9yeSAocGF0aC5jX3N0
ciAoKSk7CisgIHd4U2V0V29ya2luZ0RpcmVjdG9yeSAod3hTdHJpbmcocGF0aC5jX3N0ciAoKSwg
d3hDb252TG9jYWwpKTsKICAgY2xpZW50LmNsZWFudXAgKHBhdGguY19zdHIgKCkpOwogCiAgIHJl
dHVybiB0cnVlOwpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvY29tbWl0X2FjdGlvbi5jcHAg
cmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvY29tbWl0X2FjdGlvbi5jcHAKLS0tIHJh
cGlkc3ZuLTAuNi4wL3NyYy9jb21taXRfYWN0aW9uLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE2LjAw
MDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvY29tbWl0
X2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxMjo1OTozNS4wMDAwMDAwMDAgLTA0MDAKQEAgLTQ1LDgg
KzQ1LDggQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBtX3JlY3Vyc2l2ZSA9IGRsZy5H
ZXRSZWN1cnNpdmUgKCk7Ci0gIG1fbWVzc2FnZSA9IGRsZy5HZXRNZXNzYWdlICgpOworICBtX3Jl
Y3Vyc2l2ZSA9IGRsZy5HZXRSZWN1cnNpdmUoKTsKKyAgbV9tZXNzYWdlID0gd3hTdHJpbmcoZGxn
LkdldE1lc3NhZ2UgKCksIHd4Q29udkxvY2FsKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5
LDggKzU5LDggQEAKIAogICAvLyBXT1JLQVJPVU5EOiBDT05WRVJUIFRPIFVURjgKICAgLy8gbWVz
c2FnZSA9IG1fbWVzc2FnZS5jX3N0ciAoKTsKLSAgd3hTdHJpbmcgbWVzc2FnZVV0ZjggKG1fbWVz
c2FnZS5tYl9zdHIgKHd4Q29udlVURjgpKTsKLSAgY29uc3QgY2hhciAqIG1lc3NhZ2UgPSBtZXNz
YWdlVXRmOC5jX3N0ciAoKTsKKyAgd3hTdHJpbmcgbWVzc2FnZVV0ZjggKG1fbWVzc2FnZS5tYl9z
dHIgKHd4Q29udlVURjgpLCB3eENvbnZMb2NhbCk7CisgIGNvbnN0IGNoYXIgKiBtZXNzYWdlID0g
bWVzc2FnZVV0ZjguVG9Bc2NpaSAoKTsKIAogICBzdm46OlBvb2wgcG9vbDsKICAgbG9uZyByZXZp
c2lvbiA9IApAQCAtNjgsNyArNjgsNyBAQAogICAgICAgICAgICAgICAgICAgIG1fcmVjdXJzaXZl
KTsKICAgd3hTdHJpbmcgc3RyOwogCi0gIHN0ciA9IHd4U3RyaW5nOjpGb3JtYXQgKCJDb21taXR0
ZWQgcmV2aXNpb24gJSIgU1ZOX1JFVk5VTV9UX0ZNVCAiLiIsCisgIHN0ciA9IHd4U3RyaW5nOjpG
b3JtYXQgKF8oIkNvbW1pdHRlZCByZXZpc2lvbiAlIiBTVk5fUkVWTlVNX1RfRk1UICIuIiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uKTsKICAgVHJhY2UgKHN0cik7CiAK
ZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2NvbW1pdF9kbGcuY3BwIHJhcGlkc3ZuLTAuNi4w
LXVuaWNvZGUtZml4ZWQvc3JjL2NvbW1pdF9kbGcuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMv
Y29tbWl0X2RsZy5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNS4wMDAwMDAwMDAgLTA0MDAKKysrIHJh
cGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2NvbW1pdF9kbGcuY3BwCTIwMDQtMDgtMTAg
MTM6MDE6MDcuMDAwMDAwMDAwIC0wNDAwCkBAIC0yNSw3ICsyNSw3IEBACiAgIGJvb2wgcmVjdXJz
aXZlOwogCiAgIERhdGEgKHd4V2luZG93ICogd2luZG93KQotICAgIDogbWVzc2FnZSAoIiIpLCBy
ZWN1cnNpdmUgKGZhbHNlKQorICAgIDogbWVzc2FnZSAoXygiIikpLCByZWN1cnNpdmUgKGZhbHNl
KQogICB7CiAgICAgLy8gY3JlYXRlIGNvbnRyb2xzCiAgICAgd3hTdGF0aWNCb3gqIG1zZ0JveCA9
IApAQCAtMzcsMTQgKzM3LDE0IEBACiAgICAgd3hUZXh0Q3RybCogbXNnOwogICAgIHsKICAgICAg
IHd4VGV4dFZhbGlkYXRvciB2YWwgKHd4RklMVEVSX05PTkUsICZtZXNzYWdlKTsKLSAgICAgIG1z
ZyA9IG5ldyB3eFRleHRDdHJsICh3aW5kb3csIC0xLCAiIiwgd3hEZWZhdWx0UG9zaXRpb24sIAor
ICAgICAgbXNnID0gbmV3IHd4VGV4dEN0cmwgKHdpbmRvdywgLTEsIF8oIiIpLCB3eERlZmF1bHRQ
b3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnU2l6ZSwgd3hURV9NVUxU
SUxJTkUsIHZhbCk7CiAgICAgfQogICAgIHd4Q2hlY2tCb3ggKiBjaGVja1JlY3Vyc2l2ZTsKICAg
ICB7CiAgICAgICB3eEdlbmVyaWNWYWxpZGF0b3IgdmFsICgmcmVjdXJzaXZlKTsKICAgICAgIGNo
ZWNrUmVjdXJzaXZlID0gCi0gICAgICAgIG5ldyB3eENoZWNrQm94ICh3aW5kb3csIC0xLCAiUmVj
dXJzaXZlIiwKKyAgICAgICAgbmV3IHd4Q2hlY2tCb3ggKHdpbmRvdywgLTEsIF8oIlJlY3Vyc2l2
ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9zaXRpb24sIHd4RGVmYXVs
dFNpemUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpOwogICAgIH0KQEAgLTEwNSw3
ICsxMDUsNyBAQAogY29uc3QgY2hhciAqCiBDb21taXREbGc6OkdldE1lc3NhZ2UgKCkgY29uc3QK
IHsKLSAgcmV0dXJuIG0tPm1lc3NhZ2U7CisgIHJldHVybiBtLT5tZXNzYWdlLlRvQXNjaWkoKTsK
IH0KIAogYm9vbApkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZGVsZXRlX2FjdGlvbi5jcHAg
cmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZGVsZXRlX2FjdGlvbi5jcHAKLS0tIHJh
cGlkc3ZuLTAuNi4wL3NyYy9kZWxldGVfYWN0aW9uLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjEzLjAw
MDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZGVsZXRl
X2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxMzowNDo1Ni4wMDAwMDAwMDAgLTA0MDAKQEAgLTY4LDcg
KzY4LDcgQEAKICAgICAvLyBoYW5kbGVkIGJ5IHN1YnZlcnNpb24KICAgICBpZiAoc3RhdHVzLmlz
VmVyc2lvbmVkICgpKQogICAgICAgY2xpZW50LnJlbW92ZSAocGF0aCwgbV9mb3JjZSk7Ci0gICAg
ZWxzZSBpZiAod3hEaXJFeGlzdHMgKGNwYXRoKSkKKyAgICBlbHNlIGlmICh3eERpckV4aXN0cyAo
d3hTdHJpbmcoY3BhdGgsIHd4Q29udkxvY2FsKS5jX3N0cigpKSkKICAgICB7CiAgICAgICAvLyB3
ZSBkb250IHdhbnQgdG8gZGVsZXRlIHVudmVyc2lvbmVkIGRpcmVjdG9yaWVzLi4uCiAgICAgICB3
eFN0cmluZyBtc2c7CkBAIC03NiwxNCArNzYsMTQgQEAKICAgICAgICAgICAgICAgICAgIGNwYXRo
KTsKICAgICAgIFRyYWNlIChtc2cpOwogICAgIH0KLSAgICBlbHNlIGlmICh3eEZpbGVFeGlzdHMg
KGNwYXRoKSkKKyAgICBlbHNlIGlmICh3eEZpbGVFeGlzdHMgKHd4U3RyaW5nKGNwYXRoLCB3eENv
bnZMb2NhbCkuY19zdHIoKSkpCiAgICAgewogICAgICAgd3hTdHJpbmcgbXNnOwogICAgICAgbXNn
LlByaW50ZiAoXygiRGVsZXRpbmcgdW52ZXJzaW9uZWQgZmlsZTogJXMiKSwKICAgICAgICAgICAg
ICAgICAgIGNwYXRoKTsKICAgICAgIFRyYWNlIChtc2cpOwogCi0gICAgICB3eFJlbW92ZUZpbGUg
KGNwYXRoKTsKKyAgICAgIHd4UmVtb3ZlRmlsZSAod3hTdHJpbmcoY3BhdGgsIHd4Q29udkxvY2Fs
KSk7CiAgICAgfQogICB9CiAKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2RlbGV0ZV9kbGcu
Y3BwIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2RlbGV0ZV9kbGcuY3BwCi0tLSBy
YXBpZHN2bi0wLjYuMC9zcmMvZGVsZXRlX2RsZy5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNi4wMDAw
MDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2RlbGV0ZV9k
bGcuY3BwCTIwMDQtMDgtMTAgMTM6MDU6MjMuMDAwMDAwMDAwIC0wNDAwCkBAIC0zNSw3ICszNSw3
IEBACiAgICAgdG9wU2l6ZXItPkFkZCAobGFiZWwsIDAsIHd4QUxMLCA1KTsKIAogICAgIC8vIFRo
ZSAiZm9yY2UiIGNoZWNrIGJveDoKLSAgICB3eENoZWNrQm94KiBjaGVjayA9IG5ldyB3eENoZWNr
Qm94KHdpbmRvdywgLTEsICJGb3JjZSByZW1vdmFsIiwKKyAgICB3eENoZWNrQm94KiBjaGVjayA9
IG5ldyB3eENoZWNrQm94KHdpbmRvdywgLTEsIF8oIkZvcmNlIHJlbW92YWwiKSwKICAgICAgIHd4
RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRTaXplLCAwLAogICAgICAgd3hHZW5lcmljVmFsaWRh
dG9yKCZmb3JjZSkpOwogICAgIApkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZGVzdGluYXRp
b25fZGxnLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9kZXN0aW5hdGlvbl9k
bGcuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvZGVzdGluYXRpb25fZGxnLmNwcAkyMDA0LTA1
LTI0IDExOjQ1OjEzLjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1m
aXhlZC9zcmMvZGVzdGluYXRpb25fZGxnLmNwcAkyMDA0LTA4LTEwIDEzOjA5OjE3LjAwMDAwMDAw
MCAtMDQwMApAQCAtMjYsNyArMjYsNyBAQAogCiAgIERhdGEgKHd4V2luZG93ICogd2luZG93LCBj
b25zdCBjaGFyICogZGVzY3IsIAogICAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKiBkZXN0
KQotICAgIDogZGVzdGluYXRpb24gKGRlc3QpLCBmb3JjZSAoZmFsc2UpCisgICAgOiBkZXN0aW5h
dGlvbiAoZGVzdCwgd3hDb252TG9jYWwpLCBmb3JjZSAoZmFsc2UpCiAgIHsKICAgICBib29sIHdp
dGhGb3JjZSA9IChmbGFncyAmIFdJVEhfRk9SQ0UpICE9IDA7CiAKQEAgLTM1LDEzICszNSwxMyBA
QAogCiAgICAgLy8gVGhlIGRlc2NyaXB0aW9uOgogICAgIHd4U3RhdGljVGV4dCAqIGxhYmVsRGVz
Y3IgPSAKLSAgICAgIG5ldyB3eFN0YXRpY1RleHQgKHdpbmRvdywgLTEsIGRlc2NyKTsKKyAgICAg
IG5ldyB3eFN0YXRpY1RleHQgKHdpbmRvdywgLTEsIHd4U3RyaW5nKGRlc2NyLCB3eENvbnZMb2Nh
bCkpOwogICAgIG1haW5TaXplci0+QWRkIChsYWJlbERlc2NyLCAwLCB3eEFMTCwgNSk7CiAKICAg
ICAvLyBUaGUgZGVzdGluYXRpb246CiAgICAgd3hUZXh0VmFsaWRhdG9yIHZhbCAod3hGSUxURVJf
Tk9ORSwgJmRlc3RpbmF0aW9uKTsKICAgICB3eFRleHRDdHJsICogdGV4dERlc3QgPSAKLSAgICAg
IG5ldyB3eFRleHRDdHJsICh3aW5kb3csIC0xLCAiIiwgd3hEZWZhdWx0UG9zaXRpb24sIAorICAg
ICAgbmV3IHd4VGV4dEN0cmwgKHdpbmRvdywgLTEsIF8oIiIpLCB3eERlZmF1bHRQb3NpdGlvbiwg
CiAgICAgICAgICAgICAgICAgICAgICAgd3hTaXplICgyMDAsIC0xKSwgMCwgdmFsKTsKICAgICAg
IAogICAgIG1haW5TaXplci0+QWRkICh0ZXh0RGVzdCwgMCwgd3hBTEwgfCB3eEVYUEFORCwgNSk7
CkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqIGRlc2NyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
ZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGRzdCkK
LSA6IHd4RGlhbG9nKHBhcmVudCwgLTEsIHRpdGxlLAorIDogd3hEaWFsb2cocGFyZW50LCAtMSwg
d3hTdHJpbmcodGl0bGUsIHd4Q29udkxvY2FsKSwKICAgICAgICAgICAgIHd4RGVmYXVsdFBvc2l0
aW9uLCB3eERlZmF1bHRTaXplLCAKICAgICAgICAgICAgIERJQUxPR19GTEFHUykKIHsKQEAgLTEx
MSw3ICsxMTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGRlc2Ny
LCBjb25zdCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICog
ZHN0KQogewotICB3eERpYWxvZzo6Q3JlYXRlIChwYXJlbnQsIC0xLCB0aXRsZSwgd3hEZWZhdWx0
UG9zaXRpb24sCisgIHd4RGlhbG9nOjpDcmVhdGUgKHBhcmVudCwgLTEsIHd4U3RyaW5nKHRpdGxl
LCB3eENvbnZMb2NhbCksIHd4RGVmYXVsdFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICB3
eERlZmF1bHRTaXplLCBESUFMT0dfRkxBR1MpOwogCiAgIG0gPSBuZXcgRGF0YSAodGhpcywgZGVz
Y3IsIGZsYWdzLCBkc3QpOwpAQCAtMTIwLDcgKzEyMCw3IEBACiBjb25zdCBjaGFyICoKIERlc3Rp
bmF0aW9uRGxnOjpHZXREZXN0aW5hdGlvbiAoKSBjb25zdAogewotICByZXR1cm4gbS0+ZGVzdGlu
YXRpb247CisgIHJldHVybiBtLT5kZXN0aW5hdGlvbi5Ub0FzY2lpKCk7CiB9CiAKIGJvb2wKZGlm
ZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2RpZmZfYWN0aW9uLmNwcCByYXBpZHN2bi0wLjYuMC11
bmljb2RlLWZpeGVkL3NyYy9kaWZmX2FjdGlvbi5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9k
aWZmX2FjdGlvbi5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNS4wMDAwMDAwMDAgLTA0MDAKKysrIHJh
cGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2RpZmZfYWN0aW9uLmNwcAkyMDA0LTA4LTEw
IDEzOjU4OjIxLjAwMDAwMDAwMCAtMDQwMApAQCAtMTEyLDcgKzExMiw3IEBACiAgIGdldFBhdGgx
IChjb25zdCBzdm46OlBhdGggJiBwYXRoKQogICB7CiAgICAgaWYgKGRpZmZEYXRhLnVzZVVybDEp
Ci0gICAgICByZXR1cm4gZGlmZkRhdGEudXJsMS5jX3N0ciAoKTsKKyAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyICo+KGRpZmZEYXRhLnVybDEuVG9Bc2NpaSgpKTsKICAgICBlbHNl
CiAgICAgICByZXR1cm4gcGF0aDsKICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBACiAgIGdldFBhdGgy
IChjb25zdCBzdm46OlBhdGggJiBwYXRoKQogICB7CiAgICAgaWYgKGRpZmZEYXRhLnVzZVVybDIp
Ci0gICAgICByZXR1cm4gZGlmZkRhdGEudXJsMi5jX3N0ciAoKTsKKyAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyICo+KGRpZmZEYXRhLnVybDIuVG9Bc2NpaSgpKTsKICAgICBlbHNl
CiAgICAgICByZXR1cm4gcGF0aDsKICAgfQpAQCAtMjA0LDkgKzIwNCw5IEBACiAKICAgICBQcmVm
ZXJlbmNlcyBwcmVmczsKICAgICB3eFN0cmluZyBhcmd2OwotICAgIHd4U3RyaW5nIGRzdEZpbGUx
TmF0aXZlIChkc3RGaWxlMS5uYXRpdmUgKCkuY19zdHIgKCkpOwotICAgIHd4U3RyaW5nIGRzdEZp
bGUyTmF0aXZlIChkc3RGaWxlMi5uYXRpdmUgKCkuY19zdHIgKCkpOwotICAgIGFyZ3YuUHJpbnRm
ICgiXCIlc1wiIFwiJXNcIiBcIiVzXCIiLCBwcmVmcy5kaWZmVG9vbC5jX3N0ciAoKSwgCisgICAg
d3hTdHJpbmcgZHN0RmlsZTFOYXRpdmUgKGRzdEZpbGUxLm5hdGl2ZSAoKS5jX3N0cigpLCB3eENv
bnZMb2NhbCk7CisgICAgd3hTdHJpbmcgZHN0RmlsZTJOYXRpdmUgKGRzdEZpbGUyLm5hdGl2ZSAo
KS5jX3N0cigpLCB3eENvbnZMb2NhbCk7CisgICAgYXJndi5QcmludGYgKF8oIlwiJXNcIiBcIiVz
XCIgXCIlc1wiIiksIHByZWZzLmRpZmZUb29sLmNfc3RyICgpLCAKICAgICAgICAgICAgICAgICAg
ZHN0RmlsZTFOYXRpdmUuY19zdHIgKCksIGRzdEZpbGUyTmF0aXZlLmNfc3RyICgpKTsKIAogICAg
IHd4U3RyaW5nIG1zZzsKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2RpZmZfZGF0YS5ocHAg
cmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZGlmZl9kYXRhLmhwcAotLS0gcmFwaWRz
dm4tMC42LjAvc3JjL2RpZmZfZGF0YS5ocHAJMjAwNC0wNS0yNCAxMTo0NToxNC4wMDAwMDAwMDAg
LTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2RpZmZfZGF0YS5ocHAJ
MjAwNC0wOC0xMCAxMzo1MjozMC4wMDAwMDAwMDAgLTA0MDAKQEAgLTQ2LDggKzQ2LDggQEAKICAg
LyoqIENvbnN0cnVjdG9yICovCiAgIERpZmZEYXRhICgpCiAgICAgOiBjb21wYXJlVHlwZSAoV0lU
SF9TQU1FX1JFVklTSU9OKSwKLSAgICAgIHVzZVVybDEgKGZhbHNlKSwgdXJsMSAoIiIpLAotICAg
ICAgdXNlVXJsMiAoZmFsc2UpLCB1cmwyICgiIikKKyAgICAgIHVzZVVybDEgKGZhbHNlKSwgdXJs
MSAoXygiIikpLAorICAgICAgdXNlVXJsMiAoZmFsc2UpLCB1cmwyIChfKCIiKSkKICAgewogICB9
CiB9OwpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZGlmZl9kbGcuY3BwIHJhcGlkc3ZuLTAu
Ni4wLXVuaWNvZGUtZml4ZWQvc3JjL2RpZmZfZGxnLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3Jj
L2RpZmZfZGxnLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE1LjAwMDAwMDAwMCAtMDQwMAorKysgcmFw
aWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZGlmZl9kbGcuY3BwCTIwMDQtMDgtMTAgMTQ6
MDE6NTUuMDAwMDAwMDAwIC0wNDAwCkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICBpZiAobVJhZGlv
VXNlUmV2aXNpb24tPkdldFZhbHVlICgpKQogICAgIHsKICAgICAgIGlmICghbUNoZWNrVXNlTGF0
ZXN0LT5HZXRWYWx1ZSAoKSkKLSAgICAgICAgdmFsaWQgPSBDaGVja1JldmlzaW9uIChtVGV4dFJl
dmlzaW9uLT5HZXRWYWx1ZSAoKSk7CisgICAgICAgIHZhbGlkID0gQ2hlY2tSZXZpc2lvbiAobVRl
eHRSZXZpc2lvbi0+R2V0VmFsdWUgKCkuVG9Bc2NpaSgpKTsKICAgICB9CiAgICAgZWxzZSAKICAg
ICAgIHZhbGlkID0gQ2hlY2tEYXRlVGltZSAobVRleHREYXRlLT5HZXRWYWx1ZSAoKSk7CkBAIC0x
NjIsMjQgKzE2MiwyNCBAQAogICAgIHsKICAgICAgIG1SYWRpb1VzZURhdGUtPlNldFZhbHVlICh0
cnVlKTsKICAgICAgIG1UZXh0RGF0ZS0+U2V0VmFsdWUgKAotICAgICAgICBGb3JtYXREYXRlVGlt
ZSAocmV2aXNpb24uZGF0ZSAoKSwgIiVjIikpOwotICAgICAgbVRleHRSZXZpc2lvbi0+U2V0VmFs
dWUgKCIiKTsKKyAgICAgICAgRm9ybWF0RGF0ZVRpbWUgKHJldmlzaW9uLmRhdGUgKCksIF8oIiVj
IikpKTsKKyAgICAgIG1UZXh0UmV2aXNpb24tPlNldFZhbHVlIChfKCIiKSk7CiAgICAgICBtQ2hl
Y2tVc2VMYXRlc3QtPlNldFZhbHVlICh0cnVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAg
ICAgIG1SYWRpb1VzZVJldmlzaW9uLT5TZXRWYWx1ZSAodHJ1ZSk7Ci0gICAgICBtVGV4dERhdGUt
PlNldFZhbHVlICgiIik7CisgICAgICBtVGV4dERhdGUtPlNldFZhbHVlIChfKCIiKSk7CiAKICAg
ICAgIGlmIChyZXZpc2lvbi5raW5kICgpID09IHN2bl9vcHRfcmV2aXNpb25faGVhZCkKICAgICAg
IHsKLSAgICAgICAgbVRleHRSZXZpc2lvbi0+U2V0VmFsdWUgKCIiKTsKKyAgICAgICAgbVRleHRS
ZXZpc2lvbi0+U2V0VmFsdWUgKF8oIiIpKTsKICAgICAgICAgbUNoZWNrVXNlTGF0ZXN0LT5TZXRW
YWx1ZSAodHJ1ZSk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIHd4U3Ry
aW5nIHZhbHVlOwotICAgICAgICB2YWx1ZS5QcmludGYgKCIlIiBTVk5fUkVWTlVNX1RfRk1ULCBy
ZXZpc2lvbi5yZXZudW0gKCkpOworICAgICAgICB2YWx1ZS5QcmludGYgKF8oIiUiIFNWTl9SRVZO
VU1fVF9GTVQpLCByZXZpc2lvbi5yZXZudW0gKCkpOwogICAgICAgICBtVGV4dFJldmlzaW9uLT5T
ZXRWYWx1ZSAodmFsdWUpOwogICAgICAgICBtQ2hlY2tVc2VMYXRlc3QtPlNldFZhbHVlIChmYWxz
ZSk7CiAgICAgICB9CkBAIC0yNTAsNyArMjUwLDcgQEAKICAgICBtUmFkaW9Vc2VSZXZpc2lvbiA9
IG5ldyB3eFJhZGlvQnV0dG9uICgKICAgICAgIHRoaXMsIElEX1VzZVJldmlzaW9uLCBfKCJSZXZp
c2lvbjoiKSk7CiAgICAgbVJhZGlvVXNlUmV2aXNpb24tPlNldFZhbHVlICh0cnVlKTsKLSAgICBt
VGV4dFJldmlzaW9uID0gbmV3IHd4VGV4dEN0cmwgKHRoaXMsIElEX1JldmlzaW9uLCAiIik7Cisg
ICAgbVRleHRSZXZpc2lvbiA9IG5ldyB3eFRleHRDdHJsICh0aGlzLCBJRF9SZXZpc2lvbiwgXygi
IikpOwogICAgIG1DaGVja1VzZUxhdGVzdCA9IG5ldyB3eENoZWNrQm94ICgKICAgICAgIHRoaXMs
IElEX1VzZUxhdGVzdCwgXygiVXNlIGxhdGVzdCIpKTsKICAgICBtQ2hlY2tVc2VMYXRlc3QtPlNl
dFZhbHVlICh0cnVlKTsKQEAgLTI2NSw3ICsyNjUsNyBAQAogICAgIC8vIHNlY29uZCByb3c6IGRh
dGUKICAgICBtUmFkaW9Vc2VEYXRlID0gbmV3IHd4UmFkaW9CdXR0b24gKAogICAgICAgdGhpcywg
SURfVXNlRGF0ZSwgXygiRGF0ZToiKSk7Ci0gICAgbVRleHREYXRlID0gbmV3IHd4VGV4dEN0cmwg
KHRoaXMsIElEX0RhdGUsICIiKTsKKyAgICBtVGV4dERhdGUgPSBuZXcgd3hUZXh0Q3RybCAodGhp
cywgSURfRGF0ZSwgXygiIikpOwogCiAgICAgZ3JpZFNpemVyLT5BZGQgKG1SYWRpb1VzZURhdGUp
OwogICAgIGdyaWRTaXplci0+QWRkIChtVGV4dERhdGUpOwpAQCAtMjc0LDcgKzI3NCw3IEBACiAg
ICAgLy8gdGhpcmQgcm93OiB1cmwKICAgICBtQ2hlY2tVc2VVcmwgPSBuZXcgd3hDaGVja0JveCAo
CiAgICAgICB0aGlzLCBJRF9Vc2VVcmwsIF8oIlVzZSBVcmwvUGF0aDoiKSk7Ci0gICAgbVRleHRV
cmwgPSBuZXcgd3hUZXh0Q3RybCAodGhpcywgSURfVXJsLCAiIik7CisgICAgbVRleHRVcmwgPSBu
ZXcgd3hUZXh0Q3RybCAodGhpcywgSURfVXJsLCBfKCIiKSk7CiAgICAgbUJ1dHRvbkJyb3dzZSA9
IENyZWF0ZUVsbGlwc2lzQnV0dG9uICh0aGlzLCBJRF9Ccm93c2UpOwogICAgIGdyaWRTaXplci0+
QWRkIChtQ2hlY2tVc2VVcmwpOwogICAgIGdyaWRTaXplci0+QWRkIChtVGV4dFVybCwgMCwgd3hF
WFBBTkQpOwpAQCAtNTA1LDcgKzUwNSw3IEBACiAgICAgICAgIHRoaXMsIC0xLCBfKCJDb21wYXJl
OiIpKTsKIAogICAgICAgbUNvbWJvQ21wVHlwZSA9IG5ldyB3eENvbWJvQm94ICgKLSAgICAgICAg
dGhpcywgSURfQ29tcGFyZVR5cGUsICIiLCB3eERlZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6
ZSwgCisgICAgICAgIHRoaXMsIElEX0NvbXBhcmVUeXBlLCBfKCIiKSwgd3hEZWZhdWx0UG9zaXRp
b24sIHd4RGVmYXVsdFNpemUsIAogICAgICAgICBXWFNJWkVPRiAoQ09NUEFSRV9UWVBFX0xBQkVM
UyksIENPTVBBUkVfVFlQRV9MQUJFTFMsIAogICAgICAgICB3eENCX1JFQURPTkxZKTsKIApkaWZm
IC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZXhjZXB0aW9ucy5ocHAgcmFwaWRzdm4tMC42LjAtdW5p
Y29kZS1maXhlZC9zcmMvZXhjZXB0aW9ucy5ocHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9leGNl
cHRpb25zLmhwcAkyMDA0LTA1LTI0IDExOjQ1OjE2LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRz
dm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZXhjZXB0aW9ucy5ocHAJMjAwNC0wOC0xMCAxNDow
MjozNS4wMDAwMDAwMDAgLTA0MDAKQEAgLTIzLDcgKzIzLDcgQEAKICAgbG9uZyBjb2RlOwogCiBw
dWJsaWM6Ci0gICBSYXBpZFN2bkV4IChjb25zdCB3eFN0cmluZyAmIF9fZXN0ciA9ICIiLCBjb25z
dCBsb25nIF9fY29kZSA9IC0xKTsKKyAgIFJhcGlkU3ZuRXggKGNvbnN0IHd4U3RyaW5nICYgX19l
c3RyID0gXygiIiksIGNvbnN0IGxvbmcgX19jb2RlID0gLTEpOwogCiAgICB2aXJ0dWFsIH4gUmFw
aWRTdm5FeCAoKTsKIApkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZXh0ZXJuYWxfcHJvZ3Jh
bV9hY3Rpb24uY3BwIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2V4dGVybmFsX3By
b2dyYW1fYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2V4dGVybmFsX3Byb2dyYW1f
YWN0aW9uLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE0LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRz
dm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZXh0ZXJuYWxfcHJvZ3JhbV9hY3Rpb24uY3BwCTIw
MDQtMDgtMTAgMTQ6MDQ6MTAuMDAwMDAwMDAwIC0wNDAwCkBAIC00OCw3ICs0OCw3IEBACiAgICAg
cGF0aCA9IEdldFBhdGhBc1RlbXBGaWxlKHBhdGgpOwogICB9CiAgIAotICB3eFN0cmluZyB0YXJn
ZXRfc3RyID0gcGF0aC5jX3N0ciAoKTsKKyAgd3hTdHJpbmcgdGFyZ2V0X3N0ciAocGF0aC5jX3N0
ciAoKSwgd3hDb252TG9jYWwpOwogICB3eEZpbGVOYW1lIHRhcmdldCA9IHRhcmdldF9zdHI7CiAK
ICAgLy8gVGhlIHRhcmdldCB3ZSdsbCBwYXNzIHRvIHRoZSBleHRlcm5hbCBwcm9ncmFtCkBAIC04
Miw3ICs4Miw3IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICB3eFN0cmluZyBhcmd2
ID0gcHJlZnMuZXhwbG9yZXIgKyAiIFwiIiArIHRhcmdldF9kb2N1bWVudCArICJcIiI7CisgICAg
ICB3eFN0cmluZyBhcmd2ID0gcHJlZnMuZXhwbG9yZXIgKyBfKCIgXCIiKSArIHRhcmdldF9kb2N1
bWVudCArIF8oIlwiIik7CiAgICAgCiAgICAgICB3eEV4ZWN1dGUgKGFyZ3YpOwogICAgIH0KQEAg
LTk2LDcgKzk2LDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIHd4U3RyaW5nIGFy
Z3YgPSBwcmVmcy5lZGl0b3IgKyAiIFwiIiArIHRhcmdldF9kb2N1bWVudCArICJcIiI7CisgICAg
ICB3eFN0cmluZyBhcmd2ID0gcHJlZnMuZWRpdG9yICsgXygiIFwiIikgKyB0YXJnZXRfZG9jdW1l
bnQgKyBfKCJcIiIpOwogICAgICAgCiAgICAgICB3eEV4ZWN1dGUgKGFyZ3YpOwogICAgIH0KZGlm
ZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2ZpbGVfaW5mby5jcHAgcmFwaWRzdm4tMC42LjAtdW5p
Y29kZS1maXhlZC9zcmMvZmlsZV9pbmZvLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2ZpbGVf
aW5mby5jcHAJMjAwNC0wNS0yNCAxMTo0NToxNC4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3Zu
LTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2ZpbGVfaW5mby5jcHAJMjAwNC0wOC0xMCAxNTo0MDox
MC4wMDAwMDAwMDAgLTA0MDAKQEAgLTM3LDcgKzM3LDcgQEAKICAgLyogaWYgdGhpcyByZXR1cm5z
IGFuIGVycm9yLCBqdXN0IGRvbid0IHByaW50IGFueXRoaW5nIG91dCAqLwogICBhcHJfZXJyID0g
YXByX3RpbWVfZXhwX3R6ICgmZXh0aW1lLCBhdGltZSwgMCk7CiAgIGlmICghYXByX2VycikKLSAg
ICBzdHIuUHJpbnRmICgiJXM6ICUwNGx1LSUwMmx1LSUwMmx1ICUwMmx1OiUwMmx1IEdNVCIsIGRl
c2MsCisgICAgc3RyLlByaW50ZiAoXygiJXM6ICUwNGx1LSUwMmx1LSUwMmx1ICUwMmx1OiUwMmx1
IEdNVCIpLCBkZXNjLAogICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoZXh0aW1lLnRt
X3llYXIgKyAxOTAwKSwKICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKGV4dGltZS50
bV9tb24gKyAxKSwKICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKGV4dGltZS50bV9t
ZGF5KSwKQEAgLTYwLDggKzYwLDE1IEBACiAgIHZvaWQgCiAgIGFkZExpbmUgKGNvbnN0IGNoYXIg
KiBsaW5lKQogICB7CisgICAgaW5mbyArPSB3eFN0cmluZyhsaW5lLCB3eENvbnZMb2NhbCk7Cisg
ICAgaW5mbyArPSBfKCJcbiIpOworICB9CisKKyAgdm9pZCAKKyAgYWRkTGluZSAoY29uc3Qgd3hD
aGFyICogbGluZSkKKyAgewogICAgIGluZm8gKz0gbGluZTsKLSAgICBpbmZvICs9ICJcbiI7Cisg
ICAgaW5mbyArPSBfKCJcbiIpOwogICB9CiAKICAgdm9pZApAQCAtMTU5LDEzICsxNjYsMTMgQEAK
ICAgICAgIHN0ci5QcmludGYgKF8oIkxhc3QgQ2hhbmdlZCBSZXY6ICVsZCIpLCBlbnRyeS5jbXRS
ZXYgKCkpOwogICAgICAgYWRkTGluZSAoc3RyKTsKIAotICAgICAgaW5mb19wcmludF90aW1lIChl
bnRyeS5jbXREYXRlICgpLCBfKCJMYXN0IENoYW5nZWQgRGF0ZSIpLCBzdHIpOworICAgICAgaW5m
b19wcmludF90aW1lIChlbnRyeS5jbXREYXRlICgpLCAiTGFzdCBDaGFuZ2VkIERhdGUiLCBzdHIp
OwogICAgICAgYWRkTGluZSAoc3RyKTsKIAotICAgICAgaW5mb19wcmludF90aW1lIChlbnRyeS50
ZXh0VGltZSAoKSwgXygiVGV4dCBMYXN0IFVwZGF0ZWQiKSwgc3RyKTsKKyAgICAgIGluZm9fcHJp
bnRfdGltZSAoZW50cnkudGV4dFRpbWUgKCksICJUZXh0IExhc3QgVXBkYXRlZCIsIHN0cik7CiAg
ICAgICBhZGRMaW5lIChzdHIpOwogCi0gICAgICBpbmZvX3ByaW50X3RpbWUgKGVudHJ5LnByb3BU
aW1lICgpLCBfKCJQcm9wZXJ0aWVzIExhc3QgVXBkYXRlZCIpLCBzdHIpOworICAgICAgaW5mb19w
cmludF90aW1lIChlbnRyeS5wcm9wVGltZSAoKSwgIlByb3BlcnRpZXMgTGFzdCBVcGRhdGVkIiwg
c3RyKTsKICAgICAgIGFkZExpbmUgKHN0cik7CiAKICAgICAgIHN0ci5QcmludGYgKF8oIkNoZWNr
c3VtOiAlcyIpLCBlbnRyeS5jaGVja3N1bSAoKSk7CkBAIC0yMjAsNyArMjI3LDcgQEAKIGNvbnN0
IGNoYXIgKgogRmlsZUluZm86OmluZm8gKCkgY29uc3QKIHsKLSAgbS0+aW5mbyA9ICIiOworICBt
LT5pbmZvID0gXygiIik7CiAgIHN2bjo6Q2xpZW50IGNsaWVudCAobS0+Y29udGV4dCk7CiAKICAg
c3RkOjp2ZWN0b3I8c3ZuOjpQYXRoPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CkBAIC0yMzQsNyArMjQx
LDcgQEAKICAgICBtLT5hZGRMaW5lICgiIik7CiAgIH0KIAotICByZXR1cm4gbS0+aW5mbzsKKyAg
cmV0dXJuIG0tPmluZm8uVG9Bc2NpaSgpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC11ciByYXBp
ZHN2bi0wLjYuMC9zcmMvZmlsZWxpc3RfY3RybC5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1m
aXhlZC9zcmMvZmlsZWxpc3RfY3RybC5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9maWxlbGlz
dF9jdHJsLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE3LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRz
dm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZmlsZWxpc3RfY3RybC5jcHAJMjAwNC0wOC0xMCAx
NTozNDo0NC4wMDAwMDAwMDAgLTA0MDAKQEAgLTkxLDEyICs5MSwxMiBAQAogICogVGFncyBmb3Ig
d3hDb25maWcgZmlsZSBzZXR0aW5ncywgZGVmaW5lZCBoZXJlIHRvIGF2b2lkIGR1cGxpY2F0ZQog
ICogaGFyZCBjb2RlZCBzdHJpbmdzLgogICovCi1zdGF0aWMgY29uc3QgY2hhciBDb25maWdTb3J0
Q29sdW1uW10gICAgICAgPSAiL0ZpbGVMaXN0Q3RybC9Tb3J0Q29sdW1uIjsKLXN0YXRpYyBjb25z
dCBjaGFyIENvbmZpZ1NvcnRPcmRlcltdICAgICAgICA9ICIvRmlsZUxpc3RDdHJsL1NvcnRPcmRl
ciI7Ci1zdGF0aWMgY29uc3QgY2hhciBDb25maWdDb2x1bW5XaWR0aEZtdFtdICAgPSAiL0ZpbGVM
aXN0Q3RybC9Db2x1bW4lc1dpZHRoIjsKLXN0YXRpYyBjb25zdCBjaGFyIENvbmZpZ0NvbHVtblZp
c2libGVGbXRbXSA9ICIvRmlsZUxpc3RDdHJsL0NvbHVtbiVzVmlzaWJsZSI7Ci1zdGF0aWMgY29u
c3QgY2hhciBDb25maWdXaXRoVXBkYXRlW10gICAgICAgPSAiL0ZpbGVMaXN0Q3RybC9XaXRoVXBk
YXRlIjsKLXN0YXRpYyBjb25zdCBjaGFyIENvbmZpZ0ZsYXRWaWV3W10gICAgICAgICA9ICIvRmls
ZUxpc3RDdHJsL0ZsYXRWaWV3IjsKK3N0YXRpYyBjb25zdCB3eENoYXIgKiBDb25maWdTb3J0Q29s
dW1uID0gXygiL0ZpbGVMaXN0Q3RybC9Tb3J0Q29sdW1uIik7CitzdGF0aWMgY29uc3Qgd3hDaGFy
ICogQ29uZmlnU29ydE9yZGVyICA9IF8oIi9GaWxlTGlzdEN0cmwvU29ydE9yZGVyIik7CitzdGF0
aWMgY29uc3Qgd3hDaGFyICogQ29uZmlnQ29sdW1uV2lkdGhGbXQgICA9IF8oIi9GaWxlTGlzdEN0
cmwvQ29sdW1uJXNXaWR0aCIpOworc3RhdGljIGNvbnN0IHd4Q2hhciAqIENvbmZpZ0NvbHVtblZp
c2libGVGbXQgPSBfKCIvRmlsZUxpc3RDdHJsL0NvbHVtbiVzVmlzaWJsZSIpOworc3RhdGljIGNv
bnN0IHd4Q2hhciAqIENvbmZpZ1dpdGhVcGRhdGUgICAgICAgPSBfKCIvRmlsZUxpc3RDdHJsL1dp
dGhVcGRhdGUiKTsKK3N0YXRpYyBjb25zdCB3eENoYXIgKiBDb25maWdGbGF0VmlldyAgICAgICAg
ID0gXygiL0ZpbGVMaXN0Q3RybC9GbGF0VmlldyIpOwogCiAvKioKICAqIHRlc3QgaWYgdGhlIGdp
dmVuIHN0YXR1cyBlbnRyeSBpcyBhIGZpbGUgb3IKQEAgLTEzMyw3ICsxMzMsNyBAQAogICB9CiAg
IAogICAvLyB1bnZlcnNpb25lZC4KLSAgcmV0dXJuIHd4RGlyRXhpc3RzIChzdGF0dXMtPnBhdGgg
KCkpOworICByZXR1cm4gd3hEaXJFeGlzdHMgKHd4U3RyaW5nKHN0YXR1cy0+cGF0aCAoKSwgd3hD
b252TG9jYWwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGludApAQCAtMjQyLDggKzI0Miw4IEBACiBz
dGF0aWMgaW50CiBDb21wYXJlUGF0aHMgKGNvbnN0IGNoYXIgKiBwMSwgY29uc3QgY2hhciAqIHAy
KQogewotICB3eEZpbGVOYW1lIGZuMSAocDEpOwotICB3eEZpbGVOYW1lIGZuMiAocDIpOworICB3
eEZpbGVOYW1lIGZuMSAod3hTdHJpbmcocDEsIHd4Q29udkxvY2FsKSk7CisgIHd4RmlsZU5hbWUg
Zm4yICh3eFN0cmluZyhwMiwgd3hDb252TG9jYWwpKTsKIAogICB3eFN0cmluZyBwYXRoMSA9IGZu
MS5HZXRQYXRoICgpOwogICB3eFN0cmluZyBwYXRoMiA9IGZuMi5HZXRQYXRoICgpOwpAQCAtMjUx
LDEzICsyNTEsMTMgQEAKICAgaW50IHJlcyA9IDA7CiAKICAgLy8gSXMgcDIgYSBzdWJkaXIgb3Ig
ZW50cnkgb2YgcDE/Ci0gIGlmIChwYXRoMS5DbXBOb0Nhc2UgKHAyKSA9PSAwKQorICBpZiAocGF0
aDEuQ21wTm9DYXNlIChmbjIuR2V0RnVsbFBhdGgoKSkgPT0gMCkKICAgewogICAgIHJldHVybiAt
MTsKICAgfQogCiAgIC8vIElzIHAxIGEgc3ViZGlyIG9yIGVudHJ5IG9mIHAyPwotICBpZiAocGF0
aDIuQ21wTm9DYXNlIChwMSkgPT0gMCkKKyAgaWYgKHBhdGgyLkNtcE5vQ2FzZSAoZm4xLkdldEZ1
bGxQYXRoKCkpID09IDApCiAgIHsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtMzA5LDcgKzMwOSw3
IEBACiAgIGNvbnN0IGNoYXIgKiBzdjEgPSBzMSA9PSAwID8gIiIgOiBzMTsKICAgY29uc3QgY2hh
ciAqIHN2MiA9IHMyID09IDAgPyAiIiA6IHMyOwogICAKLSAgcmV0dXJuIHd4U3RyaW5nIChzdjEp
LkNtcE5vQ2FzZSAoc3YyKTsKKyAgcmV0dXJuIHd4U3RyaW5nIChzdjEsIHd4Q29udkxvY2FsKS5D
bXBOb0Nhc2UgKHd4U3RyaW5nKHN2Miwgd3hDb252TG9jYWwpKTsKIH0KIAogLyoqCkBAIC00OTQs
NyArNDk0LDcgQEAKIC8qKgogICogYXJyYXkgd2l0aCBjb2x1bW4gY2FwdGlvbnMKICAqLwotc3Rh
dGljIGNvbnN0IGNoYXIgKiAKK3N0YXRpYyBjb25zdCB3eENoYXIgKiAKIENPTFVNTl9DQVBUSU9O
U1tGaWxlTGlzdEN0cmw6OkNPTF9DT1VOVF0gPQogewogICBfKCJOYW1lIiksCkBAIC01NzYsNyAr
NTc2LDcgQEAKICAgRGF0YSAoKQogICAgIDogU29ydEluY3JlYXNpbmcgKHRydWUpLCBTb3J0Q29s
dW1uIChDT0xfTkFNRSksIAogICAgICAgRGlydHlDb2x1bW5zICh0cnVlKSwgRmxhdE1vZGUgKGZh
bHNlKSwgQ29udGV4dCAoMCksCi0gICAgICBQYXRoICgiIiksIFdpdGhVcGRhdGUgKGZhbHNlKQor
ICAgICAgUGF0aCAoXygiIikpLCBXaXRoVXBkYXRlIChmYWxzZSkKICAgewogICAgIEltYWdlTGlz
dFNtYWxsID0gbmV3IHd4SW1hZ2VMaXN0ICgxNiwgMTYsIFRSVUUpOwogCkBAIC04MDksMTEgKzgw
OSwxMSBAQAogICAvLyBIaWRlIHRoZSBsaXN0IHRvIHNwZWVkIHVwIGluc2VydGluZwogICBIaWRl
ICgpOwogCi0gIHN0ZDo6c3RyaW5nIHN0ZHBhdGggKHBhdGguY19zdHIgKCkpOworICBzdGQ6OnN0
cmluZyBzdGRwYXRoIChwYXRoLlRvQXNjaWkoKSk7CiAKICAgc3ZuOjpDbGllbnQgY2xpZW50ICht
LT5Db250ZXh0KTsKICAgY29uc3Qgc3ZuOjpTdGF0dXNFbnRyaWVzIHN0YXR1c1ZlY3RvciA9Ci0g
ICAgY2xpZW50LnN0YXR1cyAocGF0aC5jX3N0ciAoKSwgbS0+RmxhdE1vZGUsIHRydWUsIG0tPldp
dGhVcGRhdGUpOworICAgIGNsaWVudC5zdGF0dXMgKHBhdGguVG9Bc2NpaSAoKSwgbS0+RmxhdE1v
ZGUsIHRydWUsIG0tPldpdGhVcGRhdGUpOwogICBzdm46OlN0YXR1c0VudHJpZXM6OmNvbnN0X2l0
ZXJhdG9yIGl0OwogICBjb25zdCBzaXplX3QgcGF0aExlbmd0aCA9IHBhdGguTGVuZ3RoICgpICsg
MTsKIApAQCAtODI1LDExICs4MjUsMTEgQEAKICAgICBpbnQgaSA9IEdldEl0ZW1Db3VudCAoKTsK
IAogICAgIC8vIHRydW5jYXRlIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwYXRoCi0gICAgd3hTdHJp
bmcgZnVsbFBhdGggKHN0YXR1cy5wYXRoICgpKTsKKyAgICB3eFN0cmluZyBmdWxsUGF0aCAoc3Rh
dHVzLnBhdGggKCksIHd4Q29udkxvY2FsKTsKICAgICB3eFN0cmluZyBmaWxlbmFtZSAoZnVsbFBh
dGguTWlkIChwYXRoTGVuZ3RoKSk7CiAgICAgaWYgKGZpbGVuYW1lLkxlbmd0aCAoKSA9PSAwKQog
ICAgIHsKLSAgICAgIHZhbHVlc1tDT0xfTkFNRV0gPSAiLiI7CisgICAgICB2YWx1ZXNbQ09MX05B
TUVdID0gXygiLiIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtODgyLDExICs4ODIsMTEg
QEAKICAgICB7CiAgICAgICAvLyB1bnZlcnNpb25lZCBlbnRyaWVzIGRvbnQgY2FycnkgZGlyIGlu
Zm8KICAgICAgIC8vIHdpdGggdGhlbS4gbXVzdCBmaW5kIHRoaXMgb3V0IGJ5IG91cnNlbGYKLSAg
ICAgIGlmICh3eERpckV4aXN0cyAoc3RhdHVzLnBhdGggKCkpKQorICAgICAgaWYgKHd4RGlyRXhp
c3RzKHd4U3RyaW5nKHN0YXR1cy5wYXRoICgpLCB3eENvbnZMb2NhbCkgKSApCiAgICAgICB7CiAg
ICAgICAgIGltYWdlSW5kZXggPSBHZXRJbWFnZUluZGV4IChJTUdfSU5EWF9GT0xERVIsIC0xKTsK
ICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHd4RmlsZUV4aXN0cyAoc3RhdHVzLnBhdGggKCkpKQor
ICAgICAgZWxzZSBpZiAod3hGaWxlRXhpc3RzKHd4U3RyaW5nKHN0YXR1cy5wYXRoICgpLCB3eENv
bnZMb2NhbCkgKSkKICAgICAgIHsKICAgICAgICAgaW1hZ2VJbmRleCA9IEdldEltYWdlSW5kZXgg
KHN2bl93Y19zdGF0dXNfdW52ZXJzaW9uZWQsIC0xKTsKICAgICAgIH0KQEAgLTkwMywyNCArOTAz
LDI0IEBACiAgICAgU2V0SXRlbURhdGEgKGksIChsb25nKW5ldyBzdm46OlN0YXR1cyAoc3RhdHVz
KSk7ICAgIC8vIFRoZSBjb250cm9sIG5vdyBvd25zIHRoaXMgZGF0YQogICAgIC8vIGFuZCBtdXN0
IGRlbGV0ZSBpdCBpbiBkdWUgY291cnNlLgogCi0gICAgdGV4dCA9ICIiOworICAgIHRleHQgPSBf
KCIiKTsKIAogICAgIGlmIChzdGF0dXMuaXNWZXJzaW9uZWQgKCkpCiAgICAgewogICAgICAgY29u
c3Qgc3ZuOjpFbnRyeSAmIGVudHJ5ID0gc3RhdHVzLmVudHJ5ICgpOwotICAgICAgdmFsdWVzW0NP
TF9SRVZdLlByaW50ZiAoIiVsZCIsIGVudHJ5LnJldmlzaW9uICgpKTsKLSAgICAgIHZhbHVlc1tD
T0xfQ01UX1JFVl0uUHJpbnRmICgiJWxkIiwgZW50cnkuY210UmV2ICgpKTsKKyAgICAgIHZhbHVl
c1tDT0xfUkVWXS5QcmludGYgKF8oIiVsZCIpLCBlbnRyeS5yZXZpc2lvbiAoKSk7CisgICAgICB2
YWx1ZXNbQ09MX0NNVF9SRVZdLlByaW50ZiAoXygiJWxkIiksIGVudHJ5LmNtdFJldiAoKSk7CiAK
LSAgICAgIHZhbHVlc1tDT0xfQVVUSE9SXSA9IGVudHJ5LmNtdEF1dGhvciAoKTsKKyAgICAgIHZh
bHVlc1tDT0xfQVVUSE9SXSA9IHd4U3RyaW5nKGVudHJ5LmNtdEF1dGhvciAoKSwgd3hDb252TG9j
YWwpOwogCiAgICAgICAvLyBkYXRlIGZvcm1hdHRpbmcKLSAgICAgIHZhbHVlc1tDT0xfQ01UX0RB
VEVdID0gRm9ybWF0RGF0ZVRpbWUgKGVudHJ5LmNtdERhdGUgKCkpOwotICAgICAgdmFsdWVzW0NP
TF9URVhUX1RJTUVdID0gRm9ybWF0RGF0ZVRpbWUgKGVudHJ5LnRleHRUaW1lICgpKTsKLSAgICAg
IHZhbHVlc1tDT0xfUFJPUF9USU1FXSA9IEZvcm1hdERhdGVUaW1lIChlbnRyeS5wcm9wVGltZSAo
KSk7Ci0KLSAgICAgIHZhbHVlc1tDT0xfVVJMXSA9IGVudHJ5LnVybCAoKTsKLSAgICAgIHZhbHVl
c1tDT0xfUkVQT1NdID0gZW50cnkucmVwb3MgKCk7Ci0gICAgICB2YWx1ZXNbQ09MX1VVSURdID0g
ZW50cnkudXVpZCAoKTsKKyAgICAgIHZhbHVlc1tDT0xfQ01UX0RBVEVdID0gd3hTdHJpbmcoRm9y
bWF0RGF0ZVRpbWUgKGVudHJ5LmNtdERhdGUgKCkpLCB3eENvbnZMb2NhbCk7CisgICAgICB2YWx1
ZXNbQ09MX1RFWFRfVElNRV0gPSB3eFN0cmluZyhGb3JtYXREYXRlVGltZSAoZW50cnkudGV4dFRp
bWUgKCkpLCB3eENvbnZMb2NhbCk7CisgICAgICB2YWx1ZXNbQ09MX1BST1BfVElNRV0gPSB3eFN0
cmluZyhGb3JtYXREYXRlVGltZSAoZW50cnkucHJvcFRpbWUgKCkpLCB3eENvbnZMb2NhbCk7CisK
KyAgICAgIHZhbHVlc1tDT0xfVVJMXSA9IHd4U3RyaW5nKGVudHJ5LnVybCAoKSwgd3hDb252TG9j
YWwpOworICAgICAgdmFsdWVzW0NPTF9SRVBPU10gPSB3eFN0cmluZyhlbnRyeS5yZXBvcyAoKSwg
d3hDb252TG9jYWwpOworICAgICAgdmFsdWVzW0NPTF9VVUlEXSA9IHd4U3RyaW5nKGVudHJ5LnV1
aWQgKCksIHd4Q29udkxvY2FsKTsKICAgICAgIAogICAgICAgd3hTdHJpbmcgc2NoZWR1bGU7CiAg
ICAgICBzd2l0Y2ggKGVudHJ5LnNjaGVkdWxlICgpKQpAQCAtOTM1LDIyICs5MzUsMjIgQEAKICAg
ICAgICAgc2NoZWR1bGUgPSBfKCJyZXBsYWNlIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2Fz
ZSBzdm5fd2Nfc2NoZWR1bGVfbm9ybWFsOgotICAgICAgICBzY2hlZHVsZSA9ICIiOworICAgICAg
ICBzY2hlZHVsZSA9IF8oIiIpOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIHZhbHVl
c1tDT0xfU0NIRURVTEVdID0gc2NoZWR1bGU7CiAKICAgICAgIGlmIChlbnRyeS5pc0NvcGllZCAo
KSkKICAgICAgIHsKLSAgICAgICAgdmFsdWVzW0NPTF9DT1BJRURdLlByaW50ZiAoIiVzLCAlbGQi
LCAKKyAgICAgICAgdmFsdWVzW0NPTF9DT1BJRURdLlByaW50ZiAoXygiJXMsICVsZCIpLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5jb3B5ZnJvbVVybCAoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5jb3B5ZnJvbVJldiAoKSk7CiAg
ICAgICB9CiAKLSAgICAgIHZhbHVlc1tDT0xfQ09ORkxJQ1RfT0xEXSA9IGVudHJ5LmNvbmZsaWN0
T2xkICgpOwotICAgICAgdmFsdWVzW0NPTF9DT05GTElDVF9ORVddID0gZW50cnkuY29uZmxpY3RO
ZXcgKCk7Ci0gICAgICB2YWx1ZXNbQ09MX0NPTkZMSUNUX1dSS10gPSBlbnRyeS5jb25mbGljdFdy
ayAoKTsKLSAgICAgIHZhbHVlc1tDT0xfQ0hFQ0tTVU1dID0gZW50cnkuY2hlY2tzdW0gKCk7Cisg
ICAgICB2YWx1ZXNbQ09MX0NPTkZMSUNUX09MRF0gPSB3eFN0cmluZyhlbnRyeS5jb25mbGljdE9s
ZCAoKSwgd3hDb252TG9jYWwpOworICAgICAgdmFsdWVzW0NPTF9DT05GTElDVF9ORVddID0gd3hT
dHJpbmcoZW50cnkuY29uZmxpY3ROZXcgKCksIHd4Q29udkxvY2FsKTsKKyAgICAgIHZhbHVlc1tD
T0xfQ09ORkxJQ1RfV1JLXSA9IHd4U3RyaW5nKGVudHJ5LmNvbmZsaWN0V3JrICgpLCB3eENvbnZM
b2NhbCk7CisgICAgICB2YWx1ZXNbQ09MX0NIRUNLU1VNXSA9IHd4U3RyaW5nKGVudHJ5LmNoZWNr
c3VtICgpLCB3eENvbnZMb2NhbCk7CiAgICAgfQogICAgIHN3aXRjaCAoc3RhdHVzLnRleHRTdGF0
dXMgKCkpCiAgICAgewpAQCAtMTA4NSw3ICsxMDg1LDcgQEAKICAgICB0cnkKICAgICB7CiAgICAg
ICBpZihzdGF0dXMgIT0gMCkKLSAgICAgIHZlcmJMaXN0LkluaXRGcm9tRG9jdW1lbnQgKHN0YXR1
cy0+cGF0aCAoKSk7CisgICAgICB2ZXJiTGlzdC5Jbml0RnJvbURvY3VtZW50ICh3eFN0cmluZyhz
dGF0dXMtPnBhdGggKCksIHd4Q29udkxvY2FsKSk7CiAgICAgfQogICAgIGNhdGNoIChzdGQ6OmV4
Y2VwdGlvbikKICAgICB7CkBAIC0xMTAxLDcgKzExMDEsNyBAQAogICAgICAgd3hNZW51SXRlbSAq
cEl0ZW07CiAgICAgICAvLyBUT0RPOiBDb252ZXJ0IHZlcmIgbmFtZXMgdG8gdW5pY29kZSBvbiB0
aGUgZmx5IGlmIG5lZWRlZCAob3IgbWFrZQogICAgICAgLy8gdmVyYmxpc3QgZm9sbG93IHd4V2lu
ZG93cycgdW5pY29kZSBzZXR0aW5nKQotICAgICAgcEl0ZW0gPSBuZXcgd3hNZW51SXRlbSAoJm1l
bnUsIElEX1ZlcmJfTWluICsgaSwgdmVyYkxpc3QuR2V0TmFtZSAoaSkpOworICAgICAgcEl0ZW0g
PSBuZXcgd3hNZW51SXRlbSAoJm1lbnUsIElEX1ZlcmJfTWluICsgaSwgd3hTdHJpbmcodmVyYkxp
c3QuR2V0TmFtZSAoaSksIHd4Q29udkxvY2FsKSk7CiAgICAgICAvL3BJdGVtLT5TZXRCaXRtYXAg
KHd4QklUTUFQICg/KSkKICAgICAgIG1lbnUuQXBwZW5kIChwSXRlbSk7CiAgICAgfQpAQCAtMTEx
Miw3ICsxMTEyLDcgQEAKICAgICAgIFByZWZlcmVuY2VzIHByZWZzOwogICAgICAgaWYgKCFwcmVm
cy5lZGl0b3IuSXNFbXB0eSAoKSB8fCBJc0RpciAoc3RhdHVzKSkKICAgICAgIHsKLSAgICAgICAg
Y29uc3QgY2hhciAqIGRlZmF1bHRBY3Rpb25WZXJiID0gXygiT3BlbiIpOworICAgICAgICBjb25z
dCB3eENoYXIgKiBkZWZhdWx0QWN0aW9uVmVyYiA9IF8oIk9wZW4iKTsKICAgICAgICAgaWYgKCFJ
c0RpciAoc3RhdHVzKSkKICAgICAgICAgewogICAgICAgICAgIGlmIChzdm46OlVybDo6aXNWYWxp
ZCAoc3RhdHVzLT5wYXRoICgpKSkKQEAgLTEzOTUsNyArMTM5NSw3IEBACiAgICAgCiAgIHdoaWxl
IChHZXRDb2x1bW5Db3VudCAoKSA8IGNvdW50KQogICB7Ci0gICAgSW5zZXJ0Q29sdW1uICgwLCAi
Iik7CisgICAgSW5zZXJ0Q29sdW1uICgwLCBfKCIiKSk7CiAgIH0KIAogICAvLyBOb3cgc2V0IHRo
ZSBjYXB0aW9ucyBhbmQgd2lkdGhzCmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9mb2xkZXJf
YnJvd3Nlci5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZm9sZGVyX2Jyb3dz
ZXIuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvZm9sZGVyX2Jyb3dzZXIuY3BwCTIwMDQtMDUt
MjQgMTE6NDU6MTMuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZp
eGVkL3NyYy9mb2xkZXJfYnJvd3Nlci5jcHAJMjAwNC0wOC0xMCAxNTo1MTo1OC4wMDAwMDAwMDAg
LTA0MDAKQEAgLTk0LDcgKzk0LDcgQEAKICAgaWYgKHBhdGgubGVuZ3RoKCkgPD0gTUFYTEVOR1RI
X0JPT0tNQVJLKQogICAgIHJldHVybiBwYXRoOwogCi0gIHNpemVfdCBwb3MgPSBwYXRoLkZpbmQg
KCI6Iik7CisgIHNpemVfdCBwb3MgPSBwYXRoLkZpbmQgKF8oIjoiKSk7CiAgIHd4U3RyaW5nIG5l
d1BhdGg7CiAKICAgcG9zKys7CkBAIC0xMTcsNyArMTE3LDcgQEAKICAgICAgIGJyZWFrOwogICB9
CiAKLSAgbmV3UGF0aCArPSAiLi4uIjsKKyAgbmV3UGF0aCArPSBfKCIuLi4iKTsKIAogICBjb25z
dCBpbnQgcmVzdFBvcyA9IHBhdGguTGVuZ3RoICgpIC0gTUFYTEVOR1RIX0JPT0tNQVJLICsgCiAg
ICAgbmV3UGF0aC5MZW5ndGggKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAKIHN0YXRpYyBib29sCiBJ
c1ZhbGlkU2VwYXJhdG9yIChjb25zdCB3eFN0cmluZyAmIHNlcCkKIHsKLSAgcmV0dXJuICgoc2Vw
ID09ICIvIikgfHwgKHNlcCA9PSAiXFwiKSk7CisgIHJldHVybiAoKHNlcCA9PSBfKCIvIikpIHx8
IChzZXAgPT0gXygiXFwiKSkpOwogfQogCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogICAKICAgICBp
ZighaWQuSXNPaygpKQogICAgIHsKLSAgICAgIHJldHVybiAiIjsKKyAgICAgIHJldHVybiBfKCIi
KTsKICAgICB9CiAKICAgICBGb2xkZXJJdGVtRGF0YSogZGF0YSA9IEdldEl0ZW1EYXRhIChpZCk7
CkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgRk9MREVS
X1RZUEVfQk9PS01BUks6Ci0gICAgICAgIGNvbnRleHQgPSBib29rbWFya3MuR2V0Q29udGV4dCAo
ZGF0YS0+Z2V0UGF0aCAoKSk7CisgICAgICAgIGNvbnRleHQgPSBib29rbWFya3MuR2V0Q29udGV4
dChkYXRhLT5nZXRQYXRoKCkuVG9Bc2NpaSgpKTsKICAgICAgICAgb2sgPSBjb250ZXh0ICE9IDA7
CiAKICAgICAgICAgYnJlYWs7CkBAIC0yNzQsNyArMjc0LDcgQEAKIAogICAgICAgaWYgKGNvbnRl
eHQgIT0gMCkKICAgICAgIHsKLSAgICAgICAgdXNlcm5hbWUgPSBjb250ZXh0LT5nZXRVc2VybmFt
ZSAoKTsKKyAgICAgICAgdXNlcm5hbWUgPSB3eFN0cmluZyhjb250ZXh0LT5nZXRVc2VybmFtZSAo
KSwgd3hDb252TG9jYWwpOwogICAgICAgfQogCiAgICAgICBpZiAodXNlcm5hbWUubGVuZ3RoICgp
ID09IDApCkBAIC0zMjUsNyArMzI1LDcgQEAKICAgCiAgICAgd2hpbGUgKG9rKQogICAgIHsKLSAg
ICAgIGlmIChmaWxlbmFtZSAhPSBzdm46OldjOjpBRE1fRElSX05BTUUpCisgICAgICBpZiAoZmls
ZW5hbWUgIT0gd3hTdHJpbmcoc3ZuOjpXYzo6QURNX0RJUl9OQU1FLCB3eENvbnZMb2NhbCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgb2sgPSBkaXIuR2V0TmV4dCAoJmZpbGVuYW1lKTsK
ICAgICB9CkBAIC0zODUsNyArMzg1LDcgQEAKIAogICAgICAgICBmb3IoaW5kZXggPSAwOyBpbmRl
eCA8IGNvdW50OyBpbmRleCsrKQogICAgICAgICB7Ci0gICAgICAgICAgY29uc3Qgd3hTdHJpbmcg
cGF0aCAoYm9va21hcmtzLkdldEJvb2ttYXJrIChpbmRleCkpOworICAgICAgICAgIGNvbnN0IHd4
U3RyaW5nIHBhdGggKGJvb2ttYXJrcy5HZXRCb29rbWFyayAoaW5kZXgpLCB3eENvbnZMb2NhbCk7
CiAgICAgICAgICAgRm9sZGVySXRlbURhdGEqIGRhdGE9IG5ldyBGb2xkZXJJdGVtRGF0YSAoRk9M
REVSX1RZUEVfQk9PS01BUkssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhdGgsIHBhdGgsIFRSVUUpOwogICAgICAgICAgIHd4U3RyaW5nIGxh
YmVsIChUcnVuY2F0ZVBhdGggKHBhdGgpKTsKQEAgLTQwNiw3ICs0MDYsNyBAQAogICAgICAgewog
ICAgICAgICBjb25zdCB3eFN0cmluZyYgcGFyZW50UGF0aCA9IHBhcmVudERhdGEtPmdldFBhdGgg
KCk7CiAKLSAgICAgICAgaWYgKCBzdm46OlVybDo6aXNWYWxpZCAocGFyZW50UGF0aCkgKQorICAg
ICAgICBpZiAoIHN2bjo6VXJsOjppc1ZhbGlkIChwYXJlbnRQYXRoLlRvQXNjaWkoKSkgKQogICAg
ICAgICAgIFJlZnJlc2hSZXBvc2l0b3J5IChwYXJlbnRQYXRoLCBwYXJlbnRJZCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICBSZWZyZXNoTG9jYWwgKHBhcmVudFBhdGgsIHBhcmVudElkKTsKQEAg
LTQ1NSwxMyArNDU1LDEzIEBACiAKICAgICB3aGlsZShvaykKICAgICB7Ci0gICAgICBpZihmaWxl
bmFtZSAhPSBzdm46OldjOjpBRE1fRElSX05BTUUpCisgICAgICBpZihmaWxlbmFtZSAhPSB3eFN0
cmluZyhzdm46OldjOjpBRE1fRElSX05BTUUsIHd4Q29udkxvY2FsKSkKICAgICAgIHsKICAgICAg
ICAgcGFyZW50SGFzU3ViZGlyZWN0b3JpZXMgPSB0cnVlOwogICAKICAgICAgICAgd3hGaWxlTmFt
ZSBwYXRoKHBhcmVudFBhdGgsIGZpbGVuYW1lLCB3eFBBVEhfTkFUSVZFKTsKICAgICAgICAgd3hT
dHJpbmcgZnVsbFBhdGggPSBwYXRoLkdldEZ1bGxQYXRoICgpOwotICAgICAgICBjb25zdCBjaGFy
ICogZnVsbFBhdGhfYyA9IGZ1bGxQYXRoLmNfc3RyICgpOworICAgICAgICBjb25zdCBjaGFyICog
ZnVsbFBhdGhfYyA9IGZ1bGxQYXRoLlRvQXNjaWkgKCk7CiAgICAgICAgIGludCBpbWFnZSA9IEZP
TERFUl9JTUFHRV9GT0xERVI7CiAgICAgICAgIGludCBvcGVuX2ltYWdlID0gRk9MREVSX0lNQUdF
X09QRU5fRk9MREVSOwogCkBAIC01MTEsNyArNTExLDcgQEAKICAgICBzdm46OkNsaWVudCBjbGll
bnQgKEdldENvbnRleHQgKCkpOwogICAgIHN2bjo6UmV2aXNpb24gcmV2IChzdm46OlJldmlzaW9u
OjpIRUFEKTsKICAgICBzdm46OkRpckVudHJpZXMgZW50cmllcyA9IAotICAgICAgY2xpZW50Lmxz
IChwYXJlbnRQYXRoLCByZXYsIGZhbHNlKTsKKyAgICAgIGNsaWVudC5scyAocGFyZW50UGF0aC5U
b0FzY2lpKCksIHJldiwgZmFsc2UpOwogICAgIHN2bjo6RGlyRW50cmllczo6Y29uc3RfaXRlcmF0
b3IgaXQ7CiAKICAgICAvL2Jvb2wgcGFyZW50SGFzU3ViZGlyZWN0b3JpZXMgPSBmYWxzZTsKQEAg
LTUyMSw3ICs1MjEsNyBAQAogICAgICAgaW50IGltYWdlID0gRk9MREVSX0lNQUdFX0ZPTERFUjsK
ICAgICAgIGludCBvcGVuX2ltYWdlID0gRk9MREVSX0lNQUdFX09QRU5fRk9MREVSOwogCi0gICAg
ICB3eFN0cmluZyBmdWxsUGF0aCA9IGVudHJ5Lm5hbWUgKCk7CisgICAgICB3eFN0cmluZyBmdWxs
UGF0aCAoZW50cnkubmFtZSAoKSwgd3hDb252TG9jYWwpOwogICAgICAgd3hTdHJpbmcgZmlsZW5h
bWUgKGZ1bGxQYXRoLk1pZCAocGFyZW50UGF0aC5MZW5ndGggKCkgKyAxKSk7CiAgICAgICAvL3Bh
cmVudEhhc1N1YmRpcmVjdG9yaWVzID0gdHJ1ZTsKICAgICAgIApAQCAtNjkzLDcgKzY5Myw3IEBA
CiAgICAgICAgIGJyZWFrOwogCiAgICAgICAvLyBib29rbWFyayBtYXRjaD8KLSAgICAgIGlmIChk
YXRhLT5nZXRQYXRoICgpID09IGJvb2ttYXJrUGF0aCkKKyAgICAgIGlmIChkYXRhLT5nZXRQYXRo
ICgpID09IHd4U3RyaW5nKGJvb2ttYXJrUGF0aCwgd3hDb252TG9jYWwpICkKICAgICAgIHsKICAg
ICAgICAgLy8gc2VsZWN0IGJvb2ttYXJrCiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwpAQCAtNzQ5
LDcgKzc0OSw3IEBACiAgIHsKICAgICB3eFRyZWVJdGVtSWQgaWQgPSBHZXRTZWxlY3RlZEJvb2tt
YXJrSWQgKCk7CiAKLSAgICB3eFN0cmluZyBwYXRoICgiIik7CisgICAgd3hTdHJpbmcgcGF0aCAo
XygiIikpOwogCiAgICAgaWYgKGlkLklzT2sgKCkpCiAgICAgewpAQCAtNzk5LDE0ICs3OTksMTQg
QEAKICAgaWYgKGJvb2ttYXJrUGF0aC5MZW5ndGggKCkgPT0gMCkKICAgICByZXR1cm47CiAKLSAg
aWYoIW0tPlNlbGVjdEJvb2ttYXJrIChib29rbWFya1BhdGgpKQorICBpZighbS0+U2VsZWN0Qm9v
a21hcmsgKGJvb2ttYXJrUGF0aC5Ub0FzY2lpKCkpKQogICAgIHJldHVybjsKIAogICB3eFRyZWVJ
dGVtSWQgYm9va21hcmtJZCA9IG0tPnRyZWVDdHJsLT5HZXRTZWxlY3Rpb24gKCk7CiAgIGlmICht
LT50cmVlQ3RybC0+SXRlbUhhc0NoaWxkcmVuIChib29rbWFya0lkKSkKICAgICBtLT50cmVlQ3Ry
bC0+RXhwYW5kIChib29rbWFya0lkKTsKIAotICBTZWxlY3RGb2xkZXIgKHBhdGgpOworICBTZWxl
Y3RGb2xkZXIgKHBhdGguVG9Bc2NpaSgpKTsKIH0KIAogY29uc3QgYm9vbApAQCAtODI0LDcgKzgy
NCw3IEBACiAgICAgewogICAgICAgd3hTdHJpbmcgcGF0aCA9IGRhdGEtPmdldFBhdGggKCk7CiAg
ICAgICBtLT5EZWxldGUgKGlkKTsKLSAgICAgIG0tPmJvb2ttYXJrcy5SZW1vdmVCb29rbWFyayAo
cGF0aC5jX3N0ciAoKSk7CisgICAgICBtLT5ib29rbWFya3MuUmVtb3ZlQm9va21hcmsgKHBhdGgu
VG9Bc2NpaSAoKSk7CiAgICAgICBzdWNjZXNzID0gVFJVRTsKICAgICB9CiAgIH0KQEAgLTg5MCw3
ICs4OTAsNyBAQAogYm9vbAogRm9sZGVyQnJvd3Nlcjo6U2VsZWN0Rm9sZGVyIChjb25zdCBjaGFy
ICogcGF0aCkKIHsKLSAgcmV0dXJuIG0tPlNlbGVjdEZvbGRlciAocGF0aCk7CisgIHJldHVybiBt
LT5TZWxlY3RGb2xkZXIgKHd4U3RyaW5nKHBhdGgsIHd4Q29udkxvY2FsKSk7CiB9CiAKIGNvbnN0
IHNpemVfdApkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvZm9sZGVyX2Jyb3dzZXIuaHBwIHJh
cGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2ZvbGRlcl9icm93c2VyLmhwcAotLS0gcmFw
aWRzdm4tMC42LjAvc3JjL2ZvbGRlcl9icm93c2VyLmhwcAkyMDA0LTA1LTI0IDExOjQ1OjE2LjAw
MDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvZm9sZGVy
X2Jyb3dzZXIuaHBwCTIwMDQtMDgtMTAgMTQ6MDU6MTcuMDAwMDAwMDAwIC0wNDAwCkBAIC0zMSw3
ICszMSw3IEBACiAgIEZvbGRlckJyb3dzZXIgKHd4V2luZG93ICogcGFyZW50LCAgY29uc3Qgd3hX
aW5kb3dJRCBpZCA9IC0xLAogICAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50ICYgcG9zID0g
d3hEZWZhdWx0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSAmIHNpemUg
PSB3eERlZmF1bHRTaXplLAotICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyAmIG5hbWUg
PSAiRm9sZGVyQnJvd3NlciIpOworICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyAmIG5h
bWUgPSBfKCJGb2xkZXJCcm93c2VyIikpOwogCiAgIHZpcnR1YWwgfiBGb2xkZXJCcm93c2VyICgp
OwogCmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9nZXRfYWN0aW9uLmNwcCByYXBpZHN2bi0w
LjYuMC11bmljb2RlLWZpeGVkL3NyYy9nZXRfYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAv
c3JjL2dldF9hY3Rpb24uY3BwCTIwMDQtMDUtMjQgMTE6NDU6MTguMDAwMDAwMDAwIC0wNDAwCisr
KyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9nZXRfYWN0aW9uLmNwcAkyMDA0LTA4
LTEwIDE1OjU1OjMwLjAwMDAwMDAwMCAtMDQwMApAQCAtNDAsOSArNDAsOSBAQAogewogICBzdm46
OkNsaWVudCBjbGllbnQgKEdldENvbnRleHQgKCkpOwogCi0gIHd4U2V0V29ya2luZ0RpcmVjdG9y
eSAoR2V0UGF0aCAoKS5jX3N0ciAoKSk7Ci0gIGNsaWVudC51cGRhdGUgKG1fZGF0YS5wYXRoLmNf
c3RyICgpLAotICAgICAgICAgICAgICAgICBtX2RhdGEucmV2aXNpb24sCisgIHd4U2V0V29ya2lu
Z0RpcmVjdG9yeSAod3hTdHJpbmcoR2V0UGF0aCAoKS5jX3N0ciAoKSwgd3hDb252TG9jYWwpKTsK
KyAgY2xpZW50LnVwZGF0ZSAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihtX2RhdGEucGF0aC5U
b0FzY2lpKCkpLAorCQkgbV9kYXRhLnJldmlzaW9uLAogICAgICAgICAgICAgICAgICBmYWxzZSk7
CiAKICAgcmV0dXJuIHRydWU7CmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9pbXBvcnRfYWN0
aW9uLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9pbXBvcnRfYWN0aW9uLmNw
cAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2ltcG9ydF9hY3Rpb24uY3BwCTIwMDQtMDUtMjQgMTE6
NDU6MTQuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3Ny
Yy9pbXBvcnRfYWN0aW9uLmNwcAkyMDA0LTA4LTEwIDE1OjU3OjE3LjAwMDAwMDAwMCAtMDQwMApA
QCAtNTAsOCArNTAsOSBAQAogSW1wb3J0QWN0aW9uOjpQZXJmb3JtICgpCiB7CiAgIHN2bjo6Q2xp
ZW50IGNsaWVudCAoR2V0Q29udGV4dCAoKSk7Ci0gIGNsaWVudC5pbXBvcnQgKG1fZGF0YS5QYXRo
LmNfc3RyICgpLCBtX2RhdGEuUmVwb3NpdG9yeS5jX3N0ciAoKSwKLSAgICAgICAgICAgICAgICAg
bV9kYXRhLkxvZ01lc3NhZ2UuY19zdHIoKSwgbV9kYXRhLlJlY3Vyc2l2ZSk7CisgIGNsaWVudC5p
bXBvcnQgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4obV9kYXRhLlBhdGguVG9Bc2NpaSgpKSwg
CisJCSBtX2RhdGEuUmVwb3NpdG9yeS5Ub0FzY2lpICgpLCBtX2RhdGEuTG9nTWVzc2FnZS5Ub0Fz
Y2lpKCksIAorCQkgbV9kYXRhLlJlY3Vyc2l2ZSk7CiAKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9pbXBvcnRfZGxnLmNwcCByYXBpZHN2bi0wLjYuMC11bmlj
b2RlLWZpeGVkL3NyYy9pbXBvcnRfZGxnLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL2ltcG9y
dF9kbGcuY3BwCTIwMDQtMDUtMjQgMTE6NDU6MTcuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2
bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9pbXBvcnRfZGxnLmNwcAkyMDA0LTA4LTEwIDE1OjU4
OjM0LjAwMDAwMDAwMCAtMDQwMApAQCAtNTAsMjIgKzUwLDIyIEBACiAgICAgLy8gUm93IDA6ICAK
ICAgICBHcmlkLT5BZGQobmV3IHd4U3RhdGljVGV4dCh3bmQsIC0xLCBfKCJSZXBvc2l0b3J5IFVS
TCIpKSwgMCwgCiAgICAgICAgICAgICAgIHd4TEVGVCB8IHd4QUxJR05fQ0VOVEVSX1ZFUlRJQ0FM
LCA1KTsKLSAgICB3eFRleHRDdHJsICpSZXBvc2l0b3J5ID0gbmV3IHd4VGV4dEN0cmwod25kLCAt
MSwgIiIsCisgICAgd3hUZXh0Q3RybCAqUmVwb3NpdG9yeSA9IG5ldyB3eFRleHRDdHJsKHduZCwg
LTEsIF8oIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
eERlZmF1bHRQb3NpdGlvbiwgd3hTaXplKDMwMCwgLTEpLCAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3eFRleHRWYWxpZGF0b3Iod3hGSUxURVJfTk9ORSwg
JmRhdGEuUmVwb3NpdG9yeSkpOwogICAgIEdyaWQtPkFkZChSZXBvc2l0b3J5LCAxLCB3eExFRlQg
fCB3eEVYUEFORCB8IHd4QUxJR05fQ0VOVEVSX1ZFUlRJQ0FMLCA1KTsKIAotICAgIEdyaWQtPkFk
ZChuZXcgd3hTdGF0aWNUZXh0KHduZCwgLTEsICIiKSwgMCwgCisgICAgR3JpZC0+QWRkKG5ldyB3
eFN0YXRpY1RleHQod25kLCAtMSwgXygiIikpLCAwLCAKICAgICAgICAgICAgICAgMCwgNSk7CiAK
ICAgICAvLyBSb3cgMTogIAogICAgIEdyaWQtPkFkZChuZXcgd3hTdGF0aWNUZXh0KHduZCwgLTEs
IF8oIlBhdGgiKSksIDAsIAogICAgICAgICAgICAgICB3eExFRlQgfCB3eEFMSUdOX0NFTlRFUl9W
RVJUSUNBTCwgNSk7Ci0gICAgd3hUZXh0Q3RybCAqUGF0aCA9IG5ldyB3eFRleHRDdHJsKHduZCwg
LTEsICIiLAorICAgIHd4VGV4dEN0cmwgKlBhdGggPSBuZXcgd3hUZXh0Q3RybCh3bmQsIC0xLCBf
KCIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9z
aXRpb24sIHd4U2l6ZSgzMDAsIC0xKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3hUZXh0VmFsaWRhdG9yKHd4RklMVEVSX05PTkUsICZkYXRhLlBhdGgpKTsKICAg
ICBHcmlkLT5BZGQoUGF0aCwgMSwgd3hMRUZUIHwgd3hFWFBBTkQsIDUpOwotICAgIHd4QnV0dG9u
KiBCcm93c2VCdXR0b24gPSBuZXcgd3hCdXR0b24od25kLCBJRF9CVVRUT05fQlJPV1NFLCAiLi4u
IiwgCisgICAgd3hCdXR0b24qIEJyb3dzZUJ1dHRvbiA9IG5ldyB3eEJ1dHRvbih3bmQsIElEX0JV
VFRPTl9CUk9XU0UsIF8oIi4uLiIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4UG9pbnQoLTEsLTEpLCB3eFNpemUoMjAsIC0xKSk7CiAgICAgR3JpZC0+QWRk
KEJyb3dzZUJ1dHRvbiwgMCwgd3hMRUZUIHwgd3hBTElHTl9DRU5URVJfVkVSVElDQUwsIDUpOwog
ICAKQEAgLTc2LDcgKzc2LDcgQEAKICAgICB3eFN0YXRpY0JveFNpemVyICptZXNzYWdlU2l6ZXIg
PSBuZXcgd3hTdGF0aWNCb3hTaXplcigKICAgICAgIG5ldyB3eFN0YXRpY0JveCh3bmQsIC0xLCBf
KCJFbnRlciBsb2cgbWVzc2FnZSIpKSwgd3hIT1JJWk9OVEFMKTsKICAgICAKLSAgICB3eFRleHRD
dHJsKiBMb2cgPSBuZXcgd3hUZXh0Q3RybCh3bmQsIC0xLCAiIiwgd3hEZWZhdWx0UG9zaXRpb24s
IAorICAgIHd4VGV4dEN0cmwqIExvZyA9IG5ldyB3eFRleHRDdHJsKHduZCwgLTEsIF8oIiIpLCB3
eERlZmF1bHRQb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3hTaXplKC0xLCA1MCksIHd4VEVfTVVMVElMSU5FLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHd4VGV4dFZhbGlkYXRvcih3eEZJTFRFUl9OT05FLCAmZGF0YS5Mb2dNZXNz
YWdlKSk7CiAgICAgCmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9saXN0ZWRfZGxnLmNwcCBy
YXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9saXN0ZWRfZGxnLmNwcAotLS0gcmFwaWRz
dm4tMC42LjAvc3JjL2xpc3RlZF9kbGcuY3BwCTIwMDQtMDUtMjQgMTE6NDU6MTguMDAwMDAwMDAw
IC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9saXN0ZWRfZGxnLmNw
cAkyMDA0LTA4LTEwIDE2OjAwOjQwLjAwMDAwMDAwMCAtMDQwMApAQCAtNDAsMTAgKzQwLDEwIEBA
CiAgIEVESVRfRURJVAogfTsKIAotc3RhdGljIGNvbnN0IGNoYXIgKiBMQUJFTF9FRElUPV8oIiZF
ZGl0Li4uIik7Ci1zdGF0aWMgY29uc3QgY2hhciAqIExBQkVMX1ZJRVc9XygiJlZpZXcuLi4iKTsK
LXN0YXRpYyBjb25zdCBjaGFyICogTEFCRUxfTkVXPV8oIiZOZXcuLi4iKTsKLXN0YXRpYyBjb25z
dCBjaGFyICogTEFCRUxfREVMRVRFPV8oIiZEZWxldGUuLi4iKTsKK3N0YXRpYyBjb25zdCB3eENo
YXIgKiBMQUJFTF9FRElUPV8oIiZFZGl0Li4uIik7CitzdGF0aWMgY29uc3Qgd3hDaGFyICogTEFC
RUxfVklFVz1fKCImVmlldy4uLiIpOworc3RhdGljIGNvbnN0IHd4Q2hhciAqIExBQkVMX05FVz1f
KCImTmV3Li4uIik7CitzdGF0aWMgY29uc3Qgd3hDaGFyICogTEFCRUxfREVMRVRFPV8oIiZEZWxl
dGUuLi4iKTsKIAogY2xhc3MgTGlzdEN0cmwgOiBwdWJsaWMgd3hMaXN0VmlldwogewpAQCAtMTYy
LDcgKzE2Miw3IEBACiAgICAgd3hUZXh0Q3RybCAqIHRleHROYW1lID0gbmV3IHd4VGV4dEN0cmwg
KHRoaXMsIElEX05hbWUpOwogCiAgICAgd3hUZXh0Q3RybCAqIHRleHRWYWx1ZSA9IAotICAgICAg
bmV3IHd4VGV4dEN0cmwgKHRoaXMsIElEX1ZhbHVlLCAiIiwgd3hEZWZhdWx0UG9zaXRpb24sIAor
ICAgICAgbmV3IHd4VGV4dEN0cmwgKHRoaXMsIElEX1ZhbHVlLCBfKCIiKSwgd3hEZWZhdWx0UG9z
aXRpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHd4U2l6ZSAoMzAwLCAxMDApLCB3eFRFX01V
TFRJTElORSk7CiAKICAgICB3eEZsZXhHcmlkU2l6ZXIgKiB0ZXh0U2l6ZXIgPSBuZXcgd3hGbGV4
R3JpZFNpemVyICgyLCA1LCA1KTsKQEAgLTE5Niw4ICsxOTYsOCBAQAogICAgIG1fbGFiZWxOYW1l
ID0gbGFiZWxOYW1lOwogICAgIG1fbGFiZWxWYWx1ZSA9IGxhYmVsVmFsdWU7CiAKLSAgICBtX2Fk
ZFRpdGxlID0gIiI7Ci0gICAgbV9lZGl0VGl0bGUgPSAiIjsKKyAgICBtX2FkZFRpdGxlID0gXygi
Iik7CisgICAgbV9lZGl0VGl0bGUgPSBfKCIiKTsKICAgICBtX21vZGUgPSBFRElUX05FVzsKICAg
fQogCkBAIC0zMTksNyArMzE5LDcgQEAKICAgewogICAgIC8vIGNyZWF0ZSBjb250cm9scwogICAg
IHd4U3RhdGljQm94U2l6ZXIgKmJveFNpemVyID0gbmV3IHd4U3RhdGljQm94U2l6ZXIgKAotICAg
ICAgYm94ID0gbmV3IHd4U3RhdGljQm94ICh3bmQsIC0xLCAiIiksIAorICAgICAgYm94ID0gbmV3
IHd4U3RhdGljQm94ICh3bmQsIC0xLCBfKCIiKSksIAogICAgICAgd3hIT1JJWk9OVEFMKTsKIAog
ICAgIGxpc3RDdHJsID0gbmV3IExpc3RDdHJsICh3bmQpOwpAQCAtNDA3LDcgKzQwNyw3IEBACiAg
IHZvaWQKICAgRWRpdCAoaW50IG1vZGUpCiAgIHsKLSAgICB3eFN0cmluZyBuYW1lICgiIiksIHZh
bHVlICgiIiksIHRpdGxlICgiIik7CisgICAgd3hTdHJpbmcgbmFtZSAoXygiIikpLCB2YWx1ZSAo
XygiIikpLCB0aXRsZSAoXygiIikpOwogCiAgICAgaWYgKG1vZGUgIT0gRURJVF9FRElUKQogICAg
ICAgdGl0bGUgPSBhZGRUaXRsZTsKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL2xpc3RlbmVy
LmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9saXN0ZW5lci5jcHAKLS0tIHJh
cGlkc3ZuLTAuNi4wL3NyYy9saXN0ZW5lci5jcHAJMjAwNC0wNS0yNCAxMTo0NToxOS4wMDAwMDAw
MDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL2xpc3RlbmVyLmNw
cAkyMDA0LTA4LTEwIDE3OjAzOjAwLjAwMDAwMDAwMCAtMDQwMApAQCAtMjEsNyArMjEsNyBAQAog
I2luY2x1ZGUgInRyYWNlci5ocHAiCiAjaW5jbHVkZSAiYXV0aF9kbGcuaHBwIgogCi1zdGF0aWMg
Y29uc3QgY2hhciAqCitzdGF0aWMgY29uc3Qgd3hDaGFyICoKIEFDVElPTl9OQU1FUyBbXSA9CiB7
CiAgIF8oIkFkZCIpLCAgICAgICAgICAgLy8gc3ZuX3djX25vdGlmeV9hZGQsCkBAIC0xNzgsMTIg
KzE3OCwxMiBAQAogICBpZiAob2spCiAgIHsKICAgICAvLyBXT1JLQVJPVU5EOiBDT05WRVJUIFRP
IFVURjgKLSAgICB3eFN0cmluZyB1c2VybmFtZU5hdGl2ZSAoZGxnLkdldFVzZXJuYW1lICgpKTsK
LSAgICB3eFN0cmluZyBwYXNzd29yZE5hdGl2ZSAoZGxnLkdldFBhc3N3b3JkICgpKTsKLSAgICB3
eFN0cmluZyB1c2VybmFtZVV0ZjggKHVzZXJuYW1lTmF0aXZlLm1iX3N0ciAod3hDb252VVRGOCkp
OwotICAgIHd4U3RyaW5nIHBhc3N3b3JkVXRmOCAocGFzc3dvcmROYXRpdmUubWJfc3RyICh3eENv
bnZVVEY4KSk7Ci0gICAgdXNlcm5hbWUgPSB1c2VybmFtZVV0ZjguY19zdHIgKCk7Ci0gICAgcGFz
c3dvcmQgPSBwYXNzd29yZFV0ZjguY19zdHIgKCk7CisgICAgd3hTdHJpbmcgdXNlcm5hbWVOYXRp
dmUgKGRsZy5HZXRVc2VybmFtZSAoKSwgd3hDb252TG9jYWwpOworICAgIHd4U3RyaW5nIHBhc3N3
b3JkTmF0aXZlIChkbGcuR2V0UGFzc3dvcmQgKCksIHd4Q29udkxvY2FsKTsKKyAgICB3eFN0cmlu
ZyB1c2VybmFtZVV0ZjggKHVzZXJuYW1lTmF0aXZlLm1iX3N0cih3eENvbnZVVEY4KSwgd3hDb252
VVRGOCk7CisgICAgd3hTdHJpbmcgcGFzc3dvcmRVdGY4IChwYXNzd29yZE5hdGl2ZS5tYl9zdHIo
d3hDb252VVRGOCksIHd4Q29udlVURjgpOworICAgIHVzZXJuYW1lID0gKGNvbnN0IGNoYXIgKil1
c2VybmFtZVV0ZjguVG9Bc2NpaSAoKTsKKyAgICBwYXNzd29yZCA9IChjb25zdCBjaGFyICopcGFz
c3dvcmRVdGY4LlRvQXNjaWkgKCk7CiAgIH0KIAogICByZXR1cm4gb2s7CkBAIC0yMDAsNyArMjAw
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzdm5fcmV2bnVtX3QgcmV2aXNpb24pCiB7
CiAgIC8vIE1hcCBhbiBhY3Rpb24gdG8gc3RyaW5nIGFuZCB0cmFjZSB0aGUgYWN0aW9uIGFuZCBw
YXRoCi0gIGNvbnN0IGNoYXIgKiBhY3Rpb25TdHJpbmcgPSAwOworICBjb25zdCB3eENoYXIgKiBh
Y3Rpb25TdHJpbmcgPSAwOwogCiAgIGlmIChhY3Rpb24gPj0gMCAmJiBhY3Rpb24gPD0gTUFYX0FD
VElPTikKICAgICBhY3Rpb25TdHJpbmcgPSBBQ1RJT05fTkFNRVMgW2FjdGlvbl07CkBAIC0yMDgs
NyArMjA4LDcgQEAKICAgaWYgKGFjdGlvblN0cmluZyAhPSAwKQogICB7CiAgICAgd3hTdHJpbmcg
bXNnOwotICAgIG1zZy5QcmludGYgKCIlczogJXMiLCBhY3Rpb25TdHJpbmcsIHBhdGgpOworICAg
IG1zZy5QcmludGYgKF8oIiVzOiAlcyIpLCBhY3Rpb25TdHJpbmcsIHBhdGgpOwogCiAgICAgVHJh
Y2UgKG1zZyk7CiAgIH0KQEAgLTI0NSwxNSArMjQ1LDE1IEBACiBMaXN0ZW5lcjo6Y29udGV4dFNz
bENsaWVudENlcnRQcm9tcHQgKHN0ZDo6c3RyaW5nICYgY2VydEZpbGUpCiB7CiAgIHd4U3RyaW5n
IGZpbGVuYW1lID0gd3hGaWxlU2VsZWN0b3IgKAotICAgIF8oIlNlbGVjdCBDZXJ0aWZpY2F0ZSBG
aWxlIiksICIiLCAiIiwgIiIsCi0gICAgIiouKiIsIHd4T1BFTiB8IHd4RklMRV9NVVNUX0VYSVNU
LAorICAgIF8oIlNlbGVjdCBDZXJ0aWZpY2F0ZSBGaWxlIiksIF8oIiIpLCBfKCIiKSwgXygiIiks
CisgICAgXygiKi4qIiksIHd4T1BFTiB8IHd4RklMRV9NVVNUX0VYSVNULAogICAgIEdldFBhcmVu
dCAoKSk7CiAKICAgaWYgKGZpbGVuYW1lLmVtcHR5ICgpKQogICAgIHJldHVybiBmYWxzZTsKIAog
ICAvL1RPRE8KLSAgY2VydEZpbGUgPSBmaWxlbmFtZS5jX3N0ciAoKTsKKyAgY2VydEZpbGUgPSBm
aWxlbmFtZS5Ub0FzY2lpICgpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC11ciByYXBpZHN2
bi0wLjYuMC9zcmMvbG9nX2RsZy5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMv
bG9nX2RsZy5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9sb2dfZGxnLmNwcAkyMDA0LTA1LTI0
IDExOjQ1OjE1LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhl
ZC9zcmMvbG9nX2RsZy5jcHAJMjAwNC0wOC0xMCAxNzowNjozNC4wMDAwMDAwMDAgLTA0MDAKQEAg
LTE0OSwxMyArMTQ5LDEzIEBACiAgICAgICB3eFN0cmluZyByZXY7CiAgICAgICB3eFN0cmluZyBk
YXRlU3RyIChGb3JtYXREYXRlVGltZSAoZW50cnkuZGF0ZSkpOwogCi0gICAgICByZXYuUHJpbnRm
ICgiJWxkIiwgKGxvbmcpIGVudHJ5LnJldmlzaW9uKTsKKyAgICAgIHJldi5QcmludGYgKF8oIiVs
ZCIpLCAobG9uZykgZW50cnkucmV2aXNpb24pOwogCiAgICAgICAvL1RPRE8gcGVyZm9ybSBkYXRl
IGZvcm1hdHRpbmcuIGJ1dCBkb250IHVzZQogICAgICAgLy9zdWJ2ZXJzaW9uIGJ1dCB3eERhdGVU
aW1lCiAgICAgICAvL3d4U3RyaW5nIGRhdGUgKGVudHJ5LmRhdGUuY19zdHIgKCkpOwogICAgICAg
SW5zZXJ0SXRlbSAoaW5kZXgsIHJldik7Ci0gICAgICBTZXRJdGVtIChpbmRleCwgMSwgZW50cnku
YXV0aG9yLmNfc3RyICgpKTsKKyAgICAgIFNldEl0ZW0gKGluZGV4LCAxLCB3eFN0cmluZyhlbnRy
eS5hdXRob3IuY19zdHIgKCksIHd4Q29udkxvY2FsKSk7CiAgICAgICBTZXRJdGVtIChpbmRleCwg
MiwgZGF0ZVN0cik7CiAgICAgICBpbmRleCsrOwogICAgIH0KQEAgLTE4NCw3ICsxODQsNyBAQAog
ICAgICAgICB3eFdpbmRvdyAqIHduZCwKICAgICAgICAgY29uc3QgY2hhciAqIHBhdGhfLAogICAg
ICAgICBjb25zdCBzdm46OkxvZ0VudHJpZXMgKiBlbnRyaWVzXykKLSAgICA6IGVudHJpZXMgKGVu
dHJpZXNfKSwgcGF0aCAocGF0aF8pLCAKKyAgICA6IGVudHJpZXMgKGVudHJpZXNfKSwgcGF0aCAo
cGF0aF8sIHd4Q29udkxvY2FsKSwgCiAgICAgICBwYXJlbnQgKHBhcmVudF8pLCB3aW5kb3cgKHdu
ZCkKICAgewogICAgIC8vIGNyZWF0ZSBjb250cm9scwpAQCAtMTk0LDcgKzE5NCw3IEBACiAKICAg
ICBtX2xvZ0xpc3QgPSBuZXcgTG9nTGlzdCAod25kLCBlbnRyaWVzKTsKIAotICAgIG1fbG9nTXNn
ID0gbmV3IHd4VGV4dEN0cmwgKHduZCwgTE9HX01TRywgIiIsIAorICAgIG1fbG9nTXNnID0gbmV3
IHd4VGV4dEN0cmwgKHduZCwgTE9HX01TRywgXygiIiksIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4RGVmYXVsdFBvc2l0aW9uLCB3eFNpemUgKDQyMCwgMTEwKSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3hURV9SRUFET05MWSB8IHd4VEVfTVVMVElMSU5FICk7
CiAKQEAgLTI4OCw3ICsyODgsNyBAQAogICB7CiAgICAgd3hTdHJpbmcgbWVzc2FnZTsKICAgICBj
b25zdCBzdm46OkxvZ0VudHJ5ICYgZW50cnkgPSAoKmVudHJpZXMpW2luZGV4XTsKLSAgICBtZXNz
YWdlID0gZW50cnkubWVzc2FnZS5jX3N0ciAoKTsKKyAgICBtZXNzYWdlID0gd3hTdHJpbmcoZW50
cnkubWVzc2FnZS5jX3N0ciAoKSwgd3hDb252TG9jYWwpOwogICAgIG1lc3NhZ2UuVHJpbSAoZmFs
c2UpOwogCiAgICAgbV9sb2dNc2ctPlNob3cgKGZhbHNlKTsKZGlmZiAtdXIgcmFwaWRzdm4tMC42
LjAvc3JjL21lcmdlX2FjdGlvbi5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMv
bWVyZ2VfYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL21lcmdlX2FjdGlvbi5jcHAJ
MjAwNC0wNS0yNCAxMTo0NToxMy4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVu
aWNvZGUtZml4ZWQvc3JjL21lcmdlX2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxNzowODoxMi4wMDAw
MDAwMDAgLTA0MDAKQEAgLTUxLDcgKzUxLDcgQEAKICAgLy8gU2V0IGN1cnJlbnQgd29ya2luZyBk
aXJlY3RvcnkgdG8gcG9pbnQgdG8gdGhlIHBhdGgKICAgLy8gaW4gdGhlIGZvbGRlciBicm93c2Vy
ICh0aGUgcGF0aCB3aGVyZSB0aGUgbWVyZ2Ugd2lsbCBiZSAKICAgLy8gcGVyZm9ybWVkKQotICB3
eFN0cmluZyBwYXRoIChHZXRQYXRoICgpLmNfc3RyICgpKTsKKyAgd3hTdHJpbmcgcGF0aCAoR2V0
UGF0aCAoKS5jX3N0ciAoKSwgd3hDb252TG9jYWwpOwogICBpZiAoIXd4U2V0V29ya2luZ0RpcmVj
dG9yeSAocGF0aCkpCiAgIHsKICAgICB3eFN0cmluZyBtc2c7CkBAIC02NiwxMSArNjYsMTEgQEAK
ICAgLy9UT0RPIGNoZWNrIHRoaXMKICAgbG9uZyByZXYxID0gMDsvL01lcmdlQWN0aW9uOjpnZXRS
ZXZpc2lvbiAobV9kYXRhLlBhdGgxUmV2KTsKICAgbG9uZyByZXYyID0gMDsvL01lcmdlQWN0aW9u
OjpnZXRSZXZpc2lvbiAobV9kYXRhLlBhdGgyUmV2KTsKLSAgY2xpZW50Lm1lcmdlIChtX2RhdGEu
UGF0aDEuY19zdHIgKCksIAorICBjbGllbnQubWVyZ2UgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIg
Kj4obV9kYXRhLlBhdGgxLlRvQXNjaWkgKCkpLCAKICAgICAgICAgICAgICAgICByZXYxLCAKLSAg
ICAgICAgICAgICAgICBtX2RhdGEuUGF0aDIuY19zdHIgKCksIAorICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4obV9kYXRhLlBhdGgyLlRvQXNjaWkgKCkpLCAKICAgICAg
ICAgICAgICAgICByZXYyLCAKLSAgICAgICAgICAgICAgICBwYXRoLmNfc3RyICgpLCAKKyAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KHBhdGguVG9Bc2NpaSAoKSksIAog
ICAgICAgICAgICAgICAgIG1fZGF0YS5Gb3JjZSwgCiAgICAgICAgICAgICAgICAgbV9kYXRhLlJl
Y3Vyc2l2ZSk7CiAgIHJldHVybiB0cnVlOwpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvbWVy
Z2VfZGxnLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9tZXJnZV9kbGcuY3Bw
Ci0tLSByYXBpZHN2bi0wLjYuMC9zcmMvbWVyZ2VfZGxnLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE5
LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvbWVy
Z2VfZGxnLmNwcAkyMDA0LTA4LTEwIDE3OjA5OjM5LjAwMDAwMDAwMCAtMDQwMApAQCAtMTMwLDEy
ICsxMzAsMTIgQEAKICAgICB3eExFRlQgfCB3eEFMSUdOX0NFTlRFUl9WRVJUSUNBTCwgMjApOwog
ICAgIAogICAvLyBSb3cgMTogIAotICB3eFRleHRDdHJsICpQYXRoMSA9IG5ldyB3eFRleHRDdHJs
KHRoaXMsIC0xLCAiIiwKKyAgd3hUZXh0Q3RybCAqUGF0aDEgPSBuZXcgd3hUZXh0Q3RybCh0aGlz
LCAtMSwgXygiIiksCiAgICAgd3hEZWZhdWx0UG9zaXRpb24sIHd4U2l6ZSgzMDAsIC0xKSwgMCwK
ICAgICB3eFRleHRWYWxpZGF0b3Iod3hGSUxURVJfTk9ORSwgJm1fZGF0YS5QYXRoMSkpOwogICBn
cmlkLT5BZGQoUGF0aDEsIDEsIHd4Qk9UVE9NIHwgd3hFWFBBTkQsIDEwKTsKICAgCi0gIHd4VGV4
dEN0cmwgKlBhdGgxUmV2ID0gbmV3IHd4VGV4dEN0cmwodGhpcywgLTEsICIiLAorICB3eFRleHRD
dHJsICpQYXRoMVJldiA9IG5ldyB3eFRleHRDdHJsKHRoaXMsIC0xLCBfKCIiKSwKICAgICB3eERl
ZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwgMCwKICAgICB3eFRleHRWYWxpZGF0b3Iod3hG
SUxURVJfTlVNRVJJQywgJm1fZGF0YS5QYXRoMVJldikpOwogICBncmlkLT5BZGQoUGF0aDFSZXYs
IDAsIHd4TEVGVCwgMjApOwpAQCAtMTQ3LDEyICsxNDcsMTIgQEAKICAgICB3eExFRlQgfCB3eEFM
SUdOX0NFTlRFUl9WRVJUSUNBTCwgMjApOwogCiAgIC8vIFJvdyAzOiAgCi0gIHd4VGV4dEN0cmwg
KlBhdGgyID0gbmV3IHd4VGV4dEN0cmwodGhpcywgLTEsICIiLAorICB3eFRleHRDdHJsICpQYXRo
MiA9IG5ldyB3eFRleHRDdHJsKHRoaXMsIC0xLCBfKCIiKSwKICAgICB3eERlZmF1bHRQb3NpdGlv
biwgd3hEZWZhdWx0U2l6ZSwgMCwKICAgICB3eFRleHRWYWxpZGF0b3Iod3hGSUxURVJfTk9ORSwg
Jm1fZGF0YS5QYXRoMikpOwogICBncmlkLT5BZGQoUGF0aDIsIDEsIHd4Qk9UVE9NIHwgd3hFWFBB
TkQsIDEwKTsKIAotICB3eFRleHRDdHJsICpQYXRoMlJldiA9IG5ldyB3eFRleHRDdHJsKHRoaXMs
IC0xLCAiIiwKKyAgd3hUZXh0Q3RybCAqUGF0aDJSZXYgPSBuZXcgd3hUZXh0Q3RybCh0aGlzLCAt
MSwgXygiIiksCiAgICAgd3hEZWZhdWx0UG9zaXRpb24sIHd4RGVmYXVsdFNpemUsIDAsCiAgICAg
d3hUZXh0VmFsaWRhdG9yKHd4RklMVEVSX05VTUVSSUMsICZtX2RhdGEuUGF0aDJSZXYpKTsKICAg
Z3JpZC0+QWRkKFBhdGgyUmV2LCAwLCB3eExFRlQsIDIwKTsKQEAgLTE2MCwxNiArMTYwLDE2IEBA
CiAgIC8vIFJvdyA0OgogICBncmlkLT5BZGQobmV3IHd4U3RhdGljVGV4dCh0aGlzLCAtMSwgXygi
RGVzdGluYXRpb24gcGF0aCIpKSwgMCwgCiAgICAgMCwgNSk7Ci0gIGdyaWQtPkFkZChuZXcgd3hT
dGF0aWNUZXh0KHRoaXMsIC0xLCAiIiksIDAsIAorICBncmlkLT5BZGQobmV3IHd4U3RhdGljVGV4
dCh0aGlzLCAtMSwgXygiIikpLCAwLCAKICAgICB3eExFRlQgfCB3eEFMSUdOX0NFTlRFUl9WRVJU
SUNBTCwgMjApOwogCiAgIC8vIFJvdyA1OgotICB3eFRleHRDdHJsICpEZXN0aW5hdGlvbiA9IG5l
dyB3eFRleHRDdHJsKHRoaXMsIC0xLCAiIiwKKyAgd3hUZXh0Q3RybCAqRGVzdGluYXRpb24gPSBu
ZXcgd3hUZXh0Q3RybCh0aGlzLCAtMSwgXygiIiksCiAgICAgd3hEZWZhdWx0UG9zaXRpb24sIHd4
RGVmYXVsdFNpemUsIDAsCiAgICAgd3hUZXh0VmFsaWRhdG9yKHd4RklMVEVSX05PTkUsICZtX2Rh
dGEuRGVzdGluYXRpb24pKTsKICAgZ3JpZC0+QWRkKERlc3RpbmF0aW9uLCAxLCB3eEJPVFRPTSB8
IHd4RVhQQU5ELCA1KTsKICAgCi0gIHd4QnV0dG9uKiBCcm93c2VCdXR0b24gPSBuZXcgd3hCdXR0
b24odGhpcywgSURfQlVUVE9OX0JST1dTRSwgIi4uLiIsIAorICB3eEJ1dHRvbiogQnJvd3NlQnV0
dG9uID0gbmV3IHd4QnV0dG9uKHRoaXMsIElEX0JVVFRPTl9CUk9XU0UsIF8oIi4uLiIpLCAKICAg
ICB3eFBvaW50KC0xLC0xKSwgd3hTaXplKDIwLCAtMSkpOwogICBncmlkLT5BZGQoQnJvd3NlQnV0
dG9uLCAwLCB3eEFMTCwgNSk7CiAKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL21rZGlyX2Fj
dGlvbi5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvbWtkaXJfYWN0aW9uLmNw
cAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL21rZGlyX2FjdGlvbi5jcHAJMjAwNC0wNS0yNCAxMTo0
NToxNS4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3Jj
L21rZGlyX2FjdGlvbi5jcHAJMjAwNC0wOC0xMCAxNzoxNjoyNC4wMDAwMDAwMDAgLTA0MDAKQEAg
LTIzLDcgKzIzLDcgQEAKIAogTWtkaXJBY3Rpb246Ok1rZGlyQWN0aW9uICh3eFdpbmRvdyAqIHBh
cmVudCwgY29uc3QgY2hhciAqIHBhdGgpCiAgOiBBY3Rpb24gKHBhcmVudCwgXygiTWtkaXIiKSwg
R2V0QmFzZUZsYWdzICgpKSwKLSAgIG1fcGF0aCAocGF0aCkKKyAgIG1fcGF0aCAocGF0aCwgd3hD
b252TG9jYWwpCiB7CiB9CiAKQEAgLTM1LDE1ICszNSwxNSBAQAogICAgIHJldHVybiBmYWxzZTsK
ICAgfQogCi0gIERlc3RpbmF0aW9uRGxnIGRsZyAoR2V0UGFyZW50ICgpLCBfKCJNYWtlIGRpcmVj
dG9yeSIpLAotICAgICAgICAgICAgICAgICAgICAgIF8oIkRpcmVjdG9yeToiKSk7CisgIERlc3Rp
bmF0aW9uRGxnIGRsZyAoR2V0UGFyZW50ICgpLCAiTWFrZSBkaXJlY3RvcnkiLAorICAgICAgICAg
ICAgICAgICAgICAgICJEaXJlY3Rvcnk6Iik7CiAKICAgaWYgKGRsZy5TaG93TW9kYWwgKCkgIT0g
d3hJRF9PSykKICAgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogCi0gIHd4U3RyaW5nIHRhcmdl
dCAoZGxnLkdldERlc3RpbmF0aW9uICgpKTsgCisgIHd4U3RyaW5nIHRhcmdldCAoZGxnLkdldERl
c3RpbmF0aW9uICgpLCB3eENvbnZMb2NhbCk7IAogICBtX3RhcmdldCA9IHRhcmdldC5TdHJpcCAo
d3hTdHJpbmc6OmJvdGgpOwogICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU2LDggKzU2LDggQEAKICAg
Ly8gYWRkIHRhcmdldCB0byBwYXRoCiAgIHd4U3RyaW5nIG5ld0RpciAobV9wYXRoICsgbV90YXJn
ZXQpOwogCi0gIHN2bjo6UGF0aCB0YXJnZXQgKG1fcGF0aC5jX3N0ciAoKSk7Ci0gIHRhcmdldC5h
ZGRDb21wb25lbnQgKG1fdGFyZ2V0LmNfc3RyICgpKTsKKyAgc3ZuOjpQYXRoIHRhcmdldCAobV9w
YXRoLlRvQXNjaWkgKCkpOworICB0YXJnZXQuYWRkQ29tcG9uZW50IChtX3RhcmdldC5Ub0FzY2lp
ICgpKTsKIAogICBjbGllbnQubWtkaXIgKHRhcmdldCwgIiIpOwogICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL21vdmVfYWN0aW9uLmNwcCByYXBpZHN2bi0wLjYuMC11
bmljb2RlLWZpeGVkL3NyYy9tb3ZlX2FjdGlvbi5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9t
b3ZlX2FjdGlvbi5jcHAJMjAwNC0wNS0yNCAxMTo0NToxMy4wMDAwMDAwMDAgLTA0MDAKKysrIHJh
cGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL21vdmVfYWN0aW9uLmNwcAkyMDA0LTA4LTEw
IDE3OjIyOjA1LjAwMDAwMDAwMCAtMDQwMApAQCAtMjMsMjAgKzIzLDIwIEBACiAKIE1vdmVBY3Rp
b246Ok1vdmVBY3Rpb24gKHd4V2luZG93ICogcGFyZW50LCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGtpbmQpIAotIDogQWN0aW9uIChwYXJlbnQsICIiLCBHZXRCYXNlRmxh
Z3MgKCkpLAorIDogQWN0aW9uIChwYXJlbnQsIF8oIiIpLCBHZXRCYXNlRmxhZ3MgKCkpLAogICAg
bV9raW5kIChraW5kKQogewogICBjb25zdCBjaGFyICogbmFtZTsKICAgc3dpdGNoIChraW5kKQog
ICB7CiAgIGNhc2UgTU9WRV9NT1ZFOgotICAgIG5hbWUgPSBfKCJNb3ZlIik7CisgICAgbmFtZSA9
ICJNb3ZlIjsKICAgICBicmVhazsKICAgY2FzZSBNT1ZFX0NPUFk6Ci0gICAgbmFtZSA9IF8oIkNv
cHkiKTsKKyAgICBuYW1lID0gIkNvcHkiOwogICAgIGJyZWFrOwogICBjYXNlIE1PVkVfUkVOQU1F
OgotICAgIG5hbWUgPSBfKCJSZW5hbWUiKTsKKyAgICBuYW1lID0gIlJlbmFtZSI7CiAgICAgYnJl
YWs7CiAgIGRlZmF1bHQ6CiAgICAgbmFtZSA9ICIiOwpAQCAtNzQsMTAgKzc0LDEwIEBACiAgIHsK
ICAgY2FzZSBNT1ZFX0NPUFk6CiAgIGNhc2UgTU9WRV9NT1ZFOgotICAgIGRlc2NyID0gXygiU2Vs
ZWN0IGRlc3RpbmF0aW9uOiIpOworICAgIGRlc2NyID0gIlNlbGVjdCBkZXN0aW5hdGlvbjoiOwog
ICAgIGJyZWFrOwogICBjYXNlIE1PVkVfUkVOQU1FOgotICAgIGRlc2NyID0gXygiRW50ZXIgbmV3
IG5hbWU6Iik7CisgICAgZGVzY3IgPSAiRW50ZXIgbmV3IG5hbWU6IjsKICAgICBicmVhazsKICAg
ZGVmYXVsdDoKICAgICByZXR1cm4gZmFsc2U7CkBAIC05MSw3ICs5MSw3IEBACiAgICAgcmV0dXJu
IGZhbHNlOwogICB9CiAKLSAgbV9kZXN0aW5hdGlvbiA9IGRsZy5HZXREZXN0aW5hdGlvbiAoKTsK
KyAgbV9kZXN0aW5hdGlvbiA9IHd4U3RyaW5nKGRsZy5HZXREZXN0aW5hdGlvbiAoKSwgd3hDb252
TG9jYWwpOwogICBtX2ZvcmNlID0gZGxnLkdldEZvcmNlICgpOwogCiAgIHJldHVybiB0cnVlOwpA
QCAtMTAzLDcgKzEwMyw3IEBACiAgIHN2bjo6Q2xpZW50IGNsaWVudDsKIAogICBzdm46OlBhdGgg
c3JjUGF0aCA9IEdldFRhcmdldCAoKTsKLSAgc3ZuOjpQYXRoIGRlc3RQYXRoIChtX2Rlc3RpbmF0
aW9uLmNfc3RyICgpKTsKKyAgc3ZuOjpQYXRoIGRlc3RQYXRoIChtX2Rlc3RpbmF0aW9uLlRvQXNj
aWkgKCkpOwogICBzdm46OlJldmlzaW9uIHVudXNlZFJldmlzaW9uOwogCiAgIHN3aXRjaCAobV9r
aW5kKQpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgICBzdGQ6OnN0cmluZyBkaXJwYXRoOwogICAg
ICAgc3JjUGF0aC5zcGxpdCAoZGlycGF0aCwgYmFzZW5hbWUpOwogICAgICAgZGVzdFBhdGggPSBk
aXJwYXRoLmNfc3RyICgpOwotICAgICAgZGVzdFBhdGguYWRkQ29tcG9uZW50IChtX2Rlc3RpbmF0
aW9uLmNfc3RyICgpKTsKKyAgICAgIGRlc3RQYXRoLmFkZENvbXBvbmVudCAobV9kZXN0aW5hdGlv
bi5Ub0FzY2lpICgpKTsKIAogICAgICAgY2xpZW50Lm1vdmUgKHNyY1BhdGgsIHVudXNlZFJldmlz
aW9uLCBkZXN0UGF0aCwgbV9mb3JjZSk7CiAgICAgfQpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9z
cmMvcHJlZmVyZW5jZXMuY3BwIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL3ByZWZl
cmVuY2VzLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL3ByZWZlcmVuY2VzLmNwcAkyMDA0LTA1
LTI0IDExOjQ1OjE0LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1m
aXhlZC9zcmMvcHJlZmVyZW5jZXMuY3BwCTIwMDQtMDgtMTAgMTc6MjQ6MzAuMDAwMDAwMDAwIC0w
NDAwCkBAIC0yMSwzMCArMjEsMzAgQEAKIAogLy8gcGxhdGZvcm0gZGVwZW5kYW50IGNvbnN0YW50
cwogI2lmZGVmIF9XSU4zMgotICBzdGF0aWMgY29uc3QgY2hhciAqIERFRkFVTFRfRVhQTE9SRVIg
PSAiZXhwbG9yZXIuZXhlIjsKKyAgc3RhdGljIGNvbnN0IHd4Q2hhciAqIERFRkFVTFRfRVhQTE9S
RVIgPSBfKCJleHBsb3Jlci5leGUiKTsKICNlbHNlCi0gIHN0YXRpYyBjb25zdCBjaGFyICogREVG
QVVMVF9FWFBMT1JFUiA9ICIiOworICBzdGF0aWMgY29uc3Qgd3hDaGFyICogREVGQVVMVF9FWFBM
T1JFUiA9IF8oIiIpOwogI2VuZGlmCi1zdGF0aWMgY29uc3QgY2hhciAqIERFRkFVTFRfRURJVE9S
ID0gIiI7Ci1zdGF0aWMgY29uc3QgY2hhciAqIERFRkFVTFRfRElGRl9UT09MID0gIiI7CitzdGF0
aWMgY29uc3Qgd3hDaGFyICogREVGQVVMVF9FRElUT1IgPSBfKCIiKTsKK3N0YXRpYyBjb25zdCB3
eENoYXIgKiBERUZBVUxUX0RJRkZfVE9PTCA9IF8oIiIpOwogCiAvKioKICAqIENvbmZpZ3VyYXRp
b24ga2V5IG5hbWVzCiAgKi8KLXN0YXRpYyBjb25zdCBjaGFyIENPTkZfRURJVE9SW10gPSAKLSAg
Ii9QcmVmZXJlbmNlcy9TdGFuZGFyZEVkaXRvciI7Ci1zdGF0aWMgY29uc3QgY2hhciBDT05GX0VE
SVRPUl9BTFdBWVNbXSA9IAotICAiL1ByZWZlcmVuY2VzL0Fsd2F5c1N0YW5kYXJkRWRpdG9yIjsK
LXN0YXRpYyBjb25zdCBjaGFyIENPTkZfRVhQTE9SRVJbXSA9IAotICAiL1ByZWZlcmVuY2VzL1N0
YW5kYXJkRmlsZUV4cGxvcmVyIjsKLXN0YXRpYyBjb25zdCBjaGFyIENPTkZfRVhQTE9SRVJfQUxX
QVlTW10gPSAKLSAgIi9QcmVmZXJlbmNlcy9BbHdheXNTdGFuZGFyZEZpbGVFeHBsb3JlciI7Ci1z
dGF0aWMgY29uc3QgY2hhciBDT05GX1BVUkdFX1RFTVBfRklMRVNbXSA9IAotICAiL1ByZWZlcmVu
Y2VzL1B1cmdlVGVtcEZpbGVzIjsKLXN0YXRpYyBjb25zdCBjaGFyIENPTkZfQVVUSF9QRVJfQk9P
S01BUktbXSA9Ci0gICIvUHJlZmVyZW5jZXMvQXV0aFBlckJvb2ttYXJrIjsKLXN0YXRpYyBjb25z
dCBjaGFyIENPTkZfRElGRl9UT09MW10gPQotICAiL1ByZWZlcmVuY2VzL0RpZmZUb29sIjsKK3N0
YXRpYyBjb25zdCB3eENoYXIgKiBDT05GX0VESVRPUiA9IAorICBfKCIvUHJlZmVyZW5jZXMvU3Rh
bmRhcmRFZGl0b3IiKTsKK3N0YXRpYyBjb25zdCB3eENoYXIgKiBDT05GX0VESVRPUl9BTFdBWVMg
PSAKKyAgXygiL1ByZWZlcmVuY2VzL0Fsd2F5c1N0YW5kYXJkRWRpdG9yIik7CitzdGF0aWMgY29u
c3Qgd3hDaGFyICogQ09ORl9FWFBMT1JFUiA9IAorICBfKCIvUHJlZmVyZW5jZXMvU3RhbmRhcmRG
aWxlRXhwbG9yZXIiKTsKK3N0YXRpYyBjb25zdCB3eENoYXIgKiBDT05GX0VYUExPUkVSX0FMV0FZ
UyA9IAorICBfKCIvUHJlZmVyZW5jZXMvQWx3YXlzU3RhbmRhcmRGaWxlRXhwbG9yZXIiKTsKK3N0
YXRpYyBjb25zdCB3eENoYXIgKiBDT05GX1BVUkdFX1RFTVBfRklMRVMgPSAKKyAgXygiL1ByZWZl
cmVuY2VzL1B1cmdlVGVtcEZpbGVzIik7CitzdGF0aWMgY29uc3Qgd3hDaGFyICogQ09ORl9BVVRI
X1BFUl9CT09LTUFSSyA9CisgIF8oIi9QcmVmZXJlbmNlcy9BdXRoUGVyQm9va21hcmsiKTsKK3N0
YXRpYyBjb25zdCB3eENoYXIgKiBDT05GX0RJRkZfVE9PTCA9CisgIF8oIi9QcmVmZXJlbmNlcy9E
aWZmVG9vbCIpOwogCiBQcmVmZXJlbmNlczo6UHJlZmVyZW5jZXMgKCkKICAgOiBlZGl0b3IgKERF
RkFVTFRfRURJVE9SKSwgZWRpdG9yQWx3YXlzIChmYWxzZSksIApkaWZmIC11ciByYXBpZHN2bi0w
LjYuMC9zcmMvcHJlZmVyZW5jZXNfZGxnLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVk
L3NyYy9wcmVmZXJlbmNlc19kbGcuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvcHJlZmVyZW5j
ZXNfZGxnLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE2LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRz
dm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvcHJlZmVyZW5jZXNfZGxnLmNwcAkyMDA0LTA4LTEw
IDE3OjI2OjMxLjAwMDAwMDAwMCAtMDQwMApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIC8vIHBsYXRm
b3JtIGRlcGVuZGFudCBjb25zdGFudHMKICNpZmRlZiBfV0lOMzIKLXN0YXRpYyBjb25zdCBjaGFy
ICogRVhFQ1VUQUJMRV9XSUxEQ0FSRCA9IAorc3RhdGljIGNvbnN0IHd4Q2hhciAqIEVYRUNVVEFC
TEVfV0lMRENBUkQgPSAKICAgXygiRXhlY3V0YWJsZSBGaWxlc3wqLmV4ZTsqLmNvbTsqLmJhdHxB
bGwgZmlsZXMgKCouKil8Ki4qIik7CiAKICNlbHNlCiAvLyBOT1RFOiAoV1ggMi40LjApIE9uIE1v
dGlmLCBuZWl0aGVyIG11bHRpcGxlIGV4dGVuc2lvbnMgbm9yIG11bHRpcGxlIGZpbGUKIC8vIHR5
cGVzIGFyZSBzdXBwb3J0ZWQgKHdpbGRjYXJkIGlzIGxpbWl0ZWQgdG8gYSBzaW5nbGUgIiouZXh0
IiBzdHJpbmcpCi1zdGF0aWMgY29uc3QgY2hhciAqIEVYRUNVVEFCTEVfV0lMRENBUkQgPSAiIjsK
K3N0YXRpYyBjb25zdCB3eENoYXIgKiBFWEVDVVRBQkxFX1dJTERDQVJEID0gXygiIik7CiAjZW5k
aWYKIAogLyogR2VuZXJhbFBhbmVsICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgICAv
LyB0ZXh0IGN0cmwKICAgICAgIHd4VGV4dFZhbGlkYXRvciB2YWxUZXh0ICh3eEZJTFRFUl9OT05F
LCAKICAgICAgICAgICAgICAgICAgICAgICAmIG1fcHJlZnMtPmVkaXRvcik7Ci0gICAgICBtVGV4
dEVkaXRvciA9IG5ldyB3eFRleHRDdHJsICh0aGlzLCAtMSwgIiIsIAorICAgICAgbVRleHRFZGl0
b3IgPSBuZXcgd3hUZXh0Q3RybCAodGhpcywgLTEsIF8oIiIpLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9zaXRpb24sIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3eFNpemUgKDIwMCwgLTEpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgdmFsVGV4dCk7CkBAIC0yMDMsNyArMjAzLDcgQEAK
ICAgICAgIC8vIHRleHQgY3RybAogICAgICAgd3hUZXh0VmFsaWRhdG9yIHZhbFRleHQgKHd4RklM
VEVSX05PTkUsICZtX3ByZWZzLT5leHBsb3Jlcik7CiAgICAgICBtVGV4dEV4cGxvcmVyID0gCi0g
ICAgICAgIG5ldyB3eFRleHRDdHJsICh0aGlzLCAtMSwgIiIsIHd4RGVmYXVsdFBvc2l0aW9uLCAK
KyAgICAgICAgbmV3IHd4VGV4dEN0cmwgKHRoaXMsIC0xLCBfKCIiKSwgd3hEZWZhdWx0UG9zaXRp
b24sIAogICAgICAgICAgICAgICAgICAgICAgICAgd3hTaXplICgyMDAsIC0xKSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCB2YWxUZXh0KTsKIApAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAg
ICAvLyB0ZXh0IGN0cmwKICAgICAgIHd4VGV4dFZhbGlkYXRvciB2YWxUZXh0ICh3eEZJTFRFUl9O
T05FLCAmbV9wcmVmcy0+ZGlmZlRvb2wpOwogICAgICAgbVRleHREaWZmVG9vbCA9IAotICAgICAg
ICBuZXcgd3hUZXh0Q3RybCAodGhpcywgLTEsICIiLCB3eERlZmF1bHRQb3NpdGlvbiwgCisgICAg
ICAgIG5ldyB3eFRleHRDdHJsICh0aGlzLCAtMSwgXygiIiksIHd4RGVmYXVsdFBvc2l0aW9uLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgIHd4U2l6ZSAoMjAwLCAtMSksIAogICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgdmFsVGV4dCk7CiAKQEAgLTM5NSwxMCArMzk1LDEwIEBACiAgICAgd3hC
b3hTaXplciAqYnV0dG9uX3NpemVyID0gbmV3IHd4Qm94U2l6ZXIgKHd4SE9SSVpPTlRBTCk7CiAK
ICAgICBidXR0b25fc2l6ZXItPkFkZCAoCi0gICAgICBuZXcgd3hCdXR0b24gKHduZCwgd3hJRF9P
SywgIk9LIiksCisgICAgICBuZXcgd3hCdXR0b24gKHduZCwgd3hJRF9PSywgXygiT0siKSksCiAg
ICAgICAwLCB3eEFMTCwgMTApOwogICAgIGJ1dHRvbl9zaXplci0+QWRkICgKLSAgICAgIG5ldyB3
eEJ1dHRvbiAod25kLCB3eElEX0NBTkNFTCwgIkNhbmNlbCIpLAorICAgICAgbmV3IHd4QnV0dG9u
ICh3bmQsIHd4SURfQ0FOQ0VMLCBfKCJDYW5jZWwiKSksCiAgICAgICAwLCB3eEFMTCwgMTApOwog
CiAgICAgbm90ZWJvb2sgPSBuZXcgd3hOb3RlYm9vayAod25kLCAtMSwgd3hEZWZhdWx0UG9zaXRp
b24sIHd4RGVmYXVsdFNpemUpOyAKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL3Byb3BlcnR5
X2RsZy5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvcHJvcGVydHlfZGxnLmNw
cAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL3Byb3BlcnR5X2RsZy5jcHAJMjAwNC0wNS0yNCAxMTo0
NToxOC4wMDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3Jj
L3Byb3BlcnR5X2RsZy5jcHAJMjAwNC0wOC0xMSAxMjo0OTozNy4wMDAwMDAwMDAgLTA0MDAKQEAg
LTgyLDcgKzgyLDcgQEAKICAgICB7CiAgICAgICBjb25zdCBzdm46OlByb3BlcnR5RW50cnkgJiBl
bnRyeSA9ICppdDsKICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lID0gZW50cnkubmFtZS5jX3N0ciAo
KTsKLSAgICAgIGJvb2wgZm91bmQgPSBGaW5kRW50cnkgKG5hbWUpICE9IC0xOworICAgICAgYm9v
bCBmb3VuZCA9IEZpbmRFbnRyeSAod3hTdHJpbmcobmFtZSwgd3hDb252TG9jYWwpKSAhPSAtMTsK
IAogICAgICAgaWYgKCFmb3VuZCkKICAgICAgIHsKQEAgLTEwMiw3ICsxMDIsNyBAQAogCiAgICAg
ICBHZXRFbnRyeUF0SW5kZXggKGluZGV4LCBuYW1lLCB2YWx1ZSk7CiAKLSAgICAgIG0tPnByb3Bl
cnR5LnNldCAobmFtZS5jX3N0ciAoKSwgdmFsdWUuY19zdHIgKCkpOworICAgICAgbS0+cHJvcGVy
dHkuc2V0IChuYW1lLlRvQXNjaWkgKCksIHZhbHVlLlRvQXNjaWkgKCkpOwogICAgIH0gICAgCiAg
IH0KICAgY2F0Y2ggKC4uLikKQEAgLTEzMiw3ICsxMzIsOCBAQAogICB7CiAgICAgY29uc3Qgc3Zu
OjpQcm9wZXJ0eUVudHJ5ICYgZW50cnkgPSAqaXQ7CiAKLSAgICBTZXRFbnRyeSAoZW50cnkubmFt
ZS5jX3N0ciAoKSwgZW50cnkudmFsdWUuY19zdHIgKCkpOworICAgIFNldEVudHJ5ICh3eFN0cmlu
ZyhlbnRyeS5uYW1lLmNfc3RyICgpLCB3eENvbnZMb2NhbCksIAorCSAgICAgIHd4U3RyaW5nKGVu
dHJ5LnZhbHVlLmNfc3RyICgpLCB3eENvbnZMb2NhbCkpOwogICAKICAgICBpdCsrOwogICB9CmRp
ZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy9yYXBpZHN2bl9hcHAuY3BwIHJhcGlkc3ZuLTAuNi4w
LXVuaWNvZGUtZml4ZWQvc3JjL3JhcGlkc3ZuX2FwcC5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3Ny
Yy9yYXBpZHN2bl9hcHAuY3BwCTIwMDQtMDUtMjQgMTE6NDU6MTYuMDAwMDAwMDAwIC0wNDAwCisr
KyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy9yYXBpZHN2bl9hcHAuY3BwCTIwMDQt
MDgtMTEgMTI6NTA6NDAuMDAwMDAwMDAwIC0wNDAwCkBAIC0zMyw4ICszMyw4IEBACiAgIFNldEFw
cE5hbWUgKEFQUExJQ0FUSU9OX05BTUUpOwogCiAgIG1fbG9jYWxlLkluaXQgKCk7Ci0gIG1fbG9j
YWxlLkFkZENhdGFsb2dMb29rdXBQYXRoUHJlZml4ICgibG9jYWxlIik7Ci0gIG1fbG9jYWxlLkFk
ZENhdGFsb2cgKCJyYXBpZHN2biIpOworICBtX2xvY2FsZS5BZGRDYXRhbG9nTG9va3VwUGF0aFBy
ZWZpeCAoXygibG9jYWxlIikpOworICBtX2xvY2FsZS5BZGRDYXRhbG9nIChfKCJyYXBpZHN2biIp
KTsKIAogICBSYXBpZFN2bkZyYW1lICogZnJhbWUgPSBuZXcgUmFwaWRTdm5GcmFtZSAoQVBQTElD
QVRJT05fTkFNRSk7CiAgIGZyYW1lLT5TaG93IChUUlVFKTsKQEAgLTYyLDcgKzYyLDcgQEAKICAg
CiAgIGlmIChwcmVmcy5wdXJnZVRlbXBGaWxlcykKICAgewotICAgIHd4U3RyaW5nIHN0ciAoZmls
ZW5hbWUpOworICAgIHd4U3RyaW5nIHN0ciAoZmlsZW5hbWUsIHd4Q29udkxvY2FsKTsKICAgICBt
X1RlbXBGaWxlcy5BZGQoc3RyKTsKICAgfQogICBlbHNlCmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4w
L3NyYy9yYXBpZHN2bl9mcmFtZS5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMv
cmFwaWRzdm5fZnJhbWUuY3BwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvcmFwaWRzdm5fZnJhbWUu
Y3BwCTIwMDQtMDUtMjQgMTE6NDU6MTIuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYu
MC11bmljb2RlLWZpeGVkL3NyYy9yYXBpZHN2bl9mcmFtZS5jcHAJMjAwNC0wOC0xMSAxMzowNzoy
NS4wMDAwMDAwMDAgLTA0MDAKQEAgLTc4LDE2ICs3OCwxNiBAQAogc3RhdGljIGNvbnN0IGludCBO
VU1fSVRFTVMgPSAzMDsKIAogLy8gTGlzdCBjb25maWcga2V5cyBoZXJlLCB0byBhdm9pZCBkdXBs
aWNhdGluZyBsaXRlcmFsIHRleHQ6Ci1jb25zdCBzdGF0aWMgY2hhciBDb25maWdMZWZ0W10gPSAi
L01haW5GcmFtZS9MZWZ0IjsKLWNvbnN0IHN0YXRpYyBjaGFyIENvbmZpZ1RvcFtdID0gIi9NYWlu
RnJhbWUvVG9wIjsKLWNvbnN0IHN0YXRpYyBjaGFyIENvbmZpZ1dpZHRoW10gPSAiL01haW5GcmFt
ZS9XaWR0aCI7Ci1jb25zdCBzdGF0aWMgY2hhciBDb25maWdIZWlnaHRbXSA9ICIvTWFpbkZyYW1l
L0hlaWdodCI7Ci1jb25zdCBzdGF0aWMgY2hhciBDb25maWdTcGxpdHRlckhvcml6W10gPSAiL01h
aW5GcmFtZS9TcGxpdHRlckhvcml6IjsKLWNvbnN0IHN0YXRpYyBjaGFyIENvbmZpZ1NwbGl0dGVy
VmVydFtdID0gIi9NYWluRnJhbWUvU3BsaXR0ZXJWZXJ0IjsKLWNvbnN0IHN0YXRpYyBjaGFyIENv
bmZpZ0Jvb2ttYXJrRm10W10gPSAiL0Jvb2ttYXJrcy9Cb29rbWFyayVsZCI7Ci1jb25zdCBzdGF0
aWMgY2hhciBDb25maWdCb29rbWFya0NvdW50W10gPSAiL0Jvb2ttYXJrcy9Db3VudCI7Citjb25z
dCBzdGF0aWMgd3hDaGFyICogY29uc3QgQ29uZmlnTGVmdCA9IF8oIi9NYWluRnJhbWUvTGVmdCIp
OworY29uc3Qgc3RhdGljIHd4Q2hhciAqIGNvbnN0IENvbmZpZ1RvcCA9IF8oIi9NYWluRnJhbWUv
VG9wIik7Citjb25zdCBzdGF0aWMgd3hDaGFyICogY29uc3QgQ29uZmlnV2lkdGggPSBfKCIvTWFp
bkZyYW1lL1dpZHRoIik7Citjb25zdCBzdGF0aWMgd3hDaGFyICogY29uc3QgQ29uZmlnSGVpZ2h0
ID0gXygiL01haW5GcmFtZS9IZWlnaHQiKTsKK2NvbnN0IHN0YXRpYyB3eENoYXIgKiBjb25zdCBD
b25maWdTcGxpdHRlckhvcml6ID0gXygiL01haW5GcmFtZS9TcGxpdHRlckhvcml6Iik7Citjb25z
dCBzdGF0aWMgd3hDaGFyICogY29uc3QgQ29uZmlnU3BsaXR0ZXJWZXJ0ID0gXygiL01haW5GcmFt
ZS9TcGxpdHRlclZlcnQiKTsKK2NvbnN0IHN0YXRpYyB3eENoYXIgKiBjb25zdCBDb25maWdCb29r
bWFya0ZtdCA9IF8oIi9Cb29rbWFya3MvQm9va21hcmslbGQiKTsKK2NvbnN0IHN0YXRpYyB3eENo
YXIgKiBjb25zdCBDb25maWdCb29rbWFya0NvdW50ID0gXygiL0Jvb2ttYXJrcy9Db3VudCIpOwog
Ci1jb25zdCBzdGF0aWMgY2hhciBUcmFjZU1pc2NbXSA9ICJ0cmFjZW1pc2MiOworY29uc3Qgc3Rh
dGljIHd4Q2hhciAqIGNvbnN0IFRyYWNlTWlzYyA9IF8oInRyYWNlbWlzYyIpOwogCiAvLyBQbGF0
Zm9ybSBzcGVjaWZpYyBjb25zdGFudHMuIAogI2lmZGVmIF9fV1hNU1dfXwpAQCAtMTMyLDExICsx
MzIsMTEgQEAKICAqIHRoZSBjb2x1bW4gaGVhZGluZ3MgaW4gRmlsZUxpc3RDdHJsIHNpbmNlIHRo
ZXkgZG9udCBoYXZlCiAgKiBzaG9ydGN1dHMuCiAgKi8KLXN0YXRpYyBjb25zdCBjaGFyICoKK3N0
YXRpYyBjb25zdCB3eENoYXIgKgogQ09MVU1OX0NBUFRJT05TW0ZpbGVMaXN0Q3RybDo6Q09MX0NP
VU5UXSA9CiB7Ci0gICIiLCAvLyBOYW1lIGlzIG5vdCB1c2VkIGhlcmUKLSAgIiIsIC8vIFBhdGgg
aXMgbm90IHVzZWQgaGVyZQorICBfKCIiKSwgLy8gTmFtZSBpcyBub3QgdXNlZCBoZXJlCisgIF8o
IiIpLCAvLyBQYXRoIGlzIG5vdCB1c2VkIGhlcmUKICAgXygiJlJldmlzaW9uIiksCiAgIF8oIlIm
ZXAuIFJldi4iKSwKICAgXygiJkF1dGhvciIpLApAQCAtMzcyLDcgKzM3Miw3IEBACiAgIG1faW5m
b19wYW5lbCA9IG5ldyBJbmZvUGFuZWwgKG1faG9yaXpfc3BsaXR0ZXIpOwogICBtX2xvZyA9IG5l
dyB3eFRleHRDdHJsIChtX2hvcml6X3NwbGl0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB3eFBvaW50ICgwLCAwKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0U2l6ZSwgd3hURV9NVUxUSUxJTkUg
fCB3eFRFX1JFQURPTkxZKTsKIApAQCAtNTE2LDE0ICs1MTYsMTQgQEAKICAgICAgICAgd3hTdHJp
bmcgbXNnOwogICAgICAgICBtc2cuUHJpbnRmIChfKCJFcnJvciB3aGlsZSB1cGRhdGluZyBmaWxl
bGlzdCAoJXMpIiksCiAgICAgICAgICAgICAgICAgICAgIGUubWVzc2FnZSAoKSk7Ci0gICAgICAg
IFRyYWNlIChtc2cpOworICAgICAgICBUcmFjZSAobXNnLlRvQXNjaWkoKSk7CiAKICAgICAgICAg
Ly8gcHJvYmFibHkgdW52ZXJzaW9uZWQgcmVzb3VyY2UKICAgICAgICAgbV9saXN0Q3RybC0+U2hv
dyAoRkFMU0UpOwogICAgICAgfQogICAgICAgY2F0Y2ggKC4uLikKICAgICAgIHsKLSAgICAgICAg
VHJhY2UgKF8oIkVycm9yIHdoaWxlIHVwZGF0aW5nIGZpbGVsaXN0IikpOworICAgICAgICBUcmFj
ZSAoIkVycm9yIHdoaWxlIHVwZGF0aW5nIGZpbGVsaXN0Iik7CiAgICAgICB9CiAgICAgfQogICAg
IGVsc2UKQEAgLTc4Nyw3ICs3ODcsNyBAQAogCiAgIC8vIGFkbWluIGRpcj8KICAgd3hGaWxlTmFt
ZSBmaWxlTmFtZSAoZGlhbG9nLkdldFBhdGggKCkpOwotICBpZiAoKGZpbGVOYW1lLkdldE5hbWUg
KCkgKyBmaWxlTmFtZS5HZXRFeHQgKCkpID09IFNWTl9XQ19BRE1fRElSX05BTUUpCisgIGlmICgo
ZmlsZU5hbWUuR2V0TmFtZSAoKSArIGZpbGVOYW1lLkdldEV4dCAoKSkgPT0gXyhTVk5fV0NfQURN
X0RJUl9OQU1FKSkKICAgewogICAgIGFkZCA9IEZBTFNFOwogICAgIHd4TWVzc2FnZUJveCAoXygi
WW91IGNhbm5vdCBhZGQgYSBzdWJ2ZXJzaW9uICIKQEAgLTc5Nyw3ICs3OTcsNyBAQAogICB9CiAK
ICAgLy8gYWRkCi0gIG1fZm9sZGVyX2Jyb3dzZXItPkFkZEJvb2ttYXJrIChkaWFsb2cuR2V0UGF0
aCAoKSk7CisgIG1fZm9sZGVyX2Jyb3dzZXItPkFkZEJvb2ttYXJrIChkaWFsb2cuR2V0UGF0aCgp
LlRvQXNjaWkoKSk7CiAgIFVwZGF0ZUZvbGRlckJyb3dzZXIgKCk7CiAKICAgd3hMb2dTdGF0dXMg
KF8oIkFkZGVkIHdvcmtpbmcgY29weSB0byBib29rbWFya3MgJyVzJyIpLApAQCAtODExLDcgKzgx
MSw3IEBACiAgICAgVXBkYXRlRGxnOjpXSVRIX1VSTCB8IAogICAgIFVwZGF0ZURsZzo6V0lUSE9V
VF9SRUNVUlNJVkUgfCAKICAgICBVcGRhdGVEbGc6OldJVEhPVVRfUkVWSVNJT047Ci0gIFVwZGF0
ZURsZyBkaWFsb2cgKHRoaXMsIF8oIlJlcG9zaXRvcnkgVVJMIiksIGZsYWdzKTsKKyAgVXBkYXRl
RGxnIGRpYWxvZyAodGhpcywgIlJlcG9zaXRvcnkgVVJMIiwgZmxhZ3MpOwogCiAgIGlmIChkaWFs
b2cuU2hvd01vZGFsICgpICE9IHd4SURfT0spCiAgIHsKQEAgLTgyMCw3ICs4MjAsNyBAQAogCiAg
IC8vIGFkZAogICB3eFN0cmluZyB1cmwgPSBkaWFsb2cuR2V0RGF0YSAoKS51cmw7Ci0gIG1fZm9s
ZGVyX2Jyb3dzZXItPkFkZEJvb2ttYXJrICh1cmwpOworICBtX2ZvbGRlcl9icm93c2VyLT5BZGRC
b29rbWFyayAodXJsLlRvQXNjaWkoKSk7CiAgIFVwZGF0ZUZvbGRlckJyb3dzZXIgKCk7CiAKICAg
d3hMb2dTdGF0dXMgKF8oIkFkZGVkIHJlcG9zaXRvcnkgdG8gYm9va21hcmtzICclcyciKSwKQEAg
LTg1NCw5ICs4NTQsOSBAQAogICBmb3IgKGl0ZW0gPSAwOyBpdGVtIDwgY291bnQ7IGl0ZW0rKykK
ICAgewogICAgIGtleS5QcmludGYgKENvbmZpZ0Jvb2ttYXJrRm10LCBpdGVtKTsKLSAgICBpZiAo
cENvbmZpZy0+UmVhZCAoa2V5LCAmYm9va21hcmssICIiKSkKKyAgICBpZiAocENvbmZpZy0+UmVh
ZCAoa2V5LCAmYm9va21hcmssIF8oIiIpKSkKICAgICB7Ci0gICAgICBtX2ZvbGRlcl9icm93c2Vy
LT5BZGRCb29rbWFyayAoYm9va21hcmspOworICAgICAgbV9mb2xkZXJfYnJvd3Nlci0+QWRkQm9v
a21hcmsgKGJvb2ttYXJrLlRvQXNjaWkoKSk7CiAgICAgfQogCiAgICAgZWxzZQpAQCAtODc2LDEz
ICs4NzYsMTMgQEAKICAgewogICAgIHd4U3RyaW5nIHBhdGggPSBtX2ZvbGRlcl9icm93c2VyLT5H
ZXRQYXRoICgpOwogICAgIAotICAgIGlmICghc3ZuOjpVcmw6OmlzVmFsaWQgKHBhdGgpKQorICAg
IGlmICghc3ZuOjpVcmw6OmlzVmFsaWQgKHBhdGguVG9Bc2NpaSgpKSkKICAgICB7CiAgICAgICB3
eEZpbGVOYW1lIGZuYW1lIChwYXRoKTsKICAgICAgIHBhdGggPSBmbmFtZS5HZXRGdWxsUGF0aCAo
KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN2bjo6VGFyZ2V0cyAocGF0aC5jX3N0ciAoKSk7
CisgICAgcmV0dXJuIHN2bjo6VGFyZ2V0cyAocGF0aC5Ub0FzY2lpKCkpOwogICB9CiAgIGVsc2UK
ICAgewpAQCAtOTA1LDcgKzkwNSw3IEBACiAgICAgCiAgICAgZmxhZ3MgfD0gQWN0aW9uOjpJU19E
SVI7CiAgICAgd3hTdHJpbmcgcGF0aCA9IG1fZm9sZGVyX2Jyb3dzZXItPkdldFBhdGggKCk7Ci0g
ICAgY29uc3QgY2hhciAqIHBhdGhfYyA9IHBhdGguY19zdHIgKCk7CisgICAgY29uc3QgY2hhciAq
IHBhdGhfYyA9IHBhdGguVG9Bc2NpaSgpOwogICAgIGlmICgqcGF0aF9jICE9ICdcMCcpCiAgICAg
ewogICAgICAgZmxhZ3MgfD0gQWN0aW9uOjpTSU5HTEVfVEFSR0VUOwpAQCAtMTE4NCw3ICsxMTg0
LDcgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJRF9Na2RpcjoKLSAgICAgIGFjdGlvbiA9
IG5ldyBNa2RpckFjdGlvbiAodGhpcywgbV9jdXJyZW50UGF0aCk7CisgICAgICBhY3Rpb24gPSBu
ZXcgTWtkaXJBY3Rpb24gKHRoaXMsIG1fY3VycmVudFBhdGguVG9Bc2NpaSgpKTsKICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBJRF9NZXJnZToKQEAgLTEyMDksNyArMTIwOSw3IEBACiAKICAgICBj
YXNlIElEX0NvbnRlbnRzOiAvL1RPRE8KICAgICBkZWZhdWx0OgotICAgICAgbV9sb2dUcmFjZXIt
PlRyYWNlICgiVW5pbXBsZW1lbnRlZCBhY3Rpb24hIik7CisgICAgICBtX2xvZ1RyYWNlci0+VHJh
Y2UgKF8oIlVuaW1wbGVtZW50ZWQgYWN0aW9uISIpKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAg
fQpAQCAtMTIyNiwxOCArMTIyNiwxOCBAQAogICBzd2l0Y2ggKHRva2VuKQogICB7CiAgIGNhc2Ug
VE9LRU5fSU5GTzoKLSAgICBUcmFjZSAoZXZlbnQuR2V0U3RyaW5nICgpKTsKKyAgICBUcmFjZSAo
ZXZlbnQuR2V0U3RyaW5nICgpLlRvQXNjaWkoKSk7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBUT0tF
Tl9TVk5fSU5URVJOQUxfRVJST1I6CiAgIGNhc2UgVE9LRU5fSU5URVJOQUxfRVJST1I6Ci0gICAg
VHJhY2UgKGV2ZW50LkdldFN0cmluZyAoKSk7CisgICAgVHJhY2UgKGV2ZW50LkdldFN0cmluZyAo
KS5Ub0FzY2lpKCkpOwogICAgIFVwZGF0ZUZpbGVMaXN0ICgpOwotICAgIFRyYWNlIChfKCJSZWFk
eVxuIikpOworICAgIFRyYWNlICgiUmVhZHlcbiIpOwogICAgIGJyZWFrOwogCiAgIGNhc2UgVE9L
RU5fQUNUSU9OX1NUQVJUOgotICAgIFRyYWNlIChldmVudC5HZXRTdHJpbmcgKCkpOworICAgIFRy
YWNlIChldmVudC5HZXRTdHJpbmcgKCkuVG9Bc2NpaSgpKTsKICAgICB3eExvZ1N0YXR1cyAoZXZl
bnQuR2V0U3RyaW5nICgpKTsKICAgICBicmVhazsKIApAQCAtMTI1NSwxMSArMTI1NSwxMSBAQAog
ICAgICAgfQogICAgICAgZWxzZSBpZiAoKGFjdGlvbkZsYWdzICYgQWN0aW9uOjpET05UX1VQREFU
RSkgPT0gMCkKICAgICAgIHsKLSAgICAgICAgVHJhY2UgKF8oIlVwZGF0aW5nLi4uIikpOworICAg
ICAgICBUcmFjZSAoIlVwZGF0aW5nLi4uIik7CiAgICAgICAgIFVwZGF0ZUZpbGVMaXN0ICgpOwog
ICAgICAgfQogCi0gICAgICBUcmFjZSAoXygiUmVhZHlcbiIpKTsKKyAgICAgIFRyYWNlICgiUmVh
ZHlcbiIpOwogICAgIH0KICAgICBicmVhazsKIApAQCAtMTI4Myw3ICsxMjgzLDcgQEAKIAogICBj
YXNlIFRPS0VOX0FERF9CT09LTUFSSzoKICAgICB7Ci0gICAgICBjb25zdCBjaGFyICogYm9va21h
cmsgPSBldmVudC5HZXRTdHJpbmcgKCkuY19zdHIgKCk7CisgICAgICBjb25zdCBjaGFyICogYm9v
a21hcmsgPSBldmVudC5HZXRTdHJpbmcgKCkuVG9Bc2NpaSAoKTsKIAogICAgICAgbV9mb2xkZXJf
YnJvd3Nlci0+QWRkQm9va21hcmsgKGJvb2ttYXJrKTsKICAgICAgIG1fZm9sZGVyX2Jyb3dzZXIt
PlJlZnJlc2ggKCk7CkBAIC0xMzQ2LDcgKzEzNDYsNyBAQAogICAgICAgZmlsZUluZm8uYWRkUGF0
aCAocGF0aC5jX3N0ciAoKSk7CiAgICAgfQogCi0gICAgd3hTdHJpbmcgaW5mbyA9IGZpbGVJbmZv
LmluZm8gKCk7CisgICAgd3hTdHJpbmcgaW5mbyAoZmlsZUluZm8uaW5mbyAoKSwgd3hDb252TG9j
YWwpOwogCiAgICAgUmVwb3J0RGxnIGRsZyAodGhpcywgXygiSW5mbyIpLCBpbmZvLCBOT1JNQUxf
UkVQT1JUKTsKICAgICBkbGcuU2hvd01vZGFsICgpOwpAQCAtMTQwMCw3ICsxNDAwLDcgQEAKIHsK
ICAgaWYgKG1fZm9sZGVyX2Jyb3dzZXIgPT0gMCkKICAgewotICAgIG1fY3VycmVudFBhdGggPSAi
IjsKKyAgICBtX2N1cnJlbnRQYXRoID0gXygiIik7CiAgICAgbV9jb250ZXh0ID0gMDsKICAgfQog
ICBlbHNlCkBAIC0xNDA5LDcgKzE0MDksNyBAQAogICAgIG1fY29udGV4dCA9IG1fZm9sZGVyX2Jy
b3dzZXItPkdldENvbnRleHQgKCk7CiAgIH0KIAotICBTZXRUaXRsZSAobV90aXRsZSArICI6ICIg
KyBtX2N1cnJlbnRQYXRoKTsKKyAgU2V0VGl0bGUgKG1fdGl0bGUgKyBfKCI6ICIpICsgbV9jdXJy
ZW50UGF0aCk7CiB9CiAKIGJvb2wKQEAgLTE0NDIsNyArMTQ0Miw4IEBACiB2b2lkCiBSYXBpZFN2
bkZyYW1lOjpQZXJmb3JtIChBY3Rpb24gKiBhY3Rpb24pCiB7Ci0gIGFjdGlvbi0+U2V0UGF0aCAo
bV9jdXJyZW50UGF0aC5jX3N0ciAoKSk7CisgIGFjdGlvbi0+U2V0UGF0aCAoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhciAqPgorCQkgICAobV9jdXJyZW50UGF0aC5Ub0FzY2lpKCkpKTsKICAgYWN0aW9u
LT5TZXRDb250ZXh0IChtX2NvbnRleHQpOwogICBpZiAoKGFjdGlvbi0+R2V0RmxhZ3MgKCkgJiBB
Y3Rpb246OldJVEhPVVRfVEFSR0VUKSA9PSAwKQogICB7CkBAIC0xNTE1LDcgKzE1MTYsNyBAQAog
ewogICB3eEJ1c3lDdXJzb3IgYnVzeTsKIAotICBtX2N1cnJlbnRQYXRoID0gIiI7CisgIG1fY3Vy
cmVudFBhdGggPSBfKCIiKTsKICAgVXBkYXRlRmlsZUxpc3QgKCk7CiAKICAgdHJ5CkBAIC0xNTM5
LDcgKzE1NDAsNyBAQAogICBpZiAobV9sb2cgIT0gMCkKICAgewogICAgIHd4U3RyaW5nIG1lc3Nh
Z2U7Ci0gICAgbWVzc2FnZS5QcmludGYgKCIlc1xuIiwgbXNnKTsKKyAgICBtZXNzYWdlLlByaW50
ZiAoXygiJXNcbiIpLCBtc2cpOwogICAgIG1fbG9nLT5BcHBlbmRUZXh0IChtZXNzYWdlKTsKICAg
fQogfQpAQCAtMTU3OSw3ICsxNTgwLDcgQEAKIH0KIAogTG9nVHJhY2VyOjpMb2dUcmFjZXIgKHd4
V2luZG93ICogcGFyZW50KQotICA6IHd4VGV4dEN0cmwgKHBhcmVudCwgLTEsICIiLCB3eFBvaW50
ICgwLCAwKSwKKyAgOiB3eFRleHRDdHJsIChwYXJlbnQsIC0xLCBfKCIiKSwgd3hQb2ludCAoMCwg
MCksCiAgICAgICAgICAgICAgICAgd3hEZWZhdWx0U2l6ZSwgd3hURV9NVUxUSUxJTkUgfCB3eFRF
X1JFQURPTkxZKQogewogICBTZXRNYXhMZW5ndGggKDApOwpAQCAtMTU4OCw3ICsxNTg5LDcgQEAK
IHZvaWQKIExvZ1RyYWNlcjo6VHJhY2UgKGNvbnN0IHd4U3RyaW5nICYgc3RyKQogewotICBBcHBl
bmRUZXh0IChzdHIgKyAiXG4iKTsKKyAgQXBwZW5kVGV4dCAoc3RyICsgXygiXG4iKSk7CiB9CiAv
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICogbG9jYWwgdmFyaWFibGVzOgpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9z
cmMvcmVwb3J0X2RsZy5jcHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvcmVwb3J0
X2RsZy5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9yZXBvcnRfZGxnLmNwcAkyMDA0LTA1LTI0
IDExOjQ1OjEyLjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhl
ZC9zcmMvcmVwb3J0X2RsZy5jcHAJMjAwNC0wOC0xMSAxMzowODoyNy4wMDAwMDAwMDAgLTA0MDAK
QEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgICAgd3hERUZBVUxUX0RJQUxPR19TVFlMRSB8
IHd4UkVTSVpFX0JPUkRFUiksCiAgICAgbV9zdHIgKGRhdGEpCiB7Ci0gIG1fdGV4dCA9IG5ldyB3
eFRleHRDdHJsICh0aGlzLCAtMSwgIiIsCisgIG1fdGV4dCA9IG5ldyB3eFRleHRDdHJsICh0aGlz
LCAtMSwgXygiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9zaXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgd3hTaXplICg1MDAsIDIwMCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3hURV9NVUxUSUxJTkUgfCB3eFRFX1JFQURPTkxZIHwgd3hURV9SSUNI
KTsKQEAgLTQzLDcgKzQzLDcgQEAKICAgfQogICBtX3RleHQtPldyaXRlVGV4dCAobV9zdHIpOwog
Ci0gIG1fYnV0dG9uID0gbmV3IHd4QnV0dG9uICh0aGlzLCB3eElEX09LLCAiT0siKTsKKyAgbV9i
dXR0b24gPSBuZXcgd3hCdXR0b24gKHRoaXMsIHd4SURfT0ssIF8oIk9LIikpOwogCiAgIHd4Qm94
U2l6ZXIgKiB0b3BzaXplciA9IG5ldyB3eEJveFNpemVyICh3eFZFUlRJQ0FMKTsKIApkaWZmIC11
ciByYXBpZHN2bi0wLjYuMC9zcmMvc3dpdGNoX2FjdGlvbi5jcHAgcmFwaWRzdm4tMC42LjAtdW5p
Y29kZS1maXhlZC9zcmMvc3dpdGNoX2FjdGlvbi5jcHAKLS0tIHJhcGlkc3ZuLTAuNi4wL3NyYy9z
d2l0Y2hfYWN0aW9uLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE0LjAwMDAwMDAwMCAtMDQwMAorKysg
cmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvc3dpdGNoX2FjdGlvbi5jcHAJMjAwNC0w
OC0xMSAxMzoxMDoyNC4wMDAwMDAwMDAgLTA0MDAKQEAgLTM3LDE4ICszNywxOCBAQAogICB9CiAK
ICAgLy8gZmlyc3QgdHJ5IHRvIGdldCB0aGUgVVJMIGZvciB0aGUgdGFyZ2V0Ci0gIHd4U3RyaW5n
IHVybCA9ICIiOworICB3eFN0cmluZyB1cmwgPSBfKCIiKTsKICAgewogICAgIHN2bjo6UGF0aCBw
YXRoID0gR2V0VGFyZ2V0ICgpOwogICAgIHN2bjo6Q2xpZW50IGNsaWVudCAoR2V0Q29udGV4dCAo
KSk7CiAgICAgc3ZuOjpTdGF0dXMgc3RhdHVzIChjbGllbnQuc2luZ2xlU3RhdHVzIChwYXRoLmNf
c3RyICgpKSk7Ci0gICAgdXJsID0gc3RhdHVzLmVudHJ5ICgpLnVybCAoKTsKKyAgICB1cmwgPSB3
eFN0cmluZyhzdGF0dXMuZW50cnkgKCkudXJsICgpLCB3eENvbnZMb2NhbCk7CiAgIH0KIAogICAv
LyBjcmVhdGUgZmxhZ3MgZm9yIHRoZSBkaWFsb2cKICAgaW50IGZsYWdzID0gVXBkYXRlRGxnOjpX
SVRIX1VSTDsKIAotICBVcGRhdGVEbGcgZGxnIChHZXRQYXJlbnQgKCksIF8oIlN3aXRjaCIpLCBm
bGFncywKKyAgVXBkYXRlRGxnIGRsZyAoR2V0UGFyZW50ICgpLCAiU3dpdGNoIiwgZmxhZ3MsCiAg
ICAgICAgICAgICAgICAgIHRydWUpOwogICBkbGcuR2V0RGF0YSAoKS51cmwgPSB1cmw7CiAKQEAg
LTY2LDcgKzY2LDcgQEAKIFN3aXRjaEFjdGlvbjo6UGVyZm9ybSAoKQogewogICBzdm46OlBhdGgg
cGF0aCA9IEdldFRhcmdldCAoKTsKLSAgY29uc3QgY2hhciAqIHVybCA9IG1fZGF0YS51cmwuY19z
dHIgKCk7CisgIGNvbnN0IGNoYXIgKiB1cmwgPSBtX2RhdGEudXJsLlRvQXNjaWkgKCk7CiAgIHN2
bjo6UmV2aXNpb24gcmV2aXNpb24gKHN2bjo6UmV2aXNpb246OkhFQUQpOwogCiAgIGlmICghbV9k
YXRhLnVzZUxhdGVzdCkKZGlmZiAtdXIgcmFwaWRzdm4tMC42LjAvc3JjL3RyYWNlX3VwZGF0ZS5j
cHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvdHJhY2VfdXBkYXRlLmNwcAotLS0g
cmFwaWRzdm4tMC42LjAvc3JjL3RyYWNlX3VwZGF0ZS5jcHAJMjAwNC0wNS0yNCAxMTo0NToxMi4w
MDAwMDAwMDAgLTA0MDAKKysrIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQvc3JjL3RyYWNl
X3VwZGF0ZS5jcHAJMjAwNC0wOC0xMSAxMzoyMDoyOS4wMDAwMDAwMDAgLTA0MDAKQEAgLTExLDYg
KzExLDggQEAKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAgKi8KIAorI2luY2x1ZGUgInd4L3d4LmgiCisKIC8v
IHN1YnZlcnNpb24KICNpbmNsdWRlICJzdm5fcGF0aC5oIgogI2luY2x1ZGUgInN2bl93Yy5oIgpA
QCAtMTUxLDcgKzE1Myw3IEBACiAKICAgewogICAgIC8vcHJpbnRmICgiQSAgJXNcbiIsIG5ld19k
Yi0+cGF0aCk7Ci0gICAgd3hTdHJpbmcgc3RyID0gd3hTdHJpbmc6OkZvcm1hdCAoIkEgICVzIiwg
bmV3X2RiLT5wYXRoKTsKKyAgICB3eFN0cmluZyBzdHIgPSB3eFN0cmluZzo6Rm9ybWF0IChfKCJB
ICAlcyIpLCBuZXdfZGItPnBhdGgpOwogICAgIGViLT50cmFjZXItPlRyYWNlIChzdHIpOwogICB9
CiAKQEAgLTE5NCw3ICsxOTYsNyBAQAogICAgICAgc3RhdGNoYXJfYnVmWzFdID0gJ1UnOwogICAg
IHsKICAgICAgIC8vcHJpbnRmICgiJXMgJXNcbiIsIHN0YXRjaGFyX2J1ZiwgZGItPnBhdGgpOwot
ICAgICAgd3hTdHJpbmcgc3RyID0gd3hTdHJpbmc6OkZvcm1hdCAoIiVzICVzIiwgc3RhdGNoYXJf
YnVmLCBkYi0+cGF0aCk7CisgICAgICB3eFN0cmluZyBzdHIgPSB3eFN0cmluZzo6Rm9ybWF0IChf
KCIlcyAlcyIpLCBzdGF0Y2hhcl9idWYsIGRiLT5wYXRoKTsKICAgICAgIGViLT50cmFjZXItPlRy
YWNlIChzdHIpOwogICAgIH0KIApAQCAtMjk2LDcgKzI5OCw3IEBACiAKICAgewogICAgIC8vcHJp
bnRmICgiJXMgJXNcbiIsIHN0YXRjaGFyX2J1ZiwgZmItPnBhdGgpOwotICAgIHd4U3RyaW5nIHN0
ciA9IHd4U3RyaW5nOjpGb3JtYXQgKCIlcyAlcyIsIHN0YXRjaGFyX2J1ZiwgZmItPnBhdGgpOwor
ICAgIHd4U3RyaW5nIHN0ciA9IHd4U3RyaW5nOjpGb3JtYXQgKF8oIiVzICVzIiksIHN0YXRjaGFy
X2J1ZiwgZmItPnBhdGgpOwogICAgIGViLT50cmFjZXItPlRyYWNlIChzdHIpOwogICB9CiAKQEAg
LTM0Nyw3ICszNDksNyBAQAogICB7CiAgICAgLy9wcmludGYoICJEICAlc1xuIiwgc3ZuX3BhdGhf
am9pbiggZWItPnBhdGgsIHBhdGgsIHBvb2wgKSApOwogICAgIHd4U3RyaW5nIHN0ciA9Ci0gICAg
ICB3eFN0cmluZzo6Rm9ybWF0ICgiRCAgJXMiLCBzdm5fcGF0aF9qb2luIChlYi0+cGF0aCwgcGF0
aCwgcG9vbCkpOworICAgICAgd3hTdHJpbmc6OkZvcm1hdCAoXygiRCAgJXMiKSwgc3ZuX3BhdGhf
am9pbiAoZWItPnBhdGgsIHBhdGgsIHBvb2wpKTsKICAgICBlYi0+dHJhY2VyLT5UcmFjZSAoc3Ry
KTsKICAgfQogICByZXR1cm4gU1ZOX05PX0VSUk9SOwpAQCAtMzc5LDcgKzM4MSw3IEBACiAgICAg
ICAvLyAgZWItPnJldmlzaW9uICk7CiAgICAgewogICAgICAgd3hTdHJpbmcgc3RyID0KLSAgICAg
ICAgd3hTdHJpbmc6OkZvcm1hdCAoIkNoZWNrZWQgb3V0IHJldmlzaW9uICUiIFNWTl9SRVZOVU1f
VF9GTVQgIi4iLAorICAgICAgICB3eFN0cmluZzo6Rm9ybWF0IChfKCJDaGVja2VkIG91dCByZXZp
c2lvbiAlIiBTVk5fUkVWTlVNX1RfRk1UICIuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGViLT5yZXZpc2lvbik7CiAgICAgICBlYi0+dHJhY2VyLT5UcmFjZSAoc3RyKTsKICAgICB9CkBA
IC0zOTAsNyArMzkyLDcgQEAKICAgICAgICAgLy9wcmludGYoICJVcGRhdGVkIHRvIHJldmlzaW9u
ICUiIFNWTl9SRVZOVU1fVF9GTVQgIi5cbiIsCiAgICAgICAgIC8vICBlYi0+cmV2aXNpb24gKTsK
ICAgICAgICAgd3hTdHJpbmcgc3RyID0KLSAgICAgICAgICB3eFN0cmluZzo6Rm9ybWF0ICgiVXBk
YXRlZCB0byByZXZpc2lvbiAlIiBTVk5fUkVWTlVNX1RfRk1UICIuIiwKKyAgICAgICAgICB3eFN0
cmluZzo6Rm9ybWF0IChfKCJVcGRhdGVkIHRvIHJldmlzaW9uICUiIFNWTl9SRVZOVU1fVF9GTVQg
Ii4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYi0+cmV2aXNpb24pOwogICAgICAg
ICBlYi0+dHJhY2VyLT5UcmFjZSAoc3RyKTsKICAgICAgIH0KQEAgLTM5OSw3ICs0MDEsNyBAQAog
ICAgICAgewogICAgICAgICAvL3ByaW50ZiggIkF0IHJldmlzaW9uICUiIFNWTl9SRVZOVU1fVF9G
TVQgIi5cbiIsCiAgICAgICAgIC8vICBlYi0+cmV2aXNpb24gKTsKLSAgICAgICAgd3hTdHJpbmcg
c3RyID0gd3hTdHJpbmc6OkZvcm1hdCAoIkF0IHJldmlzaW9uICUiIFNWTl9SRVZOVU1fVF9GTVQg
Ii4iLAorICAgICAgICB3eFN0cmluZyBzdHIgPSB3eFN0cmluZzo6Rm9ybWF0IChfKCJBdCByZXZp
c2lvbiAlIiBTVk5fUkVWTlVNX1RfRk1UICIuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGViLT5yZXZpc2lvbik7CiAgICAgICAgIGViLT50cmFjZXItPlRyYWNl
IChzdHIpOwogICAgICAgfQpkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvdHJhY2VyLmNwcCBy
YXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy90cmFjZXIuY3BwCi0tLSByYXBpZHN2bi0w
LjYuMC9zcmMvdHJhY2VyLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE0LjAwMDAwMDAwMCAtMDQwMAor
KysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvdHJhY2VyLmNwcAkyMDA0LTA4LTEx
IDEzOjEyOjA5LjAwMDAwMDAwMCAtMDQwMApAQCAtMjgsNyArMjgsNyBAQAogVGV4dEN0cmxUcmFj
ZXI6OlRyYWNlIChjb25zdCB3eFN0cmluZyAmIHN0cikKIHsKICAgd3hNdXRleEd1aUVudGVyICgp
OwotICBtX3R4dEN0cmwtPkFwcGVuZFRleHQgKHN0ciArICJcbiIpOworICBtX3R4dEN0cmwtPkFw
cGVuZFRleHQgKHN0ciArIF8oIlxuIikpOwogICB3eE11dGV4R3VpTGVhdmUgKCk7CiB9CiAKQEAg
LTYwLDcgKzYwLDcgQEAKIHZvaWQKIEVycm9yVHJhY2VyOjpUcmFjZSAoY29uc3Qgd3hTdHJpbmcg
JiBzdHIpCiB7Ci0gIG1fbXNncyArPSBzdHIgKyAiXG4iOworICBtX21zZ3MgKz0gc3RyICsgXygi
XG4iKTsKIH0KIAogdm9pZApAQCAtNzgsNyArNzgsNyBAQAogdm9pZAogU3RyaW5nVHJhY2VyOjpU
cmFjZSAoY29uc3Qgd3hTdHJpbmcgJiBzdHIpCiB7Ci0gIG1fbXNncyArPSBzdHIgKyAiXG4iOwor
ICBtX21zZ3MgKz0gc3RyICsgXygiXG4iKTsKIH0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBsb2NhbCB2YXJp
YWJsZXM6CmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy90dmlld2VyLmNwcCByYXBpZHN2bi0w
LjYuMC11bmljb2RlLWZpeGVkL3NyYy90dmlld2VyLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3Jj
L3R2aWV3ZXIuY3BwCTIwMDQtMDUtMjQgMTE6NDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBp
ZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy90dmlld2VyLmNwcAkyMDA0LTA4LTExIDEzOjIx
OjM3LjAwMDAwMDAwMCAtMDQwMApAQCAtMzEsNyArMzEsNyBAQAogICAgIHd4U2l6ZSBzaXplICh3
aW5kb3ctPkdldENoYXJXaWR0aCAoKSAqIDQwLCAKICAgICAgICAgICAgICAgICAgd2luZG93LT5H
ZXRDaGFySGVpZ2h0ICgpICogMjApOwogICAgIGNvbnN0IGxvbmcgc3R5bGUgPSB3eFRFX01VTFRJ
TElORSB8IHd4VEVfUkVBRE9OTFk7Ci0gICAgbV90ZXh0ID0gbmV3IHd4VGV4dEN0cmwgKHdpbmRv
dywgLTEsICIiLCB3eERlZmF1bHRQb3NpdGlvbiwKKyAgICBtX3RleHQgPSBuZXcgd3hUZXh0Q3Ry
bCAod2luZG93LCAtMSwgXygiIiksIHd4RGVmYXVsdFBvc2l0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplLCBzdHlsZSk7CiAKICAgICAvLyBDbG9zZSBCdXR0b24KQEAgLTU0
LDcgKzU0LDcgQEAKICAgU2V0VGV4dCAoY29uc3QgY2hhciAqIHRleHQpCiAgIHsKICAgICBtX3Rl
eHQtPlNob3cgKGZhbHNlKTsKLSAgICBtX3RleHQtPlNldFZhbHVlICh0ZXh0KTsKKyAgICBtX3Rl
eHQtPlNldFZhbHVlICh3eFN0cmluZyh0ZXh0LCB3eENvbnZMb2NhbCkpOwogICAgIG1fdGV4dC0+
U2hvdyAodHJ1ZSk7CiAgIH0KIH07CkBAIC02Niw3ICs2Niw3IEBACiAKIAogVGV4dFZpZXdlcjo6
VGV4dFZpZXdlciAoY29uc3QgY2hhciAqIHRpdGxlKQotICA6IHd4RGlhbG9nIChOVUxMLCAtMSwg
dGl0bGUsCisgIDogd3hEaWFsb2cgKE5VTEwsIC0xLCB3eFN0cmluZyh0aXRsZSwgd3hDb252TG9j
YWwpLAogICAgICAgICAgICAgICB3eERlZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwKICAg
ICAgICAgICAgICAgd3hERUZBVUxUX0RJQUxPR19TVFlMRSB8IHd4UkVTSVpFX0JPUkRFUiB8IAog
ICAgICAgICAgICAgICB3eERJQUxPR19OT19QQVJFTlQpCmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4w
L3NyYy91cGRhdGVfYWN0aW9uLmNwcCByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy91
cGRhdGVfYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL3VwZGF0ZV9hY3Rpb24uY3Bw
CTIwMDQtMDUtMjQgMTE6NDU6MTYuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11
bmljb2RlLWZpeGVkL3NyYy91cGRhdGVfYWN0aW9uLmNwcAkyMDA0LTA4LTExIDEzOjI0OjA5LjAw
MDAwMDAwMCAtMDQwMApAQCAtMzcsNyArMzcsNyBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQog
Ci0gIFVwZGF0ZURsZyBkbGcgKEdldFBhcmVudCAoKSwgXygiVXBkYXRlIikpOworICBVcGRhdGVE
bGcgZGxnIChHZXRQYXJlbnQgKCksICJVcGRhdGUiKTsKIAogICBpZiAoZGxnLlNob3dNb2RhbCAo
KSAhPSB3eElEX09LKQogICB7CkBAIC02Niw3ICs2Niw3IEBACiAKICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3ZuOjpQYXRoPiAmIHYgPSBHZXRUYXJnZXRzICgpOwogICBzdGQ6OnZlY3Rvcjxzdm46OlBh
dGg+Ojpjb25zdF9pdGVyYXRvciBpdDsKLSAgd3hTZXRXb3JraW5nRGlyZWN0b3J5IChHZXRQYXRo
ICgpLmNfc3RyICgpKTsKKyAgd3hTZXRXb3JraW5nRGlyZWN0b3J5ICh3eFN0cmluZyhHZXRQYXRo
ICgpLmNfc3RyICgpLCB3eENvbnZMb2NhbCkpOwogICBzdm46OkNsaWVudCBjbGllbnQgKEdldENv
bnRleHQgKCkpOwogICBmb3IgKGl0ID0gdi5iZWdpbigpOyBpdCAhPSB2LmVuZCgpOyBpdCsrKQog
ICB7CmRpZmYgLXVyIHJhcGlkc3ZuLTAuNi4wL3NyYy91cGRhdGVfZGF0YS5ocHAgcmFwaWRzdm4t
MC42LjAtdW5pY29kZS1maXhlZC9zcmMvdXBkYXRlX2RhdGEuaHBwCi0tLSByYXBpZHN2bi0wLjYu
MC9zcmMvdXBkYXRlX2RhdGEuaHBwCTIwMDQtMDUtMjQgMTE6NDU6MTQuMDAwMDAwMDAwIC0wNDAw
CisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3NyYy91cGRhdGVfZGF0YS5ocHAJMjAw
NC0wOC0xMSAxMjo1MTo0Ny4wMDAwMDAwMDAgLTA0MDAKQEAgLTE5LDcgKzE5LDcgQEAKIHN0cnVj
dCBVcGRhdGVEYXRhCiB7CiAgIFVwZGF0ZURhdGEoKQotICAgIDogcmV2aXNpb24gKCIiKSwgdXJs
ICgiIiksIHVzZUxhdGVzdCAodHJ1ZSksIHJlY3Vyc2l2ZSAodHJ1ZSkKKyAgICA6IHJldmlzaW9u
IChfKCIiKSksIHVybCAoXygiIikpLCB1c2VMYXRlc3QgKHRydWUpLCByZWN1cnNpdmUgKHRydWUp
CiAgIHsKICAgfQogICAgIApkaWZmIC11ciByYXBpZHN2bi0wLjYuMC9zcmMvdXBkYXRlX2RsZy5j
cHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvdXBkYXRlX2RsZy5jcHAKLS0tIHJh
cGlkc3ZuLTAuNi4wL3NyYy91cGRhdGVfZGxnLmNwcAkyMDA0LTA1LTI0IDExOjQ1OjEzLjAwMDAw
MDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMvdXBkYXRlX2Rs
Zy5jcHAJMjAwNC0wOC0xMSAxMzoyNjoxMC4wMDAwMDAwMDAgLTA0MDAKQEAgLTU4LDcgKzU4LDcg
QEAKICAgICAgIHd4U3RhdGljQm94U2l6ZXIgKiBzaXplciA9IAogICAgICAgICBuZXcgd3hTdGF0
aWNCb3hTaXplciAoYm94LCB3eEhPUklaT05UQUwpOwogICAgICAgd3hUZXh0VmFsaWRhdG9yIHZh
bCAod3hGSUxURVJfTk9ORSwgJmRhdGEudXJsKTsKLSAgICAgIG1fdGV4dFVybCA9IG5ldyB3eFRl
eHRDdHJsICh3aW5kb3csIElEX1VSTCwgIiIsCisgICAgICBtX3RleHRVcmwgPSBuZXcgd3hUZXh0
Q3RybCAod2luZG93LCBJRF9VUkwsIF8oIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHd4RGVmYXVsdFBvc2l0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3eERlZmF1bHRTaXplLCAwLCB2YWwpOwogICAgICAgc2l6ZXItPkFkZCAobV90ZXh0VXJs
LCAxLCB3eEFMTCB8IHd4RVhQQU5ELCA1KTsKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgIHd4U3Rh
dGljQm94U2l6ZXIgKnJldlNpemVyID0gCiAgICAgICAgIG5ldyB3eFN0YXRpY0JveFNpemVyIChi
b3gsIHd4SE9SSVpPTlRBTCk7CiAgICAgICB3eFRleHRWYWxpZGF0b3IgdmFsICh3eEZJTFRFUl9O
VU1FUklDLCAmZGF0YS5yZXZpc2lvbik7Ci0gICAgICBtX3RleHRSZXZpc2lvbiA9IG5ldyB3eFRl
eHRDdHJsICh3aW5kb3csIElEX1JFVklTSU9OLCAiIiwKKyAgICAgIG1fdGV4dFJldmlzaW9uID0g
bmV3IHd4VGV4dEN0cmwgKHdpbmRvdywgSURfUkVWSVNJT04sIF8oIiIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9zaXRpb24sIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0U2l6ZSwgMCwgdmFsKTsKICAg
ICAgIHJldlNpemVyLT5BZGQgKG1fdGV4dFJldmlzaW9uLCAxLCAKQEAgLTEzNSwxMiArMTM1LDEy
IEBACiAgICAgewogICAgICAgaWYgKCFtX2NoZWNrVXNlTGF0ZXN0LT5Jc0NoZWNrZWQgKCkpCiAg
ICAgICB7Ci0gICAgICAgIG9rID0gQ2hlY2tSZXZpc2lvbiAobV90ZXh0UmV2aXNpb24tPkdldFZh
bHVlICgpKTsKKyAgICAgICAgb2sgPSBDaGVja1JldmlzaW9uIChtX3RleHRSZXZpc2lvbi0+R2V0
VmFsdWUgKCkuVG9Bc2NpaSgpKTsKICAgICAgIH0KICAgICB9CiAgICAgaWYgKG9rICYmIHdpdGhV
cmwgKCkpCiAgICAgewotICAgICAgb2sgPSBzdm46OlVybDo6aXNWYWxpZChtX3RleHRVcmwtPkdl
dFZhbHVlICgpKTsKKyAgICAgIG9rID0gc3ZuOjpVcmw6OmlzVmFsaWQobV90ZXh0VXJsLT5HZXRW
YWx1ZSAoKS5Ub0FzY2lpKCkpOwogICAgIH0KIAogICAgIG1fYnV0dG9uT2stPkVuYWJsZSAob2sp
OwpAQCAtMTc4LDcgKzE3OCw3IEBACiAKIFVwZGF0ZURsZzo6VXBkYXRlRGxnICh3eFdpbmRvdyog
cGFyZW50LCBjb25zdCBjaGFyICogdGl0bGUsIGludCBmbGFncywgCiAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCByZWN1cnNpdmUpCi0gIDogd3hEaWFsb2cocGFyZW50LCAtMSwgdGl0bGUsCisg
IDogd3hEaWFsb2cocGFyZW50LCAtMSwgd3hTdHJpbmcodGl0bGUsIHd4Q29udkxvY2FsKSwKICAg
ICAgICAgICAgICB3eERlZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwKICAgICAgICAgICAg
ICB3eERFRkFVTFRfRElBTE9HX1NUWUxFIHwgd3hSRVNJWkVfQk9SREVSKQogewpkaWZmIC11ciBy
YXBpZHN2bi0wLjYuMC9zcmMvdXRpbHMuY3BwIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4ZWQv
c3JjL3V0aWxzLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL3V0aWxzLmNwcAkyMDA0LTA1LTI0
IDExOjQ1OjE3LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhl
ZC9zcmMvdXRpbHMuY3BwCTIwMDQtMDgtMTEgMTM6Mjk6MzkuMDAwMDAwMDAwIC0wNDAwCkBAIC0x
MjEsNyArMTIxLDcgQEAKIHd4QnV0dG9uICoKIENyZWF0ZUVsbGlwc2lzQnV0dG9uKHd4V2luZG93
ICpwYXJlbnQsIGxvbmcgaWQpCiB7Ci0gIGNvbnN0IGNoYXIgKkVMTElQU0lTID0gIi4uLiI7Cisg
IGNvbnN0IHd4Q2hhciAqIGNvbnN0IEVMTElQU0lTID0gXygiLi4uIik7CiAgIGludCBlbGxpcHNp
c193aWR0aCwgZWxsaXBzaXNfaGVpZ2h0OwogCiAgIHd4QnV0dG9uICpidXR0b24gPSBuZXcgd3hC
dXR0b24gKHBhcmVudCwgaWQsIEVMTElQU0lTKTsKQEAgLTE5MCw3ICsxOTAsNyBAQAogewogICBz
dm5fcmV2bnVtX3QgcmV2bnVtOwogCi0gIHJldHVybiBQYXJzZVJldmlzaW9uIChyZXZzdHJpbmcs
IHJldm51bSk7CisgIHJldHVybiBQYXJzZVJldmlzaW9uICh3eFN0cmluZyhyZXZzdHJpbmcsIHd4
Q29udkxvY2FsKSwgcmV2bnVtKTsKIH0KIAogd3hDb21tYW5kRXZlbnQKQEAgLTIwNSw3ICsyMDUs
NyBAQAogd3hNZW51SXRlbSAqCiBBcHBlbmRNZW51SXRlbSAod3hNZW51ICYgbWVudSwgaW50IGlk
KQogewotICBjb25zdCBjaGFyICogY2FwdGlvbiA9ICIiOworICBjb25zdCB3eENoYXIgKiBjYXB0
aW9uID0gXygiIik7CiAgIHd4Qml0bWFwIGJpdG1hcDsKIAogICBzd2l0Y2ggKGlkKQpAQCAtMjkz
LDcgKzI5Myw3IEBACiAgIC8vICh3ZSBjaGVjayBvbmx5IGlmIHRoZSBjb21wbGV0ZSBwYXJzaW5n
IGZhaWxlZCwKICAgLy8gIG5vdCBpZiBvbmx5IHRoZSBwYXJ0aWFsIHN0cmluZyBjb3VsZCBiZSBw
YXJzZWQpCiAgIHd4RGF0ZVRpbWUgZGF0ZVRpbWU7Ci0gIGlmIChkYXRlVGltZS5QYXJzZUZvcm1h
dCAoZGF0ZXN0cmluZywgIiVjIikgPT0wKQorICBpZiAoZGF0ZVRpbWUuUGFyc2VGb3JtYXQgKGRh
dGVzdHJpbmcsIF8oIiVjIikpID09MCkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgYXByX3RpbWVf
YW5zaV9wdXQgKCZkYXRlLCBkYXRlVGltZS5HZXRUaWNrcyAoKSk7CkBAIC0zMTQsNyArMzE0LDcg
QEAKIEZvcm1hdERhdGVUaW1lIChhcHJfdGltZV90IGRhdGUsIHd4U3RyaW5nIGZtdCkKIHsKICAg
aWYgKGRhdGUgPT0gMCkKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIF8oIiIpOwogCiAgIGFw
cl90aW1lX2V4cF90IGV4cF90aW1lOwogICBjaGFyIHRpbWVzdHJbODBdOwpAQCAtMzI5LDE0ICsz
MjksMTQgQEAKICAgaWYgKGFwcl9lcnIpCiAgICAgdGltZXN0clswXSA9ICdcMCc7CiAKLSAgcmV0
dXJuIHRpbWVzdHI7CisgIHJldHVybiB3eFN0cmluZyh0aW1lc3RyLCB3eENvbnZMb2NhbCk7CiB9
CiAKIAogd3hTdHJpbmcgCiBCZWF1dGlmeVBhdGggKGNvbnN0IHd4U3RyaW5nICYgcGF0aCkKIHsK
LSAgaW50IHBvcyA9IHBhdGguRmluZCAoIjoiKTsKKyAgaW50IHBvcyA9IHBhdGguRmluZCAoXygi
OiIpKTsKIAogICBpZiAocG9zIDw9IDApCiAgICAgcmV0dXJuIHBhdGg7CmRpZmYgLXVyIHJhcGlk
c3ZuLTAuNi4wL3NyYy91dGlscy5ocHAgcmFwaWRzdm4tMC42LjAtdW5pY29kZS1maXhlZC9zcmMv
dXRpbHMuaHBwCi0tLSByYXBpZHN2bi0wLjYuMC9zcmMvdXRpbHMuaHBwCTIwMDQtMDUtMjQgMTE6
NDU6MTQuMDAwMDAwMDAwIC0wNDAwCisrKyByYXBpZHN2bi0wLjYuMC11bmljb2RlLWZpeGVkL3Ny
Yy91dGlscy5ocHAJMjAwNC0wOC0xMCAxMjo0MjoyMS4wMDAwMDAwMDAgLTA0MDAKQEAgLTE2Nyw3
ICsxNjcsNyBAQAogICogQHJldHVybiBmb3JtYXR0ZWQgZGF0ZS90aW1lIHN0cmluZwogICovCiB3
eFN0cmluZwotRm9ybWF0RGF0ZVRpbWUgKGFwcl90aW1lX3QgZGF0ZSwgd3hTdHJpbmcgZm10ID0g
IiV4ICVYIik7CitGb3JtYXREYXRlVGltZSAoYXByX3RpbWVfdCBkYXRlLCB3eFN0cmluZyBmbXQg
PSB3eFN0cmluZygiJXggJVgiLCB3eENvbnZMb2NhbCkpOwogCiAKIC8qKgpkaWZmIC11ciByYXBp
ZHN2bi0wLjYuMC9zcmMvdmlld19hY3Rpb24uY3BwIHJhcGlkc3ZuLTAuNi4wLXVuaWNvZGUtZml4
ZWQvc3JjL3ZpZXdfYWN0aW9uLmNwcAotLS0gcmFwaWRzdm4tMC42LjAvc3JjL3ZpZXdfYWN0aW9u
LmNwcAkyMDA0LTA1LTI0IDExOjQ1OjE1LjAwMDAwMDAwMCAtMDQwMAorKysgcmFwaWRzdm4tMC42
LjAtdW5pY29kZS1maXhlZC9zcmMvdmlld19hY3Rpb24uY3BwCTIwMDQtMDgtMTEgMTM6MzE6NDQu
MDAwMDAwMDAwIC0wNDAwCkBAIC0zOCw5ICszOCw5IEBACiBib29sCiBWaWV3QWN0aW9uOjpQZXJm
b3JtICgpCiB7Ci0gIHd4U2V0V29ya2luZ0RpcmVjdG9yeSAoR2V0UGF0aCAoKS5jX3N0ciAoKSk7
CisgIHd4U2V0V29ya2luZ0RpcmVjdG9yeSAod3hTdHJpbmcoR2V0UGF0aCAoKS5jX3N0ciAoKSwg
d3hDb252TG9jYWwpKTsKIAotICBzdm46OlBhdGggcGF0aCAobV9kYXRhLnBhdGguY19zdHIgKCkp
OworICBzdm46OlBhdGggcGF0aCAobV9kYXRhLnBhdGguVG9Bc2NpaSgpKTsKICAgc3ZuOjpDbGll
bnQgY2xpZW50IChHZXRDb250ZXh0ICgpKTsKICAgc3RkOjpzdHJpbmcgdGV4dCA9IGNsaWVudC5j
YXQgKHBhdGgsIG1fZGF0YS5yZXZpc2lvbik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgdGl0bGUu
UHJpbnRmIChfKCJWaWV3ICVzIFJldmlzaW9uICVsZCIpLAogICAgICAgICAgICAgICAgIHBhdGgu
Y19zdHIgKCksCiAgICAgICAgICAgICAgICAgbV9kYXRhLnJldmlzaW9uLnJldm51bSAoKSk7Ci0g
IFRleHRWaWV3ZXIgKiB2aWV3ZXIgPSBuZXcgVGV4dFZpZXdlciAodGl0bGUpOworICBUZXh0Vmll
d2VyICogdmlld2VyID0gbmV3IFRleHRWaWV3ZXIgKHRpdGxlLlRvQXNjaWkoKSk7CiAgIHZpZXdl
ci0+U2V0VGV4dCAodGV4dC5jX3N0ciAoKSk7CiAgIHZpZXdlci0+U2hvdyAodHJ1ZSk7CiAK
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38428</attachid>
            <date>2004-08-29 06:48 0000</date>
            <desc>rapidsvn-0.6.0_ebuild.patch</desc>
            <filename>rapidsvn-0.6.0_ebuild.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">LS0tIC91c3IvcG9ydGFnZS9kZXYtdXRpbC9yYXBpZHN2bi9yYXBpZHN2bi0wLjYuMC5lYnVpbGQJ
MjAwNC0wNy0xNSAwMjowNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrIHJhcGlkc3ZuLTAuNi4wLmVi
dWlsZAkyMDA0LTA4LTI5IDE1OjQ1OjM1LjAwMTIzODMwNCArMDIwMApAQCAtMiwyNiArMiw1MiBA
QAogIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIHYyCiAjICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2Rldi11dGls
L3JhcGlkc3ZuL3JhcGlkc3ZuLTAuNi4wLmVidWlsZCx2IDEuMyAyMDA0LzA3LzE1IDAwOjAyOjA3
IGFncmlmZmlzIEV4cCAkCiAKK2luaGVyaXQgZXV0aWxzCisKIERFU0NSSVBUSU9OPSJDcm9zcy1w
bGF0Zm9ybSBHVUkgZnJvbnQtZW5kIGZvciB0aGUgU3VidmVyc2lvbiByZXZpc2lvbiBzeXN0ZW0u
IgogSE9NRVBBR0U9Imh0dHA6Ly9yYXBpZHN2bi50aWdyaXMub3JnLyIKIFNSQ19VUkk9Imh0dHA6
Ly93d3cucmFwaWRzdm4ub3JnL2Rvd25sb2FkLyR7UH0udGFyLmd6IgogTElDRU5TRT0iQXBhY2hl
LTEuMSIKIFNMT1Q9IjAiCiBLRVlXT1JEUz0ifng4NiB+cHBjIH5zcGFyYyB+YW1kNjQiCi1JVVNF
PSJkb2MiCitJVVNFPSJkb2MgZ3RrMiIKIAogREVQRU5EPSI+PWRldi11dGlsL3N1YnZlcnNpb24t
MS4wLjAKLQk+PXgxMS1saWJzL3d4R1RLLTIuNC4yCi0JZG9jPyAoIGRldi1saWJzL2xpYnhzbHQg
YXBwLXRleHQvZG9jYm9vay1zZ21sLXV0aWxzIGFwcC1kb2MvZG94eWdlbiApIgorCT49eDExLWxp
YnMvd3hHVEstMi40LjItcjIKKwlkb2M/ICggZGV2LWxpYnMvbGlieHNsdCBhcHAtdGV4dC9kb2Ni
b29rLXNnbWwtdXRpbHMgYXBwLWRvYy9kb3h5Z2VuIGFwcC10ZXh0L2RvY2Jvb2steHNsLXN0eWxl
c2hlZXRzICkiCisKKworc3JjX3VucGFjaygpIHsKKwljZCAke1dPUktESVJ9CisJdW5wYWNrICR7
UH0udGFyLmd6CisJY2QgJHtTfQorCWVwYXRjaCAke0ZJTEVTRElSfS9zdm5jcHBfMC42LjFfbGlu
ay5wYXRjaAorfQogCiBzcmNfY29tcGlsZSgpIHsKIAkjIGlmIHlvdSBjb21waWxlZCBzdWJ2ZXJz
aW9uIHdpdGhvdXQgKHRoZSkgYXBhY2hlMiAoZmxhZykgYW5kIHdpdGggdGhlIGJlcmtkYiBmbGFn
CiAJIyB5b3Ugd2lsbCBnZXQgYW4gZXJyb3IgdGhhdCBpdCBjYW4ndCBmaW5kIHRoZSBsaWIgZGI0
CiAJbG9jYWwgbXljb25mCi0JI25lZWRzIG1hbnBhZ2VzIHN1cHBvcnQgaW4gZG9jYm9vaywgZ2Vu
dG9vIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIHRoaXMgLSBpIGR1bm5vCi0JdXNlIGRvYyAmJiBteWNv
bmY9Ii0td2l0aC1kb2Nib29rLXhzbD0vdXNyL3NoYXJlL3NnbWwvZG9jYm9vay8iIFwKLQkJfHwg
bXljb25mPSItLXdpdGhvdXQteHNsdHByb2MgLS13aXRob3V0LWRvY2Jvb2steHNsIC0td2l0aG91
dC1kb3h5Z2VuIFwKKwlsb2NhbCB4c2xzc19kaXIKKworCWlmIHVzZSBkb2M7IHRoZW4KKwkJeHNs
c3NfZGlyPSQobHMgLTFkIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cyp8
aGVhZCAtbjEpCisJCW15Y29uZj0iLS13aXRoLWRvY2Jvb2steHNsPSR4c2xzc19kaXIiCisJZWxz
ZQorCQlteWNvbmY9Ii0td2l0aG91dC14c2x0cHJvYyAtLXdpdGhvdXQtZG9jYm9vay14c2wgLS13
aXRob3V0LWRveHlnZW4gXAogCQkJLS13aXRob3V0LWRvdCIKKwlmaQorCWlmIHVzZSBndGsyOyB0
aGVuCisJCWlmIHRlc3QgLXggL3Vzci9iaW4vd3hndGsyLTIuNC1jb25maWc7IHRoZW4KKwkJCW15
Y29uZj0iJHtteWNvbmZ9IC0td2l0aC13eC1jb25maWc9L3Vzci9iaW4vd3hndGsyLTIuNC1jb25m
aWciCisJCWVsc2UKKwkJCWV3YXJuICJ3eGd0azItMi40LWNvbmZpZyBub3QgZm91bmQuIENvbXBp
bGluZyB3aXRoIGRlZmF1bHQgd3hHVEsuIgorCQlmaQorCWVsaWYgdGVzdCAteCAvdXNyL2Jpbi93
eGd0ay0yLjQtY29uZmlnOyB0aGVuCisJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC13eC1jb25m
aWc9L3Vzci9iaW4vd3hndGstMi40LWNvbmZpZyIKKwllbHNlCisJCWV3YXJuICJ3eGd0ay0yLjQt
Y29uZmlnIG5vdCBmb3VuZC4gQ29tcGlsaW5nIHdpdGggZGVmYXVsdCB3eEdUSy4iCisJZmkKIAll
Y29uZgktLXdpdGgtc3ZuLWxpYj0vdXNyL2xpYiBcCiAJCS0td2l0aC1zdm4taW5jbHVkZT0vdXNy
L2luY2x1ZGUgXAogCQkke215Y29uZn0gfHwgZGllICIuL2NvbmZpZ3VyZSBmYWlsZWQiCkBAIC0z
MCw0ICs1Niw5IEBACiAKIHNyY19pbnN0YWxsKCkgewogCWVpbnN0YWxsIHx8IGRpZQorCWlmIHVz
ZSBkb2MgOyB0aGVuCisJCWNkICR7U30KKwkJZG9kaXIgL3Vzci9zaGFyZS9kb2MvJHtQRn0vc3Zu
Y3BwCisJCWNwIC1yICR7U30vZG9jL3N2bmNwcC9odG1sICR7RH0vdXNyL3NoYXJlL2RvYy8ke1BG
fS9zdm5jcHAKKwlmaQogfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38429</attachid>
            <date>2004-08-29 06:52 0000</date>
            <desc>svncpp_0.6.1_link.patch</desc>
            <filename>svncpp_0.6.1_link.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">SW5kZXg6IHNyYy9zdm5jcHAvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3N2bmNwcC9N
YWtlZmlsZS5hbQkocmV2aXNpb24gNzEwMCkKKysrIHNyYy9zdm5jcHAvTWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDcgQEAKIAl1cmwuY3BwIFwKIAl3Yy5jcHAKIAorbGli
c3ZuY3BwX2xhX0xJQkFERD0gJChTVk5fTElCUykgXAorCSQoTkVPTl9MSUJTKSBcCisJJChBUFJf
TElCUykgXAorCS1sc3RkYysrCg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38430</attachid>
            <date>2004-08-29 06:57 0000</date>
            <desc>rapidsvn-0.6.0_ebuild.patch</desc>
            <filename>rapidsvn-0.6.0_ebuild.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">LS0tIC91c3IvcG9ydGFnZS9kZXYtdXRpbC9yYXBpZHN2bi9yYXBpZHN2bi0wLjYuMC5lYnVpbGQJ
MjAwNC0wNy0xNSAwMjowNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrIHJhcGlkc3ZuLTAuNi4wLmVi
dWlsZAkyMDA0LTA4LTI5IDE1OjU1OjI4LjgzNjk2MTU1MiArMDIwMApAQCAtMiwyNiArMiw1MyBA
QAogIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIHYyCiAjICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2Rldi11dGls
L3JhcGlkc3ZuL3JhcGlkc3ZuLTAuNi4wLmVidWlsZCx2IDEuMyAyMDA0LzA3LzE1IDAwOjAyOjA3
IGFncmlmZmlzIEV4cCAkCiAKK2luaGVyaXQgZXV0aWxzCisKIERFU0NSSVBUSU9OPSJDcm9zcy1w
bGF0Zm9ybSBHVUkgZnJvbnQtZW5kIGZvciB0aGUgU3VidmVyc2lvbiByZXZpc2lvbiBzeXN0ZW0u
IgogSE9NRVBBR0U9Imh0dHA6Ly9yYXBpZHN2bi50aWdyaXMub3JnLyIKIFNSQ19VUkk9Imh0dHA6
Ly93d3cucmFwaWRzdm4ub3JnL2Rvd25sb2FkLyR7UH0udGFyLmd6IgogTElDRU5TRT0iQXBhY2hl
LTEuMSIKIFNMT1Q9IjAiCiBLRVlXT1JEUz0ifng4NiB+cHBjIH5zcGFyYyB+YW1kNjQiCi1JVVNF
PSJkb2MiCitJVVNFPSJkb2MgZ3RrMiIKIAogREVQRU5EPSI+PWRldi11dGlsL3N1YnZlcnNpb24t
MS4wLjAKLQk+PXgxMS1saWJzL3d4R1RLLTIuNC4yCi0JZG9jPyAoIGRldi1saWJzL2xpYnhzbHQg
YXBwLXRleHQvZG9jYm9vay1zZ21sLXV0aWxzIGFwcC1kb2MvZG94eWdlbiApIgorCT49eDExLWxp
YnMvd3hHVEstMi40LjItcjIKKwlkb2M/ICggZGV2LWxpYnMvbGlieHNsdCBhcHAtdGV4dC9kb2Ni
b29rLXNnbWwtdXRpbHMgYXBwLWRvYy9kb3h5Z2VuIGFwcC10ZXh0L2RvY2Jvb2steHNsLXN0eWxl
c2hlZXRzICkiCisKKworc3JjX3VucGFjaygpIHsKKwljZCAke1dPUktESVJ9CisJdW5wYWNrICR7
UH0udGFyLmd6CisJY2QgJHtTfQorCWVwYXRjaCAke0ZJTEVTRElSfS9zdm5jcHBfMC42LjFfbGlu
ay5wYXRjaAorfQogCiBzcmNfY29tcGlsZSgpIHsKIAkjIGlmIHlvdSBjb21waWxlZCBzdWJ2ZXJz
aW9uIHdpdGhvdXQgKHRoZSkgYXBhY2hlMiAoZmxhZykgYW5kIHdpdGggdGhlIGJlcmtkYiBmbGFn
CiAJIyB5b3Ugd2lsbCBnZXQgYW4gZXJyb3IgdGhhdCBpdCBjYW4ndCBmaW5kIHRoZSBsaWIgZGI0
CiAJbG9jYWwgbXljb25mCi0JI25lZWRzIG1hbnBhZ2VzIHN1cHBvcnQgaW4gZG9jYm9vaywgZ2Vu
dG9vIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIHRoaXMgLSBpIGR1bm5vCi0JdXNlIGRvYyAmJiBteWNv
bmY9Ii0td2l0aC1kb2Nib29rLXhzbD0vdXNyL3NoYXJlL3NnbWwvZG9jYm9vay8iIFwKLQkJfHwg
bXljb25mPSItLXdpdGhvdXQteHNsdHByb2MgLS13aXRob3V0LWRvY2Jvb2steHNsIC0td2l0aG91
dC1kb3h5Z2VuIFwKKwlsb2NhbCB4c2xzc19kaXIKKworCWlmIHVzZSBkb2M7IHRoZW4KKwkJeHNs
c3NfZGlyPSQobHMgLTFkIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cyp8
aGVhZCAtbjEpCisJCW15Y29uZj0iLS13aXRoLWRvY2Jvb2steHNsPSR4c2xzc19kaXIiCisJZWxz
ZQorCQlteWNvbmY9Ii0td2l0aG91dC14c2x0cHJvYyAtLXdpdGhvdXQtZG9jYm9vay14c2wgLS13
aXRob3V0LWRveHlnZW4gXAogCQkJLS13aXRob3V0LWRvdCIKKwlmaQorCWlmIHVzZSBndGsyOyB0
aGVuCisJCWlmIHRlc3QgLXggL3Vzci9iaW4vd3hndGsyLTIuNC1jb25maWc7IHRoZW4KKwkJCW15
Y29uZj0iJHtteWNvbmZ9IC0td2l0aC13eC1jb25maWc9L3Vzci9iaW4vd3hndGsyLTIuNC1jb25m
aWciCisJCWVsc2UKKwkJCWV3YXJuICJ3eGd0azItMi40LWNvbmZpZyBub3QgZm91bmQuIENvbXBp
bGluZyB3aXRoIGRlZmF1bHQgd3hHVEsuIgorCQlmaQorCWVsaWYgdGVzdCAteCAvdXNyL2Jpbi93
eGd0ay0yLjQtY29uZmlnOyB0aGVuCisJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC13eC1jb25m
aWc9L3Vzci9iaW4vd3hndGstMi40LWNvbmZpZyIKKwllbHNlCisJCWV3YXJuICJ3eGd0ay0yLjQt
Y29uZmlnIG5vdCBmb3VuZC4gQ29tcGlsaW5nIHdpdGggZGVmYXVsdCB3eEdUSy4iCisJZmkKKwku
L2F1dG9nZW4uc2gKIAllY29uZgktLXdpdGgtc3ZuLWxpYj0vdXNyL2xpYiBcCiAJCS0td2l0aC1z
dm4taW5jbHVkZT0vdXNyL2luY2x1ZGUgXAogCQkke215Y29uZn0gfHwgZGllICIuL2NvbmZpZ3Vy
ZSBmYWlsZWQiCkBAIC0zMCw0ICs1Nyw5IEBACiAKIHNyY19pbnN0YWxsKCkgewogCWVpbnN0YWxs
IHx8IGRpZQorCWlmIHVzZSBkb2MgOyB0aGVuCisJCWNkICR7U30KKwkJZG9kaXIgL3Vzci9zaGFy
ZS9kb2MvJHtQRn0vc3ZuY3BwCisJCWNwIC1yICR7U30vZG9jL3N2bmNwcC9odG1sICR7RH0vdXNy
L3NoYXJlL2RvYy8ke1BGfS9zdm5jcHAKKwlmaQogfQo=
</data>        

          </attachment>
    </bug>

</bugzilla>