<?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>242218</bug_id>
          
          <creation_ts>2008-10-15 15:53 0000</creation_ts>
          <short_desc>dev-libs/xalan-c-1.10.0 doesn&apos;t compile against dev-libs/xerces-c-3.0.0</short_desc>
          <delta_ts>2008-12-17 00:17:30 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>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <keywords>STABLEREQ</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>240496</blocked>
          <votes>1</votes>
          <everconfirmed>1</everconfirmed>
          <reporter>yngwin@gentoo.org</reporter>
          <assigned_to>cpp@gentoo.org</assigned_to>
          <cc>amd64@gentoo.org</cc>
    
    <cc>devurandom@gmx.net</cc>
    
    <cc>fmccor@gentoo.org</cc>
    
    <cc>gentoo@ekkes.com</cc>
    
    <cc>gregoire.favre@gmail.com</cc>
    
    <cc>griffon26@gentoo.org</cc>
    
    <cc>hetfield666@gmail.com</cc>
    
    <cc>hind@narod.ru</cc>
    
    <cc>mail@earthworm.de</cc>
    
    <cc>Martin.vGagern@gmx.net</cc>
    
    <cc>master_up@post.cz</cc>
    
    <cc>orzel@freehackers.org</cc>
    
    <cc>rose@rz.uni-potsdam.de</cc>
    
    <cc>sandro.bonazzola@gmail.com</cc>
    
    <cc>stoile@anderedomain.de</cc>
    
    <cc>tECHIDNA@gmail.com</cc>
    
    <cc>themactep@gmail.com</cc>
    
    <cc>transacid@centerim.org</cc>
    
    <cc>tzopik@gmail.com</cc>
    
    <cc>x86@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>yngwin@gentoo.org</who>
            <bug_when>2008-10-15 15:53:02 0000</bug_when>
            <thetext>With dev-libs/xerces-c-3.0.0 installed, I get the following error trying to rebuild xalan-c-1.10.0:

/var/tmp/portage/dev-libs/xalan-c-1.10.0/work/xml-xalan/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp:25: error: expected ‘,’ or ‘;’ before ‘namespace’
/var/tmp/portage/dev-libs/xalan-c-1.10.0/work/xml-xalan/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp:74: error: expected `}&apos; at end of input
make[3]: *** [../../../../obj/XalanMsgLib.o] Error 1
make[2]: *** [../../../lib/libxalanMsg.so.110.0] Error 2
make[1]: *** [locale] Error 2</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>tzopik@gmail.com</who>
            <bug_when>2008-10-16 10:44:38 0000</bug_when>
            <thetext>(In reply to comment #0)
&gt; With dev-libs/xerces-c-3.0.0 installed, I get the following error trying to
&gt; rebuild xalan-c-1.10.0:
&gt; 
&gt; /var/tmp/portage/dev-libs/xalan-c-1.10.0/work/xml-xalan/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp:25:
&gt; error: expected ‘,’ or ‘;’ before ‘namespace’
&gt; /var/tmp/portage/dev-libs/xalan-c-1.10.0/work/xml-xalan/c/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp:74:
&gt; error: expected `}&apos; at end of input
&gt; make[3]: *** [../../../../obj/XalanMsgLib.o] Error 1
&gt; make[2]: *** [../../../lib/libxalanMsg.so.110.0] Error 2
&gt; make[1]: *** [locale] Error 2
&gt; 

i confirm this after: emerge @preserved-rebuild</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>yngwin@gentoo.org</who>
            <bug_when>2008-10-16 11:19:20 0000</bug_when>
            <thetext>*** Bug 242330 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-18 13:59:00 0000</bug_when>
            <thetext>Source of the error seems to be xml-xalan/c/nls/include/LocalMsgData.hpp which starts the initializer for an array called msgArray but doesn&apos;t terminate it. LocalMsgData deems to get generated in some way, so this needs to be investigated.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>griffon26@gentoo.org</who>
            <bug_when>2008-10-18 14:45:33 0000</bug_when>
            <thetext>The fix is here: http://svn.apache.org/viewvc?view=rev&amp;revision=696900
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-18 17:23:27 0000</bug_when>
            <thetext>Created an attachment (id=168960)
Backported r696900 to fix MsgCreator

(In reply to comment #4)
&gt; The fix is here: http://svn.apache.org/viewvc?view=rev&amp;revision=696900

Nice. Doesn&apos;t apply out of the box, though, so I ported the patch to the 1.10.0 sources used by Gentoo.

Fixing the issue with the messages only leads to the next compile time error:
src/xalanc/PlatformSupport/AttributesImpl.cpp:168: error: cannot declare variable ‘theTempList’ to be of abstract type ‘xalanc_1_10::AttributesImpl’</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>griffon26@gentoo.org</who>
            <bug_when>2008-10-18 18:52:44 0000</bug_when>
            <thetext>Yeah, judging by the comments in the revision log we&apos;ll need a few more of those changes for things to work.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dev-zero@gentoo.org</who>
            <bug_when>2008-10-20 08:06:57 0000</bug_when>
            <thetext>The xalan-c trunk compiles with xerces-c-3.0.0.
We have the following options:
a) Backport all necessary changes
b) Provide a snapshot of Xalan-C (dev-libs/xalan-c.1.10.1_pre20081020)

I contacted upstream to see whether they have something to say about it.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-20 09:03:34 0000</bug_when>
            <thetext>(In reply to comment #7)
&gt; a) Backport all necessary changes

I&apos;m currently in the process of doing so. So far I identified these changesets:
http://svn.apache.org/viewvc?view=rev&amp;revision=482425
http://svn.apache.org/viewvc?view=rev&amp;revision=572759
http://svn.apache.org/viewvc?view=rev&amp;revision=651671
http://svn.apache.org/viewvc?view=rev&amp;revision=672824
http://svn.apache.org/viewvc?view=rev&amp;revision=696900
For these I&apos;ve resolved conflicts, but it still doesn&apos;t compile. Will work on that a bit more, but won&apos;t make any promises.

&gt; b) Provide a snapshot of Xalan-C (dev-libs/xalan-c.1.10.1_pre20081020)

http://thread.gmane.org/gmane.text.xml.xalan.c++.user/3600/focus=3601 tells us that a new release, to be numbered 1.11, is currently under way, and furthermore that current HEAD is considered stable enough for testing.

&gt; I contacted upstream to see whether they have something to say about it.

Where have you posted?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-20 10:03:26 0000</bug_when>
            <thetext>Created an attachment (id=169168)
Backported 7 changesets to make things compile

This patch is a backport of the following changesets:
http://svn.apache.org/viewvc?view=rev&amp;revision=482425
http://svn.apache.org/viewvc?view=rev&amp;revision=572759
http://svn.apache.org/viewvc?view=rev&amp;revision=651671
http://svn.apache.org/viewvc?view=rev&amp;revision=671671
http://svn.apache.org/viewvc?view=rev&amp;revision=672824
http://svn.apache.org/viewvc?view=rev&amp;revision=672963
http://svn.apache.org/viewvc?view=rev&amp;revision=696900

With this patch in place (instead of the one submitted previously) xalan-c-1.10.0 compiled all right against xerces-c-3.0.0. Still untested so far.

Given the fact that we are currently blocking a security issue, and therefore want to stabilize things as soon as possible, we might go for this patch for a 1.10.0-r1 (or maybe even without revbump) to start stabilizing now, and an svn snapshot as 1.11 prerelease for testing.

It would also be interesting to find out whether packages depending on xalan-c, like app-emulation/virtualbox-ose or www-apps/Embperl, would need to be recompiled after the patch. If so, a soname change would probably be nice, so that portage could preserve the libs until the depending packages are rebuilt. version.incl seems the place to do so. Finding a version between the old 110 for 1.10 and an assumed new 111 for 1.11 might be difficult.

Which reminds me to check the version.incl from upstream trunk, and realize that in fact it is still configured for 1.10:
http://svn.apache.org/viewvc/xalan/c/trunk/version.incl?view=markup
I somehow doubt that the interface is binary compatible across those versions. Would someone care to check this with upstream?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dev-zero@gentoo.org</who>
            <bug_when>2008-10-21 11:56:18 0000</bug_when>
            <thetext>I directly contacted the (as it seems) only active upstream dev :-)
Here&apos;s the relevant part from his answer:

[...]
&gt; How far away is the next Xalan-C release? What will be the version
&gt; number? (so we can name the snapshot X_pre20081020 for example).
&gt; Do you already provide a compatibility patch?
I&apos;m working on a new release right now, which will be 1.11.  I&apos;m not 
sure how long it will take for me to get everything together, but it 
will be at least 3-4 weeks.  I&apos;m trying to get the trunk stabilized 
within a couple of weeks, but it depends on the state of some of the 
more obscure ports (Mingw comes to mind as one of them).

I could also provide a patch for Xalan-C 1.10, but it would be quite a 
bit of work, due to the API changes in Xerces-C.

Do you have a particular deadline for Gentoo?
[...]

The problem is this: Patching the already stable xalan-c is a no go since it will break compilation with xerces-c &lt;3.0.0.
So, my proposal is to rev-bump it using the changes and let the arch-teams mark the rev-bump stable together with xerces-c-3.0.0.
I really don&apos;t like such a big patch, do we really want this or do we want a snapshot of the trunk? halcy0n, griffon26, your opinion?
Could anybody already test whether other packages depending on xerces-c and/or xalan-c are broken?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-21 13:01:22 0000</bug_when>
            <thetext>(In reply to comment #10)
&gt; The problem is this: Patching the already stable xalan-c is a no go since it
&gt; will break compilation with xerces-c &lt;3.0.0.

Are you sure about this? I haven&apos;t gone over all the changes myself, but they seem to fall into three categories:

1. Providing implementations for new purely virtual methods. For old xerces those would be methods not overridden but newly introduced by xalan, but there is nothing wrong with this.

2. Introducing some new typedefs, with preprocessor switches based on XERCES_VERSION_MAJOR. Especially these type dependency seems to me at least an attempt at working with xalan-c 2.7.

3. Changing signatures to make use of the new typedefs from 2.

So I&apos;d expect at least a fair chance of things compiling against xerces 2.7 as well. Only source code compatible, of course, not binary compatible. If not, we could have patch enclose all changes in preprocessor switches, or simply have the ebuild only apply the patch when compiling against xerces 3.

On the other hand, as it is xerces 2 which has the security issues, I wouldn&apos;t worry too much about that compatibility, and a synchroneous stabilization sounds like a good plan to me.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>griffon26@gentoo.org</who>
            <bug_when>2008-10-21 17:07:37 0000</bug_when>
            <thetext>Whether we go with a big patch or with a snapshot of trunk, I think we have about the same chance that it is broken. At least in the latter case the effort to get there is much less. 

And if anything in trunk is broken, the patches that we make can be sent upstream. In the case of the big patch it would likely require some more digging through the repository because the patch was incomplete, which is useless effort.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sandro.bonazzola@gmail.com</who>
            <bug_when>2008-10-22 17:35:14 0000</bug_when>
            <thetext>As user I would prefer the trunk snapshot solution and I completely agree with Maurice van der Pot in comment #12.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>orzel@freehackers.org</who>
            <bug_when>2008-10-24 12:39:45 0000</bug_when>
            <thetext>hit by this very problem here too.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Martin.vGagern@gmx.net</who>
            <bug_when>2008-10-24 14:02:22 0000</bug_when>
            <thetext>Created an attachment (id=169716)
Changes from 1.10.0 to xalan-c-1.11.0_pre705082.ebuild

OK, I just tried a snapshot against r705082 from 2008-10-16. That version seems to include the latest compatibility fixes, while the few commits between then and now seem more feature-related. Compiles nicely here, without the Gentoo-specific patches.

Getting rid of the -O2 compiler flag introduced by runConfigure in order to have the user&apos;s CFLAGS take precedence required an additional substitution, but this would affect 1.10.0 as well. Included in this diff.

Steps I used to create the svn snapshot tarball:
$ mkdir xml-xalan
$ svn export -r 705082 http://svn.apache.org/repos/asf/xalan/c/trunk \
  xml-xalan/c
$ tar czf Xalan-C_r705082-src.tar.gz xml-xalan
$ rm -r xml-xalan
The tarball should be placed on the Gentoo mirrors.

Comparing the set of installed files to that from 1.10.0, ignoring documentation:
+/usr/include/xalanc/PlatformSupport/ProblemListenerBase.hpp
-/usr/include/xalanc/PlatformSupport/Resettable.hpp
-/usr/include/xalanc/XMLSupport/FormatterToDOM.hpp
-/usr/include/xalanc/XPath/XNull.hpp
-/usr/include/xalanc/XPath/XSpan.hpp
+/usr/include/xalanc/XSLT/XalanParamHolder.hpp

No soname change yet, but I guess I&apos;d wait for 1.11 for that change, even if that might risk something to break.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dev-zero@gentoo.org</who>
            <bug_when>2008-10-24 14:11:14 0000</bug_when>
            <thetext>Ok, thanks a lot for the analysis, Martin.
I&apos;ll see that I come up with a revised ebuild (it sucks the way it is now) and do the version bump on Monday (no internet at home).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2008-10-25 16:48:14 0000</bug_when>
            <thetext>(In reply to comment #16)
&gt; Ok, thanks a lot for the analysis, Martin.
&gt; I&apos;ll see that I come up with a revised ebuild (it sucks the way it is now) and
&gt; do the version bump on Monday (no internet at home).
&gt; 

Thanks Tiziano.  I&apos;ll make an EAPI=0 version of xerces-c and try to deal with the other fallout.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2008-11-11 23:54:25 0000</bug_when>
            <thetext>*** Bug 246386 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2008-11-23 22:26:16 0000</bug_when>
            <thetext>Archs, please test and mark xalan-c-1.11.0_pre705082 stable.  This is a short testing cycle since there is a security bug that depends on this going stable so we don&apos;t break stable.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fmccor@gentoo.org</who>
            <bug_when>2008-11-23 23:56:37 0000</bug_when>
            <thetext>Sparc stable.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2008-12-17 00:17:30 0000</bug_when>
            <thetext>amd64 and x86 marked this stable, so resolving.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168960</attachid>
            <date>2008-10-18 17:23 0000</date>
            <desc>Backported r696900 to fix MsgCreator</desc>
            <filename>bug242330a.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">QmFja3BvcnQgb2YgcjY5NjkwMCBmcm9tIHRoZSB4YWxhbiBTVk4gcmVwb3NpdG9yeQp0byB0aGUg
eGFsYW4tYy0xLjEwLjAgc291cmNlIHRyZWUuCgpSZWZlcmVuY2VzOgpodHRwOi8vc3ZuLmFwYWNo
ZS5vcmcvdmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTY5NjkwMApodHRwczovL2J1Z3MuZ2VudG9v
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQyMjE4CgoyMDA4LTEwLTE4IE1hcnRpbiB2b24gR2FnZXJu
CgpkaWZmIC1wdXIgLS1leGNsdWRlPScqficgYy5vcmlnL3NyYy94YWxhbmMvVXRpbHMvTXNnQ3Jl
YXRvci9JQ1VSZXNIYW5kbGVyLmNwcCBjL3NyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9JQ1VS
ZXNIYW5kbGVyLmNwcAotLS0gYy5vcmlnL3NyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9JQ1VS
ZXNIYW5kbGVyLmNwcAkyMDA4LTEwLTE4IDE5OjA5OjIyLjAwMDAwMDAwMCArMDIwMAorKysgYy9z
cmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvSUNVUmVzSGFuZGxlci5jcHAJMjAwOC0xMC0xOCAx
OToxMzoyMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHZvaWQgSUNVUmVz
SGFuZGxlcjo6c3RhcnREb2N1bWVudCgpCiAKIH0KIAotdm9pZCBJQ1VSZXNIYW5kbGVyOjplbmRF
bGVtZW50KGNvbnN0IFhNTENoKiBjb25zdCAsCi0JCQkJCWNvbnN0IFhNTENoKiBjb25zdCBsb2Nh
bG5hbWUsCi0JCQkJCWNvbnN0IFhNTENoKiBjb25zdCApCit2b2lkIElDVVJlc0hhbmRsZXI6OmVu
ZEVsZW1lbnQoY29uc3QgWE1MQ2gqIGNvbnN0IC8qIHVyaSAqLywKKwkJCQkJY29uc3QgWE1MQ2gq
IGNvbnN0IC8qIGxvY2FsbmFtZSAqLywKKwkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0IHFuYW1lKQog
ewogCWlmICggbV9zdGFydENvbGxlY3RpbmdDaGFyYWN0ZXJzID09IGZhbHNlKQogCQlyZXR1cm47
CiAKIAotICAgIGlmKCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcobG9jYWxuYW1lLHNfdGFyZ2V0
WE1MQ2gpKQorICAgIGlmKCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5hbWUsc190YXJnZXRY
TUxDaCkpCiAJewogCQltX3N0YXJ0Q29sbGVjdGluZ0NoYXJhY3RlcnMgPSBmYWxzZTsKIApAQCAt
MTIyLDEzICsxMjIsMTMgQEAgdm9pZCBJQ1VSZXNIYW5kbGVyOjpzdGFydEVsZW1lbnQoY29uc3Qg
IAogCQkJCQkJCQljb25zdCAgIEF0dHJpYnV0ZXMmCQlhdHRyaWJ1dGVzKQogewogCQotCWlmKCFY
TUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcobG9jYWxuYW1lLHNfdHJhbnNVbml0WE1MQ2gpKQorCWlm
KCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5hbWUsc190cmFuc1VuaXRYTUxDaCkpCiAJewog
CQkvLyB0aGlzIGlzIGFuIGVsZW1lbnRlLCBTQVgySGFuZGxlciBjbGFzcyBpcyByZXNwb25zaWJs
ZSB0byBoYW5kbGU6CiAJCS8vIGNyZWF0aW5nIEluZGV4IGZpbGUsIGNvbW1vbSBmb3IgYWxsIGxv
Y2FsaXphdGlvbiBzdHlsZXMKIAkJU0FYMkhhbmRsZXI6OnN0YXJ0RWxlbWVudCh1cmksIGxvY2Fs
bmFtZSwgcW5hbWUsIGF0dHJpYnV0ZXMpOwogCX0KLQllbHNlIGlmKCFYTUxTdHJpbmc6OmNvbXBh
cmVTdHJpbmcobG9jYWxuYW1lLHNfdGFyZ2V0WE1MQ2gpKQorCWVsc2UgaWYoIVhNTFN0cmluZzo6
Y29tcGFyZVN0cmluZyhxbmFtZSxzX3RhcmdldFhNTENoKSkKIAl7CiAJCWlmICggbV9sb2NhbGUg
IT0gMCApCiAJCXsKZGlmZiAtcHVyIC0tZXhjbHVkZT0nKn4nIGMub3JpZy9zcmMveGFsYW5jL1V0
aWxzL01zZ0NyZWF0b3IvSW5NZW1IYW5kbGVyLmNwcCBjL3NyYy94YWxhbmMvVXRpbHMvTXNnQ3Jl
YXRvci9Jbk1lbUhhbmRsZXIuY3BwCi0tLSBjLm9yaWcvc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVh
dG9yL0luTWVtSGFuZGxlci5jcHAJMjAwOC0xMC0xOCAxOTowOToyMi4wMDAwMDAwMDAgKzAyMDAK
KysrIGMvc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL0luTWVtSGFuZGxlci5jcHAJMjAwOC0x
MC0xOCAxOToxMToxMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIElu
TWVtSGFuZGxlcjo6c3RhcnREb2N1bWVudCgpCiAKIH0KIAotdm9pZCBJbk1lbUhhbmRsZXI6OmVu
ZEVsZW1lbnQoY29uc3QgWE1MQ2gqIGNvbnN0ICwKLQkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0IGxv
Y2FsbmFtZSwKLQkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0ICkKK3ZvaWQgSW5NZW1IYW5kbGVyOjpl
bmRFbGVtZW50KGNvbnN0IFhNTENoKiBjb25zdCAvKiB1cmkgKi8sCisJCQkJCWNvbnN0IFhNTENo
KiBjb25zdCAvKiBsb2NhbG5hbWUgKi8sCisJCQkJCWNvbnN0IFhNTENoKiBjb25zdCBxbmFtZSkK
IHsKIAlpZiAoIG1fc3RhcnRDb2xsZWN0aW5nQ2hhcmFjdGVycyA9PSBmYWxzZSkKIAkJcmV0dXJu
OwogCiAKLQlpZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKGxvY2FsbmFtZSxzX3RhcmdldFhN
TENoKSkKKwlpZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKHFuYW1lLHNfdGFyZ2V0WE1MQ2gp
KQogCXsKIAkJbV9zdGFydENvbGxlY3RpbmdDaGFyYWN0ZXJzID0gZmFsc2U7CiAKQEAgLTEyMSwx
MyArMTIxLDEzIEBAIHZvaWQgSW5NZW1IYW5kbGVyOjpzdGFydEVsZW1lbnQoY29uc3QgICAKIAkJ
CQkJCQkJY29uc3QgICBBdHRyaWJ1dGVzJgkJYXR0cmlidXRlcykKIHsKIAkKLQlpZighWE1MU3Ry
aW5nOjpjb21wYXJlU3RyaW5nKGxvY2FsbmFtZSxzX3RyYW5zVW5pdFhNTENoKSkKKwlpZighWE1M
U3RyaW5nOjpjb21wYXJlU3RyaW5nKHFuYW1lLHNfdHJhbnNVbml0WE1MQ2gpKQogCXsKIAkJLy8g
dGhpcyBpcyBhbiBlbGVtZW50ZSwgU0FYMkhhbmRsZXIgY2xhc3MgaXMgcmVzcG9uc2libGUgdG8g
aGFuZGxlOgogCQkvLyBjcmVhdGluZyBJbmRleCBmaWxlLCBjb21tb20gZm9yIGFsbCBsb2NhbGl6
YXRpb24gc3R5bGVzCiAJCVNBWDJIYW5kbGVyOjpzdGFydEVsZW1lbnQodXJpLCBsb2NhbG5hbWUs
IHFuYW1lLCBhdHRyaWJ1dGVzKTsKIAl9Ci0JZWxzZSBpZighWE1MU3RyaW5nOjpjb21wYXJlU3Ry
aW5nKGxvY2FsbmFtZSxzX3RhcmdldFhNTENoKSkKKwllbHNlIGlmKCFYTUxTdHJpbmc6OmNvbXBh
cmVTdHJpbmcocW5hbWUsc190YXJnZXRYTUxDaCkpCiAJewogCiAJCQpkaWZmIC1wdXIgLS1leGNs
dWRlPScqficgYy5vcmlnL3NyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9TQVgySGFuZGxlci5j
cHAgYy9zcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvU0FYMkhhbmRsZXIuY3BwCi0tLSBjLm9y
aWcvc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL1NBWDJIYW5kbGVyLmNwcAkyMDA4LTEwLTE4
IDE5OjA5OjIyLjAwMDAwMDAwMCArMDIwMAorKysgYy9zcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0
b3IvU0FYMkhhbmRsZXIuY3BwCTIwMDgtMTAtMTggMTk6MTI6MTkuMDAwMDAwMDAwICswMjAwCkBA
IC05MiwxMiArOTIsMTIgQEAgdm9pZCBTQVgySGFuZGxlcjo6cHJpbnRUb0luZGV4RmlsZSggY29u
cwogCiAKIAotdm9pZCBTQVgySGFuZGxlcjo6c3RhcnRFbGVtZW50KGNvbnN0ICAgWE1MQ2gqIGNv
bnN0ICAgICwKLQkJCQkJCQkJCWNvbnN0ICAgWE1MQ2gqIGNvbnN0ICAgIGxvY2FsbmFtZSwKLQkJ
CQkJCQkJCWNvbnN0ICAgWE1MQ2gqIGNvbnN0ICAgICwKK3ZvaWQgU0FYMkhhbmRsZXI6OnN0YXJ0
RWxlbWVudChjb25zdCAgIFhNTENoKiBjb25zdCAgICAvKiB1cmkgKi8sCisJCQkJCQkJCQljb25z
dCAgIFhNTENoKiBjb25zdCAgICAvKiBsb2NhbG5hbWUgKi8sCisJCQkJCQkJCQljb25zdCAgIFhN
TENoKiBjb25zdCAgICBxbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0ICAgQXR0cmlidXRlcyYJCWF0dHJpYnV0ZXMpCiB7Ci0JaWYoIVhNTFN0cmluZzo6Y29t
cGFyZVN0cmluZyhsb2NhbG5hbWUsc190cmFuc1VuaXRYTUxDaCkpCisJaWYoIVhNTFN0cmluZzo6
Y29tcGFyZVN0cmluZyhxbmFtZSxzX3RyYW5zVW5pdFhNTENoKSkKIAl7CiAJCXVuc2lnbmVkIGlu
dCBsZW4gPSBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOwogCQkK
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169168</attachid>
            <date>2008-10-20 10:03 0000</date>
            <desc>Backported 7 changesets to make things compile</desc>
            <filename>bug242330b.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">TWFrZSBYYWxhbi1DKysgMS4xMC4wIGNvbXBpbGUgd2l0aCBYZXJjZXMtQysrIDMuCgpUaGlzIHBh
dGNoIGlzIGEgYmFja3BvcnQgb2YgdGhlIGZvbGxvd2luZyBjaGFuZ2VzZXRzOgpodHRwOi8vc3Zu
LmFwYWNoZS5vcmcvdmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTQ4MjQyNQpodHRwOi8vc3ZuLmFw
YWNoZS5vcmcvdmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTU3Mjc1OQpodHRwOi8vc3ZuLmFwYWNo
ZS5vcmcvdmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTY1MTY3MQpodHRwOi8vc3ZuLmFwYWNoZS5v
cmcvdmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTY3MTY3MQpodHRwOi8vc3ZuLmFwYWNoZS5vcmcv
dmlld3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTY3MjgyNApodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmll
d3ZjP3ZpZXc9cmV2JnJldmlzaW9uPTY3Mjk2MwpodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3Zj
P3ZpZXc9cmV2JnJldmlzaW9uPTY5NjkwMAoKVGhleSB3ZXJlIGFwcGxpZWQgYWdhaW5zdCB0aGUg
Zm9sbG93aW5nIHRhZzoKd2ViOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL3hhbGFuL2Mv
dGFncy9YYWxhbi1DXzFfMTBfMC8Kc3ZuOiBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNm
L3hhbGFuL2MvdGFncy9YYWxhbi1DXzFfMTBfMC8KCkNvbmZsaWN0cyB3ZXJlIHJlc29sdmVkIG1h
bnVhbGx5LCB0cnlpbmcgdG8ga2VlcCB0aGUgaW50ZW5kZWQgbWVhbmluZwpvZiB0aGUgY2hhbmdl
LiBObyBndWFyYW50ZWVzLCB0aG91Z2guCgpTZWUgYWxzbzoKaHR0cHM6Ly9idWdzLmdlbnRvby5v
cmcvc2hvd19idWcuY2dpP2lkPTI0MjIxOApodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS50
ZXh0LnhtbC54YWxhbi5jKysudXNlci8zNjAwL2ZvY3VzPTM2MDEKaHR0cHM6Ly9pc3N1ZXMuYXBh
Y2hlLm9yZy9qaXJhL2Jyb3dzZS9YQUxBTkMtNjIyCmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcv
amlyYS9icm93c2UvWEFMQU5DLTY1MgoKMjAwOC0xMC0yMCBNYXJ0aW4gdm9uIEdhZ2VybgoKSW5k
ZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L0F0dHJpYnV0ZXNJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9BdHRyaWJ1dGVzSW1wbC5jcHAJKHJl
dmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L0F0dHJpYnV0ZXNJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBACiAJCS8vIHVudGlsIHdl
J3JlIGRvbmUuCiAJCUF0dHJpYnV0ZXNWZWN0b3JUeXBlCQl0ZW1wVmVjdG9yKGdldE1lbW9yeU1h
bmFnZXIoKSk7CiAKLQkJY29uc3QgdW5zaWduZWQgaW50CXRoZUxlbmd0aCA9IHRoZVJIUy5nZXRM
ZW5ndGgoKTsKKwkJY29uc3QgWGFsYW5TaXplX3QJdGhlTGVuZ3RoID0gdGhlUkhTLmdldExlbmd0
aCgpOwogCiAJCWlmICh0aGVMZW5ndGggPiAwKQogCQl7CkBAIC0xNjcsMTIgKzE2NywxMiBAQAog
CQkvLyBzYWZlIGFuZCBkb24ndCBuZWVkIGFueSB0cnkgYmxvY2tzLgogCQlBdHRyaWJ1dGVzSW1w
bAl0aGVUZW1wTGlzdChnZXRNZW1vcnlNYW5hZ2VyKCkpOwogCi0JCWNvbnN0IHVuc2lnbmVkIGlu
dAl0aGVMZW5ndGggPSB0aGVSSFMuZ2V0TGVuZ3RoKCk7CisJCWNvbnN0IFhhbGFuU2l6ZV90CXRo
ZUxlbmd0aCA9IHRoZVJIUy5nZXRMZW5ndGgoKTsKIAogCQl0aGVUZW1wTGlzdC5yZXNlcnZlKHRo
ZUxlbmd0aCk7CiAKIAkJLy8gQWRkIGVhY2ggYXR0cmlidXRlLgotCQlmb3IodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgdGhlTGVuZ3RoOyBpKyspCisJCWZvcihYYWxhblNpemVfdCBpID0gMDsgaSA8
IHRoZUxlbmd0aDsgaSsrKQogCQl7CiAJCQl0aGVUZW1wTGlzdC5hZGRBdHRyaWJ1dGUoCiAJCQkJ
CXRoZVJIUy5nZXRVUkkoaSksCkBAIC0xOTIsNyArMTkyLDcgQEAKIAogCiAKLXVuc2lnbmVkIGlu
dAorWGFsYW5TaXplX3QKIEF0dHJpYnV0ZXNJbXBsOjpnZXRMZW5ndGgoKSBjb25zdAogewogCXJl
dHVybiB1bnNpZ25lZChtX2F0dHJpYnV0ZXNWZWN0b3Iuc2l6ZSgpKTsKQEAgLTIwMSw3ICsyMDEs
NyBAQAogCiAKIGNvbnN0IFhNTENoKgotQXR0cmlidXRlc0ltcGw6OmdldFVSSShjb25zdCB1bnNp
Z25lZCBpbnQgaW5kZXgpIGNvbnN0CitBdHRyaWJ1dGVzSW1wbDo6Z2V0VVJJKGNvbnN0IFhhbGFu
U2l6ZV90ICAgIGluZGV4KSBjb25zdAogewogCWFzc2VydChpbmRleCA8IGdldExlbmd0aCgpKTsK
IApAQCAtMjExLDcgKzIxMSw3IEBACiAKIAogY29uc3QgWE1MQ2gqCi1BdHRyaWJ1dGVzSW1wbDo6
Z2V0TG9jYWxOYW1lKGNvbnN0IHVuc2lnbmVkIGludCBpbmRleCkgY29uc3QKK0F0dHJpYnV0ZXNJ
bXBsOjpnZXRMb2NhbE5hbWUoY29uc3QgWGFsYW5TaXplX3QgIGluZGV4KSBjb25zdAogewogCWFz
c2VydChpbmRleCA8IGdldExlbmd0aCgpKTsKIApAQCAtMjIxLDcgKzIyMSw3IEBACiAKIAogY29u
c3QgWE1MQ2gqCi1BdHRyaWJ1dGVzSW1wbDo6Z2V0UU5hbWUoY29uc3QgdW5zaWduZWQgaW50CQlp
bmRleCkgY29uc3QKK0F0dHJpYnV0ZXNJbXBsOjpnZXRRTmFtZShjb25zdCBYYWxhblNpemVfdCAg
aW5kZXgpIGNvbnN0CiB7CiAJYXNzZXJ0KGluZGV4IDwgZ2V0TGVuZ3RoKCkpOwogCkBAIC0yMzEs
NyArMjMxLDcgQEAKIAogCiBjb25zdCBYTUxDaCoKLUF0dHJpYnV0ZXNJbXBsOjpnZXRUeXBlKGNv
bnN0IHVuc2lnbmVkIGludAlpbmRleCkgY29uc3QKK0F0dHJpYnV0ZXNJbXBsOjpnZXRUeXBlKGNv
bnN0IFhhbGFuU2l6ZV90ICAgaW5kZXgpIGNvbnN0CiB7CiAJYXNzZXJ0KGluZGV4IDwgZ2V0TGVu
Z3RoKCkpOwogCkBAIC0yNDEsNyArMjQxLDcgQEAKIAogCiBjb25zdCBYTUxDaCoKLUF0dHJpYnV0
ZXNJbXBsOjpnZXRWYWx1ZShjb25zdCB1bnNpZ25lZCBpbnQJCWluZGV4KSBjb25zdAorQXR0cmli
dXRlc0ltcGw6OmdldFZhbHVlKGNvbnN0IFhhbGFuU2l6ZV90ICBpbmRleCkgY29uc3QKIHsKIAlh
c3NlcnQoaW5kZXggPCBnZXRMZW5ndGgoKSk7CiAKQEAgLTM4MCwxOCArMzgwLDQxIEBACiAKIAog
Citib29sCitBdHRyaWJ1dGVzSW1wbDo6Z2V0SW5kZXgoCisgICAgICAgICAgICBjb25zdCBYTUxD
aCogY29uc3QgIHVyaSwKKyAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgbG9jYWxQYXJ0
LAorICAgICAgICAgICAgWGFsYW5TaXplX3QmICAgICAgICBpbmRleCkgY29uc3QKK3sKKyAgICBj
b25zdCBpbnQgICB0ZW1wSW5kZXggPQorICAgICAgICBnZXRJbmRleCh1cmksIGxvY2FsUGFydCk7
CisKKyAgICBpZiAodGVtcEluZGV4ID09IC0xKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpbmRleCA9IHRlbXBJbmRleDsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKKworCiBpbnQKIEF0dHJpYnV0ZXNJbXBs
OjpnZXRJbmRleCgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAl1cmksCi0JCQljb25zdCBYTUxDaCog
Y29uc3QJbG9jYWxOYW1lKSBjb25zdAorCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWxvY2FsUGFydCkg
Y29uc3QKIHsKLQlhc3NlcnQodXJpICE9IDAgJiYgbG9jYWxOYW1lICE9IDApOworCWFzc2VydCh1
cmkgIT0gMCAmJiBsb2NhbFBhcnQgIT0gMCk7CiAKIAljb25zdCBBdHRyaWJ1dGVzVmVjdG9yVHlw
ZTo6Y29uc3RfaXRlcmF0b3IJaSA9CiAJCVhBTEFOX1NURF9RVUFMSUZJRVIgZmluZF9pZigKIAkJ
CW1fYXR0cmlidXRlc1ZlY3Rvci5iZWdpbigpLAogCQkJbV9hdHRyaWJ1dGVzVmVjdG9yLmVuZCgp
LAotCQkJVVJJQW5kTG9jYWxOYW1lQ29tcGFyZUZ1bmN0b3IodXJpLCBsb2NhbE5hbWUpKTsKKwkJ
CVVSSUFuZExvY2FsTmFtZUNvbXBhcmVGdW5jdG9yKHVyaSwgbG9jYWxQYXJ0KSk7CiAKIAlpZiAo
aSAhPSBtX2F0dHJpYnV0ZXNWZWN0b3IuZW5kKCkpCiAJewpAQCAtNDA3LDYgKzQzMCwyOCBAQAog
CiAKIAorYm9vbAorQXR0cmlidXRlc0ltcGw6OmdldEluZGV4KAorICAgICAgICAgICAgY29uc3Qg
WE1MQ2gqIGNvbnN0ICBxTmFtZSwKKyAgICAgICAgICAgIFhhbGFuU2l6ZV90JiAgICAgICAgaW5k
ZXgpIGNvbnN0Cit7CisgICAgY29uc3QgaW50ICAgdGVtcEluZGV4ID0KKyAgICAgICAgZ2V0SW5k
ZXgocU5hbWUpOworCisgICAgaWYgKHRlbXBJbmRleCA9PSAtMSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXggPSB0ZW1w
SW5kZXg7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCisKKwogaW50CiBBdHRy
aWJ1dGVzSW1wbDo6Z2V0SW5kZXgoY29uc3QgWE1MQ2gqIGNvbnN0CQlxbmFtZSkgY29uc3QKIHsK
SW5kZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L05hbWVkTm9kZU1hcEF0dHJpYnV0ZUxp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L05hbWVkTm9k
ZU1hcEF0dHJpYnV0ZUxpc3QuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1Bs
YXRmb3JtU3VwcG9ydC9OYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsMTMgKzQzLDE1IEBACiAKIAogCi1OYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0OjpO
YW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0KGNvbnN0IFhhbGFuTmFtZWROb2RlTWFwJgl0aGVNYXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
bW9yeU1hbmFnZXJUeXBlJiAgICAgICAgIHRoZU1hbmFnZXIpIDoKK05hbWVkTm9kZU1hcEF0dHJp
YnV0ZUxpc3Q6Ok5hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3QoCisgICAgICAgICAgICBjb25zdCBY
YWxhbk5hbWVkTm9kZU1hcCYgICAgdGhlTWFwLAorICAgICAgICAgICAgTWVtb3J5TWFuYWdlclR5
cGUmICAgICAgICAgIHRoZU1hbmFnZXIpIDoKIAlQYXJlbnRUeXBlKCksCiAJbV9ub2RlTWFwKHRo
ZU1hcCksCiAJbV9sYXN0SW5kZXgodGhlTWFwLmdldExlbmd0aCgpIC0gMSksCiAgICAgbV9tZW1v
cnlNYW5hZ2VyKHRoZU1hbmFnZXIpCiB7CisgICAgYXNzZXJ0KHRoZU1hcC5nZXRMZW5ndGgoKSAh
PSAwKTsKIH0KIAogCkBAIC02MCw3ICs2Miw3IEBACiAKIAogCi11bnNpZ25lZCBpbnQKK1hhbGFu
U2l6ZV90CiBOYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0OjpnZXRMZW5ndGgoKSBjb25zdAogewog
CXJldHVybiBtX25vZGVNYXAuZ2V0TGVuZ3RoKCk7CkBAIC02OSw3ICs3MSw3IEBACiAKIAogY29u
c3QgWE1MQ2gqCi1OYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0OjpnZXROYW1lKGNvbnN0IHVuc2ln
bmVkIGludCBpbmRleCkgY29uc3QKK05hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3Q6OmdldE5hbWUo
Y29uc3QgWGFsYW5TaXplX3QgICAgaW5kZXgpIGNvbnN0CiB7CiAJY29uc3QgWGFsYW5Ob2RlKiBj
b25zdAl0aGVBdHRyaWJ1dGUgPSBtX25vZGVNYXAuaXRlbShtX2xhc3RJbmRleCAtIGluZGV4KTsK
IAlhc3NlcnQodGhlQXR0cmlidXRlICE9IDApOwpAQCAtODAsNyArODIsNyBAQAogCiAKIGNvbnN0
IFhNTENoKgotTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VHlwZShjb25zdCB1bnNpZ25l
ZCBpbnQgLyogaW5kZXggKi8pIGNvbnN0CitOYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0OjpnZXRU
eXBlKGNvbnN0IFhhbGFuU2l6ZV90ICAgIC8qIGluZGV4ICovKSBjb25zdAogewogCWFzc2VydChs
ZW5ndGgoc190eXBlU3RyaW5nKSA+IDApOwogCkBAIC05MCw5ICs5MiwxMSBAQAogCiAKIGNvbnN0
IFhNTENoKgotTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VmFsdWUoY29uc3QgdW5zaWdu
ZWQgaW50IGluZGV4KSBjb25zdAorTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VmFsdWUo
Y29uc3QgWGFsYW5TaXplX3QgICBpbmRleCkgY29uc3QKIHsKLQljb25zdCBYYWxhbk5vZGUqIGNv
bnN0CXRoZUF0dHJpYnV0ZSA9IG1fbm9kZU1hcC5pdGVtKG1fbGFzdEluZGV4IC0gaW5kZXgpOwor
ICAgIGFzc2VydChpbmRleCA8PSBtX2xhc3RJbmRleCk7CisKKyAgICBjb25zdCBYYWxhbk5vZGUq
IGNvbnN0CXRoZUF0dHJpYnV0ZSA9IG1fbm9kZU1hcC5pdGVtKG1fbGFzdEluZGV4IC0gaW5kZXgp
OwogCWFzc2VydCh0aGVBdHRyaWJ1dGUgIT0gMCk7CiAKIAlyZXR1cm4gY193c3RyKHRoZUF0dHJp
YnV0ZS0+Z2V0Tm9kZVZhbHVlKCkpOwpAQCAtMTExLDcgKzExNSw3IEBACiAKIAogY29uc3QgWE1M
Q2gqCi1OYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0OjpnZXRWYWx1ZShjb25zdCBYTUxDaCogY29u
c3QgICAgICBuYW1lKSBjb25zdAorTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VmFsdWUo
Y29uc3QgWE1MQ2gqIGNvbnN0ICBuYW1lKSBjb25zdAogewogCWNvbnN0IFhhbGFuTm9kZSoJdGhl
Tm9kZSA9IG1fbm9kZU1hcC5nZXROYW1lZEl0ZW0oWGFsYW5ET01TdHJpbmcobmFtZSwgbV9tZW1v
cnlNYW5hZ2VyKSk7CiAKSW5kZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1N0ZEJpbklu
cHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9T
dGRCaW5JbnB1dFN0cmVhbS5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvUGxh
dGZvcm1TdXBwb3J0L1N0ZEJpbklucHV0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQAogCiAKIAotdW5zaWduZWQgaW50CitYYWxhbkZpbGVQb3MKIFN0ZEJpbklucHV0
U3RyZWFtOjpjdXJQb3MoKSBjb25zdAogewogCXJldHVybiBtX3N0cmVhbS50ZWxsZygpOwpAQCAt
NTEsMTAgKzUxLDEwIEBACiAKIAogCi11bnNpZ25lZCBpbnQKK1hhbGFuU2l6ZV90CiBTdGRCaW5J
bnB1dFN0cmVhbTo6cmVhZEJ5dGVzKAogCQkJWE1MQnl0ZSogY29uc3QgICAgICB0b0ZpbGwsCi0J
CQljb25zdCB1bnNpZ25lZCBpbnQJbWF4VG9SZWFkKQorCQkJY29uc3QgWGFsYW5TaXplX3QJbWF4
VG9SZWFkKQogewogCWFzc2VydChzaXplb2YoWE1MQnl0ZSkgPT0gc2l6ZW9mKGNoYXIpKTsKIApA
QCAtODAsNCArODAsMTIgQEAKIAogCiAKK2NvbnN0IFhhbGFuRE9NQ2hhcioKK1N0ZEJpbklucHV0
U3RyZWFtOjpnZXRDb250ZW50VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKwor
CiBYQUxBTl9DUFBfTkFNRVNQQUNFX0VORApJbmRleDogc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBv
cnQvQXR0cmlidXRlTGlzdEltcGwuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvUGxhdGZv
cm1TdXBwb3J0L0F0dHJpYnV0ZUxpc3RJbXBsLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3Jj
L3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvQXR0cmlidXRlTGlzdEltcGwuaHBwCSh3b3JraW5nIGNv
cHkpCkBAIC03MywxNyArNzMsMTcgQEAKICAgICB9CiAKIAkvLyBUaGVzZSBhcmUgaW5oZXJpdGVk
IGZyb20gQXR0cmlidXRlTGlzdAotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50CisgICAgdmlydHVh
bCBYYWxhblNpemVfdAogCWdldExlbmd0aCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBY
TUxDaCoKLQlnZXROYW1lKGNvbnN0IHVuc2lnbmVkIGludCBpbmRleCkgY29uc3Q7CisJZ2V0TmFt
ZShjb25zdCBYYWxhblNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhN
TENoKgotCWdldFR5cGUoY29uc3QgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKwlnZXRUeXBl
KGNvbnN0IFhhbGFuU2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgWE1M
Q2gqCi0JZ2V0VmFsdWUoY29uc3QgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKwlnZXRWYWx1
ZShjb25zdCBYYWxhblNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhN
TENoKgogCWdldFR5cGUoY29uc3QgWE1MQ2gqIGNvbnN0IG5hbWUpIGNvbnN0OwpAQCAtMTQxLDcg
KzE0MSw3IEBACiAJICogQHBhcmFtIHRoZUNvdW50IFRoZSBudW1iZXIgdG8gcmVzZXJ2ZQogCSAq
LwogCXZvaWQKLQlyZXNlcnZlKHVuc2lnbmVkIGludAl0aGVDb3VudCkKKwlyZXNlcnZlKFhhbGFu
U2l6ZV90ICAgICB0aGVDb3VudCkKIAl7CiAJCW1fQXR0cmlidXRlVmVjdG9yLnJlc2VydmUodGhl
Q291bnQpOwogCX0KSW5kZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1hTTEV4Y2VwdGlv
bi5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvWFNMRXhjZXB0
aW9uLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQv
WFNMRXhjZXB0aW9uLmhwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNiBAQAogewogcHVi
bGljOgogCi0JdHlwZWRlZiBYYWxhbkxvY2F0b3I6OnNpemVfdHlwZQkJCQkJc2l6ZV90eXBlOwot
CiAJLyoqCiAJICogQ29uc3RydWN0b3IKIAkgKiAKQEAgLTExOSw3ICsxMTcsNyBAQAogCSAqIAog
CSAqIEByZXR1cm4gdGhlIGxpbmUgbnVtYmVyCiAJICovCi0Jc2l6ZV90eXBlCisJWGFsYW5GaWxl
TG9jCiAJZ2V0TGluZU51bWJlcigpIGNvbnN0CiAJewogCQlyZXR1cm4gbV9saW5lTnVtYmVyOwpA
QCAtMTMwLDEzICsxMjgsMTIgQEAKIAkgKiAKIAkgKiBAcmV0dXJuIHRoZSBjb2x1bW4gbnVtYmVy
CiAJICovCi0Jc2l6ZV90eXBlCisJWGFsYW5GaWxlTG9jCiAJZ2V0Q29sdW1uTnVtYmVyKCkgY29u
c3QKIAl7CiAJCXJldHVybiBtX2NvbHVtbk51bWJlcjsKIAl9CiAKLQogICAgIE1lbW9yeU1hbmFn
ZXJUeXBlJiAKICAgICBnZXRNZW1vcnlNYW5hZ2VyKCljb25zdAogICAgIHsKSW5kZXg6IHNyYy94
YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1hhbGFuTG9jYXRvci5ocHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Jj
L3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvWGFsYW5Mb2NhdG9yLmhwcAkocmV2aXNpb24gNzA2MTI5
KQorKysgc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvWGFsYW5Mb2NhdG9yLmhwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQAogCiAgICAgdHlwZWRlZiBMb2NhdG9yICAgICBQYXJl
bnRUeXBlOwogCi0gICAgdHlwZWRlZiBYTUxTU2l6ZV90ICBzaXplX3R5cGU7Ci0KICAgICBYYWxh
bkxvY2F0b3IoKSB7fQogCiAgICAgdmlydHVhbApAQCAtNTgsMjggKzU2LDI4IEBACiAgICAgdmly
dHVhbCBjb25zdCBYTUxDaCoKICAgICBnZXRTeXN0ZW1JZCgpIGNvbnN0ID0gMDsKIAotICAgIHZp
cnR1YWwgc2l6ZV90eXBlCisgICAgdmlydHVhbCBYYWxhbkZpbGVMb2MKICAgICBnZXRMaW5lTnVt
YmVyKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBzaXplX3R5cGUKKyAgICB2aXJ0dWFsIFhh
bGFuRmlsZUxvYwogICAgIGdldENvbHVtbk51bWJlcigpIGNvbnN0ID0gMDsKIAotICAgIHN0YXRp
YyBzaXplX3R5cGUKKyAgICBzdGF0aWMgWGFsYW5GaWxlTG9jCiAgICAgZ2V0TGluZU51bWJlcihj
b25zdCBQYXJlbnRUeXBlKiAgICAgdGhlTG9jYXRvcikKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGVMb2NhdG9yID09IDAgPyBzaXplX3R5cGUoLTEpIDogdGhlTG9jYXRvci0+Z2V0TGluZU51bWJl
cigpOworICAgICAgICByZXR1cm4gdGhlTG9jYXRvciA9PSAwID8gZ2V0VW5rbm93blZhbHVlKCkg
OiB0aGVMb2NhdG9yLT5nZXRMaW5lTnVtYmVyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHNpemVf
dHlwZQorICAgIHN0YXRpYyBYYWxhbkZpbGVMb2MKICAgICBnZXRDb2x1bW5OdW1iZXIoY29uc3Qg
UGFyZW50VHlwZSogICB0aGVMb2NhdG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoZUxvY2F0
b3IgPT0gMCA/IHNpemVfdHlwZSgtMSkgOiB0aGVMb2NhdG9yLT5nZXRDb2x1bW5OdW1iZXIoKTsK
KyAgICAgICAgcmV0dXJuIHRoZUxvY2F0b3IgPT0gMCA/IGdldFVua25vd25WYWx1ZSgpIDogdGhl
TG9jYXRvci0+Z2V0Q29sdW1uTnVtYmVyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHNpemVfdHlw
ZQorICAgIHN0YXRpYyBYYWxhbkZpbGVMb2MKICAgICBnZXRVbmtub3duVmFsdWUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHNpemVfdHlwZSgtMSk7CisgICAgICAgIHJldHVybiBYYWxhbkZpbGVM
b2MoLTEpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBw
b3J0L1hhbGFuTWVtb3J5TWFuYWdlckRlZmF1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxh
bmMvUGxhdGZvcm1TdXBwb3J0L1hhbGFuTWVtb3J5TWFuYWdlckRlZmF1bHQuY3BwCShyZXZpc2lv
biA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhbk1lbW9yeU1hbmFn
ZXJEZWZhdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNCArNzQsMTIgQEAKIAogCiAKK01l
bW9yeU1hbmFnZXIqCitYYWxhbk1lbW9yeU1hbmFnZXJEZWZhdWx0OjpnZXRFeGNlcHRpb25NZW1v
cnlNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworCisKIFhBTEFOX0NQUF9OQU1F
U1BBQ0VfRU5ECkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9Gb3JtYXR0ZXJMaXN0
ZW5lci5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvRm9ybWF0
dGVyTGlzdGVuZXIuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1BsYXRmb3Jt
U3VwcG9ydC9Gb3JtYXR0ZXJMaXN0ZW5lci5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAKIAl0eXBlZGVmIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBEb2N1bWVudEhh
bmRsZXIJUGFyZW50VHlwZTsKIAogCS8vIEEgaGFuZHkgdHlwZWRlZi4uLiAgTXVzdCBtYXRjaCBE
b2N1bWVudEhhbmRsZXIncyB0eXBlIGZvciBjaGFyYWN0ZXJzKCksIGV0Yy4uLgotCXR5cGVkZWYg
dW5zaWduZWQgaW50CXNpemVfdHlwZTsKKwl0eXBlZGVmIFhhbGFuU2l6ZV90ICAgICBzaXplX3R5
cGU7CiAKIAllbnVtIGVGb3JtYXQKIAl7CkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9y
dC9ET01TdHJpbmdIZWxwZXIuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvUGxhdGZvcm1T
dXBwb3J0L0RPTVN0cmluZ0hlbHBlci5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxh
bmMvUGxhdGZvcm1TdXBwb3J0L0RPTVN0cmluZ0hlbHBlci5ocHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwNSw3ICs3MDUsNyBAQAogewogcHVibGljOgogCi0gICAgdHlwZWRlZiB2b2lkIChGb3JtYXR0
ZXJMaXN0ZW5lcjo6Kk1lbWJlckZ1bmN0aW9uUHRyKShjb25zdCBYTUxDaCogY29uc3QsIGNvbnN0
IHVuc2lnbmVkIGludCk7CisgICAgdHlwZWRlZiB2b2lkIChGb3JtYXR0ZXJMaXN0ZW5lcjo6Kk1l
bWJlckZ1bmN0aW9uUHRyKShjb25zdCBYTUxDaCogY29uc3QsIGNvbnN0IEZvcm1hdHRlckxpc3Rl
bmVyOjpzaXplX3R5cGUpOwogCiAgICAgc3RhdGljIHZvaWQKICAgICBEb3VibGVUb0NoYXJhY3Rl
cnMoCkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9OYW1lZE5vZGVNYXBBdHRyaWJ1
dGVMaXN0LmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9OYW1l
ZE5vZGVNYXBBdHRyaWJ1dGVMaXN0LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFu
Yy9QbGF0Zm9ybVN1cHBvcnQvTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdC5ocHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDI0ICs0MywyNSBAQAogCXR5cGVkZWYgWEVSQ0VTX0NQUF9OQU1FU1BBQ0Vf
UVVBTElGSUVSIEF0dHJpYnV0ZUxpc3QJUGFyZW50VHlwZTsKIAogCWV4cGxpY2l0Ci0JTmFtZWRO
b2RlTWFwQXR0cmlidXRlTGlzdChjb25zdCBYYWxhbk5hbWVkTm9kZU1hcCYJdGhlTWFwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlNYW5hZ2VyVHlwZSYgdGhlTWFuYWdl
cik7CisJTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdCgKKyAgICAgICAgICAgICAgICBjb25zdCBY
YWxhbk5hbWVkTm9kZU1hcCYJdGhlTWFwLAorICAgICAgICAgICAgICAgIE1lbW9yeU1hbmFnZXJU
eXBlJiAgICAgICAgICB0aGVNYW5hZ2VyKTsKIAogCXZpcnR1YWwKIAl+TmFtZWROb2RlTWFwQXR0
cmlidXRlTGlzdCgpOwogCiAJLy8gVGhlc2UgYXJlIGluaGVyaXRlZCBmcm9tIEF0dHJpYnV0ZUxp
c3QKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludAorICAgIHZpcnR1YWwgWGFsYW5TaXplX3QKIAln
ZXRMZW5ndGgoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgWGFsYW5ET01DaGFyKgotCWdl
dE5hbWUoY29uc3QgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKwlnZXROYW1lKGNvbnN0IFhh
bGFuU2l6ZV90ICAgaW5kZXgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBYYWxhbkRPTUNo
YXIqCi0JZ2V0VHlwZShjb25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworCWdldFR5cGUo
Y29uc3QgWGFsYW5TaXplX3QgICBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhh
bGFuRE9NQ2hhcioKLQlnZXRWYWx1ZShjb25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0Owor
CWdldFZhbHVlKGNvbnN0IFhhbGFuU2l6ZV90ICBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGNvbnN0IFhhbGFuRE9NQ2hhcioKIAlnZXRUeXBlKGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3Qg
bmFtZSkgY29uc3Q7CkBAIC04MywxMSArODQsMTEgQEAKIAkvLyBEYXRhIG1lbWJlcnMuLi4KIAlj
b25zdCBYYWxhbk5hbWVkTm9kZU1hcCYJbV9ub2RlTWFwOwogCi0JY29uc3QgdW5zaWduZWQgaW50
CQkJbV9sYXN0SW5kZXg7CisJY29uc3QgWGFsYW5TaXplX3QJCQltX2xhc3RJbmRleDsKIAorICAg
IE1lbW9yeU1hbmFnZXJUeXBlJiAgICAgICAgICBtX21lbW9yeU1hbmFnZXI7CisKIAlzdGF0aWMg
Y29uc3QgWGFsYW5ET01DaGFyCXNfdHlwZVN0cmluZ1tdOwotCi0gICAgCU1lbW9yeU1hbmFnZXJU
eXBlJiAgbV9tZW1vcnlNYW5hZ2VyOwogfTsKIAogCkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3Jt
U3VwcG9ydC9BdHRyaWJ1dGVzSW1wbC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9QbGF0
Zm9ybVN1cHBvcnQvQXR0cmlidXRlc0ltcGwuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMv
eGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9BdHRyaWJ1dGVzSW1wbC5ocHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDMxICs2NSw0MiBAQAogCUF0dHJpYnV0ZXNJbXBsJgogCW9wZXJhdG9yPShjb25zdCBB
dHRyaWJ1dGVzVHlwZSYJCXRoZVJIUyk7CiAKLQkvLyBUaGVzZSBhcmUgaW5oZXJpdGVkIGZyb20g
QXR0cmlidXRlTGlzdAotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50CisJLy8gVGhlc2UgYXJlIGlu
aGVyaXRlZCBmcm9tIEF0dHJpYnV0ZXMKKyAgICB2aXJ0dWFsIFhhbGFuU2l6ZV90CiAJZ2V0TGVu
Z3RoKCkgY29uc3Q7CiAKIAl2aXJ0dWFsIGNvbnN0IFhNTENoKgotCWdldFVSSShjb25zdCB1bnNp
Z25lZCBpbnQgaW5kZXgpIGNvbnN0OworCWdldFVSSShjb25zdCBYYWxhblNpemVfdCAgICBpbmRl
eCkgY29uc3Q7CiAKIAl2aXJ0dWFsIGNvbnN0IFhNTENoKgotCWdldExvY2FsTmFtZShjb25zdCB1
bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworCWdldExvY2FsTmFtZShjb25zdCBYYWxhblNpemVf
dCAgaW5kZXgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBYTUxDaCoKLQlnZXRRTmFtZShj
b25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworCWdldFFOYW1lKGNvbnN0IFhhbGFuU2l6
ZV90ICBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhNTENoKgotCWdldFR5cGUo
Y29uc3QgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKwlnZXRUeXBlKGNvbnN0IFhhbGFuU2l6
ZV90ICAgaW5kZXgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBYTUxDaCoKLQlnZXRWYWx1
ZShjb25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0OworCWdldFZhbHVlKGNvbnN0IFhhbGFu
U2l6ZV90ICBpbmRleCkgY29uc3Q7CiAKLQl2aXJ0dWFsIGludAorICAgIHZpcnR1YWwgYm9vbAor
ICAgIGdldEluZGV4KAorICAgICAgICAgICAgY29uc3QgWE1MQ2gqIGNvbnN0ICB1cmksCisgICAg
ICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGxvY2FsUGFydCwKKyAgICAgICAgICAgIFhhbGFu
U2l6ZV90JiAgICAgICAgaW5kZXgpIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQKIAlnZXRJbmRl
eCgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAl1cmksCi0JCQljb25zdCBYTUxDaCogY29uc3QJbG9j
YWxOYW1lKSBjb25zdDsKKwkJCWNvbnN0IFhNTENoKiBjb25zdAlsb2NhbFBhcnQpIGNvbnN0Owog
Ci0JdmlydHVhbCBpbnQKKyAgICB2aXJ0dWFsIGJvb2wKKyAgICBnZXRJbmRleCgKKyAgICAgICAg
ICAgIGNvbnN0IFhNTENoKiBjb25zdCAgcU5hbWUsCisgICAgICAgICAgICBYYWxhblNpemVfdCYg
ICAgICAgIGluZGV4KSBjb25zdDsKKworICAgIHZpcnR1YWwgaW50CiAJZ2V0SW5kZXgoY29uc3Qg
WE1MQ2gqIGNvbnN0CQlxbmFtZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhNTENoKgpA
QCAtMTg2LDcgKzE5Nyw3IEBACiAJICogQHBhcmFtIHRoZUNvdW50IFRoZSBudW1iZXIgdG8gcmVz
ZXJ2ZQogCSAqLwogCXZvaWQKLQlyZXNlcnZlKHVuc2lnbmVkIGludAl0aGVDb3VudCkKKwlyZXNl
cnZlKFhhbGFuU2l6ZV90ICAgICB0aGVDb3VudCkKIAl7CiAJCW1fYXR0cmlidXRlc1ZlY3Rvci5y
ZXNlcnZlKHRoZUNvdW50KTsKIAl9CkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9B
dHRyaWJ1dGVMaXN0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9QbGF0Zm9ybVN1
cHBvcnQvQXR0cmlidXRlTGlzdEltcGwuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFs
YW5jL1BsYXRmb3JtU3VwcG9ydC9BdHRyaWJ1dGVMaXN0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMCw3ICsxMTAsNyBAQAogCQkvLyB1bnRpbCB3ZSdyZSBkb25lLgogCQlBdHRyaWJ1dGVW
ZWN0b3JUeXBlCQl0ZW1wVmVjdG9yKGdldE1lbW9yeU1hbmFnZXIoKSk7CiAKLQkJY29uc3QgdW5z
aWduZWQgaW50CXRoZUxlbmd0aCA9IHRoZVJIUy5nZXRMZW5ndGgoKTsKKwkJY29uc3QgWGFsYW5T
aXplX3QJdGhlTGVuZ3RoID0gdGhlUkhTLmdldExlbmd0aCgpOwogCiAJCWlmICh0aGVMZW5ndGgg
PiAwKQogCQl7CkBAIC0xNjYsMTIgKzE2NiwxMiBAQAogCQkvLyBzYWZlIGFuZCBkb24ndCBuZWVk
IGFueSB0cnkgYmxvY2tzLgogCQlBdHRyaWJ1dGVMaXN0SW1wbAl0aGVUZW1wTGlzdChnZXRNZW1v
cnlNYW5hZ2VyKCkpOwogCi0JCWNvbnN0IHVuc2lnbmVkIGludAl0aGVMZW5ndGggPSB0aGVSSFMu
Z2V0TGVuZ3RoKCk7CisJCWNvbnN0IFhhbGFuU2l6ZV90CXRoZUxlbmd0aCA9IHRoZVJIUy5nZXRM
ZW5ndGgoKTsKIAogCQl0aGVUZW1wTGlzdC5yZXNlcnZlKHRoZUxlbmd0aCk7CiAKIAkJLy8gQWRk
IGVhY2ggYXR0cmlidXRlLgotCQlmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdGhlTGVuZ3Ro
OyBpKyspCisJCWZvcihYYWxhblNpemVfdCBpID0gMDsgaSA8IHRoZUxlbmd0aDsgaSsrKQogCQl7
CiAJCQl0aGVUZW1wTGlzdC5hZGRBdHRyaWJ1dGUoCiAJCQkJCXRoZVJIUy5nZXROYW1lKGkpLApA
QCAtMTg5LDcgKzE4OSw3IEBACiAKIAogCi11bnNpZ25lZCBpbnQKK1hhbGFuU2l6ZV90CiBBdHRy
aWJ1dGVMaXN0SW1wbDo6Z2V0TGVuZ3RoKCkgY29uc3QKIHsKIAkvLyBNYWtlIHN1cmUgdGhlIG1p
c21hdGNoIGJldHdlZW4gWGVyY2VzIGFuZCB2ZWN0b3I8PiBkb2Vzbid0IGNhdXNlIGEgcHJvYmxl
bS4uLgpAQCAtMjAxLDcgKzIwMSw3IEBACiAKIAogY29uc3QgWE1MQ2gqCi1BdHRyaWJ1dGVMaXN0
SW1wbDo6Z2V0TmFtZShjb25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0CitBdHRyaWJ1dGVM
aXN0SW1wbDo6Z2V0TmFtZShjb25zdCBYYWxhblNpemVfdCAgICBpbmRleCkgY29uc3QKIHsKIAlh
c3NlcnQoaW5kZXggPCBnZXRMZW5ndGgoKSk7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQAogCiAKIGNv
bnN0IFhNTENoKgotQXR0cmlidXRlTGlzdEltcGw6OmdldFR5cGUoY29uc3QgdW5zaWduZWQgaW50
IGluZGV4KSBjb25zdAorQXR0cmlidXRlTGlzdEltcGw6OmdldFR5cGUoY29uc3QgWGFsYW5TaXpl
X3QgICAgaW5kZXgpIGNvbnN0CiB7CiAJYXNzZXJ0KGluZGV4IDwgZ2V0TGVuZ3RoKCkpOwogCkBA
IC0yMjEsNyArMjIxLDcgQEAKIAogCiBjb25zdCBYTUxDaCoKLUF0dHJpYnV0ZUxpc3RJbXBsOjpn
ZXRWYWx1ZShjb25zdCB1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0CitBdHRyaWJ1dGVMaXN0SW1w
bDo6Z2V0VmFsdWUoY29uc3QgWGFsYW5TaXplX3QgICBpbmRleCkgY29uc3QKIHsKIAlhc3NlcnQo
aW5kZXggPCBnZXRMZW5ndGgoKSk7CiAKSW5kZXg6IHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0
L1N0ZEJpbklucHV0U3RyZWFtLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1BsYXRmb3Jt
U3VwcG9ydC9TdGRCaW5JbnB1dFN0cmVhbS5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94
YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1N0ZEJpbklucHV0U3RyZWFtLmhwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsMTQgKzU4LDE3IEBACiAJdmlydHVhbAogCX5TdGRCaW5JbnB1dFN0cmVhbSgpOwog
Ci0JdmlydHVhbCB1bnNpZ25lZCBpbnQKKwl2aXJ0dWFsIFhhbGFuRmlsZVBvcwogCWN1clBvcygp
IGNvbnN0OwogCi0JdmlydHVhbCB1bnNpZ25lZCBpbnQKKwl2aXJ0dWFsIFhhbGFuU2l6ZV90CiAJ
cmVhZEJ5dGVzKAogCQkJWE1MQnl0ZSogY29uc3QgICAgICB0b0ZpbGwsCi0JCQljb25zdCB1bnNp
Z25lZCBpbnQJbWF4VG9SZWFkKTsKKwkJCWNvbnN0IFhhbGFuU2l6ZV90ICAgbWF4VG9SZWFkKTsK
IAorICAgIHZpcnR1YWwgY29uc3QgWGFsYW5ET01DaGFyKgorICAgIGdldENvbnRlbnRUeXBlKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAKIAkvLyBVbmltcGxlbWVudGVkLi4uCkluZGV4OiBzcmMveGFs
YW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhbk1lbW9yeU1hbmFnZXJEZWZhdWx0LmhwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhbk1lbW9yeU1hbmFnZXJEZWZh
dWx0LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9QbGF0Zm9ybVN1cHBvcnQv
WGFsYW5NZW1vcnlNYW5hZ2VyRGVmYXVsdC5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDkgQEAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBkZWFsbG9jYXRlKHZvaWQqICAgIHBvaW50ZXIp
OwogCisgICAgdmlydHVhbCBNZW1vcnlNYW5hZ2VyKgorICAgIGdldEV4Y2VwdGlvbk1lbW9yeU1h
bmFnZXIoKTsKKwogcHJpdmF0ZToKIAogICAgIC8vIFRoZXNlIGFyZSBub3QgaW1wbGVtZW50ZWQu
CkluZGV4OiBzcmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhblRyYW5zY29kaW5nU2Vydmlj
ZXMuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1hhbGFuVHJh
bnNjb2RpbmdTZXJ2aWNlcy5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvUGxh
dGZvcm1TdXBwb3J0L1hhbGFuVHJhbnNjb2RpbmdTZXJ2aWNlcy5ocHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDggKzU2LDggQEAKIAlzdGF0aWMgdm9pZAogCXRlcm1pbmF0ZSgpOwogCi0JdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyCVhhbGFuWE1MQnl0ZTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGludCAg
ICBzaXplX3R5cGU7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgWGFsYW5YTUxCeXRlOwor
ICAgIHR5cGVkZWYgWGFsYW5TaXplX3QgICAgIHNpemVfdHlwZTsKICAgICB0eXBlZGVmIHVuc2ln
bmVkIGludCAgICBVbmljb2RlQ2hhclR5cGU7CiAKIAlzdGF0aWMgc2l6ZV90eXBlCkluZGV4OiBz
cmMveGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhbk1lbW9yeU1hbmFnZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1hhbGFuTWVtb3J5TWFuYWdlbWVu
dC5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvUGxhdGZvcm1TdXBwb3J0L1hh
bGFuTWVtb3J5TWFuYWdlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDggQEAK
IAkJCiAJCXJldHVybiAwOwogCX0JCi0JdmlydHVhbCB2b2lkCisKKyAgICB2aXJ0dWFsIHZvaWQK
IAlkZWFsbG9jYXRlKCAgdm9pZCogCS8qCXBEYXRhUG9pbnRlciAqLyApCiAJewogCQlYQUxBTl9V
U0lOR19TVEQoYmFkX2FsbG9jKQpAQCAtNDgsOCArNDksMTIgQEAKIAkJdGhyb3cgYmFkX2FsbG9j
KCk7CQkKIAkJCiAJfQotCQotCQorCisgICAgTWVtb3J5TWFuYWdlcioKKyAgICBnZXRFeGNlcHRp
b25NZW1vcnlNYW5hZ2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KIH07
CiAKIApJbmRleDogc3JjL3hhbGFuYy9JbmNsdWRlL1ZDUFBEZWZpbml0aW9ucy5ocHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3JjL3hhbGFuYy9JbmNsdWRlL1ZDUFBEZWZpbml0aW9ucy5ocHAJKHJldmlzaW9u
IDcwNjEyOSkKKysrIHNyYy94YWxhbmMvSW5jbHVkZS9WQ1BQRGVmaW5pdGlvbnMuaHBwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBACiAjZGVmaW5lIFZDUFBERUZJTklUSU9OU19IRUFE
RVJfR1VBUkRfMTM1NzkyNDY4MAogCiAKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTI3IDQy
NTEgNDUxMSA0NTEyIDQ1MTQgNDcwMiA0NzEwIDQ3MTEgNDc4NiA0MDk3IDQ1MDMgNDc4NjsgZXJy
b3I6IDQxNTAgNDE3MiA0MjM4IDQyMzkgNDcxNSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MTI3IDQyNTEgNDM0NSA0MzUxIDQ1MTEgNDUxMiA0NTE0IDQ1MjEgNDcwMiA0NzEwIDQ3MTEgNDc4
NiA0MDk3IDQ1MDMgNDc4NjsgZXJyb3I6IDQxNTAgNDE3MiA0MjM4IDQyMzkgNDcxNSkKIAogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IHNyYy94YWxhbmMvSW5jbHVkZS9QbGF0Zm9ybURl
ZmluaXRpb25zLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL0luY2x1ZGUvUGxhdGZvcm1E
ZWZpbml0aW9ucy5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvSW5jbHVkZS9Q
bGF0Zm9ybURlZmluaXRpb25zLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCwxNiBA
QAogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydAlYYWxhbkRPTUNoYXI7CiAjZW5kaWYKIAorI2lmIFhF
UkNFU19WRVJTSU9OX01BSk9SIDwgMwordHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgWGFsYW5TaXpl
X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludCAgICBYYWxhbkZpbGVQb3M7Cit0eXBlZGVmIHVuc2ln
bmVkIGludCAgICBYYWxhbkZpbGVMb2M7CisjZWxzZQordHlwZWRlZiBYTUxTaXplX3QgICAgICAg
WGFsYW5TaXplX3Q7Cit0eXBlZGVmIFhNTEZpbGVQb3MgICAgICBYYWxhbkZpbGVQb3M7Cit0eXBl
ZGVmIFhNTEZpbGVMb2MgICAgICBYYWxhbkZpbGVMb2M7CisjZW5kaWYKKwogdGVtcGxhdGU8Ym9v
bCB2YWx1ZT4KIHN0cnVjdCBYYWxhbkNvbXBpbGVFcnJvckJvb2xlYW4KIHsKSW5kZXg6IHNyYy94
YWxhbmMvWFBhdGgvWFBhdGhQcm9jZXNzb3JJbXBsLmhwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFs
YW5jL1hQYXRoL1hQYXRoUHJvY2Vzc29ySW1wbC5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNy
Yy94YWxhbmMvWFBhdGgvWFBhdGhQcm9jZXNzb3JJbXBsLmhwcAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsOCBAQAogCiAgICAgdHlwZWRlZiBYYWxhblZlY3Rvcjxib29sPiAgICAgICAgICAg
ICAgIEJvb2xWZWN0b3JUeXBlOwogCisgICAgdHlwZWRlZiBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlICAgdF9zaXplX3R5cGU7CisKICAgICBYUGF0aFByb2Nlc3NvckltcGwoTWVtb3J5TWFuYWdl
clR5cGUmIHRoZU1hbmFnZXIgWEFMQU5fREVGQVVMVF9NRU1NR1IpOwogCiAgICAgdmlydHVhbApA
QCAtMTIxLDEyICsxMjMsMTIgQEAKICAgICAgKiBXaGVuIGEgc2VwYXJhdG9yIHRva2VuIGlzIGZv
dW5kLCBzZWUgaWYgdGhlcmUncyBhIGVsZW1lbnQgbmFtZSBvciB0aGUKICAgICAgKiBsaWtlIHRv
IG1hcC4KICAgICAgKi8KLSAgICBpbnQKKyAgICB0X3NpemVfdHlwZQogICAgIG1hcE5TVG9rZW5z
KAogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcmICAgcGF0LAotICAgICAgICAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgc3RhcnRTdWJzdHJpbmcsCi0gICAgICAgICAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICBwb3NPZk5TU2VwLAotICAgICAgICAgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgcG9zT2ZTY2FuKTsKKyAgICAgICAgICAgIHRfc2l6ZV90eXBlICAgICAgICAg
ICAgIHN0YXJ0U3Vic3RyaW5nLAorICAgICAgICAgICAgdF9zaXplX3R5cGUgICAgICAgICAgICAg
cG9zT2ZOU1NlcCwKKyAgICAgICAgICAgIHRfc2l6ZV90eXBlICAgICAgICAgICAgIHBvc09mU2Nh
bik7CiAKICAgICAvKioKICAgICAgKiBDaGVjayBpZiBtX3Rva2VuPT1zLiBJZiBtX3Rva2VuIGlz
IG51bGwsIHRoaXMgd29uJ3QgdGhyb3cKSW5kZXg6IHNyYy94YWxhbmMvWFBhdGgvWFBhdGhFeGVj
dXRpb25Db250ZXh0RGVmYXVsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YUGF0aC9Y
UGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3Jj
L3hhbGFuYy9YUGF0aC9YUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDkyLDggKzQ5Miw4IEBACiB7CiAgICAgYXNzZXJ0KG1feHBhdGhFbnZTdXBwb3J0
ICE9IDApOwogCi0gICAgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICAgIGxpbmVOdW1iZXIgPSBY
YWxhbkxvY2F0b3I6OmdldFVua25vd25WYWx1ZSgpOwotICAgIFhhbGFuTG9jYXRvcjo6c2l6ZV90
eXBlICAgICBjb2x1bW5OdW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldFVua25vd25WYWx1ZSgpOwor
ICAgIFhhbGFuRmlsZUxvYyAgICAgbGluZU51bWJlciA9IFhhbGFuTG9jYXRvcjo6Z2V0VW5rbm93
blZhbHVlKCk7CisgICAgWGFsYW5GaWxlTG9jICAgICBjb2x1bW5OdW1iZXIgPSBYYWxhbkxvY2F0
b3I6OmdldFVua25vd25WYWx1ZSgpOwogCiAgICAgTWVtb3J5TWFuYWdlclR5cGUmIHRoZU1hbmFn
ZXIgPSAgY29uc3RfY2FzdDxYUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0Kj4odGhpcyktPmdl
dE1lbW9yeU1hbmFnZXIoKTsKIApAQCAtNTQ2LDggKzU0Niw4IEBACiB7CiAgICAgYXNzZXJ0KG1f
eHBhdGhFbnZTdXBwb3J0ICE9IDApOwogCi0gICAgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICAg
IGxpbmVOdW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldFVua25vd25WYWx1ZSgpOwotICAgIFhhbGFu
TG9jYXRvcjo6c2l6ZV90eXBlICAgICBjb2x1bW5OdW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldFVu
a25vd25WYWx1ZSgpOworICAgIFhhbGFuRmlsZUxvYyAgICBsaW5lTnVtYmVyID0gWGFsYW5Mb2Nh
dG9yOjpnZXRVbmtub3duVmFsdWUoKTsKKyAgICBYYWxhbkZpbGVMb2MgICAgY29sdW1uTnVtYmVy
ID0gWGFsYW5Mb2NhdG9yOjpnZXRVbmtub3duVmFsdWUoKTsKIAogICAgIE1lbW9yeU1hbmFnZXJU
eXBlJiB0aGVNYW5hZ2VyID0gIGNvbnN0X2Nhc3Q8WFBhdGhFeGVjdXRpb25Db250ZXh0RGVmYXVs
dCo+KHRoaXMpLT5nZXRNZW1vcnlNYW5hZ2VyKCk7CiAKQEAgLTYwMCw4ICs2MDAsOCBAQAogewog
ICAgIGFzc2VydChtX3hwYXRoRW52U3VwcG9ydCAhPSAwKTsKIAotICAgIFhhbGFuTG9jYXRvcjo6
c2l6ZV90eXBlICAgICBsaW5lTnVtYmVyID0gWGFsYW5Mb2NhdG9yOjpnZXRVbmtub3duVmFsdWUo
KTsKLSAgICBYYWxhbkxvY2F0b3I6OnNpemVfdHlwZSAgICAgY29sdW1uTnVtYmVyID0gWGFsYW5M
b2NhdG9yOjpnZXRVbmtub3duVmFsdWUoKTsKKyAgICBYYWxhbkZpbGVMb2MgICAgbGluZU51bWJl
ciA9IFhhbGFuTG9jYXRvcjo6Z2V0VW5rbm93blZhbHVlKCk7CisgICAgWGFsYW5GaWxlTG9jICAg
IGNvbHVtbk51bWJlciA9IFhhbGFuTG9jYXRvcjo6Z2V0VW5rbm93blZhbHVlKCk7CiAKICAgIE1l
bW9yeU1hbmFnZXJUeXBlJiB0aGVNYW5hZ2VyID0gIGNvbnN0X2Nhc3Q8WFBhdGhFeGVjdXRpb25D
b250ZXh0RGVmYXVsdCo+KHRoaXMpLT5nZXRNZW1vcnlNYW5hZ2VyKCk7CiAKSW5kZXg6IHNyYy94
YWxhbmMvWFBhdGgvWFBhdGhFeGVjdXRpb25Db250ZXh0RGVmYXVsdC5ocHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3JjL3hhbGFuYy9YUGF0aC9YUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmhwcAkocmV2
aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YUGF0aC9YUGF0aEV4ZWN1dGlvbkNvbnRleHRE
ZWZhdWx0LmhwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsNiBAQAogCiAKIAotLyoqCi0g
KiBAYXV0aG9yIDxhIGhyZWY9Im1haWx0bzpkYXZpZF9uX2JlcnRvbmlAbG90dXMuY29tIj5EYXZp
ZCBOLiBCZXJ0b25pPC9hPgotICovCiAvLyBCYXNlIGNsYXNzIGluY2x1ZGUgZmlsZS4KICNpbmNs
dWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFeGVjdXRpb25Db250ZXh0LmhwcD4KIApAQCAtMzQ2LDcg
KzM0MywxMSBAQAogCiBwcm90ZWN0ZWQ6CiAKLQl0eXBlZGVmIFhhbGFuT2JqZWN0Q2FjaGU8TXV0
YWJsZU5vZGVSZWZMaXN0LCBEZWZhdWx0Q2FjaGVDcmVhdGVGdW5jdG9yTWVtTWdyPE11dGFibGVO
b2RlUmVmTGlzdD4sIERlbGV0ZUZ1bmN0b3I8TXV0YWJsZU5vZGVSZWZMaXN0PiwgQ2xlYXJDYWNo
ZVJlc2V0RnVuY3RvcjxNdXRhYmxlTm9kZVJlZkxpc3Q+ID4JTm9kZUxpc3RDYWNoZVR5cGU7CisJ
dHlwZWRlZiBYYWxhbk9iamVjdENhY2hlPAorICAgICAgICAgICAgICAgIE11dGFibGVOb2RlUmVm
TGlzdCwKKyAgICAgICAgICAgICAgICBEZWZhdWx0Q2FjaGVDcmVhdGVGdW5jdG9yTWVtTWdyPE11
dGFibGVOb2RlUmVmTGlzdD4sCisgICAgICAgICAgICAgICAgRGVsZXRlRnVuY3RvcjxNdXRhYmxl
Tm9kZVJlZkxpc3Q+LAorICAgICAgICAgICAgICAgIENsZWFyQ2FjaGVSZXNldEZ1bmN0b3I8TXV0
YWJsZU5vZGVSZWZMaXN0PiA+CU5vZGVMaXN0Q2FjaGVUeXBlOwogCiAJZW51bSB7IGVOb2RlTGlz
dENhY2hlTGlzdFNpemUgPSA1MCB9OwogCkluZGV4OiBzcmMveGFsYW5jL1hQYXRoL0Zvcm1hdHRl
clN0cmluZ0xlbmd0aENvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFBhdGgv
Rm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291bnRlci5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNy
Yy94YWxhbmMvWFBhdGgvRm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291bnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDggKzc2LDggQEAKIAogdm9pZAogRm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291
bnRlcjo6Y2hhcmFjdGVycygKLQkJCWNvbnN0IFhNTENoKiBjb25zdAkvKiBjaGFycyAqLywKLQkJ
CWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpCisJCQljb25zdCBYTUxDaCogY29uc3QgIC8qIGNo
YXJzICovLAorCQkJY29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpCiB7CiAJbV9jb3VudCArPSBs
ZW5ndGg7CiB9CkBAIC04Niw4ICs4Niw4IEBACiAKIHZvaWQKIEZvcm1hdHRlclN0cmluZ0xlbmd0
aENvdW50ZXI6OmNoYXJhY3RlcnNSYXcoCi0JCWNvbnN0IFhNTENoKiBjb25zdAkvKiBjaGFycyAq
LywKLQkJY29uc3QgdW5zaWduZWQgaW50CS8qbGVuZ3RoICovKQorCQljb25zdCBYTUxDaCogY29u
c3QgIC8qIGNoYXJzICovLAorCQljb25zdCBzaXplX3R5cGUJICAgIC8qbGVuZ3RoICovKQogewog
fQogCkBAIC0xMDEsOCArMTAxLDggQEAKIAogdm9pZAogRm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291
bnRlcjo6aWdub3JhYmxlV2hpdGVzcGFjZSgKLQkJCWNvbnN0IFhNTENoKiBjb25zdAkvKiBjaGFy
cyAqLywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAkvKiBsZW5ndGggKi8pCisJCQljb25zdCBYTUxD
aCogY29uc3QgIC8qIGNoYXJzICovLAorCQkJY29uc3Qgc2l6ZV90eXBlCSAgICAvKiBsZW5ndGgg
Ki8pCiB7CiB9CiAKQEAgLTEzMyw4ICsxMzMsOCBAQAogCiB2b2lkCiBGb3JtYXR0ZXJTdHJpbmdM
ZW5ndGhDb3VudGVyOjpjZGF0YSgKLQkJCWNvbnN0IFhNTENoKiBjb25zdAkgLyogY2ggKi8sCi0J
CQljb25zdCB1bnNpZ25lZCBpbnQgCS8qIGxlbmd0aCAqLykKKwkJCWNvbnN0IFhNTENoKiBjb25z
dCAgLyogY2ggKi8sCisJCQljb25zdCBzaXplX3R5cGUgICAgIC8qIGxlbmd0aCAqLykKIHsKIH0K
IApJbmRleDogc3JjL3hhbGFuYy9YUGF0aC9YUGF0aENvbnN0cnVjdGlvbkNvbnRleHQuaHBwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFBhdGgvWFBhdGhDb25zdHJ1Y3Rpb25Db250ZXh0Lmhw
cAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YUGF0aC9YUGF0aENvbnN0cnVjdGlv
bkNvbnRleHQuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMjAgKzEyMywxMSBAQAogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBOb3RlIG5vbi1jb25zdCBjb3B5IHNlbWFudGlj
cy4uLgotICAgICAgICBHZXRBbmRSZWxlYXNlQ2FjaGVkU3RyaW5nKEdldEFuZFJlbGVhc2VDYWNo
ZWRTdHJpbmcmICAgIHRoZVNvdXJjZSkgOgotICAgICAgICAgICAgbV9jb25zdHJ1Y3Rpb25Db250
ZXh0KHRoZVNvdXJjZS5tX2NvbnN0cnVjdGlvbkNvbnRleHQpLAotICAgICAgICAgICAgbV9zdHJp
bmcodGhlU291cmNlLm1fc3RyaW5nKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGVTb3VyY2Uu
bV9zdHJpbmcgPSAwOwotICAgICAgICB9Ci0KICAgICAgICAgfkdldEFuZFJlbGVhc2VDYWNoZWRT
dHJpbmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdHJpbmcgIT0gMCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX2NvbnN0cnVjdGlvbkNvbnRleHQtPnJlbGVhc2VD
YWNoZWRTdHJpbmcoKm1fc3RyaW5nKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2Vy
dChtX3N0cmluZyAhPSAwKTsKKworICAgICAgICAgICAgbV9jb25zdHJ1Y3Rpb25Db250ZXh0LT5y
ZWxlYXNlQ2FjaGVkU3RyaW5nKCptX3N0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBYYWxh
bkRPTVN0cmluZyYKQEAgLTE1MCwxMyArMTQxLDE4IEBACiAgICAgICAgIFhQYXRoQ29uc3RydWN0
aW9uQ29udGV4dCYKICAgICAgICAgZ2V0Q29uc3RydWN0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGFzc2VydChtX2NvbnN0cnVjdGlvbkNvbnRleHQgIT0gMCk7CisK
ICAgICAgICAgICAgIHJldHVybiAqbV9jb25zdHJ1Y3Rpb25Db250ZXh0OwogICAgICAgICB9CiAK
LQogICAgIHByaXZhdGU6CiAKICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkLi4uCisgICAgICAg
IEdldEFuZFJlbGVhc2VDYWNoZWRTdHJpbmcoKTsKKworICAgICAgICBHZXRBbmRSZWxlYXNlQ2Fj
aGVkU3RyaW5nKGNvbnN0IEdldEFuZFJlbGVhc2VDYWNoZWRTdHJpbmcmKTsKKwogICAgICAgICBH
ZXRBbmRSZWxlYXNlQ2FjaGVkU3RyaW5nJgogICAgICAgICBvcGVyYXRvcj0oY29uc3QgR2V0QW5k
UmVsZWFzZUNhY2hlZFN0cmluZyYpOwogCkluZGV4OiBzcmMveGFsYW5jL1hQYXRoL1hQYXRoRXhl
Y3V0aW9uQ29udGV4dC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YUGF0aC9YUGF0aEV4
ZWN1dGlvbkNvbnRleHQuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hQYXRo
L1hQYXRoRXhlY3V0aW9uQ29udGV4dC5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDYg
QEAKIAogCiAKLS8qKgotICogQGF1dGhvciA8YSBocmVmPSJtYWlsdG86ZGF2aWRfbl9iZXJ0b25p
QGxvdHVzLmNvbSI+RGF2aWQgTi4gQmVydG9uaTwvYT4KLSAqLwogLy8gQmFzZSBjbGFzcyBoZWFk
ZXIgZmlsZS4uLgogI2luY2x1ZGUgPHhhbGFuYy9QbGF0Zm9ybVN1cHBvcnQvRXhlY3V0aW9uQ29u
dGV4dC5ocHA+CiAKQEAgLTQ3MCw2ICs0NjcsMTAgQEAKICAgICBwcml2YXRlOgogCiAgICAgICAg
IC8vIE5vdCBpbXBsZW1lbnRlZC4uLgorICAgICAgICBHZXRBbmRSZWxlYXNlQ2FjaGVkU3RyaW5n
KCk7CisKKyAgICAgICAgR2V0QW5kUmVsZWFzZUNhY2hlZFN0cmluZyhjb25zdCBHZXRBbmRSZWxl
YXNlQ2FjaGVkU3RyaW5nJik7CisKICAgICAgICAgR2V0QW5kUmVsZWFzZUNhY2hlZFN0cmluZyYK
ICAgICAgICAgb3BlcmF0b3I9KGNvbnN0IEdldEFuZFJlbGVhc2VDYWNoZWRTdHJpbmcmKTsKIApJ
bmRleDogc3JjL3hhbGFuYy9YUGF0aC9YT2JqZWN0LmhwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFs
YW5jL1hQYXRoL1hPYmplY3QuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hQ
YXRoL1hPYmplY3QuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAKIAl2aXJ0
dWFsIGNvbnN0IFhhbGFuRE9NU3RyaW5nJgogCXN0cigpIGNvbnN0OwogCi0JdHlwZWRlZiB2b2lk
IChGb3JtYXR0ZXJMaXN0ZW5lcjo6Kk1lbWJlckZ1bmN0aW9uUHRyKShjb25zdCBYTUxDaCogY29u
c3QsIGNvbnN0IHVuc2lnbmVkIGludCk7CisgICAgdHlwZWRlZiB2b2lkIChGb3JtYXR0ZXJMaXN0
ZW5lcjo6Kk1lbWJlckZ1bmN0aW9uUHRyKShjb25zdCBYTUxDaCogY29uc3QsIGNvbnN0IEZvcm1h
dHRlckxpc3RlbmVyOjpzaXplX3R5cGUpOwogCiAJLyoqCiAJICogU2VuZCB0aGUgc3RyaW5nIHZh
bHVlIHRvIGEgRm9ybWF0dGVyTGlzdGVuZXIgaW5zdGFuY2UuCkluZGV4OiBzcmMveGFsYW5jL1hQ
YXRoL0Zvcm1hdHRlclN0cmluZ0xlbmd0aENvdW50ZXIuaHBwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94
YWxhbmMvWFBhdGgvRm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291bnRlci5ocHAJKHJldmlzaW9uIDcw
NjEyOSkKKysrIHNyYy94YWxhbmMvWFBhdGgvRm9ybWF0dGVyU3RyaW5nTGVuZ3RoQ291bnRlci5o
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAKIHsKIHB1YmxpYzoKIAotCXR5cGVk
ZWYgdW5zaWduZWQgbG9uZwlzaXplX3R5cGU7Ci0KIAkvKioKIAkgKiBGb3JtYXR0ZXJTdHJpbmdM
ZW5ndGhDb3VudGVyIGluc3RhbmNlIGNvbnN0cnVjdG9yLgogCSAqLwpAQCAtODEsMTIgKzc5LDEy
IEBACiAgICAgdmlydHVhbCB2b2lkCiAJY2hhcmFjdGVycygKIAkJCWNvbnN0IFhNTENoKiBjb25z
dAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJY29uc3Qgc2l6ZV90
eXBlCSAgICBsZW5ndGgpOwogCiAgICAgdmlydHVhbCB2b2lkCiAJY2hhcmFjdGVyc1JhdygKIAkJ
CWNvbnN0IFhNTENoKiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgp
OworCQkJY29uc3Qgc2l6ZV90eXBlCSAgICBsZW5ndGgpOwogCiAJdmlydHVhbCB2b2lkCiAJZW50
aXR5UmVmZXJlbmNlKGNvbnN0IFhNTENoKiBjb25zdAluYW1lKTsKQEAgLTk0LDcgKzkyLDcgQEAK
IAl2aXJ0dWFsIHZvaWQKIAlpZ25vcmFibGVXaGl0ZXNwYWNlKAogCQkJY29uc3QgWE1MQ2gqIGNv
bnN0CWNoYXJzLAotCQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCk7CisJCQljb25zdCBzaXpl
X3R5cGUJICAgIGxlbmd0aCk7CiAKIAl2aXJ0dWFsIHZvaWQKIAlwcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oCkBAIC0xMTAsNyArMTA4LDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAljZGF0YSgKIAkJCWNvbnN0
IFhNTENoKiBjb25zdAljaCwKLQkJCWNvbnN0IHVuc2lnbmVkIGludCAJbGVuZ3RoKTsKKwkJCWNv
bnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKTsKIAogcHJpdmF0ZToKIApJbmRleDogc3JjL3hhbGFu
Yy9YUGF0aC9YUGF0aFByb2Nlc3NvckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMv
WFBhdGgvWFBhdGhQcm9jZXNzb3JJbXBsLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hh
bGFuYy9YUGF0aC9YUGF0aFByb2Nlc3NvckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIs
MTYgKzIxMiwxNiBAQAogCiAgICAgbV9leHByZXNzaW9uLT5zZXRDdXJyZW50UGF0dGVybihtX2Nv
bnN0cnVjdGlvbkNvbnRleHQtPmdldFBvb2xlZFN0cmluZyhwYXQpKTsKIAotICAgIGNvbnN0IGlu
dCAgIG5DaGFycyA9IGxlbmd0aChwYXQpOworICAgIGNvbnN0IHRfc2l6ZV90eXBlICAgbkNoYXJz
ID0gbGVuZ3RoKHBhdCk7CiAKLSAgICBpbnQgICAgICAgICBzdGFydFN1YnN0cmluZyA9IC0xOwot
ICAgIGludCAgICAgICAgIHBvc09mTlNTZXAgPSAtMTsKKyAgICB0X3NpemVfdHlwZSAgICAgc3Rh
cnRTdWJzdHJpbmcgPSBYYWxhbkRPTVN0cmluZzo6bnBvczsKKyAgICB0X3NpemVfdHlwZSAgICAg
cG9zT2ZOU1NlcCA9IFhhbGFuRE9NU3RyaW5nOjpucG9zOwogCiAgICAgY29uc3QgWFBhdGhDb25z
dHJ1Y3Rpb25Db250ZXh0OjpHZXRBbmRSZWxlYXNlQ2FjaGVkU3RyaW5nICAgdGhlR3VhcmQoKm1f
Y29uc3RydWN0aW9uQ29udGV4dCk7CiAKICAgICBYYWxhbkRPTVN0cmluZyYgICAgIHRoZVRva2Vu
ID0gdGhlR3VhcmQuZ2V0KCk7CiAKLSAgICBmb3IoaW50IGkgPSAwOyBpIDwgbkNoYXJzOyBpKysp
CisgICAgZm9yKHRfc2l6ZV90eXBlIGkgPSAwOyBpIDwgbkNoYXJzOyBpKyspCiAgICAgewogICAg
ICAgICBYYWxhbkRPTUNoYXIgICAgYyA9IGNoYXJBdChwYXQsIGkpOwogCkBAIC0yMjksOSArMjI5
LDkgQEAKICAgICAgICAgewogICAgICAgICBjYXNlIFhhbGFuVW5pY29kZTo6Y2hhclF1b3RlTWFy
azogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoc3RhcnRTdWJzdHJpbmcgIT0g
LTEpCisgICAgICAgICAgICAgICAgaWYoc3RhcnRTdWJzdHJpbmcgIT0gWGFsYW5ET01TdHJpbmc6
Om5wb3MpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZigtMSAhPSBw
b3NPZk5TU2VwKQorICAgICAgICAgICAgICAgICAgICBpZihYYWxhbkRPTVN0cmluZzo6bnBvcyAh
PSBwb3NPZk5TU2VwKQogICAgICAgICAgICAgICAgICAgICB7ICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3NPZk5TU2VwID0gbWFwTlNUb2tlbnMocGF0LCBzdGFydFN1YnN0cmluZywg
cG9zT2ZOU1NlcCwgaSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI1Myw3ICsyNTMsNyBA
QAogCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvVG9rZW5RdWV1ZSh0aGVUb2tlbik7CiAKLSAg
ICAgICAgICAgICAgICAgICAgc3RhcnRTdWJzdHJpbmcgPSAtMTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhcnRTdWJzdHJpbmcgPSBYYWxhbkRPTVN0cmluZzo6bnBvczsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKQEAgLTI2NCw5ICsy
NjQsOSBAQAogCiAgICAgICAgIGNhc2UgWGFsYW5Vbmljb2RlOjpjaGFyQXBvc3Ryb3BoZToKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZihzdGFydFN1YnN0cmluZyAhPSAtMSkKKyAg
ICAgICAgICAgICAgICBpZihzdGFydFN1YnN0cmluZyAhPSBYYWxhbkRPTVN0cmluZzo6bnBvcykK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKC0xICE9IHBvc09mTlNT
ZXApCisgICAgICAgICAgICAgICAgICAgIGlmKFhhbGFuRE9NU3RyaW5nOjpucG9zICE9IHBvc09m
TlNTZXApCiAgICAgICAgICAgICAgICAgICAgIHsgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3NPZk5TU2VwID0gbWFwTlNUb2tlbnMocGF0LCBzdGFydFN1YnN0cmluZywgcG9zT2ZOU1Nl
cCwgaSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4OCw3ICsyODgsNyBAQAogCiAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvVG9rZW5RdWV1ZSh0aGVUb2tlbik7CiAKLSAgICAgICAgICAg
ICAgICAgICAgc3RhcnRTdWJzdHJpbmcgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRT
dWJzdHJpbmcgPSBYYWxhbkRPTVN0cmluZzo6bnBvczsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKQEAgLTMwMiw5ICszMDIsOSBAQAog
ICAgICAgICBjYXNlIFhhbGFuVW5pY29kZTo6Y2hhclNwYWNlOgogICAgICAgICBjYXNlIFhhbGFu
VW5pY29kZTo6Y2hhckhUYWI6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoc3Rh
cnRTdWJzdHJpbmcgIT0gLTEpCisgICAgICAgICAgICAgICAgaWYoc3RhcnRTdWJzdHJpbmcgIT0g
WGFsYW5ET01TdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZigtMSAhPSBwb3NPZk5TU2VwKQorICAgICAgICAgICAgICAgICAgICBpZihYYWxhbkRP
TVN0cmluZzo6bnBvcyAhPSBwb3NPZk5TU2VwKQogICAgICAgICAgICAgICAgICAgICB7ICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgcG9zT2ZOU1NlcCA9IG1hcE5TVG9rZW5zKHBhdCwgc3Rh
cnRTdWJzdHJpbmcsIHBvc09mTlNTZXAsIGkpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0z
MTUsMTQgKzMxNSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9Ub2tlblF1ZXVl
KHRoZVRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAg
IHN0YXJ0U3Vic3RyaW5nID0gLTE7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0U3Vic3RyaW5n
ID0gWGFsYW5ET01TdHJpbmc6Om5wb3M7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBjYXNlIFhhbGFuVW5pY29k
ZTo6Y2hhckh5cGhlbk1pbnVzOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCEo
c3RhcnRTdWJzdHJpbmcgPT0gLTEpKQorICAgICAgICAgICAgICAgIGlmKCEoc3RhcnRTdWJzdHJp
bmcgPT0gWGFsYW5ET01TdHJpbmc6Om5wb3MpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQ3LDkgKzM0Nyw5IEBA
CiAgICAgICAgIGNhc2UgWGFsYW5Vbmljb2RlOjpjaGFyTGVzc1RoYW5TaWduOgogICAgICAgICBj
YXNlIFhhbGFuVW5pY29kZTo6Y2hhckdyZWF0ZXJUaGFuU2lnbjoKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZihzdGFydFN1YnN0cmluZyAhPSAtMSkKKyAgICAgICAgICAgICAgICBp
ZihzdGFydFN1YnN0cmluZyAhPSBYYWxhbkRPTVN0cmluZzo6bnBvcykKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKC0xICE9IHBvc09mTlNTZXApCisgICAgICAgICAg
ICAgICAgICAgIGlmKFhhbGFuRE9NU3RyaW5nOjpucG9zICE9IHBvc09mTlNTZXApCiAgICAgICAg
ICAgICAgICAgICAgIHsgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NPZk5TU2VwID0g
bWFwTlNUb2tlbnMocGF0LCBzdGFydFN1YnN0cmluZywgcG9zT2ZOU1NlcCwgaSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTM2MCw3ICszNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkVG9Ub2tlblF1ZXVlKHRoZVRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXJ0U3Vic3RyaW5nID0gLTE7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0U3Vic3RyaW5nID0gWGFsYW5ET01TdHJpbmc6Om5wb3M7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgc3Vic3RyaW5nKHBhdCwgdGhlVG9rZW4sIGksIGkgKyAx
KTsKQEAgLTM3Myw3ICszNzMsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlm
KHBvc09mTlNTZXAgPT0gaSAtIDEgJiYgaSA+IDApCiAgICAgICAgICAgICAgICAgeyAKLSAgICAg
ICAgICAgICAgICAgICAgaWYoc3RhcnRTdWJzdHJpbmcgIT0gLTEpCisgICAgICAgICAgICAgICAg
ICAgIGlmKHN0YXJ0U3Vic3RyaW5nICE9IFhhbGFuRE9NU3RyaW5nOjpucG9zKQogICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRTdWJzdHJpbmcg
PCBpIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTM4Myw4ICszODMsOCBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICAgICAgc3RhcnRTdWJzdHJpbmcgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAg
cG9zT2ZOU1NlcCA9IC0xOworICAgICAgICAgICAgICAgICAgICBzdGFydFN1YnN0cmluZyA9IFhh
bGFuRE9NU3RyaW5nOjpucG9zOworICAgICAgICAgICAgICAgICAgICBwb3NPZk5TU2VwID0gWGFs
YW5ET01TdHJpbmc6Om5wb3M7CiAKICAgICAgICAgICAgICAgICAgICAgc3Vic3RyaW5nKHBhdCwg
dGhlVG9rZW4sIGkgLSAxLCBpICsgMSk7CiAKQEAgLTQwMSw3ICs0MDEsNyBAQAogICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZigtMSA9
PSBzdGFydFN1YnN0cmluZykKKyAgICAgICAgICAgICAgICBpZihYYWxhbkRPTVN0cmluZzo6bnBv
cyA9PSBzdGFydFN1YnN0cmluZykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0U3Vic3RyaW5nID0gaTsKIApAQCAtNDQwLDE2ICs0NDAsMTYgQEAKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9Ub2tlblF1ZXVlKHRoZVRva2VuKTsKIAotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRTdWJzdHJpbmcgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0U3Vic3RyaW5nID0gWGFsYW5ET01TdHJpbmc6Om5wb3M7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZihzdGFydFN1YnN0cmluZyAhPSAtMSkKKyAgICBpZihzdGFydFN1YnN0cmlu
ZyAhPSBYYWxhbkRPTVN0cmluZzo6bnBvcykKICAgICB7Ci0gICAgICAgIGlmKC0xICE9IHBvc09m
TlNTZXApCisgICAgICAgIGlmKFhhbGFuRE9NU3RyaW5nOjpucG9zICE9IHBvc09mTlNTZXApCiAg
ICAgICAgIHsgICAgCiAgICAgICAgICAgICBwb3NPZk5TU2VwID0gbWFwTlNUb2tlbnMocGF0LCBz
dGFydFN1YnN0cmluZywgcG9zT2ZOU1NlcCwgbkNoYXJzKTsKICAgICAgICAgfQpAQCAtNTA0LDEy
ICs1MDQsMTIgQEAKIAogCiAKLWludAorWFBhdGhQcm9jZXNzb3JJbXBsOjp0X3NpemVfdHlwZQog
WFBhdGhQcm9jZXNzb3JJbXBsOjptYXBOU1Rva2VucygKICAgICAgICAgICAgIGNvbnN0IFhhbGFu
RE9NU3RyaW5nJiAgIHBhdCwKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0U3Vic3RyaW5nLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcG9zT2ZO
U1NlcCwKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHBvc09mU2NhbikKKyAg
ICAgICAgICAgIHRfc2l6ZV90eXBlICAgICAgICAgICAgIHN0YXJ0U3Vic3RyaW5nLAorICAgICAg
ICAgICAgdF9zaXplX3R5cGUgICAgICAgICAgICAgcG9zT2ZOU1NlcCwKKyAgICAgICAgICAgIHRf
c2l6ZV90eXBlICAgICAgICAgICAgIHBvc09mU2NhbikKIHsKICAgICBhc3NlcnQobV9wcmVmaXhS
ZXNvbHZlciAhPSAwKTsKIApAQCAtNTc1LDcgKzU3NSw3IEBACiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFhhbGFuRE9NU3RyaW5nOjpucG9zOwogfQogCiAK
QEAgLTI5MzgsMTQgKzI5MzgsMTYgQEAKIGJvb2wKIFhQYXRoUHJvY2Vzc29ySW1wbDo6aXNDdXJy
ZW50TGl0ZXJhbCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgaW50IGxhc3QgPSBsZW5ndGgobV90b2tl
bikgLSAxOworICAgIGNvbnN0IHRfc2l6ZV90eXBlICAgdGhlTGVuZ3RoID0gbV90b2tlbi5sZW5n
dGgoKTsKIAotICAgIGlmIChsYXN0IDw9IDApCisgICAgaWYgKHRoZUxlbmd0aCA8PSAxKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBlbHNlCiAgICAgeworICAgICAg
ICBjb25zdCB0X3NpemVfdHlwZSAgIGxhc3QgPSB0aGVMZW5ndGggLSAxOworCiAgICAgICAgIGNv
bnN0IFhhbGFuRE9NQ2hhciAgYzAgPSBtX3Rva2VuQ2hhcjsKICAgICAgICAgY29uc3QgWGFsYW5E
T01DaGFyICBjWCA9IGNoYXJBdChtX3Rva2VuLCBsYXN0KTsKIApJbmRleDogc3JjL3hhbGFuYy9Y
UGF0aC9YUGF0aC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YUGF0aC9YUGF0aC5ocHAJ
KHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFBhdGgvWFBhdGguaHBwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAKIAkJCVhQYXRoRXhlY3V0aW9uQ29udGV4dCYJZXhl
Y3V0aW9uQ29udGV4dCwKIAkJCVhhbGFuRE9NU3RyaW5nJgkJCXJlc3VsdCkgY29uc3Q7CiAKLQl0
eXBlZGVmIHZvaWQgKEZvcm1hdHRlckxpc3RlbmVyOjoqTWVtYmVyRnVuY3Rpb25QdHIpKGNvbnN0
IFhNTENoKiBjb25zdCwgY29uc3QgdW5zaWduZWQgaW50KTsKKyAgICB0eXBlZGVmIHZvaWQgKEZv
cm1hdHRlckxpc3RlbmVyOjoqTWVtYmVyRnVuY3Rpb25QdHIpKGNvbnN0IFhNTENoKiBjb25zdCwg
Y29uc3QgRm9ybWF0dGVyTGlzdGVuZXI6OnNpemVfdHlwZSk7CiAKIAkvKioKIAkgKiBFeGVjdXRl
IHRoZSBYUGF0aCBmcm9tIHRoZSBwcm92aWRlZCBjb250ZXh0LgpJbmRleDogc3JjL3hhbGFuYy9Y
ZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RPTVdyYXBwZXJFeGNlcHRpb24uaHBwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHNyYy94YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNET01XcmFwcGVyRXhj
ZXB0aW9uLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YZXJjZXNQYXJzZXJM
aWFpc29uL1hlcmNlc0RPTVdyYXBwZXJFeGNlcHRpb24uaHBwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4MywxMiBAQAogCiAJc3RhdGljIEV4Y2VwdGlvbkNvZGUKIAl0cmFuc2xhdGVFcnJvckNv
ZGUoRE9NRXhjZXB0aW9uVHlwZTo6RXhjZXB0aW9uQ29kZQl0aGVDb2RlKTsKKworCXN0YXRpYyBF
eGNlcHRpb25Db2RlCisJdHJhbnNsYXRlRXJyb3JDb2RlKHNob3J0ICAgIHRoZUNvZGUpCisgICAg
eworICAgICAgICByZXR1cm4gdHJhbnNsYXRlRXJyb3JDb2RlKHN0YXRpY19jYXN0PERPTUV4Y2Vw
dGlvblR5cGU6OkV4Y2VwdGlvbkNvZGU+KHRoZUNvZGUpKTsKKyAgICB9CiB9OwogCiAKSW5kZXg6
IHNyYy94YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNQYXJzZXJMaWFpc29uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzUGFyc2Vy
TGlhaXNvbi5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWGVyY2VzUGFyc2Vy
TGlhaXNvbi9YZXJjZXNQYXJzZXJMaWFpc29uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQxLDcg
Kzc0MSwxMiBAQAogICAgIERPTVBhcnNlclR5cGUqIGNvbnN0ICAgIHRoZVBhcnNlciA9CiAgICAg
ICAgIG5ldyAoJnRoZU1lbW9yeU1hbmFnZXIpIERPTVBhcnNlclR5cGUoMCwgJnRoZU1lbW9yeU1h
bmFnZXIpOwogCisjaWYgWEVSQ0VTX1ZFUlNJT05fTUFKT1IgPCAzCiAgICAgdGhlUGFyc2VyLT5z
ZXRFeHBhbmRFbnRpdHlSZWZlcmVuY2VzKHRydWUpOworI2Vsc2UKKyAgICB0aGVQYXJzZXItPnNl
dENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKGZhbHNlKTsKKyNlbmRpZgorCiAgICAgdGhlUGFy
c2VyLT5zZXREb05hbWVzcGFjZXMobV9kb05hbWVzcGFjZXMpOwogICAgIHRoZVBhcnNlci0+c2V0
RW50aXR5UmVzb2x2ZXIobV9lbnRpdHlSZXNvbHZlcik7CiAKQEAgLTc1OSw3ICs3NjQsMTEgQEAK
ICAgICBTQVhQYXJzZXJUeXBlKiBjb25zdCAgICB0aGVQYXJzZXIgPQogICAgICAgICBuZXcgKCZ0
aGVNZW1vcnlNYW5hZ2VyKSBTQVhQYXJzZXJUeXBlKDAsICZ0aGVNZW1vcnlNYW5hZ2VyKTsKIAor
I2lmIFhFUkNFU19WRVJTSU9OX01BSk9SIDwgMwogICAgIHRoZVBhcnNlci0+c2V0RG9WYWxpZGF0
aW9uKGZhbHNlKTsKKyNlbHNlCisgICAgdGhlUGFyc2VyLT5zZXRWYWxpZGF0aW9uU2NoZW1lKFNB
WFBhcnNlclR5cGU6OlZhbF9OZXZlcik7CisjZW5kaWYKIAogICAgIHRoZVBhcnNlci0+c2V0RG9O
YW1lc3BhY2VzKGZhbHNlKTsKIApJbmRleDogc3JjL3hhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29u
L1hlcmNlc05hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3QuaHBwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94
YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNOYW1lZE5vZGVNYXBBdHRyaWJ1dGVMaXN0
LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29u
L1hlcmNlc05hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3QuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCwxNyArNDgsMTcgQEAKIAl+WGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdCgpOwogCiAJ
Ly8gVGhlc2UgYXJlIGluaGVyaXRlZCBmcm9tIEF0dHJpYnV0ZUxpc3QKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludAorICAgIHZpcnR1YWwgWGFsYW5TaXplX3QKIAlnZXRMZW5ndGgoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgY29uc3QgWE1MQ2gqCi0JZ2V0TmFtZShjb25zdCB1bnNpZ25lZCBpbnQg
aW5kZXgpIGNvbnN0OworCWdldE5hbWUoY29uc3QgWGFsYW5TaXplX3QgICBpbmRleCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhNTENoKgotCWdldFR5cGUoY29uc3QgdW5zaWduZWQgaW50
IGluZGV4KSBjb25zdDsKKwlnZXRUeXBlKGNvbnN0IFhhbGFuU2l6ZV90ICAgaW5kZXgpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBjb25zdCBYTUxDaCoKLQlnZXRWYWx1ZShjb25zdCB1bnNpZ25lZCBp
bnQgaW5kZXgpIGNvbnN0OworCWdldFZhbHVlKGNvbnN0IFhhbGFuU2l6ZV90ICBpbmRleCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFhNTENoKgogCWdldFR5cGUoY29uc3QgWE1MQ2gqIGNv
bnN0IG5hbWUpIGNvbnN0OwpAQCAtODEsNyArODEsNyBAQAogCS8vIERhdGEgbWVtYmVycy4uLgog
CWNvbnN0IERPTU5hbWVkTm9kZU1hcFR5cGUqIGNvbnN0CW1fbm9kZU1hcDsKIAotCWNvbnN0IFhN
TFNpemVUeXBlCQkJCQltX2xhc3RJbmRleDsKKwljb25zdCBYYWxhblNpemVfdAkJCQkJbV9sYXN0
SW5kZXg7CiAKIAlzdGF0aWMgY29uc3QgWE1MQ2gJc190eXBlU3RyaW5nW107CiB9OwpJbmRleDog
c3JjL3hhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL0Zvcm1hdHRlclRvWGVyY2VzRE9NLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vRm9ybWF0dGVyVG9Y
ZXJjZXNET00uY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hlcmNlc1BhcnNl
ckxpYWlzb24vRm9ybWF0dGVyVG9YZXJjZXNET00uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
NyArMTkxLDcgQEAKIHZvaWQKIEZvcm1hdHRlclRvWGVyY2VzRE9NOjpjaGFyYWN0ZXJzKAogCQkJ
Y29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCkK
KwkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKQogewogCW1fdGV4dEJ1ZmZlci5hcHBlbmQo
Y2hhcnMsIGxlbmd0aCk7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAKIHZvaWQKIEZvcm1hdHRlclRv
WGVyY2VzRE9NOjpjaGFyYWN0ZXJzUmF3KAogCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMsCi0J
CWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpCisJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3Ro
KQogewogCXRyeQogCXsKQEAgLTIzNyw3ICsyMzcsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9YZXJj
ZXNET006Omlnbm9yYWJsZVdoaXRlc3BhY2UoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMs
Ci0JCQljb25zdCB1bnNpZ25lZCBpbnQJbGVuZ3RoKQorCQkJY29uc3Qgc2l6ZV90eXBlCSAgICBs
ZW5ndGgpCiB7CiAJdHJ5CiAJewpAQCAtMzAxLDcgKzMwMSw3IEBACiB2b2lkCiBGb3JtYXR0ZXJU
b1hlcmNlc0RPTTo6Y2RhdGEoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2gsCi0JCQljb25zdCB1
bnNpZ25lZCBpbnQgCWxlbmd0aCkKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKQogewog
CXRyeQogCXsKSW5kZXg6IHNyYy94YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNOYW1l
ZE5vZGVNYXBBdHRyaWJ1dGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hlcmNl
c1BhcnNlckxpYWlzb24vWGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdC5jcHAJKHJldmlz
aW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNOYW1l
ZE5vZGVNYXBBdHRyaWJ1dGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QAogCW1fbm9kZU1hcCh0aGVNYXApLAogCW1fbGFzdEluZGV4KHRoZU1hcC0+Z2V0TGVuZ3RoKCkg
LSAxKQogeworICAgIGFzc2VydCh0aGVNYXAtPmdldExlbmd0aCgpICE9IDApOwogfQogCiAKQEAg
LTU4LDcgKzU5LDcgQEAKIAogCiAKLXVuc2lnbmVkIGludAorWGFsYW5TaXplX3QKIFhlcmNlc05h
bWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3Q6OmdldExlbmd0aCgpIGNvbnN0CiB7CiAJcmV0dXJuIG1f
bGFzdEluZGV4ICsgMTsKQEAgLTY3LDcgKzY4LDcgQEAKIAogCiBjb25zdCBYTUxDaCoKLVhlcmNl
c05hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3Q6OmdldE5hbWUoY29uc3QgdW5zaWduZWQgaW50IGlu
ZGV4KSBjb25zdAorWGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0TmFtZShjb25z
dCBYYWxhblNpemVfdCAgaW5kZXgpIGNvbnN0CiB7CiAJY29uc3QgRE9NTm9kZVR5cGUqIGNvbnN0
CXRoZUF0dHJpYnV0ZSA9IG1fbm9kZU1hcC0+aXRlbShtX2xhc3RJbmRleCAtIGluZGV4KTsKIAlh
c3NlcnQodGhlQXR0cmlidXRlICE9IDApOwpAQCAtNzgsNyArNzksNyBAQAogCiAKIGNvbnN0IFhN
TENoKgotWGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VHlwZShjb25zdCB1bnNp
Z25lZCBpbnQgLyogaW5kZXggKi8pIGNvbnN0CitYZXJjZXNOYW1lZE5vZGVNYXBBdHRyaWJ1dGVM
aXN0OjpnZXRUeXBlKGNvbnN0IFhhbGFuU2l6ZV90ICAvKiBpbmRleCAqLykgY29uc3QKIHsKIAlh
c3NlcnQobGVuZ3RoKHNfdHlwZVN0cmluZykgPiAwKTsKIApAQCAtODgsNyArODksNyBAQAogCiAK
IGNvbnN0IFhNTENoKgotWGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRlTGlzdDo6Z2V0VmFsdWUo
Y29uc3QgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAorWGVyY2VzTmFtZWROb2RlTWFwQXR0cmli
dXRlTGlzdDo6Z2V0VmFsdWUoY29uc3QgWGFsYW5TaXplX3QgICAgIGluZGV4KSBjb25zdAogewog
CWNvbnN0IERPTU5vZGVUeXBlKiBjb25zdAl0aGVBdHRyaWJ1dGUgPSBtX25vZGVNYXAtPml0ZW0o
bV9sYXN0SW5kZXggLSBpbmRleCk7CiAJYXNzZXJ0KHRoZUF0dHJpYnV0ZSAhPSAwKTsKQEAgLTEy
Niw3ICsxMjcsNyBAQAogY29uc3QgWE1MQ2gqIAogWGVyY2VzTmFtZWROb2RlTWFwQXR0cmlidXRl
TGlzdDo6Z2V0VmFsdWUoY29uc3QgY2hhciogY29uc3QgLypuYW1lKi8pIGNvbnN0CiB7Ci0gICAg
YXNzZXJ0KCAwICk7CisgICAgYXNzZXJ0KGZhbHNlKTsKIAogICAgIHJldHVybiAwOwogfQpJbmRl
eDogc3JjL3hhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL0Zvcm1hdHRlclRvWGVyY2VzRE9NLmhw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vRm9ybWF0dGVy
VG9YZXJjZXNET00uaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hlcmNlc1Bh
cnNlckxpYWlzb24vRm9ybWF0dGVyVG9YZXJjZXNET00uaHBwCSh3b3JraW5nIGNvcHkpCkBAIC04
MiwxMiArODIsMTIgQEAKIAl+Rm9ybWF0dGVyVG9YZXJjZXNET00oKTsKIAogCi0JLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgaW5oZXJpdGVkIGZyb20gRG9jdW1lbnRIYW5kbGVyIC4uLgorCS8vIFRoZXNl
IG1ldGhvZHMgYXJlIGluaGVyaXRlZCBmcm9tIEZvcm1hdHRlckxpc3RlbmVyLi4uCiAKIAl2aXJ0
dWFsIHZvaWQKIAljaGFyYWN0ZXJzUmF3KAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAot
CQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCk7CisJCQljb25zdCBzaXplX3R5cGUJICAgIGxl
bmd0aCk7CiAKIAl2aXJ0dWFsIHZvaWQKIAljb21tZW50KGNvbnN0IFhNTENoKiBjb25zdAlkYXRh
KTsKQEAgLTk1LDcgKzk1LDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAljZGF0YSgKIAkJCWNvbnN0IFhN
TENoKiBjb25zdAljaCwKLQkJCWNvbnN0IHVuc2lnbmVkIGludCAJbGVuZ3RoKTsKKwkJCWNvbnN0
IHNpemVfdHlwZSAJbGVuZ3RoKTsKIAogCXZpcnR1YWwgdm9pZAogCWVudGl0eVJlZmVyZW5jZShj
b25zdCBYTUxDaCogY29uc3QJbmFtZSk7CkBAIC0xMjAsMTIgKzEyMCwxMiBAQAogCXZpcnR1YWwg
dm9pZAogCWNoYXJhY3RlcnMoCiAJCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJCWNv
bnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3Ro
KTsKIAogCXZpcnR1YWwgdm9pZAogCWlnbm9yYWJsZVdoaXRlc3BhY2UoCiAJCQkJY29uc3QgWE1M
Q2gqIGNvbnN0CWNoYXJzLAotCQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJCWNv
bnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKTsKIAogCXZpcnR1YWwgdm9pZAogCXByb2Nlc3NpbmdJ
bnN0cnVjdGlvbigKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9YU0xUUHJvY2Vzc29yLmhwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBzcmMveGFsYW5jL1hTTFQvWFNMVFByb2Nlc3Nvci5ocHAJKHJldmlzaW9uIDcw
NjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9YU0xUUHJvY2Vzc29yLmhwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsNyArODAsNyBAQAogewogcHVibGljOgogCi0JdHlwZWRlZiBzaXplX3QJc2l6ZV90
eXBlOworICAgIHR5cGVkZWYgWGFsYW5TaXplX3QgICAgIHNpemVfdHlwZTsKIAogCVhTTFRQcm9j
ZXNzb3IoKTsKIApJbmRleDogc3JjL3hhbGFuYy9YU0xUL0VsZW1Db3B5T2YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9FbGVtQ29weU9mLmNwcAkocmV2aXNpb24gNzA2MTI5KQor
Kysgc3JjL3hhbGFuYy9YU0xUL0VsZW1Db3B5T2YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4
ICs0OSw4IEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNv
bnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHlsZXNoZWV0JiAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlzdFR5
cGUmICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAg
ICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAg
ICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgRWxlbVRlbXBsYXRlRWxlbWVudChjb25zdHJ1
Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLApAQCAtNjAsMTMgKzYwLDEzIEBACiB7
CiAgICAgYm9vbCAgICBpc1NlbGVjdEN1cnJlbnROb2RlID0gZmFsc2U7CiAKLSAgICBjb25zdCB1
bnNpZ25lZCBpbnQgIG5BdHRycyA9IGF0dHMuZ2V0TGVuZ3RoKCk7CisgICAgY29uc3QgWGFsYW5T
aXplX3QgICBuQXR0cnMgPSBhdHRzLmdldExlbmd0aCgpOwogICAgIAotICAgIGZvcih1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7ICsraSkKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkgPSAw
OyBpIDwgbkF0dHJzOyArK2kpCiAgICAgewogICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqIGNv
bnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUoaSk7CiAKLSAgICAgICAgaWYoZXF1YWxzKGFuYW1l
LCBDb25zdGFudHM6OkFUVFJOQU1FX1NFTEVDVCkpCisgICAgICAgIGlmIChlcXVhbHMoYW5hbWUs
IENvbnN0YW50czo6QVRUUk5BTUVfU0VMRUNUKSkKICAgICAgICAgewogICAgICAgICAgICAgY29u
c3QgWGFsYW5ET01DaGFyKiBjb25zdCAgIGF2YWx1ZSA9IGF0dHMuZ2V0VmFsdWUoaSk7CiAgICAg
ICAgICAgICBhc3NlcnQoYXZhbHVlICE9IDApOwpAQCAtODAsNyArODAsNyBAQAogICAgICAgICAg
ICAgICAgIG1fc2VsZWN0UGF0dGVybiA9IGNvbnN0cnVjdGlvbkNvbnRleHQuY3JlYXRlWFBhdGgo
Z2V0TG9jYXRvcigpLCBhdmFsdWUsICp0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmKGlzQXR0ck9LKAorICAgICAgICBlbHNlIGlmIChpc0F0dHJPSygKICAg
ICAgICAgICAgICAgICAgICAgYW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGF0dHMsCiAgICAg
ICAgICAgICAgICAgICAgIGksCkBAIC0xMjQsNyArMTI0LDcgQEAKIAogICAgIGlmIChtX3NlbGVj
dFBhdHRlcm4gPT0gMCkKICAgICB7Ci0gICAgICAgIGlmKDAgIT0gZXhlY3V0aW9uQ29udGV4dC5n
ZXRUcmFjZUxpc3RlbmVycygpKQorICAgICAgICBpZiAoMCAhPSBleGVjdXRpb25Db250ZXh0Lmdl
dFRyYWNlTGlzdGVuZXJzKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0eWxlc2hlZXRFeGVj
dXRpb25Db250ZXh0OjpCb3Jyb3dSZXR1cm5NdXRhYmxlTm9kZVJlZkxpc3QgIHRoZU5vZGVMaXN0
KGV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICAgICAgY29uc3Qg
WE9iamVjdFB0ciAgICB2YWx1ZShtX3NlbGVjdFBhdHRlcm4tPmV4ZWN1dGUoKnRoaXMsIGV4ZWN1
dGlvbkNvbnRleHQpKTsKICAgICAgICAgYXNzZXJ0KHZhbHVlLm51bGwoKSA9PSBmYWxzZSk7CiAK
LSAgICAgICAgaWYoMCAhPSBleGVjdXRpb25Db250ZXh0LmdldFRyYWNlTGlzdGVuZXJzKCkpCisg
ICAgICAgIGlmICgwICE9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0VHJhY2VMaXN0ZW5lcnMoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dC5maXJlU2VsZWN0RXZlbnQoCiAg
ICAgICAgICAgICAgICAgU2VsZWN0aW9uRXZlbnQoCkBAIC0yMDksNyArMjA5LDcgQEAKIAogICAg
IGlmIChtX3NlbGVjdFBhdHRlcm4gPT0gMCkKICAgICB7Ci0gICAgICAgIGlmKDAgIT0gZXhlY3V0
aW9uQ29udGV4dC5nZXRUcmFjZUxpc3RlbmVycygpKQorICAgICAgICBpZiAoMCAhPSBleGVjdXRp
b25Db250ZXh0LmdldFRyYWNlTGlzdGVuZXJzKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0
eWxlc2hlZXRFeGVjdXRpb25Db250ZXh0OjpCb3Jyb3dSZXR1cm5NdXRhYmxlTm9kZVJlZkxpc3Qg
IHRoZU5vZGVMaXN0KGV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAKICAg
ICAgICAgY29uc3QgWE9iamVjdFB0ciAgICB2YWx1ZShtX3NlbGVjdFBhdHRlcm4tPmV4ZWN1dGUo
KnRoaXMsIGV4ZWN1dGlvbkNvbnRleHQpKTsKICAgICAgICAgYXNzZXJ0KHZhbHVlLm51bGwoKSA9
PSBmYWxzZSk7CiAKLSAgICAgICAgaWYoMCAhPSBleGVjdXRpb25Db250ZXh0LmdldFRyYWNlTGlz
dGVuZXJzKCkpCisgICAgICAgIGlmICgwICE9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0VHJhY2VMaXN0
ZW5lcnMoKSkKICAgICAgICAgewogICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dC5maXJlU2Vs
ZWN0RXZlbnQoCiAgICAgICAgICAgICAgICAgU2VsZWN0aW9uRXZlbnQoCkBAIC0yODMsNyArMjgz
LDcgQEAKIAogCiBjb25zdCBYUGF0aCoKLUVsZW1Db3B5T2Y6OmdldFhQYXRoKHVuc2lnbmVkIGlu
dCAgIGluZGV4KSBjb25zdAorRWxlbUNvcHlPZjo6Z2V0WFBhdGgoWGFsYW5TaXplX3QgICAgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluZGV4ID09IDAgPyBtX3NlbGVjdFBhdHRlcm4gOiAw
OwogfQpJbmRleDogc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxlbUF0dHJpYnV0ZVNldEFsbG9jYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxlbUF0dHJpYnV0ZVNl
dEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9YYWxh
bkVsZW1BdHRyaWJ1dGVTZXRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw5IEBACiAKIAogCi1YYWxhbkVsZW1BdHRyaWJ1dGVTZXRBbGxvY2F0b3I6OlhhbGFuRWxlbUF0
dHJpYnV0ZVNldEFsbG9jYXRvcihNZW1vcnlNYW5hZ2VyVHlwZSYgIHRoZU1hbmFnZXIsIHNpemVf
dHlwZQl0aGVCbG9ja0NvdW50KSA6CitYYWxhbkVsZW1BdHRyaWJ1dGVTZXRBbGxvY2F0b3I6Olhh
bGFuRWxlbUF0dHJpYnV0ZVNldEFsbG9jYXRvcigKKyAgICAgICAgICAgIE1lbW9yeU1hbmFnZXJU
eXBlJiAgdGhlTWFuYWdlciwKKyAgICAgICAgICAgIHNpemVfdHlwZQkgICAgICAgIHRoZUJsb2Nr
Q291bnQpIDoKIAltX2FsbG9jYXRvcih0aGVNYW5hZ2VyLCB0aGVCbG9ja0NvdW50KQogewogfQpA
QCAtNDEsOCArNDMsOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0
cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJ
Y29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVy
LAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpCisJCQlYYWxhbkZpbGVMb2MJCQkJCWxpbmVO
dW1iZXIsCisJCQlYYWxhbkZpbGVMb2MJCQkJCWNvbHVtbk51bWJlcikKIHsKIAlkYXRhX3R5cGUq
IGNvbnN0CXRoZUJsb2NrID0gbV9hbGxvY2F0b3IuYWxsb2NhdGVCbG9jaygpOwogCWFzc2VydCh0
aGVCbG9jayAhPSAwKTsKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtQXR0cmlidXRlLmhwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hTTFQvRWxlbUF0dHJpYnV0ZS5ocHAJKHJldmlzaW9u
IDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9FbGVtQXR0cmlidXRlLmhwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsOCArNTIsOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQm
CWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVl
LAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5l
TnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJ
CSAgICBsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAJ
dmlydHVhbAogCX5FbGVtQXR0cmlidXRlKCk7CkluZGV4OiBzcmMveGFsYW5jL1hTTFQvWGFsYW5F
bGVtRWxlbWVudEFsbG9jYXRvci5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1hh
bGFuRWxlbUVsZW1lbnRBbGxvY2F0b3IuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFs
YW5jL1hTTFQvWGFsYW5FbGVtRWxlbWVudEFsbG9jYXRvci5ocHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDkgQEAKIAkgKgogCSAqIEBwYXJhbSB0aGVCbG9ja1NpemUgVGhlIGJsb2NrIHNp
emUuCiAJICovCi0JWGFsYW5FbGVtRWxlbWVudEFsbG9jYXRvcihNZW1vcnlNYW5hZ2VyVHlwZSYg
IHRoZU1hbmFnZXIsIHNpemVfdHlwZQkJdGhlQmxvY2tDb3VudCk7CisJWGFsYW5FbGVtRWxlbWVu
dEFsbG9jYXRvcigKKyAgICAgICAgICAgIE1lbW9yeU1hbmFnZXJUeXBlJiAgdGhlTWFuYWdlciwK
KyAgICAgICAgICAgIHNpemVfdHlwZQkJICAgIHRoZUJsb2NrQ291bnQpOwogCiAJflhhbGFuRWxl
bUVsZW1lbnRBbGxvY2F0b3IoKTsKIApAQCAtNzcsOCArNzksOCBAQAogCQkJU3R5bGVzaGVldENv
bnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJ
CQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAot
CQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOwor
CQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQljb2x1
bW5OdW1iZXIpOwogCiAJLyoqCiAJICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBvd25lZCBi
eSB0aGUgYWxsb2NhdG9yLi4uCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvWGFsYW5FbGVtQXR0cmli
dXRlQWxsb2NhdG9yLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hTTFQvWGFsYW5FbGVt
QXR0cmlidXRlQWxsb2NhdG9yLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9Y
U0xUL1hhbGFuRWxlbUF0dHJpYnV0ZUFsbG9jYXRvci5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDcgKzU3LDkgQEAKIAkgKgogCSAqIEBwYXJhbSB0aGVCbG9ja1NpemUgVGhlIGJsb2NrIHNpemUu
CiAJICovCi0JWGFsYW5FbGVtQXR0cmlidXRlQWxsb2NhdG9yKE1lbW9yeU1hbmFnZXJUeXBlJiAg
dGhlTWFuYWdlciwgc2l6ZV90eXBlCQl0aGVCbG9ja0NvdW50KTsKKwlYYWxhbkVsZW1BdHRyaWJ1
dGVBbGxvY2F0b3IoCisgICAgICAgICAgICAgICAgTWVtb3J5TWFuYWdlclR5cGUmICB0aGVNYW5h
Z2VyLAorICAgICAgICAgICAgICAgIHNpemVfdHlwZQkJICAgIHRoZUJsb2NrQ291bnQpOwogCiAJ
flhhbGFuRWxlbUF0dHJpYnV0ZUFsbG9jYXRvcigpOwogCQpAQCAtNzcsOCArNzksOCBAQAogCQkJ
U3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlT
dHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5
cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1
bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxl
TG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAJLyoqCiAJICogRGV0ZXJtaW5lIGlmIGFuIG9iamVj
dCBpcyBvd25lZCBieSB0aGUgYWxsb2NhdG9yLi4uCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvU3R5
bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMv
eGFsYW5jL1hTTFQvU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0LmNwcAkocmV2
aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRDb25zdHJ1Y3Rpb25D
b250ZXh0RGVmYXVsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMSw4ICs2MzEsOCBAQAogICAg
ICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQs
CiAgICAgICAgIFN0eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUs
CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3RUeXBlJiAgICAgICAgYXR0cywKLSAgICAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikKKyAgICAgICAgWGFsYW5G
aWxlTG9jICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAorICAgICAgICBYYWxhbkZpbGVM
b2MgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIFR5cGUq
ICAgdGhlUmVzdWx0OwogCkBAIC02NTYsOSArNjU2LDEyIEBACiAgICAgICAgICAgICBjb25zdCBB
dHRyaWJ1dGVMaXN0VHlwZSYgICAgYXR0cywKICAgICAgICAgICAgIGNvbnN0IExvY2F0b3JUeXBl
KiAgICAgICAgICBsb2NhdG9yKQogewotICAgIGNvbnN0IFhhbGFuTG9jYXRvcjo6c2l6ZV90eXBl
ICAgbGluZU51bWJlciA9IFhhbGFuTG9jYXRvcjo6Z2V0TGluZU51bWJlcihsb2NhdG9yKTsKLSAg
ICBjb25zdCBYYWxhbkxvY2F0b3I6OnNpemVfdHlwZSAgIGNvbHVtbk51bWJlciA9IFhhbGFuTG9j
YXRvcjo6Z2V0Q29sdW1uTnVtYmVyKGxvY2F0b3IpOworICAgIGNvbnN0IFhhbGFuRmlsZUxvYyAg
bGluZU51bWJlciA9CisgICAgICAgIFhhbGFuTG9jYXRvcjo6Z2V0TGluZU51bWJlcihsb2NhdG9y
KTsKIAorICAgIGNvbnN0IFhhbGFuRmlsZUxvYyAgY29sdW1uTnVtYmVyID0KKyAgICAgICAgWGFs
YW5Mb2NhdG9yOjpnZXRDb2x1bW5OdW1iZXIobG9jYXRvcik7CisKICAgICBFbGVtVGVtcGxhdGVF
bGVtZW50KiAgICB0aGVFbGVtZW50ID0gMDsKIAogICAgIHN3aXRjaCh0b2tlbikKQEAgLTk3NSw5
ICs5NzgsMTIgQEAKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3RUeXBlJiAgICBhdHRz
LAogICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAgICAgIGxvY2F0b3IpCiB7Ci0g
ICAgY29uc3QgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICBsaW5lTnVtYmVyID0gWGFsYW5Mb2Nh
dG9yOjpnZXRMaW5lTnVtYmVyKGxvY2F0b3IpOwotICAgIGNvbnN0IFhhbGFuTG9jYXRvcjo6c2l6
ZV90eXBlICAgY29sdW1uTnVtYmVyID0gWGFsYW5Mb2NhdG9yOjpnZXRDb2x1bW5OdW1iZXIobG9j
YXRvcik7CisgICAgY29uc3QgWGFsYW5GaWxlTG9jICBsaW5lTnVtYmVyID0KKyAgICAgICAgWGFs
YW5Mb2NhdG9yOjpnZXRMaW5lTnVtYmVyKGxvY2F0b3IpOwogCisgICAgY29uc3QgWGFsYW5GaWxl
TG9jICBjb2x1bW5OdW1iZXIgPQorICAgICAgICBYYWxhbkxvY2F0b3I6OmdldENvbHVtbk51bWJl
cihsb2NhdG9yKTsKKwogICAgIEVsZW1UZW1wbGF0ZUVsZW1lbnQqICAgIHRoZUVsZW1lbnQgPSAw
OwogCiAgICAgaWYgKHRva2VuID09IEVMRU1OQU1FX0xJVEVSQUxfUkVTVUxUKQpAQCAtMTAzMiw5
ICsxMDM4LDYgQEAKICAgICAgICAgICAgIEV4dGVuc2lvbk5TSGFuZGxlciYgICAgICAgICBoYW5k
bGVyLAogICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAgICAgIGxvY2F0b3IpCiB7
Ci0gICAgY29uc3QgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICBsaW5lTnVtYmVyID0gWGFsYW5M
b2NhdG9yOjpnZXRMaW5lTnVtYmVyKGxvY2F0b3IpOwotICAgIGNvbnN0IFhhbGFuTG9jYXRvcjo6
c2l6ZV90eXBlICAgY29sdW1uTnVtYmVyID0gWGFsYW5Mb2NhdG9yOjpnZXRDb2x1bW5OdW1iZXIo
bG9jYXRvcik7Ci0KICAgICBtX2FsbG9jYXRlZEVsZW1lbnRzLnB1c2hfYmFjaygwKTsKIAogICAg
IG1fYWxsb2NhdGVkRWxlbWVudHMuYmFjaygpID0gRWxlbUV4dGVuc2lvbkNhbGw6OmNyZWF0ZSgK
QEAgLTEwNDMsOCArMTA0Niw4IEBACiAgICAgICAgICAgICBzdHlsZXNoZWV0VHJlZSwKICAgICAg
ICAgICAgIG5hbWUsCiAgICAgICAgICAgICBhdHRzLAotICAgICAgICAgICAgbGluZU51bWJlciwK
LSAgICAgICAgICAgIGNvbHVtbk51bWJlciwKKyAgICAgICAgICAgIFhhbGFuTG9jYXRvcjo6Z2V0
TGluZU51bWJlcihsb2NhdG9yKSwKKyAgICAgICAgICAgIFhhbGFuTG9jYXRvcjo6Z2V0Q29sdW1u
TnVtYmVyKGxvY2F0b3IpLAogICAgICAgICAgICAgaGFuZGxlcik7CiAKICAgICByZXR1cm4gbV9h
bGxvY2F0ZWRFbGVtZW50cy5iYWNrKCk7CkBAIC0xMDYxLDE0ICsxMDY0LDExIEBACiAgICAgICAg
ICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU91dHB1dEVzY2FwaW5nLAog
ICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAgICAgIGxvY2F0b3IpCiB7Ci0gICAg
Y29uc3QgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICBsaW5lTnVtYmVyID0gWGFsYW5Mb2NhdG9y
OjpnZXRMaW5lTnVtYmVyKGxvY2F0b3IpOwotICAgIGNvbnN0IFhhbGFuTG9jYXRvcjo6c2l6ZV90
eXBlICAgY29sdW1uTnVtYmVyID0gWGFsYW5Mb2NhdG9yOjpnZXRDb2x1bW5OdW1iZXIobG9jYXRv
cik7Ci0KICAgICByZXR1cm4gbV9lbGVtVGV4dExpdGVyYWxBbGxvY2F0b3IuY3JlYXRlKAogICAg
ICAgICAgICAgKnRoaXMsCiAgICAgICAgICAgICBzdHlsZXNoZWV0VHJlZSwKLSAgICAgICAgICAg
IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICBjb2x1bW5OdW1iZXIsCisgICAgICAgICAgICBYYWxh
bkxvY2F0b3I6OmdldExpbmVOdW1iZXIobG9jYXRvciksCisgICAgICAgICAgICBYYWxhbkxvY2F0
b3I6OmdldENvbHVtbk51bWJlcihsb2NhdG9yKSwKICAgICAgICAgICAgIGNoYXJzLAogICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgIGxlbmd0aCwKQEAgLTE5OTIsNyArMTk5Miw3IEBACiAgICAg
fQogfTsKIAotY29uc3QgdW5zaWduZWQgaW50ICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4
dERlZmF1bHQ6OnNfZWxlbWVudFRva2VuVGFibGVTaXplID0KK2NvbnN0IFhhbGFuU2l6ZV90ICBT
dHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dERlZmF1bHQ6OnNfZWxlbWVudFRva2VuVGFibGVT
aXplID0KICAgICAgICAgc2l6ZW9mKHNfZWxlbWVudFRva2VuVGFibGUpIC8gc2l6ZW9mKHNfZWxl
bWVudFRva2VuVGFibGVbMF0pOwogCiBjb25zdCBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4
dERlZmF1bHQ6OkVsZW1lbnRUb2tlblRhYmxlRW50cnkmICAgICBTdHlsZXNoZWV0Q29uc3RydWN0
aW9uQ29udGV4dERlZmF1bHQ6OnNfZWxlbWVudFRva2VuVGFibGVMYXN0ID0KSW5kZXg6IHNyYy94
YWxhbmMvWFNMVC9TdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dC5ocHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0LmhwcAkocmV2
aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRDb25zdHJ1Y3Rpb25D
b250ZXh0LmhwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDYgQEAKIAogCXR5cGVkZWYg
WGFsYW5RTmFtZTo6TmFtZXNwYWNlc1N0YWNrVHlwZQkJTmFtZXNwYWNlc1N0YWNrVHlwZTsKIAot
I2lmIGRlZmluZWQoWEFMQU5fU1RSSUNUX0FOU0lfSEVBREVSUykKLQl0eXBlZGVmIHN0ZDo6c2l6
ZV90CQlzaXplX3R5cGU7Ci0jZWxzZQotCXR5cGVkZWYgc2l6ZV90CQkJc2l6ZV90eXBlOwotI2Vu
ZGlmCi0KIAkvKioKIAkgKiBJRHMgZm9yIFhTTCBlbGVtZW50IHR5cGVzLiBUaGVzZSBhcmUgdGhl
IHZhbHVlcwogCSAqIHRoYXQgbXVzdCBiZSByZXR1cm5lZCBieSBnZXRFbGVtZW50VG9rZW4oKS4K
SW5kZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtRGVjaW1hbEZvcm1hdC5ocHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1EZWNpbWFsRm9ybWF0LmhwcAkocmV2aXNpb24gNzA2MTI5
KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1EZWNpbWFsRm9ybWF0LmhwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsOCArNTcsOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNv
bnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAog
CQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVt
YmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQls
aW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAKIAl+RWxl
bURlY2ltYWxGb3JtYXQoKTsKQEAgLTgzLDcgKzgzLDcgQEAKIAl9CiAKIAl2aXJ0dWFsCWNvbnN0
IFhQYXRoKgotCWdldFhQYXRoKHVuc2lnbmVkIGludAlpbmRleCA9IDApIGNvbnN0OworCWdldFhQ
YXRoKFhhbGFuU2l6ZV90ICAgIGluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKIApJbmRleDogc3Jj
L3hhbGFuYy9YU0xUL0VsZW1BdHRyaWJ1dGVTZXQuaHBwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxh
bmMvWFNMVC9FbGVtQXR0cmlidXRlU2V0LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hh
bGFuYy9YU0xUL0VsZW1BdHRyaWJ1dGVTZXQuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0
OSw4IEBACiAJCQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29uc3RydWN0aW9uQ29u
dGV4dCwKIAkJCVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCiAJCQljb25zdCBBdHRy
aWJ1dGVMaXN0VHlwZSYJCWF0dHMsCi0JCQlpbnQJCQkJCQkJCWxpbmVOdW1iZXIsCi0JCQlpbnQJ
CQkJCQkJCWNvbHVtbk51bWJlcik7CisJCQlYYWxhbkZpbGVMb2MJCQkJICAgIGxpbmVOdW1iZXIs
CisJCQlYYWxhbkZpbGVMb2MJCQkJCWNvbHVtbk51bWJlcik7CiAKIAl2aXJ0dWFsCiAJfkVsZW1B
dHRyaWJ1dGVTZXQoKTsKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0RXhlY3V0aW9u
Q29udGV4dERlZmF1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9TdHlsZXNo
ZWV0RXhlY3V0aW9uQ29udGV4dERlZmF1bHQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMv
eGFsYW5jL1hTTFQvU3R5bGVzaGVldEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTI4LDkgKzkyOCw5IEBACiAKIHZvaWQKIFN0eWxlc2hlZXRFeGVjdXRpb25D
b250ZXh0RGVmYXVsdDo6Y2hhcmFjdGVycygKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hh
ciogICAgICAgICBjaCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBz
dGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBsZW5ndGgpCisg
ICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAgICAgICAgIGZsX3Np
emVfdHlwZSAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgZmxfc2l6ZV90eXBlICAgICAg
ICAgICAgbGVuZ3RoKQogewogICAgIGFzc2VydChtX3hzbHRQcm9jZXNzb3IgIT0gMCk7CiAKQEAg
LTk0MSw5ICs5NDEsOSBAQAogCiB2b2lkCiBTdHlsZXNoZWV0RXhlY3V0aW9uQ29udGV4dERlZmF1
bHQ6OmNoYXJhY3RlcnNSYXcoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAg
ICAgY2gsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0g
ICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKQorICAgICAgICAg
ICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgY2gsCisgICAgICAgICAgICBmbF9zaXplX3R5cGUg
ICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIGZsX3NpemVfdHlwZSAgICAgICAgICAgIGxl
bmd0aCkKIHsKICAgICBhc3NlcnQobV94c2x0UHJvY2Vzc29yICE9IDApOwogCkluZGV4OiBzcmMv
eGFsYW5jL1hTTFQvRWxlbVNvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9F
bGVtU29ydC5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9FbGVtU29y
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICAgICAgICAgICAgIFN0eWxl
c2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAg
ICAgIFN0eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAgICAg
ICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMsCi0gICAgICAgICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCi0gICAgICAgICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikgOgorICAgICAg
ICAgICAgWGFsYW5GaWxlTG9jICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAorICAgICAg
ICAgICAgWGFsYW5GaWxlTG9jICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIpIDoKICAg
ICBFbGVtVGVtcGxhdGVFbGVtZW50KGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZXNoZWV0VHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVO
dW1iZXIsCkBAIC01MiwzOCArNTIsMzggQEAKICAgICBtX29yZGVyQVZUKDApLAogICAgIG1fY2Fz
ZU9yZGVyQVZUKDApCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG5BdHRycyA9IGF0dHMuZ2V0
TGVuZ3RoKCk7CisgICAgY29uc3QgWGFsYW5TaXplX3QgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgo
KTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7IGkrKykKKyAgICBm
b3IgKFhhbGFuU2l6ZV90IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCiAgICAgewogICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUoaSk7CiAKLSAg
ICAgICAgaWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX1NFTEVDVCkpCisgICAg
ICAgIGlmIChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfU0VMRUNUKSkKICAgICAg
ICAgewogICAgICAgICAgICAgbV9zZWxlY3RQYXR0ZXJuIAogICAgICAgICAgICAgICAgID0gY29u
c3RydWN0aW9uQ29udGV4dC5jcmVhdGVYUGF0aChnZXRMb2NhdG9yKCksIGF0dHMuZ2V0VmFsdWUo
aSksICp0aGlzKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGVxdWFscyhhbmFtZSwgQ29u
c3RhbnRzOjpBVFRSTkFNRV9MQU5HKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxzKGFuYW1lLCBD
b25zdGFudHM6OkFUVFJOQU1FX0xBTkcpKQogICAgICAgICB7ICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fbGFuZ0FWVCA9CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdGlvbkNvbnRleHQu
Y3JlYXRlQVZUKGdldExvY2F0b3IoKSwgYW5hbWUsIGF0dHMuZ2V0VmFsdWUoaSksICp0aGlzKTsK
ICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRS
TkFNRV9EQVRBVFlQRSkpCisgICAgICAgIGVsc2UgaWYgKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRz
OjpBVFRSTkFNRV9EQVRBVFlQRSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZGF0YVR5cGVB
VlQgPQogICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rpb25Db250ZXh0LmNyZWF0ZUFWVChn
ZXRMb2NhdG9yKCksIGFuYW1lLCBhdHRzLmdldFZhbHVlKGkpLCAqdGhpcyk7CiAgICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZihlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfT1JERVIp
KQorICAgICAgICBlbHNlIGlmIChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfT1JE
RVIpKQogICAgICAgICB7CiAgICAgICAgICAgICBtX29yZGVyQVZUID0KICAgICAgICAgICAgICAg
ICAgICAgY29uc3RydWN0aW9uQ29udGV4dC5jcmVhdGVBVlQoZ2V0TG9jYXRvcigpLCBhbmFtZSwg
YXR0cy5nZXRWYWx1ZShpKSwgKnRoaXMpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoZXF1
YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX0NBU0VPUkRFUikpCisgICAgICAgIGVsc2Ug
aWYgKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFNRV9DQVNFT1JERVIpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2Nhc2VPcmRlckFWVCA9CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0cnVjdGlvbkNvbnRleHQuY3JlYXRlQVZUKGdldExvY2F0b3IoKSwgYW5hbWUsIGF0dHMuZ2V0
VmFsdWUoaSksICp0aGlzKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGlzQXR0ck9LKAor
ICAgICAgICBlbHNlIGlmIChpc0F0dHJPSygKICAgICAgICAgICAgICAgICAgICAgYW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgIGF0dHMsCiAgICAgICAgICAgICAgICAgICAgIGksCkBAIC0xMjYs
OCArMTI2LDggQEAKICAgICAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAg
Y29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAgICAgIFN0eWxlc2hlZXQmICAgICAgICAgICAg
ICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0
VHlwZSYgICAgICAgIGF0dHMsCi0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXIsCi0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbHVtbk51bWJlcikKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAg
ICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAg
ICAgICAgICAgY29sdW1uTnVtYmVyKQogewogICAgIHR5cGVkZWYgRWxlbVNvcnQgVGhpc1R5cGU7
CiAKQEAgLTE2Myw3ICsxNjMsNyBAQAogCiAKIGNvbnN0IFhQYXRoKgotRWxlbVNvcnQ6OmdldFhQ
YXRoKHVuc2lnbmVkIGludCAgICAgaW5kZXgpIGNvbnN0CitFbGVtU29ydDo6Z2V0WFBhdGgoWGFs
YW5TaXplX3QgIGluZGV4KSBjb25zdAogewogICAgIHJldHVybiBpbmRleCA9PSAwID8gbV9zZWxl
Y3RQYXR0ZXJuIDogMDsKIH0KSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtRWxlbWVudC5ocHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1FbGVtZW50LmhwcAkocmV2aXNpb24g
NzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1FbGVtZW50LmhwcAkod29ya2luZyBjb3B5
KQpAQCAtNjAsOCArNjAsOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNv
bnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAog
CQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVt
YmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQls
aW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAJdmlydHVh
bAogCX5FbGVtRWxlbWVudCgpOwpJbmRleDogc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxlbUFwcGx5
VGVtcGxhdGVzQWxsb2NhdG9yLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hTTFQvWGFs
YW5FbGVtQXBwbHlUZW1wbGF0ZXNBbGxvY2F0b3IuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBz
cmMveGFsYW5jL1hTTFQvWGFsYW5FbGVtQXBwbHlUZW1wbGF0ZXNBbGxvY2F0b3IuaHBwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw5IEBACiAJICoKIAkgKiBAcGFyYW0gdGhlQmxvY2tTaXpl
IFRoZSBibG9jayBzaXplLgogCSAqLwotCVhhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxsb2NhdG9y
KE1lbW9yeU1hbmFnZXJUeXBlJiAgdGhlTWFuYWdlciwgc2l6ZV90eXBlCQl0aGVCbG9ja0NvdW50
KTsKKwlYYWxhbkVsZW1BcHBseVRlbXBsYXRlc0FsbG9jYXRvcigKKyAgICAgICAgICAgIE1lbW9y
eU1hbmFnZXJUeXBlJiAgdGhlTWFuYWdlciwKKyAgICAgICAgICAgIHNpemVfdHlwZQkJICAgIHRo
ZUJsb2NrQ291bnQpOwogCiAJflhhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxsb2NhdG9yKCk7CiAJ
CkBAIC03Nyw4ICs3OSw4IEBACiAJCQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29u
c3RydWN0aW9uQ29udGV4dCwKIAkJCVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCiAJ
CQljb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYJCWF0dHMsCi0JCQlpbnQJCQkJCQkJCWxpbmVOdW1i
ZXIsCi0JCQlpbnQJCQkJCQkJCWNvbHVtbk51bWJlcik7CisJCQlYYWxhbkZpbGVMb2MJCQkJCWxp
bmVOdW1iZXIsCisJCQlYYWxhbkZpbGVMb2MJCQkJCWNvbHVtbk51bWJlcik7CiAKIAkvKioKIAkg
KiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIG93bmVkIGJ5IHRoZSBhbGxvY2F0b3IuLi4KSW5k
ZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtQ29weU9mLmhwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFs
YW5jL1hTTFQvRWxlbUNvcHlPZi5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMv
WFNMVC9FbGVtQ29weU9mLmhwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQAogCQkJ
U3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlT
dHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5
cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1
bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxl
TG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCQogCiAKQEAgLTc2LDcgKzc2LDcgQEAKIAlleGVjdXRl
KFN0eWxlc2hlZXRFeGVjdXRpb25Db250ZXh0JgkJZXhlY3V0aW9uQ29udGV4dCkgY29uc3Q7CiAj
ZW5kaWYKIAl2aXJ0dWFsCWNvbnN0IFhQYXRoKgotCWdldFhQYXRoKHVuc2lnbmVkIGludAlpbmRl
eCA9IDApIGNvbnN0OworCWdldFhQYXRoKFhhbGFuU2l6ZV90ICAgIGluZGV4KSBjb25zdDsKIAog
cHJpdmF0ZToKIApJbmRleDogc3JjL3hhbGFuYy9YU0xUL0VsZW1BcHBseVRlbXBsYXRlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1BcHBseVRlbXBsYXRlcy5jcHAJKHJl
dmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9FbGVtQXBwbHlUZW1wbGF0ZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0
Q29uc3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBT
dHlsZXNoZWV0JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAg
ICAgY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAg
IFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAg
IFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgUGFy
ZW50VHlwZSgKICAgICAgICAgY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAgc3R5bGVzaGVl
dFRyZWUsCkBAIC02MCw5ICs2MCw5IEBACiAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25D
b250ZXh0OjpFTEVNTkFNRV9BUFBMWV9URU1QTEFURVMpLAogICAgIG1fbW9kZSgwKQogewotICAg
IGNvbnN0IHVuc2lnbmVkICBpbnQgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgoKTsKKyAgICBjb25z
dCBYYWxhblNpemVfdCAgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgoKTsKIAotICAgIGZvcih1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7IGkrKykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkg
PSAwOyBpIDwgbkF0dHJzOyBpKyspCiAgICAgewogICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIq
IGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUoaSk7CiAKSW5kZXg6IHNyYy94YWxhbmMvWFNM
VC9YYWxhbkVsZW1BdHRyaWJ1dGVTZXRBbGxvY2F0b3IuaHBwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94
YWxhbmMvWFNMVC9YYWxhbkVsZW1BdHRyaWJ1dGVTZXRBbGxvY2F0b3IuaHBwCShyZXZpc2lvbiA3
MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQvWGFsYW5FbGVtQXR0cmlidXRlU2V0QWxsb2NhdG9y
LmhwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQAogCSAqCiAJICogQHBhcmFtIHRo
ZUJsb2NrU2l6ZSBUaGUgYmxvY2sgc2l6ZS4KIAkgKi8KLQlYYWxhbkVsZW1BdHRyaWJ1dGVTZXRB
bGxvY2F0b3IoTWVtb3J5TWFuYWdlclR5cGUmICB0aGVNYW5hZ2VyLCBzaXplX3R5cGUJCXRoZUJs
b2NrQ291bnQpOworCVhhbGFuRWxlbUF0dHJpYnV0ZVNldEFsbG9jYXRvcigKKyAgICAgICAgICAg
IE1lbW9yeU1hbmFnZXJUeXBlJiAgdGhlTWFuYWdlciwKKyAgICAgICAgICAgIHNpemVfdHlwZQkJ
ICAgIHRoZUJsb2NrQ291bnQpOwogCiAJflhhbGFuRWxlbUF0dHJpYnV0ZVNldEFsbG9jYXRvcigp
OwogCQpAQCAtNzcsOCArNzksOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQm
CWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVl
LAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5l
TnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJ
CQlsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAJLyoq
CiAJICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBvd25lZCBieSB0aGUgYWxsb2NhdG9yLi4u
CkluZGV4OiBzcmMveGFsYW5jL1hTTFQvU3R5bGVzaGVldEV4ZWN1dGlvbkNvbnRleHQuaHBwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0RXhlY3V0aW9uQ29udGV4dC5o
cHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0RXhlY3V0
aW9uQ29udGV4dC5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKIAogCiAjaW5j
bHVkZSA8eGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9BdHRyaWJ1dGVMaXN0SW1wbC5ocHA+CisjaW5j
bHVkZSA8eGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9Gb3JtYXR0ZXJMaXN0ZW5lci5ocHA+CiAjaW5j
bHVkZSA8eGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YYWxhbkNvbGxhdGlvblNlcnZpY2VzLmhwcD4K
IAogCkBAIC0xMDUsMTIgKzEwNiwxMCBAQAogewogcHVibGljOgogCi0jaWYgZGVmaW5lZChYQUxB
Tl9TVFJJQ1RfQU5TSV9IRUFERVJTKQotICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgIHRsX3Np
emVfdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBzaXplX3QgICAgICAgICAgdGxfc2l6ZV90eXBl
OwotI2VuZGlmCisgICAgdHlwZWRlZiBYYWxhblNpemVfdCAgICAgdGxfc2l6ZV90eXBlOwogCisg
ICAgdHlwZWRlZiBGb3JtYXR0ZXJMaXN0ZW5lcjo6c2l6ZV90eXBlICAgIGZsX3NpemVfdHlwZTsK
KwogI2lmIGRlZmluZWQoWEFMQU5fTk9fU1REX05BTUVTUEFDRSkKICAgICB0eXBlZGVmIG9zdHJl
YW0gICAgICAgICBTdHJlYW1UeXBlOwogI2Vsc2UKQEAgLTEwNjksOSArMTA2OCw5IEBACiAgICAg
ICovCiAgICAgdmlydHVhbCB2b2lkCiAgICAgY2hhcmFjdGVycygKLSAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciogICAgICAgICBjaCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUg
ICBsZW5ndGgpID0gMDsKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIGNoLAor
ICAgICAgICAgICAgZmxfc2l6ZV90eXBlICAgICAgICAgICAgc3RhcnQsCisgICAgICAgICAgICBm
bF9zaXplX3R5cGUgICAgICAgICAgICBsZW5ndGgpID0gMDsKIAogICAgIC8qKgogICAgICAqIFJl
Y2VpdmUgbm90aWZpY2F0aW9uIG9mIGNoYXJhY3RlciBkYXRhLiBJZiBhdmFpbGFibGUsIHdoZW4g
dGhlCkBAIC0xMDg0LDkgKzEwODMsOSBAQAogICAgICAqLwogICAgIHZpcnR1YWwgdm9pZAogICAg
IGNoYXJhY3RlcnNSYXcoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAg
Y2gsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAg
ICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKSA9IDA7CisgICAgICAg
ICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAgICAgICAgIGZsX3NpemVfdHlw
ZSAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgZmxfc2l6ZV90eXBlICAgICAgICAgICAg
bGVuZ3RoKSA9IDA7CiAKICAgICAvKioKICAgICAgKiBDYWxsZWQgd2hlbiBhIENvbW1lbnQgaXMg
dG8gYmUgY29uc3RydWN0ZWQuCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvRWxlbVRlbXBsYXRlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1UZW1wbGF0ZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQvRWxlbVRlbXBsYXRl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDggQEAKIEVsZW1UZW1wbGF0
ZUVsZW1lbnQ6OkVsZW1UZW1wbGF0ZUVsZW1lbnQoCiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29u
c3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHls
ZXNoZWV0JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAotICAgICAgICAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIsCisgICAgICAgICAg
ICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCisgICAgICAgICAg
ICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciwKICAgICAgICAg
ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNsVG9rZW4pIDoKICAgICBQcmVm
aXhSZXNvbHZlcigpLAogICAgIG1fc3R5bGVzaGVldChzdHlsZXNoZWV0VHJlZSksCkBAIC0xMTIs
OCArMTEyLDggQEAKICAgICAgICAgICAgIFN0eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAg
c3R5bGVzaGVldFRyZWUsCiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHhzbFRva2VuLAogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcmICAgICAgICAg
ICBiYXNlVVJJLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAg
ICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAg
ICAgY29sdW1uTnVtYmVyKSA6CiAgICAgUHJlZml4UmVzb2x2ZXIoKSwKICAgICBtX3N0eWxlc2hl
ZXQoc3R5bGVzaGVldFRyZWUpLAogICAgIG1fbmFtZXNwYWNlc0hhbmRsZXIoY29uc3RydWN0aW9u
Q29udGV4dC5nZXRNZW1vcnlNYW5hZ2VyKCkpLApAQCAtMTU4LDcgKzE1OCw3IEBACiBFbGVtVGVt
cGxhdGVFbGVtZW50Ojppc0F0dHJPSygKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciog
ICAgICAgICAgICAgYXR0ck5hbWUsCiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlw
ZSYgICAgICAgIGF0dHMsCi0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWNoLAorICAgICAgICAgICAgWGFsYW5TaXplX3QgICAgICAgICAgICAgICAgICAgICB3
aGljaCwKICAgICAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3Ry
dWN0aW9uQ29udGV4dCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdHlsZXNoZWV0LmlzQXR0ck9L
KGF0dHJOYW1lLCBhdHRzLCB3aGljaCwgY29uc3RydWN0aW9uQ29udGV4dCk7CkBAIC0xNzEsNyAr
MTcxLDcgQEAKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgICAgICAgICAgZWxl
bWVudE5hbWUsIAogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgICAgICBh
bmFtZSwgCiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMs
Ci0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoLAorICAg
ICAgICAgICAgWGFsYW5TaXplX3QgICAgICAgICAgICAgICAgICAgICB3aGljaCwKICAgICAgICAg
ICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCkK
IHsKICAgICBpZihjb25zdHJ1Y3Rpb25Db250ZXh0LmlzWE1MU3BhY2VBdHRyaWJ1dGUoCkBAIC0x
MDYyLDEyICsxMDYyLDEzIEBACiAKIAogY29uc3QgWFBhdGgqCi1FbGVtVGVtcGxhdGVFbGVtZW50
OjpnZXRYUGF0aCh1bnNpZ25lZCBpbnQgIC8qIGluZGV4ICovKSBjb25zdAorRWxlbVRlbXBsYXRl
RWxlbWVudDo6Z2V0WFBhdGgoWGFsYW5TaXplX3QgICAvKiBpbmRleCAqLykgY29uc3QKIHsKICAg
ICByZXR1cm4gMDsKIH0KIAogCisKICNpZiAhZGVmaW5lZChYQUxBTl9SRUNVUlNJVkVfU1RZTEVT
SEVFVF9FWEVDVVRJT04pCiBjb25zdCBFbGVtVGVtcGxhdGVFbGVtZW50KgogRWxlbVRlbXBsYXRl
RWxlbWVudDo6ZmluZFRlbXBsYXRlVG9UcmFuc2Zvcm1DaGlsZCgKQEAgLTE1MDQsOCArMTUwNSw4
IEBACiAKIAogRWxlbVRlbXBsYXRlRWxlbWVudDo6TG9jYXRvclByb3h5OjpMb2NhdG9yUHJveHko
Ci0gICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0aGVMaW5lTnVtYmVyLAotICAg
ICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgdGhlQ29sdW1uTnVtYmVyLAorICAgICAg
ICAgICAgWE1MRmlsZUxvYyAgICAgICAgICAgICAgdGhlTGluZU51bWJlciwKKyAgICAgICAgICAg
IFhNTEZpbGVMb2MgICAgICAgICAgICAgIHRoZUNvbHVtbk51bWJlciwKICAgICAgICAgICAgIGNv
bnN0IFhhbGFuRE9NU3RyaW5nJiAgIHRoZVVSSSkgOgogICAgIG1fbGluZU51bWJlcih0aGVMaW5l
TnVtYmVyKSwKICAgICBtX2NvbHVtbk51bWJlcih0aGVDb2x1bW5OdW1iZXIpLApAQCAtMTUyMSw3
ICsxNTIyLDcgQEAKIAogCiAKLUVsZW1UZW1wbGF0ZUVsZW1lbnQ6OkxvY2F0b3JQcm94eTo6c2l6
ZV90eXBlCitYTUxGaWxlTG9jCiBFbGVtVGVtcGxhdGVFbGVtZW50OjpMb2NhdG9yUHJveHk6Omdl
dExpbmVOdW1iZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpbmVOdW1iZXI7CkBAIC0xNTI5
LDcgKzE1MzAsNyBAQAogCiAKIAotRWxlbVRlbXBsYXRlRWxlbWVudDo6TG9jYXRvclByb3h5Ojpz
aXplX3R5cGUKK1hNTEZpbGVMb2MKIEVsZW1UZW1wbGF0ZUVsZW1lbnQ6OkxvY2F0b3JQcm94eTo6
Z2V0Q29sdW1uTnVtYmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb2x1bW5OdW1iZXI7Cklu
ZGV4OiBzcmMveGFsYW5jL1hTTFQvU3R5bGVzaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hh
bGFuYy9YU0xUL1N0eWxlc2hlZXQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5j
L1hTTFQvU3R5bGVzaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw5ICsyNTIsOSBAQAog
ICAgIFhQYXRoKiAgICAgICAgICAgICAgICAgIG1hdGNoQXR0ciA9IDA7CiAgICAgWFBhdGgqICAg
ICAgICAgICAgICAgICAgdXNlQXR0ciA9IDA7CiAgCi0gICAgY29uc3QgdW5zaWduZWQgaW50ICBu
QXR0cnMgPSBhdHRzLmdldExlbmd0aCgpOworICAgIGNvbnN0IFhhbGFuU2l6ZV90ICAgbkF0dHJz
ID0gYXR0cy5nZXRMZW5ndGgoKTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBu
QXR0cnM7IGkrKykKKyAgICBmb3IoWGFsYW5TaXplX3QgaSA9IDA7IGkgPCBuQXR0cnM7IGkrKykK
ICAgICB7CiAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3QgICBhbmFtZSA9IGF0dHMu
Z2V0TmFtZShpKTsKIApAQCAtMzE3LDcgKzMxNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZigwID09IHRoZVFOYW1lKQorICAgIGlmICgwID09IHRoZVFOYW1lKQogICAgIHsKICAgICAg
ICAgY29uc3QgR2V0QW5kUmVsZWFzZUNhY2hlZFN0cmluZyAgICAgdGhlR3VhcmQoY29uc3RydWN0
aW9uQ29udGV4dCk7CiAKQEAgLTMzMSw3ICszMzEsNyBAQAogICAgICAgICAgICAgbG9jYXRvcik7
CiAgICAgfQogCi0gICAgaWYoMCA9PSBtYXRjaEF0dHIpCisgICAgaWYgKDAgPT0gbWF0Y2hBdHRy
KQogICAgIHsKICAgICAgICAgY29uc3QgR2V0QW5kUmVsZWFzZUNhY2hlZFN0cmluZyAgICAgdGhl
R3VhcmQoY29uc3RydWN0aW9uQ29udGV4dCk7CiAKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgICAg
ICAgICAgbG9jYXRvcik7CiAgICAgfQogCi0gICAgaWYoMCA9PSB1c2VBdHRyKQorICAgIGlmICgw
ID09IHVzZUF0dHIpCiAgICAgewogICAgICAgICBjb25zdCBHZXRBbmRSZWxlYXNlQ2FjaGVkU3Ry
aW5nICAgICB0aGVHdWFyZChjb25zdHJ1Y3Rpb25Db250ZXh0KTsKIApAQCAtMzc0LDEzICszNzQs
MTMgQEAKIHZvaWQKIFN0eWxlc2hlZXQ6OnB1c2hOYW1lc3BhY2VzKGNvbnN0IEF0dHJpYnV0ZUxp
c3RUeXBlJiAgICAgYXR0cykKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgICAgICBuQXR0cnMg
PSBhdHRzLmdldExlbmd0aCgpOworICAgIGNvbnN0IFhhbGFuU2l6ZV90ICAgICAgIG5BdHRycyA9
IGF0dHMuZ2V0TGVuZ3RoKCk7CiAKICAgICBOYW1lc3BhY2VWZWN0b3JUeXBlICAgICBuYW1lc3Bh
Y2VzKGdldE1lbW9yeU1hbmFnZXIoKSk7CiAKICAgICBYYWxhbkRPTVN0cmluZyAgICAgICAgICBw
cmVmaXgoZ2V0TWVtb3J5TWFuYWdlcigpKTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBuQXR0cnM7IGkrKykKKyAgICBmb3IoWGFsYW5TaXplX3QgaSA9IDA7IGkgPCBuQXR0cnM7
IGkrKykKICAgICB7CiAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3QgICBhbmFtZSA9
IGF0dHMuZ2V0TmFtZShpKTsKICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiBjb25zdCAgIHZh
bHVlID0gYXR0cy5nZXRWYWx1ZShpKTsKQEAgLTQzOCwxMiArNDM4LDEwIEBACiAgICAgICAgICAg
ICBTdHlsZXNoZWV0OjpQYXR0ZXJuVGFibGVWZWN0b3JUeXBlJiAgICAgdGhlTGlzdCwKICAgICAg
ICAgICAgIGNvbnN0IFhhbGFuTWF0Y2hQYXR0ZXJuRGF0YSogICAgICAgICAgICB0aGVQYXR0ZXJu
KQogewotCi0gICAgdHlwZWRlZiBTdHlsZXNoZWV0OjpzaXplX3R5cGUgICBzaXplX3R5cGU7CiAg
ICAgYXNzZXJ0KHRoZVBhdHRlcm4gIT0gMCk7CiAKICAgICBjb25zdCBkb3VibGUgICAgICAgIHRo
ZVBhdHRlcm5Qcmlvcml0eSA9IHRoZVBhdHRlcm4tPmdldFByaW9yaXR5T3JEZWZhdWx0KCk7Ci0g
ICAgY29uc3Qgc2l6ZV90eXBlICAgICB0aGVQYXR0ZXJuUG9zaXRpb24gPSB0aGVQYXR0ZXJuLT5n
ZXRQb3NpdGlvbigpOworICAgIGNvbnN0IFhhbGFuU2l6ZV90ICAgdGhlUGF0dGVyblBvc2l0aW9u
ID0gdGhlUGF0dGVybi0+Z2V0UG9zaXRpb24oKTsKIAogICAgIHR5cGVkZWYgU3R5bGVzaGVldDo6
UGF0dGVyblRhYmxlVmVjdG9yVHlwZSAgUGF0dGVyblRhYmxlTGlzdFR5cGU7CiAgICAgdHlwZWRl
ZiBQYXR0ZXJuVGFibGVMaXN0VHlwZTo6aXRlcmF0b3IgICAgICBpdGVyYXRvcjsKQEAgLTQ1Miw3
ICs0NTAsNyBAQAogCiAgICAgY29uc3QgaXRlcmF0b3IgIHRoZUVuZCA9IHRoZUxpc3QuZW5kKCk7
CiAKLSAgICB3aGlsZSh0aGVDdXJyZW50ICE9IHRoZUVuZCkKKyAgICB3aGlsZSAodGhlQ3VycmVu
dCAhPSB0aGVFbmQpCiAgICAgewogICAgICAgICBjb25zdCBkb3VibGUgICAgdGhlQ3VycmVudFBy
aW9yaXR5ID0gKCp0aGVDdXJyZW50KS0+Z2V0UHJpb3JpdHlPckRlZmF1bHQoKTsKIApAQCAtNjI2
LDcgKzYyNCw3IEBACiBTdHlsZXNoZWV0Ojppc0F0dHJPSygKICAgICAgICAgICAgIGNvbnN0IFhh
bGFuRE9NQ2hhciogICAgICAgICAgICAgYXR0ck5hbWUsCiAgICAgICAgICAgICBjb25zdCBBdHRy
aWJ1dGVMaXN0VHlwZSYgICAgICAgIC8qIGF0dHMgKi8sCi0gICAgICAgICAgICBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHdoaWNoICovLAorICAgICAgICAgICAgWGFsYW5TaXpl
X3QgICAgICAgICAgICAgICAgICAgICAvKiB3aGljaCAqLywKICAgICAgICAgICAgIFN0eWxlc2hl
ZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCkgY29uc3QKIHsKICAg
ICAvLyBOYW1lc3BhY2UgZGVjbGFyYXRpb25zIGFyZSBPSyBieSBkZWZpbml0aW9uCkBAIC0xNDk3
LDE2ICsxNDk1LDE2IEBACiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAg
ICAgIGF0dHMsCiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNv
bnN0cnVjdGlvbkNvbnRleHQpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50ICAgICAgbkF0dHJz
ID0gYXR0cy5nZXRMZW5ndGgoKTsKKyAgICBjb25zdCBYYWxhblNpemVfdCAgICAgICBuQXR0cnMg
PSBhdHRzLmdldExlbmd0aCgpOwogCiAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcqICAgc3R5bGVz
aGVldE5hbWVzcGFjZSA9IDA7CiAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcqICAgcmVzdWx0TmFt
ZXNwYWNlID0gMDsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7IGkr
KykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCiAgICAgewog
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUo
aSk7CiAKLSAgICAgICAgaWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX1NUWUxF
U0hFRVRfUFJFRklYKSA9PSB0cnVlKQorICAgICAgICBpZiAoZXF1YWxzKGFuYW1lLCBDb25zdGFu
dHM6OkFUVFJOQU1FX1NUWUxFU0hFRVRfUFJFRklYKSA9PSB0cnVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgdmFsdWUgPSBhdHRzLmdldFZhbHVl
KGkpOwogCkBAIC0xNTE5LDcgKzE1MTcsNyBAQAogICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRO
YW1lc3BhY2UgPSBnZXROYW1lc3BhY2VGb3JQcmVmaXgodmFsdWUsIGNvbnN0cnVjdGlvbkNvbnRl
eHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoZXF1YWxzKGFu
YW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX1JFU1VMVF9QUkVGSVgpKQorICAgICAgICBlbHNlIGlm
IChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfUkVTVUxUX1BSRUZJWCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3QgICB2YWx1ZSA9IGF0
dHMuZ2V0VmFsdWUoaSk7CiAKQEAgLTE1MzIsNyArMTUzMCw3IEBACiAgICAgICAgICAgICAgICAg
cmVzdWx0TmFtZXNwYWNlID0gZ2V0TmFtZXNwYWNlRm9yUHJlZml4KHZhbHVlLCBjb25zdHJ1Y3Rp
b25Db250ZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCFp
c0F0dHJPSyhhbmFtZSwgYXR0cywgaSwgY29uc3RydWN0aW9uQ29udGV4dCkpCisgICAgICAgIGVs
c2UgaWYgKCFpc0F0dHJPSyhhbmFtZSwgYXR0cywgaSwgY29uc3RydWN0aW9uQ29udGV4dCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IEdldEFuZFJlbGVhc2VDYWNoZWRTdHJpbmcgICAg
IHRoZUd1YXJkKGNvbnN0cnVjdGlvbkNvbnRleHQpOwogCkBAIC0xNTg4LDEwICsxNTg2LDEwIEBA
CiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMsCiAgICAg
ICAgICAgICBjb25zdCBMb2NhdG9yVHlwZSogICAgICAgICAgICAgIGxvY2F0b3IpCiB7Ci0gICAg
Y29uc3QgWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUgICBsaW5lTnVtYmVyID0KKyAgICBjb25zdCBY
YWxhbkZpbGVMb2MgIGxpbmVOdW1iZXIgPQogICAgICAgICBYYWxhbkxvY2F0b3I6OmdldExpbmVO
dW1iZXIobG9jYXRvcik7CiAKLSAgICBjb25zdCBYYWxhbkxvY2F0b3I6OnNpemVfdHlwZSAgIGNv
bHVtbk51bWJlciA9CisgICAgY29uc3QgWGFsYW5GaWxlTG9jICBjb2x1bW5OdW1iZXIgPQogICAg
ICAgICBYYWxhbkxvY2F0b3I6OmdldENvbHVtbk51bWJlcihsb2NhdG9yKTsKIAogICAgIG1fZWxl
bURlY2ltYWxGb3JtYXRzLnJlc2VydmUobV9lbGVtRGVjaW1hbEZvcm1hdHMuc2l6ZSgpICsgMSk7
CkluZGV4OiBzcmMveGFsYW5jL1hTTFQvRWxlbVVzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hh
bGFuYy9YU0xUL0VsZW1Vc2UuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hT
TFQvRWxlbVVzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKIEVsZW1Vc2U6
OkVsZW1Vc2UoCiAJCQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29uc3RydWN0aW9u
Q29udGV4dCwKIAkJCVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCi0JCQlpbnQJCQkJ
CQkJCWxpbmVOdW1iZXIsCi0JCQlpbnQJCQkJCQkJCWNvbHVtbk51bWJlciwKKwkJCVhhbGFuRmls
ZUxvYwkJCQkJbGluZU51bWJlciwKKwkJCVhhbGFuRmlsZUxvYwkJCQkJY29sdW1uTnVtYmVyLAog
CQkJaW50CQkJCQkJCQl4c2xUb2tlbikgOgogCUVsZW1UZW1wbGF0ZUVsZW1lbnQoY29uc3RydWN0
aW9uQ29udGV4dCwKIAkJCQkJCXN0eWxlc2hlZXRUcmVlLApAQCAtMjY4LDcgKzI2OCw3IEBACiAJ
CQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29uc3RydWN0aW9uQ29udGV4dCwKIAkJ
CWNvbnN0IFhhbGFuRE9NQ2hhcioJCQkJYXR0ck5hbWUsCiAJCQljb25zdCBBdHRyaWJ1dGVMaXN0
VHlwZSYJCWF0dHMsCi0JCQlpbnQJCQkJCQkJCXdoaWNoKQorCQkJWGFsYW5TaXplX3QJCQkJCQl3
aGljaCkKIHsKIAlib29sIGlzVUFTID0gZmFsc2U7CiAKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9F
bGVtVmFsdWVPZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1WYWx1ZU9m
LmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1WYWx1ZU9mLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBACiAgICAgdm9pZAogICAgIGNoYXJh
Y3RlcnMoCiAgICAgICAgICAgICAgICAgY29uc3QgWE1MQ2gqIGNvbnN0ICBjaGFycywKLSAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgIGxlbmd0aCkKKyAgICAgICAgICAgICAgICBj
b25zdCBzaXplX3R5cGUgICAgIGxlbmd0aCkKICAgICB7CiAgICAgICAgIG1fZXhlY3V0aW9uQ29u
dGV4dC5jaGFyYWN0ZXJzKGNoYXJzLCAwLCBsZW5ndGgpOwogICAgIH0KQEAgLTE5Myw3ICsxOTMs
NyBAQAogICAgIHZvaWQKICAgICBjaGFyYWN0ZXJzUmF3KAogICAgICAgICAgICAgY29uc3QgWE1M
Q2gqIGNvbnN0ICBjaGFycywKLSAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAgbGVuZ3Ro
KQorICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpCiAgICAgewogICAgICAg
ICBtX2V4ZWN1dGlvbkNvbnRleHQuY2hhcmFjdGVyc1JhdyhjaGFycywgMCwgbGVuZ3RoKTsKICAg
ICB9CkBAIC0yMDYsNyArMjA2LDcgQEAKICAgICB2b2lkCiAgICAgaWdub3JhYmxlV2hpdGVzcGFj
ZSgKICAgICAgICAgICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIC8qIGNoYXJzICovLAotICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAgLyogbGVuZ3RoICovKQorICAgICAgICAg
ICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgLyogbGVuZ3RoICovKQogICAgIHsKICAgICB9CiAK
QEAgLTIzMiw3ICsyMzIsNyBAQAogICAgIHZvaWQKICAgICBjZGF0YSgKICAgICAgICAgICAgICAg
ICBjb25zdCBYTUxDaCogY29uc3QgIC8qIGNoICovLAotICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCAgLyogbGVuZ3RoICovKQorICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdHlw
ZSAgICAgLyogbGVuZ3RoICovKQogICAgIHsKICAgICB9CiAKSW5kZXg6IHNyYy94YWxhbmMvWFNM
VC9FbGVtQ29weS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1Db3B5LmNw
cAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1Db3B5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsMzIgKzQ2LDMyIEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29u
c3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHls
ZXNoZWV0JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlTGlzdFR5cGUmICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhh
bGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhh
bGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgRWxlbVVz
ZShjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAgICAg
ICAgICAgICBsaW5lTnVtYmVyLAogICAgICAgICAgICAgY29sdW1uTnVtYmVyLAogICAgICAgICAg
ICAgU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQ6OkVMRU1OQU1FX0NPUFkpCiB7Ci0gICAg
Y29uc3QgdW5zaWduZWQgaW50ICBuQXR0cnMgPSBhdHRzLmdldExlbmd0aCgpOworICAgIGNvbnN0
IFhhbGFuU2l6ZV90ICAgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgoKTsKIAotICAgIGZvcih1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7IGkrKykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkg
PSAwOyBpIDwgbkF0dHJzOyBpKyspCiAgICAgewogICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIq
IGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUoaSk7CiAKLSAgICAgICAgaWYocHJvY2Vzc1Vz
ZUF0dHJpYnV0ZVNldHMoCisgICAgICAgIGlmIChwcm9jZXNzVXNlQXR0cmlidXRlU2V0cygKICAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgICAgIGFuYW1l
LAogICAgICAgICAgICAgICAgIGF0dHMsCiAgICAgICAgICAgICAgICAgaSkgPT0gZmFsc2UgJiYK
LSAgICAgICAgICAgcHJvY2Vzc1NwYWNlQXR0cigKKyAgICAgICAgICAgIHByb2Nlc3NTcGFjZUF0
dHIoCiAgICAgICAgICAgICAgICAgQ29uc3RhbnRzOjpFTEVNTkFNRV9DT1BZX1dJVEhfUFJFRklY
X1NUUklORy5jX3N0cigpLAogICAgICAgICAgICAgICAgIGFuYW1lLAogICAgICAgICAgICAgICAg
IGF0dHMsCiAgICAgICAgICAgICAgICAgaSwKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rpb25D
b250ZXh0KSA9PSBmYWxzZSAmJgotICAgICAgICAgICBpc0F0dHJPSygKKyAgICAgICAgICAgIGlz
QXR0ck9LKAogICAgICAgICAgICAgICAgIGFuYW1lLAogICAgICAgICAgICAgICAgIGF0dHMsCiAg
ICAgICAgICAgICAgICAgaSwKQEAgLTk0LDYgKzk0LDcgQEAKIH0KIAogCisKICNpZiAhZGVmaW5l
ZChYQUxBTl9SRUNVUlNJVkVfU1RZTEVTSEVFVF9FWEVDVVRJT04pCiBjb25zdCBFbGVtVGVtcGxh
dGVFbGVtZW50KgogRWxlbUNvcHk6OnN0YXJ0RWxlbWVudChTdHlsZXNoZWV0RXhlY3V0aW9uQ29u
dGV4dCYgIGV4ZWN1dGlvbkNvbnRleHQpIGNvbnN0CkBAIC0xMjAsNyArMTIxLDYgQEAKICAgICAg
ICAgICAgIGV4ZWN1dGlvbkNvbnRleHQuY29weU5hbWVzcGFjZUF0dHJpYnV0ZXMoKnNvdXJjZU5v
ZGUpOwogCiAgICAgICAgICAgICByZXR1cm4gYmVnaW5FeGVjdXRlQ2hpbGRyZW4oZXhlY3V0aW9u
Q29udGV4dCk7Ci0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKSW5kZXg6IHNy
Yy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dERlZmF1bHQuaHBwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4
dERlZmF1bHQuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQvU3R5bGVz
aGVldENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0LmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjEz
LDggKzIxMyw5IEBACiAJZ2V0VVJMRnJvbVN0cmluZyhjb25zdCBYYWxhbkRPTVN0cmluZyYJdXJs
U3RyaW5nKTsKIAogCXZpcnR1YWwgWGFsYW5ET01TdHJpbmcmCi0JZ2V0VVJMU3RyaW5nRnJvbVN0
cmluZyhjb25zdCBYYWxhbkRPTVN0cmluZyYJdXJsU3RyaW5nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFhhbGFuRE9NU3RyaW5nJiB0aGVSZXN1bHQpOworCWdldFVSTFN0cmluZ0Zyb21T
dHJpbmcoCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTVN0cmluZyYJdXJsU3RyaW5nLAorICAg
ICAgICAgICAgWGFsYW5ET01TdHJpbmcmICAgICAgICAgdGhlUmVzdWx0KTsKIAogCXZpcnR1YWwg
VVJMQXV0b1B0clR5cGUKIAlnZXRVUkxGcm9tU3RyaW5nKApAQCAtNjQ4LDcgKzY0OSw3IEBACiAK
IAlzdGF0aWMgY29uc3QgRWxlbWVudFRva2VuVGFibGVFbnRyeQkJc19lbGVtZW50VG9rZW5UYWJs
ZVtdOwogCi0Jc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludAkJCQlzX2VsZW1lbnRUb2tlblRhYmxl
U2l6ZTsKKwlzdGF0aWMgY29uc3QgWGFsYW5TaXplX3QJCQkJc19lbGVtZW50VG9rZW5UYWJsZVNp
emU7CiAKIAlzdGF0aWMgY29uc3QgRWxlbWVudFRva2VuVGFibGVFbnRyeSYJc19lbGVtZW50VG9r
ZW5UYWJsZUxhc3Q7CiAKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0RXhlY3V0aW9u
Q29udGV4dERlZmF1bHQuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9TdHlsZXNo
ZWV0RXhlY3V0aW9uQ29udGV4dERlZmF1bHQuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMv
eGFsYW5jL1hTTFQvU3R5bGVzaGVldEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmhwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcxLDE1ICs0NzEsMTUgQEAKIAogICAgIHZpcnR1YWwgdm9pZAogICAgIGNo
YXJhY3RlcnMoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgY2gsCi0g
ICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAg
ICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciogICAgIGNoLAorICAgICAgICAgICAgZmxfc2l6ZV90eXBlICAgICAgICAg
ICAgc3RhcnQsCisgICAgICAgICAgICBmbF9zaXplX3R5cGUgICAgICAgICAgICBsZW5ndGgpOwog
CiAgICAgdmlydHVhbCB2b2lkCiAgICAgY2hhcmFjdGVyc1JhdygKLSAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciogICAgICAgICBjaCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUg
ICBsZW5ndGgpOworICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgY2gsCisgICAg
ICAgICAgICBmbF9zaXplX3R5cGUgICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIGZsX3Np
emVfdHlwZSAgICAgICAgICAgIGxlbmd0aCk7CiAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBjb21t
ZW50KGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIGRhdGEpOwpAQCAtNTE1LDggKzUxNSw3IEBACiAg
ICAgZW5kQ3JlYXRlWFJlc3VsdFRyZWVGcmFnKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQKLSAgICBi
ZWdpbkZvcm1hdFRvVGV4dCgKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nJiAgICAgICAgICAg
ICB0aGVSZXN1bHQpOworICAgIGJlZ2luRm9ybWF0VG9UZXh0KFhhbGFuRE9NU3RyaW5nJiAgIHRo
ZVJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBlbmRGb3JtYXRUb1RleHQoKTsKSW5k
ZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtU29ydC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFu
Yy9YU0xUL0VsZW1Tb3J0LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xU
L0VsZW1Tb3J0LmhwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQAogCQkJU3R5bGVz
aGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRleHQsCiAJCQlTdHlsZXNo
ZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlh
dHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJCQkJCQljb2x1bW5OdW1i
ZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJ
CQljb2x1bW5OdW1iZXIpOwogCiAgICAgc3RhdGljIEVsZW1Tb3J0KgogCWNyZWF0ZSgKQEAgLTY4
LDggKzY4LDggQEAKIAkJCVN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0Jgljb25zdHJ1Y3Rp
b25Db250ZXh0LAogCQkJU3R5bGVzaGVldCYJCQkJCQlzdHlsZXNoZWV0VHJlZSwKIAkJCWNvbnN0
IEF0dHJpYnV0ZUxpc3RUeXBlJgkJYXR0cywKLQkJCWludAkJCQkJCQkJbGluZU51bWJlciwKLQkJ
CWludAkJCQkJCQkJY29sdW1uTnVtYmVyKTsKKwkJCVhhbGFuRmlsZUxvYwkJCQkJbGluZU51bWJl
ciwKKwkJCVhhbGFuRmlsZUxvYwkJCQkJY29sdW1uTnVtYmVyKTsKIAogCX5FbGVtU29ydCgpOwog
CkBAIC0xMzIsNyArMTMyLDcgQEAKIAlnZXRFbGVtZW50TmFtZSgpIGNvbnN0OwogCiAJdmlydHVh
bAljb25zdCBYUGF0aCoKLQlnZXRYUGF0aCh1bnNpZ25lZCBpbnQJaW5kZXggPSAwKSBjb25zdDsK
KwlnZXRYUGF0aChYYWxhblNpemVfdAlpbmRleCA9IDApIGNvbnN0OwogCiBwcml2YXRlOgogCklu
ZGV4OiBzcmMveGFsYW5jL1hTTFQvWFNMVEVuZ2luZUltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNy
Yy94YWxhbmMvWFNMVC9YU0xURW5naW5lSW1wbC5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNy
Yy94YWxhbmMvWFNMVC9YU0xURW5naW5lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5Miw3
ICs2OTIsNyBAQAogI2lmIGRlZmluZWQoWEFMQU5fT0xEX1NUWUxFX0NBU1RTKQogICAgICAgICAg
ICAgICAgIG5zTm9kZSA9IChjb25zdCBYYWxhbkVsZW1lbnQqKSZmcmFnQmFzZTsKICNlbHNlCi0g
ICAgICAgICAgICAgICAgbnNOb2RlID0gc3RhdGljX2Nhc3Q8WGFsYW5FbGVtZW50Kj4obm9kZSk7
CisgICAgICAgICAgICAgICAgbnNOb2RlID0gc3RhdGljX2Nhc3Q8Y29uc3QgWGFsYW5FbGVtZW50
Kj4obm9kZSk7CiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTEw
NjQsOSArMTA2NCwxMiBAQAogCiAgICAgWGFsYW5ET01TdHJpbmcgICAgICAgICAgdXJpKCB0aGVN
YW5hZ2VyICk7CiAKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gWGFs
YW5Mb2NhdG9yOjpnZXRVbmtub3duVmFsdWUoKTsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICBjb2x1bW5OdW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldFVua25vd25WYWx1ZSgpOworICAgIFhh
bGFuRmlsZUxvYyAgICBsaW5lTnVtYmVyID0KKyAgICAgICAgWGFsYW5Mb2NhdG9yOjpnZXRVbmtu
b3duVmFsdWUoKTsKIAorICAgIFhhbGFuRmlsZUxvYyAgICBjb2x1bW5OdW1iZXIgPQorICAgICAg
ICBYYWxhbkxvY2F0b3I6OmdldFVua25vd25WYWx1ZSgpOworCiAgICAgY29uc3QgTG9jYXRvclR5
cGUqICAgICAgbG9jYXRvciA9IGdldExvY2F0b3JGcm9tU3RhY2soKTsKIAogICAgIGlmIChsb2Nh
dG9yID09IDAgJiYgc3R5bGVOb2RlICE9IDApCkBAIC0xMTM2LDggKzExMzksOCBAQAogICAgICAg
ICBpZCA9ICZ0aGVEdW1teTsKICAgICB9CiAKLSAgICBjb25zdCBYYWxhbkxvY2F0b3I6OnNpemVf
dHlwZSAgIGxpbmVOdW1iZXIgPSBsb2NhdG9yLmdldExpbmVOdW1iZXIoKTsKLSAgICBjb25zdCBY
YWxhbkxvY2F0b3I6OnNpemVfdHlwZSAgIGNvbHVtbk51bWJlciA9IGxvY2F0b3IuZ2V0Q29sdW1u
TnVtYmVyKCk7CisgICAgWGFsYW5GaWxlTG9jICAgIGxpbmVOdW1iZXIgPSBsb2NhdG9yLmdldExp
bmVOdW1iZXIoKTsKKyAgICBYYWxhbkZpbGVMb2MgICAgY29sdW1uTnVtYmVyID0gbG9jYXRvci5n
ZXRDb2x1bW5OdW1iZXIoKTsKIAogICAgIGlmIChtX3Byb2JsZW1MaXN0ZW5lciAhPSAwKQogICAg
IHsKQEAgLTEzNjQsMTIgKzEzNjcsMTIgQEAKIAogdm9pZAogWFNMVEVuZ2luZUltcGw6OmFkZFJl
c3VsdEF0dHJpYnV0ZSgKLSAgICAgICAgICAgIEF0dHJpYnV0ZUxpc3RJbXBsJiAgICAgICAgICBh
dHRMaXN0LAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcmICAgICAgIGFuYW1lLAot
ICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgIHZhbHVlLAotICAgICAgICAg
ICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHRoZUxlbmd0aCwKLSAgICAgICAgICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICBmcm9tQ29weSwKLQkJCWNvbnN0IExvY2F0b3JUeXBl
KgkgICAgICAgIGxvY2F0b3IpCisgICAgICAgICAgICBBdHRyaWJ1dGVMaXN0SW1wbCYgICAgICBh
dHRMaXN0LAorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01TdHJpbmcmICAgYW5hbWUsCisgICAg
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICB2YWx1ZSwKKyAgICAgICAgICAgIHNpemVf
dHlwZSAgICAgICAgICAgICAgIHRoZUxlbmd0aCwKKyAgICAgICAgICAgIGJvb2wgICAgICAgICAg
ICAgICAgICAgIGZyb21Db3B5LAorICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAg
bG9jYXRvcikKIHsKICAgICBhc3NlcnQodmFsdWUgIT0gMCk7CiAKQEAgLTE1MTcsMTMgKzE1MjAs
MTMgQEAKICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0SW1wbCYgICAgdGhlUGVuZGluZ0F0dHJpYnV0
ZXMgPQogICAgICAgICAoY29uc3QgQXR0cmlidXRlTGlzdEltcGwmKWdldFBlbmRpbmdBdHRyaWJ1
dGVzKCk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgIG4gPSB0aGVQZW5kaW5nQXR0cmlidXRl
cy5nZXRMZW5ndGgoKTsKKyAgICBjb25zdCBYYWxhblNpemVfdCAgIG4gPSB0aGVQZW5kaW5nQXR0
cmlidXRlcy5nZXRMZW5ndGgoKTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBu
OyBpKyspCisgICAgZm9yIChYYWxhblNpemVfdCBpID0gMDsgaSA8IG47IGkrKykKICAgICB7Ci0g
ICAgICAgIGlmKGVxdWFscygKLSAgICAgICAgICAgIHRoZVBlbmRpbmdBdHRyaWJ1dGVzLmdldE5h
bWUoaSksCi0gICAgICAgICAgICBET01TZXJ2aWNlczo6c19YTUxOYW1lc3BhY2UpID09IHRydWUp
CisgICAgICAgIGlmIChlcXVhbHMoCisgICAgICAgICAgICAgICAgdGhlUGVuZGluZ0F0dHJpYnV0
ZXMuZ2V0TmFtZShpKSwKKyAgICAgICAgICAgICAgICBET01TZXJ2aWNlczo6c19YTUxOYW1lc3Bh
Y2UpID09IHRydWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0xNjUwLDcgKzE2NTMsNyBAQAogCiAgICAgZmx1c2hQZW5kaW5nKCk7CiAKLSAgICBj
b25zdCB1bnNpZ25lZCBpbnQgIG5BdHRzID0gYXR0cy5nZXRMZW5ndGgoKTsKKyAgICBjb25zdCBY
YWxhblNpemVfdCAgIG5BdHRzID0gYXR0cy5nZXRMZW5ndGgoKTsKIAogICAgIGFzc2VydChtX291
dHB1dENvbnRleHRTdGFjay5lbXB0eSgpID09IGZhbHNlKTsKIApAQCAtMTY1OSw3ICsxNjYyLDcg
QEAKIAogICAgIHRoZVBlbmRpbmdBdHRyaWJ1dGVzLmNsZWFyKCk7CiAKLSAgICBmb3IodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbkF0dHM7IGkrKykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkgPSAw
OyBpIDwgbkF0dHM7IGkrKykKICAgICB7CiAgICAgICAgIHRoZVBlbmRpbmdBdHRyaWJ1dGVzLmFk
ZEF0dHJpYnV0ZSgKICAgICAgICAgICAgIGF0dHMuZ2V0TmFtZShpKSwKQEAgLTE3MDgsOCArMTcx
MSw4IEBACiAKIHZvaWQKIFhTTFRFbmdpbmVJbXBsOjpjaGFyYWN0ZXJzKAotICAgICAgICAgICAg
Y29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgIGNoLAotICAgICAgICAgICAgWGFsYW5ET01TdHJp
bmc6OnNpemVfdHlwZSAgIGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciog
ICAgIGNoLAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgbGVuZ3RoKQogewog
ICAgIGNoYXJhY3RlcnMoCiAgICAgICAgIGNoLApAQCAtMTcyMSw5ICsxNzI0LDkgQEAKIAogdm9p
ZAogWFNMVEVuZ2luZUltcGw6OmNoYXJhY3RlcnMoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRP
TUNoYXIqICAgICAgICAgY2gsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBl
ICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3Ro
KQorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgY2gsCisgICAgICAgICAgICBz
aXplX3R5cGUgICAgICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAg
ICAgICAgICAgIGxlbmd0aCkKIHsKICAgICBhc3NlcnQoZ2V0Rm9ybWF0dGVyTGlzdGVuZXJJbXBs
KCkgIT0gMCk7CiAgICAgYXNzZXJ0KGNoICE9IDApOwpAQCAtMTczMiwxMSArMTczNSwxMSBAQAog
CiAgICAgZG9GbHVzaFBlbmRpbmcoKTsKIAotICAgIGlmKGdlbmVyYXRlQ0RBVEFTZWN0aW9uKCkg
PT0gdHJ1ZSkKKyAgICBpZiAoZ2VuZXJhdGVDREFUQVNlY3Rpb24oKSA9PSB0cnVlKQogICAgIHsK
ICAgICAgICAgZ2V0Rm9ybWF0dGVyTGlzdGVuZXJJbXBsKCktPmNkYXRhKGNoICsgc3RhcnQsIGxl
bmd0aCk7CiAKLSAgICAgICAgaWYoZ2V0VHJhY2VMaXN0ZW5lcnMoKSA+IDApCisgICAgICAgIGlm
IChnZXRUcmFjZUxpc3RlbmVycygpID4gMCkKICAgICAgICAgewogICAgICAgICAgICAgZmlyZUNo
YXJhY3RlckdlbmVyYXRlRXZlbnQoY2gsIHN0YXJ0LCBsZW5ndGgsIHRydWUpOwogICAgICAgICB9
CkBAIC0xNzQ1LDcgKzE3NDgsNyBAQAogICAgIHsKICAgICAgICAgZ2V0Rm9ybWF0dGVyTGlzdGVu
ZXJJbXBsKCktPmNoYXJhY3RlcnMoY2ggKyBzdGFydCwgbGVuZ3RoKTsKIAotICAgICAgICBpZihn
ZXRUcmFjZUxpc3RlbmVycygpID4gMCkKKyAgICAgICAgaWYgKGdldFRyYWNlTGlzdGVuZXJzKCkg
PiAwKQogICAgICAgICB7CiAgICAgICAgICAgICBmaXJlQ2hhcmFjdGVyR2VuZXJhdGVFdmVudChj
aCwgc3RhcnQsIGxlbmd0aCwgZmFsc2UpOwogICAgICAgICB9CkBAIC0xODE3LDkgKzE4MjAsOSBA
QAogCiB2b2lkIAogWFNMVEVuZ2luZUltcGw6OmNoYXJhY3RlcnNSYXcoCi0gICAgICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgY2gsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlICAgbGVuZ3RoKQorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgY2gsCisg
ICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNp
emVfdHlwZSAgICAgICAgICAgICAgIGxlbmd0aCkKIHsKICAgICBhc3NlcnQoY2ggIT0gMCk7CiAg
ICAgYXNzZXJ0KGxlbmd0aCAhPSAwKTsKQEAgLTE4ODAsOCArMTg4Myw4IEBACiAKIHZvaWQKIFhT
TFRFbmdpbmVJbXBsOjppZ25vcmFibGVXaGl0ZXNwYWNlKAotICAgICAgICAgICAgY29uc3QgWGFs
YW5ET01DaGFyKiAgICAgICAgIGNoLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVf
dHlwZSAgIGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIGNoLAor
ICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgbGVuZ3RoKQogewogICAgIGFzc2Vy
dChnZXRGb3JtYXR0ZXJMaXN0ZW5lckltcGwoKSAhPSAwKTsKICAgICBhc3NlcnQoY2ggIT0gMCk7
CkBAIC0xOTczLDkgKzE5NzYsOSBAQAogCiB2b2lkCiBYU0xURW5naW5lSW1wbDo6Y2RhdGEoCi0g
ICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgY2gsCi0gICAgICAgICAgICBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0
cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKQorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFy
KiAgICAgY2gsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICBzdGFydCwKKyAg
ICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIGxlbmd0aCkKIHsKICAgICBhc3NlcnQo
Z2V0Rm9ybWF0dGVyTGlzdGVuZXJJbXBsKCkgIT0gMCk7CiAgICAgYXNzZXJ0KGNoICE9IDApOwpA
QCAtMjcxNiw3ICsyNzE5LDcgQEAKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NU3RyaW5nJiAg
ICAgICB0aGVQcmVmaXgsCiAgICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAg
dGhlUHJlZml4TGVuZ3RoKQogewotICAgIGNvbnN0IHVuc2lnbmVkIGludCAgdGhlUGVuZGluZ0F0
dHJpYnV0ZXNDb3VudCA9CisgICAgY29uc3QgWGFsYW5TaXplX3QgICB0aGVQZW5kaW5nQXR0cmli
dXRlc0NvdW50ID0KICAgICAgICAgICAgICAgICB0aGVQZW5kaW5nQXR0cmlidXRlcy5nZXRMZW5n
dGgoKTsKIAogICAgIGlmICh0aGVQZW5kaW5nQXR0cmlidXRlc0NvdW50ID09IDApCkBAIC0yNzI5
LDcgKzI3MzIsNyBAQAogICAgICAgICBib29sICAgIGZSZXN1bHQgPSBmYWxzZTsKIAogICAgICAg
ICAvLyBDaGVjayBlYWNoIGF0dHJpYnV0ZS4uLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHRoZVBlbmRpbmdBdHRyaWJ1dGVzQ291bnQ7ICsraSkKKyAgICAgICAgZm9yIChY
YWxhblNpemVfdCBpID0gMDsgaSA8IHRoZVBlbmRpbmdBdHRyaWJ1dGVzQ291bnQ7ICsraSkKICAg
ICAgICAgewogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiBjb25zdCAgIHRoZVBlbmRp
bmdBdHRyaWJ1dGVOYW1lID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVQZW5kaW5n
QXR0cmlidXRlcy5nZXROYW1lKGkpOwpAQCAtMzE0MSwxMCArMzE0NCwxMCBAQAogCiB2b2lkCiBY
U0xURW5naW5lSW1wbDo6ZmlyZUNoYXJhY3RlckdlbmVyYXRlRXZlbnQoCi0gICAgICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgY2gsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlICAgbGVuZ3RoLAotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGlz
Q0RBVEEpCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAgICAg
ICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgc2l6ZV90eXBl
ICAgICAgICAgICAgICAgbGVuZ3RoLAorICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgaXNDREFUQSkKIHsKICAgICBjb25zdCBHZW5lcmF0ZUV2ZW50ICAgICBnZSgKICAgICAgICAg
aXNDREFUQSA9PSB0cnVlID8gR2VuZXJhdGVFdmVudDo6RVZFTlRUWVBFX0NEQVRBIDogR2VuZXJh
dGVFdmVudDo6RVZFTlRUWVBFX0NIQVJBQ1RFUlMsCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvRGVj
aW1hbFRvUm9tYW4uaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9EZWNpbWFsVG9S
b21hbi5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9EZWNpbWFsVG9S
b21hbi5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIHsKIAllbnVtIHsgZU1h
eExldHRlciA9IDIgfTsKIAotCXR5cGVkZWYgdW5zaWduZWQgbG9uZwlWYWx1ZVR5cGU7CisJdHlw
ZWRlZiBYYWxhblNpemVfdCAgICAgVmFsdWVUeXBlOwogCiAJVmFsdWVUeXBlCQltX3Bvc3RWYWx1
ZTsKIApJbmRleDogc3JjL3hhbGFuYy9YU0xUL0VsZW1Gb3JFYWNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzcmMveGFsYW5jL1hTTFQvRWxlbUZvckVhY2guY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBz
cmMveGFsYW5jL1hTTFQvRWxlbUZvckVhY2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1
NSw4IEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNvbnN0
cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHlsZXNoZWV0JiAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlzdFR5cGUm
ICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAg
ICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAg
ICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgRWxlbVRlbXBsYXRlRWxlbWVudChjb25zdHJ1Y3Rp
b25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLApAQCAtNjYsMTcgKzY2LDE3IEBACiAgICAg
bV9zb3J0RWxlbXMoY29uc3RydWN0aW9uQ29udGV4dC5nZXRNZW1vcnlNYW5hZ2VyKCkpLAogICAg
IG1fc29ydEVsZW1zQ291bnQoMCkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgIG5BdHRycyA9
IGF0dHMuZ2V0TGVuZ3RoKCk7CisgICAgY29uc3QgWGFsYW5TaXplX3QgIG5BdHRycyA9IGF0dHMu
Z2V0TGVuZ3RoKCk7CiAgICAgICAgIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBu
QXR0cnM7IGkrKykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkgPSAwOyBpIDwgbkF0dHJzOyBpKysp
CiAgICAgewogICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgYW5hbWUgPSBhdHRz
LmdldE5hbWUoaSk7CiAKLSAgICAgICAgaWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJO
QU1FX1NFTEVDVCkpCisgICAgICAgIGlmIChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5B
TUVfU0VMRUNUKSkKICAgICAgICAgewogICAgICAgICAgICAgbV9zZWxlY3RQYXR0ZXJuID0gY29u
c3RydWN0aW9uQ29udGV4dC5jcmVhdGVYUGF0aChnZXRMb2NhdG9yKCksIGF0dHMuZ2V0VmFsdWUo
aSksICp0aGlzKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGlzQXR0ck9LKAorICAgICAg
ICBlbHNlIGlmIChpc0F0dHJPSygKICAgICAgICAgICAgICAgICAgICAgYW5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgIGF0dHMsCiAgICAgICAgICAgICAgICAgICAgIGksCkBAIC05Niw3ICs5Niw3
IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZigwID09IG1fc2VsZWN0UGF0dGVybikKKyAg
ICBpZiAoMCA9PSBtX3NlbGVjdFBhdHRlcm4pCiAgICAgewogICAgICAgICBlcnJvcigKICAgICAg
ICAgICAgIGNvbnN0cnVjdGlvbkNvbnRleHQsCkBAIC0xMTEsOCArMTExLDggQEAKIEVsZW1Gb3JF
YWNoOjpFbGVtRm9yRWFjaCgKICAgICAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250
ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAgICAgIFN0eWxlc2hlZXQmICAgICAg
ICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCi0gICAgICAgICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCi0gICAgICAgICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxv
YyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxv
YyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyLAogICAgICAgICAgICAgaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4c2xUb2tlbikgOgogICAgIEVsZW1UZW1wbGF0ZUVsZW1l
bnQoY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hl
ZXRUcmVlLApAQCAtMTQ3LDggKzE0Nyw4IEBACiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVM
aXN0VHlwZSYgICAgICAgIGF0dHMsCiAgICAgICAgICAgICBjb25zdCBMb2NhdG9yVHlwZSogICAg
ICAgICAgICAgIGxvY2F0b3IpCiB7Ci0gICAgY29uc3QgaW50ICAgbGluZU51bWJlciA9IFhhbGFu
TG9jYXRvcjo6Z2V0TGluZU51bWJlcihsb2NhdG9yKTsKLSAgICBjb25zdCBpbnQgICBjb2x1bW5O
dW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldENvbHVtbk51bWJlcihsb2NhdG9yKTsKKyAgICBjb25z
dCBYYWxhbkZpbGVMb2MgIGxpbmVOdW1iZXIgPSBYYWxhbkxvY2F0b3I6OmdldExpbmVOdW1iZXIo
bG9jYXRvcik7CisgICAgY29uc3QgWGFsYW5GaWxlTG9jICBjb2x1bW5OdW1iZXIgPSBYYWxhbkxv
Y2F0b3I6OmdldENvbHVtbk51bWJlcihsb2NhdG9yKTsKIAogICAgIG1fc29ydEVsZW1zLnJlc2Vy
dmUobV9zb3J0RWxlbXMuc2l6ZSgpICsgMSk7CiAKQEAgLTgyNiw3ICs4MjYsNyBAQAogCiAKIGNv
bnN0IFhQYXRoKgotRWxlbUZvckVhY2g6OmdldFhQYXRoKHVuc2lnbmVkIGludCAgaW5kZXgpIGNv
bnN0CitFbGVtRm9yRWFjaDo6Z2V0WFBhdGgoWGFsYW5TaXplX3QgICBpbmRleCkgY29uc3QKIHsK
ICAgICByZXR1cm4gaW5kZXggPT0gMCA/IG1fc2VsZWN0UGF0dGVybiA6IDA7CiB9CkluZGV4OiBz
cmMveGFsYW5jL1hTTFQvRWxlbUFwcGx5VGVtcGxhdGVzLmhwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMv
eGFsYW5jL1hTTFQvRWxlbUFwcGx5VGVtcGxhdGVzLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysg
c3JjL3hhbGFuYy9YU0xUL0VsZW1BcHBseVRlbXBsYXRlcy5ocHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDExICs1MCwxMSBAQAogCSAqIEBwYXJhbSBjb2x1bW5OdW1iZXIJCQljb2x1bW4gbnVtYmVy
IGluIGRvY3VtZW50CiAJICovCiAJRWxlbUFwcGx5VGVtcGxhdGVzKAotCQkJU3R5bGVzaGVldENv
bnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRleHQsCi0JCQlTdHlsZXNoZWV0JgkJ
CQkJCXN0eWxlc2hlZXRUcmVlLAotCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAot
CQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLCAKLQkJCWludAkJCQkJCQkJY29sdW1uTnVtYmVyKTsK
KwkJCVN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCwK
KwkJCVN0eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCisJCQlj
b25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMsCisJCQlYYWxhbkZpbGVMb2MgICAg
ICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsIAorCQkJWGFsYW5GaWxlTG9jICAgICAgICAgICAg
ICAgICAgICBjb2x1bW5OdW1iZXIpOwogCiAgICAgdmlydHVhbAogICAgIH5FbGVtQXBwbHlUZW1w
bGF0ZXMoKTsKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRIYW5kbGVyLmNwcAkocmV2aXNp
b24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUyNSw3ICsxNTI1LDcgQEAKIHZvaWQKIFN0eWxlc2hlZXRIYW5kbGVy
OjpjaGFyYWN0ZXJzKAogICAgICAgICAgICAgY29uc3QgWE1MQ2gqIGNvbnN0ICBjaGFycywKLSAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAgbGVuZ3RoKQorICAgICAgICAgICAgY29uc3Qg
c2l6ZV90eXBlICAgICBsZW5ndGgpCiB7CiAgICAgaWYgKG1faW5UZW1wbGF0ZSA9PSBmYWxzZSAm
JgogICAgICAgICBpbkV4dGVuc2lvbkVsZW1lbnQoKSA9PSBmYWxzZSAmJgpAQCAtMTU1MSw3ICsx
NTUxLDcgQEAKIHZvaWQKIFN0eWxlc2hlZXRIYW5kbGVyOjpjZGF0YSgKICAgICAgICAgICAgIGNv
bnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
IGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKQogewogICAg
IGFjY3VtdWxhdGVUZXh0KGNoYXJzLCBsZW5ndGgpOwogCkBAIC0xNTY1LDcgKzE1NjUsNyBAQAog
dm9pZAogU3R5bGVzaGVldEhhbmRsZXI6Omlnbm9yYWJsZVdoaXRlc3BhY2UoCiAgICAgICAgICAg
ICBjb25zdCBYTUxDaCogY29uc3QgIC8qY2hhcnMqLywKLSAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGludCAgLypsZW5ndGgqLykKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgLyps
ZW5ndGgqLykKIHsKICAgICAvLyBJZ25vcmUhCiAgICAgbV9sYXN0UG9wcGVkID0gMDsKQEAgLTE2
MTcsNyArMTYxNyw3IEBACiB2b2lkCiBTdHlsZXNoZWV0SGFuZGxlcjo6Y2hhcmFjdGVyc1JhdygK
ICAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgLyogY2hhcnMgKi8sCi0gICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgIC8qIGxlbmd0aCAqLykKKyAgICAgICAgICAgIGNvbnN0IHNp
emVfdHlwZSAgICAgLyogbGVuZ3RoICovKQogewogfQogCkBAIC0xNjI1LDggKzE2MjUsOCBAQAog
CiB2b2lkCiBTdHlsZXNoZWV0SGFuZGxlcjo6cHJvY2Vzc1RleHQoCi0gICAgICAgICAgICBjb25z
dCBYTUxDaCogICAgICAgICAgICAgICAgY2hhcnMsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICAgbGVuZ3RoKQorICAgICAgICAgICAgY29uc3QgWE1MQ2gqICAgIGNoYXJz
LAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgIGxlbmd0aCkKIHsKICAgICBpZihtX2luVGVt
cGxhdGUpCiAgICAgewpAQCAtMTcxOSw4ICsxNzE5LDggQEAKIAogdm9pZAogU3R5bGVzaGVldEhh
bmRsZXI6OmFjY3VtdWxhdGVUZXh0KAotICAgICAgICAgICAgY29uc3QgWE1MQ2gqICAgICAgICAg
ICAgICAgIGNoYXJzLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIGxl
bmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhNTENoKiAgICBjaGFycywKKyAgICAgICAgICAgIHNp
emVfdHlwZSAgICAgICBsZW5ndGgpCiB7ICAgCiAgICAgaWYobV9pblRlbXBsYXRlKQogICAgIHsK
SW5kZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtVGVtcGxhdGVFbGVtZW50LmhwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBzcmMveGFsYW5jL1hTTFQvRWxlbVRlbXBsYXRlRWxlbWVudC5ocHAJKHJldmlzaW9uIDcw
NjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9FbGVtVGVtcGxhdGVFbGVtZW50LmhwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksOCArODksOCBAQAogICAgIEVsZW1UZW1wbGF0ZUVsZW1lbnQoCiAgICAg
ICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRl
eHQsCiAgICAgICAgICAgICBTdHlsZXNoZWV0JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hl
ZXRUcmVlLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
TnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1
bW5OdW1iZXIsCisgICAgICAgICAgICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGxp
bmVOdW1iZXIsCisgICAgICAgICAgICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGNv
bHVtbk51bWJlciwKICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eHNsVG9rZW4pOwogCiAgICAgLyoqCkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgICAgIFN0
eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUsCiAgICAgICAgICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzbFRva2VuLAogICAgICAgICAgICAg
Y29uc3QgWGFsYW5ET01TdHJpbmcmICAgICAgICAgICBiYXNlVVJJID0gWGFsYW5ET01TdHJpbmco
WGFsYW5NZW1NZ3JzOjpnZXREdW1teU1lbU1ncigpKSwKLSAgICAgICAgICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IFhhbGFuTG9jYXRvcjo6Z2V0VW5rbm93
blZhbHVlKCksCi0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bHVtbk51bWJlciA9IFhhbGFuTG9jYXRvcjo6Z2V0VW5rbm93blZhbHVlKCkpOworICAgICAgICAg
ICAgWGFsYW5GaWxlTG9jICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gWGFsYW5Mb2Nh
dG9yOjpnZXRVbmtub3duVmFsdWUoKSwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAg
ICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gWGFsYW5Mb2NhdG9yOjpnZXRVbmtub3duVmFsdWUo
KSk7CiAKICAgICB2aXJ0dWFsCiAgICAgfkVsZW1UZW1wbGF0ZUVsZW1lbnQoKTsKQEAgLTEzOCw3
ICsxMzgsNyBAQAogICAgIGlzQXR0ck9LKAogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFy
KiAgICAgICAgICAgICBhdHRyTmFtZSwKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3RU
eXBlJiAgICAgICAgYXR0cywKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpY2gsCisgICAgICAgICAgICBYYWxhblNpemVfdCAgICAgICAgICAgICAgICAgICAg
IHdoaWNoLAogICAgICAgICAgICAgU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmICBjb25z
dHJ1Y3Rpb25Db250ZXh0KSBjb25zdDsKIAogICAgIC8qKiAKQEAgLTE1Niw3ICsxNTYsNyBAQAog
ICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgICAgICBlbGVtZW50TmFtZSwK
ICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgICAgICAgICAgYW5hbWUsCiAgICAg
ICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMsCi0gICAgICAgICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoLAorICAgICAgICAgICAgWGFs
YW5TaXplX3QgICAgICAgICAgICAgICAgICAgICB3aGljaCwKICAgICAgICAgICAgIFN0eWxlc2hl
ZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCk7CiAKICAgICAvKiog
CkBAIC02MTUsNyArNjE1LDcgQEAKICAgICAgKiBAcmV0dXJuIHBvaW50ZXIgb3IgbnVsbCAKICAg
ICAgKi8KICAgICB2aXJ0dWFsIGNvbnN0IFhQYXRoKgotICAgIGdldFhQYXRoKHVuc2lnbmVkIGlu
dCAgIGluZGV4ID0gMCkgY29uc3Q7CisgICAgZ2V0WFBhdGgoWGFsYW5TaXplX3QgICAgaW5kZXgp
IGNvbnN0OwogCiAgICAgLy8gVGhlc2UgaW50ZXJmYWNlcyBhcmUgaW5oZXJpdGVkIGZyb20gUHJl
Zml4UmVzb2x2ZXIuLi4KIApAQCAtNjMzLDggKzYzMyw4IEBACiAgICAgcHVibGljOgogCiAgICAg
ICAgIExvY2F0b3JQcm94eSgKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAg
ICAgICAgdGhlTGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlICAgICAg
ICAgICAgICAgdGhlQ29sdW1uTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBYTUxGaWxlTG9j
ICAgICAgICAgICAgICB0aGVMaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBYTUxGaWxl
TG9jICAgICAgICAgICAgICB0aGVDb2x1bW5OdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFhhbGFuRE9NU3RyaW5nJiAgIHRoZVVSSSk7CiAKICAgICAgICAgdmlydHVhbApAQCAtNjQ2
LDEwICs2NDYsMTAgQEAKICAgICAgICAgdmlydHVhbCBjb25zdCBYTUxDaCoKICAgICAgICAgZ2V0
U3lzdGVtSWQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHNpemVfdHlwZQorICAgICAgICB2
aXJ0dWFsIFhNTEZpbGVMb2MKICAgICAgICAgZ2V0TGluZU51bWJlcigpIGNvbnN0OwogCi0gICAg
ICAgIHZpcnR1YWwgc2l6ZV90eXBlCisgICAgICAgIHZpcnR1YWwgWE1MRmlsZUxvYwogICAgICAg
ICBnZXRDb2x1bW5OdW1iZXIoKSBjb25zdDsKIAogICAgICAgICBjb25zdCBYYWxhbkRPTVN0cmlu
ZyYKQEAgLTY3MCwyMSArNjcwLDIxIEBACiAgICAgICAgIG9wZXJhdG9yPT0oY29uc3QgTG9jYXRv
clByb3h5JikgY29uc3Q7CiAKICAgICAgICAgLy8gZGF0YSBtZW1iZXJzLi4uCi0gICAgICAgIGNv
bnN0IHNpemVfdHlwZSAgICAgICAgIG1fbGluZU51bWJlcjsKKyAgICAgICAgY29uc3QgWE1MRmls
ZUxvYyAgICAgICAgbV9saW5lTnVtYmVyOwogCi0gICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAg
ICAgIG1fY29sdW1uTnVtYmVyOworICAgICAgICBjb25zdCBYTUxGaWxlTG9jICAgICAgICBtX2Nv
bHVtbk51bWJlcjsKIAogICAgICAgICBjb25zdCBYYWxhbkRPTVN0cmluZyYgICBtX3VyaTsKICAg
ICB9OwogCiAKLSAgICBMb2NhdG9yUHJveHk6OnNpemVfdHlwZQorICAgIFhNTEZpbGVMb2MKICAg
ICBnZXRMaW5lTnVtYmVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xvY2F0b3JQ
cm94eS5nZXRMaW5lTnVtYmVyKCk7CiAgICAgfQogCi0gICAgTG9jYXRvclByb3h5OjpzaXplX3R5
cGUKKyAgICBYTUxGaWxlTG9jCiAgICAgZ2V0Q29sdW1uTnVtYmVyKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2xvY2F0b3JQcm94eS5nZXRDb2x1bW5OdW1iZXIoKTsKSW5kZXg6IHNy
Yy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0LmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hT
TFQvU3R5bGVzaGVldC5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9T
dHlsZXNoZWV0LmhwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQAogCiBwdWJsaWM6
CiAKLSAgICB0eXBlZGVmIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0OjpzaXplX3R5cGUg
ICAgICAgIHNpemVfdHlwZTsKIAl0eXBlZGVmIFN0eWxlc2hlZXRFeGVjdXRpb25Db250ZXh0OjpQ
YXJhbVZlY3RvclR5cGUJCVBhcmFtVmVjdG9yVHlwZTsKIAl0eXBlZGVmIFhhbGFuUU5hbWU6Ok5h
bWVzcGFjZVZlY3RvclR5cGUJCQkJCU5hbWVzcGFjZVZlY3RvclR5cGU7CiAJdHlwZWRlZiBYYWxh
blFOYW1lOjpOYW1lc3BhY2VzU3RhY2tUeXBlCQkJCQlOYW1lc3BhY2VzU3RhY2tUeXBlOwpAQCAt
Mjg4LDcgKzI4Nyw3IEBACiAJaXNBdHRyT0soCiAJCQljb25zdCBYYWxhbkRPTUNoYXIqCQkJCWF0
dHJOYW1lLAogCQkJY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50IAkJCQkJ
CQl3aGljaCwKKwkJCVhhbGFuU2l6ZV90CQkJCQkJd2hpY2gsCiAJCQlTdHlsZXNoZWV0Q29uc3Ry
dWN0aW9uQ29udGV4dCYJY29uc3RydWN0aW9uQ29udGV4dCkgY29uc3Q7CiAKIAkvKioKQEAgLTI5
OCw4ICsyOTcsOSBAQAogCSAqIEByZXR1cm4gbmFtZXNwYWNlIHN0cmluZyBmb3Igbm9kZSwgb3Ig
bnVsbCBpZiBub3QgZm91bmQuCiAJICovCiAJY29uc3QgWGFsYW5ET01TdHJpbmcqCi0JZ2V0TmFt
ZXNwYWNlRnJvbVN0YWNrKGNvbnN0IFhhbGFuRE9NU3RyaW5nJiAJbm9kZU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWGFsYW5ET01TdHJpbmcmICAgICAgICAgdGhlQnVmZmVyKSBj
b25zdAorICAgIGdldE5hbWVzcGFjZUZyb21TdGFjaygKKyAgICAgICAgICAgICAgICBjb25zdCBY
YWxhbkRPTVN0cmluZyYgICBub2RlTmFtZSwKKyAgICAgICAgICAgICAgICBYYWxhbkRPTVN0cmlu
ZyYgICAgICAgICB0aGVCdWZmZXIpIGNvbnN0CiAJewogCQlyZXR1cm4gZ2V0TmFtZXNwYWNlRnJv
bVN0YWNrKGNfd3N0cihub2RlTmFtZSksIHRoZUJ1ZmZlcik7CiAJfQpAQCAtMzExLDggKzMxMSw5
IEBACiAJICogQHJldHVybiBuYW1lc3BhY2Ugc3RyaW5nIGZvciBub2RlLCBvciBudWxsIGlmIG5v
dCBmb3VuZC4KIAkgKi8KIAljb25zdCBYYWxhbkRPTVN0cmluZyoKLQlnZXROYW1lc3BhY2VGcm9t
U3RhY2soY29uc3QgWGFsYW5ET01DaGFyKiAJbm9kZU5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWGFsYW5ET01TdHJpbmcmICAgICB0aGVCdWZmZXIpIGNvbnN0OworICAgIGdldE5h
bWVzcGFjZUZyb21TdGFjaygKKyAgICAgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAg
ICBub2RlTmFtZSwKKyAgICAgICAgICAgICAgICBYYWxhbkRPTVN0cmluZyYgICAgICAgICB0aGVC
dWZmZXIpIGNvbnN0OwogCiAJLyoqCiAJICogR2V0IHRoZSBuYW1lc3BhY2UgZnJvbSBhIHByZWZp
eCBieSBzZWFyY2hpbmcgdGhlIHN0YWNrIG9mIG5hbWVzcGFjZQpJbmRleDogc3JjL3hhbGFuYy9Y
U0xUL0VsZW1Vc2UuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9FbGVtVXNlLmhw
cAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1Vc2UuaHBwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBACiAJRWxlbVVzZSgKIAkJCVN0eWxlc2hlZXRDb25z
dHJ1Y3Rpb25Db250ZXh0Jgljb25zdHJ1Y3Rpb25Db250ZXh0LAogCQkJU3R5bGVzaGVldCYJCQkJ
CQlzdHlsZXNoZWV0VHJlZSwKLQkJCWludAkJCQkJCQkJbGluZU51bWJlciwKLQkJCWludAkJCQkJ
CQkJY29sdW1uTnVtYmVyLAorCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJWGFs
YW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIsCiAJCQlpbnQJCQkJCQkJCXhzbFRva2VuKTsKIAog
CXZpcnR1YWwKQEAgLTc3LDcgKzc3LDcgQEAKIAkJCVN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250
ZXh0Jgljb25zdHJ1Y3Rpb25Db250ZXh0LAogCQkJY29uc3QgWGFsYW5ET01DaGFyKgkJCQlhdHRy
TmFtZSwKIAkJCWNvbnN0IEF0dHJpYnV0ZUxpc3RUeXBlJgkJYXR0cywKLQkJCWludAkJCQkJCQkJ
d2hpY2gpOworCQkJWGFsYW5TaXplX3QJCQkJCQl3aGljaCk7CiAKIAkvLyBUaGVzZSBtZXRob2Rz
IGFyZSBpbmhlcml0ZWQgZnJvbSBFbGVtVGVtcGxhdGVFbGVtZW50IC4uLgogCQpJbmRleDogc3Jj
L3hhbGFuYy9YU0xUL0VsZW1DYWxsVGVtcGxhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxh
bmMvWFNMVC9FbGVtQ2FsbFRlbXBsYXRlLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hh
bGFuYy9YU0xUL0VsZW1DYWxsVGVtcGxhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMyAr
NTQsMTMgQEAKICAgICBtX3RlbXBsYXRlTmFtZSgwKSwKICAgICBtX3RlbXBsYXRlKDApCiB7Ci0g
ICAgY29uc3QgdW5zaWduZWQgaW50ICBuQXR0cnMgPSBhdHRzLmdldExlbmd0aCgpOworICAgIGNv
bnN0IFhhbGFuU2l6ZV90ICBuQXR0cnMgPSBhdHRzLmdldExlbmd0aCgpOwogCi0gICAgZm9yKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IG5BdHRyczsgaSsrKQorICAgIGZvcihYYWxhblNpemVfdCBp
ID0gMDsgaSA8IG5BdHRyczsgaSsrKQogICAgIHsKICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFy
KiBjb25zdCAgIGFuYW1lID0gYXR0cy5nZXROYW1lKGkpOwogCi0gICAgICAgIGlmKGVxdWFscyhh
bmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFNRV9OQU1FKSkKKyAgICAgICAgaWYgKGVxdWFscyhhbmFt
ZSwgQ29uc3RhbnRzOjpBVFRSTkFNRV9OQU1FKSkKICAgICAgICAgewogICAgICAgICAgICAgbV90
ZW1wbGF0ZU5hbWUgPSBjb25zdHJ1Y3Rpb25Db250ZXh0LmNyZWF0ZVhhbGFuUU5hbWUoCiAgICAg
ICAgICAgICAgICAgICAgIGF0dHMuZ2V0VmFsdWUoaSksCkBAIC03Niw3ICs3Niw3IEBACiAgICAg
ICAgICAgICAgICAgICAgIGF0dHMuZ2V0VmFsdWUoaSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYoaXNBdHRyT0soCisgICAgICAgIGVsc2UgaWYgKGlzQXR0ck9L
KAogICAgICAgICAgICAgICAgICAgICBhbmFtZSwKICAgICAgICAgICAgICAgICAgICAgYXR0cywK
ICAgICAgICAgICAgICAgICAgICAgaSwKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9Db3VudGVyc1Rh
YmxlLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hTTFQvQ291bnRlcnNUYWJsZS5ocHAJ
KHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNMVC9Db3VudGVyc1RhYmxlLmhwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICovCiBzdHJ1Y3QgQ291bnRlcgogewot
CXR5cGVkZWYgdW5zaWduZWQgbG9uZwlDb3VudFR5cGU7CisJdHlwZWRlZiBYYWxhblNpemVfdCAg
ICAgQ291bnRUeXBlOwogCiAJdHlwZWRlZiBYYWxhblZlY3RvcjxYYWxhbk5vZGUqPgkJCU5vZGVW
ZWN0b3JUeXBlOwogCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvRWxlbUNvcHkuaHBwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9FbGVtQ29weS5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysr
IHNyYy94YWxhbmMvWFNMVC9FbGVtQ29weS5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5
LDggQEAKIAkJCVN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0Jgljb25zdHJ1Y3Rpb25Db250
ZXh0LAogCQkJU3R5bGVzaGVldCYJCQkJCQlzdHlsZXNoZWV0VHJlZSwKIAkJCWNvbnN0IEF0dHJp
YnV0ZUxpc3RUeXBlJgkJYXR0cywKLQkJCWludAkJCQkJCQkJbGluZU51bWJlciwKLQkJCWludAkJ
CQkJCQkJY29sdW1uTnVtYmVyKTsKKwkJCVhhbGFuRmlsZUxvYwkJCQkJbGluZU51bWJlciwKKwkJ
CVhhbGFuRmlsZUxvYwkJCQkJY29sdW1uTnVtYmVyKTsKIAogCS8vIFRoZXNlIG1ldGhvZHMgYXJl
IGluaGVyaXRlZCBmcm9tIEVsZW1UZW1wbGF0ZUVsZW1lbnQgLi4uCiAJCkluZGV4OiBzcmMveGFs
YW5jL1hTTFQvRWxlbUNob29zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0Vs
ZW1DaG9vc2UuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQvRWxlbUNo
b29zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDI2ICs0OCwyNiBAQAogICAgICAgICAgICAg
U3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmICBjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAg
ICAgICAgICAgU3R5bGVzaGVldCYgICAgICAgICAgICAgICAgICAgICBzdHlsZXNoZWV0VHJlZSwK
ICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3RUeXBlJiAgICAgICAgYXR0cywKLSAgICAg
ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKLSAgICAg
ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6Cisg
ICAgICAgICAgICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCisg
ICAgICAgICAgICBYYWxhbkZpbGVMb2MgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikg
OgogICAgIEVsZW1UZW1wbGF0ZUVsZW1lbnQoY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
bGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0OjpFTEVNTkFN
RV9DSE9PU0UpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50ICBuQXR0cnMgPSBhdHRzLmdldExl
bmd0aCgpOworICAgIGNvbnN0IFhhbGFuU2l6ZV90ICAgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgo
KTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0cnM7IGkrKykKKyAgICBm
b3IgKFhhbGFuU2l6ZV90IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCiAgICAgewogICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdldE5hbWUoaSk7CiAKLSAg
ICAgICAgaWYoaXNBdHRyT0soCisgICAgICAgIGlmIChpc0F0dHJPSygKICAgICAgICAgICAgICAg
ICBhbmFtZSwKICAgICAgICAgICAgICAgICBhdHRzLAogICAgICAgICAgICAgICAgIGksCiAgICAg
ICAgICAgICAgICAgY29uc3RydWN0aW9uQ29udGV4dCkgPT0gZmFsc2UgJiYKLSAgICAgICAgICAg
cHJvY2Vzc1NwYWNlQXR0cigKKyAgICAgICAgICAgIHByb2Nlc3NTcGFjZUF0dHIoCiAgICAgICAg
ICAgICAgICAgQ29uc3RhbnRzOjpFTEVNTkFNRV9DSE9PU0VfV0lUSF9QUkVGSVhfU1RSSU5HLmNf
c3RyKCksCiAgICAgICAgICAgICAgICAgYW5hbWUsCiAgICAgICAgICAgICAgICAgYXR0cywKQEAg
LTEwNywxNyArMTA3LDE3IEBACiAgICAgewogICAgICAgICBjb25zdCBpbnQgICB0eXBlID0gbm9k
ZS0+Z2V0WFNMVG9rZW4oKTsKIAotICAgICAgICBpZihTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29u
dGV4dDo6RUxFTU5BTUVfV0hFTiA9PSB0eXBlKQorICAgICAgICBpZiAoU3R5bGVzaGVldENvbnN0
cnVjdGlvbkNvbnRleHQ6OkVMRU1OQU1FX1dIRU4gPT0gdHlwZSkKICAgICAgICAgewogCi0gICAg
ICAgICAgICBjb25zdCBYUGF0aCogY29uc3QgICAgICB0aGVYUGF0aCA9IG5vZGUtPmdldFhQYXRo
KCk7CisgICAgICAgICAgICBjb25zdCBYUGF0aCogY29uc3QgICAgICB0aGVYUGF0aCA9IG5vZGUt
PmdldFhQYXRoKDApOwogICAgICAgICAgICAgYXNzZXJ0KHRoZVhQYXRoICE9IDApOwogCiAgICAg
ICAgICAgICBib29sICAgIHRlc3Q7CiAKICAgICAgICAgICAgIHRoZVhQYXRoLT5leGVjdXRlKCp0
aGlzLCBleGVjdXRpb25Db250ZXh0LCB0ZXN0KTsKIAotICAgICAgICAgICAgaWYoMCAhPSBleGVj
dXRpb25Db250ZXh0LmdldFRyYWNlTGlzdGVuZXJzKCkpCisgICAgICAgICAgICBpZiAoMCAhPSBl
eGVjdXRpb25Db250ZXh0LmdldFRyYWNlTGlzdGVuZXJzKCkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dC5maXJlU2VsZWN0RXZlbnQoCiAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkV2ZW50KGV4ZWN1dGlvbkNvbnRleHQsCkBAIC0xNzIsNyArMTcy
LDcgQEAKICAgICAgICAgaWYoU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQ6OkVMRU1OQU1F
X1dIRU4gPT0gdHlwZSkKICAgICAgICAgewogCi0gICAgICAgICAgICBjb25zdCBYUGF0aCogY29u
c3QgICAgICB0aGVYUGF0aCA9IG5vZGUtPmdldFhQYXRoKCk7CisgICAgICAgICAgICBjb25zdCBY
UGF0aCogY29uc3QgICAgICB0aGVYUGF0aCA9IG5vZGUtPmdldFhQYXRoKDApOwogICAgICAgICAg
ICAgYXNzZXJ0KHRoZVhQYXRoICE9IDApOwogCiAgICAgICAgICAgICBib29sICAgIHRlc3Q7Cklu
ZGV4OiBzcmMveGFsYW5jL1hTTFQvRWxlbUFwcGx5SW1wb3J0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
cmMveGFsYW5jL1hTTFQvRWxlbUFwcGx5SW1wb3J0LmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysg
c3JjL3hhbGFuYy9YU0xUL0VsZW1BcHBseUltcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDIxICs1MiwyMSBAQAogICAgICAgICAgICAgU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQm
ICBjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgU3R5bGVzaGVldCYgICAgICAgICAg
ICAgICAgICAgICBzdHlsZXNoZWV0VHJlZSwKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUxp
c3RUeXBlJiAgICAgICAgYXR0cywKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGluZU51bWJlciwgCi0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbHVtbk51bWJlcikgOgorICAgICAgICAgICAgWGFsYW5GaWxlTG9jICAgICAg
ICAgICAgICAgICAgICBsaW5lTnVtYmVyLCAKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAg
ICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgICAgIEVsZW1UZW1wbGF0ZUVsZW1l
bnQoY29uc3RydWN0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZXNoZWV0VHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dDo6RUxFTU5BTUVfQVBQTFlf
SU1QT1JUUykKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgIG5BdHRycyA9IGF0dHMuZ2V0TGVu
Z3RoKCk7CisgICAgY29uc3QgWGFsYW5TaXplX3QgIG5BdHRycyA9IGF0dHMuZ2V0TGVuZ3RoKCk7
CiAKLSAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCisgICAgZm9y
IChYYWxhblNpemVfdCBpID0gMDsgaSA8IG5BdHRyczsgaSsrKQogICAgIHsKICAgICAgICAgY29u
c3QgWGFsYW5ET01DaGFyKiBjb25zdCAgIGFuYW1lID0gYXR0cy5nZXROYW1lKGkpOwogCi0gICAg
ICAgIGlmKGlzQXR0ck9LKAorICAgICAgICBpZiAoaXNBdHRyT0soCiAgICAgICAgICAgICAgICAg
YW5hbWUsCiAgICAgICAgICAgICAgICAgYXR0cywKICAgICAgICAgICAgICAgICBpLApJbmRleDog
c3JjL3hhbGFuYy9YU0xUL0tleURlY2xhcmF0aW9uLmhwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFs
YW5jL1hTTFQvS2V5RGVjbGFyYXRpb24uaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFs
YW5jL1hTTFQvS2V5RGVjbGFyYXRpb24uaHBwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4
IEBACiAJCQljb25zdCBYUGF0aCYJCQkJbWF0Y2hQYXR0ZXJuLAogCQkJY29uc3QgWFBhdGgmCQkJ
CXVzZSwKIAkJCWNvbnN0IFhhbGFuRE9NU3RyaW5nJgkJdXJpLAotCQkJWGFsYW5Mb2NhdG9yOjpz
aXplX3R5cGUJCWxpbmVOdW1iZXIsCi0JCQlYYWxhbkxvY2F0b3I6OnNpemVfdHlwZQkJY29sdW1u
TnVtYmVyKSA6CisJCQlYTUxGaWxlTG9jCQkgICAgICAgICAgICBsaW5lTnVtYmVyLAorCQkJWE1M
RmlsZUxvYwkJICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAJCW1fcW5hbWUoJnFuYW1lKSwK
IAkJbV9tYXRjaCgmbWF0Y2hQYXR0ZXJuKSwKIAkJbV91c2UoJnVzZSksCkBAIC0xMzYsNyArMTM2
LDcgQEAKIAkgKgogCSAqIEByZXR1cm4gVGhlIGxpbmUgbnVtYmVyCiAJICovCi0JWGFsYW5Mb2Nh
dG9yOjpzaXplX3R5cGUKKwlYTUxGaWxlTG9jCiAJZ2V0TGluZU51bWJlcigpIGNvbnN0CiAJewog
CQlyZXR1cm4gbV9saW5lTnVtYmVyOwpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAJICoKIAkgKiBAcmV0
dXJuIFRoZSBjb2x1bW4gbnVtYmVyCiAJICovCi0JWGFsYW5Mb2NhdG9yOjpzaXplX3R5cGUKKwlY
TUxGaWxlTG9jCiAJZ2V0Q29sdW1uTnVtYmVyKCkgY29uc3QKIAl7CiAJCXJldHVybiBtX2NvbHVt
bk51bWJlcjsKQEAgLTE2Myw5ICsxNjMsOSBAQAogCiAJY29uc3QgWGFsYW5ET01TdHJpbmcqCQlt
X3VyaTsKIAotCVhhbGFuTG9jYXRvcjo6c2l6ZV90eXBlCQltX2xpbmVOdW1iZXI7CisJWE1MRmls
ZUxvYwkJICAgICAgICAgICAgbV9saW5lTnVtYmVyOwogCi0JWGFsYW5Mb2NhdG9yOjpzaXplX3R5
cGUJCW1fY29sdW1uTnVtYmVyOworCVhNTEZpbGVMb2MgICAgICAgICAgICAgICAgICBtX2NvbHVt
bk51bWJlcjsKIH07CiAKIApJbmRleDogc3JjL3hhbGFuYy9YU0xUL0VsZW1BdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWFNMVC9FbGVtQXR0cmlidXRlLmNwcAkocmV2aXNp
b24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL0VsZW1BdHRyaWJ1dGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0
aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHlsZXNoZWV0
JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlTGlzdFR5cGUmICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhhbGFuRmls
ZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmls
ZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgRWxlbVRlbXBsYXRl
RWxlbWVudChjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3R5
bGVzaGVldFRyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLApAQCAtNTYs
OSArNTYsOSBAQAogICAgIG1fbmFtZUFWVCgwKSwgICAKICAgICBtX25hbWVzcGFjZUFWVCgwKQog
ewotICAgIGNvbnN0IHVuc2lnbmVkIGludCAgbkF0dHJzID0gYXR0cy5nZXRMZW5ndGgoKTsKKyAg
ICBjb25zdCBYYWxhblNpemVfdCAgIG5BdHRycyA9IGF0dHMuZ2V0TGVuZ3RoKCk7CiAKLSAgICBm
b3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCisgICAgZm9yIChYYWxhblNp
emVfdCBpID0gMDsgaSA8IG5BdHRyczsgaSsrKQogICAgIHsKICAgICAgICAgY29uc3QgWGFsYW5E
T01DaGFyKiBjb25zdCAgIGFuYW1lID0gYXR0cy5nZXROYW1lKGkpOwogCkBAIC0zOTgsNiArMzk4
LDcgQEAKICAgICB9CiAKICAgICBleGVjdXRpb25Db250ZXh0LmdldEFuZFBvcENhY2hlZFN0cmlu
ZygpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9YU0xURW5n
aW5lSW1wbC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1hTTFRFbmdpbmVJbXBs
LmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1hTTFRFbmdpbmVJbXBs
LmhwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBACiAJYWRkUmVzdWx0TmFtZXNw
YWNlRGVjbCgKIAkJCWNvbnN0IFhhbGFuRE9NU3RyaW5nJgkJcHJlZml4LCAKIAkJCWNvbnN0IFhh
bGFuRE9NQ2hhcioJCQluYW1lc3BhY2VWYWwsCi0JCQlYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBl
CWxlbikKKwkJCXNpemVfdHlwZQkJCQkJbGVuKQogCXsKIAkJbV9yZXN1bHROYW1lc3BhY2VzU3Rh
Y2suYWRkRGVjbGFyYXRpb24oCiAJCQlwcmVmaXgsCkBAIC00OTYsMTUgKzQ5NiwxNSBAQAogICAg
ICAqIEBwYXJhbSB0aGVMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUKICAgICAgKiBAcGFy
YW0gZnJvbUNvcHkgdHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIGJlaW5nIGNvcGllZCBmcm9tIHRo
ZSBzb3VyY2UgdHJlZQogICAgICAqIEBwYXJhbSBsb2NhdG9yIFRoZSBMb2NhdG9yIGZvciByZXBv
cnRpbmcgZXJyb3JzLgotCSAqLwotCXZvaWQKLQlhZGRSZXN1bHRBdHRyaWJ1dGUoCi0JCQlBdHRy
aWJ1dGVMaXN0SW1wbCYJCQlhdHRMaXN0LAotCQkJY29uc3QgWGFsYW5ET01TdHJpbmcmCQlhbmFt
ZSwKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQl2YWx1ZSwKLSAgICAgICAgICAgIFhhbGFuRE9N
U3RyaW5nOjpzaXplX3R5cGUgICB0aGVMZW5ndGgsCi0gICAgICAgICAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgZnJvbUNvcHkgPSBmYWxzZSwKLQkJCWNvbnN0IExvY2F0b3JUeXBlKgkg
ICAgICAgIGxvY2F0b3IgPSAwKTsKKyAgICAgKi8KKyAgICB2b2lkCisgICAgYWRkUmVzdWx0QXR0
cmlidXRlKAorICAgICAgICAgICAgQXR0cmlidXRlTGlzdEltcGwmICAgICAgYXR0TGlzdCwKKyAg
ICAgICAgICAgIGNvbnN0IFhhbGFuRE9NU3RyaW5nJiAgIGFuYW1lLAorICAgICAgICAgICAgY29u
c3QgWGFsYW5ET01DaGFyKiAgICAgdmFsdWUsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAg
ICAgICAgICB0aGVMZW5ndGgsCisgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICBm
cm9tQ29weSA9IGZhbHNlLAorICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAgbG9j
YXRvciA9IDApOwogCiAJLyoqCiAJICogQWRkIGF0dHJpYnV0ZSB0byBwZW5kaW5nIGF0dHJpYnV0
ZXMgbGlzdCwgYW5kIGlmIGl0IGlzIGEgbmFtZXNwYWNlLCBhZGQKQEAgLTU4NSwxNSArNTg1LDE1
IEBACiAJdm9pZAogCWVuZEVsZW1lbnQoY29uc3QgWGFsYW5ET01DaGFyKgluYW1lKTsKIAotCXZv
aWQKLQljaGFyYWN0ZXJzICgKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaCwKLQkJCVhhbGFu
RE9NU3RyaW5nOjpzaXplX3R5cGUJbGVuZ3RoKTsKKyAgICB2b2lkCisgICAgY2hhcmFjdGVycyAo
CisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAgICAgICAgIHNp
emVfdHlwZSAgICAgICAgICAgICAgIGxlbmd0aCk7CiAKLQl2b2lkCi0JaWdub3JhYmxlV2hpdGVz
cGFjZSgKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaCwKLQkJCVhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUJbGVuZ3RoKTsKKyAgICB2b2lkCisgICAgaWdub3JhYmxlV2hpdGVzcGFjZSgKKyAg
ICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIGNoLAorICAgICAgICAgICAgc2l6ZV90
eXBlICAgICAgICAgICAgICAgbGVuZ3RoKTsKIAogCXZvaWQKIAlwcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oCkBAIC02MDMsMTggKzYwMywxOCBAQAogCXZvaWQKIAlyZXNldERvY3VtZW50KCk7CiAKLQkv
KioKLQkgKiBSZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBjaGFyYWN0ZXIgZGF0YS4KLQkgKgotCSAq
IEBwYXJhbSBjaAkgcG9pbnRlciB0byBjaGFyYWN0ZXJzIGZyb20gdGhlIFhNTCBkb2N1bWVudAot
CSAqIEBwYXJhbSBzdGFydCAgc3RhcnRuZyBvZmZzZXQgaW4gJ2NoJyBhcnJheQotCSAqIEBwYXJh
bSBsZW5ndGggbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gcmVhZCBmcm9tIHRoZSBhcnJheSAKLQkg
Ki8KLQl2b2lkCi0JY2hhcmFjdGVycygKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaCwKLQkJ
CVhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUJc3RhcnQsCi0JCQlYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlCWxlbmd0aCk7CisgICAgLyoqCisgICAgICogUmVjZWl2ZSBub3RpZmljYXRpb24gb2Yg
Y2hhcmFjdGVyIGRhdGEuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2ggICAgIHBvaW50ZXIgdG8g
Y2hhcmFjdGVycyBmcm9tIHRoZSBYTUwgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gc3RhcnQgIHN0
YXJ0bmcgb2Zmc2V0IGluICdjaCcgYXJyYXkKKyAgICAgKiBAcGFyYW0gbGVuZ3RoIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIHRvIHJlYWQgZnJvbSB0aGUgYXJyYXkgCisgICAgICovCisgICAgdm9pZAor
ICAgIGNoYXJhY3RlcnMoCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwK
KyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAg
c2l6ZV90eXBlICAgICAgICAgICAgICAgbGVuZ3RoKTsKIAogCS8qKgogCSAqIFNlbmQgY2hhcmFj
dGVyIGRhdGEgZnJvbSB0aGUgbm9kZSB0byB0aGUgcmVzdWx0IHRyZWUuCkBAIC02NDEsMjAgKzY0
MSwyMCBAQAogCXZvaWQKIAlzdGFydEVsZW1lbnQoY29uc3QgWGFsYW5ET01DaGFyKgluYW1lKTsK
IAotCS8qKgotCSAqIFJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGNoYXJhY3RlciBkYXRhLiBJZiBh
dmFpbGFibGUsIHdoZW4gdGhlCi0JICogZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmcgYXR0cmlidXRl
IGlzIHVzZWQsIG91dHB1dCByYXcgdGV4dCB3aXRob3V0Ci0JICogZXNjYXBpbmcuCi0JICoKLQkg
KiBAcGFyYW0gY2ggcG9pbnRlciB0byBjaGFyYWN0ZXJzIGZyb20gdGhlIFhNTCBkb2N1bWVudAot
CSAqIEBwYXJhbSBzdGFydCBzdGFydCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkKLQkgKiBAcGFyYW0g
bGVuZ3RoIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlYWQgZnJvbSB0aGUgYXJyYXkKLQkgKi8K
LQl2b2lkCi0JY2hhcmFjdGVyc1JhdygKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaCwKLQkJ
CVhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUJc3RhcnQsCi0JCQlYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlCWxlbmd0aCk7CisgICAgLyoqCisgICAgICogUmVjZWl2ZSBub3RpZmljYXRpb24gb2Yg
Y2hhcmFjdGVyIGRhdGEuIElmIGF2YWlsYWJsZSwgd2hlbiB0aGUKKyAgICAgKiBkaXNhYmxlLW91
dHB1dC1lc2NhcGluZyBhdHRyaWJ1dGUgaXMgdXNlZCwgb3V0cHV0IHJhdyB0ZXh0IHdpdGhvdXQK
KyAgICAgKiBlc2NhcGluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjaCBwb2ludGVyIHRvIGNo
YXJhY3RlcnMgZnJvbSB0aGUgWE1MIGRvY3VtZW50CisgICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0
IHBvc2l0aW9uIGluIHRoZSBhcnJheQorICAgICAqIEBwYXJhbSBsZW5ndGggbnVtYmVyIG9mIGNo
YXJhY3RlcnMgdG8gcmVhZCBmcm9tIHRoZSBhcnJheQorICAgICAqLworICAgIHZvaWQKKyAgICBj
aGFyYWN0ZXJzUmF3KAorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgY2gsCisg
ICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNp
emVfdHlwZSAgICAgICAgICAgICAgIGxlbmd0aCk7CiAKIAkvKioKIAkgKiBTZW5kIHJhdyBjaGFy
YWN0ZXIgZGF0YSBmcm9tIHRoZSBub2RlIHRvIHRoZSByZXN1bHQgdHJlZS4KQEAgLTY4OSwxOCAr
Njg5LDE4IEBACiAJdm9pZAogCWVudGl0eVJlZmVyZW5jZShjb25zdCBYYWxhbkRPTUNoYXIqCQlk
YXRhKTsKIAotCS8qKgotCSAqIFJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGNkYXRhLgotCSAqCi0J
ICogQHBhcmFtIGNoCSBwb2ludGVyIHRvIGNoYXJhY3RlcnMgZnJvbSB0aGUgWE1MIGRvY3VtZW50
Ci0JICogQHBhcmFtIHN0YXJ0ICBzdGFydCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkKLQkgKiBAcGFy
YW0gbGVuZ3RoIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJlYWQgZnJvbSB0aGUgYXJyYXkKLQkg
Ki8KLQl2b2lkCi0JY2RhdGEoCi0JCQljb25zdCBYYWxhbkRPTUNoYXIqCQkJY2gsCi0JCQlYYWxh
bkRPTVN0cmluZzo6c2l6ZV90eXBlCXN0YXJ0LAotCQkJWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZQlsZW5ndGgpOworICAgIC8qKgorICAgICAqIFJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGNkYXRh
LgorICAgICAqCisgICAgICogQHBhcmFtIGNoICAgICBwb2ludGVyIHRvIGNoYXJhY3RlcnMgZnJv
bSB0aGUgWE1MIGRvY3VtZW50CisgICAgICogQHBhcmFtIHN0YXJ0ICBzdGFydCBwb3NpdGlvbiBp
biB0aGUgYXJyYXkKKyAgICAgKiBAcGFyYW0gbGVuZ3RoIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRv
IHJlYWQgZnJvbSB0aGUgYXJyYXkKKyAgICAgKi8KKyAgICB2b2lkCisgICAgY2RhdGEoCisgICAg
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAgICAgICAgIHNpemVfdHlw
ZSAgICAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAg
ICAgbGVuZ3RoKTsKIAogCS8qKgogCSAqIENsb25lIGEgbm9kZSB0byB0aGUgcmVzdWx0IHRyZWUK
QEAgLTE2MDAsMTIgKzE2MDAsMTIgQEAKIAkJCWNvbnN0IFhhbGFuRE9NU3RyaW5nJgl0aGVTdHJp
bmcsCiAJCQlib29sCQkJCQlpc0NEQVRBKTsKIAotCXZvaWQKLQlmaXJlQ2hhcmFjdGVyR2VuZXJh
dGVFdmVudCgKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaCwKLQkJCVhhbGFuRE9NU3RyaW5n
OjpzaXplX3R5cGUJc3RhcnQsCi0JCQlYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCWxlbmd0aCwK
LQkJCWJvb2wJCQkJCQlpc0NEQVRBKTsKKyAgICB2b2lkCisgICAgZmlyZUNoYXJhY3RlckdlbmVy
YXRlRXZlbnQoCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBjaCwKKyAgICAg
ICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgc2l6ZV90
eXBlICAgICAgICAgICAgICAgbGVuZ3RoLAorICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgaXNDREFUQSk7CiAKIAl2b2lkCiAJY2hlY2tEZWZhdWx0TmFtZXNwYWNlKApJbmRleDog
c3JjL3hhbGFuYy9YU0xUL0VsZW1Gb3JFYWNoLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5j
L1hTTFQvRWxlbUZvckVhY2guaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hT
TFQvRWxlbUZvckVhY2guaHBwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMSArNjcsMTEgQEAKIAkg
KiBAcGFyYW0gY29sdW1uTnVtYmVyCQkJY29sdW1uIG51bWJlciBpbiBkb2N1bWVudAogCSAqLwog
CUVsZW1Gb3JFYWNoKAotCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVj
dGlvbkNvbnRleHQsCi0JCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAotCQkJY29u
c3QgQXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAot
CQkJaW50CQkJCQkJCQljb2x1bW5OdW1iZXIpOworCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNv
bnRleHQmICBjb25zdHJ1Y3Rpb25Db250ZXh0LAorCQkJU3R5bGVzaGVldCYgICAgICAgICAgICAg
ICAgICAgICBzdHlsZXNoZWV0VHJlZSwKKwkJCWNvbnN0IEF0dHJpYnV0ZUxpc3RUeXBlJiAgICAg
ICAgYXR0cywKKwkJCVhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwK
KwkJCVhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyKTsKIAogCXZp
cnR1YWwKIAl+RWxlbUZvckVhY2goKTsKQEAgLTExMiw3ICsxMTIsNyBAQAogI2VuZGlmCiAJCiAJ
dmlydHVhbAljb25zdCBYUGF0aCoKLQlnZXRYUGF0aCh1bnNpZ25lZCBpbnQJaW5kZXggPSAwKSBj
b25zdDsKKwlnZXRYUGF0aChYYWxhblNpemVfdCAgICBpbmRleCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKIApAQCAtMTI2LDExICsxMjYsMTEgQEAKIAkgKiBAcGFyYW0geHNsVG9rZW4gICAgICAgICAg
ICAgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHR5cGUgb2YgaW5zdGFuY2UuCiAJICovCiAJ
RWxlbUZvckVhY2goCi0JCQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29uc3RydWN0
aW9uQ29udGV4dCwKLQkJCVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCi0JCQlpbnQJ
CQkJCQkJCWxpbmVOdW1iZXIsCi0JCQlpbnQJCQkJCQkJCWNvbHVtbk51bWJlciwKLQkJCWludAkJ
CQkJCQkJeHNsVG9rZW4pOworCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmICBjb25z
dHJ1Y3Rpb25Db250ZXh0LAorCQkJU3R5bGVzaGVldCYgICAgICAgICAgICAgICAgICAgICBzdHls
ZXNoZWV0VHJlZSwKKwkJCVhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJl
ciwKKwkJCVhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyLAorCQkJ
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2xUb2tlbik7CiAKICNpZiAhZGVmaW5l
ZChYQUxBTl9SRUNVUlNJVkVfU1RZTEVTSEVFVF9FWEVDVVRJT04pCiAKSW5kZXg6IHNyYy94YWxh
bmMvWFNMVC9YYWxhbkVsZW1FbGVtZW50QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMv
eGFsYW5jL1hTTFQvWGFsYW5FbGVtRWxlbWVudEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDcwNjEy
OSkKKysrIHNyYy94YWxhbmMvWFNMVC9YYWxhbkVsZW1FbGVtZW50QWxsb2NhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOSBAQAogCiAKIAotWGFsYW5FbGVtRWxlbWVudEFsbG9j
YXRvcjo6WGFsYW5FbGVtRWxlbWVudEFsbG9jYXRvcihNZW1vcnlNYW5hZ2VyVHlwZSYgIHRoZU1h
bmFnZXIsIHNpemVfdHlwZQl0aGVCbG9ja0NvdW50KSA6CitYYWxhbkVsZW1FbGVtZW50QWxsb2Nh
dG9yOjpYYWxhbkVsZW1FbGVtZW50QWxsb2NhdG9yKAorICAgICAgICAgICAgTWVtb3J5TWFuYWdl
clR5cGUmICB0aGVNYW5hZ2VyLAorICAgICAgICAgICAgc2l6ZV90eXBlCSAgICAgICAgdGhlQmxv
Y2tDb3VudCkgOgogCW1fYWxsb2NhdG9yKHRoZU1hbmFnZXIsIHRoZUJsb2NrQ291bnQpCiB7CiB9
CkBAIC00MSw4ICs0Myw4IEBACiAJCQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29u
c3RydWN0aW9uQ29udGV4dCwKIAkJCVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCiAJ
CQljb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYJCWF0dHMsCi0JCQlpbnQJCQkJCQkJCWxpbmVOdW1i
ZXIsCi0JCQlpbnQJCQkJCQkJCWNvbHVtbk51bWJlcikKKwkJCVhhbGFuRmlsZUxvYwkJCQkgICAg
bGluZU51bWJlciwKKwkJCVhhbGFuRmlsZUxvYwkJCQkJY29sdW1uTnVtYmVyKQogewogCWRhdGFf
dHlwZSogY29uc3QJdGhlQmxvY2sgPSBtX2FsbG9jYXRvci5hbGxvY2F0ZUJsb2NrKCk7CiAJYXNz
ZXJ0KHRoZUJsb2NrICE9IDApOwpJbmRleDogc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxlbUF0dHJp
YnV0ZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxl
bUF0dHJpYnV0ZUFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMv
WFNMVC9YYWxhbkVsZW1BdHRyaWJ1dGVBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw3ICsyMyw5IEBACiAKIAogCi1YYWxhbkVsZW1BdHRyaWJ1dGVBbGxvY2F0b3I6OlhhbGFuRWxl
bUF0dHJpYnV0ZUFsbG9jYXRvcihNZW1vcnlNYW5hZ2VyVHlwZSYgIHRoZU1hbmFnZXIsIHNpemVf
dHlwZQl0aGVCbG9ja0NvdW50KSA6CitYYWxhbkVsZW1BdHRyaWJ1dGVBbGxvY2F0b3I6OlhhbGFu
RWxlbUF0dHJpYnV0ZUFsbG9jYXRvcigKKyAgICAgICAgICAgIE1lbW9yeU1hbmFnZXJUeXBlJiAg
dGhlTWFuYWdlciwKKyAgICAgICAgICAgIHNpemVfdHlwZQkgICAgICAgIHRoZUJsb2NrQ291bnQp
IDoKIAltX2FsbG9jYXRvcih0aGVNYW5hZ2VyLCB0aGVCbG9ja0NvdW50KQogewogfQpAQCAtNDEs
OCArNDMsOCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlv
bkNvbnRleHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3Qg
QXR0cmlidXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJ
aW50CQkJCQkJCQljb2x1bW5OdW1iZXIpCisJCQlYYWxhbkZpbGVMb2MJCQkJCWxpbmVOdW1iZXIs
CisJCQlYYWxhbkZpbGVMb2MJCQkJCWNvbHVtbk51bWJlcikKIHsKIAlkYXRhX3R5cGUqIGNvbnN0
CXRoZUJsb2NrID0gbV9hbGxvY2F0b3IuYWxsb2NhdGVCbG9jaygpOwogCWFzc2VydCh0aGVCbG9j
ayAhPSAwKTsKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9TdHlsZXNoZWV0SGFuZGxlci5ocHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRIYW5kbGVyLmhwcAkocmV2aXNp
b24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1N0eWxlc2hlZXRIYW5kbGVyLmhwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSwxMCBAQAogICAgICAqIEBzZWUgI2lnbm9yYWJsZVdo
aXRlc3BhY2UgCiAgICAgICogQHNlZSBvcmcueG1sLnNheC5Mb2NhdG9yCiAgICAgICovCi0gICAg
dmlydHVhbCB2b2lkIGNoYXJhY3RlcnMgKGNvbnN0IFhNTENoKiBjb25zdCBjaGFycywgY29uc3Qg
dW5zaWduZWQgaW50IGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkCisgICAgY2hhcmFjdGVycygK
KyAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCisgICAgICAgICAgICBjb25z
dCBzaXplX3R5cGUgICAgIGxlbmd0aCk7CiAKICAgICAvKioKICAgICAgKiBSZWNlaXZlIG5vdGlm
aWNhdGlvbiBvZiBjaGFyYWN0ZXIgZGF0YS4gSWYgYXZhaWxhYmxlLCB3aGVuIHRoZQpAQCAtMTQx
LDcgKzE0NCwxMCBAQAogICAgICAqIEBwYXJhbSBsZW5ndGggbnVtYmVyIG9mIGNoYXJhY3RlcnMg
dG8gcmVhZCBmcm9tIHRoZSBhcnJheQogICAgICAqIEBleGNlcHRpb24gU0FYRXhjZXB0aW9uCiAg
ICAgICovCi0gICAgdmlydHVhbCB2b2lkIGNoYXJhY3RlcnNSYXcoY29uc3QgWE1MQ2gqIGNvbnN0
IGNoYXJzLCBjb25zdCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQKKyAg
ICBjaGFyYWN0ZXJzUmF3KAorICAgICAgICAgICAgY29uc3QgWE1MQ2gqIGNvbnN0ICBjaGFycywK
KyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKTsKIAogICAgIC8qKgogICAg
ICAqIFJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGNkYXRhLgpAQCAtMTY2LDcgKzE3MiwxMCBAQAog
ICAgICAqIEBleGNlcHRpb24gU0FYRXhjZXB0aW9uCiAgICAgICogQHNlZSAjaWdub3JhYmxlV2hp
dGVzcGFjZSAKICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgY2RhdGEoY29uc3QgWE1MQ2gqIGNv
bnN0IGNoLCBjb25zdCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQKKyAg
ICBjZGF0YSgKKyAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2gsCisgICAgICAgICAg
ICBjb25zdCBzaXplX3R5cGUgICAgIGxlbmd0aCk7CiAKICAgICAvKioKICAgICAgKiBSZWNlaXZl
IG5vdGlmaWNhdGlvbiBvZiBpZ25vcmFibGUgd2hpdGVzcGFjZSBpbiBlbGVtZW50IGNvbnRlbnQu
CkBAIC0xOTEsNyArMjAwLDEwIEBACiAgICAgICogQGV4Y2VwdGlvbiBTQVhFeGNlcHRpb24KICAg
ICAgKiBAc2VlICNjaGFyYWN0ZXJzCiAgICAgICovCi0gICAgdmlydHVhbCB2b2lkIGlnbm9yYWJs
ZVdoaXRlc3BhY2UgKGNvbnN0IFhNTENoKiBjb25zdCBjaGFycywgY29uc3QgdW5zaWduZWQgaW50
IGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkCisgICAgaWdub3JhYmxlV2hpdGVzcGFjZSgKKyAg
ICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCisgICAgICAgICAgICBjb25zdCBz
aXplX3R5cGUgICAgIGxlbmd0aCk7CiAKICAgICAvKioKICAgICAgKiBSZWNlaXZlIG5vdGlmaWNh
dGlvbiBvZiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uCkBAIC00NjcsMTMgKzQ3OSwxMyBAQAog
CiAgICAgdm9pZAogICAgIHByb2Nlc3NUZXh0KAotICAgICAgICAgICAgY29uc3QgWE1MQ2gqICAg
ICAgICAgICAgICAgIGNoYXJzLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSAgIGxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBYTUxDaCogICAgY2hhcnMsCisgICAgICAg
ICAgICBzaXplX3R5cGUgICAgICAgbGVuZ3RoKTsKIAogICAgIHZvaWQKICAgICBhY2N1bXVsYXRl
VGV4dCgKLSAgICAgICAgICAgIGNvbnN0IFhNTENoKiAgICAgICAgICAgICAgICBjaGFycywKLSAg
ICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBsZW5ndGgpOworICAgICAgICAg
ICAgY29uc3QgWE1MQ2gqICAgIGNoYXJzLAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgIGxl
bmd0aCk7CiAKICAgICB2b2lkCiAgICAgcHJvY2Vzc0FjY3VtdWxhdGVkVGV4dCgpOwpJbmRleDog
c3JjL3hhbGFuYy9YU0xUL0VsZW1EZWNpbWFsRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMv
eGFsYW5jL1hTTFQvRWxlbURlY2ltYWxGb3JtYXQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBz
cmMveGFsYW5jL1hTTFQvRWxlbURlY2ltYWxGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw4ICs1MCw4IEBACiAgICAgICAgICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYg
IGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBTdHlsZXNoZWV0JiAgICAgICAgICAg
ICAgICAgICAgIHN0eWxlc2hlZXRUcmVlLAogICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlz
dFR5cGUmICAgICAgICBhdHRzLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2x1bW5OdW1iZXIpIDoKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAg
ICAgICAgICAgICAgbGluZU51bWJlciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAg
ICAgICAgICAgICAgY29sdW1uTnVtYmVyKSA6CiAgICAgRWxlbVRlbXBsYXRlRWxlbWVudChjb25z
dHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLApAQCAtNjYsMTMgKzY2LDEzIEBA
CiAgICAgbV9kZWNpbWFsRm9ybWF0U3ltYm9scy5zZXRJbmZpbml0eShYYWxhbkRPTVN0cmluZyhj
b25zdHJ1Y3Rpb25Db250ZXh0LmdldE1lbW9yeU1hbmFnZXIoKSkpOwogICAgIG1fZGVjaW1hbEZv
cm1hdFN5bWJvbHMuc2V0TmFOKFhhbGFuRE9NU3RyaW5nKGNvbnN0cnVjdGlvbkNvbnRleHQuZ2V0
TWVtb3J5TWFuYWdlcigpKSk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgIG5BdHRycyA9IGF0
dHMuZ2V0TGVuZ3RoKCk7CisgICAgY29uc3QgWGFsYW5TaXplX3QgIG5BdHRycyA9IGF0dHMuZ2V0
TGVuZ3RoKCk7CiAKLSAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbkF0dHJzOyBpKysp
CisgICAgZm9yIChYYWxhblNpemVfdCBpID0gMDsgaSA8IG5BdHRyczsgaSsrKQogICAgIHsKICAg
ICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiBjb25zdCAgICAgICBhbmFtZSA9IGF0dHMuZ2V0TmFt
ZShpKTsKIAotICAgICAgICBpZihlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfTkFN
RSkpCisgICAgICAgIGlmIChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfTkFNRSkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGFzc2VydChhdHRzLmdldFZhbHVlKGkpICE9IDApOwog
CkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGF0dHMuZ2V0VmFsdWUoaSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoZXF1YWxzKGFuYW1l
LCBDb25zdGFudHM6OkFUVFJOQU1FX0RFQ0lNQUxTRVBBUkFUT1IpKQorICAgICAgICBlbHNlIGlm
IChlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfREVDSU1BTFNFUEFSQVRPUikpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3QgICBkZWNpbWFs
U2VwVmFsdWUgPSBhdHRzLmdldFZhbHVlKGkpOwogICAgICAgICAgICAgYXNzZXJ0KGRlY2ltYWxT
ZXBWYWx1ZSAhPSAwKTsKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgICAgICAgICBk
ZWNpbWFsU2VwVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX0dST1VQSU5HU0VQQVJBVE9SKSkK
KyAgICAgICAgZWxzZSBpZiAoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX0dST1VQ
SU5HU0VQQVJBVE9SKSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFy
KiBjb25zdCAgIHNlcFZhbHVlID0gYXR0cy5nZXRWYWx1ZShpKTsKICAgICAgICAgICAgIGFzc2Vy
dChzZXBWYWx1ZSE9IDApOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAKICAgICAgICAgICAgICAgICAg
ICAgc2VwVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYo
ZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX0lORklOSVRZKSkKKyAgICAgICAgZWxz
ZSBpZiAoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX0lORklOSVRZKSkKICAgICAg
ICAgewogICAgICAgICAgICAgYXNzZXJ0KGF0dHMuZ2V0VmFsdWUoaSkgIT0gMCk7CiAKICAgICAg
ICAgICAgIG1fZGVjaW1hbEZvcm1hdFN5bWJvbHMuc2V0SW5maW5pdHkoYXR0cy5nZXRWYWx1ZShp
KSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6
QVRUUk5BTUVfTUlOVVNTSUdOKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxzKGFuYW1lLCBDb25z
dGFudHM6OkFUVFJOQU1FX01JTlVTU0lHTikpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciogY29uc3QgICBtaW51c1ZhbHVlID0gYXR0cy5nZXRWYWx1ZShpKTsKICAg
ICAgICAgICAgIGFzc2VydChtaW51c1ZhbHVlICE9IDApOwpAQCAtMTUzLDEzICsxNTMsMTMgQEAK
ICAgICAgICAgICAgICAgICAgICAgbWludXNWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZihlcXVhbHMoYW5hbWUsIENvbnN0YW50czo6QVRUUk5BTUVfTkFO
KSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX05B
TikpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFzc2VydChhdHRzLmdldFZhbHVlKGkpICE9IDAp
OwogCiAgICAgICAgICAgICBtX2RlY2ltYWxGb3JtYXRTeW1ib2xzLnNldE5hTihhdHRzLmdldFZh
bHVlKGkpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGVxdWFscyhhbmFtZSwgQ29uc3Rh
bnRzOjpBVFRSTkFNRV9QRVJDRU5UKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxzKGFuYW1lLCBD
b25zdGFudHM6OkFUVFJOQU1FX1BFUkNFTlQpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25z
dCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgcGVyY2VudFZhbHVlID0gYXR0cy5nZXRWYWx1ZShpKTsK
ICAgICAgICAgICAgIGFzc2VydChwZXJjZW50VmFsdWUgIT0gMCk7CkBAIC0xNzgsNyArMTc4LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgcGVyY2VudFZhbHVlKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFN
RV9QRVJNSUxMRSkpCisgICAgICAgIGVsc2UgaWYgKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpB
VFRSTkFNRV9QRVJNSUxMRSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9N
Q2hhciogY29uc3QgICBwZXJtaWxsZVZhbHVlID0gYXR0cy5nZXRWYWx1ZShpKTsKICAgICAgICAg
ICAgIGFzc2VydChwZXJtaWxsZVZhbHVlICE9IDApOwpAQCAtMTk3LDcgKzE5Nyw3IEBACiAgICAg
ICAgICAgICAgICAgICAgIHBlcm1pbGxlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX1pFUk9E
SUdJVCkpCisgICAgICAgIGVsc2UgaWYgKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFN
RV9aRVJPRElHSVQpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIq
IGNvbnN0ICAgemVyb0RpZ2l0VmFsdWUgPSBhdHRzLmdldFZhbHVlKGkpOwogICAgICAgICAgICAg
YXNzZXJ0KHplcm9EaWdpdFZhbHVlICE9IDApOwpAQCAtMjE2LDcgKzIxNiw3IEBACiAgICAgICAg
ICAgICAgICAgICAgIHplcm9EaWdpdFZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFNRV9ESUdJVCkp
CisgICAgICAgIGVsc2UgaWYgKGVxdWFscyhhbmFtZSwgQ29uc3RhbnRzOjpBVFRSTkFNRV9ESUdJ
VCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogY29uc3QgICBk
aWdpdFZhbHVlID0gYXR0cy5nZXRWYWx1ZShpKTsKICAgICAgICAgICAgIGFzc2VydChkaWdpdFZh
bHVlICE9IDApOwpAQCAtMzA4LDcgKzMwOCw3IEBACiAKIAogY29uc3QgWFBhdGgqCi1FbGVtRGVj
aW1hbEZvcm1hdDo6Z2V0WFBhdGgodW5zaWduZWQgaW50ICAgIGluZGV4KSBjb25zdAorRWxlbURl
Y2ltYWxGb3JtYXQ6OmdldFhQYXRoKFhhbGFuU2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGNv
bnN0IFhQYXRoKiAgICByZXN1bHQgPSAwOwogCkluZGV4OiBzcmMveGFsYW5jL1hTTFQvRWxlbUF0
dHJpYnV0ZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xUL0VsZW1BdHRyaWJ1
dGVTZXQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQvRWxlbUF0dHJp
YnV0ZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAKICAgICAgICAgICAg
IFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0JiAgY29uc3RydWN0aW9uQ29udGV4dCwKICAg
ICAgICAgICAgIFN0eWxlc2hlZXQmICAgICAgICAgICAgICAgICAgICAgc3R5bGVzaGVldFRyZWUs
CiAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0VHlwZSYgICAgICAgIGF0dHMsCi0gICAg
ICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsCi0gICAg
ICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikgOgor
ICAgICAgICAgICAgWGFsYW5GaWxlTG9jICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAor
ICAgICAgICAgICAgWGFsYW5GaWxlTG9jICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIp
IDoKICAgICBFbGVtVXNlKGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICBzdHlsZXNo
ZWV0VHJlZSwKICAgICAgICAgICAgIGxpbmVOdW1iZXIsCkBAIC01MCwxMyArNTAsMTMgQEAKICAg
ICAgICAgICAgIFN0eWxlc2hlZXRDb25zdHJ1Y3Rpb25Db250ZXh0OjpFTEVNTkFNRV9BVFRSSUJV
VEVfU0VUKSwKICAgICBtX3FuYW1lKDApCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50ICBuQXR0
cnMgPSBhdHRzLmdldExlbmd0aCgpOworICAgIGNvbnN0IFhhbGFuU2l6ZV90ICAgbkF0dHJzID0g
YXR0cy5nZXRMZW5ndGgoKTsKIAotICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuQXR0
cnM7IGkrKykKKyAgICBmb3IgKFhhbGFuU2l6ZV90IGkgPSAwOyBpIDwgbkF0dHJzOyBpKyspCiAg
ICAgewogICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqIGNvbnN0ICAgYW5hbWUgPSBhdHRzLmdl
dE5hbWUoaSk7CiAKLSAgICAgICAgaWYoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1F
X05BTUUpKQorICAgICAgICBpZiAoZXF1YWxzKGFuYW1lLCBDb25zdGFudHM6OkFUVFJOQU1FX05B
TUUpKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3FuYW1lID0gY29uc3RydWN0aW9uQ29udGV4
dC5jcmVhdGVYYWxhblFOYW1lKAogICAgICAgICAgICAgICAgIGF0dHMuZ2V0VmFsdWUoaSksCkBA
IC03MiwxMiArNzIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYXR0cy5nZXRWYWx1ZShpKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihwcm9jZXNzVXNlQXR0
cmlidXRlU2V0cygKKyAgICAgICAgZWxzZSBpZiAocHJvY2Vzc1VzZUF0dHJpYnV0ZVNldHMoCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdGlvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgIGFuYW1lLAogICAgICAgICAgICAgICAgICAgICBhdHRzLAogICAgICAgICAgICAgICAgICAg
ICBpKSA9PSBmYWxzZSAmJgotICAgICAgICAgICAgICAgIGlzQXR0ck9LKAorICAgICAgICAgICAg
ICAgICBpc0F0dHJPSygKICAgICAgICAgICAgICAgICAgICAgYW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgIGF0dHMsCiAgICAgICAgICAgICAgICAgICAgIGksCkBAIC05MSw3ICs5MSw3IEBACiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZihtX3FuYW1lID09IDApCisgICAgaWYgKG1fcW5hbWUg
PT0gMCkKICAgICB7CiAgICAgICAgIGVycm9yKAogICAgICAgICAgICAgY29uc3RydWN0aW9uQ29u
dGV4dCwKSW5kZXg6IHNyYy94YWxhbmMvWFNMVC9FbGVtQ2hvb3NlLmhwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzcmMveGFsYW5jL1hTTFQvRWxlbUNob29zZS5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNy
Yy94YWxhbmMvWFNMVC9FbGVtQ2hvb3NlLmhwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDks
OCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRl
eHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmli
dXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJ
CQkJCQljb2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLAorCQkJ
WGFsYW5GaWxlTG9jCQkJCQljb2x1bW5OdW1iZXIpOwogCiAKIAkvLyBUaGVzZSBtZXRob2RzIGFy
ZSBpbmhlcml0ZWQgZnJvbSBFbGVtVGVtcGxhdGVFbGVtZW50IC4uLgpJbmRleDogc3JjL3hhbGFu
Yy9YU0xUL0VsZW1BcHBseUltcG9ydC5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YU0xU
L0VsZW1BcHBseUltcG9ydC5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWFNM
VC9FbGVtQXBwbHlJbXBvcnQuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBACiAJ
CQlTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYJY29uc3RydWN0aW9uQ29udGV4dCwKIAkJ
CVN0eWxlc2hlZXQmCQkJCQkJc3R5bGVzaGVldFRyZWUsCiAJCQljb25zdCBBdHRyaWJ1dGVMaXN0
VHlwZSYJCWF0dHMsCi0JCQlpbnQJCQkJCQkJCWxpbmVOdW1iZXIsIAotCQkJaW50CQkJCQkJCQlj
b2x1bW5OdW1iZXIpOworCQkJWGFsYW5GaWxlTG9jCQkJCQlsaW5lTnVtYmVyLCAKKwkJCVhhbGFu
RmlsZUxvYwkJCQkJY29sdW1uTnVtYmVyKTsKICAgICAgIAogCiAJLy8gVGhlc2UgbWV0aG9kcyBh
cmUgaW5oZXJpdGVkIGZyb20gRWxlbVRlbXBsYXRlRWxlbWVudCAuLi4KQEAgLTc3LDcgKzc3LDYg
QEAKIAl2aXJ0dWFsIEVsZW1UZW1wbGF0ZUVsZW1lbnQqCiAJYXBwZW5kQ2hpbGRFbGVtKEVsZW1U
ZW1wbGF0ZUVsZW1lbnQqCW5ld0NoaWxkKTsKIAotCiBwcml2YXRlOgogfTsKIApJbmRleDogc3Jj
L3hhbGFuYy9YU0xUL0VsZW1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hT
TFQvRWxlbUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hTTFQv
RWxlbUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBACiAgICAgICAg
ICAgICBTdHlsZXNoZWV0Q29uc3RydWN0aW9uQ29udGV4dCYgIGNvbnN0cnVjdGlvbkNvbnRleHQs
CiAgICAgICAgICAgICBTdHlsZXNoZWV0JiAgICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRU
cmVlLAogICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlzdFR5cGUmICAgICAgICBhdHRzLAot
ICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAot
ICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIp
IDoKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJl
ciwKKyAgICAgICAgICAgIFhhbGFuRmlsZUxvYyAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVt
YmVyKSA6CiAgICAgRWxlbVVzZShjb25zdHJ1Y3Rpb25Db250ZXh0LAogICAgICAgICAgICAgc3R5
bGVzaGVldFRyZWUsCiAgICAgICAgICAgICBsaW5lTnVtYmVyLApAQCAtNTksOSArNTksOSBAQAog
ICAgIC8vIHR1cm4gdGhlbSBvZmYuLi4KIC8vICBtX25hbWVzcGFjZXNIYW5kbGVyLnNldFByb2Nl
c3NOYW1lc3BhY2VBbGlhaXNlcyhmYWxzZSk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgIG5B
dHRycyA9IGF0dHMuZ2V0TGVuZ3RoKCk7CisgICAgY29uc3QgWGFsYW5TaXplX3QgIG5BdHRycyA9
IGF0dHMuZ2V0TGVuZ3RoKCk7CiAKLSAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbkF0
dHJzOyBpKyspCisgICAgZm9yIChYYWxhblNpemVfdCBpID0gMDsgaSA8IG5BdHRyczsgaSsrKQog
ICAgIHsKICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiBjb25zdCAgIGFuYW1lID0gYXR0cy5n
ZXROYW1lKGkpOwogCkBAIC0xMjUsNiArMTI1LDcgQEAKIH0KIAogCisKICNpZiAhZGVmaW5lZChY
QUxBTl9SRUNVUlNJVkVfU1RZTEVTSEVFVF9FWEVDVVRJT04pCiBjb25zdCBFbGVtVGVtcGxhdGVF
bGVtZW50KgogRWxlbUVsZW1lbnQ6OnN0YXJ0RWxlbWVudChTdHlsZXNoZWV0RXhlY3V0aW9uQ29u
dGV4dCYgICAgICAgZXhlY3V0aW9uQ29udGV4dCkgY29uc3QKSW5kZXg6IHNyYy94YWxhbmMvWFNM
VC9YYWxhbkVsZW1BcHBseVRlbXBsYXRlc0FsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Jj
L3hhbGFuYy9YU0xUL1hhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YU0xUL1hhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxs
b2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOSBAQAogCiAKIAotWGFsYW5F
bGVtQXBwbHlUZW1wbGF0ZXNBbGxvY2F0b3I6OlhhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxsb2Nh
dG9yKE1lbW9yeU1hbmFnZXJUeXBlJiAgdGhlTWFuYWdlciwgc2l6ZV90eXBlCXRoZUJsb2NrQ291
bnQpIDoKK1hhbGFuRWxlbUFwcGx5VGVtcGxhdGVzQWxsb2NhdG9yOjpYYWxhbkVsZW1BcHBseVRl
bXBsYXRlc0FsbG9jYXRvcigKKyAgICAgICAgICAgIE1lbW9yeU1hbmFnZXJUeXBlJiAgdGhlTWFu
YWdlciwKKyAgICAgICAgICAgIHNpemVfdHlwZQkgICAgICAgIHRoZUJsb2NrQ291bnQpIDoKIAlt
X2FsbG9jYXRvcih0aGVNYW5hZ2VyLCB0aGVCbG9ja0NvdW50KQogewogfQpAQCAtNDEsOCArNDMs
OCBAQAogCQkJU3R5bGVzaGVldENvbnN0cnVjdGlvbkNvbnRleHQmCWNvbnN0cnVjdGlvbkNvbnRl
eHQsCiAJCQlTdHlsZXNoZWV0JgkJCQkJCXN0eWxlc2hlZXRUcmVlLAogCQkJY29uc3QgQXR0cmli
dXRlTGlzdFR5cGUmCQlhdHRzLAotCQkJaW50CQkJCQkJCQlsaW5lTnVtYmVyLAotCQkJaW50CQkJ
CQkJCQljb2x1bW5OdW1iZXIpCisJCQlYYWxhbkZpbGVMb2MJCQkJCWxpbmVOdW1iZXIsCisJCQlY
YWxhbkZpbGVMb2MJCQkJCWNvbHVtbk51bWJlcikKIHsKIAlkYXRhX3R5cGUqIGNvbnN0CXRoZUJs
b2NrID0gbV9hbGxvY2F0b3IuYWxsb2NhdGVCbG9jaygpOwogCWFzc2VydCh0aGVCbG9jayAhPSAw
KTsKSW5kZXg6IHNyYy94YWxhbmMvWE1MU3VwcG9ydC9YYWxhbkluZGVudFdyaXRlci5ocHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuSW5kZW50V3JpdGVyLmhwcAko
cmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuSW5kZW50V3Jp
dGVyLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTggKzIyLDIxIEBACiAKICNpbmNsdWRlIDx4
YWxhbmMvSW5jbHVkZS9YYWxhblZlY3Rvci5ocHA+CiAKKyNpbmNsdWRlIDx4YWxhbmMvUGxhdGZv
cm1TdXBwb3J0L0Zvcm1hdHRlckxpc3RlbmVyLmhwcD4KICNpbmNsdWRlIDx4YWxhbmMvUGxhdGZv
cm1TdXBwb3J0L1dyaXRlci5ocHA+CiAKIAogWEFMQU5fQ1BQX05BTUVTUEFDRV9CRUdJTgogCiAK
LXRlbXBsYXRlPGNsYXNzIFdoaXRlU3BhY2VXcml0ZXIsCi0gICAgICAgICBjbGFzcyBOZXdMaW5l
V3JpdGVyPgordGVtcGxhdGU8CisgICAgY2xhc3MgV2hpdGVTcGFjZVdyaXRlciwKKyAgICBjbGFz
cyBOZXdMaW5lV3JpdGVyPgogY2xhc3MgWGFsYW5JbmRlbnRXcml0ZXIKIHsKIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAgICAgc2l6ZV90
eXBlOworIAorICAgIHR5cGVkZWYgRm9ybWF0dGVyTGlzdGVuZXI6OnNpemVfdHlwZSAgICBzaXpl
X3R5cGU7CiAgICAgdHlwZWRlZiBYYWxhblZlY3Rvcjxib29sPiAgICAgICAgICAgICAgIEJvb2xT
dGFja1R5cGU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBXaGl0ZVNwYWNlV3JpdGVyOjp3cml0ZXJf
dHlwZSAgIHdyaXRlcl90eXBlOwogCkluZGV4OiBzcmMveGFsYW5jL1hNTFN1cHBvcnQvWGFsYW5V
VEY4V3JpdGVyLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hNTFN1cHBvcnQvWGFsYW5V
VEY4V3JpdGVyLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YTUxTdXBwb3J0
L1hhbGFuVVRGOFdyaXRlci5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwzNCArMTUwLDQwIEBA
CiAgICAgLyoqCiAgICAgICogV3JpdGVzIG5hbWUgY2hhcnMgLCBpZiBub3QgcHJlc2VudGFibGUs
IHRocm93cyAKICAgICAgKi8KLSAgICB2b2lkIHdyaXRlTmFtZUNoYXIoY29uc3QgWGFsYW5ET01D
aGFyKiAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAg
ICAgICAgICB0aGVMZW5ndGgpCisgICAgdm9pZAorICAgIHdyaXRlTmFtZUNoYXIoCisgICAgICAg
ICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgZGF0YSwKKyAgICAgICAgICAgIHNpemVfdHlw
ZSAgICAgICAgICAgICAgICB0aGVMZW5ndGgpCiAgICAgewogICAgICAgICB3cml0ZShkYXRhLCB0
aGVMZW5ndGgpOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIFdyaXRlcyBuYW1lIGNoYXJzICwg
aWYgbm90IHByZXNlbnRhYmxlLCB0aHJvd3MgCisgICAgICogV3JpdGVzIG5hbWUgY2hhcnMsIGlm
IG5vdCByZXByZXNlbnRhYmxlLCB0aHJvd3MgCiAgICAgICovCi0gICAgdm9pZCB3cml0ZVBJQ2hh
cnMoY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICBkYXRhLAotICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQorICAgIHZvaWQKKyAgICB3cml0
ZVBJQ2hhcnMoCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICBkYXRhLAorICAg
ICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQogICAgIHsKICAgICAg
ICAgd3JpdGUoZGF0YSwgdGhlTGVuZ3RoKTsKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBXcml0
ZXMgbmFtZSBjaGFycyAsIGlmIG5vdCBwcmVzZW50YWJsZSwgdGhyb3dzIAorICAgICAqIFdyaXRl
cyBuYW1lIGNoYXJzLCBpZiBub3QgcmVwcmVzZW50YWJsZSwgdGhyb3dzIAogICAgICAqLwotICAg
IHZvaWQgd3JpdGVDb21tZW50Q2hhcnMoY29uc3QgWGFsYW5ET01DaGFyKiAgICAgIGRhdGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICAgdGhlTGVu
Z3RoKQorICAgIHZvaWQKKyAgICB3cml0ZUNvbW1lbnRDaGFycygKKyAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciogICAgICBkYXRhLAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAg
ICAgICAgIHRoZUxlbmd0aCkKICAgICB7CiAgICAgICAgIHdyaXRlKGRhdGEsIHRoZUxlbmd0aCk7
CiAgICAgfQogCiAgICAgdm9pZAogICAgIHNhZmVXcml0ZUNvbnRlbnQoCi0gICAgICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgdGhlQ2hhcnMsCi0gICAgICAgICAgICBYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlICAgdGhlTGVuZ3RoKQorICAgICAgICAgICAgY29uc3QgWGFsYW5E
T01DaGFyKiAgICAgdGhlQ2hhcnMsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAg
ICB0aGVMZW5ndGgpCiAgICAgewogICAgICAgICBmb3Ioc2l6ZV90eXBlIGkgPSAwOyBpIDwgdGhl
TGVuZ3RoOyArK2kpCiAgICAgICAgIHsgCkBAIC0xODcsOCArMTkzLDggQEAKIAogICAgIHZvaWQK
ICAgICB3cml0ZSgKLSAgICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICB0aGVD
aGFycywKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICB0aGVMZW5ndGgp
CisgICAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgIHRoZUNoYXJzLAorICAgICAgICAgICAg
c2l6ZV90eXBlICAgICAgICAgICB0aGVMZW5ndGgpCiAgICAgewogICAgICNpZiBkZWZpbmVkKE5E
RUJVRykKICAgICAgICAgaWYgKHRoZUxlbmd0aCA+IHNpemVvZihtX2J1ZmZlcikpCkBAIC0yMTQs
NyArMjIwLDcgQEAKICAgICAgICAgICAgIG1fYnVmZmVyUmVtYWluaW5nIC09IHRoZUxlbmd0aDsK
ICAgICAgICAgfQogICAgICNlbHNlCi0gICAgICAgIGZvcihYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlIGkgPSAwOyBpIDwgdGhlTGVuZ3RoOyArK2kpCisgICAgICAgIGZvcihzaXplX3R5cGUgaSA9
IDA7IGkgPCB0aGVMZW5ndGg7ICsraSkKICAgICAgICAgewogICAgICAgICAgICAgd3JpdGUodGhl
Q2hhcnNbaV0pOwogICAgICAgICB9CkBAIC0yNTEsOCArMjU3LDggQEAKIAogICAgIHZvaWQKICAg
ICB3cml0ZSgKLSAgICAgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgdGhl
Q2hhcnMsCi0gICAgICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHRoZUxl
bmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIHRoZUNoYXJzLAorICAg
ICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQogICAgIHsKICAgICAg
ICAgZm9yKHNpemVfdHlwZSBpID0gMDsgaSA8IHRoZUxlbmd0aDsgKytpKQogICAgICAgICB7CkBA
IC0yNjIsMTMgKzI2OCwxMyBAQAogCiAgICAgc2l6ZV90eXBlCiAgICAgd3JpdGUoCi0gICAgICAg
ICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgY2hhcnNbXSwKLSAgICAgICAgICAgIFhh
bGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3Ry
aW5nOjpzaXplX3R5cGUgICBsZW5ndGgpCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIg
IGNoYXJzW10sCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIHN0YXJ0LAorICAgICAg
ICAgICAgc2l6ZV90eXBlICAgICAgICAgICBsZW5ndGgpCiAgICAgewogICAgICAgICBYYWxhbkRP
TUNoYXIgY2ggPSBjaGFyc1tzdGFydF07CiAKLSAgICAgICAgaWYgKFhhbGFuRm9ybWF0dGVyV3Jp
dGVyOjppc1VURjE2SGlnaFN1cnJvZ2F0ZShjaCkgPT0gZmFsc2UpCisgICAgICAgIGlmIChpc1VU
RjE2SGlnaFN1cnJvZ2F0ZShjaCkgPT0gZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdy
aXRlKCh1bnNpZ25lZCBpbnQpY2gpOwogICAgICAgICB9CkBAIC0yNzYsNyArMjgyLDcgQEAKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKHN0YXJ0ICsgMSA+PSBsZW5ndGgpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgWGFsYW5Gb3JtYXR0ZXJXcml0ZXI6OnRocm93SW52YWxpZFVU
RjE2U3Vycm9nYXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIHRocm93SW52YWxpZFVURjE2
U3Vycm9nYXRlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICBjaCwgCiAgICAgICAgICAg
ICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgIGdldE1lbW9yeU1hbmFnZXIoKSk7CkBA
IC0yODQsNyArMjkwLDcgQEAKICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoCi0gICAgICAgICAgICAgICAgICAgIFhhbGFuRm9ybWF0dGVyV3Jp
dGVyOjpkZWNvZGVVVEYxNlN1cnJvZ2F0ZVBhaXIoCisgICAgICAgICAgICAgICAgICAgIGRlY29k
ZVVURjE2U3Vycm9nYXRlUGFpcigKICAgICAgICAgICAgICAgICAgICAgICAgIGNoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcnNbKytzdGFydF0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRNZW1vcnlNYW5hZ2VyKCkpKTsKQEAgLTI5Niw4ICszMDIsOCBAQAogCiAgICAgdm9pZAog
ICAgIHdyaXRlU2FmZSgKLSAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgIHRoZUNo
YXJzLAotICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgdGhlTGVuZ3RoKQorICAg
ICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICB0aGVDaGFycywKKyAgICAgICAgc2l6ZV90eXBl
ICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQogICAgIHsKICAgICAgICAgWGFsYW5ET01DaGFyIGNo
ID0gMDsKIApAQCAtMzA1LDE1ICszMTEsMTUgQEAKICAgICAgICAgewogICAgICAgICAgICAgY2gg
PSB0aGVDaGFyc1tpXTsKIAotICAgICAgICAgICAgaWYgKFhhbGFuRm9ybWF0dGVyV3JpdGVyOjpp
c1VURjE2SGlnaFN1cnJvZ2F0ZShjaCkgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGlmIChpc1VURjE2
SGlnaFN1cnJvZ2F0ZShjaCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBpZiAoaSArIDEgPj0gdGhlTGVuZ3RoKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgWGFsYW5Gb3JtYXR0ZXJXcml0ZXI6OnRocm93SW52YWxpZFVURjE2U3Vycm9nYXRl
RXhjZXB0aW9uKGNoLCAwLCAgZ2V0TWVtb3J5TWFuYWdlcigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3dJbnZhbGlkVVRGMTZTdXJyb2dhdGVFeGNlcHRpb24oY2gsIDAsICBnZXRNZW1vcnlN
YW5hZ2VyKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIAogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoWGFsYW5Gb3JtYXR0ZXJX
cml0ZXI6OmRlY29kZVVURjE2U3Vycm9nYXRlUGFpcihjaCwgdGhlQ2hhcnNbaSsxXSwgIGdldE1l
bW9yeU1hbmFnZXIoKSkpOworICAgICAgICAgICAgICAgICAgICB3cml0ZShkZWNvZGVVVEYxNlN1
cnJvZ2F0ZVBhaXIoY2gsIHRoZUNoYXJzW2kgKyAxXSwgIGdldE1lbW9yeU1hbmFnZXIoKSkpOwog
CiAgICAgICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgICAgICB9CkBAIC00MTAsNyAr
NDE2LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IFhhbGFuRm9ybWF0dGVyV3JpdGVyOjp0aHJvd0ludmFsaWRDaGFyYWN0ZXJFeGNlcHRpb24odGhl
Q2hhciwgZ2V0TWVtb3J5TWFuYWdlcigpKTsKKyAgICAgICAgICAgIHRocm93SW52YWxpZENoYXJh
Y3RlckV4Y2VwdGlvbih0aGVDaGFyLCBnZXRNZW1vcnlNYW5hZ2VyKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC00MjEsMTEgKzQyNywxMSBAQAogCiAKICAgICAvLyBEYXRhIG1lbWJlcnMuLi4K
LSAgICB2YWx1ZV90eXBlICAgICAgICAgICAgICAgICAgbV9idWZmZXJba0J1ZmZlclNpemVdOwor
ICAgIHZhbHVlX3R5cGUgICAgICBtX2J1ZmZlcltrQnVmZmVyU2l6ZV07CiAKLSAgICB2YWx1ZV90
eXBlKiAgICAgICAgICAgICAgICAgbV9idWZmZXJQb3NpdGlvbjsKKyAgICB2YWx1ZV90eXBlKiAg
ICAgbV9idWZmZXJQb3NpdGlvbjsKIAotICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBt
X2J1ZmZlclJlbWFpbmluZzsKKyAgICBzaXplX3R5cGUgICAgICAgbV9idWZmZXJSZW1haW5pbmc7
CiB9OwogCiAKSW5kZXg6IHNyYy94YWxhbmMvWE1MU3VwcG9ydC9YYWxhbkZvcm1hdHRlcldyaXRl
ci5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuRm9ybWF0dGVy
V3JpdGVyLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hh
bGFuRm9ybWF0dGVyV3JpdGVyLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAog
I2luY2x1ZGUgPHhlcmNlc2Mvc2F4L1NBWEV4Y2VwdGlvbi5ocHA+CiAKICNpbmNsdWRlIDx4YWxh
bmMvUGxhdGZvcm1TdXBwb3J0L0RPTVN0cmluZ0hlbHBlci5ocHA+CisjaW5jbHVkZSA8eGFsYW5j
L1BsYXRmb3JtU3VwcG9ydC9Gb3JtYXR0ZXJMaXN0ZW5lci5ocHA+CiAjaW5jbHVkZSA8eGFsYW5j
L1BsYXRmb3JtU3VwcG9ydC9Xcml0ZXIuaHBwPgogI2luY2x1ZGUgPHhhbGFuYy9QbGF0Zm9ybVN1
cHBvcnQvWGFsYW5NZXNzYWdlTG9hZGVyLmhwcD4KICNpbmNsdWRlIDx4YWxhbmMvUGxhdGZvcm1T
dXBwb3J0L1hhbGFuT3V0cHV0U3RyZWFtLmhwcD4KQEAgLTQyLDYgKzQzLDkgQEAKIHsKIHB1Ymxp
YzoKIAorICAgIHR5cGVkZWYgRm9ybWF0dGVyTGlzdGVuZXI6OnNpemVfdHlwZSAgICBzaXplX3R5
cGU7CisKKwogICAgIHRlbXBsYXRlIDxjbGFzcyBXcml0ZXJUeXBlPgogICAgIGNsYXNzIE5ld0xp
bmVXcml0ZXJGdW5jdG9yCiAgICAgewpAQCAtOTAsMTQgKzk0LDE0IEBACiAgICAgICAgIC8qKgog
ICAgICAgICAqIFRoZSBsZW5ndGggb2YgdGhlIHRoZSBzdHJpbmcgb2YgY2hhcmFjdGVycyB0aGF0
IHJlcHJlc2VudHMgdGhlIG5ld2xpbmUKICAgICAgICAgKi8KLSAgICAgICAgWGFsYW5ET01TdHJp
bmc6OnNpemVfdHlwZSAgIG1fbmV3bGluZVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc2l6ZV90eXBl
ICAgbV9uZXdsaW5lU3RyaW5nTGVuZ3RoOwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBX
cml0ZXJUeXBlPgogICAgIGNsYXNzIFdoaXRlU3BhY2VXcml0ZXJGdW5jdG9yCiAgICAgewotICAg
ICAgICB0eXBlZGVmIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAgICAgc2l6ZV90eXBlOwog
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFdyaXRlclR5cGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlw
ZTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBXcml0ZXJUeXBlICAgICAgICAgICAg
ICAgICAgd3JpdGVyX3R5cGU7CiAKQEAgLTE1MCw5ICsxNTQsNiBAQAogCiBwdWJsaWM6CiAKLSAg
ICB0eXBlZGVmIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBzaXplX3R5cGU7Ci0KLQogICAg
IFhhbGFuRm9ybWF0dGVyV3JpdGVyKAogICAgICAgICAgICAgICAgIFdyaXRlciYJICAgICAgICB0
aGVXcml0ZXIsIAogICAgICAgICAgICAgICAgIE1lbW9yeU1hbmFnZXImICB0aGVNZW1vcnlNYW5h
Z2VyKSA6CkBAIC0zMTMsNyArMzE0LDcgQEAKICAgICAvKioKICAgICAgKiBUaGUgbGVuZ3RoIG9m
IHRoZSB0aGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCByZXByZXNlbnRzIHRoZSBuZXdsaW5l
CiAgICAgICovCi0gICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIG1fbmV3bGluZVN0cmlu
Z0xlbmd0aDsKKyAgICBzaXplX3R5cGUgICBtX25ld2xpbmVTdHJpbmdMZW5ndGg7CiAKICAgICAv
KioKICAgICAgKiBGb3JtYXQgYSBjb2RlIHBvaW50IGFzIGEgbnVtZXJpYyBjaGFyYWN0ZXIgcmVm
ZXJlbmNlLgpJbmRleDogc3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvSFRNTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvSFRNTC5jcHAJ
KHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb0hU
TUwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAKIAltX2F0dHJDaGFyc01h
cFtYYWxhblVuaWNvZGU6OmNoYXJMZXNzVGhhblNpZ25dID0gMDsKIAltX2F0dHJDaGFyc01hcFtY
YWxhblVuaWNvZGU6OmNoYXJHcmVhdGVyVGhhblNpZ25dID0gMDsKIAotCWZvcihYYWxhbkRPTVN0
cmluZzo6c2l6ZV90eXBlIGkgPSAxNjA7IGkgPCBTUEVDSUFMU1NJWkU7IGkrKykKKwlmb3Ioc2l6
ZV90eXBlIGkgPSAxNjA7IGkgPCBTUEVDSUFMU1NJWkU7IGkrKykKIAl7CiAJCW1fYXR0ckNoYXJz
TWFwW2ldID0gJ1MnOwogCX0KQEAgLTQ4MSw3ICs0ODEsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9I
VE1MOjpjaGFyYWN0ZXJzKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJY29uc3Qg
dW5zaWduZWQgaW50CWxlbmd0aCkKKwkJCWNvbnN0IHNpemVfdHlwZSAJbGVuZ3RoKQogewogCWlm
KGxlbmd0aCAhPSAwKQogCXsKQEAgLTU5MCw3ICs1OTAsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9I
VE1MOjpjZGF0YSgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAljaCwKLQkJCWNvbnN0IHVuc2lnbmVk
IGludCAJbGVuZ3RoKQorCQkJY29uc3Qgc2l6ZV90eXBlIAlsZW5ndGgpCiB7CiAJaWYobV9pc1Nj
cmlwdE9yU3R5bGVFbGVtID09IHRydWUpCiAJewpAQCAtNjMyLDcgKzYzMiw3IEBACiAJCWNvbnN0
IFhNTENoKiBjb25zdAlkYXRhKQogCiB7Ci0JY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZQkJZGF0YUxlbmd0aCA9IGxlbmd0aChkYXRhKTsKKwljb25zdCBzaXplX3R5cGUJCWRhdGFMZW5n
dGggPSBsZW5ndGgoZGF0YSk7CiAKIAkvLyBVc2UgYSBmYWlybHkgbmFzdHkgaGFjayB0byB0ZWxs
IGlmIHRoZSBuZXh0IG5vZGUgaXMgc3VwcG9zZWQgdG8gYmUgCiAJLy8gdW5lc2NhcGVkIHRleHQu
CkBAIC02ODksMTMgKzY4OSwxMyBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb0hUTUw6OndyaXRlQ2hh
cmFjdGVycygKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQl0aGVTdHJpbmcsCi0JCQlYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlCXRoZUxlbmd0aCkKKwkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCXRo
ZVN0cmluZywKKwkJCXNpemVfdHlwZQkgICAgICAgICAgICB0aGVMZW5ndGgpCiB7CiAJYXNzZXJ0
KHRoZVN0cmluZyAhPSAwKTsKIAotCVhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUJaSA9IDA7Ci0J
WGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQlmaXJzdEluZGV4ID0gMDsKKwlzaXplX3R5cGUJaSA9
IDA7CisJc2l6ZV90eXBlCWZpcnN0SW5kZXggPSAwOwogCiAgICAgd2hpbGUoaSA8IHRoZUxlbmd0
aCkKIAl7CkBAIC03NjgsMTMgKzc2OCwxMyBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb0hUTUw6Ondy
aXRlQXR0clN0cmluZygKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQl0aGVTdHJpbmcsCi0JCQlY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCXRoZVN0cmluZ0xlbmd0aCkKKwkJCWNvbnN0IFhhbGFu
RE9NQ2hhcioJCXRoZVN0cmluZywKKwkJCXNpemVfdHlwZQkgICAgICAgICAgICB0aGVTdHJpbmdM
ZW5ndGgpCiB7CiAJYXNzZXJ0KHRoZVN0cmluZyAhPSAwKTsKIAotCVhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUJaSA9IDA7Ci0JWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQlmaXJzdEluZGV4ID0g
MDsKKwlzaXplX3R5cGUJaSA9IDA7CisJc2l6ZV90eXBlCWZpcnN0SW5kZXggPSAwOwogCiAgICAg
d2hpbGUoaSA8IHRoZVN0cmluZ0xlbmd0aCkKICAgICB7CkBAIC04NTMsOCArODUzLDggQEAKIAog
dm9pZAogRm9ybWF0dGVyVG9IVE1MOjpjb3B5RW50aXR5SW50b0J1ZmZlcigKLQkJCWNvbnN0IFhh
bGFuRE9NQ2hhcioJCQlzLAotCQkJWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQl0aGVMZW5ndGgp
CisJCQljb25zdCBYYWxhbkRPTUNoYXIqCQlzLAorCQkJc2l6ZV90eXBlCSAgICAgICAgICAgIHRo
ZUxlbmd0aCkKIHsKIAlhc3NlcnQocyAhPSAwKTsKIApAQCAtODg1LDExICs4ODUsMTEgQEAKIAkJ
CWNvbnN0IFhhbGFuRE9NQ2hhcioJCQkJCQkJCQkJdmFsdWUsCiAJCQljb25zdCBYYWxhbkhUTUxF
bGVtZW50c1Byb3BlcnRpZXM6OkVsZW1lbnRQcm9wZXJ0aWVzJgllbGVtUHJvcGVydGllcykKIHsK
LQljb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCQluYW1lTGVuZ3RoID0gbGVuZ3RoKG5h
bWUpOworCWNvbnN0IHNpemVfdHlwZQkJbmFtZUxlbmd0aCA9IGxlbmd0aChuYW1lKTsKIAogCWFj
Y3VtQ29udGVudChYYWxhblVuaWNvZGU6OmNoYXJTcGFjZSk7CiAKLQljb25zdCBYYWxhbkRPTVN0
cmluZzo6c2l6ZV90eXBlCQl2YWx1ZUxlbmd0aCA9IGxlbmd0aCh2YWx1ZSk7CisJY29uc3Qgc2l6
ZV90eXBlICAgICB2YWx1ZUxlbmd0aCA9IGxlbmd0aCh2YWx1ZSk7CiAKIAlpZigodmFsdWVMZW5n
dGggPT0gMCB8fCBlcXVhbHNJZ25vcmVDYXNlQVNDSUkobmFtZSwgbmFtZUxlbmd0aCwgdmFsdWUs
IHZhbHVlTGVuZ3RoKSkgJiYKIAkgICBlbGVtUHJvcGVydGllcy5pc0F0dHJpYnV0ZShuYW1lLCBY
YWxhbkhUTUxFbGVtZW50c1Byb3BlcnRpZXM6OkFUVFJFTVBUWSkgPT0gdHJ1ZSkKQEAgLTkxOSw4
ICs5MTksOCBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb0hUTUw6OndyaXRlQXR0clVSSSgKLQkJCWNv
bnN0IFhhbGFuRE9NQ2hhcioJCQl0aGVTdHJpbmcsCi0JCQlYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlCXRoZVN0cmluZ0xlbmd0aCkKKwkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCXRoZVN0cmluZywK
KwkJCXNpemVfdHlwZQkgICAgICAgICAgICB0aGVTdHJpbmdMZW5ndGgpCiB7CiAJYXNzZXJ0KHRo
ZVN0cmluZyAhPSAwKTsKIApAQCAtOTM5LDcgKzkzOSw3IEBACiAJLy8gY2F1c2luZyBkYW1hZ2Uu
CUlmIHRoZSBVUkwgaXMgYWxyZWFkeSBwcm9wZXJseSBlc2NhcGVkLCBpbiB0aGVvcnksIHRoaXMg
CiAJLy8gZnVuY3Rpb24gc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHN0cmluZyB2YWx1ZS4KIAotICAg
IGZvciAoWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBpID0gMDsgaSA8IHRoZVN0cmluZ0xlbmd0
aDsgKytpKQorICAgIGZvciAoc2l6ZV90eXBlIGkgPSAwOyBpIDwgdGhlU3RyaW5nTGVuZ3RoOyAr
K2kpCiAgICAgewogCQljb25zdCBYYWxhbkRPTUNoYXIJY2ggPSB0aGVTdHJpbmdbaV07CiAKQEAg
LTExMjMsOCArMTEyMyw4IEBACiAKIAlpZiAobV9wcmVmaXhSZXNvbHZlciAhPSAwKQogCXsKLQkJ
Y29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQkJdGhlTGVuZ3RoID0gbGVuZ3RoKHRoZUVs
ZW1lbnROYW1lKTsKLQkJY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQkJdGhlQ29sb25J
bmRleCA9IGluZGV4T2YodGhlRWxlbWVudE5hbWUsIFhhbGFuVW5pY29kZTo6Y2hhckNvbG9uKTsK
KwkJY29uc3Qgc2l6ZV90eXBlCQl0aGVMZW5ndGggPSBsZW5ndGgodGhlRWxlbWVudE5hbWUpOwor
CQljb25zdCBzaXplX3R5cGUJCXRoZUNvbG9uSW5kZXggPSBpbmRleE9mKHRoZUVsZW1lbnROYW1l
LCBYYWxhblVuaWNvZGU6OmNoYXJDb2xvbik7CiAKIAkJY29uc3QgWGFsYW5ET01TdHJpbmcqCXRo
ZVByZWZpeCA9ICZzX2VtcHR5U3RyaW5nOwogCkluZGV4OiBzcmMveGFsYW5jL1hNTFN1cHBvcnQv
Rm9ybWF0dGVyVG9IVE1MLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hNTFN1cHBvcnQv
Rm9ybWF0dGVyVG9IVE1MLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YTUxT
dXBwb3J0L0Zvcm1hdHRlclRvSFRNTC5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgs
NyBAQAogICAgIHZpcnR1YWwgdm9pZAogCWNoYXJhY3RlcnMoCiAJCQljb25zdCBYTUxDaCogY29u
c3QJY2hhcnMsCi0JCQljb25zdCB1bnNpZ25lZCBpbnQJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVf
dHlwZSAJbGVuZ3RoKTsKIAogCS8vIFRoZXNlIG1ldGhvZHMgYXJlIGluaGVyaXRlZCBmcm9tIEZv
cm1hdHRlclRvWE1MLi4uCiAKQEAgLTEzNSw3ICsxMzUsNyBAQAogCXZpcnR1YWwgdm9pZAogCWNk
YXRhKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoLAotCQkJY29uc3QgdW5zaWduZWQgaW50IAls
ZW5ndGgpOworCQkJY29uc3Qgc2l6ZV90eXBlIAlsZW5ndGgpOwogCiAJdmlydHVhbCB2b2lkCiAJ
cHJvY2Vzc2luZ0luc3RydWN0aW9uKApAQCAtMTU5LDE5ICsxNTksMTkgQEAKIAl7CiAJCWVudW0g
eyBlTWF4TGVuZ3RoID0gOCB9OwogCi0JCVhhbGFuRE9NQ2hhcgkJCQltX2NoYXI7CisJCVhhbGFu
RE9NQ2hhcgltX2NoYXI7CiAKLQkJWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQltX2xlbmd0aDsK
KwkJc2l6ZV90eXBlCSAgICBtX2xlbmd0aDsKIAotCQlYYWxhbkRPTUNoYXIJCQkJbV9zdHJpbmdb
ZU1heExlbmd0aCArIDFdOworCQlYYWxhbkRPTUNoYXIJbV9zdHJpbmdbZU1heExlbmd0aCArIDFd
OwogCX07CiAKIHByb3RlY3RlZDoKIAogCXZpcnR1YWwgdm9pZAogCXdyaXRlQXR0clN0cmluZygK
LQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQl0aGVTdHJpbmcsCi0JCQlYYWxhbkRPTVN0cmluZzo6
c2l6ZV90eXBlCXRoZVN0cmluZ0xlbmd0aCk7CisJCQljb25zdCBYYWxhbkRPTUNoYXIqCQl0aGVT
dHJpbmcsCisJCQlzaXplX3R5cGUJICAgICAgICAgICAgdGhlU3RyaW5nTGVuZ3RoKTsKIAogCXZp
cnR1YWwgdm9pZAogCWFjY3VtQ29tbWVudERhdGEoY29uc3QgWGFsYW5ET01DaGFyKglkYXRhKTsK
QEAgLTE4MSwxMyArMTgxLDExIEBACiAKIAl2b2lkCiAJd3JpdGVDaGFyYWN0ZXJzKAotCQkJY29u
c3QgWGFsYW5ET01DaGFyKgkJCXRoZVN0cmluZywKLQkJCVhhbGFuRE9NU3RyaW5nOjpzaXplX3R5
cGUJdGhlTGVuZ3RoKTsKKwkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCXRoZVN0cmluZywKKwkJCXNp
emVfdHlwZQkgICAgICAgICAgICB0aGVMZW5ndGgpOwogCiBwcml2YXRlOgogCi0JdHlwZWRlZiBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCXNpemVfdHlwZTsKLQogCS8qKgogCSAqIFRoZSBzdHJp
bmcgIjwhRE9DVFlQRSAgSFRNTCIuCiAJICovCkBAIC0yMzAsOCArMjI4LDggQEAKIAogCXZvaWQK
IAljb3B5RW50aXR5SW50b0J1ZmZlcigKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQlzLAotCQkJ
WGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQl0aGVMZW5ndGgpOworCQkJY29uc3QgWGFsYW5ET01D
aGFyKgkJcywKKwkJCXNpemVfdHlwZQkgICAgICAgICAgICB0aGVMZW5ndGgpOwogCiAJdm9pZAog
CWNvcHlFbnRpdHlJbnRvQnVmZmVyKGNvbnN0IFhhbGFuRE9NU3RyaW5nJglzKTsKQEAgLTI1Niw4
ICsyNTQsOCBAQAogCSAqLwogCXZvaWQKIAl3cml0ZUF0dHJVUkkoCi0JCQljb25zdCBYYWxhbkRP
TUNoYXIqCQkJdGhlU3RyaW5nLAotCQkJWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQl0aGVTdHJp
bmdMZW5ndGgpOworCQkJY29uc3QgWGFsYW5ET01DaGFyKgkJdGhlU3RyaW5nLAorCQkJc2l6ZV90
eXBlCSAgICAgICAgICAgIHRoZVN0cmluZ0xlbmd0aCk7CiAKIAkvKioKIAkgKiBBY2N1bXVsYXRl
IHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGJ5IGNvbnZlcnRpbmcgaXRzIG51bWVyaWMgdmFsdWUg
dG8KSW5kZXg6IHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb051bGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb051bGwuY3BwCShyZXZp
c2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hNTFN1cHBvcnQvRm9ybWF0dGVyVG9OdWxsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9OdWxs
OjpjaGFyYWN0ZXJzKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CS8qIGNoYXJzICovLAotCQkJY29u
c3QgdW5zaWduZWQgaW50CS8qIGxlbmd0aCAqLykKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAgLyog
bGVuZ3RoICovKQogewogfQogCkBAIC04NSw3ICs4NSw3IEBACiB2b2lkCiBGb3JtYXR0ZXJUb051
bGw6OmNoYXJhY3RlcnNSYXcoCiAJCWNvbnN0IFhNTENoKiBjb25zdAkvKiBjaGFycyAqLywKLQkJ
Y29uc3QgdW5zaWduZWQgaW50CS8qbGVuZ3RoICovKQorCQljb25zdCBzaXplX3R5cGUJICAgIC8q
bGVuZ3RoICovKQogewogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAKIHZvaWQKIEZvcm1hdHRlclRv
TnVsbDo6aWdub3JhYmxlV2hpdGVzcGFjZSgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAkvKiBjaGFy
cyAqLywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAkvKiBsZW5ndGggKi8pCisJCQljb25zdCBzaXpl
X3R5cGUJICAgIC8qIGxlbmd0aCAqLykKIHsKIH0KIApAQCAtMTMxLDggKzEzMSw4IEBACiAKIHZv
aWQKIEZvcm1hdHRlclRvTnVsbDo6Y2RhdGEoCi0JCQljb25zdCBYTUxDaCogY29uc3QJIC8qIGNo
ICovLAotCQkJY29uc3QgdW5zaWduZWQgaW50IAkvKiBsZW5ndGggKi8pCisJCQljb25zdCBYTUxD
aCogY29uc3QgIC8qIGNoICovLAorCQkJY29uc3Qgc2l6ZV90eXBlCSAgICAvKiBsZW5ndGggKi8p
CiB7CiB9CiAKSW5kZXg6IHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb1hNTFVuaWNv
ZGUuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb1hN
TFVuaWNvZGUuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hNTFN1cHBvcnQv
Rm9ybWF0dGVyVG9YTUxVbmljb2RlLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw3
IEBACiAgICAgdmlydHVhbCB2b2lkCiAgICAgY2hhcmFjdGVyc1JhdygKICAgICAgICAgICAgIGNv
bnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
IGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKQogICAgIHsK
ICAgICAgICAgd3JpdGVQYXJlbnRUYWdFbmQoKTsKICAgICAKQEAgLTM5MSw3ICszOTEsNyBAQAog
ICAgICAgICBtX3dyaXRlci53cml0ZSh2YWx1ZV90eXBlKFhhbGFuVW5pY29kZTo6Y2hhclF1ZXN0
aW9uTWFyaykpOwogICAgICAgICB3cml0ZU5hbWUodGFyZ2V0KTsKIAotICAgICAgICBjb25zdCBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBsZW4gPSBsZW5ndGgoZGF0YSk7CisgICAgICAg
IGNvbnN0IHNpemVfdHlwZSAgICAgbGVuID0gbGVuZ3RoKGRhdGEpOwogCiAgICAgICAgIC8vIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGEgbGVhc3Qgb25lIHdoaXRlc3BhY2UgY2hhcmFj
dGVyCiAgICAgICAgIC8vIGJldHdlZW4gdGhlIHRhcmdldCBhbmQgdGhlIGRhdGEuCkBAIC00MTYs
NyArNDE2LDcgQEAKICAgICB2b2lkCiAgICAgd3JpdGVDaGFyYWN0ZXJzKAogICAgICAgICAgICAg
Y29uc3QgWE1MQ2gqICAgIGNoYXJzLAotICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgIGxlbmd0
aCkKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICBsZW5ndGgpCiAgICAgewogICAgICAgICBh
c3NlcnQobGVuZ3RoICE9IDApOwogCkBAIC00MjQsOCArNDI0LDggQEAKIAogICAgICAgICBtX2lu
ZGVudEhhbmRsZXIuc2V0UHJlc2VydmUodHJ1ZSk7CiAKLSAgICAgICAgdW5zaWduZWQgaW50ICAg
IGkgPSAwOwotICAgICAgICB1bnNpZ25lZCBpbnQgICAgZmlyc3RJbmRleCA9IDA7CisgICAgICAg
IHNpemVfdHlwZSAgIGkgPSAwOworICAgICAgICBzaXplX3R5cGUgICBmaXJzdEluZGV4ID0gMDsK
IAogICAgICAgICB3aGlsZShpIDwgbGVuZ3RoKSAKICAgICAgICAgewpAQCAtNDY2LDcgKzQ2Niw3
IEBACiAgICAgdm9pZAogICAgIHdyaXRlQ0RBVEEoCiAgICAgICAgICAgICBjb25zdCBYTUxDaCog
ICAgY2hhcnMsCi0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgICAgbGVuZ3RoKQorICAgICAgICAg
ICAgc2l6ZV90eXBlICAgICAgIGxlbmd0aCkKICAgICB7CiAgICAgICAgIGFzc2VydChsZW5ndGgg
IT0gMCk7CiAgICAgCkBAIC02MzgsMTIgKzYzOCwxMiBAQAogICAgICogQHBhcmFtIHN0YXJ0IHRo
ZSBzdGFydCBvZmZzZXQgaW50byB0aGUgc3RyaW5nLgogICAgICogQHBhcmFtIGxlbmd0aCB0aGUg
bGVuZ3RoIG9mIHRoZSBzdHJpbmcuCiAgICAgKi8KLSAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlCisgICAgc2l6ZV90eXBlCiAgICAgd3JpdGVOb3JtYWxpemVkQ2hhcigKLSAgICAgICAgWGFs
YW5ET01DaGFyICAgICAgICAgICAgICAgIGNoLAotICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIg
ICAgICAgICAgY2hhcnNbXSwKLSAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHN0
YXJ0LAotICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKQorICAgICAg
ICBYYWxhbkRPTUNoYXIgICAgICAgIGNoLAorICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgIGNo
YXJzW10sCisgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgc3RhcnQsCisgICAgICAgIHNpemVf
dHlwZSAgICAgICAgICAgbGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKFhhbGFuVW5pY29kZTo6
Y2hhckxGID09IGNoKQogICAgICAgICB7CkBAIC02NzksMTEgKzY3OSwxMSBAQAogICAgICAgICBt
X3dyaXRlci53cml0ZSh2YWx1ZV90eXBlKFhhbGFuVW5pY29kZTo6Y2hhclNlbWljb2xvbikpOwog
ICAgIH0KIAotICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUKKyAgICBzaXplX3R5cGUKICAg
ICB3cml0ZU5vcm1hbGl6ZWRDaGFyQmlnKAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFy
ICAgICAgICAgIGNoYXJzW10sCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBl
ICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3Ro
KQorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICBjaGFyc1tdLAorICAgICAgICAgICAg
c2l6ZV90eXBlICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAg
ICAgbGVuZ3RoKQogICAgIHsKICAgICAgICAgYXNzZXJ0KCBzdGFydCA8IGxlbmd0aCk7CiAKQEAg
LTcxMiwxMSArNzEyLDExIEBACiAgICAgICovCiAgICAgdm9pZAogICAgIHdyaXRlQ0RBVEFDaGFy
cygKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICBjaGFyc1tdLAotICAg
ICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIGxlbmd0aCwKLSAgICAgICAgICAg
IGJvb2wmICAgICAgICAgICAgICAgICAgICAgICBvdXRzaWRlQ0RBVEEpCisgICAgICAgICAgICBj
b25zdCBYYWxhbkRPTUNoYXIgIGNoYXJzW10sCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAg
ICAgIGxlbmd0aCwKKyAgICAgICAgICAgIGJvb2wmICAgICAgICAgICAgICAgb3V0c2lkZUNEQVRB
KQogICAgIHsKLSAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBpID0gMDsKKyAgICAg
ICAgc2l6ZV90eXBlICAgaSA9IDA7CiAKICAgICAgICAgd2hpbGUoaSA8IGxlbmd0aCkKICAgICAg
ICAgewpAQCAtNzk1LDEzICs3OTUsMTMgQEAKICAgICAgKi8KICAgICB2b2lkCiAgICAgd3JpdGVB
dHRyU3RyaW5nKAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgICAgIHRoZVN0
cmluZywKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICB0aGVTdHJpbmdM
ZW5ndGgpCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICB0aGVTdHJpbmcsCisg
ICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0aGVTdHJpbmdMZW5ndGgpCiAgICAg
ewogICAgICAgICBhc3NlcnQodGhlU3RyaW5nICE9IDApOwogCi0gICAgICAgIFhhbGFuRE9NU3Ry
aW5nOjpzaXplX3R5cGUgICBpID0gMDsKLSAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSAgIGZpcnN0SW5kZXggPSAwOworICAgICAgICBzaXplX3R5cGUgICBpID0gMDsKKyAgICAgICAg
c2l6ZV90eXBlICAgZmlyc3RJbmRleCA9IDA7CiAKICAgICAgICAgd2hpbGUoaSA8IHRoZVN0cmlu
Z0xlbmd0aCkKICAgICAgICAgewpAQCAtODYzLDEwICs4NjMsMTAgQEAKICAgICAgKi8KICAgICB2
b2lkCiAgICAgd3JpdGVOb3JtYWxpemVkRGF0YSgKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9N
Q2hhciogICAgICAgICB0aGVEYXRhLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVf
dHlwZSAgIHRoZUxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIHRo
ZURhdGEsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0aGVMZW5ndGgpCiAg
ICAgewotICAgICAgICBmb3IgKFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgaSA9IDA7IGkgPCB0
aGVMZW5ndGg7ICsraSkKKyAgICAgICAgZm9yIChzaXplX3R5cGUgaSA9IDA7IGkgPCB0aGVMZW5n
dGg7ICsraSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICB0aGVD
aGFyID0gdGhlRGF0YVtpXTsKIApAQCAtODc2LDggKzg3Niw4IEBACiAKICAgICB2b2lkCiAgICAg
c2FmZVdyaXRlQ29udGVudCgKLSAgICAgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAg
ICAgICAgdGhlQ2hhcnMsCi0gICAgICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSAgIHRoZUxlbmd0aCkKKyAgICAgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICB0
aGVDaGFycywKKyAgICAgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0aGVMZW5n
dGgpCiAgICAgewogICAgICAgICBmb3Ioc2l6ZV90eXBlIGkgPSAwOyBpIDwgdGhlTGVuZ3RoOyAr
K2kpCiAgICAgICAgIHsKSW5kZXg6IHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb051
bGwuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb051
bGwuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hNTFN1cHBvcnQvRm9ybWF0
dGVyVG9OdWxsLmhwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTIgKzc0LDEyIEBACiAgICAgdmly
dHVhbCB2b2lkCiAJY2hhcmFjdGVycygKIAkJCWNvbnN0IFhNTENoKiBjb25zdAljaGFycywKLQkJ
CWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJY29uc3Qgc2l6ZV90eXBlICAgICBsZW5n
dGgpOwogCiAgICAgdmlydHVhbCB2b2lkCiAJY2hhcmFjdGVyc1JhdygKIAkJCWNvbnN0IFhNTENo
KiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJY29uc3Qg
c2l6ZV90eXBlCSAgICBsZW5ndGgpOwogCiAJdmlydHVhbCB2b2lkCiAJZW50aXR5UmVmZXJlbmNl
KGNvbnN0IFhNTENoKiBjb25zdAluYW1lKTsKQEAgLTg3LDcgKzg3LDcgQEAKIAl2aXJ0dWFsIHZv
aWQKIAlpZ25vcmFibGVXaGl0ZXNwYWNlKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAot
CQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCk7CisJCQljb25zdCBzaXplX3R5cGUJICAgIGxl
bmd0aCk7CiAKIAl2aXJ0dWFsIHZvaWQKIAlwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oCkBAIC0xMDQs
NyArMTA0LDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAljZGF0YSgKIAkJCWNvbnN0IFhNTENoKiBjb25z
dAljaCwKLQkJCWNvbnN0IHVuc2lnbmVkIGludCAJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlw
ZSAJbGVuZ3RoKTsKIAogcHJpdmF0ZToKIApJbmRleDogc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hh
bGFuWE1MU2VyaWFsaXplckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3Vw
cG9ydC9YYWxhblhNTFNlcmlhbGl6ZXJCYXNlLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3Jj
L3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuWE1MU2VyaWFsaXplckJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTgsNyArMjU4LDcgQEAKIHZvaWQKIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OmNo
YXJhY3RlcnMoCiAgICAgICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGNoYXJzLAotICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50ICBsZW5ndGgpCisgICAgICAgICAgICBjb25zdCBzaXpl
X3R5cGUgICAgIGxlbmd0aCkKIHsKICAgICBpZihsZW5ndGggIT0gMCkKICAgICB7CkBAIC0yODAs
NyArMjgwLDcgQEAKIHZvaWQKIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OmNkYXRhKAogICAgICAg
ICAgICAgY29uc3QgWE1MQ2gqIGNvbnN0ICBjaCwKLSAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCAgbGVuZ3RoKQorICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpCiB7
CiAgICAgaWYgKGxlbmd0aCAhPSAwKQogICAgIHsKQEAgLTMyMiw3ICszMjIsNyBAQAogdm9pZAog
WGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6aWdub3JhYmxlV2hpdGVzcGFjZSgKICAgICAgICAgICAg
IGNvbnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgIGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKQogewog
ICAgIGlmIChsZW5ndGggPiAwKQogICAgIHsKQEAgLTM4MCw3ICszODAsNyBAQAogICAgIFhhbGFu
RE9NQ2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgICAgWGFs
YW5YTUxTZXJpYWxpemVyQmFzZTo6c194aHRtbERvY1R5cGVTdHJpbmdMZW5ndGggPQorY29uc3Qg
WGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJC
YXNlOjpzX3hodG1sRG9jVHlwZVN0cmluZ0xlbmd0aCA9CiAgICAgICAgIEZYTUxfU0laRShzX3ho
dG1sRG9jVHlwZVN0cmluZyk7CiAKIApAQCAtNDgxLDcgKzQ4MSw3IEBACiAgICAgY2hhcigwKQog
fTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBYYWxhblhNTFNlcmlhbGl6ZXJC
YXNlOjpVVEY4OjpzX2RvY3R5cGVIZWFkZXJTdGFydFN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxh
blhNTFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6
OlVURjg6OnNfZG9jdHlwZUhlYWRlclN0YXJ0U3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9T
SVpFKHNfZG9jdHlwZUhlYWRlclN0YXJ0U3RyaW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5YTUxT
ZXJpYWxpemVyQmFzZTo6VVRGODo6c19kb2N0eXBlSGVhZGVyUHVibGljU3RyaW5nW10gPQpAQCAt
NDk4LDcgKzQ5OCw3IEBACiAgICAgY2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6
OnNpemVfdHlwZSBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2RvY3R5cGVIZWFkZXJQ
dWJsaWNTdHJpbmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90
eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2RvY3R5cGVIZWFkZXJQdWJs
aWNTdHJpbmdMZW5ndGggPQogICAgICAgICBGWE1MX1NJWkUoc19kb2N0eXBlSGVhZGVyUHVibGlj
U3RyaW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c19k
b2N0eXBlSGVhZGVyU3lzdGVtU3RyaW5nW10gPQpAQCAtNTE1LDcgKzUxNSw3IEBACiAgICAgY2hh
cigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxT
ZXJpYWxpemVyQmFzZTo6VVRGODo6c19kb2N0eXBlSGVhZGVyU3lzdGVtU3RyaW5nTGVuZ3RoID0K
K2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJp
YWxpemVyQmFzZTo6VVRGODo6c19kb2N0eXBlSGVhZGVyU3lzdGVtU3RyaW5nTGVuZ3RoID0KICAg
ICAgICAgRlhNTF9TSVpFKHNfZG9jdHlwZUhlYWRlclN5c3RlbVN0cmluZyk7CiAKIGNvbnN0IGNo
YXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfeG1sSGVhZGVyU3RhcnRTdHJpbmdb
XSA9CkBAIC01MzgsNyArNTM4LDcgQEAKICAgICBjaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3ht
bEhlYWRlclN0YXJ0U3RyaW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6
OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c194bWxIZWFkZXJT
dGFydFN0cmluZ0xlbmd0aCA9CiAgICAgICAgIEZYTUxfU0laRShzX3htbEhlYWRlclN0YXJ0U3Ry
aW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c194bWxI
ZWFkZXJFbmNvZGluZ1N0cmluZ1tdID0KQEAgLTU1OCw3ICs1NTgsNyBAQAogICAgIGNoYXIoMCkK
IH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFs
aXplckJhc2U6OlVURjg6OnNfeG1sSGVhZGVyRW5jb2RpbmdTdHJpbmdMZW5ndGggPQorY29uc3Qg
WGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJC
YXNlOjpVVEY4OjpzX3htbEhlYWRlckVuY29kaW5nU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhN
TF9TSVpFKHNfeG1sSGVhZGVyRW5jb2RpbmdTdHJpbmcpOwogCiBjb25zdCBjaGFyICBYYWxhblhN
TFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3htbEhlYWRlclN0YW5kYWxvbmVTdHJpbmdbXSA9CkBA
IC01ODAsNyArNTgwLDcgQEAKICAgICBjaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3htbEhlYWRl
clN0YW5kYWxvbmVTdHJpbmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6
c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3htbEhlYWRlclN0
YW5kYWxvbmVTdHJpbmdMZW5ndGggPQogICAgICAgICBGWE1MX1NJWkUoc194bWxIZWFkZXJTdGFu
ZGFsb25lU3RyaW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRG
ODo6c194bWxIZWFkZXJFbmRTdHJpbmdbXSA9CkBAIC01OTEsNyArNTkxLDcgQEAKICAgICBjaGFy
KDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNl
cmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3htbEhlYWRlckVuZFN0cmluZ0xlbmd0aCA9Citjb25zdCBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJh
c2U6OlVURjg6OnNfeG1sSGVhZGVyRW5kU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpF
KHNfeG1sSGVhZGVyRW5kU3RyaW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5YTUxTZXJpYWxpemVy
QmFzZTo6VVRGODo6c19kZWZhdWx0VmVyc2lvblN0cmluZ1tdID0KQEAgLTYwMiw3ICs2MDIsNyBA
QAogICAgIGNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAg
IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfZGVmYXVsdFZlcnNpb25TdHJpbmdMZW5n
dGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBYYWxhblhN
TFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2RlZmF1bHRWZXJzaW9uU3RyaW5nTGVuZ3RoID0KICAg
ICAgICAgRlhNTF9TSVpFKHNfZGVmYXVsdFZlcnNpb25TdHJpbmcpOwogCiBjb25zdCBjaGFyICBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2NkYXRhT3BlblN0cmluZ1tdID0KQEAgLTYx
OSw3ICs2MTksNyBAQAogICAgIGNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfY2RhdGFPcGVuU3Ry
aW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAgICAg
WGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c19jZGF0YU9wZW5TdHJpbmdMZW5ndGggPQog
ICAgICAgICBGWE1MX1NJWkUoc19jZGF0YU9wZW5TdHJpbmcpOwogCiBjb25zdCBjaGFyICBYYWxh
blhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2NkYXRhQ2xvc2VTdHJpbmdbXSA9CkBAIC02MzAs
NyArNjMwLDcgQEAKICAgICBjaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2NkYXRhQ2xvc2VTdHJp
bmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2NkYXRhQ2xvc2VTdHJpbmdMZW5ndGggPQog
ICAgICAgICBGWE1MX1NJWkUoc19jZGF0YUNsb3NlU3RyaW5nKTsKIAogCkBAIC02NTYsNyArNjU2
LDcgQEAKICAgICBYYWxhbkRPTUNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfeGh0bWxEb2NUeXBl
U3RyaW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAg
ICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c194aHRtbERvY1R5cGVTdHJpbmdMZW5n
dGggPQogICAgICAgICBGWE1MX1NJWkUoc194aHRtbERvY1R5cGVTdHJpbmcpOwogCiBjb25zdCBj
aGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2xlc3NUaGFuRW50aXR5U3RyaW5n
W10gPQpAQCAtNjY4LDcgKzY2OCw3IEBACiAgICAgY2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5E
T01TdHJpbmc6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c19s
ZXNzVGhhbkVudGl0eVN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxhblhNTFNlcmlhbGl6ZXJCYXNl
OjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfbGVzc1RoYW5F
bnRpdHlTdHJpbmdMZW5ndGggPQogICAgICAgICBGWE1MX1NJWkUoc19sZXNzVGhhbkVudGl0eVN0
cmluZyk7CiAKIGNvbnN0IGNoYXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfZ3Jl
YXRlclRoYW5FbnRpdHlTdHJpbmdbXSA9CkBAIC02ODAsNyArNjgwLDcgQEAKICAgICBjaGFyKDAp
CiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlh
bGl6ZXJCYXNlOjpVVEY4OjpzX2dyZWF0ZXJUaGFuRW50aXR5U3RyaW5nTGVuZ3RoID0KK2NvbnN0
IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVy
QmFzZTo6VVRGODo6c19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ0xlbmd0aCA9CiAgICAgICAgIEZY
TUxfU0laRShzX2dyZWF0ZXJUaGFuRW50aXR5U3RyaW5nKTsKIAogY29uc3QgY2hhciAgWGFsYW5Y
TUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c19hbXBlcnNhbmRFbnRpdHlTdHJpbmdbXSA9CkBAIC02
OTMsNyArNjkzLDcgQEAKICAgICBjaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6
c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX2FtcGVyc2FuZEVu
dGl0eVN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5
cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjg6OnNfYW1wZXJzYW5kRW50aXR5U3Ry
aW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNfYW1wZXJzYW5kRW50aXR5U3RyaW5nKTsK
IAogY29uc3QgY2hhciAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGODo6c19xdW90ZUVudGl0
eVN0cmluZ1tdID0KQEAgLTcwNyw3ICs3MDcsNyBAQAogICAgIGNoYXIoMCkKIH07CiAKLWNvbnN0
IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVU
Rjg6OnNfcXVvdGVFbnRpdHlTdHJpbmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVy
QmFzZTo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEY4OjpzX3F1b3Rl
RW50aXR5U3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNfcXVvdGVFbnRpdHlTdHJp
bmcpOwogCiBjb25zdCBYYWxhbkRPTUNoYXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2
OjpzX2RvY3R5cGVIZWFkZXJTdGFydFN0cmluZ1tdID0KQEAgLTcyNSw3ICs3MjUsNyBAQAogICAg
IFhhbGFuRE9NQ2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19kb2N0eXBlSGVhZGVyU3RhcnRTdHJpbmdM
ZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBYYWxh
blhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19kb2N0eXBlSGVhZGVyU3RhcnRTdHJpbmdMZW5n
dGggPQogICAgICAgICBGWE1MX1NJWkUoc19kb2N0eXBlSGVhZGVyU3RhcnRTdHJpbmcpOwogCiBj
b25zdCBYYWxhbkRPTUNoYXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX2RvY3R5
cGVIZWFkZXJQdWJsaWNTdHJpbmdbXSA9CkBAIC03NDIsNyArNzQyLDcgQEAKICAgICBYYWxhbkRP
TUNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgWGFsYW5YTUxT
ZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfZG9jdHlwZUhlYWRlclB1YmxpY1N0cmluZ0xlbmd0aCA9
Citjb25zdCBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2Vy
aWFsaXplckJhc2U6OlVURjE2OjpzX2RvY3R5cGVIZWFkZXJQdWJsaWNTdHJpbmdMZW5ndGggPQog
ICAgICAgICBGWE1MX1NJWkUoc19kb2N0eXBlSGVhZGVyUHVibGljU3RyaW5nKTsKIAogY29uc3Qg
WGFsYW5ET01DaGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19kb2N0eXBlSGVh
ZGVyU3lzdGVtU3RyaW5nW10gPQpAQCAtNzU5LDcgKzc1OSw3IEBACiAgICAgWGFsYW5ET01DaGFy
KDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNl
cmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19kb2N0eXBlSGVhZGVyU3lzdGVtU3RyaW5nTGVuZ3RoID0K
K2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJp
YWxpemVyQmFzZTo6VVRGMTY6OnNfZG9jdHlwZUhlYWRlclN5c3RlbVN0cmluZ0xlbmd0aCA9CiAg
ICAgICAgIEZYTUxfU0laRShzX2RvY3R5cGVIZWFkZXJTeXN0ZW1TdHJpbmcpOwogCiBjb25zdCBY
YWxhbkRPTUNoYXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX3htbEhlYWRlclN0
YXJ0U3RyaW5nW10gPQpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICAgWGFsYW5ET01DaGFyKDApCiB9
OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6
ZXJCYXNlOjpVVEYxNjo6c194bWxIZWFkZXJTdGFydFN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxh
blhNTFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6
OlVURjE2OjpzX3htbEhlYWRlclN0YXJ0U3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpF
KHNfeG1sSGVhZGVyU3RhcnRTdHJpbmcpOwogCiBjb25zdCBYYWxhbkRPTUNoYXIgIFhhbGFuWE1M
U2VyaWFsaXplckJhc2U6OlVURjE2OjpzX3htbEhlYWRlckVuY29kaW5nU3RyaW5nW10gPQpAQCAt
ODAyLDcgKzgwMiw3IEBACiAgICAgWGFsYW5ET01DaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c194
bWxIZWFkZXJFbmNvZGluZ1N0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxhblhNTFNlcmlhbGl6ZXJC
YXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX3htbEhl
YWRlckVuY29kaW5nU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNfeG1sSGVhZGVy
RW5jb2RpbmdTdHJpbmcpOwogCiBjb25zdCBYYWxhbkRPTUNoYXIgIFhhbGFuWE1MU2VyaWFsaXpl
ckJhc2U6OlVURjE2OjpzX3htbEhlYWRlclN0YW5kYWxvbmVTdHJpbmdbXSA9CkBAIC04MjQsNyAr
ODI0LDcgQEAKICAgICBYYWxhbkRPTUNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5n
OjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX3htbEhlYWRl
clN0YW5kYWxvbmVTdHJpbmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6
c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c194bWxIZWFkZXJT
dGFuZGFsb25lU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNfeG1sSGVhZGVyU3Rh
bmRhbG9uZVN0cmluZyk7CiAKIGNvbnN0IFhhbGFuRE9NQ2hhciAgWGFsYW5YTUxTZXJpYWxpemVy
QmFzZTo6VVRGMTY6OnNfeG1sSGVhZGVyRW5kU3RyaW5nW10gPQpAQCAtODM1LDcgKzgzNSw3IEBA
CiAgICAgWGFsYW5ET01DaGFyKDApCiB9OwogCi1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c194bWxIZWFkZXJFbmRTdHJp
bmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c194bWxIZWFkZXJFbmRTdHJpbmdMZW5ndGgg
PQogICAgICAgICBGWE1MX1NJWkUoc194bWxIZWFkZXJFbmRTdHJpbmcpOwogCiBjb25zdCBYYWxh
bkRPTUNoYXIgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX2RlZmF1bHRWZXJzaW9u
U3RyaW5nW10gPQpAQCAtODQ2LDcgKzg0Niw3IEBACiAgICAgWGFsYW5ET01DaGFyKDApCiB9Owog
Ci1jb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJC
YXNlOjpVVEYxNjo6c19kZWZhdWx0VmVyc2lvblN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxhblhN
TFNlcmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVU
RjE2OjpzX2RlZmF1bHRWZXJzaW9uU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNf
ZGVmYXVsdFZlcnNpb25TdHJpbmcpOwogCiBjb25zdCBYYWxhbkRPTUNoYXIgIFhhbGFuWE1MU2Vy
aWFsaXplckJhc2U6OlVURjE2OjpzX2NkYXRhT3BlblN0cmluZ1tdID0KQEAgLTg2Myw3ICs4NjMs
NyBAQAogICAgIFhhbGFuRE9NQ2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNp
emVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfY2RhdGFPcGVuU3Ry
aW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAgICAg
WGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfY2RhdGFPcGVuU3RyaW5nTGVuZ3RoID0K
ICAgICAgICAgRlhNTF9TSVpFKHNfY2RhdGFPcGVuU3RyaW5nKTsKIAogY29uc3QgWGFsYW5ET01D
aGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19jZGF0YUNsb3NlU3RyaW5nW10g
PQpAQCAtODc0LDcgKzg3NCw3IEBACiAgICAgWGFsYW5ET01DaGFyKDApCiB9OwogCi1jb25zdCBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYx
Njo6c19jZGF0YUNsb3NlU3RyaW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJh
c2U6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfY2RhdGFD
bG9zZVN0cmluZ0xlbmd0aCA9CiAgICAgICAgIEZYTUxfU0laRShzX2NkYXRhQ2xvc2VTdHJpbmcp
OwogCiAKQEAgLTkwMCw3ICs5MDAsNyBAQAogICAgIFhhbGFuRE9NQ2hhcigwKQogfTsKIAotY29u
c3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6
VVRGMTY6OnNfeGh0bWxEb2NUeXBlU3RyaW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFs
aXplckJhc2U6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNf
eGh0bWxEb2NUeXBlU3RyaW5nTGVuZ3RoID0KICAgICAgICAgRlhNTF9TSVpFKHNfeGh0bWxEb2NU
eXBlU3RyaW5nKTsKIAogY29uc3QgWGFsYW5ET01DaGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNl
OjpVVEYxNjo6c19sZXNzVGhhbkVudGl0eVN0cmluZ1tdID0KQEAgLTkxMiw3ICs5MTIsNyBAQAog
ICAgIFhhbGFuRE9NQ2hhcigwKQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSAgICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfbGVzc1RoYW5FbnRpdHlTdHJp
bmdMZW5ndGggPQorY29uc3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBY
YWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19sZXNzVGhhbkVudGl0eVN0cmluZ0xlbmd0
aCA9CiAgICAgICAgIEZYTUxfU0laRShzX2xlc3NUaGFuRW50aXR5U3RyaW5nKTsKIAogY29uc3Qg
WGFsYW5ET01DaGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19ncmVhdGVyVGhh
bkVudGl0eVN0cmluZ1tdID0KQEAgLTkyNCw3ICs5MjQsNyBAQAogICAgIFhhbGFuRE9NQ2hhcigw
KQogfTsKIAotY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgICAgWGFsYW5YTUxTZXJp
YWxpemVyQmFzZTo6VVRGMTY6OnNfZ3JlYXRlclRoYW5FbnRpdHlTdHJpbmdMZW5ndGggPQorY29u
c3QgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6c2l6ZV90eXBlICAgICBYYWxhblhNTFNlcmlhbGl6
ZXJCYXNlOjpVVEYxNjo6c19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ0xlbmd0aCA9CiAgICAgICAg
IEZYTUxfU0laRShzX2dyZWF0ZXJUaGFuRW50aXR5U3RyaW5nKTsKIAogY29uc3QgWGFsYW5ET01D
aGFyICBYYWxhblhNTFNlcmlhbGl6ZXJCYXNlOjpVVEYxNjo6c19hbXBlcnNhbmRFbnRpdHlTdHJp
bmdbXSA9CkBAIC05MzcsNyArOTM3LDcgQEAKICAgICBYYWxhbkRPTUNoYXIoMCkKIH07CiAKLWNv
bnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6
OlVURjE2OjpzX2FtcGVyc2FuZEVudGl0eVN0cmluZ0xlbmd0aCA9Citjb25zdCBYYWxhblhNTFNl
cmlhbGl6ZXJCYXNlOjpzaXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2
OjpzX2FtcGVyc2FuZEVudGl0eVN0cmluZ0xlbmd0aCA9CiAgICAgICAgIEZYTUxfU0laRShzX2Ft
cGVyc2FuZEVudGl0eVN0cmluZyk7CiAKIGNvbnN0IFhhbGFuRE9NQ2hhciAgWGFsYW5YTUxTZXJp
YWxpemVyQmFzZTo6VVRGMTY6OnNfcXVvdGVFbnRpdHlTdHJpbmdbXSA9CkBAIC05NTEsNyArOTUx
LDcgQEAKICAgICBYYWxhbkRPTUNoYXIoMCkKIH07CiAKLWNvbnN0IFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgICAgIFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OlVURjE2OjpzX3F1b3RlRW50aXR5
U3RyaW5nTGVuZ3RoID0KK2NvbnN0IFhhbGFuWE1MU2VyaWFsaXplckJhc2U6OnNpemVfdHlwZSAg
ICAgWGFsYW5YTUxTZXJpYWxpemVyQmFzZTo6VVRGMTY6OnNfcXVvdGVFbnRpdHlTdHJpbmdMZW5n
dGggPQogICAgICAgICBGWE1MX1NJWkUoc19xdW90ZUVudGl0eVN0cmluZyk7CiAKIApJbmRleDog
c3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvVGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
c3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvVGV4dC5jcHAJKHJldmlzaW9uIDcwNjEy
OSkKKysrIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb1RleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAKIHZvaWQKIEZvcm1hdHRlclRvVGV4dDo6Y2hhcmFj
dGVycygKIAkJCWNvbnN0IFhNTENoKiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGlu
dAlsZW5ndGgpCisJCQljb25zdCBzaXplX3R5cGUJICAgIGxlbmd0aCkKIHsKIAlhc3NlcnQobV93
cml0ZXIgIT0gMCk7CiAKQEAgLTI0NSw3ICsyNDUsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9UZXh0
OjpjaGFyYWN0ZXJzUmF3KAogCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMsCi0JCWNvbnN0IHVu
c2lnbmVkIGludAlsZW5ndGgpCisJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKQogewogCWNo
YXJhY3RlcnMoY2hhcnMsIGxlbmd0aCk7CiB9CkBAIC0yNjIsNyArMjYyLDcgQEAKIHZvaWQKIEZv
cm1hdHRlclRvVGV4dDo6aWdub3JhYmxlV2hpdGVzcGFjZSgKIAkJCWNvbnN0IFhNTENoKiBjb25z
dAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpCisJCQljb25zdCBzaXplX3R5
cGUJICAgIGxlbmd0aCkKIHsKIAlpZiAobV9oYW5kbGVJZ25vcmFibGVXaGl0ZXNwYWNlID09IHRy
dWUpCiAJewpAQCAtMzAxLDcgKzMwMSw3IEBACiB2b2lkCiBGb3JtYXR0ZXJUb1RleHQ6OmNkYXRh
KAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoLAotCQkJY29uc3QgdW5zaWduZWQgaW50IAlsZW5n
dGgpCisJCQljb25zdCBzaXplX3R5cGUgCWxlbmd0aCkKIHsKIAljaGFyYWN0ZXJzKGNoLCBsZW5n
dGgpOwogfQpJbmRleDogc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuWE1MU2VyaWFsaXplckJh
c2UuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9YYWxhblhNTFNlcmlh
bGl6ZXJCYXNlLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YTUxTdXBwb3J0
L1hhbGFuWE1MU2VyaWFsaXplckJhc2UuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTIgKzEy
MiwxMiBAQAogICAgIHZpcnR1YWwgdm9pZAogICAgIGNoYXJhY3RlcnMoCiAgICAgICAgICAgICBj
b25zdCBYTUxDaCogY29uc3QgIGNoYXJzLAotICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
ICBsZW5ndGgpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpOwogCiAg
ICAgdmlydHVhbCB2b2lkCiAgICAgY2hhcmFjdGVyc1JhdygKICAgICAgICAgICAgIGNvbnN0IFhN
TENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgIGxlbmd0
aCkgPSAwOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZAogICAgIGVudGl0eVJlZmVyZW5jZShjb25zdCBYTUxDaCogY29uc3Qg
IG5hbWUpID0gMDsKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgIHZpcnR1YWwgdm9pZAogICAgIGln
bm9yYWJsZVdoaXRlc3BhY2UoCiAgICAgICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGNoYXJz
LAotICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICBsZW5ndGgpOworICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90eXBlICAgICBsZW5ndGgpOwogCiAgICAgdmlydHVhbCB2b2lkCiAgICAgcHJv
Y2Vzc2luZ0luc3RydWN0aW9uKApAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgdmlydHVhbCB2b2lk
CiAgICAgY2RhdGEoCiAgICAgICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGNoLAotICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50ICBsZW5ndGgpOworICAgICAgICAgICAgY29uc3Qgc2l6
ZV90eXBlICAgICBsZW5ndGgpOwogCiAgICAgdmlydHVhbCBjb25zdCBYYWxhbkRPTVN0cmluZyYK
ICAgICBnZXREb2N0eXBlU3lzdGVtKCkgY29uc3Q7CkBAIC0yMDcsMTA3ICsyMDcsMTA3IEBACiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBUaGUgc3RyaW5nICI8IURPQ1RZUEUgIi4KICAgICAgICAg
ICovCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAgICBzX2Rv
Y3R5cGVIZWFkZXJTdGFydFN0cmluZ1tdOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAgICAg
ICAgICAgc19kb2N0eXBlSGVhZGVyU3RhcnRTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29u
c3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgc19kb2N0eXBlSGVhZGVyU3RhcnRTdHJpbmdM
ZW5ndGg7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgICAgICBzX2RvY3R5cGVIZWFk
ZXJTdGFydFN0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmlu
ZyAiIFBVQkxJQyBcIiIuCiAgICAgICAgICAqLwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAg
ICAgICAgICAgICAgICAgICAgICAgc19kb2N0eXBlSGVhZGVyUHVibGljU3RyaW5nW107CisgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgIHNfZG9jdHlwZUhlYWRlclB1YmxpY1N0cmluZ1td
OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICBzX2Rv
Y3R5cGVIZWFkZXJQdWJsaWNTdHJpbmdMZW5ndGg7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3R5cGUgIHNfZG9jdHlwZUhlYWRlclB1YmxpY1N0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioK
ICAgICAgICAgICogVGhlIHN0cmluZyAiIFNZU1RFTSBcIiIuCiAgICAgICAgICAqLwotICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAgc19kb2N0eXBlSGVhZGVy
U3lzdGVtU3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgIHNfZG9jdHlw
ZUhlYWRlclN5c3RlbVN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0
cmluZzo6c2l6ZV90eXBlICBzX2RvY3R5cGVIZWFkZXJTeXN0ZW1TdHJpbmdMZW5ndGg7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgIHNfZG9jdHlwZUhlYWRlclN5c3RlbVN0cmluZ0xl
bmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiPD94bWwgdmVyc2lv
bj1cIiIuCiAgICAgICAgICAqLwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAgICAgICAgICAg
ICAgICAgICAgICAgc194bWxIZWFkZXJTdGFydFN0cmluZ1tdOworICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciAgICAgICBzX3htbEhlYWRlclN0YXJ0U3RyaW5nW107CiAKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgIHNfeG1sSGVhZGVyU3RhcnRTdHJpbmdM
ZW5ndGg7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgIHNfeG1sSGVhZGVyU3RhcnRT
dHJpbmdMZW5ndGg7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIlwiIGVu
Y29kaW5nPVwiIi4KICAgICAgICAgICovCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAg
ICAgICAgICAgICAgICAgICBzX3htbEhlYWRlckVuY29kaW5nU3RyaW5nW107CisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyICAgICAgIHNfeG1sSGVhZGVyRW5jb2RpbmdTdHJpbmdbXTsKIAotICAg
ICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgc194bWxIZWFkZXJF
bmNvZGluZ1N0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAgc194
bWxIZWFkZXJFbmNvZGluZ1N0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICog
VGhlIHN0cmluZyAiXCIgc3RhbmRhbG9uZT1cIiIuCiAgICAgICAgICAqLwotICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAgc194bWxIZWFkZXJTdGFuZGFsb25l
U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgIHNfeG1sSGVhZGVyU3Rh
bmRhbG9uZVN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6
c2l6ZV90eXBlICBzX3htbEhlYWRlclN0YW5kYWxvbmVTdHJpbmdMZW5ndGg7CisgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3R5cGUgIHNfeG1sSGVhZGVyU3RhbmRhbG9uZVN0cmluZ0xlbmd0aDsK
IAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiXCI/PiIuCiAgICAgICAgICAq
LwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAgc194bWxI
ZWFkZXJFbmRTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAgc194bWxI
ZWFkZXJFbmRTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01TdHJpbmc6
OnNpemVfdHlwZSAgc194bWxIZWFkZXJFbmRTdHJpbmdMZW5ndGg7CisgICAgICAgIHN0YXRpYyBj
b25zdCBzaXplX3R5cGUgIHNfeG1sSGVhZGVyRW5kU3RyaW5nTGVuZ3RoOwogCiAgICAgICAgIC8q
KgogICAgICAgICAgKiBUaGUgc3RyaW5nICIxLjAiLgogICAgICAgICAgKi8KLSAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAgIHNfZGVmYXVsdFZlcnNpb25TdHJp
bmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAgc19kZWZhdWx0VmVyc2lvblN0
cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBl
ICBzX2RlZmF1bHRWZXJzaW9uU3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90eXBlICBzX2RlZmF1bHRWZXJzaW9uU3RyaW5nTGVuZ3RoOwogCiAgICAgICAgIC8qKgogICAg
ICAgICAgKiBUaGUgc3RyaW5nICItLy9XM0MvL0RURCBYSFRNTCIuCiAgICAgICAgICAqLwotICAg
ICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgICAgICAgc194aHRtbERvY1R5
cGVTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgIHNfeGh0bWxE
b2NUeXBlU3RyaW5nW107CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgIHNfeGh0bWxEb2NUeXBlU3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlICAgICAgc194aHRtbERvY1R5cGVTdHJpbmdMZW5ndGg7CiAKICAgICAgICAg
LyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIjwhW0NEQVRBWyIuCiAgICAgICAgICAqLwotICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAgc19jZGF0YU9wZW5T
dHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAgc19jZGF0YU9wZW5TdHJp
bmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAg
c19jZGF0YU9wZW5TdHJpbmdMZW5ndGg7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUg
IHNfY2RhdGFPcGVuU3RyaW5nTGVuZ3RoOwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBUaGUg
c3RyaW5nICJdXT4iLgogICAgICAgICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAg
ICAgICAgICAgICAgICAgICAgIHNfY2RhdGFDbG9zZVN0cmluZ1tdOworICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciAgICAgICBzX2NkYXRhQ2xvc2VTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgc19jZGF0YUNsb3NlU3RyaW5nTGVuZ3Ro
OworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlICBzX2NkYXRhQ2xvc2VTdHJpbmdMZW5n
dGg7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIiZsdDsiLgogICAgICAg
ICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAgIHNf
bGVzc1RoYW5FbnRpdHlTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAg
c19sZXNzVGhhbkVudGl0eVN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlICBzX2xlc3NUaGFuRW50aXR5U3RyaW5nTGVuZ3RoOworICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlICBzX2xlc3NUaGFuRW50aXR5U3RyaW5nTGVuZ3RoOwog
CiAgICAgICAgIC8qKgogICAgICAgICAgKiBUaGUgc3RyaW5nICImZ3Q7Ii4KICAgICAgICAgICov
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAgICBzX2dyZWF0
ZXJUaGFuRW50aXR5U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgIHNf
Z3JlYXRlclRoYW5FbnRpdHlTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5E
T01TdHJpbmc6OnNpemVfdHlwZSAgc19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ0xlbmd0aDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAgc19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ0xl
bmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiJmFtcDsiLgogICAg
ICAgICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAg
IHNfYW1wZXJzYW5kRW50aXR5U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAg
ICAgIHNfYW1wZXJzYW5kRW50aXR5U3RyaW5nW107CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFhh
bGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgIHNfYW1wZXJzYW5kRW50aXR5U3RyaW5nTGVuZ3RoOwor
ICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlICBzX2FtcGVyc2FuZEVudGl0eVN0cmluZ0xl
bmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiJnF1b3Q7Ii4KICAg
ICAgICAgICovCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAg
ICBzX3F1b3RlRW50aXR5U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICAgICAg
IHNfcXVvdGVFbnRpdHlTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01T
dHJpbmc6OnNpemVfdHlwZSAgc19xdW90ZUVudGl0eVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdHlwZSAgc19xdW90ZUVudGl0eVN0cmluZ0xlbmd0aDsKICAgICB9Owog
CiAgICAgY2xhc3MgWEFMQU5fWE1MU1VQUE9SVF9FWFBPUlQgVVRGMTYKQEAgLTMyMiwxMDcgKzMy
MiwxMDcgQEAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIjwhRE9DVFlQRSAi
LgogICAgICAgICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAg
ICAgICAgIHNfZG9jdHlwZUhlYWRlclN0YXJ0U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25z
dCBYYWxhbkRPTUNoYXIgICBzX2RvY3R5cGVIZWFkZXJTdGFydFN0cmluZ1tdOwogCi0gICAgICAg
IHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICBzX2RvY3R5cGVIZWFkZXJT
dGFydFN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAgICAgIHNf
ZG9jdHlwZUhlYWRlclN0YXJ0U3RyaW5nTGVuZ3RoOwogCiAgICAgICAgIC8qKgogICAgICAgICAg
KiBUaGUgc3RyaW5nICIgUFVCTElDIFwiIi4KICAgICAgICAgICovCi0gICAgICAgIHN0YXRpYyBj
b25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgICAgICBzX2RvY3R5cGVIZWFkZXJQdWJsaWNTdHJp
bmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgIHNfZG9jdHlwZUhlYWRl
clB1YmxpY1N0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6
c2l6ZV90eXBlICBzX2RvY3R5cGVIZWFkZXJQdWJsaWNTdHJpbmdMZW5ndGg7CisgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3R5cGUgICAgICBzX2RvY3R5cGVIZWFkZXJQdWJsaWNTdHJpbmdMZW5n
dGg7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIiBTWVNURU0gXCIiLgog
ICAgICAgICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAg
ICAgIHNfZG9jdHlwZUhlYWRlclN5c3RlbVN0cmluZ1tdOworICAgICAgICBzdGF0aWMgY29uc3Qg
WGFsYW5ET01DaGFyICAgc19kb2N0eXBlSGVhZGVyU3lzdGVtU3RyaW5nW107CiAKLSAgICAgICAg
c3RhdGljIGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgIHNfZG9jdHlwZUhlYWRlclN5
c3RlbVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAgICAgIHNf
ZG9jdHlwZUhlYWRlclN5c3RlbVN0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAg
ICogVGhlIHN0cmluZyAiPD94bWwgdmVyc2lvbj1cIiIuCiAgICAgICAgICAqLwotICAgICAgICBz
dGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgICAgICAgc194bWxIZWFkZXJTdGFydFN0
cmluZ1tdOworICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc194bWxIZWFkZXJT
dGFydFN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlICBzX3htbEhlYWRlclN0YXJ0U3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlICAgICAgc194bWxIZWFkZXJTdGFydFN0cmluZ0xlbmd0aDsKIAogICAgICAg
ICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiXCIgZW5jb2Rpbmc9XCIiLgogICAgICAgICAg
Ki8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNfeG1s
SGVhZGVyRW5jb2RpbmdTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hh
ciAgIHNfeG1sSGVhZGVyRW5jb2RpbmdTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3Qg
WGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgc194bWxIZWFkZXJFbmNvZGluZ1N0cmluZ0xlbmd0
aDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAgICAgIHNfeG1sSGVhZGVyRW5jb2Rp
bmdTdHJpbmdMZW5ndGg7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIlwi
IHN0YW5kYWxvbmU9XCIiLgogICAgICAgICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFu
RE9NQ2hhciAgICAgICAgICAgICAgIHNfeG1sSGVhZGVyU3RhbmRhbG9uZVN0cmluZ1tdOworICAg
ICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc194bWxIZWFkZXJTdGFuZGFsb25lU3Ry
aW5nW107CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUg
IHNfeG1sSGVhZGVyU3RhbmRhbG9uZVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdHlwZSAgICAgIHNfeG1sSGVhZGVyU3RhbmRhbG9uZVN0cmluZ0xlbmd0aDsKIAogICAg
ICAgICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiXCI/PiIuCiAgICAgICAgICAqLwotICAg
ICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgICAgICAgc194bWxIZWFkZXJF
bmRTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgIHNfeG1sSGVh
ZGVyRW5kU3RyaW5nW107CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpz
aXplX3R5cGUgIHNfeG1sSGVhZGVyRW5kU3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlICAgICAgc194bWxIZWFkZXJFbmRTdHJpbmdMZW5ndGg7CiAKICAgICAgICAg
LyoqCiAgICAgICAgICAqIFRoZSBzdHJpbmcgIjEuMCIuCiAgICAgICAgICAqLwotICAgICAgICBz
dGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgICAgICAgc19kZWZhdWx0VmVyc2lvblN0
cmluZ1tdOworICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc19kZWZhdWx0VmVy
c2lvblN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlICBzX2RlZmF1bHRWZXJzaW9uU3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlICAgICAgc19kZWZhdWx0VmVyc2lvblN0cmluZ0xlbmd0aDsKIAogICAgICAg
ICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiLS8vVzNDLy9EVEQgWEhUTUwiLgogICAgICAg
ICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNf
eGh0bWxEb2NUeXBlU3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTUNoYXIg
ICBzX3hodG1sRG9jVHlwZVN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlICBzX3hodG1sRG9jVHlwZVN0cmluZ0xlbmd0aDsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdHlwZSAgICAgIHNfeGh0bWxEb2NUeXBlU3RyaW5nTGVuZ3RoOwog
CiAgICAgICAgIC8qKgogICAgICAgICAgKiBUaGUgc3RyaW5nICI8IVtDREFUQVsiLgogICAgICAg
ICAgKi8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNf
Y2RhdGFPcGVuU3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTUNoYXIgICBz
X2NkYXRhT3BlblN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICBzX2NkYXRhT3BlblN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHNpemVfdHlwZSAgICAgIHNfY2RhdGFPcGVuU3RyaW5nTGVuZ3RoOwogCiAgICAgICAgIC8q
KgogICAgICAgICAgKiBUaGUgc3RyaW5nICJdXT4iLgogICAgICAgICAgKi8KLSAgICAgICAgc3Rh
dGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNfY2RhdGFDbG9zZVN0cmluZ1td
OworICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc19jZGF0YUNsb3NlU3RyaW5n
W107CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgIHNf
Y2RhdGFDbG9zZVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSAg
ICAgIHNfY2RhdGFDbG9zZVN0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAgICog
VGhlIHN0cmluZyAiJmx0OyIuCiAgICAgICAgICAqLwotICAgICAgICBzdGF0aWMgY29uc3QgWGFs
YW5ET01DaGFyICAgICAgICAgICAgICAgc19sZXNzVGhhbkVudGl0eVN0cmluZ1tdOworICAgICAg
ICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc19sZXNzVGhhbkVudGl0eVN0cmluZ1tdOwog
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICBzX2xlc3NU
aGFuRW50aXR5U3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlICAg
ICAgc19sZXNzVGhhbkVudGl0eVN0cmluZ0xlbmd0aDsKIAogICAgICAgICAvKioKICAgICAgICAg
ICogVGhlIHN0cmluZyAiJmd0OyIuCiAgICAgICAgICAqLwotICAgICAgICBzdGF0aWMgY29uc3Qg
WGFsYW5ET01DaGFyICAgICAgICAgICAgICAgc19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ1tdOwor
ICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01DaGFyICAgc19ncmVhdGVyVGhhbkVudGl0eVN0
cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBl
ICBzX2dyZWF0ZXJUaGFuRW50aXR5U3RyaW5nTGVuZ3RoOworICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90eXBlICAgICAgc19ncmVhdGVyVGhhbkVudGl0eVN0cmluZ0xlbmd0aDsKIAogICAgICAg
ICAvKioKICAgICAgICAgICogVGhlIHN0cmluZyAiJmFtcDsiLgogICAgICAgICAgKi8KLSAgICAg
ICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNfYW1wZXJzYW5kRW50
aXR5U3RyaW5nW107CisgICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTUNoYXIgICBzX2FtcGVy
c2FuZEVudGl0eVN0cmluZ1tdOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICBzX2FtcGVyc2FuZEVudGl0eVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdHlwZSAgICAgIHNfYW1wZXJzYW5kRW50aXR5U3RyaW5nTGVuZ3RoOwog
CiAgICAgICAgIC8qKgogICAgICAgICAgKiBUaGUgc3RyaW5nICImcXVvdDsiLgogICAgICAgICAg
Ki8KLSAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICAgICAgIHNfcXVv
dGVFbnRpdHlTdHJpbmdbXTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NQ2hhciAgIHNf
cXVvdGVFbnRpdHlTdHJpbmdbXTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgWGFsYW5ET01TdHJp
bmc6OnNpemVfdHlwZSAgc19xdW90ZUVudGl0eVN0cmluZ0xlbmd0aDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdHlwZSAgICAgIHNfcXVvdGVFbnRpdHlTdHJpbmdMZW5ndGg7CiAgICAgfTsK
IAogICAgIGVudW0KQEAgLTU2OSwxMiArNTY5LDEyIEBACiAgICAgdmlydHVhbCB2b2lkCiAgICAg
d3JpdGVDaGFyYWN0ZXJzKAogICAgICAgICAgICAgY29uc3QgWE1MQ2gqICAgIGNoYXJzLAotICAg
ICAgICAgICAgdW5zaWduZWQgaW50ICAgIGxlbmd0aCkgPSAwOworICAgICAgICAgICAgc2l6ZV90
eXBlICAgICAgIGxlbmd0aCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkCiAgICAgd3JpdGVDREFU
QSgKICAgICAgICAgICAgIGNvbnN0IFhNTENoKiAgICBjaGFycywKLSAgICAgICAgICAgIHVuc2ln
bmVkIGludCAgICBsZW5ndGgpID0gMDsKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICBsZW5n
dGgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZAogICAgIG91dHB1dE5ld2xpbmUoKSA9IDA7CkBA
IC02OTIsNyArNjkyLDcgQEAKICAgICAgKi8KICAgICBjb25zdCBYYWxhbkRPTVN0cmluZyAgICBt
X3N0YW5kYWxvbmU7CiAKLSAgICBjb25zdCBYYWxhbkRPTVN0cmluZyAgbV9lbmNvZGluZzsKKyAg
ICBjb25zdCBYYWxhbkRPTVN0cmluZyAgICBtX2VuY29kaW5nOwogCiAgICAgc3RhdGljIGJvb2wK
ICAgICBpc1VURjE2SGlnaFN1cnJvZ2F0ZShYYWxhbkRPTUNoYXIgICB0aGVDaGFyKQpAQCAtNzkw
LDkgKzc5MCw5IEBACiAgICAgLyoqCiAgICAgICogVGhlIHN0cmluZyAiLS8vVzNDLy9EVEQgWEhU
TUwiLgogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgICAg
ICBzX3hodG1sRG9jVHlwZVN0cmluZ1tdOworICAgIHN0YXRpYyBjb25zdCBYYWxhbkRPTUNoYXIg
ICBzX3hodG1sRG9jVHlwZVN0cmluZ1tdOwogCi0gICAgc3RhdGljIGNvbnN0IFhhbGFuRE9NU3Ry
aW5nOjpzaXplX3R5cGUgIHNfeGh0bWxEb2NUeXBlU3RyaW5nTGVuZ3RoOworICAgIHN0YXRpYyBj
b25zdCBzaXplX3R5cGUgICAgICBzX3hodG1sRG9jVHlwZVN0cmluZ0xlbmd0aDsKIH07CiAKIApJ
bmRleDogc3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvVGV4dC5ocHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gc3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvVGV4dC5ocHAJKHJldmlzaW9u
IDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWE1MU3VwcG9ydC9Gb3JtYXR0ZXJUb1RleHQuaHBwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODcsMTIgKzE4NywxMiBAQAogICAgIHZpcnR1YWwgdm9pZAogCWNo
YXJhY3RlcnMoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMsCi0JCQljb25zdCB1bnNpZ25l
ZCBpbnQJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKTsKIAogICAgIHZp
cnR1YWwgdm9pZAogCWNoYXJhY3RlcnNSYXcoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMs
Ci0JCQljb25zdCB1bnNpZ25lZCBpbnQJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAg
bGVuZ3RoKTsKIAogCXZpcnR1YWwgdm9pZAogCWVudGl0eVJlZmVyZW5jZShjb25zdCBYTUxDaCog
Y29uc3QJbmFtZSk7CkBAIC0yMDAsNyArMjAwLDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAlpZ25vcmFi
bGVXaGl0ZXNwYWNlKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJY29uc3QgdW5z
aWduZWQgaW50CWxlbmd0aCk7CisJCQljb25zdCBzaXplX3R5cGUJICAgIGxlbmd0aCk7CiAKIAl2
aXJ0dWFsIHZvaWQKIAlwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oCkBAIC0yMTYsNyArMjE2LDcgQEAK
IAl2aXJ0dWFsIHZvaWQKIAljZGF0YSgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAljaCwKLQkJCWNv
bnN0IHVuc2lnbmVkIGludCAJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlwZSAJbGVuZ3RoKTsK
IAogcHJpdmF0ZToKIApJbmRleDogc3JjL3hhbGFuYy9YTUxTdXBwb3J0L0Zvcm1hdHRlclRvWE1M
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hNTFN1cHBvcnQvRm9ybWF0dGVyVG9YTUwu
Y3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hNTFN1cHBvcnQvRm9ybWF0dGVy
VG9YTUwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsMTMgKzY5NSwxMyBAQAogCiB2b2lkCiBG
b3JtYXR0ZXJUb1hNTDo6YWNjdW1OYW1lQXJyYXkoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRP
TUNoYXIgICAgICAgICAgY2hhcnNbXSwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXpl
X3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBs
ZW5ndGgpCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgIGNoYXJzW10sCisgICAgICAg
ICAgICBzaXplX3R5cGUgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgc2l6ZV90eXBlICAg
ICAgICAgICBsZW5ndGgpCiB7Ci0gICAgY29uc3QgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAg
ICAgbiA9IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbiA9IHN0YXJ0
ICsgbGVuZ3RoOwogCi0gICAgZm9yKFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgaSA9IHN0YXJ0
OyBpIDwgbjsgKytpKQorICAgIGZvcihzaXplX3R5cGUgaSA9IHN0YXJ0OyBpIDwgbjsgKytpKQog
ICAgIHsKICAgICAgICAgYWNjdW1OYW1lKGNoYXJzW2ldKTsKICAgICB9CkBAIC03MTEsMTMgKzcx
MSwxMyBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb1hNTDo6YWNjdW1Db250ZW50QXJyYXkoCi0gICAg
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgY2hhcnNbXSwKLSAgICAgICAgICAg
IFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9N
U3RyaW5nOjpzaXplX3R5cGUgICBsZW5ndGgpCisgICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNo
YXIgIGNoYXJzW10sCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIHN0YXJ0LAorICAg
ICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICBsZW5ndGgpCiB7Ci0gICAgY29uc3QgWGFsYW5E
T01TdHJpbmc6OnNpemVfdHlwZSAgICAgbiA9IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHNp
emVfdHlwZSAgICAgbiA9IHN0YXJ0ICsgbGVuZ3RoOwogCi0gICAgZm9yKFhhbGFuRE9NU3RyaW5n
OjpzaXplX3R5cGUgaSA9IHN0YXJ0OyBpIDwgbjsgKytpKQorICAgIGZvcihzaXplX3R5cGUgaSA9
IHN0YXJ0OyBpIDwgbjsgKytpKQogICAgIHsKICAgICAgICAgYWNjdW1Db250ZW50KGNoYXJzW2ld
KTsKICAgICB9CkBAIC03MjcsMTMgKzcyNywxMyBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb1hNTDo6
YWNjdW1BcnJheVVURigKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICBj
aGFyc1tdLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHN0YXJ0LAot
ICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIGxlbmd0aCkKKyAgICAgICAg
ICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAg
ICAgICAgICAgc3RhcnQsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIGxlbmd0aCkK
IHsKLSAgICBjb25zdCBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgICBuID0gc3RhcnQgKyBs
ZW5ndGg7CisgICAgY29uc3Qgc2l6ZV90eXBlICAgICBuID0gc3RhcnQgKyBsZW5ndGg7CiAKLSAg
ICBmb3IoWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBpID0gc3RhcnQ7IGkgPCBuOyArK2kpCisg
ICAgZm9yKHNpemVfdHlwZSBpID0gc3RhcnQ7IGkgPCBuOyArK2kpCiAgICAgewogICAgICAgICBh
Y2N1bUNoYXJVVEYoY2hhcnNbaV0pOwogICAgIH0KQEAgLTc0Myw5ICs3NDMsOSBAQAogCiB2b2lk
CiBGb3JtYXR0ZXJUb1hNTDo6YWNjdW1BcnJheVVURkRpcmVjdCgKLSAgICAgICAgICAgIGNvbnN0
IFhhbGFuRE9NQ2hhciAgICAgICAgICBjaGFyc1tdLAotICAgICAgICAgICAgWGFsYW5ET01TdHJp
bmc6OnNpemVfdHlwZSAgIHN0YXJ0LAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVf
dHlwZSAgIGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgY2hhcnNbXSwK
KyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgc3RhcnQsCisgICAgICAgICAgICBzaXpl
X3R5cGUgICAgICAgICAgIGxlbmd0aCkKIHsKICAgICBhc3NlcnQobV9tYXhDaGFyYWN0ZXIgPj0g
NjU1MzUpOwogICAgIGFzc2VydChtX3N0cmVhbSAhPSAwKTsKQEAgLTg1NCwxMyArODU0LDEzIEBA
CiAKIAogCi1YYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCitGb3JtYXR0ZXJUb1hNTDo6c2l6ZV90
eXBlCiBGb3JtYXR0ZXJUb1hNTDo6YWNjdW1EZWZhdWx0RXNjYXBlKAotICAgICAgICAgICAgWGFs
YW5ET01DaGFyICAgICAgICAgICAgICAgIGNoLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6
OnNpemVfdHlwZSAgIGksCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAg
Y2hhcnNbXSwKLSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBsZW4sCi0g
ICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgZXNjTEYpCisgICAgICAgICAg
ICBYYWxhbkRPTUNoYXIgICAgICAgIGNoLAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAg
ICBpLAorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICBjaGFyc1tdLAorICAgICAgICAg
ICAgc2l6ZV90eXBlICAgICAgICAgICBsZW4sCisgICAgICAgICAgICBib29sICAgICAgICAgICAg
ICAgIGVzY0xGKQogewogICAgIGlmKCFhY2N1bURlZmF1bHRFbnRpdHkoY2gsIGVzY0xGKSkKICAg
ICB7CkBAIC0xMjU4LDcgKzEyNTgsNyBAQAogdm9pZAogRm9ybWF0dGVyVG9YTUw6OmNoYXJhY3Rl
cnMoCiAgICAgICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGNoYXJzLAotICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50ICBsZW5ndGgpCisgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUg
ICAgIGxlbmd0aCkKIHsKICAgICBpZihsZW5ndGggIT0gMCkKICAgICB7CkBAIC0xMjc4LDggKzEy
NzgsOCBAQAogCiAgICAgICAgICAgICBtX2lzcHJlc2VydmUgPSB0cnVlOwogCi0gICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgICAgaSA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgICAgZmly
c3RJbmRleCA9IDA7CisgICAgICAgICAgICBzaXplX3R5cGUgICAgaSA9IDA7CisgICAgICAgICAg
ICBzaXplX3R5cGUgICBmaXJzdEluZGV4ID0gMDsKIAogICAgICAgICAgICAgd2hpbGUoaSA8IGxl
bmd0aCkgCiAgICAgICAgICAgICB7CkBAIC0xMzE4LDcgKzEzMTgsNyBAQAogdm9pZAogRm9ybWF0
dGVyVG9YTUw6OmNoYXJhY3RlcnNSYXcoCiAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2hh
cnMsCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAgbGVuZ3RoKQorICAgICAgICBjb25zdCBz
aXplX3R5cGUgICAgIGxlbmd0aCkKIHsKICAgICB3cml0ZVBhcmVudFRhZ0VuZCgpOwogCkBAIC0x
Mzc4LDEzICsxMzc4LDEzIEBACiAKIHZvaWQKIEZvcm1hdHRlclRvWE1MOjp3cml0ZUF0dHJTdHJp
bmcoCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgdGhlU3RyaW5nLAot
ICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHRoZVN0cmluZ0xlbmd0aCkK
KyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIHRoZVN0cmluZywKKyAgICAgICAg
ICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHRoZVN0cmluZ0xlbmd0aCkKIHsKICAgICBhc3Nl
cnQodGhlU3RyaW5nICE9IDApOwogCi0gICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIGkg
PSAwOwotICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBmaXJzdEluZGV4ID0gMDsKKyAg
ICBzaXplX3R5cGUgICBpID0gMDsKKyAgICBzaXplX3R5cGUgICBmaXJzdEluZGV4ID0gMDsKIAog
ICAgIHdoaWxlKGkgPCB0aGVTdHJpbmdMZW5ndGgpCiAgICAgewpAQCAtMTQyMywxNCArMTQyMywx
NCBAQAogCiB2b2lkCiBGb3JtYXR0ZXJUb1hNTDo6d3JpdGVOb3JtYWxpemVkQ2hhcnMoCi0gICAg
ICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgY2hbXSwKLSAgICAgICAgICAgIFhh
bGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFuRE9NU3Ry
aW5nOjpzaXplX3R5cGUgICBsZW5ndGgsCi0gICAgICAgICAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgaXNDRGF0YSkKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgY2hbXSwK
KyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgc3RhcnQsCisgICAgICAgICAgICBzaXpl
X3R5cGUgICAgICAgICAgIGxlbmd0aCwKKyAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAg
aXNDRGF0YSkKIHsKLSAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgZW5kID0gc3RhcnQg
KyBsZW5ndGg7CisgICAgc2l6ZV90eXBlICAgZW5kID0gc3RhcnQgKyBsZW5ndGg7CiAKLSAgICBm
b3IoWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykKKyAg
ICBmb3Ioc2l6ZV90eXBlIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKQogICAgIHsKICAgICAgICAg
Y29uc3QgWGFsYW5ET01DaGFyICBjID0gY2hbaV07CiAKQEAgLTE1OTUsNyArMTU5NSw3IEBACiB2
b2lkCiBGb3JtYXR0ZXJUb1hNTDo6aWdub3JhYmxlV2hpdGVzcGFjZSgKICAgICAgICAgICAgIGNv
bnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
IGxlbmd0aCkKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKQogewogI2lm
IDEKICAgICAvLyBXZSBuZWVkIHRvIGRvIG5vcm1hbGl6YXRpb24sIHdoaWNoIGlzIHNsb3dlciwK
QEAgLTE2NzgsNyArMTY3OCw3IEBACiB2b2lkCiBGb3JtYXR0ZXJUb1hNTDo6Y2RhdGEoCiAgICAg
ICAgICAgICBjb25zdCBYTUxDaCogY29uc3QgIGNoLAotICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50ICBsZW5ndGgpCisgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgICAgIGxlbmd0aCkK
IHsKICAgICBpZihtX25leHRJc1JhdyA9PSB0cnVlKQogICAgIHsKQEAgLTE4MzksMTAgKzE4Mzks
MTAgQEAKIAogdm9pZAogRm9ybWF0dGVyVG9YTUw6OmFjY3VtTm9ybWFsaXplZFBJRGF0YSgKLSAg
ICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgICAgICB0aGVEYXRhLAotICAgICAgICAg
ICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHRoZUxlbmd0aCkKKyAgICAgICAgICAgIGNv
bnN0IFhhbGFuRE9NQ2hhciogICAgIHRoZURhdGEsCisgICAgICAgICAgICBzaXplX3R5cGUgICAg
ICAgICAgICAgICB0aGVMZW5ndGgpCiB7Ci0gICAgZm9yIChYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlIGkgPSAwOyBpIDwgdGhlTGVuZ3RoOyArK2kpCisgICAgZm9yIChzaXplX3R5cGUgaSA9IDA7
IGkgPCB0aGVMZW5ndGg7ICsraSkKICAgICB7CiAgICAgICAgIGFjY3VtQ29udGVudCh0aGVEYXRh
W2ldKTsKICAgICB9CkluZGV4OiBzcmMveGFsYW5jL1hNTFN1cHBvcnQvWGFsYW5VVEYxNldyaXRl
ci5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YTUxTdXBwb3J0L1hhbGFuVVRGMTZXcml0
ZXIuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hNTFN1cHBvcnQvWGFsYW5V
VEYxNldyaXRlci5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQAogCiAgICAg
c2l6ZV90eXBlCiAgICAgd3JpdGVDREFUQUNoYXIoCi0gICAgICAgICAgICAgICAgY29uc3QgWGFs
YW5ET01DaGFyICBjaGFyc1tdLAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAg
c3RhcnQsCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICAvKmxlbmd0aCovLAot
ICAgICAgICAgICAgICAgIGJvb2wmICAgICAgICAgICAgICAgLyogb3V0c2lkZUNEQVRBICovKQor
ICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICBjaGFyc1tdLAorICAgICAgICAgICAgc2l6
ZV90eXBlICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAg
LypsZW5ndGgqLywKKyAgICAgICAgICAgIGJvb2wmICAgICAgICAgICAgICAgLyogb3V0c2lkZUNE
QVRBICovKQogICAgIHsKICAgICAgICAgYXNzZXJ0KCBjaGFycyAhPSAwICk7CiAKQEAgLTY5LDI4
ICs2OSwzNCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFdyaXRlcyBuYW1lIGNoYXJzICwg
aWYgbm90IHByZXNlbnRhYmxlLCB0aHJvd3MgCisgICAgICogV3JpdGVzIG5hbWUgY2hhcnMsIGlm
IG5vdCByZXByZXNlbnRhYmxlLCB0aHJvd3MgCiAgICAgICovCi0gICAgdm9pZCB3cml0ZU5hbWVD
aGFyKGNvbnN0IFhhbGFuRE9NQ2hhciogICAgICAgICAgICBkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQorICAgIHZvaWQKKyAg
ICB3cml0ZU5hbWVDaGFyKAorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgZGF0
YSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHRoZUxlbmd0aCkKICAgICB7
CiAgICAgICAgIHdyaXRlKGRhdGEsIHRoZUxlbmd0aCk7CiAgICAgfQogCiAgICAgLyoqCi0gICAg
ICogV3JpdGVzIG5hbWUgY2hhcnMgLCBpZiBub3QgcHJlc2VudGFibGUsIHRocm93cyAKKyAgICAg
KiBXcml0ZXMgbmFtZSBjaGFycywgaWYgbm90IHJlcHJlc2VudGFibGUsIHRocm93cyAKICAgICAg
Ki8KLSAgICB2b2lkIHdyaXRlUElDaGFycyhjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgIGRhdGEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0aGVMZW5n
dGgpCisgICAgdm9pZAorICAgIHdyaXRlUElDaGFycygKKyAgICAgICAgICAgIGNvbnN0IFhhbGFu
RE9NQ2hhciogICAgIGRhdGEsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICB0
aGVMZW5ndGgpCiAgICAgewogICAgICAgICB3cml0ZShkYXRhLCB0aGVMZW5ndGgpOwogICAgIH0K
IAogICAgIC8qKgotICAgICAqIFdyaXRlcyBuYW1lIGNoYXJzICwgaWYgbm90IHByZXNlbnRhYmxl
LCB0aHJvd3MgCisgICAgICogV3JpdGVzIG5hbWUgY2hhcnMsIGlmIG5vdCByZXByZXNlbnRhYmxl
LCB0aHJvd3MgCiAgICAgICovCi0gICAgdm9pZCB3cml0ZUNvbW1lbnRDaGFycyhjb25zdCBYYWxh
bkRPTUNoYXIqICAgICAgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlw
ZSAgICAgICAgICAgICAgICB0aGVMZW5ndGgpCisgICAgdm9pZAorICAgIHdyaXRlQ29tbWVudENo
YXJzKAorICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyKiAgICAgIGRhdGEsCisgICAgICAg
ICAgICBzaXplX3R5cGUgICAgICAgICAgICAgICAgdGhlTGVuZ3RoKQogICAgIHsKICAgICAgICAg
d3JpdGUoZGF0YSwgdGhlTGVuZ3RoKTsKICAgICB9CkluZGV4OiBzcmMveGFsYW5jL1hNTFN1cHBv
cnQvRm9ybWF0dGVyVG9YTUwuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWE1MU3VwcG9y
dC9Gb3JtYXR0ZXJUb1hNTC5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvWE1M
U3VwcG9ydC9Gb3JtYXR0ZXJUb1hNTC5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMiArMTQ2
LDEyIEBACiAgICAgdmlydHVhbCB2b2lkCiAgICAgY2hhcmFjdGVycygKICAgICAgICAgICAgIGNv
bnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
IGxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgICAgIGxlbmd0aCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQKICAgICBjaGFyYWN0ZXJzUmF3KAogICAgICAgICAgICAgY29uc3QgWE1M
Q2gqIGNvbnN0ICBjaGFycywKLSAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAgbGVuZ3Ro
KTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSAgICAgbGVuZ3RoKTsKIAogICAgIHZpcnR1
YWwgdm9pZAogICAgIGVudGl0eVJlZmVyZW5jZShjb25zdCBYTUxDaCogY29uc3QgIG5hbWUpOwpA
QCAtMTU5LDcgKzE1OSw3IEBACiAgICAgdmlydHVhbCB2b2lkCiAgICAgaWdub3JhYmxlV2hpdGVz
cGFjZSgKICAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2hhcnMsCi0gICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgIGxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBzaXplX3R5
cGUgICAgIGxlbmd0aCk7CiAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBwcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oCkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBjZGF0YSgK
ICAgICAgICAgICAgIGNvbnN0IFhNTENoKiBjb25zdCAgY2gsCi0gICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgIGxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgICAgIGxl
bmd0aCk7CiAKICAgICB2aXJ0dWFsIFdyaXRlcioKICAgICBnZXRXcml0ZXIoKSBjb25zdDsKQEAg
LTI5NCw4ICsyOTQsOCBAQAogCiAgICAgdHlwZWRlZiB2b2lkIChGb3JtYXR0ZXJUb1hNTDo6KkFj
Y3VtQXJyYXlGdW5jdGlvblR5cGUpKAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWGFs
YW5ET01DaGFyW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6
ZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3R5cGUpOwogCiAgICAgdHlwZWRlZiB2b2lkIChGb3JtYXR0ZXJUb1hNTDo6
KkZsdXNoRnVuY3Rpb25UeXBlKSgpOwogCkBAIC0zNzQsOSArMzc0LDkgQEAKICAgICAgKi8KICAg
ICB2b2lkCiAgICAgYWNjdW1OYW1lKAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICAg
ICAgICAgIGNoYXJzW10sCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAg
c3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKQor
ICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICBjaGFyc1tdLAorICAgICAgICAgICAgc2l6
ZV90eXBlICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAg
bGVuZ3RoKQogICAgIHsKICAgICAgICAgYXNzZXJ0KG1fYWNjdW1OYW1lQXJyYXlGdW5jdGlvbiAh
PSAwKTsKIApAQCAtMzkyLDkgKzM5Miw5IEBACiAgICAgICovCiAgICAgdm9pZAogICAgIGFjY3Vt
Q29udGVudCgKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgICAgICAgICBjaGFyc1td
LAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIHN0YXJ0LAotICAgICAg
ICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSAgIGxlbmd0aCkKKyAgICAgICAgICAgIGNv
bnN0IFhhbGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAg
ICAgc3RhcnQsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIGxlbmd0aCkKICAgICB7
CiAgICAgICAgIGFzc2VydChtX2FjY3VtQ29udGVudEFycmF5RnVuY3Rpb24gIT0gMCk7CiAKQEAg
LTQzNCwxMyArNDM0LDEzIEBACiAgICAgLyoqCiAgICAgICogRXNjYXBlIGFuZCBhY2N1bSBhIGNo
YXJhY3Rlci4KICAgICAgKi8KLSAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlCisgICAgc2l6
ZV90eXBlCiAgICAgYWNjdW1EZWZhdWx0RXNjYXBlKAotICAgICAgICAgICAgWGFsYW5ET01DaGFy
ICAgICAgICAgICAgICAgIGNoLAotICAgICAgICAgICAgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlw
ZSAgIGksCi0gICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgY2hhcnNbXSwK
LSAgICAgICAgICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBsZW4sCi0gICAgICAgICAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgZXNjTEYpOworICAgICAgICAgICAgWGFsYW5E
T01DaGFyICAgICAgICBjaCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgaSwKKyAg
ICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVf
dHlwZSAgICAgICAgICAgbGVuLAorICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICBlc2NM
Rik7CiAKICAgICAvKioKICAgICAgKiBIYW5kbGUgb25lIG9mIHRoZSBkZWZhdWx0IGVudGl0aWVz
LCByZXR1cm4gZmFsc2UgaWYgaXQgCkBAIC01MTMsMTAgKzUxMywxMCBAQAogICAgICAqLwogICAg
IHZpcnR1YWwgdm9pZAogICAgIHdyaXRlTm9ybWFsaXplZENoYXJzKAotICAgICAgICAgICAgY29u
c3QgWGFsYW5ET01DaGFyICAgICAgICAgIGNoW10sCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmlu
Zzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90
eXBlICAgbGVuZ3RoLAotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGlz
Q0RhdGEpOworICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICBjaFtdLAorICAgICAgICAg
ICAgc2l6ZV90eXBlICAgICAgICAgICBzdGFydCwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAg
ICAgICAgbGVuZ3RoLAorICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICBpc0NEYXRhKTsK
IAogICAgIC8qKgogICAgICAqIFdyaXRlIGEgbnVtYmVyIGludG8gdGhlIGJ1ZmZlciBhcyBhbiBl
bnRpdHkKQEAgLTUzNCw4ICs1MzQsOCBAQAogICAgICAqLwogICAgIHZpcnR1YWwgdm9pZAogICAg
IHdyaXRlQXR0clN0cmluZygKLSAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgICAg
ICB0aGVTdHJpbmcsCi0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgdGhl
U3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NQ2hhciogICAgIHRoZVN0
cmluZywKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgICAgIHRoZVN0cmluZ0xlbmd0
aCk7CiAKICAgICAvKioKICAgICAgKiBXcml0ZSB0aGUgZGF0YSBmb3IgYSBjb21tZW50CkBAIC04
NTMsOSArODUzLDkgQEAKICAgICAgKi8KICAgICB2b2lkCiAgICAgYWNjdW1OYW1lQXJyYXkoCi0g
ICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIgICAgICAgICAgY2hhcnNbXSwKLSAgICAgICAg
ICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICBzdGFydCwKLSAgICAgICAgICAgIFhhbGFu
RE9NU3RyaW5nOjpzaXplX3R5cGUgICBsZW5ndGgpOworICAgICAgICAgICAgY29uc3QgWGFsYW5E
T01DaGFyICBjaGFyc1tdLAorICAgICAgICAgICAgc2l6ZV90eXBlICAgICAgICAgICBzdGFydCwK
KyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgbGVuZ3RoKTsKIAogICAgIC8qKgogICAg
ICAqIEFwcGVuZCBhbiBhcnJheSBvZiB3aWRlIGNoYXJhY3RlciB0byB0aGUgYnVmZmVyLgpAQCAt
ODY4LDkgKzg2OCw5IEBACiAgICAgICovCiAgICAgdm9pZAogICAgIGFjY3VtQ29udGVudEFycmF5
KAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgIGNoYXJzW10sCi0gICAg
ICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0IFhh
bGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgc3Rh
cnQsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIGxlbmd0aCk7CiAKICAgICAvKioK
ICAgICAgKiBBcHBlbmQgYW4gYXJyYXkgb2Ygd2lkZSBjaGFyYWN0ZXIgdG8gdGhlIGJ1ZmZlci4K
QEAgLTg4Myw5ICs4ODMsOSBAQAogICAgICAqLwogICAgIHZvaWQKICAgICBhY2N1bUFycmF5VVRG
KAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgIGNoYXJzW10sCi0gICAg
ICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAgICAgICBY
YWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0IFhh
bGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAgICAgc3Rh
cnQsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIGxlbmd0aCk7CiAKICAgICAvKioK
ICAgICAgKiBBcHBlbmQgYW4gYXJyYXkgb2Ygd2lkZSBjaGFyYWN0ZXIgdG8gdGhlIG91dHB1dC4K
QEAgLTg5OCw5ICs4OTgsOSBAQAogICAgICAqLwogICAgIHZvaWQKICAgICBhY2N1bUFycmF5VVRG
RGlyZWN0KAotICAgICAgICAgICAgY29uc3QgWGFsYW5ET01DaGFyICAgICAgICAgIGNoYXJzW10s
Ci0gICAgICAgICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgc3RhcnQsCi0gICAgICAg
ICAgICBYYWxhbkRPTVN0cmluZzo6c2l6ZV90eXBlICAgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNv
bnN0IFhhbGFuRE9NQ2hhciAgY2hhcnNbXSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAgICAgICAg
ICAgc3RhcnQsCisgICAgICAgICAgICBzaXplX3R5cGUgICAgICAgICAgIGxlbmd0aCk7CiAKICAg
ICAvKioKICAgICAgKiBBcHBlbmQgYSBzdHJpbmcgdG8gdGhlIGJ1ZmZlci4KQEAgLTk3NCw4ICs5
NzQsOCBAQAogICAgICAqLwogICAgIHZvaWQKICAgICBhY2N1bU5vcm1hbGl6ZWRQSURhdGEoCi0g
ICAgICAgICAgICBjb25zdCBYYWxhbkRPTUNoYXIqICAgICAgICAgdGhlRGF0YSwKLSAgICAgICAg
ICAgIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUgICB0aGVMZW5ndGgpOworICAgICAgICAgICAg
Y29uc3QgWGFsYW5ET01DaGFyKiAgICAgdGhlRGF0YSwKKyAgICAgICAgICAgIHNpemVfdHlwZSAg
ICAgICAgICAgICAgIHRoZUxlbmd0aCk7CiAKIAogICAgIC8vIERhdGEgbWVtYmVycy4uLgpAQCAt
MTAxOCw3ICsxMDE4LDcgQEAKICAgICAgKi8KICAgICBjb25zdCBYYWxhbkRPTVN0cmluZyAgICBt
X2F0dHJTcGVjaWFsQ2hhcnM7CiAKLSAgICB0eXBlZGVmIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5
cGUgICBzaXplX3R5cGU7CisgICAgLy90eXBlZGVmIFhhbGFuRE9NU3RyaW5nOjpzaXplX3R5cGUg
ICBzaXplX3R5cGU7CiAKICAgICAvKioKICAgICAgKiBUaGUgc3RyaW5nICI8IURPQ1RZUEUgIi4K
SW5kZXg6IHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9OTFNIYW5kbGVyLmhwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvTkxTSGFuZGxlci5ocHAJKHJldmlz
aW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9OTFNIYW5kbGVyLmhw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTUgQEAKICNpbmNsdWRlICJJQ1VSZXNIYW5k
bGVyLmhwcCIKIAogCisKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4KKworCisKIFhFUkNFU19D
UFBfTkFNRVNQQUNFX1VTRQogCisKKwogY2xhc3MgTkxTSGFuZGxlciA6IHB1YmxpYyBJQ1VSZXNI
YW5kbGVyIAogewogcHVibGljOgpAQCAtNzIsNiArNzksOCBAQAogCiAKIAotI2VuZGlmICAvL05M
U0hBTkRMRVJfTVNHQ1JFQVRPUl8xMzU3OTI0NjgwCitYQUxBTl9DUFBfTkFNRVNQQUNFX0VORAog
CiAKKworI2VuZGlmICAvL05MU0hBTkRMRVJfTVNHQ1JFQVRPUl8xMzU3OTI0NjgwCkluZGV4OiBz
cmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvSW5NZW1IYW5kbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvSW5NZW1IYW5kbGVyLmNwcAkocmV2aXNpb24g
NzA2MTI5KQorKysgc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL0luTWVtSGFuZGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDExIEBACiAjaW5jbHVkZSAiSW5NZW1EYXRhLmhw
cCIKIAogCisKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4KKworCisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyAgQ29uc3RydWN0b3JzCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjgsNyArNzMsNyBA
QAogCiAKIHZvaWQgSW5NZW1IYW5kbGVyOjpjaGFyYWN0ZXJzKAljb25zdCAgIFhNTENoKiBjb25z
dCAgICBjaGFycwotCQkJCQkJLCBjb25zdCB1bnNpZ25lZCBpbnQgICAgbGVuZ3RoKQorCQkJCQkJ
LCBjb25zdCBYYWxhblNpemVfdCAgICBsZW5ndGgpCiB7CiAKIAlpZiAoIG1fc3RhcnRDb2xsZWN0
aW5nQ2hhcmFjdGVycyA9PSB0cnVlICkKQEAgLTk5LDE1ICsxMDQsMTUgQEAKIAogfQogCi12b2lk
IEluTWVtSGFuZGxlcjo6ZW5kRWxlbWVudChjb25zdCBYTUxDaCogY29uc3QgLAotCQkJCQljb25z
dCBYTUxDaCogY29uc3QgbG9jYWxuYW1lLAotCQkJCQljb25zdCBYTUxDaCogY29uc3QgKQordm9p
ZCBJbk1lbUhhbmRsZXI6OmVuZEVsZW1lbnQoY29uc3QgWE1MQ2gqIGNvbnN0IC8qIHVyaSAqLywK
KwkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0IC8qIGxvY2FsbmFtZSAqLywKKwkJCQkJY29uc3QgWE1M
Q2gqIGNvbnN0IHFuYW1lKQogewogCWlmICggbV9zdGFydENvbGxlY3RpbmdDaGFyYWN0ZXJzID09
IGZhbHNlKQogCQlyZXR1cm47CiAKIAotCWlmKCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcobG9j
YWxuYW1lLHNfdGFyZ2V0WE1MQ2gpKQorCWlmKCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5h
bWUsc190YXJnZXRYTUxDaCkpCiAJewogCQltX3N0YXJ0Q29sbGVjdGluZ0NoYXJhY3RlcnMgPSBm
YWxzZTsKIApAQCAtMTIxLDEzICsxMjYsMTMgQEAKIAkJCQkJCQkJY29uc3QgICBBdHRyaWJ1dGVz
JgkJYXR0cmlidXRlcykKIHsKIAkKLQlpZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKGxvY2Fs
bmFtZSxzX3RyYW5zVW5pdFhNTENoKSkKKwlpZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKHFu
YW1lLHNfdHJhbnNVbml0WE1MQ2gpKQogCXsKIAkJLy8gdGhpcyBpcyBhbiBlbGVtZW50ZSwgU0FY
MkhhbmRsZXIgY2xhc3MgaXMgcmVzcG9uc2libGUgdG8gaGFuZGxlOgogCQkvLyBjcmVhdGluZyBJ
bmRleCBmaWxlLCBjb21tb20gZm9yIGFsbCBsb2NhbGl6YXRpb24gc3R5bGVzCiAJCVNBWDJIYW5k
bGVyOjpzdGFydEVsZW1lbnQodXJpLCBsb2NhbG5hbWUsIHFuYW1lLCBhdHRyaWJ1dGVzKTsKIAl9
Ci0JZWxzZSBpZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKGxvY2FsbmFtZSxzX3RhcmdldFhN
TENoKSkKKwllbHNlIGlmKCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5hbWUsc190YXJnZXRY
TUxDaCkpCiAJewogCiAJCQpAQCAtMjAzLDMgKzIwOCw3IEBACiAJcHJpbnRUb0RhdGFGaWxlKCBz
ekVuZERhdGFGaWxlICk7CQogCiB9CisKKworCitYQUxBTl9DUFBfTkFNRVNQQUNFX0VORApJbmRl
eDogc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL01zZ0NyZWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Nc2dDcmVhdG9yLmNwcAkocmV2aXNpb24g
NzA2MTI5KQorKysgc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL01zZ0NyZWF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDkgQEAKIAlfQ3J0U2V0UmVwb3J0TW9kZShfQ1JU
X1dBUk4sIF9DUlREQkdfTU9ERV9GSUxFKTsKIAlfQ3J0U2V0UmVwb3J0RmlsZShfQ1JUX1dBUk4s
IF9DUlREQkdfRklMRV9TVERFUlIpOwogI2VuZGlmCi0gICAgCisKKyAgICBYQUxBTl9DUFBfTkFN
RVNQQUNFX1VTRQorCiAJQ21kTGluZVBhcmFtcwl0aGVQYXJhbXM7CiAKIAlpbnQgaVJldHVyblZh
bHVlID0gMDsKSW5kZXg6IHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Jbk1lbUhhbmRsZXIu
aHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Jbk1lbUhhbmRs
ZXIuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3Iv
SW5NZW1IYW5kbGVyLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTQgQEAKICNpbmNs
dWRlICJTQVgySGFuZGxlci5ocHAiCiAKIAorCitYQUxBTl9DUFBfTkFNRVNQQUNFX0JFR0lOCisK
KworCiBYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKIAorCiBjbGFzcyBJbk1lbUhhbmRsZXIgOiBw
dWJsaWMgU0FYMkhhbmRsZXIKIHsKIHB1YmxpYzoKQEAgLTU0LDcgKzYwLDcgQEAKIAogCXZpcnR1
YWwgdm9pZCAKIAljaGFyYWN0ZXJzKAljb25zdCAgIFhNTENoKiBjb25zdCAgICBjaGFycwotCQkJ
CQkJLCBjb25zdCB1bnNpZ25lZCBpbnQgICAgbGVuZ3RoKTsKKwkJCQkJCSwgY29uc3QgWGFsYW5T
aXplX3QgICAgbGVuZ3RoKTsKIAogCiAKQEAgLTk2LDQgKzEwMiwxMCBAQAogCiB9OwogCisKKwor
WEFMQU5fQ1BQX05BTUVTUEFDRV9FTkQKKworCisKICNlbmRpZiAvLy8gSU5NRU1IQU5ETEVSX01T
R0NSRUFUT1JfMTM1NzkyNDY4MApJbmRleDogc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL1NB
WDJIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3Iv
U0FYMkhhbmRsZXIuY3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1V0aWxzL01z
Z0NyZWF0b3IvU0FYMkhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIg
QEAKICNpbmNsdWRlICJNc2dDcmVhdG9yLmhwcCIKIAogCitYQUxBTl9DUFBfTkFNRVNQQUNFX0JF
R0lOCiAKKwogc3RhdGljIGNvbnN0IGNoYXIqIElOREVYX0ZJTEVfTkFNRT0iTG9jYWxNc2dJbmRl
eC5ocHAiOwogCiAKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyAgU0FYMkhhbmRsZXI6IENv
bnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05Miwx
MiArOTMsMTIgQEAKIAogCiAKLXZvaWQgU0FYMkhhbmRsZXI6OnN0YXJ0RWxlbWVudChjb25zdCAg
IFhNTENoKiBjb25zdCAgICAsCi0JCQkJCQkJCQljb25zdCAgIFhNTENoKiBjb25zdCAgICBsb2Nh
bG5hbWUsCi0JCQkJCQkJCQljb25zdCAgIFhNTENoKiBjb25zdCAgICAsCit2b2lkIFNBWDJIYW5k
bGVyOjpzdGFydEVsZW1lbnQoY29uc3QgICBYTUxDaCogY29uc3QgICAgLyogdXJpICovLAorCQkJ
CQkJCQkJY29uc3QgICBYTUxDaCogY29uc3QgICAgLyogbG9jYWxuYW1lICovLAorCQkJCQkJCQkJ
Y29uc3QgICBYTUxDaCogY29uc3QgICAgcW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCAgIEF0dHJpYnV0ZXMmCQlhdHRyaWJ1dGVzKQogewotCWlmKCFYTUxT
dHJpbmc6OmNvbXBhcmVTdHJpbmcobG9jYWxuYW1lLHNfdHJhbnNVbml0WE1MQ2gpKQorCWlmKCFY
TUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5hbWUsc190cmFuc1VuaXRYTUxDaCkpCiAJewogCQl1
bnNpZ25lZCBpbnQgbGVuID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsKIAkJCkBAIC0xOTIsMyAr
MTkzLDUgQEAKIH0KIAogCisKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfRU5ECkluZGV4OiBzcmMveGFs
YW5jL1V0aWxzL01zZ0NyZWF0b3IvU0FYMkhhbmRsZXIuaHBwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94
YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9TQVgySGFuZGxlci5ocHAJKHJldmlzaW9uIDcwNjEyOSkK
KysrIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9TQVgySGFuZGxlci5ocHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDEwIEBACiAjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURl
ZnMuaHBwPgogCiAKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4KKworCisKIFhFUkNFU19DUFBf
TkFNRVNQQUNFX1VTRQogCiAKQEAgLTIxMCw2ICsyMTQsOSBAQAogfTsKIAogCi0jZW5kaWYgLy9T
QVgySEFORExFUl9NU0dDUkVBVE9SXzEzNTc5MjQ2ODAKIAorWEFMQU5fQ1BQX05BTUVTUEFDRV9F
TkQKIAorCisKKyNlbmRpZiAvL1NBWDJIQU5ETEVSX01TR0NSRUFUT1JfMTM1NzkyNDY4MApJbmRl
eDogc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL01zZ0ZpbGVPdXRwdXRTdHJlYW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Nc2dGaWxlT3V0cHV0U3Ry
ZWFtLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9y
L01zZ0ZpbGVPdXRwdXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw5IEBA
CiAjaW5jbHVkZSA8Y3N0ZGlvPgogCiAKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4KKworCiBz
dGF0aWMgIFhhbGFuRmlsZU91dHB1dFN0cmVhbTo6SGFuZGxlVHlwZQogb3BlbkZpbGUoY29uc3Qg
Y2hhcioJdGhlRmlsZU5hbWUpCiB7CkBAIC0xMDUsNyArMTA4LDcgQEAKIHZvaWQKIFhhbGFuRmls
ZU91dHB1dFN0cmVhbTo6d3JpdGVEYXRhKAogCQkJY29uc3QgY2hhcioJCXRoZUJ1ZmZlciwKLQkJ
CXVuc2lnbmVkIGludAkJdGhlQnVmZmVyTGVuZ3RoKQorCQkJWGFsYW5TaXplX3QJCXRoZUJ1ZmZl
ckxlbmd0aCkKIHsKICNpZiBkZWZpbmVkKFdJTjMyKQogCURXT1JECQkJdGhlQnl0ZXNXcml0dGVu
OwpAQCAtMjA0LDEzICsyMDcsMTMgQEAKIH0KIAogCi12b2lkIAlYYWxhbkZpbGVPdXRwdXRTdHJl
YW06OndyaXRlKGNvbnN0IFVURjE2Q2gqCXRoZVN0cmluZywgdW5zaWduZWQgaW50CQl0aGVMZW5n
dGgpCit2b2lkIAlYYWxhbkZpbGVPdXRwdXRTdHJlYW06OndyaXRlKGNvbnN0IFVURjE2Q2gqCXRo
ZVN0cmluZywgWGFsYW5TaXplX3QJCXRoZUxlbmd0aCkKIHsKIAlhc3NlcnQgKCB0aGVTdHJpbmcg
IT0gMCApOwogCXdyaXRlRGF0YSgoY29uc3QgY2hhciopdGhlU3RyaW5nLHRoZUxlbmd0aCAqIHNp
emVvZihVVEYxNkNoKSApOwogfQogCi12b2lkIAlYYWxhbkZpbGVPdXRwdXRTdHJlYW06OndyaXRl
KGNvbnN0IGNoYXIqCXRoZVN0cmluZywgdW5zaWduZWQgaW50CQl0aGVMZW5ndGgpCit2b2lkIAlY
YWxhbkZpbGVPdXRwdXRTdHJlYW06OndyaXRlKGNvbnN0IGNoYXIqCXRoZVN0cmluZywgWGFsYW5T
aXplX3QJCXRoZUxlbmd0aCkKIHsKIAlhc3NlcnQgKCB0aGVTdHJpbmcgIT0gMCApOwogCkBAIC0y
MjEsNyArMjI0LDcgQEAKIAlYTUxTdHJpbmc6OnJlbGVhc2UoJnRoZVVURlN0cmluZyk7CiB9CiAK
LXZvaWQgWGFsYW5GaWxlT3V0cHV0U3RyZWFtOjp3cml0ZUFzQVNDSUkoY29uc3QgVVRGMTZDaCoJ
dGhlU3RyaW5nLCB1bnNpZ25lZCBpbnQJCXRoZUxlbmd0cykKK3ZvaWQgWGFsYW5GaWxlT3V0cHV0
U3RyZWFtOjp3cml0ZUFzQVNDSUkoY29uc3QgVVRGMTZDaCoJdGhlU3RyaW5nLCBYYWxhblNpemVf
dAkJdGhlTGVuZ3RzKQogewogCWNoYXIqIHN6U3RyaW5nID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUo
dGhlU3RyaW5nKTsKIAl3cml0ZURhdGEoIHN6U3RyaW5nLCB0aGVMZW5ndHMgKTsKQEAgLTIyOSw3
ICsyMzIsNyBAQAogCiB9CiAKLXZvaWQgWGFsYW5GaWxlT3V0cHV0U3RyZWFtOjp3cml0ZUFzQVND
SUkoY29uc3QgY2hhcioJdGhlU3RyaW5nLCB1bnNpZ25lZCBpbnQJCXRoZUxlbmd0cykKK3ZvaWQg
WGFsYW5GaWxlT3V0cHV0U3RyZWFtOjp3cml0ZUFzQVNDSUkoY29uc3QgY2hhcioJdGhlU3RyaW5n
LCBYYWxhblNpemVfdAkJdGhlTGVuZ3RzKQogewogCXdyaXRlRGF0YSggdGhlU3RyaW5nLCB0aGVM
ZW5ndHMgKTsKIH0KQEAgLTI0NCwzICsyNDcsNyBAQAogewogCXdyaXRlKHNfVVRGMTZCeXRlT3Jk
ZXJNYXJrLDEpOwogfQorCisKKworWEFMQU5fQ1BQX05BTUVTUEFDRV9FTkQKSW5kZXg6IHNyYy94
YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Nc2dGaWxlT3V0cHV0U3RyZWFtLmhwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvTXNnRmlsZU91dHB1dFN0cmVhbS5ocHAJ
KHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9Nc2dGaWxl
T3V0cHV0U3RyZWFtLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogI2RlZmlu
ZSBYQUxBTk9VVFBVVEZJTEVfMTM1NzkyNDY4MAogCiAjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hN
TFVuaURlZnMuaHBwPgorI2luY2x1ZGUgInhhbGFuYy9JbmNsdWRlL1BsYXRmb3JtRGVmaW5pdGlv
bnMuaHBwIgogCiAKICNpZiBkZWZpbmVkKFdJTjMyKQpAQCAtMzIsMTAgKzMzLDExIEBACiAKIAog
Ci1YRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4KIAog
CiAKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQogCiAvLyBDbGFzcyByZXNwb25jaWJsZSBmb3Ig
cHJpbnRpbmcgaW50byBmaWxlIHdpdGggVVRGMTYKIApAQCAtMTExLDE1ICsxMTMsMTUgQEAKIAog
CiAJdm9pZCAKLQl3cml0ZShjb25zdCBVVEYxNkNoKgl0aGVTdHJpbmcsIHVuc2lnbmVkIGludAkJ
dGhlTGVuZ3RoKTsKKwl3cml0ZShjb25zdCBVVEYxNkNoKgl0aGVTdHJpbmcsIFhhbGFuU2l6ZV90
CQl0aGVMZW5ndGgpOwogCXZvaWQgCi0Jd3JpdGUoY29uc3QgY2hhcioJdGhlU3RyaW5nLCB1bnNp
Z25lZCBpbnQJCXRoZUxlbmd0aCk7CisJd3JpdGUoY29uc3QgY2hhcioJdGhlU3RyaW5nLCBYYWxh
blNpemVfdAkJdGhlTGVuZ3RoKTsKIAogCXZvaWQgCi0Jd3JpdGVBc0FTQ0lJKGNvbnN0IGNoYXIq
CXRoZVN0cmluZywgdW5zaWduZWQgaW50CQl0aGVMZW5ndHMpOworCXdyaXRlQXNBU0NJSShjb25z
dCBjaGFyKgl0aGVTdHJpbmcsIFhhbGFuU2l6ZV90CQl0aGVMZW5ndHMpOwogCiAJdm9pZAotCXdy
aXRlQXNBU0NJSShjb25zdCBVVEYxNkNoKgl0aGVTdHJpbmcsIHVuc2lnbmVkIGludAkJdGhlTGVu
Z3RzKTsKKwl3cml0ZUFzQVNDSUkoY29uc3QgVVRGMTZDaCoJdGhlU3RyaW5nLCBYYWxhblNpemVf
dAkJdGhlTGVuZ3RzKTsKIAl2b2lkCiAJd3JpdGVVVEZwcmVmaXgoKTsKIHByb3RlY3RlZDoKQEAg
LTEyNyw3ICsxMjksNyBAQAogCXZvaWQKIAl3cml0ZURhdGEoCiAJCQljb25zdCBjaGFyKgkJdGhl
QnVmZmVyLAotCQkJdW5zaWduZWQgaW50CXRoZUJ1ZmZlckxlbmd0aCk7CisJCQlYYWxhblNpemVf
dAl0aGVCdWZmZXJMZW5ndGgpOwogCiAJdm9pZAogCWRvRmx1c2goKTsKQEAgLTE1MSw2ICsxNTMs
NyBAQAogfTsKIAogCi0jZW5kaWYgLy9YQUxBTk9VVFBVVEZJTEVfMTM1NzkyNDY4MAorWEFMQU5f
Q1BQX05BTUVTUEFDRV9FTkQKIAogCisjZW5kaWYgLy9YQUxBTk9VVFBVVEZJTEVfMTM1NzkyNDY4
MApJbmRleDogc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL0lDVVJlc0hhbmRsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9JQ1VSZXNIYW5kbGVyLmNw
cAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL0lDVVJl
c0hhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAKIAorWEFM
QU5fQ1BQX05BTUVTUEFDRV9CRUdJTgogCisKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vICBDb25z
dHJ1Y3RvcnMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OCw3ICs2MSw3IEBACiAvLyBjaGFuZ2Ug
dGhhbSB3aXRoIFwiLCBceyBhbmQgXH0KIAogdm9pZCBJQ1VSZXNIYW5kbGVyOjpjaGFyYWN0ZXJz
KAljb25zdCAgIFhNTENoKiBjb25zdCAgICBjaGFycwotCQkJCQkJLCBjb25zdCB1bnNpZ25lZCBp
bnQgICAgbGVuZ3RoKQorCQkJCQkJLCBjb25zdCBYYWxhblNpemVfdCAgICBsZW5ndGgpCiB7CiAK
IAlpZiAoIG1fc3RhcnRDb2xsZWN0aW5nQ2hhcmFjdGVycyA9PSB0cnVlICkKQEAgLTEwMCwxNSAr
MTAzLDE1IEBACiAKIH0KIAotdm9pZCBJQ1VSZXNIYW5kbGVyOjplbmRFbGVtZW50KGNvbnN0IFhN
TENoKiBjb25zdCAsCi0JCQkJCWNvbnN0IFhNTENoKiBjb25zdCBsb2NhbG5hbWUsCi0JCQkJCWNv
bnN0IFhNTENoKiBjb25zdCApCit2b2lkIElDVVJlc0hhbmRsZXI6OmVuZEVsZW1lbnQoY29uc3Qg
WE1MQ2gqIGNvbnN0IC8qIHVyaSAqLywKKwkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0IC8qIGxvY2Fs
bmFtZSAqLywKKwkJCQkJY29uc3QgWE1MQ2gqIGNvbnN0IHFuYW1lKQogewogCWlmICggbV9zdGFy
dENvbGxlY3RpbmdDaGFyYWN0ZXJzID09IGZhbHNlKQogCQlyZXR1cm47CiAKIAotICAgIGlmKCFY
TUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcobG9jYWxuYW1lLHNfdGFyZ2V0WE1MQ2gpKQorICAgIGlm
KCFYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcocW5hbWUsc190YXJnZXRYTUxDaCkpCiAJewogCQlt
X3N0YXJ0Q29sbGVjdGluZ0NoYXJhY3RlcnMgPSBmYWxzZTsKIApAQCAtMTIyLDEzICsxMjUsMTMg
QEAKIAkJCQkJCQkJY29uc3QgICBBdHRyaWJ1dGVzJgkJYXR0cmlidXRlcykKIHsKIAkKLQlpZigh
WE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKGxvY2FsbmFtZSxzX3RyYW5zVW5pdFhNTENoKSkKKwlp
ZighWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKHFuYW1lLHNfdHJhbnNVbml0WE1MQ2gpKQogCXsK
IAkJLy8gdGhpcyBpcyBhbiBlbGVtZW50ZSwgU0FYMkhhbmRsZXIgY2xhc3MgaXMgcmVzcG9uc2li
bGUgdG8gaGFuZGxlOgogCQkvLyBjcmVhdGluZyBJbmRleCBmaWxlLCBjb21tb20gZm9yIGFsbCBs
b2NhbGl6YXRpb24gc3R5bGVzCiAJCVNBWDJIYW5kbGVyOjpzdGFydEVsZW1lbnQodXJpLCBsb2Nh
bG5hbWUsIHFuYW1lLCBhdHRyaWJ1dGVzKTsKIAl9Ci0JZWxzZSBpZighWE1MU3RyaW5nOjpjb21w
YXJlU3RyaW5nKGxvY2FsbmFtZSxzX3RhcmdldFhNTENoKSkKKwllbHNlIGlmKCFYTUxTdHJpbmc6
OmNvbXBhcmVTdHJpbmcocW5hbWUsc190YXJnZXRYTUxDaCkpCiAJewogCQlpZiAoIG1fbG9jYWxl
ICE9IDAgKQogCQl7CkBAIC0xOTYsNCArMTk5LDQgQEAKIH0KIAogCi0KK1hBTEFOX0NQUF9OQU1F
U1BBQ0VfRU5ECkluZGV4OiBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvTkxTSGFuZGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL05MU0hhbmRsZXIu
Y3BwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1V0aWxzL01zZ0NyZWF0b3IvTkxT
SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDExIEBACiAKICNpbmNsdWRl
IDxjc3RkaW8+CiAKKworWEFMQU5fQ1BQX05BTUVTUEFDRV9CRUdJTgorCisKKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vICBDb25zdHJ1Y3RvcnMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00OCw3ICs1
Myw3IEBACiB9CiAKIHZvaWQgTkxTSGFuZGxlcjo6Y2hhcmFjdGVycygJY29uc3QgICBYTUxDaCog
Y29uc3QgICAgY2hhcnMKLQkJCQkJCSwgY29uc3QgdW5zaWduZWQgaW50ICAgIGxlbmd0aCkKKwkJ
CQkJCSwgY29uc3QgWGFsYW5TaXplX3QgICAgbGVuZ3RoKQogewogCiAJaWYgKCBtX3N0YXJ0Q29s
bGVjdGluZ0NoYXJhY3RlcnMgPT0gdHJ1ZSApCkBAIC0xMjgsMyArMTMzLDcgQEAKIAkJbV9mU3Ry
ZWFtLndyaXRlQXNBU0NJSSgiXlxuIiwyKTsKIAl9CiB9CisKKworCitYQUxBTl9DUFBfTkFNRVNQ
QUNFX0VORApJbmRleDogc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9yL0lDVVJlc0hhbmRsZXIu
aHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvVXRpbHMvTXNnQ3JlYXRvci9JQ1VSZXNIYW5k
bGVyLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9VdGlscy9Nc2dDcmVhdG9y
L0lDVVJlc0hhbmRsZXIuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCwxNSBAQAogI2lu
Y2x1ZGUgIlNBWDJIYW5kbGVyLmhwcCIKIAogCisKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfQkVHSU4K
KworCisKIFhFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQogCisKKwogY2xhc3MgSUNVUmVzSGFuZGxl
ciA6IHB1YmxpYyBTQVgySGFuZGxlcgogewogcHVibGljOgpAQCAtODQsNSArOTEsOCBAQAogCW9w
ZXJhdG9yPT0oY29uc3QgSUNVUmVzSGFuZGxlciYpIGNvbnN0OwogfTsKIAorCitYQUxBTl9DUFBf
TkFNRVNQQUNFX0VORAorCisKICNlbmRpZiAvLyBJQ1VSRVNIQU5ETEVSX01TR0NSRUFUT1JfMTM1
NzkyNDY4MAotCkluZGV4OiBzcmMveGFsYW5jL1hhbGFuRE9NL1hhbGFuRE9NU3RyaW5nLmhwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL1hhbGFuRE9NL1hhbGFuRE9NU3RyaW5nLmhwcAkocmV2
aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YYWxhbkRPTS9YYWxhbkRPTVN0cmluZy5ocHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKIAl0eXBlZGVmIFhhbGFuRE9NQ2hhciYJ
CQkJcmVmZXJlbmNlOwogCXR5cGVkZWYgY29uc3QgWGFsYW5ET01DaGFyJgkJCWNvbnN0X3JlZmVy
ZW5jZTsKIAotICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIHNpemVfdHlwZTsKKyAgICB0eXBl
ZGVmIFhhbGFuU2l6ZV90ICAgICBzaXplX3R5cGU7CiAKIAl0eXBlZGVmIFhhbGFuRE9NQ2hhclZl
Y3RvclR5cGU6Oml0ZXJhdG9yCQkJCWl0ZXJhdG9yOwogCXR5cGVkZWYgWGFsYW5ET01DaGFyVmVj
dG9yVHlwZTo6Y29uc3RfaXRlcmF0b3IJCQljb25zdF9pdGVyYXRvcjsKQEAgLTYwLDcgKzYwLDcg
QEAKICNpZiBkZWZpbmVkKFhBTEFOX0lOTElORV9JTklUSUFMSVpBVElPTikKIAlzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlCW5wb3MgPSB+MHU7CiAjZWxzZQotCWVudW0geyBucG9zID0gLTEgfTsKKyAg
ICBlbnVtIHsgbnBvcyA9IH4wdSB9OwogI2VuZGlmCiAKIAlYYWxhbkRPTVN0cmluZyhNZW1vcnlN
YW5hZ2VyVHlwZSYgIHRoZU1hbmFnZXIgWEFMQU5fREVGQVVMVF9DT05TVFJBQ1RPUl9NRU1PUllf
TUdSICk7CkluZGV4OiBzcmMveGFsYW5jL0hhcm5lc3MvWGFsYW5EaWFnbm9zdGljTWVtb3J5TWFu
YWdlci5ocHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9IYXJuZXNzL1hhbGFuRGlhZ25vc3Rp
Y01lbW9yeU1hbmFnZXIuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL0hhcm5l
c3MvWGFsYW5EaWFnbm9zdGljTWVtb3J5TWFuYWdlci5ocHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
LDYgKzk2LDkgQEAKICAgICB2aXJ0dWFsIHZvaWQKICAgICBkZWFsbG9jYXRlKHZvaWQqICAgIHBv
aW50ZXIpOwogCisgICAgdmlydHVhbCBNZW1vcnlNYW5hZ2VyKgorICAgIGdldEV4Y2VwdGlvbk1l
bW9yeU1hbmFnZXIoKTsKKwogICAgIGJvb2wKICAgICBnZXRBc3NlcnRFcnJvcnMoKSBjb25zdAog
ICAgIHsKSW5kZXg6IHNyYy94YWxhbmMvSGFybmVzcy9YYWxhbkRpYWdub3N0aWNNZW1vcnlNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL0hhcm5lc3MvWGFsYW5EaWFnbm9zdGlj
TWVtb3J5TWFuYWdlci5jcHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNyYy94YWxhbmMvSGFybmVz
cy9YYWxhbkRpYWdub3N0aWNNZW1vcnlNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3
LDYgKzE1NywxNCBAQAogCiAKIAorTWVtb3J5TWFuYWdlcioKK1hhbGFuRGlhZ25vc3RpY01lbW9y
eU1hbmFnZXI6OmdldEV4Y2VwdGlvbk1lbW9yeU1hbmFnZXIoKQoreworICAgIHJldHVybiAmbV9t
ZW1vcnlNYW5hZ2VyOworfQorCisKKwogdm9pZAogWGFsYW5EaWFnbm9zdGljTWVtb3J5TWFuYWdl
cjo6ZHVtcFN0YXRpc3RpY3MoCiAgICAgICAgICAgICBTdHJlYW1UeXBlKiAgICAgdGhlU3RyZWFt
LApJbmRleDogc3JjL3hhbGFuYy9YYWxhblNvdXJjZVRyZWUvWGFsYW5Tb3VyY2VUcmVlQ29udGVu
dEhhbmRsZXIuaHBwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94YWxhbmMvWGFsYW5Tb3VyY2VUcmVlL1hh
bGFuU291cmNlVHJlZUNvbnRlbnRIYW5kbGVyLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3Jj
L3hhbGFuYy9YYWxhblNvdXJjZVRyZWUvWGFsYW5Tb3VyY2VUcmVlQ29udGVudEhhbmRsZXIuaHBw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw4IEBACiBwdWJsaWM6CiAKIAl0eXBlZGVmIFhh
bGFuVmVjdG9yPFhhbGFuU291cmNlVHJlZUVsZW1lbnQqPiAJCUVsZW1lbnRTdGFja1R5cGU7Ci0J
dHlwZWRlZiBYYWxhblZlY3RvcjxYYWxhbk5vZGUqPiAJCQkJCQlMYXN0Q2hpbGRTdGFja1R5cGU7
CisJdHlwZWRlZiBYYWxhblZlY3RvcjxYYWxhbk5vZGUqPiAJCQkJCUxhc3RDaGlsZFN0YWNrVHlw
ZTsKKyAgICB0eXBlZGVmIFhhbGFuU2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90eXBlOwogCiAJZW51bSB7IGVEZWZhdWx0U3RhY2tTaXplID0gNTAsIGVEZWZhdWx0
VGV4dEJ1ZmZlclNpemUgPSAxMDAgfTsKIApAQCAtOTQsNyArOTUsNyBAQAogCXZpcnR1YWwgdm9p
ZAogCWNoYXJhY3RlcnMoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMsCi0JCQljb25zdCB1
bnNpZ25lZCBpbnQJbGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKTsKIAog
CXZpcnR1YWwgdm9pZAogCWVuZERvY3VtZW50KCk7CkBAIC0xMDgsNyArMTA5LDcgQEAKIAl2aXJ0
dWFsIHZvaWQKIAlpZ25vcmFibGVXaGl0ZXNwYWNlKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNo
YXJzLAotCQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCk7CisJCQljb25zdCBzaXplX3R5cGUJ
ICAgIGxlbmd0aCk7CiAKIAl2aXJ0dWFsIHZvaWQKIAlwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oCkBA
IC0xNjUsNyArMTY2LDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAljb21tZW50KAogCQkJY29uc3QgWE1M
Q2gqIGNvbnN0CWNoYXJzLAotCQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCk7CisJCQljb25z
dCBzaXplX3R5cGUJICAgIGxlbmd0aCk7CiAKIAl2aXJ0dWFsIHZvaWQKIAllbmRDREFUQSgpOwpA
QCAtMjI1LDggKzIyNiw4IEBACiAKIAl2b2lkCiAJZG9DaGFyYWN0ZXJzKAotCQkJY29uc3QgWE1M
Q2gqCQkJCWNoYXJzLAotCQkJWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZQlsZW5ndGgpOworCQkJ
Y29uc3QgWE1MQ2gqCWNoYXJzLAorCQkJc2l6ZV90eXBlCSAgICBsZW5ndGgpOwogCiAJLy8gRGF0
YSBtZW1iZXJzLi4uCiAKSW5kZXg6IHNyYy94YWxhbmMvWGFsYW5Tb3VyY2VUcmVlL0Zvcm1hdHRl
clRvU291cmNlVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YYWxhblNvdXJjZVRy
ZWUvRm9ybWF0dGVyVG9Tb3VyY2VUcmVlLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hh
bGFuYy9YYWxhblNvdXJjZVRyZWUvRm9ybWF0dGVyVG9Tb3VyY2VUcmVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBACiB2b2lkCiBGb3JtYXR0ZXJUb1NvdXJjZVRyZWU6OmNo
YXJhY3RlcnMoCiAJCQljb25zdCBYTUxDaCogY29uc3QJY2hhcnMsCi0JCQljb25zdCB1bnNpZ25l
ZCBpbnQJbGVuZ3RoKQorCQkJY29uc3Qgc2l6ZV90eXBlCSAgICBsZW5ndGgpCiB7CiAJaWYgKG1f
ZG9jdW1lbnRGcmFnbWVudCAhPSAwKQogCXsKQEAgLTI4Myw3ICsyODMsNyBAQAogdm9pZAogRm9y
bWF0dGVyVG9Tb3VyY2VUcmVlOjpjaGFyYWN0ZXJzUmF3KAogCQljb25zdCBYTUxDaCogY29uc3QJ
Y2hhcnMsCi0JCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpCisJCWNvbnN0IHNpemVfdHlwZQkg
ICAgbGVuZ3RoKQogewogCWFzc2VydChtX2RvY3VtZW50ICE9IDApOwogCkBAIC0zMDYsNyArMzA2
LDcgQEAKIHZvaWQKIEZvcm1hdHRlclRvU291cmNlVHJlZTo6aWdub3JhYmxlV2hpdGVzcGFjZSgK
IAkJCWNvbnN0IFhNTENoKiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5n
dGgpCisJCQljb25zdCBzaXplX3R5cGUJICAgIGxlbmd0aCkKIHsKIAlhc3NlcnQobV9kb2N1bWVu
dCAhPSAwKTsKIApAQCAtMzgxLDcgKzM4MSw3IEBACiB2b2lkCiBGb3JtYXR0ZXJUb1NvdXJjZVRy
ZWU6OmNkYXRhKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CS8qIGNoICovLAotCQkJY29uc3QgdW5z
aWduZWQgaW50IAkvKiBsZW5ndGggKi8pCisJCQljb25zdCBzaXplX3R5cGUgCS8qIGxlbmd0aCAq
LykKIHsKIH0KIApAQCAtNDAyLDggKzQwMiw4IEBACiAKIHZvaWQKIEZvcm1hdHRlclRvU291cmNl
VHJlZTo6ZG9DaGFyYWN0ZXJzKAotCQkJY29uc3QgWE1MQ2gqCQkJCWNoYXJzLAotCQkJWGFsYW5E
T01TdHJpbmc6OnNpemVfdHlwZQlsZW5ndGgpCisJCQljb25zdCBYTUxDaCoJY2hhcnMsCisJCQlz
aXplX3R5cGUJICAgIGxlbmd0aCkKIHsKIAlpZiAobV9jdXJyZW50RWxlbWVudCAhPSAwKQogCXsK
SW5kZXg6IHNyYy94YWxhbmMvWGFsYW5Tb3VyY2VUcmVlL0Zvcm1hdHRlclRvU291cmNlVHJlZS5o
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFuYy9YYWxhblNvdXJjZVRyZWUvRm9ybWF0dGVyVG9T
b3VyY2VUcmVlLmhwcAkocmV2aXNpb24gNzA2MTI5KQorKysgc3JjL3hhbGFuYy9YYWxhblNvdXJj
ZVRyZWUvRm9ybWF0dGVyVG9Tb3VyY2VUcmVlLmhwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcg
KzE0MSw3IEBACiAJdmlydHVhbCB2b2lkCiAJY2hhcmFjdGVyc1JhdygKIAkJCWNvbnN0IFhNTENo
KiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJY29uc3Qg
c2l6ZV90eXBlCSAgICBsZW5ndGgpOwogCiAJdmlydHVhbCB2b2lkCiAJY29tbWVudChjb25zdCBY
TUxDaCogY29uc3QJZGF0YSk7CkBAIC0xNDksNyArMTQ5LDcgQEAKIAl2aXJ0dWFsIHZvaWQKIAlj
ZGF0YSgKIAkJCWNvbnN0IFhNTENoKiBjb25zdAljaCwKLQkJCWNvbnN0IHVuc2lnbmVkIGludCAJ
bGVuZ3RoKTsKKwkJCWNvbnN0IHNpemVfdHlwZSAJbGVuZ3RoKTsKIAogCXZpcnR1YWwgdm9pZAog
CWVudGl0eVJlZmVyZW5jZShjb25zdCBYTUxDaCogY29uc3QJbmFtZSk7CkBAIC0xNzQsMTIgKzE3
NCwxMiBAQAogCXZpcnR1YWwgdm9pZAogCWNoYXJhY3RlcnMoCiAJCQkJY29uc3QgWE1MQ2gqIGNv
bnN0CWNoYXJzLAotCQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpOworCQkJCWNvbnN0IHNp
emVfdHlwZQkgICAgbGVuZ3RoKTsKIAogCXZpcnR1YWwgdm9pZAogCWlnbm9yYWJsZVdoaXRlc3Bh
Y2UoCiAJCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJCWNvbnN0IHVuc2lnbmVkIGlu
dAlsZW5ndGgpOworCQkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVuZ3RoKTsKIAogCXZpcnR1YWwg
dm9pZAogCXByb2Nlc3NpbmdJbnN0cnVjdGlvbigKQEAgLTIwMyw4ICsyMDMsOCBAQAogCiAJdm9p
ZAogCWRvQ2hhcmFjdGVycygKLQkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJCQljaGFycywKLQkJCVhh
bGFuRE9NU3RyaW5nOjpzaXplX3R5cGUJbGVuZ3RoKTsKKwkJCWNvbnN0IFhhbGFuRE9NQ2hhcioJ
CWNoYXJzLAorCQkJc2l6ZV90eXBlCSAgICAgICAgICAgIGxlbmd0aCk7CiAKIAl2b2lkCiAJZG9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24oCkluZGV4OiBzcmMveGFsYW5jL1hhbGFuU291cmNlVHJlZS9Y
YWxhblNvdXJjZVRyZWVDb250ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3hhbGFu
Yy9YYWxhblNvdXJjZVRyZWUvWGFsYW5Tb3VyY2VUcmVlQ29udGVudEhhbmRsZXIuY3BwCShyZXZp
c2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL1hhbGFuU291cmNlVHJlZS9YYWxhblNvdXJjZVRy
ZWVDb250ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAKIHZv
aWQKIFhhbGFuU291cmNlVHJlZUNvbnRlbnRIYW5kbGVyOjpjaGFyYWN0ZXJzKAogCQkJY29uc3QJ
WE1MQ2gqIGNvbnN0CWNoYXJzLAotCQkJY29uc3QgdW5zaWduZWQgaW50CQlsZW5ndGgpCisJCQlj
b25zdCBzaXplX3R5cGUJCSAgICBsZW5ndGgpCiB7CiAJYXNzZXJ0KG1faW5EVEQgPT0gZmFsc2Up
OwogCkBAIC0xOTQsNyArMTk0LDcgQEAKIHZvaWQKIFhhbGFuU291cmNlVHJlZUNvbnRlbnRIYW5k
bGVyOjppZ25vcmFibGVXaGl0ZXNwYWNlKAogCQkJY29uc3QgWE1MQ2gqIGNvbnN0CWNoYXJzLAot
CQkJY29uc3QgdW5zaWduZWQgaW50CWxlbmd0aCkKKwkJCWNvbnN0IHNpemVfdHlwZQkgICAgbGVu
Z3RoKQogewogCWFzc2VydChtX2luRFREID09IGZhbHNlKTsKIApAQCAtMzcwLDcgKzM3MCw3IEBA
CiB2b2lkCiBYYWxhblNvdXJjZVRyZWVDb250ZW50SGFuZGxlcjo6Y29tbWVudCgKIAkJCWNvbnN0
IFhNTENoKiBjb25zdAljaGFycywKLQkJCWNvbnN0IHVuc2lnbmVkIGludAlsZW5ndGgpCisJCQlj
b25zdCBzaXplX3R5cGUJICAgIGxlbmd0aCkKIHsKIAlhc3NlcnQobV9kb2N1bWVudCAhPSAwKTsK
IApAQCAtNDk5LDggKzQ5OSw4IEBACiAKIHZvaWQKIFhhbGFuU291cmNlVHJlZUNvbnRlbnRIYW5k
bGVyOjpkb0NoYXJhY3RlcnMoCi0JCQljb25zdCBYTUxDaCoJCQkJY2hhcnMsCi0JCQlYYWxhbkRP
TVN0cmluZzo6c2l6ZV90eXBlCWxlbmd0aCkKKwkJCWNvbnN0IFhNTENoKgljaGFycywKKwkJCXNp
emVfdHlwZQkgICAgbGVuZ3RoKQogewogCWFzc2VydChtX2luRFREID09IGZhbHNlKTsKIApJbmRl
eDogc3JjL3hhbGFuYy9ET01TdXBwb3J0L0RPTVN1cHBvcnREZWZhdWx0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBzcmMveGFsYW5jL0RPTVN1cHBvcnQvRE9NU3VwcG9ydERlZmF1bHQuY3BwCShyZXZpc2lv
biA3MDYxMjkpCisrKyBzcmMveGFsYW5jL0RPTVN1cHBvcnQvRE9NU3VwcG9ydERlZmF1bHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MCwxOCArOTAsMTQgQEAKIAogCQkJaWYgKHRoZU5vZGUgIT0g
MCAmJiB0aGVOb2RlLT5nZXROb2RlVHlwZSgpID09IFhhbGFuTm9kZTo6RU5USVRZX05PREUpCiAJ
CQl7Ci0JCQkJY29uc3QgWGFsYW5FbnRpdHkqCXRoZUVudGl0eSA9CisJCQkJY29uc3QgWGFsYW5F
bnRpdHkqIGNvbnN0ICAgIHRoZUVudGl0eSA9CiAjaWYgZGVmaW5lZChYQUxBTl9PTERfU1RZTEVf
Q0FTVFMpCiAJCQkJCShjb25zdCBYYWxhbkVudGl0eSopdGhlTm9kZTsKICNlbHNlCiAJCQkJCXN0
YXRpY19jYXN0PGNvbnN0IFhhbGFuRW50aXR5Kj4odGhlTm9kZSk7CiAjZW5kaWYKIAotICAgICAg
ICAgICAgICAgIGNvbnN0IFhhbGFuRE9NU3RyaW5nICAgIHRoZU5vdGF0aW9uTmFtZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlRW50aXR5LT5nZXROb3Rh
dGlvbk5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhlTWVtb3J5TWFuYWdlcik7Ci0KLQkJCQlpZihpc0VtcHR5KHRoZU5vdGF0aW9uTmFtZSkgPT0g
ZmFsc2UpIC8vIHRoZW4gaXQncyB1bnBhcnNlZAorCQkJCWlmKGxlbmd0aCh0aGVFbnRpdHktPmdl
dE5vdGF0aW9uTmFtZSgpKSAhPSAwKSAvLyB0aGVuIGl0J3MgdW5wYXJzZWQKIAkJCQl7CiAJCQkJ
CS8vIFRoZSBkcmFmdCBzYXlzOiAiVGhlIFhTTFQgcHJvY2Vzc29yIG1heSB1c2UgdGhlIHB1Ymxp
YwogCQkJCQkvLyBpZGVudGlmaWVyIHRvIGdlbmVyYXRlIGEgVVJJIGZvciB0aGUgZW50aXR5IGlu
c3RlYWQgb2YgdGhlIFVSSQpAQCAtMTE0LDcgKzExMCw3IEBACiAJCQkJCS8vIFNvIEknbSBmYWxs
aW5nIGEgYml0IHNob3J0IGhlcmUuCiAJCQkJCXRoZVVSSSA9IHRoZUVudGl0eS0+Z2V0U3lzdGVt
SWQoKTsKIAotCQkJCQlpZihpc0VtcHR5KHRoZVVSSSkgPT0gdHJ1ZSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYodGhlVVJJLmxlbmd0aCgpID09IDApCiAJCQkJCXsKIAkJCQkJCXRoZVVSSSA9IHRo
ZUVudGl0eS0+Z2V0UHVibGljSWQoKTsKIAkJCQkJfQpJbmRleDogc3JjL3hhbGFuYy9ET01TdXBw
b3J0L0RPTVNlcnZpY2VzLmhwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveGFsYW5jL0RPTVN1cHBvcnQv
RE9NU2VydmljZXMuaHBwCShyZXZpc2lvbiA3MDYxMjkpCisrKyBzcmMveGFsYW5jL0RPTVN1cHBv
cnQvRE9NU2VydmljZXMuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAKIAkJ
YXBwZW5kKGRhdGEsIHRleHQuZ2V0RGF0YSgpKTsKIAl9CiAKLQl0eXBlZGVmIHZvaWQgKEZvcm1h
dHRlckxpc3RlbmVyOjoqTWVtYmVyRnVuY3Rpb25QdHIpKGNvbnN0IFhNTENoKiBjb25zdCwgY29u
c3QgdW5zaWduZWQgaW50KTsKKyAgICB0eXBlZGVmIHZvaWQgKEZvcm1hdHRlckxpc3RlbmVyOjoq
TWVtYmVyRnVuY3Rpb25QdHIpKGNvbnN0IFhNTENoKiBjb25zdCwgY29uc3QgRm9ybWF0dGVyTGlz
dGVuZXI6OnNpemVfdHlwZSk7CiAKIAkvKioKIAkgKiBTZW5kcyB0aGUgZGF0YSBmb3IgYSBub2Rl
IHRvIGEgRm9ybWF0dGVyTGlzdGVuZXIKSW5kZXg6IFRlc3RzL0NvbmYvY29uZi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVGVzdHMvQ29uZi9jb25mLmNwcAkocmV2aXNpb24gNzA2MTI5KQorKysgVGVzdHMv
Q29uZi9jb25mLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNywxMiBAQAogCiAgICAg
WGVyY2VzRE9NUGFyc2VyICB0aGVQYXJzZXIoMCwgJm1ncik7CiAKKyNpZiBYRVJDRVNfVkVSU0lP
Tl9NQUpPUiA8IDMKICAgICB0aGVQYXJzZXIuc2V0RG9WYWxpZGF0aW9uKHRydWUpOworI2Vsc2UK
KyAgICB0aGVQYXJzZXIuc2V0VmFsaWRhdGlvblNjaGVtZShYZXJjZXNET01QYXJzZXI6OlZhbF9B
dXRvKTsKKyNlbmRpZgorCiAgICAgdGhlUGFyc2VyLnNldERvTmFtZXNwYWNlcyh0cnVlKTsKIAog
ICAgIHRoZVBhcnNlci5wYXJzZSh4bWxJbnB1dCk7CkBAIC0zMDgsNyArMzEzLDkgQEAKICAgICAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGNvbnN0IFhhbGFuRE9NU3RyaW5nJiAgIGN1
cnJlbnREaXIgPSBkaXJzW2pdOwogCi0gICAgICAgICAgICAgICAgaWYgKGxlbmd0aChoLmFyZ3Mu
c3ViKSA9PSAwIHx8IGVxdWFscyhjdXJyZW50RGlyLCBoLmFyZ3Muc3ViKSA9PSB0cnVlKQorICAg
ICAgICAgICAgICAgIGlmICgobGVuZ3RoKGguYXJncy5zdWIpID09IDAgfHwKKyAgICAgICAgICAg
ICAgICAgICAgIGVxdWFscyhjdXJyZW50RGlyLCBoLmFyZ3Muc3ViKSA9PSB0cnVlKSAmJgorICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50RGlyWzBdICE9IFhhbGFuVW5pY29kZTo6Y2hhckZ1bGxT
dG9wKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhh
dCBvdXRwdXQgZGlyZWN0b3J5IGlzIHRoZXJlLgogICAgICAgICAgICAgICAgICAgICAvLwpJbmRl
eDogc2FtcGxlcy9TaW1wbGVUcmFuc2Zvcm0vWGFsYW5NZW1vcnlNYW5hZ2VySW1wbC5ocHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc2FtcGxlcy9TaW1wbGVUcmFuc2Zvcm0vWGFsYW5NZW1vcnlNYW5hZ2VySW1w
bC5ocHAJKHJldmlzaW9uIDcwNjEyOSkKKysrIHNhbXBsZXMvU2ltcGxlVHJhbnNmb3JtL1hhbGFu
TWVtb3J5TWFuYWdlckltcGwuaHBwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5NiwxMyBAQAog
CiAgICAgfQogCi0JdmlydHVhbCAKKyAgICBNZW1vcnlNYW5hZ2VyKgorICAgIGdldEV4Y2VwdGlv
bk1lbW9yeU1hbmFnZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisg
ICAgdmlydHVhbCAKIAl+WGFsYW5NZW1vcnlNYW5hZ2VySW1wbCgpCiAJewogICAgICAgIGlmKCAw
ID09IEhlYXBEZXN0cm95KG1faGVhcEhhbmRsZSkgKQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169716</attachid>
            <date>2008-10-24 14:02 0000</date>
            <desc>Changes from 1.10.0 to xalan-c-1.11.0_pre705082.ebuild</desc>
            <filename>xalan-c-1.11.0_pre705082.ebuild.diff</filename>
            <type>text/plain</type>
            <data encoding="base64">LS0tIC91c3IvcG9ydGFnZS9kZXYtbGlicy94YWxhbi1jL3hhbGFuLWMtMS4xMC4wLmVidWlsZAky
MDA4LTA4LTA5IDEyOjA1OjQ1LjAwMDAwMDAwMCArMDIwMAorKysgeGFsYW4tYy0xLjExLjBfcHJl
NzA1MDgyLmVidWlsZAkyMDA4LTEwLTI0IDE1OjU1OjIwLjAwMDAwMDAwMCArMDIwMApAQCAtMSwx
NiArMSwxMiBAQAogIyBDb3B5cmlnaHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uCiAjIERp
c3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgdjIKLSMgJEhlYWRlcjogL3Zhci9jdnNyb290L2dlbnRvby14ODYvZGV2LWxpYnMveGFsYW4t
Yy94YWxhbi1jLTEuMTAuMC5lYnVpbGQsdiAxLjEzIDIwMDgvMDgvMDkgMDk6MzY6MDggZGV2LXpl
cm8gRXhwICQKKyMgJEhlYWRlciQKIAogaW5oZXJpdCB0b29sY2hhaW4tZnVuY3MgZXV0aWxzIGZs
YWctby1tYXRpYyBtdWx0aWxpYgogCi1NWV9QVj0ke1BWLy8uL199Ci0KIERFU0NSSVBUSU9OPSJY
U0xUIHByb2Nlc3NvciBmb3IgdHJhbnNmb3JtaW5nIFhNTCBpbnRvIEhUTUwsIHRleHQsIG9yIG90
aGVyIFhNTCB0eXBlcyIKIEhPTUVQQUdFPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveGFsYW4tYy8i
Ci1TUkNfVVJJPSJmdHA6Ly9hcGFjaGUubWlycm9ycy5wYWlyLmNvbS94bWwveGFsYW4tYy9YYWxh
bi1DXyR7TVlfUFZ9LXNyYy50YXIuZ3oKLQlodHRwOi8vYXBhY2hlLm1pcnJvcnMuaG9vYmx5LmNv
bS94bWwveGFsYW4tYy9YYWxhbi1DXyR7TVlfUFZ9LXNyYy50YXIuZ3oKLQlodHRwOi8vd3d3LnR1
eC5vcmcvcHViL25ldC9hcGFjaGUvZGlzdC94bWwveGFsYW4tYy9YYWxhbi1DXyR7TVlfUFZ9LXNy
Yy50YXIuZ3oiCitTUkNfVVJJPSJtaXJyb3I6Ly9nZW50b28vWGFsYW4tQ19yJHtQViMqX3ByZX0t
c3JjLnRhci5neiIKIAogTElDRU5TRT0iQXBhY2hlLTIuMCIKIFNMT1Q9IjAiCkBAIC0yNiwxNCAr
MjIsOSBAQAogc3JjX3VucGFjaygpIHsKIAl1bnBhY2sgJHtBfQogCWNkICIke1N9IgotCSMgaHR0
cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9YQUxBTkMtNjQzCi0JZXBhdGNoICIk
e0ZJTEVTRElSfS8xLjEwLjAtYXMtbmVlZGVkLnBhdGNoIgotCWVwYXRjaCAiJHtGSUxFU0RJUn0v
JHtQfStnY2MtNC4zLnBhdGNoIgotCi0JY2htb2QgYStyICQoZmluZCAuIC10eXBlIGYpCi0JY2ht
b2QgYStyeCAkKGZpbmQgLiAtdHlwZSBkKQogCiAJc2VkIC1pIFwKKwkJLWUgJ3MvXChkZWJ1Z2Zs
YWdcKT0iLU8uXD8gL1wxPSIvJyBcCiAJCS1lICdzL15cKENYWEZMQUdTXCk9IiRjb21waWxlcm9w
dGlvbnMvXDE9IiR7XDF9LycgXAogCQktZSAncy9eXChDRkxBR1NcKT0iJGNvbXBpbGVyb3B0aW9u
cy9cMT0iJHtcMX0vJyBcCiAJCXJ1bkNvbmZpZ3VyZSB8fCBkaWUgInNlZCBmYWlsZWQiCg==
</data>        

          </attachment>
    </bug>

</bugzilla>