<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>70269</bug_id>
          
          <creation_ts>2011-10-17 14:13:30 -0700</creation_ts>
          <short_desc>Use the new cached cue loader</short_desc>
          <delta_ts>2011-10-19 14:50:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>annacc</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485492</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 14:13:30 -0700</bug_when>
    <thetext>Update the cue loader and parser to use the cached loader added in http://trac.webkit.org/changeset/97637.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485494</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-10-17 14:13:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/10298656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485552</commentid>
    <comment_count>2</comment_count>
      <attachid>111329</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 15:21:22 -0700</bug_when>
    <thetext>Created attachment 111329
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485554</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 15:23:35 -0700</bug_when>
    <thetext>Attachment 111329 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
From git://git.webkit.org/WebKit
   1bcef7b..c0d4f37  master     -&gt; origin/master
	M	LayoutTests/platform/chromium-gpu-win/fast/canvas/canvas-composite-transformclip-expected.png
	M	LayoutTests/platform/chromium-gpu-mac/fast/canvas/canvas-composite-transformclip-expected.png
	M	LayoutTests/ChangeLog
r97657 = c0d4f372e21680c78a2d8e16c2a90b5968f63fb3 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485582</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 15:58:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 111329 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2
&gt; 
&gt; Updating OpenSource
&gt; From git://git.webkit.org/WebKit
&gt;    1bcef7b..c0d4f37  master     -&gt; origin/master
&gt;     M    LayoutTests/platform/chromium-gpu-win/fast/canvas/canvas-composite-transformclip-expected.png
&gt;     M    LayoutTests/platform/chromium-gpu-mac/fast/canvas/canvas-composite-transformclip-expected.png
&gt;     M    LayoutTests/ChangeLog
&gt; r97657 = c0d4f372e21680c78a2d8e16c2a90b5968f63fb3 (refs/remotes/trunk)
&gt; First, rewinding head to replay your work on top of it...
&gt; Fast-forwarded master to refs/remotes/trunk.
&gt; Updating chromium port dependencies using gclient...
&gt; Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
&gt; Re-trying &apos;depot_tools/gclient sync&apos;
&gt; Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
&gt; Re-trying &apos;depot_tools/gclient sync&apos;
&gt; Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
&gt; Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
&gt; Re-trying &apos;depot_tools/gclient sync&apos;
&gt; No such file or directory at Tools/Scripts/update-webkit line 104.
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Huh, none of these files are changed by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485583</commentid>
    <comment_count>5</comment_count>
      <attachid>111329</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 15:58:54 -0700</bug_when>
    <thetext>Comment on attachment 111329
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=111329&amp;action=review

&gt; Source/WebCore/html/LoadableTextTrack.cpp:61
&gt; +    ASSERT_UNUSED(loader, m_cueLoader.get() == loader);

Should not need the get() here.

&gt; Source/WebCore/html/LoadableTextTrack.cpp:68
&gt; +    ASSERT_UNUSED(loader, m_cueLoader.get() == loader);

Nor here.

&gt; Source/WebCore/html/LoadableTextTrack.h:46
&gt; +    virtual void textTrackLoadingCompleted(LoadableTextTrack*, bool /* loadingFailed */) { }

Should this be pure virtual instead of having an empty default implementation?

&gt; Source/WebCore/html/LoadableTextTrack.h:49
&gt; +class LoadableTextTrack : public TextTrack, public CueLoaderClient {

Does the CueLoaderClient inheritance need to be public? I’d like to see it be private.

&gt; Source/WebCore/html/LoadableTextTrack.h:64
&gt; +    // CueLoaderClient
&gt; +    virtual bool shouldLoadCues(CueLoader*) { return true; }
&gt; +    virtual void newCuesAvailable(CueLoader*);
&gt; +    virtual void cueLoadingStarted(CueLoader*);
&gt; +    virtual void cueLoadingCompleted(CueLoader*, bool loadingFailed);

These should be private.

&gt; Source/WebCore/html/TextTrack.h:79
&gt; +    enum TextTrackType { BaseTextTrack, MutableTextTrack, LoadableTextTrack };

If this is a member of the TextTrack class it could just be named Type instead of TextTrackType.

&gt; Source/WebCore/html/track/WebVTTParser.cpp:47
&gt; +static const int secondsPerHour = 3600;
&gt; +static const int secondsPerMinute = 60;
&gt; +static const double malformedTime = -1;

Alexey told me we don’t need the static keyword to get internal linkage for these, at least the int ones.

&gt; Source/WebCore/html/track/WebVTTParser.cpp:49
&gt; +static unsigned bomLength = 3;
&gt; +static unsigned fileIdentiferLength = 6;

I think you forgot the const here.

&gt; Source/WebCore/html/track/WebVTTParser.cpp:76
&gt; +    if (line.length() &gt; fileIdentiferLength &amp;&amp; (line.substring(0, fileIdentiferLength) != &quot;WEBVTT&quot;
&gt; +                              || (line[fileIdentiferLength] != &apos; &apos; &amp;&amp; line[fileIdentiferLength] != &apos;\t&apos;)))
&gt;          return false;

I think this would read better if it was written as a short inline helper function instead of a single long line.

&gt; Source/WebCore/loader/CueLoader.cpp:73
&gt; +    ASSERT(m_cachedCueData.get() == resource);

Should not need get here.

&gt; Source/WebCore/loader/CueLoader.cpp:126
&gt; +    ASSERT(m_cachedCueData.get() == resource);

Should not need get here.

&gt; Source/WebCore/loader/CueLoader.cpp:136
&gt; +    ASSERT(m_cachedCueData.get() == resource);

Should not need get here.

&gt; Source/WebCore/loader/CueLoader.h:54
&gt; +class CueLoader : public CachedResourceClient, public WebVTTParserClient {

Does these client interfaces have to be public? Can we inherit from one or both of these base classes with private inheritance instead of public?

&gt; Source/WebCore/loader/CueLoader.h:72
&gt; +    // CachedResourceClient
&gt; +    virtual void notifyFinished(CachedResource*);
&gt; +    virtual void didReceiveData(CachedResource*);
&gt; +    
&gt; +    // WebVTTParserClient
&gt; +    virtual void newCuesParsed();

Can these functions be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485749</commentid>
    <comment_count>6</comment_count>
      <attachid>111329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 19:36:08 -0700</bug_when>
    <thetext>Comment on attachment 111329
Proposed patch

Attachment 111329 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10121061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485778</commentid>
    <comment_count>7</comment_count>
      <attachid>111375</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 21:13:50 -0700</bug_when>
    <thetext>Created attachment 111375
Updated for review comments and missing HTMLTrackElement/HTMLMediaElement changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485780</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 21:17:40 -0700</bug_when>
    <thetext>Attachment 111375 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/html/track/WebVTTParser.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/html/HTMLMediaElement.cpp:880:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/html/HTMLMediaElement.cpp:885:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/html/TextTrack.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/html/TextTrack.h:51:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/html/HTMLMediaElement.h:357:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/html/HTMLMediaElement.h:358:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 7 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485786</commentid>
    <comment_count>9</comment_count>
      <attachid>111377</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 21:36:51 -0700</bug_when>
    <thetext>Created attachment 111377
Yet another patch. This time to appease my friend the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486057</commentid>
    <comment_count>10</comment_count>
      <attachid>111377</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-18 08:09:07 -0700</bug_when>
    <thetext>Comment on attachment 111377
Yet another patch. This time to appease my friend the style bot.

The patch looks fine, the comments are really about the existing code.

Seems like lots of stuff that is currently called &quot;Cue&quot; should really be called &quot;TextTrack&quot;. CueLoader -&gt; TextTrackLoader, CachedCues -&gt; CachedTextTrack, etc. Probably better to do those as a separate step. 

I&apos;m confused by two level loader client interface. We have CueLoader which is a CachedResourceClient. That exposed client interface of its own, CueLoaderClient. I wonder if CueLoader and CachedCues (CachedTextTrack!)  could merge and have just one level of clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486151</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-18 10:33:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/97773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487025</commentid>
    <comment_count>12</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-19 14:50:03 -0700</bug_when>
    <thetext>*** Bug 62893 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111329</attachid>
            <date>2011-10-17 15:21:22 -0700</date>
            <delta_ts>2011-10-17 21:26:24 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_cue_loader_6.txt</filename>
            <type>text/plain</type>
            <size>48161</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTEtMTAtMTcgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHRoZSBuZXcgY2Fj
aGVkIGN1ZSBsb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwMjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDog
UmVtb3ZlIEN1ZVBhcnNlci5jcHAvaCBhbmQgQ3VlUGFyc2VyUHJpdmF0ZS5oLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKTogQWRkIFRleHRUcmFja0Ns
aWVudCBhbmQgVGV4dFRyYWNrTG9hZGluZ0NsaWVudAorICAgICAgICAgICAgcGFyYW1ldGVycy4K
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKTogTWFrZSB1cmwgcGFy
YW1ldGVyIEtVUkwgaW5zdGVhZCBvZiBTdHJpbmcuIENyZWF0ZSB0aGUgCisgICAgICAgICAgICBj
dWUgbG9hZGVyLCB0cmlnZ2VyIHRoZSBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOiBOZXcgY2FsbGJhY2sgZnJvbSB0aGUgbG9hZGVy
LiBOb3QgaW1wbGVtZW50ZWQgeWV0LgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2s6OmN1ZUxvYWRpbmdTdGFydGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJs
ZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZXRlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
TG9hZGFibGVUZXh0VHJhY2suaDoKKworICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNr
KTogQWRkIFRleHRUcmFja0NsaWVudCBwYXJhbWV0ZXIuCisgICAgICAgICogaHRtbC9NdXRhYmxl
VGV4dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrOjpjcmVhdGUp
OgorCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjpUZXh0VHJhY2spOiBBZGQgVGV4dFRyYWNrQ2xpZW50IHBhcmFtZXRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6flRleHRUcmFjayk6IFRlbGwgdGhlIGNsaWVudCB0byBy
ZW1vdmUgYWxsIGN1ZXMsIGZvcmdldCB0aGUgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjpzZXRSZWFkeVN0YXRlKTogVGVsbCBjbGllbnQgYWJvdXQgcmVhZHkgc3RhdGUgY2hh
bmdlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRNb2RlKTogVGVsbCBjbGllbnQg
YWJvdXQgbW9kZSBjaGFuZ2UuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IE5ldyBjbGllbnQg
aW50ZXJmYWNlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tS
ZW1vdmVDdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRl
eHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tUeXBlKTogTmV3
LgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjbGllbnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6c2V0Q2xpZW50KTogRGl0dG8uCisKKyAgICAgICAgKiBodG1s
L3RyYWNrL0N1ZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC90cmFjay9DdWVQ
YXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUu
aDogUmVtb3ZlZC4KKworICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUlkZW50aWZpZXJNYXhpbXVtTGVuZ3Ro
KTogTmV3LCByZXR1cm4gbGVuZ3RoIG9mIFdlYlZUVCBmaWxlCisgICAgICAgICAgICBtYWdpYyBu
dW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlk
ZW50aWZpZXIpOiBVcGRhdGUgdG8gdXNlIGNvbnN0YW50cyBpbnN0ZWFkIG9mIGhhcmQKKyAgICAg
ICAgICAgIGNvZGVkIGxlbmd0aHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6Oldl
YlZUVFBhcnNlcik6IEluaXRpYWxpemUgIm1fY2xpZW50IiBpbiB0aGUgaW5pdGlsaXphdGlvbiBs
aXN0CisgICAgICAgICAgICBpbnN0ZWFkIG9mIHNldHRpbmcgaXQgaW4gdGhlIGNvbnN0cnVjdG9y
LgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpnZXROZXdDdWVzKTogUmVuYW1lZCBm
cm9tIGZldGNoUGFyc2VkQ3Vlcy4KKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
OgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGUpOiBUYWtlIGEgV2ViVlRU
UGFyc2VyQ2xpZW50KiBpbnN0ZWFkIG9mIGEgQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCouCisKKyAg
ICAgICAgKiBsb2FkZXIvQ3VlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRl
cjo6Q3VlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6fkN1ZUxvYWRlcik6
IFJlbW92ZSBjbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpDdWVMb2FkZXI6OmN1ZUxvYWRUaW1l
ckZpcmVkKTogVGVsbCBjbGllbnQgYWJvdXQgbmV3IGNsdWVzIGFuZC9vciB0aGF0IHRoZSBsb2Fk
CisgICAgICAgICAgICBoYXMgZmluaXNoZWQuCisgICAgICAgIChXZWJDb3JlOjpDdWVMb2FkZXI6
OnByb2Nlc3NOZXdDdWVEYXRhKTogUHJvY2VzcyBuZXdseSBsb2FkZWQgZGF0YS4KKyAgICAgICAg
KFdlYkNvcmU6OkN1ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkN1ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBEbyBmaW5hbCBwcm9jZXNzaW5nIGFz
IG5lY2Vzc2FyeSwgcHJpbWUgdGhlIHRpbWVyCisgICAgICAgICAgICB0byBjYWxsIGNsaWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6bG9hZCk6IENyZWF0ZSByZXNvdXJjZSBsb2Fk
ZXIsIGluaXRpYXRlIGxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpDdWVMb2FkZXI6Om5ld0N1
ZXNQYXJzZWQpOiBQcmltZSB0aW1lciB0byB0ZWxsIGNsaWVudCBhYm91dCBuZXdseSBwYXJzZWQg
Y3Vlcy4KKyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6Z2V0TmV3Q3Vlcyk6IEdldCBuZXcg
Y3VlcyBmcm9tIHBhcnNlci4KKyAgICAgICAgKiBsb2FkZXIvQ3VlTG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDdWVMb2FkZXI6OmNyZWF0ZSk6CisKIDIwMTEtMTAtMTcgIERtaXRyeSBUaXRv
diAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgd2luZG93LndlYmtpdE5vdGlmaWNh
dGlvbnMgdXNlcyBkZWFsbG9jYXRlZCBOb3RpZmljYXRpb25QcmVzZW50ZXIgYWZ0ZXIgbGl2ZSBJ
ZnJhbWUgdHJhbnNmZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTc2Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA1
Miw3ICsyMDUyLDYgQEAgSUYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC9UZXh0
VHJhY2suY3BwCiAgICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNwcAogICAgICAgICBodG1sL1Rl
eHRUcmFja0N1ZUxpc3QuY3BwCi0gICAgICAgIGh0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcAogICAg
ICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJW
VFRUb2tlbml6ZXIuY3BwCiAgICAgICAgIGxvYWRlci9DdWVMb2FkZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk3NjM3KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTkzOSw5ICsxOTM5LDYg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5
cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3Vl
UGFyc2VyLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQYXJzZXJQcml2YXRlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRUb2tlbi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk3NjM3KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzM4LDkgKzU3Mzgs
NiBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCcsCi0gICAg
ICAgICAgICAnaHRtbC90cmFjay9DdWVQYXJzZXIuY3BwJywKLSAgICAgICAgICAgICdodG1sL3Ry
YWNrL0N1ZVBhcnNlci5oJywKLSAgICAgICAgICAgICdodG1sL3RyYWNrL0N1ZVBhcnNlclByaXZh
dGUuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwJywKICAgICAg
ICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL1dlYlZUVFRva2VuLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTc2MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQxNDMsOSArNDE0Myw2IEBACiAJCUIxQUQ0RTZCMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJh
Y2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMUFENEU1QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9Owog
CQlCMUFENEU3MzEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTcxMTNBMTJBNDYwMDg0NkIy
NyAvKiBDdWVMb2FkZXIuY3BwICovOyB9OwogCQlCMUFENEU3NDEzQTEyQTQ2MDA4NDZCMjcgLyog
Q3VlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMUFENEU3MjEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggKi87IH07Ci0JCUIxQUQ0
RTdCMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzgxM0ExMkE3MjAwODQ2QjI3IC8qIEN1
ZVBhcnNlci5jcHAgKi87IH07Ci0JCUIxQUQ0RTdDMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0
RTc5MTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCAqLzsgfTsKLQkJQjFBRDRFN0QxM0Ex
MkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTdBMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQ
YXJzZXJQcml2YXRlLmggKi87IH07CiAJCUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxs
YmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9
OwogCQlCMUU1NDU3QTEzNDYyOTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU3MTEzNDYy
OTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0cmVhbS5jcHAgKi87IH07CiAJCUIxRTU0NTdCMTM0
NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU3MjEzNDYyOTFGMDA5MkE1NDUgLyogTG9j
YWxNZWRpYVN0cmVhbS5oICovOyB9OwpAQCAtNzA4OSw5ICs3MDg2LDkgQEAKIAkJMDZFODFFRUIw
QUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMw
MDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRDdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
ZEN1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMTE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWNoZWRDdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MzVFRTY5MEY0
MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzlGNUU0QjBG
M0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTEyMzYsOSArMTEyMzMsNiBAQAogCQlCMUFENEU1QTEzQTEyQTBCMDA4NDZC
MjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxQUQ0
RTcxMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQ3VlTG9hZGVyLmNwcDsgcGF0aCA9IGxvYWRlci9DdWVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUIxQUQ0RTcyMTNBMTJBNDYwMDg0
NkIyNyAvKiBDdWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3Vl
TG9hZGVyLmg7IHBhdGggPSBsb2FkZXIvQ3VlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKLQkJQjFBRDRFNzgxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdWVQYXJzZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCMUFENEU3OTEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1ZVBhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMUFENEU3QTEzQTEyQTcyMDA4NDZCMjcgLyogQ3Vl
UGFyc2VyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdWVQYXJz
ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRDVFQ0I0MTM0QjU4
REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjFFNTQ1NzExMzQ2MjkxRjAwOTJBNTQ1IC8qIExvY2FsTWVkaWFTdHJlYW0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxNZWRpYVN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NTcyMTM0NjI5MUYwMDkyQTU0NSAvKiBM
b2NhbE1lZGlhU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2Fs
TWVkaWFTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDc4LDkgKzE4
NDcyLDYgQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCMUFENEU3ODEzQTEyQTcyMDA4
NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLywKLQkJCQlCMUFENEU3OTEzQTEyQTcyMDA4NDZCMjcg
LyogQ3VlUGFyc2VyLmggKi8sCi0JCQkJQjFBRDRFN0ExM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBh
cnNlclByaXZhdGUuaCAqLywKIAkJCQk1RDIxQTgwMDEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRU
UGFyc2VyLmNwcCAqLywKIAkJCQk1RDIxQTgwMTEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFy
c2VyLmggKi8sCiAJCQkJQjEwQjY5N0QxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuLmgg
Ki8sCkBAIC0yMTg3Nyw4ICsyMTg2OCw2IEBACiAJCQkJNTAxQkE5RTIxMzkzQ0VBMDAwRjdBQ0VC
IC8qIENTU1dyYXBTaGFwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxQUQ0RTVEMTNBMTJBMEIw
MDg0NkIyNyAvKiBDdWVJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFBRDRFNzQxM0ExMkE0
NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFN0MxM0Ex
MkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFBRDRFN0Qx
M0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzIyNzJBRDBFODJFOEYzMDBFN0Y5NzUgLyogQ3Vyc29yTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTIwNSw3ICsyNTE5NCw2IEBACiAJCQkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMz
IC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjFBRDRFNUMxM0ExMkEw
QjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxQUQ0RTczMTNB
MTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjFBRDRF
N0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTFBRjE1MTExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzRjE5QTI2MDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3JNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk2MkNEMzI1OTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAko
cmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wg
aXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKK0xvYWRh
YmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xp
ZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wg
aXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBraW5kLCBsYWJlbCwgbGFu
Z3VhZ2UpCisgICAgLCBtX2xvYWRpbmdDbGllbnQobG9hZGluZ0NsaWVudCkKICAgICAsIG1faXNE
ZWZhdWx0KGlzRGVmYXVsdCkKIHsKIH0KQEAgLTQxLDQzICs0MiwzMSBAQCBMb2FkYWJsZVRleHRU
cmFjazo6fkxvYWRhYmxlVGV4dFRyYWNrKCkKIHsKIH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFj
azo6bG9hZChjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBtX3BhcnNlci5sb2FkKHVy
bCwgY29udGV4dCwgdGhpcyk7CisgICAgaWYgKCFtX2N1ZUxvYWRlcikKKyAgICAgICAgbV9jdWVM
b2FkZXIgPSBDdWVMb2FkZXI6OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsKKyAgICBtX2N1ZUxvYWRl
ci0+bG9hZCh1cmwpOwogfQogCi1ib29sIExvYWRhYmxlVGV4dFRyYWNrOjpzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxh
YmxlKEN1ZUxvYWRlciogbG9hZGVyKQogewotICAgIHJldHVybiBtX3BhcnNlci5zdXBwb3J0c1R5
cGUodXJsKTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9jdWVMb2FkZXIuZ2V0KCkg
PT0gbG9hZGVyKTsKIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCgpCi17
Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBGZXRjaCBuZXcgY3VlcyBmcm9tIHBhcnNlciBhbmQgdGVt
cG9yYXJpbHkgc3RvcmUgdG8gZ2l2ZSB0byBDdWVMb2FkZXJDbGllbnQgd2hlbiBmZXRjaE5ld0N1
ZXNGcm9tTG9hZGVyIGlzIGNhbGxlZC4KKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4K
IH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6dHJhY2tMb2FkU3RhcnRlZCgpCit2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nU3RhcnRlZChDdWVMb2FkZXIqIGxvYWRlcikKIHsK
KyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9jdWVMb2FkZXIuZ2V0KCkgPT0gbG9hZGVyKTsK
KyAgICAKICAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TG9hZGluZyk7CiB9CiAKLXZvaWQg
TG9hZGFibGVUZXh0VHJhY2s6OnRyYWNrTG9hZEVycm9yKCkKK3ZvaWQgTG9hZGFibGVUZXh0VHJh
Y2s6OmN1ZUxvYWRpbmdDb21wbGV0ZWQoQ3VlTG9hZGVyKiBsb2FkZXIsIGJvb2wpCiB7Ci0gICAg
c2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkVycm9yKTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGxv
YWRlciwgbV9jdWVMb2FkZXIuZ2V0KCkgPT0gbG9hZGVyKTsKIAotdm9pZCBMb2FkYWJsZVRleHRU
cmFjazo6dHJhY2tMb2FkQ29tcGxldGVkKCkKLXsKLSAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFj
azo6TG9hZGVkKTsKLX0KLQotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0xvYWRlZCgp
Ci17Ci0gICAgLy8gRklYTUUoNjI4ODUpOiBUZWxsIHRoZSBjbGllbnQgdG8gZmV0Y2ggdGhlIGxh
dGVzdCBjdWVzLgotfQotCi12b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpmZXRjaE5ld2VzdEN1ZXMo
VmVjdG9yPFRleHRUcmFja0N1ZSo+JikKLXsKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVu
dC4KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAkocmV2
aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDQyICsyOSw0NSBAQAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIAogI2luY2x1ZGUgIkN1ZUxvYWRlci5oIgotI2luY2x1ZGUgIkN1ZVBhcnNlci5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgotI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MVHJhY2tFbGVtZW50OworY2xhc3MgTG9hZGFibGVU
ZXh0VHJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVGV4dFRyYWNr
OwotY2xhc3MgVGV4dFRyYWNrQ3VlOwogCi1jbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6IHB1Ymxp
YyBUZXh0VHJhY2ssIHB1YmxpYyBDdWVQYXJzZXJDbGllbnQsIHB1YmxpYyBDdWVMb2FkZXIgewor
Y2xhc3MgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQor
ICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRpbmdDbGllbnQoKSB7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJv
b2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9Cit9OworCitjbGFzcyBMb2FkYWJsZVRleHRUcmFj
ayA6IHB1YmxpYyBUZXh0VHJhY2ssIHB1YmxpYyBDdWVMb2FkZXJDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoVGV4dFRyYWNr
Q2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVu
dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTG9hZGFibGVUZXh0VHJhY2soa2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFja0Ns
aWVudCwgbG9hZGluZ0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKIAotICAgIHZvaWQgbG9h
ZChjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9pZCBsb2Fk
KGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgYm9vbCBzdXBwb3J0
c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgp
OwotICAgIHZpcnR1YWwgdm9pZCB0cmFja0xvYWRTdGFydGVkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHRyYWNrTG9hZEVycm9yKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZENvbXBsZXRlZCgp
OwotCi0gICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOworICAgIC8vIEN1ZUxvYWRl
ckNsaWVudAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkQ3VlcyhDdWVMb2FkZXIqKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoQ3VlTG9hZGVy
Kik7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFydGVkKEN1ZUxvYWRlciopOworICAg
IHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKEN1ZUxvYWRlciosIGJvb2wgbG9hZGlu
Z0ZhaWxlZCk7CiAKIHByaXZhdGU6Ci0gICAgTG9hZGFibGVUZXh0VHJhY2soY29uc3QgU3RyaW5n
JiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29s
IGlzRGVmYXVsdCk7Ci0KLSAgICBDdWVQYXJzZXIgbV9wYXJzZXI7CisgICAgTG9hZGFibGVUZXh0
VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Ym9vbCBpc0RlZmF1bHQpOwogCisgICAgT3duUHRyPEN1ZUxvYWRlcj4gbV9jdWVMb2FkZXI7Cisg
ICAgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbV9sb2FkaW5nQ2xpZW50OwogICAgIGJvb2wgbV9p
c0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL011dGFibGVUZXh0VHJhY2suY3BwCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDgg
KzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NdXRhYmxlVGV4dFRyYWNrOjpNdXRh
YmxlVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjayhraW5kLCBsYWJlbCwgbGFuZ3Vh
Z2UpCitNdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCog
dHJhY2tDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IFRleHRUcmFjayh0cmFja0NsaWVudCwga2luZCwg
bGFiZWwsIGxhbmd1YWdlKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL011dGFi
bGVUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVU
ZXh0VHJhY2suaAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL011dGFi
bGVUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dFRyYWNrQ3VlOwogCi1jbGFzcyBNdXRhYmxlVGV4dFRy
YWNrIDogcHVibGljIFRleHRUcmFjaywgcHVibGljIEN1ZUxvYWRlciB7CitjbGFzcyBNdXRhYmxl
VGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TXV0YWJsZVRleHRUcmFjaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNdXRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVu
dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsID0gZW1wdHlTdHJpbmco
KSwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSA9IGVtcHR5U3RyaW5nKCkpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGFibGVUZXh0VHJhY2soa2luZCwgbGFiZWwsIGxhbmd1
YWdlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YWJsZVRleHRUcmFjayh0cmFj
a0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfk11
dGFibGVUZXh0VHJhY2soKSB7IH0KIApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsKIAogcHJp
dmF0ZToKLSAgICBNdXRhYmxlVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgTXV0YWJsZVRleHRUcmFj
ayhUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE3
ICszOCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHRUcmFjazo6VGV4dFRyYWNr
KGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSkKK1RleHRUcmFjazo6VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UpCiAgICAgOiBtX2tpbmQoa2luZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBt
X2xhbmd1YWdlKGxhbmd1YWdlKQogICAgICwgbV9yZWFkeVN0YXRlKFRleHRUcmFjazo6Tm9uZSkK
ICAgICAsIG1fbW9kZShUZXh0VHJhY2s6OlNob3dpbmcpCisgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCiB7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkp
OworICAgIHNldENsaWVudCgwKTsKIH0KIAogU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0
CkBAIC03NCw2ICs3OCw4IEBAIFRleHRUcmFjazo6UmVhZHlTdGF0ZSBUZXh0VHJhY2s6OnJlYWR5
U3QKIHZvaWQgVGV4dFRyYWNrOjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgc3RhdGUpCiB7CiAg
ICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQodGhpcyk7CiB9CiAKIFRleHRUcmFjazo6
TW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdApAQCAtODUsOSArOTEsMTEgQEAgdm9pZCBUZXh0
VHJhY2s6OnNldE1vZGUodW5zaWduZWQgc2hvcnQgbQogewogICAgIC8vIDQuOC4xMC4xMi41IE9u
IHNldHRpbmcgdGhlIG1vZGUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgbm90IGVpdGhlciAwLCAxLCBv
ciAyLAogICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1Nf
RVJSIGV4Y2VwdGlvbi4KLSAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2s6Ok9mZiB8fCBtb2RlID09
IFRleHRUcmFjazo6SGlkZGVuIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpTaG93aW5nKQorICAgIGlm
IChtb2RlID09IFRleHRUcmFjazo6T2ZmIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpIaWRkZW4gfHwg
bW9kZSA9PSBUZXh0VHJhY2s6OlNob3dpbmcpIHsKICAgICAgICAgbV9tb2RlID0gc3RhdGljX2Nh
c3Q8TW9kZT4obW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICBtX2NsaWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7CisgICAgfSBlbHNlCiAg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrLmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBUZXh0VHJh
Y2tDdWVMaXN0OwogCiBjbGFzcyBUZXh0VHJhY2tDbGllbnQgewpAQCAtNDQsMTMgKzQ1LDE3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4
dFRyYWNrKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0
IFRleHRUcmFja0N1ZUxpc3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBSZWZQdHI8VGV4dFRyYWNrQ3VlPikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBSZWZQ
dHI8VGV4dFRyYWNrQ3VlPikgeyB9CiB9OwogCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxUZXh0VHJhY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBj
cmVhdGUoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFjayhjbGllbnQsIGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIApAQCAtNTgsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3Q7CiAKLSAgICBlbnVtIFJlYWR5U3RhdGUgeyBOb25lLCBMb2FkaW5nLCBM
b2FkZWQsIEVycm9yIH07CisgICAgZW51bSBSZWFkeVN0YXRlIHsgTm9uZSA9IDAsIExvYWRpbmcg
PSAxLCBMb2FkZWQgPSAyLCBFcnJvciA9IDMgfTsKICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKIAogICAgIGVudW0gTW9kZSB7IE9mZiA9IDAsIEhpZGRlbiA9IDEsIFNob3dpbmcg
PSAyIH07CkBAIC03MSwyMCArNzYsMjggQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICBlbnVtIFRleHRUcmFja1R5
cGUgeyBCYXNlVGV4dFRyYWNrLCBNdXRhYmxlVGV4dFRyYWNrLCBMb2FkYWJsZVRleHRUcmFjayB9
OworICAgIFRleHRUcmFja1R5cGUgdHJhY2tUeXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9p
ZCBzZXRDbGllbnQoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KKwogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFRleHRUcmFjayhU
ZXh0VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5
U3RhdGUpOwogCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKIAorICAgIFRl
eHRUcmFja1R5cGUgbV90eXBlOyAKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9raW5kOwogICAg
IFN0cmluZyBtX2xhYmVsOwogICAgIFN0cmluZyBtX2xhbmd1YWdlOwogICAgIFRleHRUcmFjazo6
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgVGV4dFRyYWNrOjpNb2RlIG1fbW9kZTsKLQor
ICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQYXJzZXIuY3BwCShyZXZpc2lv
biA5NzU3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJDdWVQYXJzZXIuaCIKLQotI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ3VlUGFy
c2VyOjpDdWVQYXJzZXIoKQotewotICAgIC8vIEZJWE1FKDYyODkzKTogSW1wbGVtZW50LgotfQot
Ci1DdWVQYXJzZXI6On5DdWVQYXJzZXIoKQotewotICAgIGlmIChtX2xvYWRlcikKLSAgICAgICAg
bV9sb2FkZXItPmNhbmNlbCgpOwotICAgIG1fbG9hZGVyID0gMDsKLX0KLQotdm9pZCBDdWVQYXJz
ZXI6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEN1ZVBhcnNlckNsaWVudCogY2xpZW50KQotewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KHVybCk7Ci0KLSAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tzOwotICAgIG9wdGlvbnMuY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzOwotCi0gICAg
bV9jbGllbnQgPSBjbGllbnQ7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY29udGV4
dDsKLQotICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGNvbnRleHQsIHRo
aXMsIHJlcXVlc3QsIG9wdGlvbnMpOwotfQotCi1ib29sIEN1ZVBhcnNlcjo6c3VwcG9ydHNUeXBl
KGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUUoNjI4OTMpOiBjaGVjayBhZ2FpbnN0IGEg
bGlzdCBvZiBzdXBwb3J0ZWQgdHlwZXMKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQ3Vl
UGFyc2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaWYgKHJlc3BvbnNlLm1p
bWVUeXBlKCkgPT0gInRleHQvdnR0IikKLSAgICAgICAgY3JlYXRlV2ViVlRUUGFyc2VyKCk7Ci19
Ci0KLXZvaWQgQ3VlUGFyc2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQotewotICAgIC8vIElmIG1pbWUgdHlwZSBmcm9tIGRpZFJlY2VpdmVSZXNwb25zZSB3
YXMgbm90IGluZm9ybWF0aXZlLCBzbmlmZiBmaWxlIGNvbnRlbnQuCi0gICAgaWYgKCFtX3ByaXZh
dGUgJiYgV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGRhdGEsIGxlbmd0
aCkpCi0gICAgICAgIGNyZWF0ZVdlYlZUVFBhcnNlcigpOwotCi0gICAgaWYgKG1fcHJpdmF0ZSkK
LSAgICAgICAgbV9wcml2YXRlLT5wYXJzZUJ5dGVzKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLXZvaWQg
Q3VlUGFyc2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKLXsKLSAg
ICBtX2NsaWVudC0+dHJhY2tMb2FkQ29tcGxldGVkKCk7Ci19Ci0KLXZvaWQgQ3VlUGFyc2VyOjpk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKQotewotICAgIG1fY2xpZW50LT50cmFja0xvYWRF
cnJvcigpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZmV0Y2hQYXJzZWRDdWVzKFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiA+JikKLXsKLSAgICAvLyBGSVhNRSg2Mjg5Myk6IEltcGxlbWVudC4K
LX0KLQotdm9pZCBDdWVQYXJzZXI6Om5ld0N1ZXNQYXJzZWQoKQotewotICAgIG1fY2xpZW50LT5u
ZXdDdWVzUGFyc2VkKCk7Ci19Ci0KLXZvaWQgQ3VlUGFyc2VyOjpjcmVhdGVXZWJWVFRQYXJzZXIo
KQotewotICAgIGlmICghbV9wcml2YXRlKSB7Ci0gICAgICAgIG1fcHJpdmF0ZSA9IFdlYlZUVFBh
cnNlcjo6Y3JlYXRlKHRoaXMsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIG1f
Y2xpZW50LT50cmFja0xvYWRTdGFydGVkKCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlci5o
CShyZXZpc2lvbiA5NzU3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEN1ZVBhcnNlcl9oCi0j
ZGVmaW5lIEN1ZVBhcnNlcl9oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci1jbGFzcyBUZXh0VHJhY2tDdWU7Ci0KLWNsYXNzIEN1ZVBhcnNlckNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+Q3VlUGFyc2VyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
bmV3Q3Vlc1BhcnNlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tMb2FkU3RhcnRlZCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tMb2FkRXJyb3IoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRyYWNrTG9hZENvbXBsZXRlZCgpID0gMDsKLX07Ci0KLWNsYXNzIEN1ZVBhcnNlciA6
IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBDdWVQYXJzZXJQcml2YXRlQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICBDdWVQYXJzZXIoKTsKLSAgICB2aXJ0dWFsIH5DdWVQYXJzZXIoKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiwgaW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIC8qaWRlbnRpZmllciovLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLQotICAgIHZvaWQgbG9hZChj
b25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQ3VlUGFyc2VyQ2xpZW50Kik7
Ci0gICAgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGZldGNo
UGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOwotICAgIHZvaWQgbmV3
Q3Vlc1BhcnNlZCgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi1wcml2YXRlOgotICAgIHZvaWQgY3JlYXRlV2Vi
VlRUUGFyc2VyKCk7Ci0gCi0gICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIE93blB0cjxDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlPiBtX3ByaXZhdGU7Ci0gICAgQ3Vl
UGFyc2VyQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2Vy
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFy
c2VyUHJpdmF0ZS5oCShyZXZpc2lvbiA5NzU3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQ3VlUGFyc2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBDdWVQYXJzZXJQcml2YXRlX2gKLSNkZWZpbmUgQ3VlUGFyc2VQcml2YXRlX2gKLQotI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLQotI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEN1ZVBhcnNl
clByaXZhdGVDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkN1ZVBhcnNlclByaXZhdGVD
bGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCkgPSAwOwotfTsK
LQotY2xhc3MgQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIHZpcnR1YWwgfkN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UoKSB7IH0K
LQotICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJzZS4KLSAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiwgdW5zaWduZWQpID0gMDsKLQotICAgIC8vIFRy
YW5zZmVycyBvd25lcnNoaXAgb2YgbGFzdCBwYXJzZWQgY3VlcyB0byBjYWxsZXIuCi0gICAgdmly
dHVhbCB2b2lkIGZldGNoUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYp
ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UoKSB7IH0K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAJKHJldmlzaW9uIDk3NTYw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MiwyNiArNDIsMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0
aWMgY29uc3QgaW50IHNlY29uZHNQZXJIb3VyID0gMzYwMDsKK3N0YXRpYyBjb25zdCBpbnQgc2Vj
b25kc1Blck1pbnV0ZSA9IDYwOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYWxmb3JtZWRUaW1lID0g
LTE7CitzdGF0aWMgdW5zaWduZWQgYm9tTGVuZ3RoID0gMzsKK3N0YXRpYyB1bnNpZ25lZCBmaWxl
SWRlbnRpZmVyTGVuZ3RoID0gNjsKKyAgICAKK3Vuc2lnbmVkIFdlYlZUVFBhcnNlcjo6ZmlsZUlk
ZW50aWZpZXJNYXhpbXVtTGVuZ3RoKCkKK3sKKyAgICByZXR1cm4gYm9tTGVuZ3RoICsgZmlsZUlk
ZW50aWZlckxlbmd0aDsKK30KKwogYm9vbCBXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlk
ZW50aWZpZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIC8vIEEg
V2ViVlRUIGZpbGUgaWRlbnRpZmllciBjb25zaXN0cyBvZiBhbiBvcHRpb25hbCBCT00gY2hhcmFj
dGVyLAogICAgIC8vIHRoZSBzdHJpbmcgIldFQlZUVCIgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwg
c3BhY2Ugb3IgdGFiIGNoYXJhY3RlciwKICAgICAvLyBhbmQgYW55IG51bWJlciBvZiBjaGFyYWN0
ZXJzIHRoYXQgYXJlIG5vdCBsaW5lIHRlcm1pbmF0b3JzIC4uLgogICAgIHVuc2lnbmVkIHBvc2l0
aW9uID0gMDsKLSAgICBpZiAobGVuZ3RoID49IDMgJiYgZGF0YVswXSA9PSAnXHhFRicgJiYgZGF0
YVsxXSA9PSAnXHhCQicgJiYgZGF0YVsyXSA9PSAnXHhCRicpCi0gICAgICAgIHBvc2l0aW9uICs9
IDM7CisgICAgaWYgKGxlbmd0aCA+PSBib21MZW5ndGggJiYgZGF0YVswXSA9PSAnXHhFRicgJiYg
ZGF0YVsxXSA9PSAnXHhCQicgJiYgZGF0YVsyXSA9PSAnXHhCRicpCisgICAgICAgIHBvc2l0aW9u
ICs9IGJvbUxlbmd0aDsKICAgICBTdHJpbmcgbGluZSA9IGNvbGxlY3ROZXh0TGluZShkYXRhLCBs
ZW5ndGgsICZwb3NpdGlvbik7Ci0gICAgICAgIAotICAgIGlmIChsaW5lLmxlbmd0aCgpIDwgNikK
KworICAgIGlmIChsaW5lLmxlbmd0aCgpIDwgZmlsZUlkZW50aWZlckxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDYgJiYgbGluZSAhPSAiV0VC
VlRUIikKKyAgICBpZiAobGluZS5sZW5ndGgoKSA9PSBmaWxlSWRlbnRpZmVyTGVuZ3RoICYmIGxp
bmUgIT0gIldFQlZUVCIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIGxpbmUg
aXMgbW9yZSB0aGFuIHNpeCBjaGFyYWN0ZXJzCiAgICAgLy8gYnV0IHRoZSBmaXJzdCBzaXggY2hh
cmFjdGVycyBkbyBub3QgZXhhY3RseSBlcXVhbCAiV0VCVlRUIiwKICAgICAvLyBvciB0aGUgc2V2
ZW50aCBjaGFyYWN0ZXIgaXMgbmVpdGhlciBhIHNwYWNlIG5vciBhIHRhYiBjaGFyYWN0ZXIsIHRo
ZW4gYWJvcnQuCi0gICAgaWYgKGxpbmUubGVuZ3RoKCkgPiA2ICYmIChsaW5lLnN1YnN0cmluZygw
LCA2KSAhPSAiV0VCVlRUIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmVb
Nl0gIT0gJyAnICYmIGxpbmVbNl0gIT0gJ1x0JykpKQorICAgIGlmIChsaW5lLmxlbmd0aCgpID4g
ZmlsZUlkZW50aWZlckxlbmd0aCAmJiAobGluZS5zdWJzdHJpbmcoMCwgZmlsZUlkZW50aWZlckxl
bmd0aCkgIT0gIldFQlZUVCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsaW5l
W2ZpbGVJZGVudGlmZXJMZW5ndGhdICE9ICcgJyAmJiBsaW5lW2ZpbGVJZGVudGlmZXJMZW5ndGhd
ICE9ICdcdCcpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtODIsMTUgKzkzLDE1IEBAIFN0cmluZyBXZWJWVFRQYXJzZXI6OmNvbGxlY3RXb3JkKGNvbnN0
IFMKICAgICByZXR1cm4gc3RyaW5nLnRvU3RyaW5nKCk7CiB9CiAKLVdlYlZUVFBhcnNlcjo6V2Vi
VlRUUGFyc2VyKEN1ZVBhcnNlclByaXZhdGVDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK1dlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNl
ckNsaWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDog
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N0YXRlKEluaXRpYWwp
CiAgICAgLCBtX3Rva2VuaXplcihXZWJWVFRUb2tlbml6ZXI6OmNyZWF0ZSgpKQorICAgICwgbV9j
bGllbnQoY2xpZW50KQogewotICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCi12b2lkIFdlYlZU
VFBhcnNlcjo6ZmV0Y2hQYXJzZWRDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBv
dXRwdXRDdWVzKQordm9pZCBXZWJWVFRQYXJzZXI6OmdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpCiB7CiAgICAgb3V0cHV0Q3VlcyA9IG1fY3VlbGlz
dDsKICAgICBtX2N1ZWxpc3QuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuaAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotI2luY2x1ZGUgIkN1ZVBhcnNlclByaXZhdGUu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJXZWJWVFRUb2tlbml6ZXIuaCIKKyNp
bmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNDUsMjEgKzQ1LDI1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGlj
IGNvbnN0IGludCBzZWNvbmRzUGVySG91ciA9IDM2MDA7Ci1zdGF0aWMgY29uc3QgaW50IHNlY29u
ZHNQZXJNaW51dGUgPSA2MDsKLXN0YXRpYyBjb25zdCBkb3VibGUgbWFsZm9ybWVkVGltZSA9IC0x
OworY2xhc3MgV2ViVlRUUGFyc2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJW
VFRQYXJzZXJDbGllbnQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNl
ZCgpID0gMDsKK307CiAKLWNsYXNzIFdlYlZUVFBhcnNlciA6IHB1YmxpYyBDdWVQYXJzZXJQcml2
YXRlSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZUVFBhcnNlciB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViVlRUUGFyc2VyKCkgeyB9CiAgICAgCiAgICAgZW51bSBQYXJzZVN0YXRlIHsgSW5pdGlh
bCwgSGVhZGVyLCBJZCwgVGltaW5nc0FuZFNldHRpbmdzLCBDdWVUZXh0LCBCYWRDdWUgfTsKIAot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlZUVFBhcnNlcj4gY3JlYXRlKEN1ZVBhcnNlclByaXZh
dGVDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJWVFRQYXJzZXI+IGNyZWF0ZShXZWJWVFRQYXJzZXJDbGllbnQq
IGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV2ViVlRUUGFyc2VyKGNsaWVudCwgY29udGV4dCkpOwogICAg
IH0KICAgICAKKyAgICBzdGF0aWMgdW5zaWduZWQgZmlsZUlkZW50aWZpZXJNYXhpbXVtTGVuZ3Ro
KCk7CiAgICAgc3RhdGljIGJvb2wgaGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25zdCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgc3RhdGljIGlubGluZSBib29sIGlzUmVj
b2duaXplZFRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCkBAIC03OSwxMiArODMsMTQg
QEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY29sbGVjdERpZ2l0cyhjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCopOwogICAgIHN0YXRpYyBTdHJpbmcgY29sbGVjdFdvcmQoY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmZXRjaFBhcnNlZEN1ZXMoVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKTsKLSAgICAKKyAgICAvLyBJbnB1dCBkYXRhIHRvIHRo
ZSBwYXJzZXIgdG8gcGFyc2UuCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAg
b2YgbGFzdCBwYXJzZWQgY3VlcyB0byBjYWxsZXIuCisgICAgdmlydHVhbCB2b2lkIGdldE5ld0N1
ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKTsKKwogcHJvdGVjdGVkOgotICAgIFdl
YlZUVFBhcnNlcihDdWVQYXJzZXJQcml2YXRlQ2xpZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOworICAgIFdlYlZUVFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogICAgIFBhcnNlU3RhdGUgbV9zdGF0ZTsKQEAgLTExNiw3ICsxMjIs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2F0dGFjaG1lbnRS
b290OwogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBtX2N1cnJlbnROb2RlOwogCi0gICAgQ3Vl
UGFyc2VyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViVlRUUGFyc2VyQ2xpZW50KiBt
X2NsaWVudDsKIAogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fY3VlbGlzdDsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAkocmV2aXNpb24gOTc1NjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTEgKzI5LDE2MSBAQAogCiAjaW5jbHVkZSAiQ3VlTG9hZGVyLmgiCiAKKyNpbmNsdWRl
ICJDYWNoZWRDdWVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYlZUVFBh
cnNlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitDdWVMb2FkZXI6OkN1ZUxvYWRl
cihDdWVMb2FkZXJDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dChjb250ZXh0KQorICAgICwgbV9jdWVMb2FkVGltZXIodGhpcywgJkN1ZUxvYWRlcjo6Y3VlTG9h
ZFRpbWVyRmlyZWQpCisgICAgLCBtX3N0YXRlKElkbGUpCisgICAgLCBtX3BhcnNlT2Zmc2V0KDAp
CisgICAgLCBtX25ld0N1ZXNBdmFpbGFibGUoZmFsc2UpCit7Cit9CisKK0N1ZUxvYWRlcjo6fkN1
ZUxvYWRlcigpCit7CisgICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkKKyAgICAgICAgbV9jYWNoZWRD
dWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgQ3VlTG9hZGVyOjpjdWVMb2Fk
VGltZXJGaXJlZChUaW1lcjxDdWVMb2FkZXI+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VE
KHRpbWVyLCB0aW1lciA9PSAmbV9jdWVMb2FkVGltZXIpOworICAgIAorICAgIGlmIChtX25ld0N1
ZXNBdmFpbGFibGUpIHsKKyAgICAgICAgbV9uZXdDdWVzQXZhaWxhYmxlID0gZmFsc2U7CisgICAg
ICAgIG1fY2xpZW50LT5uZXdDdWVzQXZhaWxhYmxlKHRoaXMpOyAKKyAgICB9CisgICAgCisgICAg
aWYgKG1fc3RhdGUgPj0gRmluaXNoZWQpCisgICAgICAgIG1fY2xpZW50LT5jdWVMb2FkaW5nQ29t
cGxldGVkKHRoaXMsIG1fc3RhdGUgPT0gRmFpbGVkKTsKK30KKwordm9pZCBDdWVMb2FkZXI6OnBy
b2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQo
bV9jYWNoZWRDdWVEYXRhLmdldCgpID09IHJlc291cmNlKTsKKyAgICAKKyAgICBpZiAobV9zdGF0
ZSA9PSBGYWlsZWQgfHwgIXJlc291cmNlLT5kYXRhKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlciA9IHJlc291cmNlLT5kYXRhKCk7CisgICAgaWYgKG1f
cGFyc2VPZmZzZXQgPT0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNv
bnN0IGNoYXIqIGRhdGE7CisgICAgdW5zaWduZWQgbGVuZ3RoOworICAgIAorICAgIGlmICghbV9j
dWVQYXJzZXIpIHsKKyAgICAgICAgaWYgKHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkg
PT0gInRleHQvdnR0IikKKyAgICAgICAgICAgIG1fY3VlUGFyc2VyID0gV2ViVlRUUGFyc2VyOjpj
cmVhdGUodGhpcywgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAvLyBEb24ndCBwcm9jZWVkIHVudGlsIHdlIGhhdmUgZW5vdWdoIGRhdGEgdG8g
Y2hlY2sgZm9yIHRoZSBXZWJWVFQgbWFnaWMgaWRlbnRpZmllci4KKyAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJMZW5ndGggPSBXZWJWVFRQYXJzZXI6OmZpbGVJZGVudGlmaWVyTWF4aW11
bUxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpIDwgaWRlbnRpZmllckxl
bmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBpZGVudGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIHdoaWxlIChvZmZzZXQgPCBpZGVudGlmaWVyTGVuZ3RoICYmIChsZW5n
dGggPSBidWZmZXItPmdldFNvbWVEYXRhKGRhdGEsIG9mZnNldCkpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGxlbmd0aCA+IGlkZW50aWZpZXJMZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGxl
bmd0aCA9IGlkZW50aWZpZXJMZW5ndGg7CisgICAgICAgICAgICAgICAgaWRlbnRpZmllci5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGVuZ3RoOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIVdlYlZUVFBhcnNlcjo6
aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihpZGVudGlmaWVyLmRhdGEoKSwgaWRlbnRpZmllci5z
aXplKCkpKSB7CisgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ3VlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSAtIGZpbGUgXCIlc1wiIGRvZXMgbm90IGhhdmUgV2ViVlRUIG1hZ2ljIGhlYWRlciIs
IAorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gRmFpbGVkOworICAg
ICAgICAgICAgICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1f
Y3VlUGFyc2VyID0gV2ViVlRUUGFyc2VyOjpjcmVhdGUodGhpcywgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBBU1NFUlQobV9jdWVQYXJzZXIp
OworICAgIAorICAgIHdoaWxlICgobGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShkYXRhLCBt
X3BhcnNlT2Zmc2V0KSkpIHsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNlQnl0ZXMoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgbV9wYXJzZU9mZnNldCArPSBsZW5ndGg7CisgICAgfQorICAgIAor
fQorCit2b2lkIEN1ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQoreworICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEuZ2V0KCkgPT0gcmVzb3VyY2UpOwor
ICAgIAorICAgIGlmICghcmVzb3VyY2UtPmRhdGEoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIHByb2Nlc3NOZXdDdWVEYXRhKHJlc291cmNlKTsKK30KKwordm9pZCBDdWVMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQobV9j
YWNoZWRDdWVEYXRhLmdldCgpID09IHJlc291cmNlKTsKKworICAgIHByb2Nlc3NOZXdDdWVEYXRh
KHJlc291cmNlKTsKKworICAgIG1fc3RhdGUgPSByZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpID8g
RmFpbGVkIDogRmluaXNoZWQ7CisKKyAgICBpZiAoIW1fY3VlTG9hZFRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAKKyAgICBtX2Nh
Y2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZEN1ZURhdGEgPSAw
OworfQorCitib29sIEN1ZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgaWYg
KCFtX2NsaWVudC0+c2hvdWxkTG9hZEN1ZXModGhpcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7CisgICAgICAgIG1fY2FjaGVkQ3VlRGF0
YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX2NhY2hlZEN1ZURhdGEgPSAwOworICAg
IH0KKyAgICAKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAKKyAgICBSZXNvdXJjZVJlcXVlc3QgY3VlUmVx
dWVzdChkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7CisgICAgbV9jYWNoZWRDdWVEYXRhID0gc3RhdGljX2Nhc3Q8Q2FjaGVkQ3Vlcyo+KGNhY2hl
ZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Q3VlcyhjdWVSZXF1ZXN0KSk7CisgICAgaWYgKG1fY2Fj
aGVkQ3VlRGF0YSkKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5hZGRDbGllbnQodGhpcyk7Cisg
ICAgCisgICAgbV9jbGllbnQtPmN1ZUxvYWRpbmdTdGFydGVkKHRoaXMpOworICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEN1ZUxvYWRlcjo6bmV3Q3Vlc1BhcnNlZCgpCit7CisgICAg
aWYgKG1fY3VlTG9hZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bmV3Q3Vlc0F2YWlsYWJsZSA9IHRydWU7CisgICAgbV9jdWVMb2FkVGltZXIuc3RhcnRPbmVTaG90
KDApOworfQogCi12b2lkIEN1ZUxvYWRlcjo6c2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNs
aWVudCogY2xpZW50KQordm9pZCBDdWVMb2FkZXI6OmdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpCiB7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7Cisg
ICAgQVNTRVJUKG1fY3VlUGFyc2VyKTsKKyAgICBpZiAobV9jdWVQYXJzZXIpCisgICAgICAgIG1f
Y3VlUGFyc2VyLT5nZXROZXdDdWVzKG91dHB1dEN1ZXMpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1ZUxvYWRlci5oCShyZXZpc2lvbiA5NzU3MikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9DdWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwxNyArMTAsMTcgQEAKICAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAogI2lmbmRlZiBDdWVMb2FkZXJfaApAQCAtMjgsNDEgKzI4LDY4IEBACiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSAiQ2FjaGVkQ3Vlcy5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1ZUxvYWRlcjsK
LWNsYXNzIFRleHRUcmFja0N1ZTsKLWNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CitjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCi0vLyBMaXN0ZW5lciB0byBDdWVMb2FkZXIuCiBjbGFzcyBD
dWVMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkN1ZUxvYWRlckNsaWVudCgp
IHsgfQotCi0gICAgLy8gUXVlcmllcyBDdWVMb2FkZXIgZm9yIG5ld2VzdCBjdWVzLgotICAgIHZp
cnR1YWwgdm9pZCBmZXRjaE5ld0N1ZXNGcm9tTG9hZGVyKEN1ZUxvYWRlciopID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kikg
PSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkQ3VlcyhDdWVMb2FkZXIqKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoQ3VlTG9hZGVyKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChDdWVMb2FkZXIqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0ZWQoQ3VlTG9hZGVyKiwgYm9vbCBsb2FkaW5n
RmFpbGVkKSA9IDA7CiB9OwogCi1jbGFzcyBDdWVMb2FkZXIgeworY2xhc3MgQ3VlTG9hZGVyIDog
cHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgV2ViVlRUUGFyc2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVMb2FkZXIpOyAKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5DdWVMb2FkZXIoKSB7IH0KLQotICAg
IHZvaWQgc2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVudCopOwotCi0gICAgLy8gSW5m
b3JtcyBjbGllbnQgdGhhdCBuZXcgY3VlcyBoYXZlIGJlZW4gbG9hZGVkLgotICAgIHZpcnR1YWwg
dm9pZCBuZXdDdWVzTG9hZGVkKCkgPSAwOwotCi0gICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBv
ZiBjdXJyZW50bHkgbG9hZGVkIGN1ZXMuCi0gICAgdmlydHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3Vl
cyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mIGN1ZXMpID0gMDsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxDdWVMb2FkZXI+IGNyZWF0ZShDdWVMb2FkZXJDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q3VlTG9hZGVyKGNsaWVudCwgY29udGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DdWVMb2Fk
ZXIoKTsKKyAgICAKKyAgICBib29sIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgZ2V0TmV3
Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3Vlcyk7CisgICAgCisg
ICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ2Fj
aGVkUmVzb3VyY2UqKTsKKyAgICAKKyAgICAvLyBXZWJWVFRQYXJzZXJDbGllbnQKKyAgICB2aXJ0
dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpOworICAgIAorcHJpdmF0ZToKKyAgICBDdWVMb2FkZXIo
Q3VlTG9hZGVyQ2xpZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIAorICAgIHZv
aWQgcHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGN1ZUxvYWRU
aW1lckZpcmVkKFRpbWVyPEN1ZUxvYWRlcj4qKTsKIAotcHJvdGVjdGVkOgorICAgIGVudW0gU3Rh
dGUgeyBJZGxlLCBMb2FkaW5nLCBGaW5pc2hlZCwgRmFpbGVkIH07CisgICAgCiAgICAgQ3VlTG9h
ZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBPd25QdHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNl
cjsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDdWVzPiBtX2NhY2hlZEN1ZURhdGE7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
ICAgIFRpbWVyPEN1ZUxvYWRlcj4gbV9jdWVMb2FkVGltZXI7CisgICAgU3RhdGUgbV9zdGF0ZTsK
KyAgICB1bnNpZ25lZCBtX3BhcnNlT2Zmc2V0OworICAgIGJvb2wgbV9uZXdDdWVzQXZhaWxhYmxl
OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKICNlbmRpZgo=
</data>
<flag name="review"
          id="109134"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111375</attachid>
            <date>2011-10-17 21:13:50 -0700</date>
            <delta_ts>2011-10-17 21:36:51 -0700</delta_ts>
            <desc>Updated for review comments and missing HTMLTrackElement/HTMLMediaElement changes</desc>
            <filename>patch_cue_loader_8.txt</filename>
            <type>text/plain</type>
            <size>54837</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NzEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTEtMTAtMTcgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHRoZSBuZXcgY2Fj
aGVkIGN1ZSBsb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwMjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZWQuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlIEN1ZVBhcnNlci5jcHAvaCBhbmQgQ3VlUGFyc2VyUHJp
dmF0ZS5oLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hh
bmdlZCk6IE5ldywgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tDcmVhdGVkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRD
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a1JlbW92ZUN1ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OmxvYWQpOiBVcGRhdGUgZm9yIGludGVyZmFjZSBjaGFuZ2UKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0xvYWRpbmdDb21wbGV0
ZWQpOiBOZXcsIGRpc3BhdGNoICdsb2FkJyBvciAnZXJyb3InIGV2ZW50LgorICAgICAgICAqIGh0
bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0
VHJhY2spOiBBZGQgVGV4dFRyYWNrQ2xpZW50IGFuZCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2s6OmxvYWQpOiBNYWtlIHVybCBwYXJhbWV0ZXIgS1VSTCBpbnN0ZWFkIG9mIFN0cmluZy4gQ3Jl
YXRlIHRoZSAKKyAgICAgICAgICAgIGN1ZSBsb2FkZXIsIHRyaWdnZXIgdGhlIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZSk6IE5ldyBj
YWxsYmFjayBmcm9tIHRoZSBsb2FkZXIuIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorCisgICAgICAgICog
aHRtbC9NdXRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0
VHJhY2s6Ok11dGFibGVUZXh0VHJhY2spOiBBZGQgVGV4dFRyYWNrQ2xpZW50IHBhcmFtZXRlci4K
KyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6IEFkZCBUZXh0VHJhY2tD
bGllbnQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp+VGV4dFRyYWNr
KTogVGVsbCB0aGUgY2xpZW50IHRvIHJlbW92ZSBhbGwgY3VlcywgZm9yZ2V0IHRoZSBjbGllbnQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldFJlYWR5U3RhdGUpOiBUZWxsIGNsaWVu
dCBhYm91dCByZWFkeSBzdGF0ZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OnNldE1vZGUpOiBUZWxsIGNsaWVudCBhYm91dCBtb2RlIGNoYW5nZS4KKyAgICAgICAgKiBodG1s
L1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJh
Y2tBZGRDdWVzKTogTmV3IGNsaWVudCBpbnRlcmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjp0cmFja1R5cGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNs
aWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRDbGllbnQpOiBE
aXR0by4KKworICAgICAgICAqIGh0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL0N1ZVBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oOiBSZW1vdmVkLgorCisgICAgICAgICogaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpmaWxl
SWRlbnRpZmllck1heGltdW1MZW5ndGgpOiBOZXcsIHJldHVybiBsZW5ndGggb2YgV2ViVlRUIGZp
bGUKKyAgICAgICAgICAgIG1hZ2ljIG51bWJlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBh
cnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcik6IFVwZGF0ZSB0byB1c2UgY29uc3RhbnRz
IGluc3RlYWQgb2YgaGFyZAorICAgICAgICAgICAgY29kZWQgbGVuZ3Rocy4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKTogSW5pdGlhbGl6ZSAibV9jbGllbnQi
IGluIHRoZSBpbml0aWxpemF0aW9uIGxpc3QKKyAgICAgICAgICAgIGluc3RlYWQgb2Ygc2V0dGlu
ZyBpdCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6
OmdldE5ld0N1ZXMpOiBSZW5hbWVkIGZyb20gZmV0Y2hQYXJzZWRDdWVzLgorICAgICAgICAqIGh0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6
OmNyZWF0ZSk6IFRha2UgYSBXZWJWVFRQYXJzZXJDbGllbnQqIGluc3RlYWQgb2YgYSBDdWVQYXJz
ZXJQcml2YXRlQ2xpZW50Ki4KKworICAgICAgICAqIGxvYWRlci9DdWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpDdWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VlTG9hZGVyOjp+Q3VlTG9hZGVyKTogUmVtb3ZlIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkN1ZUxvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQpOiBUZWxsIGNsaWVudCBhYm91dCBuZXcgY2x1
ZXMgYW5kL29yIHRoYXQgdGhlIGxvYWQKKyAgICAgICAgICAgIGhhcyBmaW5pc2hlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOiBQcm9jZXNzIG5ld2x5
IGxvYWRlZCBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
IERvIGZpbmFsIHByb2Nlc3NpbmcgYXMgbmVjZXNzYXJ5LCBwcmltZSB0aGUgdGltZXIKKyAgICAg
ICAgICAgIHRvIGNhbGwgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpsb2Fk
KTogQ3JlYXRlIHJlc291cmNlIGxvYWRlciwgaW5pdGlhdGUgbG9hZGluZy4KKyAgICAgICAgKFdl
YkNvcmU6OkN1ZUxvYWRlcjo6bmV3Q3Vlc1BhcnNlZCk6IFByaW1lIHRpbWVyIHRvIHRlbGwgY2xp
ZW50IGFib3V0IG5ld2x5IHBhcnNlZCBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVy
OjpnZXROZXdDdWVzKTogR2V0IG5ldyBjdWVzIGZyb20gcGFyc2VyLgorICAgICAgICAqIGxvYWRl
ci9DdWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6Y3JlYXRlKToKKwog
MjAxMS0xMC0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NzY2Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiA5NzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUyLDcgKzIwNTIsNiBAQCBJRiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAg
ICAgICBodG1sL1RleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWUuY3BwCiAg
ICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKLSAgICAgICAgaHRtbC90cmFjay9DdWVQ
YXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAogICAgICAgICBo
dG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKICAgICAgICAgbG9hZGVyL0N1ZUxvYWRlci5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTc2MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTM5LDkgKzE5MzksNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBcCi0JU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9DdWVQYXJzZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQ
YXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFRva2VuLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
OTc2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTU3MzgsOSArNTczOCw2IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oJywKLSAgICAgICAgICAgICdodG1sL3RyYWNrL0N1ZVBhcnNlci5jcHAnLAotICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svQ3VlUGFyc2VyLmgnLAotICAgICAgICAgICAgJ2h0bWwvdHJhY2sv
Q3VlUGFyc2VyUHJpdmF0ZS5oJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDE0Myw5ICs0MTQzLDYgQEAKIAkJQjFBRDRFNkIxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTVBMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVM
aXN0LmggKi87IH07CiAJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzEx
M0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi87IH07CiAJCUIxQUQ0RTc0MTNBMTJB
NDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAq
LzsgfTsKLQkJQjFBRDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3ODEzQTEyQTcy
MDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLzsgfTsKLQkJQjFBRDRFN0MxM0ExMkE3MjAwODQ2
QjI3IC8qIEN1ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oICovOyB9Owot
CQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFN0ExM0ExMkE3MjAw
ODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAw
ODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCUIxRTU0NTdBMTM0NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlh
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIxRTU0NTcxMTM0NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmNwcCAqLzsgfTsK
IAkJQjFFNTQ1N0IxMzQ2MjkxRjAwOTJBNTQ1IC8qIExvY2FsTWVkaWFTdHJlYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTcyMTM0NjI5MUYw
MDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmggKi87IH07CkBAIC03MDg5LDkgKzcwODYsOSBA
QAogCQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
OUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250
cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRp
YVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxh
eWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2FjaGVkQ3Vlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZEN1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIzNiw5ICsxMTIzMyw2IEBACiAJCUIxQUQ0RTVB
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0N1ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjFBRDRFNzExM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdWVMb2FkZXIuY3BwOyBwYXRoID0gbG9h
ZGVyL0N1ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQjFBRDRF
NzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDdWVMb2FkZXIuaDsgcGF0aCA9IGxvYWRlci9DdWVMb2FkZXIuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlCMUFENEU3ODEzQTEyQTcyMDA4NDZCMjcgLyogQ3Vl
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1ZVBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTc5MTNBMTJBNzIwMDg0
NkIyNyAvKiBDdWVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Vl
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTdBMTNBMTJBNzIw
MDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEN1ZVBhcnNlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUU1NDU3MTEzNDYyOTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbE1lZGlh
U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1NzIxMzQ2Mjkx
RjAwOTJBNTQ1IC8qIExvY2FsTWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTG9jYWxNZWRpYVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg0NzgsOSArMTg0NzIsNiBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJh
Y2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIxQUQ0
RTc4MTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwICovLAotCQkJCUIxQUQ0RTc5MTNB
MTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCAqLywKLQkJCQlCMUFENEU3QTEzQTEyQTcyMDA4
NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oICovLAogCQkJCTVEMjFBODAwMTNFQ0U1REYwMEJC
NzA2NCAvKiBXZWJWVFRQYXJzZXIuY3BwICovLAogCQkJCTVEMjFBODAxMTNFQ0U1REYwMEJCNzA2
NCAvKiBXZWJWVFRQYXJzZXIuaCAqLywKIAkJCQlCMTBCNjk3RDE0MEMxNzQwMDBCQzFDMjYgLyog
V2ViVlRUVG9rZW4uaCAqLywKQEAgLTIxODc3LDggKzIxODY4LDYgQEAKIAkJCQk1MDFCQTlFMjEz
OTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFB
RDRFNUQxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MUFENEU3NDEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCMUFENEU3QzEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5MkYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjI3MkFEMEU4MkU4RjMwMEU3Rjk3NSAvKiBDdXJzb3JMaXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjA1LDcgKzI1MTk0LDYgQEAKIAkJCQk1MEU1NjZENjEz
OUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MUFENEU1QzEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMUFENEU3QjEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxMUFGMTUxMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNGMTlBMjYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDcsMTAgKzg0Nyw0NiBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUZXh0VHJhY2tzKCkKICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewogICAgICAgICAgICAgSFRNTFRy
YWNrRWxlbWVudCogdHJhY2sgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7
Ci0gICAgICAgICAgICB0cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgICAgICAgICB0cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNr
KikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKQoreworICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja0NyZWF0ZWQoVGV4dFRyYWNrKikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVu
dC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFj
ayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IElt
cGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKK3sKKyAgICAvLyBGSVhNRSg2
Mjg4NSk6IEltcGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUmVmUHRyPFRleHRUcmFja0N1ZT4pCit7CisgICAgLy8gRklYTUUo
NjI4ODUpOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
UmVtb3ZlQ3VlKFRleHRUcmFjayosIFJlZlB0cjxUZXh0VHJhY2tDdWU+KQoreworICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorfQorCiAjZW5kaWYKIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojppc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYgdXJsLCBJbnZhbGlkU291cmNlQWN0aW9u
IGFjdGlvbklmSW52YWxpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJveHkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1
ZGUgIlRleHRUcmFjay5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCkBAIC01OCw3ICs2MiwxMSBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQg
aXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBj
bGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8gbG9uZ2VyIGRlcGVuZHMgb24gdHlwZWNhc3Rpbmcg
YSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBIVE1MTWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1M
TWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGll
bnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwcml2YXRlIEFjdGl2ZURPTU9iamVj
dCB7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMg
TWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwcml2YXRl
IEFjdGl2ZURPTU9iamVjdAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIHByaXZhdGUg
VGV4dFRyYWNrQ2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciogcGxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KICAgICAKQEAgLTMzOSw2ICsz
NDcsMTUgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGxv
YWRUZXh0VHJhY2tzKCk7CisKKyAgICAvLyBUZXh0VHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVM
aXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBSZWZQ
dHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShU
ZXh0VHJhY2sqLCBSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNl
ICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rp
b25zLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtMTI5LDE0ICsxMzAsMjAgQEAgYm9vbCBIVE1MVHJhY2tFbGVt
ZW50Ojppc1VSTEF0dHJpYnV0ZShBdAogICAgIHJldHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBz
cmNBdHRyOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6bG9hZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50KQogewot
ICAgIG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKGtpbmQoKSwgbGFiZWwoKSwg
c3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNr
OjpjcmVhdGUodHJhY2tDbGllbnQsIHRoaXMsIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBp
c0RlZmF1bHQoKSk7CiAKICAgICBpZiAoaGFzQXR0cmlidXRlKHNyY0F0dHIpKQogICAgICAgICBt
X3RyYWNrLT5sb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpLCBjb250ZXh0KTsK
IH0KIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExv
YWRhYmxlVGV4dFRyYWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVkKQoreworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShsb2FkaW5nRmFpbGVk
ID8gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpLCBlYyk7Cit9CisgICAgCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIEhUTUxUcmFja0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHByaXZhdGUgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCkBAIC00OSw5ICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldElzRGVmYXVsdChib29sKTsKICAg
ICAKLSAgICB2b2lkIGxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgbG9h
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kik7CiAKIHByaXZhdGU6
CisKKyAgICAvLyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sKTsKKwogICAgIEhU
TUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmly
dHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRl
eHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKGtpbmQsIGxh
YmVsLCBsYW5ndWFnZSkKK0xvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhUZXh0
VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5n
Q2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNrKHRyYWNrQ2xp
ZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIFRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2sp
CisgICAgLCBtX2xvYWRpbmdDbGllbnQobG9hZGluZ0NsaWVudCkKICAgICAsIG1faXNEZWZhdWx0
KGlzRGVmYXVsdCkKIHsKIH0KQEAgLTQxLDQzICs0MiwzMSBAQCBMb2FkYWJsZVRleHRUcmFjazo6
fkxvYWRhYmxlVGV4dFRyYWNrKCkKIHsKIH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9h
ZChjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3Zv
aWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBtX3BhcnNlci5sb2FkKHVybCwgY29u
dGV4dCwgdGhpcyk7CisgICAgaWYgKCFtX2N1ZUxvYWRlcikKKyAgICAgICAgbV9jdWVMb2FkZXIg
PSBDdWVMb2FkZXI6OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsKKyAgICBtX2N1ZUxvYWRlci0+bG9h
ZCh1cmwpOwogfQogCi1ib29sIExvYWRhYmxlVGV4dFRyYWNrOjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB1cmwpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKEN1
ZUxvYWRlciogbG9hZGVyKQogewotICAgIHJldHVybiBtX3BhcnNlci5zdXBwb3J0c1R5cGUodXJs
KTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9jdWVMb2FkZXIgPT0gbG9hZGVyKTsK
IAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCgpCi17Ci0gICAgLy8gRklY
TUUoNjI4ODMpOiBGZXRjaCBuZXcgY3VlcyBmcm9tIHBhcnNlciBhbmQgdGVtcG9yYXJpbHkgc3Rv
cmUgdG8gZ2l2ZSB0byBDdWVMb2FkZXJDbGllbnQgd2hlbiBmZXRjaE5ld0N1ZXNGcm9tTG9hZGVy
IGlzIGNhbGxlZC4KKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBM
b2FkYWJsZVRleHRUcmFjazo6dHJhY2tMb2FkU3RhcnRlZCgpCit2b2lkIExvYWRhYmxlVGV4dFRy
YWNrOjpjdWVMb2FkaW5nU3RhcnRlZChDdWVMb2FkZXIqIGxvYWRlcikKIHsKKyAgICBBU1NFUlRf
VU5VU0VEKGxvYWRlciwgbV9jdWVMb2FkZXIgPT0gbG9hZGVyKTsKKyAgICAKICAgICBzZXRSZWFk
eVN0YXRlKFRleHRUcmFjazo6TG9hZGluZyk7CiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6
OnRyYWNrTG9hZEVycm9yKCkKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21w
bGV0ZWQoQ3VlTG9hZGVyKiBsb2FkZXIsIGJvb2wpCiB7Ci0gICAgc2V0UmVhZHlTdGF0ZShUZXh0
VHJhY2s6OkVycm9yKTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbV9jdWVMb2FkZXIg
PT0gbG9hZGVyKTsKIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6dHJhY2tMb2FkQ29tcGxldGVk
KCkKLXsKLSAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKLX0KLQotdm9pZCBM
b2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0xvYWRlZCgpCi17Ci0gICAgLy8gRklYTUUoNjI4ODUp
OiBUZWxsIHRoZSBjbGllbnQgdG8gZmV0Y2ggdGhlIGxhdGVzdCBjdWVzLgotfQotCi12b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JikK
LXsKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDQy
ICsyOSw0NSBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkN1ZUxvYWRl
ci5oIgotI2luY2x1ZGUgIkN1ZVBhcnNlci5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgotI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBI
VE1MVHJhY2tFbGVtZW50OworY2xhc3MgTG9hZGFibGVUZXh0VHJhY2s7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgVGV4dFRyYWNrOwotY2xhc3MgVGV4dFRyYWNrQ3VlOwog
Ci1jbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHB1YmxpYyBDdWVQ
YXJzZXJDbGllbnQsIHB1YmxpYyBDdWVMb2FkZXIgeworY2xhc3MgVGV4dFRyYWNrTG9hZGluZ0Ns
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHZpcnR1YWwgflRleHRUcmFja0xv
YWRpbmdDbGllbnQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTG9hZGlu
Z0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykg
PSAwOworfTsKKworY2xhc3MgTG9hZGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrLCBw
cml2YXRlIEN1ZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBU
ZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZh
dWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2FkYWJsZVRleHRUcmFj
ayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBsb2FkaW5nQ2xpZW50LCBr
aW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5M
b2FkYWJsZVRleHRUcmFjaygpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKICAgICBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRy
YWNrTG9hZFN0YXJ0ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tMb2FkRXJyb3IoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdHJhY2tMb2FkQ29tcGxldGVkKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
bmV3Q3Vlc0xvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9y
PFRleHRUcmFja0N1ZSo+Jik7Ci0KIHByaXZhdGU6Ci0gICAgTG9hZGFibGVUZXh0VHJhY2soY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCk7CisgICAgLy8gQ3VlTG9hZGVyQ2xpZW50CisgICAgdmlydHVh
bCBib29sIHNob3VsZExvYWRDdWVzKEN1ZUxvYWRlciopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbmV3Q3Vlc0F2YWlsYWJsZShDdWVMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY3VlTG9hZGluZ1N0YXJ0ZWQoQ3VlTG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxv
YWRpbmdDb21wbGV0ZWQoQ3VlTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKTsKIAotICAgIEN1
ZVBhcnNlciBtX3BhcnNlcjsKKyAgICBMb2FkYWJsZVRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQq
LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CiAKKyAg
ICBPd25QdHI8Q3VlTG9hZGVyPiBtX2N1ZUxvYWRlcjsKKyAgICBUZXh0VHJhY2tMb2FkaW5nQ2xp
ZW50KiBtX2xvYWRpbmdDbGllbnQ7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFj
ay5jcHAJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4
dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLU11dGFibGVUZXh0VHJhY2s6Ok11dGFibGVUZXh0VHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQot
ICAgIDogVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKK011dGFibGVUZXh0VHJhY2s6
Ok11dGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQor
ICAgIDogVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIFRleHRU
cmFjazo6TXV0YWJsZVRleHRUcmFjaykKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9NdXRhYmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9N
dXRhYmxlVGV4dFRyYWNrLmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9NdXRhYmxlVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRUcmFja0N1ZTsKIAotY2xhc3MgTXV0YWJs
ZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHB1YmxpYyBDdWVMb2FkZXIgeworY2xhc3Mg
TXV0YWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE11dGFibGVUZXh0VHJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TXV0YWJsZVRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogdHJh
Y2tDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCA9IGVtcHR5
U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSBlbXB0eVN0cmluZygpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhYmxlVGV4dFRyYWNrKGtpbmQsIGxhYmVs
LCBsYW5ndWFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGFibGVUZXh0VHJh
Y2sodHJhY2tDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOwogICAgIH0KICAgICB2aXJ0
dWFsIH5NdXRhYmxlVGV4dFRyYWNrKCkgeyB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7
CiAKIHByaXZhdGU6Ci0gICAgTXV0YWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIE11dGFibGVU
ZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDk3NTYw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxNyArMzgsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UZXh0VHJhY2s6OlRl
eHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UpCitUZXh0VHJhY2s6OlRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqIGNs
aWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlLCBUeXBlIHRyYWNrVHlwZSkKICAgICA6IG1fa2luZChraW5kKQogICAgICwg
bV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgLCBtX3JlYWR5
U3RhdGUoVGV4dFRyYWNrOjpOb25lKQogICAgICwgbV9tb2RlKFRleHRUcmFjazo6U2hvd2luZykK
KyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fdHlwZSh0cmFja1R5cGUpCiB7CiB9CiAK
IFRleHRUcmFjazo6flRleHRUcmFjaygpCiB7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkpOworICAgIHNl
dENsaWVudCgwKTsKIH0KIAogU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0CkBAIC03NCw2
ICs3OSw4IEBAIFRleHRUcmFjazo6UmVhZHlTdGF0ZSBUZXh0VHJhY2s6OnJlYWR5U3QKIHZvaWQg
VGV4dFRyYWNrOjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgc3RhdGUpCiB7CiAgICAgbV9yZWFk
eVN0YXRlID0gc3RhdGU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dGV4
dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQodGhpcyk7CiB9CiAKIFRleHRUcmFjazo6TW9kZSBUZXh0
VHJhY2s6Om1vZGUoKSBjb25zdApAQCAtODUsOSArOTIsMTEgQEAgdm9pZCBUZXh0VHJhY2s6OnNl
dE1vZGUodW5zaWduZWQgc2hvcnQgbQogewogICAgIC8vIDQuOC4xMC4xMi41IE9uIHNldHRpbmcg
dGhlIG1vZGUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgbm90IGVpdGhlciAwLCAxLCBvciAyLAogICAg
IC8vIHRoZSB1c2VyIGFnZW50IG11c3QgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2Vw
dGlvbi4KLSAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2s6Ok9mZiB8fCBtb2RlID09IFRleHRUcmFj
azo6SGlkZGVuIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpTaG93aW5nKQorICAgIGlmIChtb2RlID09
IFRleHRUcmFjazo6T2ZmIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpIaWRkZW4gfHwgbW9kZSA9PSBU
ZXh0VHJhY2s6OlNob3dpbmcpIHsKICAgICAgICAgbV9tb2RlID0gc3RhdGljX2Nhc3Q8TW9kZT4o
bW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2Ns
aWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7CisgICAgfSBlbHNlCiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMjEgKzM2LDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUxp
c3Q7CiAKIGNsYXNzIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4
dFRyYWNrQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVD
aGFuZ2VkKFRleHRUcmFjayopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hh
bmdlZChUZXh0VHJhY2sqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChU
ZXh0VHJhY2sqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5n
ZWQoVGV4dFRyYWNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZChUZXh0VHJhY2sqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQoVGV4
dFRyYWNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFj
ayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFJlZlB0cjxUZXh0
VHJhY2tDdWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0
VHJhY2sqLCBSZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAwOwogfTsKIAogY2xhc3MgVGV4dFRyYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFjayhraW5kLCBsYWJlbCwgbGFu
Z3VhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY2xpZW50LCBr
aW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIEJhc2VUZXh0VHJhY2spKTsKICAgICB9CiAgICAgdmlydHVh
bCB+VGV4dFRyYWNrKCk7CiAKQEAgLTU4LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBs
YWJlbCgpIGNvbnN0OwogICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OwogCi0gICAgZW51bSBS
ZWFkeVN0YXRlIHsgTm9uZSwgTG9hZGluZywgTG9hZGVkLCBFcnJvciB9OworICAgIGVudW0gUmVh
ZHlTdGF0ZSB7IE5vbmUgPSAwLCBMb2FkaW5nID0gMSwgTG9hZGVkID0gMiwgRXJyb3IgPSAzIH07
CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAKICAgICBlbnVtIE1vZGUgeyBP
ZmYgPSAwLCBIaWRkZW4gPSAxLCBTaG93aW5nID0gMiB9OwpAQCAtNzEsOCArNzYsMTQgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIG1vZGVDaGFuZ2Vk
KCk7CiAKKyAgICBlbnVtIFR5cGUgeyBCYXNlVGV4dFRyYWNrLCBNdXRhYmxlVGV4dFRyYWNrLCBM
b2FkYWJsZVRleHRUcmFjayB9OworICAgIFR5cGUgdHJhY2tUeXBlKCkgeyByZXR1cm4gbV90eXBl
OyB9CisKKyAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9
CisgICAgdm9pZCBzZXRDbGllbnQoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQg
PSBjbGllbnQ7IH0KKwogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFRl
eHRUcmFjayhUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFR5cGUgdHJhY2tUeXBlKTsKIAogICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKIApAQCAtODQsNyArOTUsOCBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2xhbmd1YWdlOwogICAgIFRleHRUcmFjazo6UmVhZHlTdGF0ZSBt
X3JlYWR5U3RhdGU7CiAgICAgVGV4dFRyYWNrOjpNb2RlIG1fbW9kZTsKLQorICAgIFRleHRUcmFj
a0NsaWVudCogbV9jbGllbnQ7CisgICAgVHlwZSBtX3R5cGU7IAogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcAko
cmV2aXNpb24gOTc1NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi0jaW5jbHVkZSAiQ3VlUGFyc2VyLmgiCi0KLSNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
Ci0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUN1ZVBhcnNlcjo6Q3VlUGFyc2VyKCkKLXsKLSAgICAvLyBGSVhNRSg2Mjg5Myk6IEltcGxlbWVu
dC4KLX0KLQotQ3VlUGFyc2VyOjp+Q3VlUGFyc2VyKCkKLXsKLSAgICBpZiAobV9sb2FkZXIpCi0g
ICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKLSAgICBtX2xvYWRlciA9IDA7Ci19Ci0KLXZvaWQg
Q3VlUGFyc2VyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBDdWVQYXJzZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCh1cmwpOwotCi0gICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsK
LSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKLSAgICBvcHRp
b25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0czsK
LQotICAgIG1fY2xpZW50ID0gY2xpZW50OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGNvbnRleHQ7Ci0KLSAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShjb250
ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKLX0KLQotYm9vbCBDdWVQYXJzZXI6OnN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FKDYyODkzKTogY2hlY2sgYWdh
aW5zdCBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHR5cGVzCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
b2lkIEN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLyppZGVudGlm
aWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIGlmIChyZXNw
b25zZS5taW1lVHlwZSgpID09ICJ0ZXh0L3Z0dCIpCi0gICAgICAgIGNyZWF0ZVdlYlZUVFBhcnNl
cigpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKLXsKLSAgICAvLyBJZiBtaW1lIHR5cGUgZnJvbSBkaWRSZWNlaXZlUmVz
cG9uc2Ugd2FzIG5vdCBpbmZvcm1hdGl2ZSwgc25pZmYgZmlsZSBjb250ZW50LgotICAgIGlmICgh
bV9wcml2YXRlICYmIFdlYlZUVFBhcnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihkYXRh
LCBsZW5ndGgpKQotICAgICAgICBjcmVhdGVXZWJWVFRQYXJzZXIoKTsKLQotICAgIGlmIChtX3By
aXZhdGUpCi0gICAgICAgIG1fcHJpdmF0ZS0+cGFyc2VCeXRlcyhkYXRhLCBsZW5ndGgpOwotfQot
Ci12b2lkIEN1ZVBhcnNlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUp
Ci17Ci0gICAgbV9jbGllbnQtPnRyYWNrTG9hZENvbXBsZXRlZCgpOwotfQotCi12b2lkIEN1ZVBh
cnNlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikKLXsKLSAgICBtX2NsaWVudC0+dHJh
Y2tMb2FkRXJyb3IoKTsKLX0KLQotdm9pZCBDdWVQYXJzZXI6OmZldGNoUGFyc2VkQ3VlcyhWZWN0
b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpCi17Ci0gICAgLy8gRklYTUUoNjI4OTMpOiBJbXBs
ZW1lbnQuCi19Ci0KLXZvaWQgQ3VlUGFyc2VyOjpuZXdDdWVzUGFyc2VkKCkKLXsKLSAgICBtX2Ns
aWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6Y3JlYXRlV2ViVlRU
UGFyc2VyKCkKLXsKLSAgICBpZiAoIW1fcHJpdmF0ZSkgewotICAgICAgICBtX3ByaXZhdGUgPSBX
ZWJWVFRQYXJzZXI6OmNyZWF0ZSh0aGlzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAg
ICAgICBtX2NsaWVudC0+dHJhY2tMb2FkU3RhcnRlZCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
Q3VlUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQ
YXJzZXIuaAkocmV2aXNpb24gOTc1NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1
ZVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDdWVQYXJz
ZXJfaAotI2RlZmluZSBDdWVQYXJzZXJfaAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi0j
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgVGV4dFRyYWNrQ3VlOwotCi1jbGFzcyBDdWVQYXJzZXJDbGllbnQgewot
cHVibGljOgotICAgIHZpcnR1YWwgfkN1ZVBhcnNlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVh
bCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZFN0
YXJ0ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZEVycm9yKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0cmFja0xvYWRDb21wbGV0ZWQoKSA9IDA7Ci19OwotCi1jbGFzcyBDdWVQ
YXJzZXIgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCwgQ3VlUGFyc2VyUHJpdmF0ZUNs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgQ3VlUGFyc2VyKCk7Ci0gICAgdmlydHVhbCB+Q3VlUGFyc2Vy
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgZG91YmxlIC8qZmluaXNoVGltZSovKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0KLSAgICB2b2lk
IGxvYWQoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEN1ZVBhcnNlckNs
aWVudCopOwotICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9p
ZCBmZXRjaFBhcnNlZEN1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKTsKLSAgICB2
b2lkIG5ld0N1ZXNQYXJzZWQoKTsKLQotcHJvdGVjdGVkOgotICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGNy
ZWF0ZVdlYlZUVFBhcnNlcigpOwotIAotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xv
YWRlcjsKLSAgICBPd25QdHI8Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2YXRlOwot
ICAgIEN1ZVBhcnNlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1
ZVBhcnNlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0N1ZVBhcnNlclByaXZhdGUuaAkocmV2aXNpb24gOTc1NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgQ3VlUGFyc2VyUHJpdmF0ZV9oCi0jZGVmaW5lIEN1ZVBhcnNlUHJpdmF0ZV9o
Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
dWVQYXJzZXJQcml2YXRlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5DdWVQYXJzZXJQ
cml2YXRlQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpID0g
MDsKLX07Ci0KLWNsYXNzIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5DdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNl
KCkgeyB9Ci0KLSAgICAvLyBJbnB1dCBkYXRhIHRvIHRoZSBwYXJzZXIgdG8gcGFyc2UuCi0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKSA9IDA7Ci0KLSAg
ICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIGxhc3QgcGFyc2VkIGN1ZXMgdG8gY2FsbGVyLgot
ICAgIHZpcnR1YWwgdm9pZCBmZXRjaFBhcnNlZEN1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tD
dWU+ID4mKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNl
KCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCShyZXZpc2lv
biA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMjcgKzQyLDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY29uc3QgaW50IHNlY29uZHNQZXJIb3VyID0gMzYwMDsKK2NvbnN0IGludCBzZWNvbmRzUGVy
TWludXRlID0gNjA7Citjb25zdCBkb3VibGUgbWFsZm9ybWVkVGltZSA9IC0xOworY29uc3QgdW5z
aWduZWQgYm9tTGVuZ3RoID0gMzsKK2NvbnN0IHVuc2lnbmVkIGZpbGVJZGVudGlmZXJMZW5ndGgg
PSA2OworICAgIAordW5zaWduZWQgV2ViVlRUUGFyc2VyOjpmaWxlSWRlbnRpZmllck1heGltdW1M
ZW5ndGgoKQoreworICAgIHJldHVybiBib21MZW5ndGggKyBmaWxlSWRlbnRpZmVyTGVuZ3RoOwor
fQorCitpbmxpbmUgYm9vbCBoYXNMb25nV2ViVlRUSWRlbnRpZmllcihTdHJpbmcgbGluZSkKK3sK
KyAgICAvLyBJZiBsaW5lIGlzIG1vcmUgdGhhbiBzaXggY2hhcmFjdGVycyAuLi4KKyAgICBpZiAo
bGluZS5sZW5ndGgoKSA8IGZpbGVJZGVudGlmZXJMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIGJ1dCB0aGUgZmlyc3Qgc2l4IGNoYXJhY3RlcnMgZG8gbm90IGV4YWN0bHkg
ZXF1YWwgIldFQlZUVCIgLi4uCisgICAgaWYgKGxpbmUuc3Vic3RyaW5nKDAsIGZpbGVJZGVudGlm
ZXJMZW5ndGgpICE9ICJXRUJWVFQiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBv
ciB0aGUgc2V2ZW50aCBjaGFyYWN0ZXIgaXMgbmVpdGhlciBhIHNwYWNlIG5vciBhIHRhYiBjaGFy
YWN0ZXIsIHRoZW4gYWJvcnQuCisgICAgaWYgKGxpbmVbZmlsZUlkZW50aWZlckxlbmd0aF0gIT0g
JyAnICYmIGxpbmVbZmlsZUlkZW50aWZlckxlbmd0aF0gIT0gJ1x0JykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNS
ZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
IHsKICAgICAvLyBBIFdlYlZUVCBmaWxlIGlkZW50aWZpZXIgY29uc2lzdHMgb2YgYW4gb3B0aW9u
YWwgQk9NIGNoYXJhY3RlciwKICAgICAvLyB0aGUgc3RyaW5nICJXRUJWVFQiIGZvbGxvd2VkIGJ5
IGFuIG9wdGlvbmFsIHNwYWNlIG9yIHRhYiBjaGFyYWN0ZXIsCiAgICAgLy8gYW5kIGFueSBudW1i
ZXIgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgbGluZSB0ZXJtaW5hdG9ycyAuLi4KICAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IDA7Ci0gICAgaWYgKGxlbmd0aCA+PSAzICYmIGRhdGFbMF0gPT0g
J1x4RUYnICYmIGRhdGFbMV0gPT0gJ1x4QkInICYmIGRhdGFbMl0gPT0gJ1x4QkYnKQotICAgICAg
ICBwb3NpdGlvbiArPSAzOworICAgIGlmIChsZW5ndGggPj0gYm9tTGVuZ3RoICYmIGRhdGFbMF0g
PT0gJ1x4RUYnICYmIGRhdGFbMV0gPT0gJ1x4QkInICYmIGRhdGFbMl0gPT0gJ1x4QkYnKQorICAg
ICAgICBwb3NpdGlvbiArPSBib21MZW5ndGg7CiAgICAgU3RyaW5nIGxpbmUgPSBjb2xsZWN0TmV4
dExpbmUoZGF0YSwgbGVuZ3RoLCAmcG9zaXRpb24pOwotICAgICAgICAKLSAgICBpZiAobGluZS5s
ZW5ndGgoKSA8IDYpCisKKyAgICBpZiAobGluZS5sZW5ndGgoKSA8IGZpbGVJZGVudGlmZXJMZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobGluZS5sZW5ndGgoKSA9PSA2ICYm
IGxpbmUgIT0gIldFQlZUVCIpCisgICAgaWYgKGxpbmUubGVuZ3RoKCkgPT0gZmlsZUlkZW50aWZl
ckxlbmd0aCAmJiBsaW5lICE9ICJXRUJWVFQiKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBJZiBsaW5lIGlzIG1vcmUgdGhhbiBzaXggY2hhcmFjdGVycwotICAgIC8vIGJ1dCB0aGUg
Zmlyc3Qgc2l4IGNoYXJhY3RlcnMgZG8gbm90IGV4YWN0bHkgZXF1YWwgIldFQlZUVCIsCi0gICAg
Ly8gb3IgdGhlIHNldmVudGggY2hhcmFjdGVyIGlzIG5laXRoZXIgYSBzcGFjZSBub3IgYSB0YWIg
Y2hhcmFjdGVyLCB0aGVuIGFib3J0LgotICAgIGlmIChsaW5lLmxlbmd0aCgpID4gNiAmJiAobGlu
ZS5zdWJzdHJpbmcoMCwgNikgIT0gIldFQlZUVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IChsaW5lWzZdICE9ICcgJyAmJiBsaW5lWzZdICE9ICdcdCcpKSkKKyAgICBpZiAoIWhh
c0xvbmdXZWJWVFRJZGVudGlmaWVyKGxpbmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODIsMTUgKzEwNiwxNSBAQCBTdHJpbmcgV2ViVlRUUGFy
c2VyOjpjb2xsZWN0V29yZChjb25zdCBTCiAgICAgcmV0dXJuIHN0cmluZy50b1N0cmluZygpOwog
fQogCi1XZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcihDdWVQYXJzZXJQcml2YXRlQ2xpZW50KiBj
bGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitXZWJWVFRQYXJzZXI6Oldl
YlZUVFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQog
ICAgICwgbV9zdGF0ZShJbml0aWFsKQogICAgICwgbV90b2tlbml6ZXIoV2ViVlRUVG9rZW5pemVy
OjpjcmVhdGUoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKLSAgICBtX2NsaWVudCA9IGNs
aWVudDsKIH0KIAotdm9pZCBXZWJWVFRQYXJzZXI6OmZldGNoUGFyc2VkQ3VlcyhWZWN0b3I8UmVm
UHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3VlcykKK3ZvaWQgV2ViVlRUUGFyc2VyOjpnZXRO
ZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKQogewogICAg
IG91dHB1dEN1ZXMgPSBtX2N1ZWxpc3Q7CiAgICAgbV9jdWVsaXN0LmNsZWFyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgJKHJldmlzaW9uIDk3NTYwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTEgKzMzLDExIEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNs
dWRlICJDdWVQYXJzZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
V2ViVlRUVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
QEAgLTQ1LDIxICs0NSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBpbnQgc2Vjb25kc1BlckhvdXIgPSAzNjAwOwot
c3RhdGljIGNvbnN0IGludCBzZWNvbmRzUGVyTWludXRlID0gNjA7Ci1zdGF0aWMgY29uc3QgZG91
YmxlIG1hbGZvcm1lZFRpbWUgPSAtMTsKK2NsYXNzIFdlYlZUVFBhcnNlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViVlRUUGFyc2VyQ2xpZW50KCkgeyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9IDA7Cit9OwogCi1jbGFzcyBXZWJWVFRQYXJzZXIg
OiBwdWJsaWMgQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSB7CitjbGFzcyBXZWJWVFRQYXJzZXIg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZUVFBhcnNlcigpIHsgfQogICAgIAogICAgIGVu
dW0gUGFyc2VTdGF0ZSB7IEluaXRpYWwsIEhlYWRlciwgSWQsIFRpbWluZ3NBbmRTZXR0aW5ncywg
Q3VlVGV4dCwgQmFkQ3VlIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJWVFRQYXJzZXI+
IGNyZWF0ZShDdWVQYXJzZXJQcml2YXRlQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVlRUUGFyc2VyPiBjcmVh
dGUoV2ViVlRUUGFyc2VyQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlZUVFBhcnNlcihj
bGllbnQsIGNvbnRleHQpKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHVuc2lnbmVkIGZpbGVJ
ZGVudGlmaWVyTWF4aW11bUxlbmd0aCgpOwogICAgIHN0YXRpYyBib29sIGhhc1JlcXVpcmVkRmls
ZUlkZW50aWZpZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1JlY29nbml6ZWRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdO
YW1lKQpAQCAtNzksMTIgKzgzLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNvbGxl
Y3REaWdpdHMoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQqKTsKICAgICBzdGF0aWMgU3RyaW5nIGNv
bGxlY3RXb3JkKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZmV0Y2hQYXJzZWRDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7Ci0gICAgCisg
ICAgLy8gSW5wdXQgZGF0YSB0byB0aGUgcGFyc2VyIHRvIHBhcnNlLgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAv
LyBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIGxhc3QgcGFyc2VkIGN1ZXMgdG8gY2FsbGVyLgorICAg
IHZpcnR1YWwgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7
CisKIHByb3RlY3RlZDoKLSAgICBXZWJWVFRQYXJzZXIoQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCos
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2Vy
Q2xpZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBQYXJzZVN0YXRlIG1f
c3RhdGU7CkBAIC0xMTYsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gbV9hdHRhY2htZW50Um9vdDsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbV9j
dXJyZW50Tm9kZTsKIAotICAgIEN1ZVBhcnNlclByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAg
IFdlYlZUVFBhcnNlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICBWZWN0b3I8UmVmUHRyPFRleHRU
cmFja0N1ZT4gPiBtX2N1ZWxpc3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxNjEgQEAKIAogI2luY2x1ZGUgIkN1
ZUxvYWRlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVkQ3Vlcy5oIgorI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IAorQ3VlTG9hZGVyOjpDdWVMb2FkZXIoQ3VlTG9hZGVyQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY3VlTG9hZFRpbWVyKHRo
aXMsICZDdWVMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKQorICAgICwgbV9zdGF0ZShJZGxlKQor
ICAgICwgbV9wYXJzZU9mZnNldCgwKQorICAgICwgbV9uZXdDdWVzQXZhaWxhYmxlKGZhbHNlKQor
eworfQorCitDdWVMb2FkZXI6On5DdWVMb2FkZXIoKQoreworICAgIGlmIChtX2NhY2hlZEN1ZURh
dGEpCisgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorCit2
b2lkIEN1ZUxvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8Q3VlTG9hZGVyPiogdGltZXIp
Cit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fY3VlTG9hZFRpbWVyKTsK
KyAgICAKKyAgICBpZiAobV9uZXdDdWVzQXZhaWxhYmxlKSB7CisgICAgICAgIG1fbmV3Q3Vlc0F2
YWlsYWJsZSA9IGZhbHNlOworICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc0F2YWlsYWJsZSh0aGlz
KTsgCisgICAgfQorICAgIAorICAgIGlmIChtX3N0YXRlID49IEZpbmlzaGVkKQorICAgICAgICBt
X2NsaWVudC0+Y3VlTG9hZGluZ0NvbXBsZXRlZCh0aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7Cit9
CisKK3ZvaWQgQ3VlTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCit7CisgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CisgICAg
CisgICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNvdXJjZS0+ZGF0YSgpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIgPSByZXNvdXJjZS0+ZGF0
YSgpOworICAgIGlmIChtX3BhcnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBkYXRhOworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAg
ICAKKyAgICBpZiAoIW1fY3VlUGFyc2VyKSB7CisgICAgICAgIGlmIChyZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpID09ICJ0ZXh0L3Z0dCIpCisgICAgICAgICAgICBtX2N1ZVBhcnNlciA9
IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKHRoaXMsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VlZCB1bnRpbCB3ZSBoYXZl
IGVub3VnaCBkYXRhIHRvIGNoZWNrIGZvciB0aGUgV2ViVlRUIG1hZ2ljIGlkZW50aWZpZXIuCisg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGVuZ3RoID0gV2ViVlRUUGFyc2VyOjpmaWxl
SWRlbnRpZmllck1heGltdW1MZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChidWZmZXItPnNpemUo
KSA8IGlkZW50aWZpZXJMZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG9mZnNldCA9IDA7CisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwgaWRlbnRpZmll
ckxlbmd0aCAmJiAobGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShkYXRhLCBvZmZzZXQpKSkg
eworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBpZGVudGlmaWVyTGVuZ3RoKQorICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSBpZGVudGlmaWVyTGVuZ3RoOworICAgICAgICAgICAgICAg
IGlkZW50aWZpZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0
ICs9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KCFXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIoaWRlbnRpZmllci5kYXRh
KCksIGlkZW50aWZpZXIuc2l6ZSgpKSkgeworICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkN1
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgLSBmaWxlIFwiJXNcIiBkb2VzIG5vdCBoYXZlIFdlYlZU
VCBtYWdpYyBoZWFkZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlc3BvbnNl
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IEZhaWxlZDsKKyAgICAgICAgICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBtX2N1ZVBhcnNlciA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKHRoaXMsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQVNT
RVJUKG1fY3VlUGFyc2VyKTsKKyAgICAKKyAgICB3aGlsZSAoKGxlbmd0aCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoZGF0YSwgbV9wYXJzZU9mZnNldCkpKSB7CisgICAgICAgIG1fY3VlUGFyc2VyLT5w
YXJzZUJ5dGVzKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcGFyc2VPZmZzZXQgKz0gbGVuZ3Ro
OworICAgIH0KKyAgICAKK30KKwordm9pZCBDdWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09IHJl
c291cmNlKTsKKyAgICAKKyAgICBpZiAoIXJlc291cmNlLT5kYXRhKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7Cit9CisKK3ZvaWQgQ3Vl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAg
QVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CisKKyAgICBwcm9jZXNzTmV3Q3Vl
RGF0YShyZXNvdXJjZSk7CisKKyAgICBtX3N0YXRlID0gcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSA/IEZhaWxlZCA6IEZpbmlzaGVkOworCisgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgCisgICAg
bV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgbV9jYWNoZWRDdWVEYXRh
ID0gMDsKK30KKworYm9vbCBDdWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQoreworICAg
IGlmICghbV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkgeworICAgICAgICBtX2NhY2hlZEN1
ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhID0gMDsK
KyAgICB9CisgICAgCisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgCisgICAgUmVzb3VyY2VSZXF1ZXN0IGN1
ZVJlcXVlc3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkpOworICAgIENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpOworICAgIG1fY2FjaGVkQ3VlRGF0YSA9IHN0YXRpY19jYXN0PENhY2hlZEN1ZXMqPihj
YWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdEN1ZXMoY3VlUmVxdWVzdCkpOworICAgIGlmICht
X2NhY2hlZEN1ZURhdGEpCisgICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+YWRkQ2xpZW50KHRoaXMp
OworICAgIAorICAgIG1fY2xpZW50LT5jdWVMb2FkaW5nU3RhcnRlZCh0aGlzKTsKKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDdWVMb2FkZXI6Om5ld0N1ZXNQYXJzZWQoKQorewor
ICAgIGlmIChtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX25ld0N1ZXNBdmFpbGFibGUgPSB0cnVlOworICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KIAotdm9pZCBDdWVMb2FkZXI6OnNldEN1ZUxvYWRlckNsaWVudChDdWVMb2Fk
ZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgQ3VlTG9hZGVyOjpnZXROZXdDdWVzKFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKQogewotICAgIG1fY2xpZW50ID0gY2xpZW50
OworICAgIEFTU0VSVChtX2N1ZVBhcnNlcik7CisgICAgaWYgKG1fY3VlUGFyc2VyKQorICAgICAg
ICBtX2N1ZVBhcnNlci0+Z2V0TmV3Q3VlcyhvdXRwdXRDdWVzKTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9DdWVMb2FkZXIuaAkocmV2aXNpb24gOTc1NzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3VlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMTcgKzEwLDE3IEBACiAgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgQ3VlTG9hZGVyX2gKQEAgLTI4LDQxICsyOCw2OSBA
QAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgIkNhY2hlZEN1ZXMuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdWVMb2Fk
ZXI7Ci1jbGFzcyBUZXh0VHJhY2tDdWU7Ci1jbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotLy8gTGlzdGVuZXIgdG8gQ3VlTG9hZGVyLgogY2xh
c3MgQ3VlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdWVMb2FkZXJDbGll
bnQoKSB7IH0KLQotICAgIC8vIFF1ZXJpZXMgQ3VlTG9hZGVyIGZvciBuZXdlc3QgY3Vlcy4KLSAg
ICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdDdWVzRnJvbUxvYWRlcihDdWVMb2FkZXIqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCopID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZEN1ZXMoQ3VlTG9hZGVy
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzQXZhaWxhYmxlKEN1ZUxvYWRlciopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0ZWQoQ3VlTG9hZGVyKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKEN1ZUxvYWRlciosIGJvb2wgbG9h
ZGluZ0ZhaWxlZCkgPSAwOwogfTsKIAotY2xhc3MgQ3VlTG9hZGVyIHsKK2NsYXNzIEN1ZUxvYWRl
ciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHJpdmF0ZSBXZWJWVFRQYXJzZXJDbGll
bnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1ZUxvYWRlcik7IAorICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgfkN1ZUxvYWRlcigpIHsgfQot
Ci0gICAgdm9pZCBzZXRDdWVMb2FkZXJDbGllbnQoQ3VlTG9hZGVyQ2xpZW50Kik7Ci0KLSAgICAv
LyBJbmZvcm1zIGNsaWVudCB0aGF0IG5ldyBjdWVzIGhhdmUgYmVlbiBsb2FkZWQuCi0gICAgdmly
dHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKSA9IDA7Ci0KLSAgICAvLyBUcmFuc2ZlcnMgb3duZXJz
aGlwIG9mIGN1cnJlbnRseSBsb2FkZWQgY3Vlcy4KLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdl
c3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYgY3VlcykgPSAwOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPEN1ZUxvYWRlcj4gY3JlYXRlKEN1ZUxvYWRlckNsaWVudCogY2xpZW50LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDdWVMb2FkZXIoY2xpZW50LCBjb250ZXh0KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkN1
ZUxvYWRlcigpOworICAgIAorICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJik7CisgICAgdm9pZCBn
ZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKKyAg
ICAKK3ByaXZhdGU6CisKKyAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAorICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShDYWNoZWRSZXNvdXJjZSopOworICAgIAorICAgIC8vIFdlYlZUVFBhcnNl
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCk7CisgICAgCisgICAgQ3Vl
TG9hZGVyKEN1ZUxvYWRlckNsaWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAK
KyAgICB2b2lkIHByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBj
dWVMb2FkVGltZXJGaXJlZChUaW1lcjxDdWVMb2FkZXI+Kik7CiAKLXByb3RlY3RlZDoKKyAgICBl
bnVtIFN0YXRlIHsgSWRsZSwgTG9hZGluZywgRmluaXNoZWQsIEZhaWxlZCB9OworICAgIAogICAg
IEN1ZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYlZUVFBhcnNlcj4gbV9j
dWVQYXJzZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ3Vlcz4gbV9jYWNoZWRD
dWVEYXRhOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKKyAgICBUaW1lcjxDdWVMb2FkZXI+IG1fY3VlTG9hZFRpbWVyOworICAgIFN0YXRlIG1f
c3RhdGU7CisgICAgdW5zaWduZWQgbV9wYXJzZU9mZnNldDsKKyAgICBib29sIG1fbmV3Q3Vlc0F2
YWlsYWJsZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111377</attachid>
            <date>2011-10-17 21:36:51 -0700</date>
            <delta_ts>2011-10-18 08:09:07 -0700</delta_ts>
            <desc>Yet another patch. This time to appease my friend the style bot.</desc>
            <filename>patch_cue_loader_9.txt</filename>
            <type>text/plain</type>
            <size>54859</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NzEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTEtMTAtMTcgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHRoZSBuZXcgY2Fj
aGVkIGN1ZSBsb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwMjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZWQuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlIEN1ZVBhcnNlci5jcHAvaCBhbmQgQ3VlUGFyc2VyUHJp
dmF0ZS5oLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hh
bmdlZCk6IE5ldywgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tDcmVhdGVkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRD
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a1JlbW92ZUN1ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OmxvYWQpOiBVcGRhdGUgZm9yIGludGVyZmFjZSBjaGFuZ2UKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0xvYWRpbmdDb21wbGV0
ZWQpOiBOZXcsIGRpc3BhdGNoICdsb2FkJyBvciAnZXJyb3InIGV2ZW50LgorICAgICAgICAqIGh0
bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0
VHJhY2spOiBBZGQgVGV4dFRyYWNrQ2xpZW50IGFuZCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2s6OmxvYWQpOiBNYWtlIHVybCBwYXJhbWV0ZXIgS1VSTCBpbnN0ZWFkIG9mIFN0cmluZy4gQ3Jl
YXRlIHRoZSAKKyAgICAgICAgICAgIGN1ZSBsb2FkZXIsIHRyaWdnZXIgdGhlIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZSk6IE5ldyBj
YWxsYmFjayBmcm9tIHRoZSBsb2FkZXIuIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorCisgICAgICAgICog
aHRtbC9NdXRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0
VHJhY2s6Ok11dGFibGVUZXh0VHJhY2spOiBBZGQgVGV4dFRyYWNrQ2xpZW50IHBhcmFtZXRlci4K
KyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6IEFkZCBUZXh0VHJhY2tD
bGllbnQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp+VGV4dFRyYWNr
KTogVGVsbCB0aGUgY2xpZW50IHRvIHJlbW92ZSBhbGwgY3VlcywgZm9yZ2V0IHRoZSBjbGllbnQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldFJlYWR5U3RhdGUpOiBUZWxsIGNsaWVu
dCBhYm91dCByZWFkeSBzdGF0ZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OnNldE1vZGUpOiBUZWxsIGNsaWVudCBhYm91dCBtb2RlIGNoYW5nZS4KKyAgICAgICAgKiBodG1s
L1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJh
Y2tBZGRDdWVzKTogTmV3IGNsaWVudCBpbnRlcmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjp0cmFja1R5cGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNs
aWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRDbGllbnQpOiBE
aXR0by4KKworICAgICAgICAqIGh0bWwvdHJhY2svQ3VlUGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL0N1ZVBhcnNlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oOiBSZW1vdmVkLgorCisgICAgICAgICogaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpmaWxl
SWRlbnRpZmllck1heGltdW1MZW5ndGgpOiBOZXcsIHJldHVybiBsZW5ndGggb2YgV2ViVlRUIGZp
bGUKKyAgICAgICAgICAgIG1hZ2ljIG51bWJlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBh
cnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcik6IFVwZGF0ZSB0byB1c2UgY29uc3RhbnRz
IGluc3RlYWQgb2YgaGFyZAorICAgICAgICAgICAgY29kZWQgbGVuZ3Rocy4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKTogSW5pdGlhbGl6ZSAibV9jbGllbnQi
IGluIHRoZSBpbml0aWxpemF0aW9uIGxpc3QKKyAgICAgICAgICAgIGluc3RlYWQgb2Ygc2V0dGlu
ZyBpdCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6
OmdldE5ld0N1ZXMpOiBSZW5hbWVkIGZyb20gZmV0Y2hQYXJzZWRDdWVzLgorICAgICAgICAqIGh0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6
OmNyZWF0ZSk6IFRha2UgYSBXZWJWVFRQYXJzZXJDbGllbnQqIGluc3RlYWQgb2YgYSBDdWVQYXJz
ZXJQcml2YXRlQ2xpZW50Ki4KKworICAgICAgICAqIGxvYWRlci9DdWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpDdWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VlTG9hZGVyOjp+Q3VlTG9hZGVyKTogUmVtb3ZlIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkN1ZUxvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQpOiBUZWxsIGNsaWVudCBhYm91dCBuZXcgY2x1
ZXMgYW5kL29yIHRoYXQgdGhlIGxvYWQKKyAgICAgICAgICAgIGhhcyBmaW5pc2hlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOiBQcm9jZXNzIG5ld2x5
IGxvYWRlZCBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6
IERvIGZpbmFsIHByb2Nlc3NpbmcgYXMgbmVjZXNzYXJ5LCBwcmltZSB0aGUgdGltZXIKKyAgICAg
ICAgICAgIHRvIGNhbGwgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpsb2Fk
KTogQ3JlYXRlIHJlc291cmNlIGxvYWRlciwgaW5pdGlhdGUgbG9hZGluZy4KKyAgICAgICAgKFdl
YkNvcmU6OkN1ZUxvYWRlcjo6bmV3Q3Vlc1BhcnNlZCk6IFByaW1lIHRpbWVyIHRvIHRlbGwgY2xp
ZW50IGFib3V0IG5ld2x5IHBhcnNlZCBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVy
OjpnZXROZXdDdWVzKTogR2V0IG5ldyBjdWVzIGZyb20gcGFyc2VyLgorICAgICAgICAqIGxvYWRl
ci9DdWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1ZUxvYWRlcjo6Y3JlYXRlKToKKwog
MjAxMS0xMC0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NzY2Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiA5NzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUyLDcgKzIwNTIsNiBAQCBJRiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAg
ICAgICBodG1sL1RleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWUuY3BwCiAg
ICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKLSAgICAgICAgaHRtbC90cmFjay9DdWVQ
YXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAogICAgICAgICBo
dG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKICAgICAgICAgbG9hZGVyL0N1ZUxvYWRlci5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTc2MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTM5LDkgKzE5MzksNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBcCi0JU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9DdWVQYXJzZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9DdWVQ
YXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFRva2VuLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
OTc2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTU3MzgsOSArNTczOCw2IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oJywKLSAgICAgICAgICAgICdodG1sL3RyYWNrL0N1ZVBhcnNlci5jcHAnLAotICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svQ3VlUGFyc2VyLmgnLAotICAgICAgICAgICAgJ2h0bWwvdHJhY2sv
Q3VlUGFyc2VyUHJpdmF0ZS5oJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDE0Myw5ICs0MTQzLDYgQEAKIAkJQjFBRDRFNkIxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTVBMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVM
aXN0LmggKi87IH07CiAJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzEx
M0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi87IH07CiAJCUIxQUQ0RTc0MTNBMTJB
NDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAq
LzsgfTsKLQkJQjFBRDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3ODEzQTEyQTcy
MDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLzsgfTsKLQkJQjFBRDRFN0MxM0ExMkE3MjAwODQ2
QjI3IC8qIEN1ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oICovOyB9Owot
CQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFN0ExM0ExMkE3MjAw
ODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAw
ODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCUIxRTU0NTdBMTM0NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlh
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIxRTU0NTcxMTM0NjI5MUYwMDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmNwcCAqLzsgfTsK
IAkJQjFFNTQ1N0IxMzQ2MjkxRjAwOTJBNTQ1IC8qIExvY2FsTWVkaWFTdHJlYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTcyMTM0NjI5MUYw
MDkyQTU0NSAvKiBMb2NhbE1lZGlhU3RyZWFtLmggKi87IH07CkBAIC03MDg5LDkgKzcwODYsOSBA
QAogCQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
OUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250
cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRp
YVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxh
eWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2FjaGVkQ3Vlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZEN1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIzNiw5ICsxMTIzMyw2IEBACiAJCUIxQUQ0RTVB
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0N1ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjFBRDRFNzExM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdWVMb2FkZXIuY3BwOyBwYXRoID0gbG9h
ZGVyL0N1ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQjFBRDRF
NzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDdWVMb2FkZXIuaDsgcGF0aCA9IGxvYWRlci9DdWVMb2FkZXIuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlCMUFENEU3ODEzQTEyQTcyMDA4NDZCMjcgLyogQ3Vl
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1ZVBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTc5MTNBMTJBNzIwMDg0
NkIyNyAvKiBDdWVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Vl
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIxQUQ0RTdBMTNBMTJBNzIw
MDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEN1ZVBhcnNlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUU1NDU3MTEzNDYyOTFGMDA5MkE1NDUgLyogTG9jYWxNZWRpYVN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbE1lZGlh
U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1NzIxMzQ2Mjkx
RjAwOTJBNTQ1IC8qIExvY2FsTWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTG9jYWxNZWRpYVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg0NzgsOSArMTg0NzIsNiBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJh
Y2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIxQUQ0
RTc4MTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwICovLAotCQkJCUIxQUQ0RTc5MTNB
MTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCAqLywKLQkJCQlCMUFENEU3QTEzQTEyQTcyMDA4
NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oICovLAogCQkJCTVEMjFBODAwMTNFQ0U1REYwMEJC
NzA2NCAvKiBXZWJWVFRQYXJzZXIuY3BwICovLAogCQkJCTVEMjFBODAxMTNFQ0U1REYwMEJCNzA2
NCAvKiBXZWJWVFRQYXJzZXIuaCAqLywKIAkJCQlCMTBCNjk3RDE0MEMxNzQwMDBCQzFDMjYgLyog
V2ViVlRUVG9rZW4uaCAqLywKQEAgLTIxODc3LDggKzIxODY4LDYgQEAKIAkJCQk1MDFCQTlFMjEz
OTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFB
RDRFNUQxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MUFENEU3NDEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCMUFENEU3QzEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5MkYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjI3MkFEMEU4MkU4RjMwMEU3Rjk3NSAvKiBDdXJzb3JMaXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjA1LDcgKzI1MTk0LDYgQEAKIAkJCQk1MEU1NjZENjEz
OUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MUFENEU1QzEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMUFENEU3QjEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxMUFGMTUxMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNGMTlBMjYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDcsMTAgKzg0Nyw0NiBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUZXh0VHJhY2tzKCkKICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewogICAgICAgICAgICAgSFRNTFRy
YWNrRWxlbWVudCogdHJhY2sgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7
Ci0gICAgICAgICAgICB0cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgICAgICAgICB0cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNr
KikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKQoreworICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja0NyZWF0ZWQoVGV4dFRyYWNrKikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVu
dC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFj
ayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IElt
cGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKK3sKKyAgICAvLyBGSVhNRSg2
Mjg4NSk6IEltcGxlbWVudC4KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KQoreworICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pCit7Cisg
ICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCit9CisKICNlbmRpZgogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRTb3Vy
Y2VBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTU4LDcgKzYyLDExIEBAIGNsYXNzIFdpZGdldDsK
IC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBl
Y2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBs
YXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHByaXZhdGUgQWN0aXZl
RE9NT2JqZWN0IHsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQs
IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIs
IHByaXZhdGUgQWN0aXZlRE9NT2JqZWN0CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICwg
cHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKKyNlbmRpZgorewogcHVibGljOgogICAgIE1lZGlhUGxh
eWVyKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogICAgIApAQCAt
MzM5LDYgKzM0NywxNSBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZvaWQgbG9hZFRleHRUcmFja3MoKTsKKworICAgIC8vIFRleHRUcmFja0NsaWVudAorICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0NyZWF0ZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFj
ayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogI2VuZGlm
CiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBn
ZXN0dXJlIHJlc3RyaWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKIAorI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEyOSwxNCArMTMwLDIwIEBAIGJv
b2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXQKICAgICByZXR1cm4gYXR0cmli
dXRlLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2Fk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6
OmxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiB0
cmFja0NsaWVudCkKIHsKLSAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZShr
aW5kKCksIGxhYmVsKCksIHNyY2xhbmcoKSwgaXNEZWZhdWx0KCkpOworICAgIG1fdHJhY2sgPSBM
b2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKHRyYWNrQ2xpZW50LCB0aGlzLCBraW5kKCksIGxhYmVs
KCksIHNyY2xhbmcoKSwgaXNEZWZhdWx0KCkpOwogCiAgICAgaWYgKGhhc0F0dHJpYnV0ZShzcmNB
dHRyKSkKICAgICAgICAgbV90cmFjay0+bG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNB
dHRyKSwgY29udGV4dCk7CiB9CiAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTG9h
ZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKK3sK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUobG9hZGluZ0ZhaWxlZCA/IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOworfQorICAgIAogfQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCShyZXZpc2lvbiA5NzU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRy
YWNrRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBIVE1MVHJhY2tFbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIFRleHRUcmFja0xvYWRpbmdDbGllbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDksOSArNDksMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJc0Rl
ZmF1bHQoYm9vbCk7CiAgICAgCi0gICAgdm9pZCBsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICB2b2lkIGxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVu
dCopOwogCiBwcml2YXRlOgorCisgICAgLy8gVGV4dFRyYWNrTG9hZGluZ0NsaWVudAorICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwg
Ym9vbCk7CisKICAgICBIVE1MVHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxUcmFja0VsZW1lbnQoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHJldmlzaW9uIDk3NTYwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDggKzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2FkYWJsZVRleHRU
cmFjazo6TG9hZGFibGVUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6IFRl
eHRUcmFjayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCitMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFi
bGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGlu
Z0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKKyAgICA6IFRl
eHRUcmFjayh0cmFja0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBUZXh0VHJhY2s6Okxv
YWRhYmxlVGV4dFRyYWNrKQorICAgICwgbV9sb2FkaW5nQ2xpZW50KGxvYWRpbmdDbGllbnQpCiAg
ICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCiB7CiB9CkBAIC00MSw0MyArNDIsMzEgQEAgTG9h
ZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJsZVRleHRUcmFjaygpCiB7CiB9CiAKLXZvaWQgTG9hZGFi
bGVUZXh0VHJhY2s6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IEtVUkwmIHVy
bCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICByZXR1cm4gbV9wYXJz
ZXIubG9hZCh1cmwsIGNvbnRleHQsIHRoaXMpOworICAgIGlmICghbV9jdWVMb2FkZXIpCisgICAg
ICAgIG1fY3VlTG9hZGVyID0gQ3VlTG9hZGVyOjpjcmVhdGUodGhpcywgY29udGV4dCk7CisgICAg
bV9jdWVMb2FkZXItPmxvYWQodXJsKTsKIH0KIAotYm9vbCBMb2FkYWJsZVRleHRUcmFjazo6c3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3
Q3Vlc0F2YWlsYWJsZShDdWVMb2FkZXIqIGxvYWRlcikKIHsKLSAgICByZXR1cm4gbV9wYXJzZXIu
c3VwcG9ydHNUeXBlKHVybCk7Ci19CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fY3VlTG9h
ZGVyID09IGxvYWRlcik7CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQo
KQotewotICAgIC8vIEZJWE1FKDYyODgzKTogRmV0Y2ggbmV3IGN1ZXMgZnJvbSBwYXJzZXIgYW5k
IHRlbXBvcmFyaWx5IHN0b3JlIHRvIGdpdmUgdG8gQ3VlTG9hZGVyQ2xpZW50IHdoZW4gZmV0Y2hO
ZXdDdWVzRnJvbUxvYWRlciBpcyBjYWxsZWQuCisgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1l
bnQuCiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnRyYWNrTG9hZFN0YXJ0ZWQoKQordm9p
ZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ1N0YXJ0ZWQoQ3VlTG9hZGVyKiBsb2FkZXIp
CiB7CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fY3VlTG9hZGVyID09IGxvYWRlcik7Cisg
ICAgCiAgICAgc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkxvYWRpbmcpOwogfQogCi12b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjp0cmFja0xvYWRFcnJvcigpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNr
OjpjdWVMb2FkaW5nQ29tcGxldGVkKEN1ZUxvYWRlciogbG9hZGVyLCBib29sKQogewotICAgIHNl
dFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpFcnJvcik7Ci19CisgICAgQVNTRVJUX1VOVVNFRChsb2Fk
ZXIsIG1fY3VlTG9hZGVyID09IGxvYWRlcik7CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnRy
YWNrTG9hZENvbXBsZXRlZCgpCi17Ci0gICAgc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkxvYWRl
ZCk7Ci19Ci0KLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNMb2FkZWQoKQotewotICAg
IC8vIEZJWE1FKDYyODg1KTogVGVsbCB0aGUgY2xpZW50IHRvIGZldGNoIHRoZSBsYXRlc3QgY3Vl
cy4KLX0KLQotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6ZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiYpCi17CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJldmlzaW9uIDk3
NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw0MiArMjksNDUgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNp
bmNsdWRlICJDdWVMb2FkZXIuaCIKLSNpbmNsdWRlICJDdWVQYXJzZXIuaCIKICNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKLSNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNr
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFRleHRUcmFjazsKLWNsYXNz
IFRleHRUcmFja0N1ZTsKIAotY2xhc3MgTG9hZGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRy
YWNrLCBwdWJsaWMgQ3VlUGFyc2VyQ2xpZW50LCBwdWJsaWMgQ3VlTG9hZGVyIHsKK2NsYXNzIFRl
eHRUcmFja0xvYWRpbmdDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExv
YWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKKyAgICB2aXJ0
dWFsIH5UZXh0VHJhY2tMb2FkaW5nQ2xpZW50KCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIC8qIGxv
YWRpbmdGYWlsZWQgKi8pID0gMDsKK307CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrIDogcHVi
bGljIFRleHRUcmFjaywgcHJpdmF0ZSBDdWVMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoVGV4dFRyYWNrQ2xpZW50
KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TG9hZGFibGVUZXh0VHJhY2soa2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFja0NsaWVudCwg
bG9hZGluZ0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKICAgICB9
CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKIAotICAgIHZvaWQgbG9hZChjb25z
dCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9pZCBsb2FkKGNvbnN0
IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgYm9vbCBzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpOwotICAg
IHZpcnR1YWwgdm9pZCB0cmFja0xvYWRTdGFydGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNr
TG9hZEVycm9yKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZENvbXBsZXRlZCgpOwotCi0g
ICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hO
ZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOwotCiBwcml2YXRlOgotICAgIExvYWRh
YmxlVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIC8vIEN1ZUxvYWRlckNs
aWVudAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkQ3VlcyhDdWVMb2FkZXIqKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoQ3VlTG9hZGVyKik7
CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFydGVkKEN1ZUxvYWRlciopOworICAgIHZp
cnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKEN1ZUxvYWRlciosIGJvb2wgbG9hZGluZ0Zh
aWxlZCk7CiAKLSAgICBDdWVQYXJzZXIgbV9wYXJzZXI7CisgICAgTG9hZGFibGVUZXh0VHJhY2so
VGV4dFRyYWNrQ2xpZW50KiwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBp
c0RlZmF1bHQpOwogCisgICAgT3duUHRyPEN1ZUxvYWRlcj4gbV9jdWVMb2FkZXI7CisgICAgVGV4
dFRyYWNrTG9hZGluZ0NsaWVudCogbV9sb2FkaW5nQ2xpZW50OwogICAgIGJvb2wgbV9pc0RlZmF1
bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9NdXRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L011dGFibGVUZXh0VHJhY2suY3BwCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4
dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCitN
dXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCogdHJhY2tD
bGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSkKKyAgICA6IFRleHRUcmFjayh0cmFja0NsaWVudCwga2luZCwgbGFiZWws
IGxhbmd1YWdlLCBUZXh0VHJhY2s6Ok11dGFibGVUZXh0VHJhY2spCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiA5NzU2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0VHJhY2tDdWU7
CiAKLWNsYXNzIE11dGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrLCBwdWJsaWMgQ3Vl
TG9hZGVyIHsKK2NsYXNzIE11dGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVUZXh0VHJhY2s+IGNyZWF0ZShUZXh0
VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlID0gZW1wdHlT
dHJpbmcoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YWJsZVRleHRU
cmFjayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNdXRhYmxlVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+TXV0YWJsZVRleHRUcmFjaygpIHsgfQogCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiYpOwogCiBwcml2YXRlOgotICAgIE11dGFibGVUZXh0VHJhY2soY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KTsKKyAgICBNdXRhYmxlVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3Bw
CShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTcgKzM4LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotVGV4dFRyYWNrOjpUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQorVGV4dFRyYWNrOjpUZXh0VHJhY2soVGV4
dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHlwZSB0cmFja1R5cGUpCiAgICAgOiBtX2tp
bmQoa2luZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdl
KQogICAgICwgbV9yZWFkeVN0YXRlKFRleHRUcmFjazo6Tm9uZSkKICAgICAsIG1fbW9kZShUZXh0
VHJhY2s6OlNob3dpbmcpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3R5cGUodHJh
Y2tUeXBlKQogewogfQogCiBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQogeworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModGhpcywgbV9jdWVz
LmdldCgpKTsKKyAgICBzZXRDbGllbnQoMCk7CiB9CiAKIFN0cmluZyBUZXh0VHJhY2s6OmtpbmQo
KSBjb25zdApAQCAtNzQsNiArNzksOCBAQCBUZXh0VHJhY2s6OlJlYWR5U3RhdGUgVGV4dFRyYWNr
OjpyZWFkeVN0CiB2b2lkIFRleHRUcmFjazo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRl
KQogewogICAgIG1fcmVhZHlTdGF0ZSA9IHN0YXRlOworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKHRoaXMpOwogfQogCiBUZXh0
VHJhY2s6Ok1vZGUgVGV4dFRyYWNrOjptb2RlKCkgY29uc3QKQEAgLTg1LDkgKzkyLDExIEBAIHZv
aWQgVGV4dFRyYWNrOjpzZXRNb2RlKHVuc2lnbmVkIHNob3J0IG0KIHsKICAgICAvLyA0LjguMTAu
MTIuNSBPbiBzZXR0aW5nIHRoZSBtb2RlLCBpZiB0aGUgbmV3IHZhbHVlIGlzIG5vdCBlaXRoZXIg
MCwgMSwgb3IgMiwKICAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IHRocm93IGFuIElOVkFMSURf
QUNDRVNTX0VSUiBleGNlcHRpb24uCi0gICAgaWYgKG1vZGUgPT0gVGV4dFRyYWNrOjpPZmYgfHwg
bW9kZSA9PSBUZXh0VHJhY2s6OkhpZGRlbiB8fCBtb2RlID09IFRleHRUcmFjazo6U2hvd2luZykK
KyAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2s6Ok9mZiB8fCBtb2RlID09IFRleHRUcmFjazo6SGlk
ZGVuIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpTaG93aW5nKSB7CiAgICAgICAgIG1fbW9kZSA9IHN0
YXRpY19jYXN0PE1vZGU+KG1vZGUpOwotICAgIGVsc2UKKyAgICAgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01vZGVDaGFuZ2VkKHRoaXMpOworICAgIH0g
ZWxzZQogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDIxICszNiwyNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFz
cyBUZXh0VHJhY2tDdWVMaXN0OwogCiBjbGFzcyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0NyZWF0ZWQoVGV4dFRyYWNrKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tDcmVhdGVkKFRleHRUcmFjayopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJh
Y2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAw
OwogfTsKIAogY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRUcmFjayhraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0VHJhY2soY2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIEJhc2VUZXh0VHJh
Y2spKTsKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKQEAgLTU4LDcgKzYzLDcg
QEAgcHVibGljOgogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwogICAgIFN0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0OwogCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgTm9uZSwgTG9hZGluZywgTG9hZGVk
LCBFcnJvciB9OworICAgIGVudW0gUmVhZHlTdGF0ZSB7IE5vbmUgPSAwLCBMb2FkaW5nID0gMSwg
TG9hZGVkID0gMiwgRXJyb3IgPSAzIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3Q7CiAKICAgICBlbnVtIE1vZGUgeyBPZmYgPSAwLCBIaWRkZW4gPSAxLCBTaG93aW5nID0gMiB9
OwpAQCAtNzEsOCArNzYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQo
KTsKICAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICBlbnVtIFR5cGUgeyBCYXNlVGV4dFRy
YWNrLCBNdXRhYmxlVGV4dFRyYWNrLCBMb2FkYWJsZVRleHRUcmFjayB9OworICAgIFR5cGUgdHJh
Y2tUeXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBzZXRDbGllbnQoVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKwogcHJvdGVjdGVkOgotICAgIFRl
eHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UpOworICAgIFRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBT
dHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IFR5cGUgdHJhY2tUeXBlKTsKIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsK
IApAQCAtODQsNyArOTUsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xhbmd1YWdlOwogICAg
IFRleHRUcmFjazo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgVGV4dFRyYWNrOjpNb2Rl
IG1fbW9kZTsKLQorICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CisgICAgVHlwZSBtX3R5
cGU7IAogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9DdWVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQ3VlUGFyc2VyLmNwcAkocmV2aXNpb24gOTc1NzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0N1ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi0jaW5j
bHVkZSAiQ3VlUGFyc2VyLmgiCi0KLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUN1ZVBhcnNlcjo6Q3VlUGFyc2VyKCkKLXsKLSAgICAv
LyBGSVhNRSg2Mjg5Myk6IEltcGxlbWVudC4KLX0KLQotQ3VlUGFyc2VyOjp+Q3VlUGFyc2VyKCkK
LXsKLSAgICBpZiAobV9sb2FkZXIpCi0gICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKLSAgICBt
X2xvYWRlciA9IDA7Ci19Ci0KLXZvaWQgQ3VlUGFyc2VyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJs
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBDdWVQYXJzZXJDbGllbnQqIGNsaWVu
dCkKLXsKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwotCi0gICAgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0g
U2VuZENhbGxiYWNrczsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IEFs
bG93Q3Jvc3NPcmlnaW5SZXF1ZXN0czsKLQotICAgIG1fY2xpZW50ID0gY2xpZW50OwotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNvbnRleHQ7Ci0KLSAgICBtX2xvYWRlciA9IFRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZShjb250ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKLX0K
LQotYm9vbCBDdWVQYXJzZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FKDYyODkzKTogY2hlY2sgYWdhaW5zdCBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHR5cGVzCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotewotICAgIGlmIChyZXNwb25zZS5taW1lVHlwZSgpID09ICJ0ZXh0L3Z0dCIpCi0g
ICAgICAgIGNyZWF0ZVdlYlZUVFBhcnNlcigpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICAvLyBJZiBtaW1l
IHR5cGUgZnJvbSBkaWRSZWNlaXZlUmVzcG9uc2Ugd2FzIG5vdCBpbmZvcm1hdGl2ZSwgc25pZmYg
ZmlsZSBjb250ZW50LgotICAgIGlmICghbV9wcml2YXRlICYmIFdlYlZUVFBhcnNlcjo6aGFzUmVx
dWlyZWRGaWxlSWRlbnRpZmllcihkYXRhLCBsZW5ndGgpKQotICAgICAgICBjcmVhdGVXZWJWVFRQ
YXJzZXIoKTsKLQotICAgIGlmIChtX3ByaXZhdGUpCi0gICAgICAgIG1fcHJpdmF0ZS0+cGFyc2VC
eXRlcyhkYXRhLCBsZW5ndGgpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCi17Ci0gICAgbV9jbGllbnQtPnRyYWNrTG9hZENvbXBs
ZXRlZCgpOwotfQotCi12b2lkIEN1ZVBhcnNlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikKLXsKLSAgICBtX2NsaWVudC0+dHJhY2tMb2FkRXJyb3IoKTsKLX0KLQotdm9pZCBDdWVQYXJz
ZXI6OmZldGNoUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpCi17Ci0g
ICAgLy8gRklYTUUoNjI4OTMpOiBJbXBsZW1lbnQuCi19Ci0KLXZvaWQgQ3VlUGFyc2VyOjpuZXdD
dWVzUGFyc2VkKCkKLXsKLSAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwotfQotCi12b2lk
IEN1ZVBhcnNlcjo6Y3JlYXRlV2ViVlRUUGFyc2VyKCkKLXsKLSAgICBpZiAoIW1fcHJpdmF0ZSkg
ewotICAgICAgICBtX3ByaXZhdGUgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSh0aGlzLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBtX2NsaWVudC0+dHJhY2tMb2FkU3RhcnRlZCgp
OwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQ3VlUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9DdWVQYXJzZXIuaAkocmV2aXNpb24gOTc1NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBDdWVQYXJzZXJfaAotI2RlZmluZSBDdWVQYXJzZXJfaAotCi0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJWVFRQYXJzZXIu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVGV4dFRyYWNrQ3VlOwotCi1j
bGFzcyBDdWVQYXJzZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkN1ZVBhcnNlckNs
aWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRyYWNrTG9hZFN0YXJ0ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRy
YWNrTG9hZEVycm9yKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja0xvYWRDb21wbGV0ZWQo
KSA9IDA7Ci19OwotCi1jbGFzcyBDdWVQYXJzZXIgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCwgQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgQ3VlUGFyc2VyKCk7
Ci0gICAgdmlydHVhbCB+Q3VlUGFyc2VyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgZG91
YmxlIC8qZmluaXNoVGltZSovKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJik7Ci0KLSAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEN1ZVBhcnNlckNsaWVudCopOwotICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNv
bnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBmZXRjaFBhcnNlZEN1ZXMoVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2tDdWU+ID4mKTsKLSAgICB2b2lkIG5ld0N1ZXNQYXJzZWQoKTsKLQotcHJvdGVjdGVk
OgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LQotcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZVdlYlZUVFBhcnNlcigpOwotIAotICAgIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBPd25QdHI8Q3VlUGFyc2VyUHJpdmF0
ZUludGVyZmFjZT4gbV9wcml2YXRlOwotICAgIEN1ZVBhcnNlckNsaWVudCogbV9jbGllbnQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaAkocmV2aXNpb24gOTc1
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3VlUGFyc2VyUHJpdmF0ZV9oCi0j
ZGVmaW5lIEN1ZVBhcnNlUHJpdmF0ZV9oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNp
bmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDdWVQYXJzZXJQcml2YXRlQ2xpZW50IHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5DdWVQYXJzZXJQcml2YXRlQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgbmV3Q3Vlc1BhcnNlZCgpID0gMDsKLX07Ci0KLWNsYXNzIEN1ZVBhcnNlclByaXZhdGVJ
bnRlcmZhY2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1ZVBhcnNlclByaXZhdGVJbnRl
cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5D
dWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKCkgeyB9Ci0KLSAgICAvLyBJbnB1dCBkYXRhIHRvIHRo
ZSBwYXJzZXIgdG8gcGFyc2UuCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSA9IDA7Ci0KLSAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIGxhc3Qg
cGFyc2VkIGN1ZXMgdG8gY2FsbGVyLgotICAgIHZpcnR1YWwgdm9pZCBmZXRjaFBhcnNlZEN1ZXMo
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBD
dWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjcgKzQyLDUxIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgaW50IHNlY29uZHNQZXJIb3VyID0gMzYw
MDsKK2NvbnN0IGludCBzZWNvbmRzUGVyTWludXRlID0gNjA7Citjb25zdCBkb3VibGUgbWFsZm9y
bWVkVGltZSA9IC0xOworY29uc3QgdW5zaWduZWQgYm9tTGVuZ3RoID0gMzsKK2NvbnN0IHVuc2ln
bmVkIGZpbGVJZGVudGlmZXJMZW5ndGggPSA2OworICAgIAordW5zaWduZWQgV2ViVlRUUGFyc2Vy
OjpmaWxlSWRlbnRpZmllck1heGltdW1MZW5ndGgoKQoreworICAgIHJldHVybiBib21MZW5ndGgg
KyBmaWxlSWRlbnRpZmVyTGVuZ3RoOworfQorCitpbmxpbmUgYm9vbCBoYXNMb25nV2ViVlRUSWRl
bnRpZmllcihTdHJpbmcgbGluZSkKK3sKKyAgICAvLyBJZiBsaW5lIGlzIG1vcmUgdGhhbiBzaXgg
Y2hhcmFjdGVycyAuLi4KKyAgICBpZiAobGluZS5sZW5ndGgoKSA8IGZpbGVJZGVudGlmZXJMZW5n
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIGJ1dCB0aGUgZmlyc3Qgc2l4IGNo
YXJhY3RlcnMgZG8gbm90IGV4YWN0bHkgZXF1YWwgIldFQlZUVCIgLi4uCisgICAgaWYgKGxpbmUu
c3Vic3RyaW5nKDAsIGZpbGVJZGVudGlmZXJMZW5ndGgpICE9ICJXRUJWVFQiKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBvciB0aGUgc2V2ZW50aCBjaGFyYWN0ZXIgaXMgbmVpdGhl
ciBhIHNwYWNlIG5vciBhIHRhYiBjaGFyYWN0ZXIsIHRoZW4gYWJvcnQuCisgICAgaWYgKGxpbmVb
ZmlsZUlkZW50aWZlckxlbmd0aF0gIT0gJyAnICYmIGxpbmVbZmlsZUlkZW50aWZlckxlbmd0aF0g
IT0gJ1x0JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICAvLyBBIFdlYlZUVCBmaWxlIGlkZW50aWZp
ZXIgY29uc2lzdHMgb2YgYW4gb3B0aW9uYWwgQk9NIGNoYXJhY3RlciwKICAgICAvLyB0aGUgc3Ry
aW5nICJXRUJWVFQiIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHNwYWNlIG9yIHRhYiBjaGFyYWN0
ZXIsCiAgICAgLy8gYW5kIGFueSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgbGlu
ZSB0ZXJtaW5hdG9ycyAuLi4KICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7Ci0gICAgaWYgKGxl
bmd0aCA+PSAzICYmIGRhdGFbMF0gPT0gJ1x4RUYnICYmIGRhdGFbMV0gPT0gJ1x4QkInICYmIGRh
dGFbMl0gPT0gJ1x4QkYnKQotICAgICAgICBwb3NpdGlvbiArPSAzOworICAgIGlmIChsZW5ndGgg
Pj0gYm9tTGVuZ3RoICYmIGRhdGFbMF0gPT0gJ1x4RUYnICYmIGRhdGFbMV0gPT0gJ1x4QkInICYm
IGRhdGFbMl0gPT0gJ1x4QkYnKQorICAgICAgICBwb3NpdGlvbiArPSBib21MZW5ndGg7CiAgICAg
U3RyaW5nIGxpbmUgPSBjb2xsZWN0TmV4dExpbmUoZGF0YSwgbGVuZ3RoLCAmcG9zaXRpb24pOwot
ICAgICAgICAKLSAgICBpZiAobGluZS5sZW5ndGgoKSA8IDYpCisKKyAgICBpZiAobGluZS5sZW5n
dGgoKSA8IGZpbGVJZGVudGlmZXJMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAobGluZS5sZW5ndGgoKSA9PSA2ICYmIGxpbmUgIT0gIldFQlZUVCIpCisgICAgaWYgKGxpbmUu
bGVuZ3RoKCkgPT0gZmlsZUlkZW50aWZlckxlbmd0aCAmJiBsaW5lICE9ICJXRUJWVFQiKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiBsaW5lIGlzIG1vcmUgdGhhbiBzaXggY2hh
cmFjdGVycwotICAgIC8vIGJ1dCB0aGUgZmlyc3Qgc2l4IGNoYXJhY3RlcnMgZG8gbm90IGV4YWN0
bHkgZXF1YWwgIldFQlZUVCIsCi0gICAgLy8gb3IgdGhlIHNldmVudGggY2hhcmFjdGVyIGlzIG5l
aXRoZXIgYSBzcGFjZSBub3IgYSB0YWIgY2hhcmFjdGVyLCB0aGVuIGFib3J0LgotICAgIGlmIChs
aW5lLmxlbmd0aCgpID4gNiAmJiAobGluZS5zdWJzdHJpbmcoMCwgNikgIT0gIldFQlZUVCIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsaW5lWzZdICE9ICcgJyAmJiBsaW5lWzZd
ICE9ICdcdCcpKSkKKyAgICBpZiAoIWhhc0xvbmdXZWJWVFRJZGVudGlmaWVyKGxpbmUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODIsMTUgKzEw
NiwxNSBAQCBTdHJpbmcgV2ViVlRUUGFyc2VyOjpjb2xsZWN0V29yZChjb25zdCBTCiAgICAgcmV0
dXJuIHN0cmluZy50b1N0cmluZygpOwogfQogCi1XZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcihD
dWVQYXJzZXJQcml2YXRlQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCitXZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQqIGNs
aWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChjb250ZXh0KQogICAgICwgbV9zdGF0ZShJbml0aWFsKQogICAgICwgbV90
b2tlbml6ZXIoV2ViVlRUVG9rZW5pemVyOjpjcmVhdGUoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKIHsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKIH0KIAotdm9pZCBXZWJWVFRQYXJzZXI6OmZl
dGNoUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3VlcykK
K3ZvaWQgV2ViVlRUUGFyc2VyOjpnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiA+JiBvdXRwdXRDdWVzKQogewogICAgIG91dHB1dEN1ZXMgPSBtX2N1ZWxpc3Q7CiAgICAgbV9j
dWVsaXN0LmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJDdWVQYXJzZXJQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiV2ViVlRU
VG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC00NSwyMSArNDUsMjUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgaW50IHNl
Y29uZHNQZXJIb3VyID0gMzYwMDsKLXN0YXRpYyBjb25zdCBpbnQgc2Vjb25kc1Blck1pbnV0ZSA9
IDYwOwotc3RhdGljIGNvbnN0IGRvdWJsZSBtYWxmb3JtZWRUaW1lID0gLTE7CitjbGFzcyBXZWJW
VFRQYXJzZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlZUVFBhcnNlckNsaWVu
dCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCkgPSAwOworfTsK
IAotY2xhc3MgV2ViVlRUUGFyc2VyIDogcHVibGljIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2Ug
eworY2xhc3MgV2ViVlRUUGFyc2VyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJWVFRQYXJz
ZXIoKSB7IH0KICAgICAKICAgICBlbnVtIFBhcnNlU3RhdGUgeyBJbml0aWFsLCBIZWFkZXIsIElk
LCBUaW1pbmdzQW5kU2V0dGluZ3MsIEN1ZVRleHQsIEJhZEN1ZSB9OwogCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8V2ViVlRUUGFyc2VyPiBjcmVhdGUoQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCogY2xp
ZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYlZUVFBhcnNlcj4gY3JlYXRlKFdlYlZUVFBhcnNlckNsaWVudCogY2xpZW50LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBXZWJWVFRQYXJzZXIoY2xpZW50LCBjb250ZXh0KSk7CiAgICAgfQogICAgIAorICAg
IHN0YXRpYyB1bnNpZ25lZCBmaWxlSWRlbnRpZmllck1heGltdW1MZW5ndGgoKTsKICAgICBzdGF0
aWMgYm9vbCBoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWNvZ25pemVkVGFnKGNv
bnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKQEAgLTc5LDEyICs4MywxNCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBjb2xsZWN0RGlnaXRzKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKik7
CiAgICAgc3RhdGljIFN0cmluZyBjb2xsZWN0V29yZChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCop
OwogCi0gICAgdmlydHVhbCB2b2lkIGZldGNoUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRU
cmFja0N1ZT4gPiYpOwotICAgIAorICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBw
YXJzZS4KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwogCisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiBsYXN0IHBhcnNl
ZCBjdWVzIHRvIGNhbGxlci4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TmV3Q3VlcyhWZWN0b3I8UmVm
UHRyPFRleHRUcmFja0N1ZT4gPiYpOworCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViVlRUUGFyc2VyKEN1
ZVBhcnNlclByaXZhdGVDbGllbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgV2Vi
VlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
ICAgICAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAgICAgUGFyc2VTdGF0ZSBtX3N0YXRlOwpAQCAtMTE2LDcgKzEyMiw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fYXR0YWNobWVudFJvb3Q7CiAgICAgUmVm
UHRyPENvbnRhaW5lck5vZGU+IG1fY3VycmVudE5vZGU7CiAKLSAgICBDdWVQYXJzZXJQcml2YXRl
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJWVFRQYXJzZXJDbGllbnQqIG1fY2xpZW50OwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9jdWVsaXN0OwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
MTYxIEBACiAKICNpbmNsdWRlICJDdWVMb2FkZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hlZEN1ZXMu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0N1ZUxvYWRlcjo6Q3VlTG9hZGVyKEN1ZUxvYWRlckNs
aWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV9j
bGllbnQoY2xpZW50KQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX2N1ZUxvYWRUaW1lcih0aGlzLCAmQ3VlTG9hZGVyOjpjdWVMb2FkVGltZXJGaXJlZCkK
KyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fcGFyc2VPZmZzZXQoMCkKKyAgICAsIG1fbmV3
Q3Vlc0F2YWlsYWJsZShmYWxzZSkKK3sKK30KKworQ3VlTG9hZGVyOjp+Q3VlTG9hZGVyKCkKK3sK
KyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKQorICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92
ZUNsaWVudCh0aGlzKTsKK30KKwordm9pZCBDdWVMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKFRp
bWVyPEN1ZUxvYWRlcj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVy
ID09ICZtX2N1ZUxvYWRUaW1lcik7CisgICAgCisgICAgaWYgKG1fbmV3Q3Vlc0F2YWlsYWJsZSkg
eworICAgICAgICBtX25ld0N1ZXNBdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQt
Pm5ld0N1ZXNBdmFpbGFibGUodGhpcyk7IAorICAgIH0KKyAgICAKKyAgICBpZiAobV9zdGF0ZSA+
PSBGaW5pc2hlZCkKKyAgICAgICAgbV9jbGllbnQtPmN1ZUxvYWRpbmdDb21wbGV0ZWQodGhpcywg
bV9zdGF0ZSA9PSBGYWlsZWQpOworfQorCit2b2lkIEN1ZUxvYWRlcjo6cHJvY2Vzc05ld0N1ZURh
dGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIEFTU0VSVChtX2NhY2hlZEN1ZURh
dGEgPT0gcmVzb3VyY2UpOworICAgIAorICAgIGlmIChtX3N0YXRlID09IEZhaWxlZCB8fCAhcmVz
b3VyY2UtPmRhdGEoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNoYXJlZEJ1ZmZlciog
YnVmZmVyID0gcmVzb3VyY2UtPmRhdGEoKTsKKyAgICBpZiAobV9wYXJzZU9mZnNldCA9PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogZGF0YTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGg7CisgICAgCisgICAgaWYgKCFtX2N1ZVBhcnNlcikgeworICAgICAg
ICBpZiAocmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSA9PSAidGV4dC92dHQiKQorICAg
ICAgICAgICAgbV9jdWVQYXJzZXIgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSh0aGlzLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIERvbid0
IHByb2NlZWQgdW50aWwgd2UgaGF2ZSBlbm91Z2ggZGF0YSB0byBjaGVjayBmb3IgdGhlIFdlYlZU
VCBtYWdpYyBpZGVudGlmaWVyLgorICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckxlbmd0
aCA9IFdlYlZUVFBhcnNlcjo6ZmlsZUlkZW50aWZpZXJNYXhpbXVtTGVuZ3RoKCk7CisgICAgICAg
ICAgICBpZiAoYnVmZmVyLT5zaXplKCkgPCBpZGVudGlmaWVyTGVuZ3RoKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGlkZW50
aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAgICAgICAgICAgd2hp
bGUgKG9mZnNldCA8IGlkZW50aWZpZXJMZW5ndGggJiYgKGxlbmd0aCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoZGF0YSwgb2Zmc2V0KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gaWRl
bnRpZmllckxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gaWRlbnRpZmllckxl
bmd0aDsKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG9mZnNldCArPSBsZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICghV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZpbGVJZGVu
dGlmaWVyKGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLnNpemUoKSkpIHsKKyAgICAgICAg
ICAgICAgICBMT0coTWVkaWEsICJDdWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIC0gZmlsZSBcIiVz
XCIgZG9lcyBub3QgaGF2ZSBXZWJWVFQgbWFnaWMgaGVhZGVyIiwgCisgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBGYWlsZWQ7CisgICAgICAgICAgICAgICAgbV9jdWVM
b2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9jdWVQYXJzZXIgPSBXZWJWVFRQ
YXJzZXI6OmNyZWF0ZSh0aGlzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIEFTU0VSVChtX2N1ZVBhcnNlcik7CisgICAgCisgICAgd2hpbGUg
KChsZW5ndGggPSBidWZmZXItPmdldFNvbWVEYXRhKGRhdGEsIG1fcGFyc2VPZmZzZXQpKSkgewor
ICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLCBsZW5ndGgpOworICAgICAgICBt
X3BhcnNlT2Zmc2V0ICs9IGxlbmd0aDsKKyAgICB9CisgICAgCit9CisKK3ZvaWQgQ3VlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgQVNTRVJU
KG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CisgICAgCisgICAgaWYgKCFyZXNvdXJjZS0+
ZGF0YSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvY2Vzc05ld0N1ZURhdGEocmVz
b3VyY2UpOworfQorCit2b2lkIEN1ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQoreworICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3VyY2Up
OworCisgICAgcHJvY2Vzc05ld0N1ZURhdGEocmVzb3VyY2UpOworCisgICAgbV9zdGF0ZSA9IHJl
c291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBGYWlsZWQgOiBGaW5pc2hlZDsKKworICAgIGlmICgh
bV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jdWVMb2FkVGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgIAorICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OworICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7Cit9CisKK2Jvb2wgQ3VlTG9hZGVyOjpsb2FkKGNv
bnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkQ3Vlcyh0aGlz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX2NhY2hlZEN1ZURhdGEp
IHsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAg
IG1fY2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgfQorICAgIAorICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIAor
ICAgIFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwp
KTsKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0
aWNfY2FzdDxDYWNoZWRDdWVzKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RDdWVzKGN1
ZVJlcXVlc3QpKTsKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKQorICAgICAgICBtX2NhY2hlZEN1
ZURhdGEtPmFkZENsaWVudCh0aGlzKTsKKyAgICAKKyAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ1N0
YXJ0ZWQodGhpcyk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ3VlTG9hZGVy
OjpuZXdDdWVzUGFyc2VkKCkKK3sKKyAgICBpZiAobV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9uZXdDdWVzQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICBt
X2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CiAKLXZvaWQgQ3VlTG9hZGVyOjpzZXRD
dWVMb2FkZXJDbGllbnQoQ3VlTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIEN1ZUxvYWRlcjo6
Z2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3VlcykKIHsK
LSAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBBU1NFUlQobV9jdWVQYXJzZXIpOworICAgIGlm
IChtX2N1ZVBhcnNlcikKKyAgICAgICAgbV9jdWVQYXJzZXItPmdldE5ld0N1ZXMob3V0cHV0Q3Vl
cyk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgJKHJldmlzaW9uIDk3
NTcyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
LDE3ICsxMCwxNyBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEN1ZUxvYWRl
cl9oCkBAIC0yOCw0MSArMjgsNjkgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJDYWNoZWRDdWVzLmgiCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJX
ZWJWVFRQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ3VlTG9hZGVyOwotY2xhc3MgVGV4dFRyYWNrQ3VlOwotY2xhc3MgVGV4
dFRyYWNrQ3VlTGlzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLS8vIExpc3Rl
bmVyIHRvIEN1ZUxvYWRlci4KIGNsYXNzIEN1ZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Q3VlTG9hZGVyQ2xpZW50KCkgeyB9Ci0KLSAgICAvLyBRdWVyaWVzIEN1ZUxvYWRl
ciBmb3IgbmV3ZXN0IGN1ZXMuCi0gICAgdmlydHVhbCB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2Fk
ZXIoQ3VlTG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWVzRnJvbUluZGV4
KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIHNo
b3VsZExvYWRDdWVzKEN1ZUxvYWRlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0F2
YWlsYWJsZShDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFy
dGVkKEN1ZUxvYWRlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRl
ZChDdWVMb2FkZXIqLCBib29sIGxvYWRpbmdGYWlsZWQpID0gMDsKIH07CiAKLWNsYXNzIEN1ZUxv
YWRlciB7CitjbGFzcyBDdWVMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHBy
aXZhdGUgV2ViVlRUUGFyc2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVM
b2FkZXIpOyAKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5DdWVMb2FkZXIoKSB7IH0KLQotICAgIHZvaWQgc2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxv
YWRlckNsaWVudCopOwotCi0gICAgLy8gSW5mb3JtcyBjbGllbnQgdGhhdCBuZXcgY3VlcyBoYXZl
IGJlZW4gbG9hZGVkLgotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCkgPSAwOwotCi0g
ICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiBjdXJyZW50bHkgbG9hZGVkIGN1ZXMuCi0gICAg
dmlydHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mIGN1ZXMp
ID0gMDsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDdWVMb2FkZXI+IGNyZWF0ZShDdWVMb2FkZXJD
bGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3VlTG9hZGVyKGNsaWVudCwgY29udGV4dCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5DdWVMb2FkZXIoKTsKKyAgICAKKyAgICBib29sIGxvYWQoY29u
c3QgS1VSTCYpOworICAgIHZvaWQgZ2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1
ZT4gPiYgb3V0cHV0Q3Vlcyk7CisgICAgCitwcml2YXRlOgorCisgICAgLy8gQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKTsKKyAg
ICAKKyAgICAvLyBXZWJWVFRQYXJzZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1Bh
cnNlZCgpOworICAgIAorICAgIEN1ZUxvYWRlcihDdWVMb2FkZXJDbGllbnQqLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgCisgICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRS
ZXNvdXJjZSopOworICAgIHZvaWQgY3VlTG9hZFRpbWVyRmlyZWQoVGltZXI8Q3VlTG9hZGVyPiop
OwogCi1wcm90ZWN0ZWQ6CisgICAgZW51bSBTdGF0ZSB7IElkbGUsIExvYWRpbmcsIEZpbmlzaGVk
LCBGYWlsZWQgfTsKKyAgICAKICAgICBDdWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIE93
blB0cjxXZWJWVFRQYXJzZXI+IG1fY3VlUGFyc2VyOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZEN1ZXM+IG1fY2FjaGVkQ3VlRGF0YTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgVGltZXI8Q3VlTG9hZGVyPiBtX2N1ZUxv
YWRUaW1lcjsKKyAgICBTdGF0ZSBtX3N0YXRlOworICAgIHVuc2lnbmVkIG1fcGFyc2VPZmZzZXQ7
CisgICAgYm9vbCBtX25ld0N1ZXNBdmFpbGFibGU7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgogI2VuZGlmCg==
</data>
<flag name="review"
          id="109200"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>