<?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>104462</bug_id>
          
          <creation_ts>2012-12-08 19:37:22 -0800</creation_ts>
          <short_desc>Switch to new PseudoElement based :before and :after</short_desc>
          <delta_ts>2012-12-13 23:08:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98687</blocked>
    
    <blocked>92591</blocked>
    
    <blocked>95117</blocked>
    
    <blocked>104595</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>786670</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-08 19:37:22 -0800</bug_when>
    <thetext>Switch to new PseudoElement based :before and :after</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786671</commentid>
    <comment_count>1</comment_count>
      <attachid>178390</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-08 19:50:04 -0800</bug_when>
    <thetext>Created attachment 178390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786672</commentid>
    <comment_count>2</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-08 19:52:15 -0800</bug_when>
    <thetext>This is going to fail fast/css-generated-content/table-row-group-to-inline.html, I didn&apos;t add the new baseline to the patch yet. I did manage to fix the selection bugs though! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786700</commentid>
    <comment_count>3</comment_count>
      <attachid>178390</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-09 00:39:48 -0800</bug_when>
    <thetext>Comment on attachment 178390
Patch

Attachment 178390 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15210804

New failing tests:
fast/css-generated-content/before-content-continuation-chain.html
fast/css-generated-content/table-row-group-to-inline.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786703</commentid>
    <comment_count>4</comment_count>
      <attachid>178390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-09 01:02:37 -0800</bug_when>
    <thetext>Comment on attachment 178390
Patch

Attachment 178390 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15218512

New failing tests:
fast/forms/week/week-appearance-pseudo-elements.html
fast/forms/time/time-appearance-pseudo-elements.html
fast/forms/month/month-appearance-pseudo-elements.html
fast/css-generated-content/before-content-continuation-chain.html
fast/css-generated-content/table-row-group-to-inline.html
fast/forms/date/date-appearance-pseudo-elements.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786717</commentid>
    <comment_count>5</comment_count>
      <attachid>178390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-09 02:07:39 -0800</bug_when>
    <thetext>Comment on attachment 178390
Patch

Attachment 178390 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15228102

New failing tests:
fast/forms/week/week-appearance-pseudo-elements.html
fast/forms/time/time-appearance-pseudo-elements.html
fast/forms/month/month-appearance-pseudo-elements.html
fast/css-generated-content/before-content-continuation-chain.html
fast/css-generated-content/table-row-group-to-inline.html
fast/forms/date/date-appearance-pseudo-elements.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786917</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-09 17:34:30 -0800</bug_when>
    <thetext>Please make sure Antti has a chance to look at this before committing anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786958</commentid>
    <comment_count>7</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-09 21:06:10 -0800</bug_when>
    <thetext>Here&apos;s a bug this also fixes, I&apos;ll add a test: https://code.google.com/p/chromium/issues/detail?id=164820

This is also fixes our support for display block generated content on display inline things:

&lt;style&gt;
span:before {
  display: block;
  content: &quot;should be on it&apos;s own line&quot;;
}
&lt;/style&gt;

&lt;span&gt;and this too&lt;/span&gt;

I&apos;ll add a test for that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787659</commentid>
    <comment_count>8</comment_count>
      <attachid>178616</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 13:15:33 -0800</bug_when>
    <thetext>Created attachment 178616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787706</commentid>
    <comment_count>9</comment_count>
      <attachid>178631</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 13:56:44 -0800</bug_when>
    <thetext>Created attachment 178631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787722</commentid>
    <comment_count>10</comment_count>
      <attachid>178634</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 14:34:48 -0800</bug_when>
    <thetext>Created attachment 178634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787733</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 14:47:38 -0800</bug_when>
    <thetext>Once this is landed I can create a tiny patch that removes the if statement from AnimationController.cpp and adds some tests and then we&apos;ll have animations on :before and :after as well. The new :before/:after implementation supports animations, but I wanted to turn them on separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787897</commentid>
    <comment_count>12</comment_count>
      <attachid>178634</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-10 17:48:11 -0800</bug_when>
    <thetext>Comment on attachment 178634
Patch

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

This looks great.  Thanks.

&gt; Source/WebCore/rendering/RenderObject.h:629
&gt; +    // FIXME: Why does RenderWidget need this?
&gt; +    void clearNode() { m_node = 0; }

It shouldn&apos;t.  RenderWidget outlives the Rendering Tree (and Document) sometimes, as I believe plugins can hold onto it during their teardown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787906</commentid>
    <comment_count>13</comment_count>
      <attachid>178634</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-10 17:58:21 -0800</bug_when>
    <thetext>Comment on attachment 178634
Patch

Doesn&apos;t this directly contradict what is being done in bug 103339 by making more of the internals depend on Shadow DOM? r- until this is clarified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787913</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-10 18:03:31 -0800</bug_when>
    <thetext>Currently ComposedShadowTreeWalker can be compiled completely out when SHADOW_DOM is not enabled (except for &lt;details&gt; element). It looks like this makes it unavoidable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787936</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-10 18:38:50 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Currently ComposedShadowTreeWalker can be compiled completely out when SHADOW_DOM is not enabled (except for &lt;details&gt; element). It looks like this makes it unavoidable.

I see.  SHADOW_DOM is in a confusing state it seems.  Fighting to be most elegantly integrated, and yet still desired to be compiled completely out. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787939</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-10 18:48:36 -0800</bug_when>
    <thetext>This shows why getting SHADOW_DOM conditionals in place is so important. We need to have clear understanding where the boundary between core WebKit code and the experimental feature exactly is. The standard for former are different than for the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787946</commentid>
    <comment_count>17</comment_count>
      <attachid>178634</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-10 18:59:45 -0800</bug_when>
    <thetext>Comment on attachment 178634
Patch

Talked with Elliott and Morrita and it sounds like my concerns are being addressed. Switching back to r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787961</commentid>
    <comment_count>18</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 20:06:00 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 178634 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178634&amp;action=review
&gt; 
&gt; This looks great.  Thanks.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.h:629
&gt; &gt; +    // FIXME: Why does RenderWidget need this?
&gt; &gt; +    void clearNode() { m_node = 0; }
&gt; 
&gt; It shouldn&apos;t.  RenderWidget outlives the Rendering Tree (and Document) sometimes, as I believe plugins can hold onto it during their teardown?

Hmm okay, I&apos;ll try to remove this in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787964</commentid>
    <comment_count>19</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 20:10:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 178634 [details])
&gt; Talked with Elliott and Morrita and it sounds like my concerns are being addressed. Switching back to r+.

So to reiterate the reason the patch looks the way it does:

input:before {} or input:after {} needs ComposedShadowTreeWalker behavior so that the pseudo elements end up down inside the input shadow tree visually and placed before their &quot;siblings&quot; in the composed shadow tree sense. I had tried to disable generated content for shadows, but it seems some sites depend on this for now, and we should do that separately from getting the new generated content turned on which is a big win. If we didn&apos;t add methods to CSTW in this patch we&apos;d need two separate almost identical traversals, one with CSTW and one that manually walks down into userAgentShadowRoot()&apos;s to make inputs work.

Once this is landed morrita will refactor the code so that we have a reusable traversal that can turn on and off the insertion point related things so you can compile out CSTW if you need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788002</commentid>
    <comment_count>20</comment_count>
      <attachid>178634</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 21:16:52 -0800</bug_when>
    <thetext>Comment on attachment 178634
Patch

Rejecting attachment 178634 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
__ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...
LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
Total errors found: 2 in 2 files

Full output: http://queues.webkit.org/results/15238879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788008</commentid>
    <comment_count>21</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 21:21:23 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 178634 [details])
&gt; Rejecting attachment 178634 [details] from commit-queue.
&gt; 
&gt; ...
&gt; Updating webkit projects from gyp files...
&gt; LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
&gt; LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
&gt; Total errors found: 2 in 2 files

Um, are the bots broken? These files definitely exist in svn:

http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/mac/TestExpectations
http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788037</commentid>
    <comment_count>22</comment_count>
      <attachid>178634</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 21:59:05 -0800</bug_when>
    <thetext>Comment on attachment 178634
Patch

Rejecting attachment 178634 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
__ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...
LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
Total errors found: 2 in 2 files

Full output: http://queues.webkit.org/results/15259318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788043</commentid>
    <comment_count>23</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-12-10 22:05:33 -0800</bug_when>
    <thetext>Dirk, any guesses what&apos;s going wrong here on the commit queue? Looks like someone broke check-webkit-style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788585</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-11 10:42:17 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 178634 [details] [details])
&gt; &gt; Rejecting attachment 178634 [details] [details] from commit-queue.
&gt; &gt; 
&gt; &gt; ...
&gt; &gt; Updating webkit projects from gyp files...
&gt; &gt; LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
&gt; &gt; LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
&gt; &gt; Total errors found: 2 in 2 files
&gt; 
&gt; Um, are the bots broken? These files definitely exist in svn:
&gt; 
&gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/mac/TestExpectations
&gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations

The messages aren&apos;t saying that the expectations files themselves are missing, they&apos;re saying the tests on lines 143/398 are missing. Unfortunately, the test name isn&apos;t being printed out by the style checker, but it&apos;s animations/animation-api-1.html (from what rwt --lint-test-files tells me).

I&apos;m not sure why the style checker is complaining about this, though, since it seems to be a pre-existing error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788586</commentid>
    <comment_count>25</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-11 10:47:04 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; (From update of attachment 178634 [details] [details] [details])
&gt; &gt; &gt; Rejecting attachment 178634 [details] [details] [details] from commit-queue.
&gt; &gt; &gt; 
&gt; &gt; &gt; ...
&gt; &gt; &gt; Updating webkit projects from gyp files...
&gt; &gt; &gt; LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
&gt; &gt; &gt; LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
&gt; &gt; &gt; Total errors found: 2 in 2 files
&gt; &gt; 
&gt; &gt; Um, are the bots broken? These files definitely exist in svn:
&gt; &gt; 
&gt; &gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/mac/TestExpectations
&gt; &gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations
&gt; 
&gt; The messages aren&apos;t saying that the expectations files themselves are missing, they&apos;re saying the tests on lines 143/398 are missing. Unfortunately, the test name isn&apos;t being printed out by the style checker, but it&apos;s animations/animation-api-1.html (from what rwt --lint-test-files tells me).
&gt; 
&gt; I&apos;m not sure why the style checker is complaining about this, though, since it seems to be a pre-existing error.

Heh, so what should I do to get this landed? That line isn&apos;t even in my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788592</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-11 10:49:51 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; (From update of attachment 178634 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; Rejecting attachment 178634 [details] [details] [details] [details] from commit-queue.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ...
&gt; &gt; &gt; &gt; Updating webkit projects from gyp files...
&gt; &gt; &gt; &gt; LayoutTests/platform/chromium/TestExpectations:143:  Path does not exist.  [test/expectations] [5]
&gt; &gt; &gt; &gt; LayoutTests/platform/mac/TestExpectations:398:  Path does not exist.  [test/expectations] [5]
&gt; &gt; &gt; &gt; Total errors found: 2 in 2 files
&gt; &gt; &gt; 
&gt; &gt; &gt; Um, are the bots broken? These files definitely exist in svn:
&gt; &gt; &gt; 
&gt; &gt; &gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/mac/TestExpectations
&gt; &gt; &gt; http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations
&gt; &gt; 
&gt; &gt; The messages aren&apos;t saying that the expectations files themselves are missing, they&apos;re saying the tests on lines 143/398 are missing. Unfortunately, the test name isn&apos;t being printed out by the style checker, but it&apos;s animations/animation-api-1.html (from what rwt --lint-test-files tells me).
&gt; &gt; 
&gt; &gt; I&apos;m not sure why the style checker is complaining about this, though, since it seems to be a pre-existing error.
&gt; 
&gt; Heh, so what should I do to get this landed? That line isn&apos;t even in my patch.

I&apos;ll land the patch manually for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788593</commentid>
    <comment_count>27</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-11 10:51:48 -0800</bug_when>
    <thetext>Eric, do you have any ideas off the top of your head what might be going on w/ the style bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788599</commentid>
    <comment_count>28</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-11 10:54:25 -0800</bug_when>
    <thetext>Committed r137336: &lt;http://trac.webkit.org/changeset/137336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788601</commentid>
    <comment_count>29</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-11 10:56:05 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=104687 to track the CQ problem ... I landed this patch by hand.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178390</attachid>
            <date>2012-12-08 19:50:04 -0800</date>
            <delta_ts>2012-12-10 13:15:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104462-20121208194726.patch</filename>
            <type>text/plain</type>
            <size>42910</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGNiODhiMWU0ZjYy
OWY5ZDRmOWI1MGMyMTIyYTMxYTlkN2U5My4uZGJkYmJjZmZlYjI0NDk0NTQyMWRmODY3NjMwNDEw
OTc4NTc3MDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTEyLTA4ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFN3aXRjaCB0byBuZXcg
UHNldWRvRWxlbWVudCBiYXNlZCA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB0aGUgbmV3IFBzZXVkb0Vs
ZW1lbnQgYmFzZWQgZ2VuZXJhdGVkIGNvbnRlbnQgaW1wbGVtZW50YXRpb24gdGhhdAorICAgICAg
ICBtb3ZlcyA6YmVmb3JlIGFuZCA6YWZ0ZXIgaW50byB0aGUgRE9NLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodCk6
CisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmxvZ2ljYWxseVByZXZpb3VzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVOb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpzcGxpdEJsb2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRk
Q2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y3JlYXRlUmVwbGFjZW1lbnRSdW5Jbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAg
ICAgIChSZW5kZXJCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpzdHlsZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpzcGxpdElubGluZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bm9uUHNldWRvTm9kZSk6CisgICAgICAgIChS
ZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjbGVhck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVi
eVRleHQuaDoKKyAgICAgICAgKFJlbmRlclJ1YnlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnN0
eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpkZXN0cm95
KToKKwogMjAxMi0xMi0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBTaHJpbmsgdGhlIHNpemUgb2YgTm9kZVJhcmVEYXRhIGJ5IG1vdmluZyBwb2ludGVycyBp
bnRvIHNlcGFyYXRlIG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2MjdlOTgxM2Jm
ZDdmOTI5ODlmNzFhMzgxM2Y0YTIxNTMyMzMzZjMyLi40ZDk5MWEzZmI0NzgwZmQ2OTFlODFjYTI4
MTNhNjQ1Y2UyYTlkNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTc2LDcgKzExNzYs
OSBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgfSBlbHNlIGlmIChmaXJzdENoaWxkKCkp
CiAgICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7CiAKKyAgICB1cGRhdGVQc2V1ZG9FbGVtZW50
KEJFRk9SRSk7CiAgICAgQ29udGFpbmVyTm9kZTo6YXR0YWNoKCk7CisgICAgdXBkYXRlUHNldWRv
RWxlbWVudChBRlRFUik7CiAKICAgICBpZiAoaGFzUmFyZURhdGEoKSkgeyAgIAogICAgICAgICBF
bGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKQEAgLTEzMzAsNiArMTMz
Miw4IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAg
ICAgICB9CiAgICAgfQogCisgICAgdXBkYXRlUHNldWRvRWxlbWVudChCRUZPUkUsIGNoYW5nZSk7
CisKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBnb29kIGVub3VnaCBmb3IgOmhvdmVyICsg
Zm9vLCBidXQgaXQgaXMgbm90IGdvb2QgZW5vdWdoIGZvciA6aG92ZXIgKyBmb28gKyBiYXIuCiAg
ICAgLy8gRm9yIG5vdyB3ZSB3aWxsIGp1c3Qgd29ycnkgYWJvdXQgdGhlIGNvbW1vbiBjYXNlLCBz
aW5jZSBpdCdzIGEgbG90IHRyaWNraWVyIHRvIGdldCB0aGUgc2Vjb25kIGNhc2UgcmlnaHQKICAg
ICAvLyB3aXRob3V0IGRvaW5nIHdheSB0b28gbXVjaCByZS1yZXNvbHV0aW9uLgpAQCAtMTM1NCw2
ICsxMzU4LDggQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2Up
CiAgICAgICAgIGZvcmNlQ2hlY2tPZkFueUVsZW1lbnRTaWJsaW5nID0gZm9yY2VDaGVja09mQW55
RWxlbWVudFNpYmxpbmcgfHwgKGNoaWxkUnVsZXNDaGFuZ2VkICYmIGhhc0luZGlyZWN0QWRqYWNl
bnRSdWxlcyk7CiAgICAgfQogCisgICAgdXBkYXRlUHNldWRvRWxlbWVudChBRlRFUiwgY2hhbmdl
KTsKKwogICAgIGNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwogICAgIGNsZWFyQ2hpbGROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBhMWMwYjAxZTEw
MjQyNTMxNmE2NjkzMzRlMzJkZTQzNDI4MTRiMmUxLi4wNTgxYTg4YzE3NDBhNGNjMWRkMDYzODM1
MzhlM2Y2YjZkMjM2MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTg3LDYgKzg3LDcg
QEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgTGVnYWN5
RWRpdGluZ09mZnNldCBvZmZzZXQpCiAjZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8
ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICNlbmRpZgorICAgIEFTU0VSVCghbV9h
bmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzUHNldWRvRWxlbWVudCgpKTsKIH0KIAogUG9z
aXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgQW5jaG9yVHlwZSBh
bmNob3JUeXBlKQpAQCAtMTAyLDYgKzEwMyw4IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVm
UHRyPE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICBBU1NFUlQo
IW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAjZW5kaWYK
IAorICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzUHNldWRvRWxl
bWVudCgpKTsKKwogICAgIEFTU0VSVChhbmNob3JUeXBlICE9IFBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcik7CiAgICAgQVNTRVJUKCEoKGFuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUNoaWxk
cmVuIHx8IGFuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pCiAgICAgICAgICYm
IChtX2FuY2hvck5vZGUtPmlzVGV4dE5vZGUoKSB8fCBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9h
bmNob3JOb2RlLmdldCgpKSkpKTsKQEAgLTEyMCw2ICsxMjMsOCBAQCBQb3NpdGlvbjo6UG9zaXRp
b24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JUeXBlIGFu
Y2hvclR5cAogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFlZGl0aW5nSWdub3Jlc0NvbnRl
bnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7
CiAjZW5kaWYKIAorICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlz
UHNldWRvRWxlbWVudCgpKTsKKwogICAgIEFTU0VSVChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcik7CiB9CiAKQEAgLTg0MCw3ICs4NDUsNyBAQCBib29sIFBvc2l0aW9uOjpo
YXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChSZW5kZXJPYmplY3Qq
IHJlbmRlcgogewogICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyLT5uZXh0SW5QcmVP
cmRlckFmdGVyQ2hpbGRyZW4oKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCAqbyA9IHJlbmRlcmVy
LT5maXJzdENoaWxkKCk7IG8gJiYgbyAhPSBzdG9wOyBvID0gby0+bmV4dEluUHJlT3JkZXIoKSkK
LSAgICAgICAgaWYgKG8tPm5vZGUoKSAmJiAhby0+bm9kZSgpLT5pc1BzZXVkb0VsZW1lbnQoKSkg
eworICAgICAgICBpZiAoby0+bm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoKG8t
PmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4dChvKS0+bGluZXNCb3VuZGluZ0JveCgpLmhlaWdodCgp
KSB8fAogICAgICAgICAgICAgICAgIChvLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KG8pLT5ib3Jk
ZXJCb3VuZGluZ0JveCgpLmhlaWdodCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IDJiNmU5NDgwM2Fj
NzllNjE4ZDQzMzk1YmM4NTI2OTg0YmM1N2U4ZWEuLjI4Njg5NGI3YjE3ODVjOTEwZThlMmVkNTU5
MTk1NDA1M2I1OGE2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cApAQCAtMjE0LDggKzIxNCw4IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2Fs
bHlQcmV2aW91c0JveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQCiAgICAgICAgIHJl
dHVybiBwcmV2aW91c0JveDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIE5vZGUqIHN0YXJ0
Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUo
KSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlIHx8IHN0YXJ0Tm9kZS0+aXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8g
c3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vblBzZXVkb05vZGUoKSA6IDA7CisgICAgICAgIGlmICgh
c3RhcnROb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zaXRp
b24gPSBwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihzdGFydE5vZGUsIHZp
c2libGVQb3NpdGlvbiwgQ29udGVudElzRWRpdGFibGUpOwpAQCAtMjU1LDggKzI1NSw4IEBAIHN0
YXRpYyBjb25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlOZXh0Qm94KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0CiAgICAgICAgIHJldHVybiBuZXh0Qm94OwogCiAgICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCkg
PyBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpIDogMDsKLSAgICAgICAgaWYgKCFzdGFydE5v
ZGUgfHwgc3RhcnROb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgTm9kZSogc3RhcnRO
b2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCkgPyBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9uUHNl
dWRvTm9kZSgpIDogMDsKKyAgICAgICAgaWYgKCFzdGFydE5vZGUpCiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG5leHRSb290SW5saW5lQm94Q2FuZGlk
YXRlUG9zaXRpb24oc3RhcnROb2RlLCB2aXNpYmxlUG9zaXRpb24sIENvbnRlbnRJc0VkaXRhYmxl
KTsKQEAgLTc0Myw4ICs3NDMsOCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaQogICAgICAgICAg
ICAgaWYgKCFzdGFydFJlbmRlcmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKIAotICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnRSZW5kZXJlci0+bm9kZSgp
OwotICAgICAgICAgICAgaWYgKHN0YXJ0Tm9kZSAmJiAhc3RhcnROb2RlLT5pc1BzZXVkb0VsZW1l
bnQoKSkKKyAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vblBzZXVkb05v
ZGUoKTsKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIHN0YXJ0Qm94ID0gc3RhcnRCb3gtPm5leHRMZWFmQ2hpbGQoKTsKQEAg
LTgxNSw4ICs4MTUsOCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGlu
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAgICAgICAgICAgaWYg
KCFlbmRSZW5kZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CiAKLSAgICAgICAgICAgIGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+bm9kZSgpOwotICAgICAgICAg
ICAgaWYgKGVuZE5vZGUgJiYgIWVuZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAg
ICAgZW5kTm9kZSA9IGVuZFJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCk7CisgICAgICAgICAgICBp
ZiAoZW5kTm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZW5kQm94ID0gZW5kQm94LT5wcmV2TGVhZkNoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDNhMGRkMTZkMjZhYzIwOTY0YzlkYjk1Y2RhYWZkMjI4
YWFlZTg5ZTYuLjZlMTNlNGVhNWI4YTk0YzQyYjk0MzI2YjVkZmMzMGY3ZmRlNDJmZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02MjUsNyArNjI1LDcgQEAgTm9k
ZSogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSog
c3RhcnROb2RlLCBjb25zdCBJbnQKICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gKHNyYy0+c2VsZWN0
aW9uKCktPmNvbnRhaW5zKGRyYWdPcmlnaW4pKSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24g
OiBEcmFnU291cmNlQWN0aW9uTm9uZTsKIAogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVu
ZGVyZXItPnBhcmVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgp
OworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKICAgICAg
ICAgaWYgKCFub2RlKQogICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9u
J3QgY29ycmVzcG9uZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQog
ICAgICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjOGZiMTU0
MjFkOTkyMDc1ZmViNjVmOWQ4NmJjY2JkYTcwMDMwMGVhLi5mN2FiM2E3OTM1MzFkMTlkODFjN2Ey
Y2VkMjRkN2M3ZDYwZjc1YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTM0MywxMiArMzQzLDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICBw
cm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4odHJ1ZSk7ICAgIAogICAgIG1fbGluZUhl
aWdodCA9IC0xOwogCi0gICAgLy8gVXBkYXRlIHBzZXVkb3MgZm9yIDpiZWZvcmUgYW5kIDphZnRl
ciBub3cuCi0gICAgaWYgKCFpc0Fub255bW91cygpICYmIGRvY3VtZW50KCktPnN0eWxlU2hlZXRD
b2xsZWN0aW9uKCktPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkgJiYgY2FuSGF2ZUdlbmVyYXRlZENo
aWxkcmVuKCkpIHsKLSAgICAgICAgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KEJFRk9SRSk7Ci0g
ICAgICAgIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChBRlRFUik7Ci0gICAgfQotCiAgICAgLy8g
QWZ0ZXIgb3VyIHN0eWxlIGNoYW5nZWQsIGlmIHdlIGxvc2Ugb3VyIGFiaWxpdHkgdG8gcHJvcGFn
YXRlIGZsb2F0cyBpbnRvIG5leHQgc2libGluZwogICAgIC8vIGJsb2NrcywgdGhlbiB3ZSBuZWVk
IHRvIGZpbmQgdGhlIHRvcCBtb3N0IHBhcmVudCBjb250YWluaW5nIHRoYXQgb3Zlcmhhbmdpbmcg
ZmxvYXQgYW5kCiAgICAgLy8gdGhlbiBtYXJrIGl0cyBkZXNjZW5kYW50cyB3aXRoIGZsb2F0cyBm
b3IgbGF5b3V0IGFuZCBjbGVhciBhbGwgZmxvYXRzIGZyb20gaXRzIG5leHQKQEAgLTM4MCwxNCAr
Mzc0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVy
QmxvY2s6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAg
ICAvLyBJZiB0aGlzIGlzIGFuIGFub255bW91cyB3cmFwcGVyLCB0aGVuIHRoZSBwYXJlbnQgYXBw
bGllcyBpdHMgb3duIHBzZXVkby1lbGVtZW50IHN0eWxlIHRvIGl0LgotICAgIGlmIChwYXJlbnQo
KSAmJiBwYXJlbnQoKS0+Y3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCh0aGlzLCBwc2V1ZG9J
ZCk7Ci19Ci0KIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y29udGludWF0aW9uQmVmb3JlKFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGJlZm9yZUNoaWxkICYmIGJlZm9y
ZUNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKQpAQCAtNjAyLDEzICs1ODgsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpzcGxpdEJsb2NrcyhSZW5kZXJCbG9jayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayog
dG9CbG9jaywKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3VyciA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QocGFyZW50KCkpOwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyQ2hpbGQg
PSB0aGlzOwogICAgIFJlbmRlck9iamVjdCogY3VyckNoaWxkTmV4dFNpYmxpbmcgPSBjdXJyQ2hp
bGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgYm9vbCBkb2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVz
ID0gZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVs
ZXMoKTsKIAotICAgIC8vIE5vdGU6IHx0aGlzfCBjYW4gYmUgZGVzdHJveWVkIGluc2lkZSB0aGlz
IGxvb3AgaWYgaXQgaXMgYW4gZW1wdHkgYW5vbnltb3VzCi0gICAgLy8gYmxvY2sgYW5kIHdlIHRy
eSB0byBjYWxsIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCBpbnNpZGUgd2hpY2ggcmVtb3ZlcyB0
aGUKLSAgICAvLyBnZW5lcmF0ZWQgY29udGVudCBhbmQgYWRkaXRpb25hbGx5IGNsZWFucyB1cCB8
dGhpc3wgZW1wdHkgYW5vbnltb3VzIGJsb2NrLgotICAgIC8vIFNlZSBSZW5kZXJCbG9jazo6cmVt
b3ZlQ2hpbGQoKS4gRE8gTk9UIHJlZmVyZW5jZSBhbnkgbG9jYWwgdmFyaWFibGVzIHRvIHx0aGlz
fAotICAgIC8vIGFmdGVyIHRoaXMgcG9pbnQuCiAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBm
cm9tQmxvY2spIHsKICAgICAgICAgQVNTRVJUKGN1cnItPmlzUmVuZGVyQmxvY2soKSk7CiAgICAg
ICAgIApAQCAtNjMxLDE2ICs2MTEsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpzcGxpdEJsb2NrcyhS
ZW5kZXJCbG9jayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAgICAgICAgICAg
IGNsb25lQmxvY2stPnNldENvbnRpbnVhdGlvbihvbGRDb250KTsKICAgICAgICAgfQogCi0gICAg
ICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3BsaXQu
ICBXaGVuIHRoaXMgaGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgIC8vIGhhcyB0
byBtb3ZlIGludG8gdGhlIGlubGluZSBjb250aW51YXRpb24uICBDYWxsIHVwZGF0ZUJlZm9yZUFm
dGVyQ29udGVudCB0byBlbnN1cmUgdGhhdCB0aGUgaW5saW5lJ3MgOmFmdGVyCi0gICAgICAgIC8v
IGNvbnRlbnQgZ2V0cyBwcm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgIGJvb2wgaXNMYXN0Q2hp
bGQgPSAoY3VyckNoaWxkTmV4dFNpYmxpbmcgPT0gYmxvY2tDdXJyLT5sYXN0Q2hpbGQoKSk7Ci0g
ICAgICAgIGlmIChkb2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVzKQotICAgICAgICAgICAgYmxv
Y2tDdXJyLT5jaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoYmxvY2tDdXJyLCBB
RlRFUik7Ci0gICAgICAgIGlmIChpc0xhc3RDaGlsZCAmJiBjdXJyQ2hpbGROZXh0U2libGluZyAh
PSBibG9ja0N1cnItPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgY3VyckNoaWxkTmV4dFNpYmxp
bmcgPSAwOyAvLyBXZSBkZXN0cm95ZWQgdGhlIGxhc3QgY2hpbGQsIHNvIG5vdyB3ZSBuZWVkIHRv
IHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdmFs
dWUgb2YgY3VyckNoaWxkTmV4dFNpYmxpbmcuCi0KICAgICAgICAgLy8gTm93IHdlIG5lZWQgdG8g
dGFrZSBhbGwgb2YgdGhlIGNoaWxkcmVuIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGNoaWxkCiAg
ICAgICAgIC8vICphZnRlciogY3VyckNoaWxkIGFuZCBhcHBlbmQgdGhlbSBhbGwgdG8gdGhlIGNs
b25lLgogICAgICAgICBibG9ja0N1cnItPm1vdmVDaGlsZHJlblRvKGNsb25lQmxvY2ssIGN1cnJD
aGlsZE5leHRTaWJsaW5nLCAwLCB0cnVlKTsKQEAgLTg3MywyMyArODQzLDYgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6YWRkQ2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJPYmpl
Y3QqIG5ld0NoaWxkLAogICAgICAgICAgICAgaWYgKCFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAg
ICAgICAgICAgICAgc2V0Q29udGludWF0aW9uKG5ld0JveCk7CiAKLSAgICAgICAgICAgIC8vIFNv
bWVvbmUgbWF5IGhhdmUgcHV0IGEgPHA+IGluc2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAg
V2hlbiB0aGlzIGhhcHBlbnMsIHRoZSA6YWZ0ZXIgY29udGVudAotICAgICAgICAgICAgLy8gaGFz
IHRvIG1vdmUgaW50byB0aGUgaW5saW5lIGNvbnRpbnVhdGlvbi4gIENhbGwgdXBkYXRlQmVmb3Jl
QWZ0ZXJDb250ZW50IHRvIGVuc3VyZSB0aGF0IG91ciA6YWZ0ZXIKLSAgICAgICAgICAgIC8vIGNv
bnRlbnQgZ2V0cyBwcm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgICAgICBib29sIGlzRmlyc3RD
aGlsZCA9IChiZWZvcmVDaGlsZCA9PSBmaXJzdENoaWxkKCkpOwotICAgICAgICAgICAgYm9vbCBp
c0xhc3RDaGlsZCA9IChiZWZvcmVDaGlsZCA9PSBsYXN0Q2hpbGQoKSk7Ci0gICAgICAgICAgICBp
ZiAoZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVs
ZXMoKSkKLSAgICAgICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRl
bnQodGhpcywgQUZURVIpOwotICAgICAgICAgICAgaWYgKGlzTGFzdENoaWxkICYmIGJlZm9yZUNo
aWxkICE9IGxhc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZGVzdHJveWVkIHRo
ZSBsYXN0IGNoaWxkLCBzbyBub3cgd2UgbmVlZCB0byB1cGRhdGUgb3VyIGluc2VydGlvbgotICAg
ICAgICAgICAgICAgIC8vIHBvaW50IHRvIGJlIDAuIEl0J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVu
ZCBub3cuCi0gICAgICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSAwOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChpc0ZpcnN0Q2hpbGQgJiYgYmVmb3JlQ2hpbGQgIT0gZmlyc3RDaGlsZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgd2FzIHRoZSBsYXN0IGFub255bW91cyBi
bG9jayB0aGF0IGNvbGxhcHNlZCwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8g
dXBkYXRlIGl0cyB2YWx1ZS4KLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IGZpcnN0Q2hp
bGQoKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgc3BsaXRGbG93KGJlZm9yZUNoaWxk
LCBuZXdCb3gsIG5ld0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xODc3LDE2ICsxODMwLDYgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IFJlbmRlckJsb2NrOjpjcmVhdGVSZXBsYWNlbWVudFJ1bkluKFJlbmRlckJveE1vZGVsT2JqZWN0
KgogewogICAgIEFTU0VSVChydW5Jbi0+aXNSdW5JbigpKTsKIAotICAgIC8vIEZpcnN0IHdlIGRl
c3Ryb3kgYW55IDpiZWZvcmUvOmFmdGVyIGNvbnRlbnQuIEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQg
YnkgdGhlIG5ldyBydW4taW4uCi0gICAgLy8gRXhjZXB0aW9uIGlzIGlmIHRoZSBydW4taW4gaXRz
ZWxmIGlzIGdlbmVyYXRlZC4KLSAgICBpZiAocnVuSW4tPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9
IEJFRk9SRSAmJiBydW5Jbi0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQUZURVIpIHsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50OwotICAgICAgICBpZiAocnVuSW4tPmdl
dENhY2hlZFBzZXVkb1N0eWxlKEJFRk9SRSkgJiYgKGdlbmVyYXRlZENvbnRlbnQgPSBydW5Jbi0+
YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKCkpKQotICAgICAgICAgICAgZ2VuZXJhdGVkQ29u
dGVudC0+ZGVzdHJveSgpOwotICAgICAgICBpZiAocnVuSW4tPmdldENhY2hlZFBzZXVkb1N0eWxl
KEFGVEVSKSAmJiAoZ2VuZXJhdGVkQ29udGVudCA9IHJ1bkluLT5hZnRlclBzZXVkb0VsZW1lbnRS
ZW5kZXJlcigpKSkKLSAgICAgICAgICAgIGdlbmVyYXRlZENvbnRlbnQtPmRlc3Ryb3koKTsKLSAg
ICB9Ci0KICAgICBib29sIG5ld1J1bkluU2hvdWxkQmVCbG9jayA9ICFydW5Jbi0+aXNSZW5kZXJC
bG9jaygpOwogICAgIE5vZGUqIHJ1bkluTm9kZSA9IHJ1bkluLT5ub2RlKCk7CiAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIG5ld1J1bkluID0gMDsKQEAgLTMyMzUsNyArMzE3OCw3IEBAIGJvb2wg
UmVuZGVyQmxvY2s6OnNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKCkgfHwg
aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgaWYgKCFub25Qc2V1ZG9Ob2RlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGFibGVzIHNo
b3VsZCBoYXZlIHRvIGxlYXJuIGhvdyB0byBmaWxsIGdhcHMgYmV0d2VlbiBjZWxscywgYXQgbGVh
c3QgaW4gc2ltcGxlIG5vbi1zcGFubmluZyBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKaW5kZXggMzQ0ZDFkYjlmMWQ0ZjEwYmMwYmU5YTBkZjYyZWY5OTNlY2JhODJh
My4uYTQxNjRkYjcwNGZmZjlhNWM0ZTU1MTliNDY4YWIyMWRkNGY0YzFmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTU2NSw4ICs1NjUsNiBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIGJvcmRlckZpdEFkanVzdChMYXlvdXRSZWN0JikgY29uc3Q7IC8v
IFNocmluayB0aGUgYm94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFpbnRzIGlmIGJvcmRlci1maXQg
aXMgc2V0LgogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1
ZG9JZCk7Ci0gICAgCiAgICAgdmlydHVhbCBSb290SW5saW5lQm94KiBjcmVhdGVSb290SW5saW5l
Qm94KCk7IC8vIFN1YmNsYXNzZWQgYnkgU1ZHIGFuZCBSdWJ5LgogCiAgICAgLy8gQ2FsbGVkIHRv
IGxheSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEg
cnVieSBydW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4
IDY5Y2VmMjkyMmFjNzM1ZjA0MmQ3YjM5ZmUzYTYyZWVhYjcxNTk0MzkuLjI1N2ZlMWZhMDFmYjNh
NjliYjg2MjgzZjI1N2IwZjQ1Y2VhNWZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCdXR0b24uY3BwCkBAIC0xNTMsMTQgKzE1Myw2IEBAIGJvb2wgUmVuZGVyQnV0dG9uOjpj
YW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdAogICAgIHJldHVybiAhbm9kZSgpLT5oYXNU
YWdOYW1lKGlucHV0VGFnKTsKIH0KIAotdm9pZCBSZW5kZXJCdXR0b246OnVwZGF0ZUJlZm9yZUFm
dGVyQ29udGVudChQc2V1ZG9JZCB0eXBlKQotewotICAgIGlmIChtX2lubmVyKQotICAgICAgICBt
X2lubmVyLT5jaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQobV9pbm5lciwgdHlw
ZSwgdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRl
ckNvbnRlbnQodGhpcywgdHlwZSk7Ci19Ci0KIExheW91dFJlY3QgUmVuZGVyQnV0dG9uOjpjb250
cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpIGNvbnN0CiB7
CiAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBib3ggdG8gYXQgbGVhc3QgZ2l2ZSBjb250ZW50
IHRoZSBleHRyYSBwYWRkaW5nIHNwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oCmluZGV4IDViZTYyYjAxMjY2MGY4MGZmOTdkZTNkNjkxNDNlZjFiYTI1ZjVjMmMuLmE3
YWZiNWRjZmRlMmUzY2U3M2I0N2MyYWVhNTY0MWQ5ZDQ3NjE5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0dXBJbm5lclN0eWxlKFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250
ZW50KFBzZXVkb0lkKTsKLQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRy
ZW4oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xDbGlw
UmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCAwZTFjZGEzMTZhZjk0YWQ0YjY2ZWZlYzlmNzdmZWVlYTE5
MWEyMjBmLi4xNmU3MWUxZDZlZWNiMjhmYzZkYzZmNzM4MDE0ZWQ1M2Y0Njc1NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDAsOCArNDAsNiBAQAog
I2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgi
CiAKLSNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+Ci0KICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpIHx8IEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjZW5kaWYKQEAgLTE2OSwxOCArMTY3LDExIEBAIHZvaWQgUmVuZGVySW5saW5lOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
CiAgICAgLy8gbmVlZCB0byBwYXNzIGl0cyBzdHlsZSBvbiB0byBhbnlvbmUgZWxzZS4KICAgICBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUgPSBzdHlsZSgpOwogICAgIFJlbmRlcklubGluZSogY29udGlu
dWF0aW9uID0gaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwotICAgIHsKLSAgICAgICAgVGVt
cG9yYXJ5Q2hhbmdlPGJvb2w+IGVuYWJsZUFmdGVyKFJlbmRlck9iamVjdENoaWxkTGlzdDo6c19l
bmFibGVVcGRhdGVCZWZvcmVBZnRlckNvbnRlbnQsIGZhbHNlKTsKLSAgICAgICAgUmVuZGVySW5s
aW5lKiBuZXh0SW5saW5lRWxlbWVudENvbnQgPSAwOwotICAgICAgICBmb3IgKFJlbmRlcklubGlu
ZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJyQ29udCA9IG5leHRJbmxp
bmVFbGVtZW50Q29udCkgewotICAgICAgICAgICAgbmV4dElubGluZUVsZW1lbnRDb250ID0gY3Vy
ckNvbnQtPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKLSAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gdXBkYXRlIDphZnRlciBjb250ZW50IGZvciB0aGUgbGFzdCBjb250aW51YXRpb24gaW4g
dGhlIGNoYWluLgotICAgICAgICAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpzX2VuYWJsZVVw
ZGF0ZUJlZm9yZUFmdGVyQ29udGVudCA9ICFuZXh0SW5saW5lRWxlbWVudENvbnQ7Ci0gICAgICAg
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbmV4dENvbnQgPSBjdXJyQ29udC0+Y29udGludWF0
aW9uKCk7Ci0gICAgICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKDApOwotICAgICAg
ICAgICAgY3VyckNvbnQtPnNldFN0eWxlKG5ld1N0eWxlKTsKLSAgICAgICAgICAgIGN1cnJDb250
LT5zZXRDb250aW51YXRpb24obmV4dENvbnQpOwotICAgICAgICB9CisgICAgZm9yIChSZW5kZXJJ
bmxpbmUqIGN1cnJDb250ID0gY29udGludWF0aW9uOyBjdXJyQ29udDsgY3VyckNvbnQgPSBjdXJy
Q29udC0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKSB7CisgICAgICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51YXRpb24oKTsKKyAgICAgICAg
Y3VyckNvbnQtPnNldENvbnRpbnVhdGlvbigwKTsKKyAgICAgICAgY3VyckNvbnQtPnNldFN0eWxl
KG5ld1N0eWxlKTsKKyAgICAgICAgY3VyckNvbnQtPnNldENvbnRpbnVhdGlvbihuZXh0Q29udCk7
CiAgICAgfQogCiAgICAgLy8gSWYgYW4gaW5saW5lJ3MgaW4tZmxvdyBwb3NpdGlvbmluZyBoYXMg
Y2hhbmdlZCB0aGVuIGFueSBkZXNjZW5kYW50IGJsb2NrcyB3aWxsIG5lZWQgdG8gY2hhbmdlIHRo
ZWlyIGluLWZsb3cgcG9zaXRpb25pbmcgYWNjb3JkaW5nbHkuCkBAIC0yMDEsMTIgKzE5Miw2IEBA
IHZvaWQgUmVuZGVySW5saW5lOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAgICAgICAgIH0KICAgICAgICAgbV9hbHdheXNDcmVh
dGVMaW5lQm94ZXMgPSBhbHdheXNDcmVhdGVMaW5lQm94ZXM7CiAgICAgfQotCi0gICAgLy8gVXBk
YXRlIHBzZXVkb3MgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBub3cuCi0gICAgaWYgKCFpc0Fub255
bW91cygpICYmIGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNCZWZvcmVB
ZnRlclJ1bGVzKCkpIHsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJDb250
ZW50KHRoaXMsIEJFRk9SRSk7Ci0gICAgICAgIGNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVy
Q29udGVudCh0aGlzLCBBRlRFUik7Ci0gICAgfQogfQogCiB2b2lkIFJlbmRlcklubGluZTo6dXBk
YXRlQWx3YXlzQ3JlYXRlTGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKQEAgLTMyOSwxNiArMzE0
LDYgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVu
ZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2IKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIG9sZENvbnRpbnVhdGlvbiA9IGNvbnRpbnVhdGlvbigpOwogICAgICAgICBzZXRDb250aW51
YXRpb24obmV3Qm94KTsKIAotICAgICAgICAvLyBTb21lb25lIG1heSBoYXZlIHB1dCBhIDxwPiBp
bnNpZGUgYSA8cT4sIGNhdXNpbmcgYSBzcGxpdC4gIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgOmFm
dGVyIGNvbnRlbnQKLSAgICAgICAgLy8gaGFzIHRvIG1vdmUgaW50byB0aGUgaW5saW5lIGNvbnRp
bnVhdGlvbi4gIENhbGwgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50IHRvIGVuc3VyZSB0aGF0IG91
ciA6YWZ0ZXIKLSAgICAgICAgLy8gY29udGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAg
ICAgICAgYm9vbCBpc0xhc3RDaGlsZCA9IChiZWZvcmVDaGlsZCA9PSBsYXN0Q2hpbGQoKSk7Ci0g
ICAgICAgIGlmIChkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3Jl
QWZ0ZXJSdWxlcygpKQotICAgICAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJD
b250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICAgICAgaWYgKGlzTGFzdENoaWxkICYmIGJlZm9yZUNo
aWxkICE9IGxhc3RDaGlsZCgpKQotICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSAwOyAvLyBXZSBk
ZXN0cm95ZWQgdGhlIGxhc3QgY2hpbGQsIHNvIG5vdyB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgaW5z
ZXJ0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvaW50IHRvIGJlIDAuICBJ
dCdzIGp1c3QgYSBzdHJhaWdodCBhcHBlbmQgbm93LgotCiAgICAgICAgIHNwbGl0RmxvdyhiZWZv
cmVDaGlsZCwgbmV3Qm94LCBuZXdDaGlsZCwgb2xkQ29udGludWF0aW9uKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQwNSwxMiArMzgwLDYgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnNwbGl0
SW5saW5lcyhSZW5kZXJCbG9jayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAg
ICAgICAgICAgIGlubGluZUN1cnItPnNldENvbnRpbnVhdGlvbihjbG9uZUlubGluZSk7CiAgICAg
ICAgICAgICBjbG9uZUlubGluZS0+c2V0Q29udGludWF0aW9uKG9sZENvbnQpOwogCi0gICAgICAg
ICAgICAvLyBTb21lb25lIG1heSBoYXZlIGluZGlyZWN0bHkgY2F1c2VkIGEgPHE+IHRvIHNwbGl0
LiAgV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSA6YWZ0ZXIgY29udGVudAotICAgICAgICAgICAgLy8g
aGFzIHRvIG1vdmUgaW50byB0aGUgaW5saW5lIGNvbnRpbnVhdGlvbi4gIENhbGwgdXBkYXRlQmVm
b3JlQWZ0ZXJDb250ZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBpbmxpbmUncyA6YWZ0ZXIKLSAgICAg
ICAgICAgIC8vIGNvbnRlbnQgZ2V0cyBwcm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgICAgICBp
ZiAoZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVs
ZXMoKSkKLSAgICAgICAgICAgICAgICBpbmxpbmVDdXJyLT5jaGlsZHJlbigpLT51cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQoaW5saW5lQ3VyciwgQUZURVIpOwotCiAgICAgICAgICAgICAvLyBOb3cg
d2UgbmVlZCB0byB0YWtlIGFsbCBvZiB0aGUgY2hpbGRyZW4gc3RhcnRpbmcgZnJvbSB0aGUgZmly
c3QgY2hpbGQKICAgICAgICAgICAgIC8vICphZnRlciogY3VyckNoaWxkIGFuZCBhcHBlbmQgdGhl
bSBhbGwgdG8gdGhlIGNsb25lLgogICAgICAgICAgICAgbyA9IGN1cnJDaGlsZC0+bmV4dFNpYmxp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCmluZGV4
IDg0YTU3OTQ2MDkwYjZiYjM2MjY3NGUyMGRkNzNlZTFkZjFlOWE1NDIuLmQwYjNiOTUxNzRjNzM2
YzcwMDcwMzk4NjYxMzM5YjhiZjdlOGNmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RJdGVtLmNwcApAQCAtMjY4LDcgKzI2OCw2IEBAIHZvaWQgUmVuZGVyTGlzdEl0
ZW06OnVwZGF0ZU1hcmtlckxvY2F0aW9uKCkKICAgICAgICAgICAgIGlmIChtX21hcmtlci0+cHJl
ZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpCiAgICAgICAgICAgICAgICAgbV9tYXJrZXItPmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CiAgICAgICAgICAgICAvLyBJZiBtYXJrZXJQ
YXIgaXMgYW4gYW5vbnltb3VzIGJsb2NrIHRoYXQgaGFzIGxvc3QgYWxsIGl0cyBjaGlsZHJlbiwg
ZGVzdHJveSBpdC4KLSAgICAgICAgICAgIC8vIEV4dHJhbmVvdXMgYW5vbnltb3VzIGJsb2NrcyBj
YW4gY2F1c2UgcHJvYmxlbXMgZm9yIFJlbmRlckJsb2NrOjp1cGRhdGVCZWZvcmVBZnRlckNvbnRl
bnQuCiAgICAgICAgICAgICBpZiAobWFya2VyUGFyICYmIG1hcmtlclBhci0+aXNBbm9ueW1vdXNC
bG9jaygpICYmICFtYXJrZXJQYXItPmZpcnN0Q2hpbGQoKSAmJiAhdG9SZW5kZXJCbG9jayhtYXJr
ZXJQYXIpLT5jb250aW51YXRpb24oKSkKICAgICAgICAgICAgICAgICBtYXJrZXJQYXItPmRlc3Ry
b3koKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNDFmOTkwNzZlYTg2MjJkM2ExNGE0Y2NkMWUyYzJlZDZhZDk3ZmYyLi5jYTAyZTMy
NGRhMDU0ZjE2MjljYTBlZDJjOGJhZmNjZjBiNDE3MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjk5NCw4ICsyOTk0LDcgQEAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZm
aW5pdHkgYWZmaW5pdHkpCiB7CiAgICAgLy8gSWYgdGhpcyBpcyBhIG5vbi1hbm9ueW1vdXMgcmVu
ZGVyZXIgaW4gYW4gZWRpdGFibGUgYXJlYSwgdGhlbiBpdCdzIHNpbXBsZS4KLSAgICBpZiAobm9k
ZSgpICYmICFpc1BzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBub2RlID0gdGhpcy0+
bm9kZSgpOworICAgIGlmIChOb2RlKiBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAg
IGlmICghbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0
IGNhbiBiZSBmb3VuZCwgd2UgcHJlZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0
aGF0IGlzIGVkaXRhYmxlLiAKICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCk7CkBAIC0zMDIxLDggKzMwMjAsOCBA
QCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50
IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaQogICAgICAgICAvLyBGaW5kIG5vbi1hbm9ueW1vdXMg
Y29udGVudCBhZnRlci4KICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkOwog
ICAgICAgICB3aGlsZSAoKHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRJblByZU9yZGVyKHBhcmVu
dCkpKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlz
UHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHJlbmRlcmVyLT5ub2RlKCkpLCBET1dOU1RSRUFN
KTsKKyAgICAgICAgICAgIGlmIChOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBGaW5kIG5vbi1hbm9ueW1vdXMgY29udGVudCBiZWZvcmUuCkBAIC0zMDMwLDEzICszMDI5LDEz
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihp
bnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSBy
ZW5kZXJlci0+cHJldmlvdXNJblByZU9yZGVyKCkpKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIgPT0gcGFyZW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5ub2RlKCkgJiYgIXJlbmRlcmVyLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUo
cmVuZGVyZXItPm5vZGUoKSksIERPV05TVFJFQU0pOworICAgICAgICAgICAgaWYgKE5vZGUqIG5v
ZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSwgRE9XTlNUUkVB
TSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBVc2UgdGhlIHBhcmVudCBpdHNlbGYgdW5sZXNz
IGl0IHRvbyBpcyBhbm9ueW1vdXMuCi0gICAgICAgIGlmIChwYXJlbnQtPm5vZGUoKSAmJiAhaXNQ
c2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnQtPm5vZGUoKSksIERPV05TVFJFQU0pOworICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IHBhcmVudC0+bm9uUHNldWRvTm9kZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSksIERPV05TVFJFQU0pOwogCiAgICAgICAgIC8vIFJlcGVhdCBhdCB0aGUgbmV4dCBsZXZlbCB1
cC4KICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggYjAxMDMzNzgwMTk2NjNjMzgzZTNjMDdlOTNmOTAyMGI5M2MzMjVlMC4u
YjAzZDA5ZmY4NzlmOTIxOWM4N2U5MzhhYzNjYmY5ZjBiN2JiNmVjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNjIxLDE3ICs2MjEsMTUgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNSb290ZWQoUmVuZGVyVmlldyoqID0gMCkgY29uc3Q7CiAKICAgICBOb2RlKiBu
b2RlKCkgY29uc3QgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/IDAgOiBtX25vZGU7IH0KKyAgICBO
b2RlKiBub25Qc2V1ZG9Ob2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkgPyAw
IDogbm9kZSgpOyB9CisKKyAgICAvLyBGSVhNRTogV2h5IGRvZXMgUmVuZGVyV2lkZ2V0IG5lZWQg
dGhpcz8KKyAgICB2b2lkIGNsZWFyTm9kZSgpIHsgbV9ub2RlID0gMDsgfQogCiAgICAgLy8gUmV0
dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhpcyBy
ZW5kZXJlci4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9yIHJl
bmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKICAgICAvLyBwc2V1ZG8gZWxlbWVudHMgZm9y
IHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgotICAgIE5vZGUqIGdlbmVyYXRp
bmdOb2RlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBub2RlKCktPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICAgICAgcmV0
dXJuIG1fbm9kZSA9PSBkb2N1bWVudCgpID8gMCA6IG1fbm9kZTsKLSAgICB9Ci0gICAgdm9pZCBz
ZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQorICAgIE5vZGUqIGdlbmVyYXRp
bmdOb2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkgPyBub2RlKCktPnBhcmVu
dE9ySG9zdE5vZGUoKSA6IG5vZGUoKTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CiAgICAgRnJhbWUqIGZyYW1lKCkgY29u
c3QgeyByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAppbmRleCAyMDJjYzM2YjMxNTQ1
NGY1YTJmZTAwNGRmMDRjMDJkZmI3ZWE5MmY1Li5lZTkxOTUwNWQyY2RhNWJmYzRmZjAyMjEyZjQ1
NjRkOTI2YTRiNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtMTg3LDIzICsxODcsNiBAQCB2b2lkIFJlbmRlck9iamVj
dENoaWxkTGlzdDo6aW5zZXJ0Q2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9i
amVjdCogYwogICAgICAgICBvd25lci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jaGls
ZHJlbkNoYW5nZWQob3duZXIpOwogfQogCi1zdGF0aWMgUmVuZGVyT2JqZWN0KiBmaW5kQmVmb3Jl
QWZ0ZXJQYXJlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgLy8gT25seSB0YWJsZSBw
YXJ0cyBhbmQgZmxleC1ib3hlcyBuZWVkIHRvIHNlYXJjaCBmb3IgdGhlIDpiZWZvcmUgb3IgOmFm
dGVyIHBhcmVudAotICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBsaWtlbHkgZ2V0IGF3YXkgd2l0aG91
dCB0aGlzIGNoZWNrIGFuZCBhbHdheXMgbG9vayBmb3IgdGhlIHJpZ2h0IHBhcmVudC4KLSAgICBp
ZiAoIShvYmplY3QtPmlzVGFibGUoKSB8fCBvYmplY3QtPmlzVGFibGVTZWN0aW9uKCkgfHwgb2Jq
ZWN0LT5pc1RhYmxlUm93KCkgfHwgb2JqZWN0LT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVj
YXRlZCgpKSkKLSAgICAgICAgcmV0dXJuIG9iamVjdDsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEg
OmZpcnN0LWxldHRlciBzdHlsZSBhcHBsaWVkIG9uIHRoZSA6YmVmb3JlIG9yIDphZnRlciBjb250
ZW50LAotICAgIC8vIHRoZW4gd2Ugd2FudCB0aGUgcGFyZW50IG9mIHRoZSBmaXJzdC1sZXR0ZXIg
YmxvY2sKLSAgICBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVyUGFyZW50ID0gb2JqZWN0OwotICAg
IHdoaWxlIChiZWZvcmVBZnRlclBhcmVudCAmJiAhKGJlZm9yZUFmdGVyUGFyZW50LT5pc1RleHQo
KSB8fCBiZWZvcmVBZnRlclBhcmVudC0+aXNJbWFnZSgpKQotICAgICAgICAmJiAoYmVmb3JlQWZ0
ZXJQYXJlbnQtPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IEZJUlNUX0xFVFRFUikpCi0gICAgICAg
IGJlZm9yZUFmdGVyUGFyZW50ID0gYmVmb3JlQWZ0ZXJQYXJlbnQtPmZpcnN0Q2hpbGQoKTsKLQot
ICAgIHJldHVybiBiZWZvcmVBZnRlclBhcmVudCA/IGJlZm9yZUFmdGVyUGFyZW50LT5wYXJlbnQo
KSA6IDA7Ci19Ci0KIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpiZWZvcmVQ
c2V1ZG9FbGVtZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvd25lcikgY29uc3QKIHsK
ICAgICAvLyBBbiBhbm9ueW1vdXMgKGdlbmVyYXRlZCkgaW5saW5lIHJ1bi1pbiB0aGF0IGhhcyBQ
c2V1ZG9JZCBCRUZPUkUgbXVzdCBjb21lIGZyb20gYSBncmFuZHBhcmVudC4KQEAgLTI1MCwyMDMg
KzIzMyw0IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjphZnRlclBzZXVk
b0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplCiAgICAgcmV0dXJuIGxhc3Q7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlclN0eWxlKFJlbmRl
ck9iamVjdCogY2hpbGQsIFBzZXVkb0lkIHR5cGUsIFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50
U3R5bGUpCi17Ci0gICAgaWYgKCFjaGlsZCB8fCBjaGlsZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkg
IT0gdHlwZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgaGF2ZSBnZW5lcmF0ZWQgY29u
dGVudCBwcmVzZW50IHN0aWxsLiBXZSB3YW50IHRvIHdhbGsgdGhpcyBjb250ZW50IGFuZCB1cGRh
dGUgb3VyCi0gICAgLy8gc3R5bGUgaW5mb3JtYXRpb24gd2l0aCB0aGUgbmV3IHBzZXVkby1lbGVt
ZW50IHN0eWxlLgotICAgIGNoaWxkLT5zZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5bGUpOwotCi0g
ICAgUmVuZGVyT2JqZWN0KiBiZWZvcmVBZnRlclBhcmVudCA9IGZpbmRCZWZvcmVBZnRlclBhcmVu
dChjaGlsZCk7Ci0gICAgaWYgKCFiZWZvcmVBZnRlclBhcmVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gV2hlbiBiZWZvcmVBZnRlclBhcmVudCBpcyBub3QgZXF1YWwgdG8gY2hpbGQgKGUu
Zy4gaW4gdGFibGVzKSwKLSAgICAvLyB3ZSBuZWVkIHRvIGNyZWF0ZSBuZXcgc3R5bGVzIGluaGVy
aXRpbmcgZnJvbSBwc2V1ZG9FbGVtZW50U3R5bGUKLSAgICAvLyBvbiBhbGwgdGhlIGludGVybWVk
aWF0ZSBwYXJlbnRzIChsZWF2aW5nIHRoZWlyIGRpc3BsYXkgc2FtZSkuCi0gICAgaWYgKGJlZm9y
ZUFmdGVyUGFyZW50ICE9IGNoaWxkKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY3VyciA9IGJl
Zm9yZUFmdGVyUGFyZW50OwotICAgICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IGNoaWxkKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoY3Vyci0+aXNBbm9ueW1vdXMoKSk7Ci0gICAgICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAg
ICAgICAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAg
ICAgICAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShjdXJyLT5zdHlsZSgpLT5kaXNwbGF5KCkpOwot
ICAgICAgICAgICAgbmV3U3R5bGUtPnNldFN0eWxlVHlwZShjdXJyLT5zdHlsZSgpLT5zdHlsZVR5
cGUoKSk7Ci0gICAgICAgICAgICBjdXJyLT5zZXRTdHlsZShuZXdTdHlsZSk7Ci0gICAgICAgICAg
ICBjdXJyID0gY3Vyci0+cGFyZW50KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3Rl
IHRoYXQgaWYgd2UgZXZlciBzdXBwb3J0IGFkZGl0aW9uYWwgdHlwZXMgb2YgZ2VuZXJhdGVkIGNv
bnRlbnQgKHdoaWNoIHNob3VsZCBiZSB3YXkgb2ZmCi0gICAgLy8gaW4gdGhlIGZ1dHVyZSksIHRo
aXMgY29kZSB3aWxsIG5lZWQgdG8gYmUgcGF0Y2hlZC4KLSAgICBmb3IgKFJlbmRlck9iamVjdCog
Z2VuQ2hpbGQgPSBiZWZvcmVBZnRlclBhcmVudC0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsgZ2Vu
Q2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoZ2VuQ2hpbGQt
PmlzVGV4dCgpKQotICAgICAgICAgICAgLy8gR2VuZXJhdGVkIHRleHQgY29udGVudCBpcyBhIGNo
aWxkIHdob3NlIHN0eWxlIGFsc28gbmVlZHMgdG8gYmUgc2V0IHRvIHRoZSBwc2V1ZG8tZWxlbWVu
dCBzdHlsZS4KLSAgICAgICAgICAgIGdlbkNoaWxkLT5zZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5
bGUpOwotICAgICAgICBlbHNlIGlmIChnZW5DaGlsZC0+aXNJbWFnZSgpKSB7Ci0gICAgICAgICAg
ICAvLyBJbWFnZXMgZ2V0IGFuIGVtcHR5IHN0eWxlIHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgcHNl
dWRvLgotICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwc2V1ZG9FbGVtZW50
U3R5bGUpOwotICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBSZW5kZXJMaXN0SXRlbSBtYXkgaW5z
ZXJ0IGEgbGlzdCBtYXJrZXIgaGVyZS4gV2UgZG8gbm90IG5lZWQgdG8gY2FyZSBhYm91dCB0aGlz
IGNhc2UuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGdlbkNoaWxkIG11c3QgYmUgYSBmaXJz
dC1sZXR0ZXIgY29udGFpbmVyLiB1cGRhdGVGaXJzdExldHRlcigpIHdpbGwgdGFrZSBjYXJlIG9m
IGl0LgotICAgICAgICAgICAgQVNTRVJUKGdlbkNoaWxkLT5pc0xpc3RNYXJrZXIoKSB8fCBnZW5D
aGlsZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotc3RhdGljIFJlbmRlck9iamVjdCogZW5zdXJlQmVmb3JlQWZ0ZXJDb250YWlu
ZXIoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwgUmVuZGVyU3R5bGUqIHBzZXVk
b0VsZW1lbnRTdHlsZSwgTm9kZSogZ2VuZXJhdGluZ05vZGUsIFJlbmRlck9iamVjdCogaW5zZXJ0
QmVmb3JlKQotewotICAgIC8vIE1ha2UgYSBnZW5lcmF0ZWQgYm94IHRoYXQgbWlnaHQgYmUgYW55
IGRpc3BsYXkgdHlwZSBub3cgdGhhdCB3ZSBhcmUgYWJsZSB0byBkcmlsbCBkb3duIGludG8gY2hp
bGRyZW4KLSAgICAvLyB0byBmaW5kIHRoZSBvcmlnaW5hbCBjb250ZW50IHByb3Blcmx5LgotICAg
IFJlbmRlck9iamVjdCogZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lciA9IFJlbmRlck9iamVjdDo6
Y3JlYXRlT2JqZWN0KG93bmVyLT5kb2N1bWVudCgpLCBwc2V1ZG9FbGVtZW50U3R5bGUpOwotICAg
IEFTU0VSVChnZW5lcmF0aW5nTm9kZSk7IC8vIFRoZSBzdHlsZWQgb2JqZWN0IGNhbm5vdCBiZSBh
bm9ueW1vdXMgb3IgZWxzZSBpdCBjb3VsZCBub3QgaGF2ZSAnOmJlZm9yZScgb3IgJzphZnRlcicg
cHNldWRvIGVsZW1lbnRzLgotICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXItPnNldE5vZGUo
Z2VuZXJhdGluZ05vZGUpOyAvLyBUaGlzIGFsbG93cyBhY2Nlc3MgdG8gdGhlIGdlbmVyYXRpbmdO
b2RlLgotICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXItPnNldFN0eWxlKHBzZXVkb0VsZW1l
bnRTdHlsZSk7Ci0gICAgaWYgKCFvd25lci0+aXNDaGlsZEFsbG93ZWQoZ2VuZXJhdGVkQ29udGVu
dENvbnRhaW5lciwgcHNldWRvRWxlbWVudFN0eWxlKSkgewotICAgICAgICAvLyBUaGUgZ2VuZXJh
dGVkIGNvbnRlbnQgY29udGFpbmVyIGlzIG5vdCBhbGxvd2VkIGhlcmUgLT4gYWJvcnQuCi0gICAg
ICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCi0gICAgLy8gV2hlbiB3ZSBkb24ndCBoYXZlIGEgZmlyc3QgY2hpbGQgYW5k
IGFyZSBwYXJ0IG9mIGEgY29udGludWF0aW9uIGNoYWluLAotICAgIC8vIGluc2VydEJlZm9yZSBp
cyBpbmNvcnJlY3RseSBzZXQgdG8gemVybyBhYm92ZSwgd2hpY2ggY2F1c2VzIHRoZSA6YmVmb3Jl
Ci0gICAgLy8gY2hpbGQgdG8gZW5kIHVwIGF0IHRoZSBlbmQgb2YgY29udGludWF0aW9uIGNoYWlu
LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgz
ODAuCi0gICAgaWYgKCFpbnNlcnRCZWZvcmUgJiYgdHlwZSA9PSBCRUZPUkUgJiYgb3duZXItPnZp
cnR1YWxDb250aW51YXRpb24oKSkKLSAgICAgICAgb3duZXItPmFkZENoaWxkSWdub3JpbmdDb250
aW51YXRpb24oZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lciwgMCk7Ci0gICAgZWxzZQotICAgICAg
ICBvd25lci0+YWRkQ2hpbGQoZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lciwgaW5zZXJ0QmVmb3Jl
KTsKLQotICAgIHJldHVybiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyOwotfQotCi12b2lkIFJl
bmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVj
dCogb3duZXIsIFBzZXVkb0lkIHR5cGUsIGNvbnN0IFJlbmRlck9iamVjdCogc3R5bGVkT2JqZWN0
KQotewotICAgIC8vIERvdWJsZSBjaGVjayB0aGF0IHRoZSBkb2N1bWVudCBkaWQgaW4gZmFjdCB1
c2UgZ2VuZXJhdGVkIGNvbnRlbnQgcnVsZXMuICBPdGhlcndpc2Ugd2Ugc2hvdWxkIG5vdCBoYXZl
IGJlZW4gY2FsbGVkLgotICAgIEFTU0VSVChvd25lci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENv
bGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSk7Ci0KLSAgICAvLyBJbiBDU1MyLCBi
ZWZvcmUvYWZ0ZXIgcHNldWRvLWNvbnRlbnQgY2Fubm90IG5lc3QuICBDaGVjayB0aGlzIGZpcnN0
LgotICAgIGlmIChvd25lci0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gQkVGT1JFIHx8IG93bmVy
LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBBRlRFUikKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
ICghc19lbmFibGVVcGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBpZiAoIXN0eWxlZE9iamVjdCkKLSAgICAgICAgc3R5bGVkT2JqZWN0ID0gb3duZXI7
Ci0KLSAgICBSZW5kZXJTdHlsZSogcHNldWRvRWxlbWVudFN0eWxlID0gc3R5bGVkT2JqZWN0LT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZSh0eXBlKTsKLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkOwotICAg
IHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQkVGT1JFOgotICAgICAgICBjaGlsZCA9IGJlZm9y
ZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihvd25lcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QUZURVI6Ci0gICAgICAgIGNoaWxkID0gYWZ0ZXJQc2V1ZG9FbGVtZW50UmVuZGVyZXIob3duZXIp
OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdoZXRoZXIgb3Igbm90IHdl
IGN1cnJlbnRseSBoYXZlIGdlbmVyYXRlZCBjb250ZW50IGF0dGFjaGVkLgotICAgIGJvb2wgb2xk
Q29udGVudFByZXNlbnQgPSBjaGlsZDsKLQotICAgIC8vIFdoZXRoZXIgb3Igbm90IHdlIG5vdyB3
YW50IGdlbmVyYXRlZCBjb250ZW50LgotICAgIGJvb2wgbmV3Q29udGVudFdhbnRlZCA9IHBzZXVk
b0VsZW1lbnRTdHlsZSAmJiBwc2V1ZG9FbGVtZW50U3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOwot
Ci0gICAgLy8gRm9yIDxxPjxwLz48L3E+LCBpZiB0aGlzIG9iamVjdCBpcyB0aGUgaW5saW5lIGNv
bnRpbnVhdGlvbiBvZiB0aGUgPHE+LCB3ZSBvbmx5IHdhbnQgdG8gZ2VuZXJhdGUKLSAgICAvLyA6
YWZ0ZXIgY29udGVudCBhbmQgbm90IDpiZWZvcmUgY29udGVudC4KLSAgICBpZiAobmV3Q29udGVu
dFdhbnRlZCAmJiB0eXBlID09IEJFRk9SRSAmJiBvd25lci0+aXNFbGVtZW50Q29udGludWF0aW9u
KCkpCi0gICAgICAgIG5ld0NvbnRlbnRXYW50ZWQgPSBmYWxzZTsKLQotICAgIC8vIFNpbWlsYXJs
eSwgaWYgd2UncmUgdGhlIGJlZ2lubmluZyBvZiBhIDxxPiwgYW5kIHRoZXJlJ3MgYW4gaW5saW5l
IGNvbnRpbnVhdGlvbiBmb3Igb3VyIG9iamVjdCwKLSAgICAvLyB0aGVuIHdlIGRvbid0IGdlbmVy
YXRlIHRoZSA6YWZ0ZXIgY29udGVudC4KLSAgICBpZiAobmV3Q29udGVudFdhbnRlZCAmJiB0eXBl
ID09IEFGVEVSICYmIG93bmVyLT52aXJ0dWFsQ29udGludWF0aW9uKCkpCi0gICAgICAgIG5ld0Nv
bnRlbnRXYW50ZWQgPSBmYWxzZTsKLSAgICAKLSAgICAvLyBJZiB3ZSBkb24ndCB3YW50IGdlbmVy
YXRlZCBjb250ZW50IGFueSBsb25nZXIsIG9yIGlmIHdlIGhhdmUgZ2VuZXJhdGVkIGNvbnRlbnQs
IGJ1dCBpdCdzIG5vIGxvbmdlcgotICAgIC8vIGlkZW50aWNhbCB0byB0aGUgbmV3IGNvbnRlbnQg
ZGF0YSB3ZSB3YW50IHRvIGJ1aWxkIHJlbmRlciBvYmplY3RzIGZvciwgdGhlbiB3ZSBudWtlIGFs
bAotICAgIC8vIG9mIHRoZSBvbGQgZ2VuZXJhdGVkIGNvbnRlbnQuCi0gICAgaWYgKG9sZENvbnRl
bnRQcmVzZW50ICYmICghbmV3Q29udGVudFdhbnRlZCB8fCBOb2RlOjpkaWZmKGNoaWxkLT5zdHls
ZSgpLCBwc2V1ZG9FbGVtZW50U3R5bGUsIG93bmVyLT5kb2N1bWVudCgpKSA9PSBOb2RlOjpEZXRh
Y2gpKSB7Ci0gICAgICAgIC8vIE51a2UgdGhlIGNoaWxkLiAKLSAgICAgICAgaWYgKGNoaWxkLT5z
dHlsZSgpLT5zdHlsZVR5cGUoKSA9PSB0eXBlKSB7Ci0gICAgICAgICAgICBvbGRDb250ZW50UHJl
c2VudCA9IGZhbHNlOwotICAgICAgICAgICAgY2hpbGQtPmRlc3Ryb3koKTsKLSAgICAgICAgICAg
IGNoaWxkID0gKHR5cGUgPT0gQkVGT1JFKSA/IG93bmVyLT52aXJ0dWFsQ2hpbGRyZW4oKS0+Zmly
c3RDaGlsZCgpIDogb3duZXItPnZpcnR1YWxDaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIElmIHdlIGhhdmUgbm8gcHNldWRvLWVsZW1lbnQgc3R5bGUg
b3IgaWYgdGhlIHBzZXVkby1lbGVtZW50IHN0eWxlJ3MgZGlzcGxheSB0eXBlIGlzIE5PTkUsIHRo
ZW4gd2UKLSAgICAvLyBoYXZlIG5vIGdlbmVyYXRlZCBjb250ZW50IGFuZCBjYW4gbm93IHJldHVy
bi4KLSAgICBpZiAoIW5ld0NvbnRlbnRXYW50ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChvd25lci0+aXNSZW5kZXJJbmxpbmUoKSAmJiAhcHNldWRvRWxlbWVudFN0eWxlLT5pc0Rpc3Bs
YXlJbmxpbmVUeXBlKCkgJiYgIXBzZXVkb0VsZW1lbnRTdHlsZS0+aXNGbG9hdGluZygpICYmCi0g
ICAgICAgICFwc2V1ZG9FbGVtZW50U3R5bGUtPmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCi0gICAg
ICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVjICh0aGUgZW5kIG9mIHNlY3Rpb24gMTIu
MSksIHRoZSBvbmx5IGFsbG93ZWQKLSAgICAgICAgLy8gZGlzcGxheSB2YWx1ZXMgZm9yIHRoZSBw
c2V1ZG8gc3R5bGUgYXJlIE5PTkUgYW5kIElOTElORSBmb3IgaW5saW5lIGZsb3dzLgotICAgICAg
ICAvLyBGSVhNRTogQ1NTMi4xIGxpZnRlZCB0aGlzIHJlc3RyaWN0aW9uLCBidXQgYmxvY2sgZGlz
cGxheSB0eXBlcyB3aWxsIGNyYXNoLgotICAgICAgICAvLyBGb3Igbm93IHdlIGF0IGxlYXN0IHJl
bGF4IHRoZSByZXN0cmljdGlvbiB0byBhbGxvdyBhbGwgaW5saW5lIHR5cGVzIGxpa2UgaW5saW5l
LWJsb2NrCi0gICAgICAgIC8vIGFuZCBpbmxpbmUtdGFibGUuCi0gICAgICAgIHBzZXVkb0VsZW1l
bnRTdHlsZS0+c2V0RGlzcGxheShJTkxJTkUpOwotCi0gICAgaWYgKG9sZENvbnRlbnRQcmVzZW50
KSB7Ci0gICAgICAgIHVwZGF0ZUJlZm9yZUFmdGVyU3R5bGUoY2hpbGQsIHR5cGUsIHBzZXVkb0Vs
ZW1lbnRTdHlsZSk7Ci0gICAgICAgIHJldHVybjsgLy8gV2UndmUgdXBkYXRlZCB0aGUgZ2VuZXJh
dGVkIGNvbnRlbnQuIFRoYXQncyBhbGwgd2UgbmVlZGVkIHRvIGRvLgotICAgIH0KLSAgICAKLSAg
ICBSZW5kZXJPYmplY3QqIGluc2VydEJlZm9yZSA9ICh0eXBlID09IEJFRk9SRSkgPyBvd25lci0+
dmlydHVhbENoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSA6IDA7Ci0gICAgaWYgKGluc2VydEJlZm9y
ZSAmJiBpbnNlcnRCZWZvcmUtPmlzQW5vbnltb3VzQmxvY2soKSAmJiBpbnNlcnRCZWZvcmUtPmNo
aWxkcmVuSW5saW5lKCkgJiYgIWluc2VydEJlZm9yZS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIC8v
IFdlIGFyZSBnb2luZyB0byBhZGQgdGhlICJiZWZvcmUiIGVsZW1lbnQuIFdlIGhhdmUgdG8gY2hl
Y2sgd2hldGhlciB0aGUgImluc2VydEJlZm9yZSIgZWxlbWVudAotICAgICAgICAvLyBpcyBhbiBh
bm9ueW1vdXMgYmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4uIElmIGl0IGlzLCB0aGVuIHdlIHNo
b3VsZCBpbnNlcnQgdGhlICJiZWZvcmUiIGVsZW1lbnQKLSAgICAgICAgLy8gYmVmb3JlIHRoZSBm
aXJzdCBpbmxpbmUgY2hpbGQgb2YgdGhlIGFub255bW91cyBibG9jaywgb3RoZXJ3aXNlIHdlIHdp
bGwgZW5kIHVwIHdpdGggdGhlICJiZWZvcmUiCi0gICAgICAgIC8vIGVsZW1lbnQgaW4gYSBkaWZm
ZXJlbnQgYmxvY2suIFdlIGRvIHRoaXMgb25seSB3aGVuIHRoZSBhbm9ueW1vdXMgYmxvY2sgaGFz
IGNoaWxkcmVuLCBvdGhlcndpc2UKLSAgICAgICAgLy8gd2UgZW5kIHVwIHdpdGggdGhlIGJlZm9y
ZSBlbGVtZW50IGluIGEgd3JvbmcgYmxvY2suCi0gICAgICAgIGluc2VydEJlZm9yZSA9IGluc2Vy
dEJlZm9yZS0+Zmlyc3RDaGlsZCgpOwotICAgIH0KLQotICAgIC8vIE5vdGhpbmcgZ29lcyBiZWZv
cmUgdGhlIGludHJ1ZGVkIHJ1bi1pbiwgbm90IGV2ZW4gZ2VuZXJhdGVkIGNvbnRlbnQuCi0gICAg
aWYgKGluc2VydEJlZm9yZSAmJiBpbnNlcnRCZWZvcmUtPmlzUnVuSW4oKSAmJiBvd25lci0+aXNS
ZW5kZXJCbG9jaygpCi0gICAgICAgICYmIHRvUmVuZGVyQmxvY2sob3duZXIpLT5ydW5JbklzUGxh
Y2VkSW50b1NpYmxpbmdCbG9jayhpbnNlcnRCZWZvcmUpKQotICAgICAgICBpbnNlcnRCZWZvcmUg
PSBpbnNlcnRCZWZvcmUtPm5leHRTaWJsaW5nKCk7Ci0KLSAgICAvLyBHZW5lcmF0ZWQgY29udGVu
dCBjb25zaXN0cyBvZiBhIHNpbmdsZSBjb250YWluZXIgdGhhdCBob3VzZXMgbXVsdGlwbGUgY2hp
bGRyZW4gKHNwZWNpZmllZAotICAgIC8vIGJ5IHRoZSBjb250ZW50IHByb3BlcnR5KS4gVGhpcyBn
ZW5lcmF0ZWQgY29udGVudCBjb250YWluZXIgZ2V0cyB0aGUgcHNldWRvLWVsZW1lbnQgc3R5bGUg
c2V0IG9uIGl0LgotICAgIC8vIEZvciBwc2V1ZG8tZWxlbWVudHMgdGhhdCBhcmUgcmVnaW9ucywg
dGhlIGNvbnRhaW5lciBpcyB0aGUgUmVuZGVyUmVnaW9uLgotICAgIFJlbmRlck9iamVjdCogZ2Vu
ZXJhdGVkQ29udGVudENvbnRhaW5lciA9IDA7Ci0KLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRTdHls
ZS0+cmVnaW9uVGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAgICBnZW5lcmF0ZWRDb250ZW50Q29u
dGFpbmVyID0gZW5zdXJlQmVmb3JlQWZ0ZXJDb250YWluZXIob3duZXIsIHR5cGUsIHBzZXVkb0Vs
ZW1lbnRTdHlsZSwgc3R5bGVkT2JqZWN0LT5ub2RlKCksIGluc2VydEJlZm9yZSk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIC8vIFdhbGsgb3VyIGxpc3Qgb2YgZ2VuZXJhdGVkIGNvbnRlbnQgYW5kIGNy
ZWF0ZSByZW5kZXIgb2JqZWN0cyBmb3IgZWFjaC4KLSAgICAgICAgZm9yIChjb25zdCBDb250ZW50
RGF0YSogY29udGVudCA9IHBzZXVkb0VsZW1lbnRTdHlsZS0+Y29udGVudERhdGEoKTsgY29udGVu
dDsgY29udGVudCA9IGNvbnRlbnQtPm5leHQoKSkgewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGNvbnRlbnQtPmNyZWF0ZVJlbmRlcmVyKG93bmVyLT5kb2N1bWVudCgpLCBw
c2V1ZG9FbGVtZW50U3R5bGUpOwotCi0gICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENvbnRlbnRD
b250YWluZXIpIHsKLSAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyID0g
ZW5zdXJlQmVmb3JlQWZ0ZXJDb250YWluZXIob3duZXIsIHR5cGUsIHBzZXVkb0VsZW1lbnRTdHls
ZSwgc3R5bGVkT2JqZWN0LT5ub2RlKCksIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT5kZXN0cm95KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29udGVu
dENvbnRhaW5lci0+aXNDaGlsZEFsbG93ZWQocmVuZGVyZXIsIHBzZXVkb0VsZW1lbnRTdHlsZSkp
Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+YWRkQ2hpbGQocmVu
ZGVyZXIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5kZXN0
cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWdlbmVyYXRlZENvbnRlbnRDb250
YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEhhbmRsZSBwbGFjZW1lbnQgb2YgcnVu
LWlucy4gV2UgZG8gdGhlIHJ1bi1pbiBwbGFjZW1lbnQgYXQgdGhlIGVuZCBzaW5jZSBnZW5lcmF0
ZWRDb250ZW50Q29udGFpbmVyIGNhbiBnZXQgZGVzdHJveWVkLgotICAgIFJlbmRlck9iamVjdCog
Z2VuZXJhdGVkQ29udGVudENvbnRhaW5lckltbWVkaWF0ZVBhcmVudCA9IGdlbmVyYXRlZENvbnRl
bnRDb250YWluZXItPnBhcmVudCgpOwotICAgIGlmIChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
SW1tZWRpYXRlUGFyZW50LT5pc1JlbmRlckJsb2NrKCkpCi0gICAgICAgIHRvUmVuZGVyQmxvY2so
Z2VuZXJhdGVkQ29udGVudENvbnRhaW5lckltbWVkaWF0ZVBhcmVudCktPnBsYWNlUnVuSW5JZk5l
ZWRlZChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLCBQbGFjZUdlbmVyYXRlZFJ1bkluKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5jcHAKaW5kZXggZTk3NjVmMjhkMjMyYTI4ZmU0N2RkYWZlMjM0NWRjNGI3ODcx
MzJlMy4uYmU4MzEzYmNiODM1ZjFmYmRiNzIwZDhiZWQ1ODM0ZTMzN2I3Y2JiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC04OCwxNSArODgsNCBA
QCBib29sIFJlbmRlclJ1YnlUZXh0Ojphdm9pZHNGbG9hdHMoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFJlbmRlclJ1YnlUZXh0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQo
UHNldWRvSWQgcHNldWRvSWQpCi17Ci0gICAgLy8gUmVuZGVyUnVieVRleHQgbWFuYWdlcyBpdHMg
b3duIDpiZWZvcmUgYW5kIDphZnRlciBjb250ZW50Ci0gICAgLy8gYW5kIGlzIG5vdCBoYW5kbGVk
IGJ5IGl0cyBhbm9ueW1vdXMgd3JhcHBlcnMgUmVuZGVyUnVieVJ1bgotICAgIC8vIGFuZCBSZW5k
ZXJSdWJ5LiBUaGlzIGNvbnRyYXN0cyB3aXRoIG90aGVyIHJ1YnkgY2hpbGRyZW4sIHdoaWNoCi0g
ICAgLy8gYXJlIGVuY2xvc2VkIGluIFJlbmRlclJ1YnlCYXNlIGFuZCBoZW5jZSB0aGV5IGFyZSBh
YmxlIHRvCi0gICAgLy8gdXBkYXRlIHRoZWlyIDpiZWZvcmUsIDphZnRlciBjb250ZW50IChzaW5j
ZSBSZW5kZXJSdWJ5QmFzZQotICAgIC8vIGlzIG5vdCBhIGFub255bW91cyB3cmFwcGVyKS4KLSAg
ICByZXR1cm4gY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KHRoaXMsIHBzZXVk
b0lkKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVRleHQuaAppbmRleCBmNDczMDRjY2RmZmRlOTNhM2JiNGFjYjMwNjAwM2Rh
NDVkYmY3NDM4Li4zYTY3OTI2OWY2N2RhMDVmY2FiY2M4NzBlMGE0Zjc0ODgwNDUxYTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtNDYsOCArNDYsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0
KiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVB
ZnRlckNvbnRlbnQoUHNldWRvSWQpOwotCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhdm9p
ZHNGbG9hdHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5jcHAKaW5kZXggZTAwYzlhNjRmYmQ5N2ZkNjg4ODMyMzMyODI5MGFlZWFjMWZjNTY3ZS4u
ZDZjYmJmZGI0ZjYwMDVlYWNkMzNlZGI4YjY2NjZhZDU5NmU5ZTFmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC01MywxNCArNTMsNiBAQCB2b2lk
IFJlbmRlclRhYmxlUm93Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKQogICAgIHNlY3Rpb24oKS0+
c2V0TmVlZHNDZWxsUmVjYWxjKCk7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVSb3c6OnVwZGF0ZUJl
Zm9yZUFuZEFmdGVyQ29udGVudCgpCi17Ci0gICAgaWYgKCFpc0Fub255bW91cygpICYmIGRvY3Vt
ZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkpIHsK
LSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KHRoaXMsIEJFRk9S
RSk7Ci0gICAgICAgIGNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCh0aGlzLCBB
RlRFUik7Ci0gICAgfQotfQotCiB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAg
IEFTU0VSVChzdHlsZSgpLT5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XKTsKQEAgLTY4LDkgKzYwLDYg
QEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKICAgICBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdl
KGRpZmYsIG9sZFN0eWxlKTsKICAgICBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4o
KTsKIAotICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgdXBkYXRlQmVmb3JlQW5kQWZ0ZXJDb250
ZW50KCk7Ci0KICAgICBpZiAoc2VjdGlvbigpICYmIG9sZFN0eWxlICYmIHN0eWxlKCktPmxvZ2lj
YWxIZWlnaHQoKSAhPSBvbGRTdHlsZS0+bG9naWNhbEhlaWdodCgpKQogICAgICAgICBzZWN0aW9u
KCktPnJvd0xvZ2ljYWxIZWlnaHRDaGFuZ2VkKHJvd0luZGV4KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IGMwNWY0NGI2ODU5NWU4Mjk3ZDRlZGMy
NmE4YzI1OGI1YzlhOWZhNTYuLjhiNjYzZTZkMmNhNDkzZGU0MjYxMmE5NjFjMWQ1MjU4NTA4Nzgz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC00NSw3
ICs0NSw2IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24oKSBjb25z
dCB7IHJldHVybiB0b1JlbmRlclRhYmxlU2VjdGlvbihwYXJlbnQoKSk7IH0KICAgICBSZW5kZXJU
YWJsZSogdGFibGUoKSBjb25zdCB7IHJldHVybiB0b1JlbmRlclRhYmxlKHBhcmVudCgpLT5wYXJl
bnQoKSk7IH0KIAotICAgIHZvaWQgdXBkYXRlQmVmb3JlQW5kQWZ0ZXJDb250ZW50KCk7CiAgICAg
dm9pZCBwYWludE91dGxpbmVGb3JSb3dJZk5lZWRlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpOwogCiAgICAgc3RhdGljIFJlbmRlclRhYmxlUm93KiBjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGM4NDUyYTQ3YzliY2I0NzU2
NDRjN2JmZDhlNjQ3NDdhOTRjNDExYjIuLmZhZDIxOWI3NzllNmY1OWVlM2QwN2U2YTYyZTdiNzk0
NzNiZWQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCkBAIC0xODYsNyArMTg2LDYgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFk
ZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQKIAog
ICAgIEFTU0VSVCghYmVmb3JlQ2hpbGQgfHwgYmVmb3JlQ2hpbGQtPmlzVGFibGVSb3coKSk7CiAg
ICAgUmVuZGVyQm94OjphZGRDaGlsZChjaGlsZCwgYmVmb3JlQ2hpbGQpOwotICAgIHRvUmVuZGVy
VGFibGVSb3coY2hpbGQpLT51cGRhdGVCZWZvcmVBbmRBZnRlckNvbnRlbnQoKTsKIH0KIAogdm9p
ZCBSZW5kZXJUYWJsZVNlY3Rpb246OmVuc3VyZVJvd3ModW5zaWduZWQgbnVtUm93cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggOTc3NzUxYTczNjg2NDU0
ZWY4YWVhMjNlMGE3OWE1Nzc4NjRjZjFhNC4uNTg4ZTk2MzUzNjg1OTQxMzIyYmY0ZTE3NTg1ODlm
NDYzM2VlZTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6ZGVzdHJveSgpCiAgICAgLy8g
R3JhYiB0aGUgYXJlbmEgZnJvbSBub2RlKCktPmRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkgYmVm
b3JlIGNsZWFyaW5nIHRoZSBub2RlIHBvaW50ZXIuCiAgICAgLy8gQ2xlYXIgdGhlIG5vZGUgYmVm
b3JlIGRlcmVmLWluZywgYXMgdGhpcyBtYXkgYmUgZGVsZXRlZCB3aGVuIGRlcmVmIGlzIGNhbGxl
ZC4KICAgICBSZW5kZXJBcmVuYSogYXJlbmEgPSByZW5kZXJBcmVuYSgpOwotICAgIHNldE5vZGUo
MCk7CisgICAgY2xlYXJOb2RlKCk7CiAgICAgZGVyZWYoYXJlbmEpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178616</attachid>
            <date>2012-12-10 13:15:33 -0800</date>
            <delta_ts>2012-12-10 13:56:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104462-20121210131255.patch</filename>
            <type>text/plain</type>
            <size>63586</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNkZmYxZjhkZjc3MDIy
MjUzMDJmZDFmMDQzY2I5ZTdjMGZkMDY5Yi4uYjliNjNmNGI0Y2VkMjljZjUwNDA4M2IzZDk3MGE0
NDlhY2RkNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTEwICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCB0byBu
ZXcgUHNldWRvRWxlbWVudCBiYXNlZCA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB0aGUgbmV3IFBzZXVk
b0VsZW1lbnQgYmFzZWQgZ2VuZXJhdGVkIGNvbnRlbnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
dGhhdCBtb3ZlcyA6YmVmb3JlIGFuZCA6YWZ0ZXIgaW50byB0aGUgRE9NLiBUaGlzIGFsc28gc3dp
dGNoZXMgdG8gdXNpbmcKKyAgICAgICAgdGhlIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBmb3Ig
ZGV0ZXJtaW5pbmcgdGhlIHNpYmxpbmdzIG9mIFBzZXVkb0VsZW1lbnQncworICAgICAgICBtYWtp
bmcgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0IGFkZGlu
ZyA6YmVmb3JlCisgICAgICAgIGFuZCA6YWZ0ZXIgaW50byA8aW5wdXQ+IGVsZW1lbnRzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5s
aW5lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1v
cmllbnQuaHRtbAorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJl
TmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgor
ICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVS
ZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQp
OgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dpY2FsbHlQcmV2aW91c0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsbHlOZXh0
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJh
Z2dhYmxlTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6c3BsaXRCbG9ja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmFkZENoaWxkSWdub3JpbmdBbm9ueW1vdXNDb2x1bW5CbG9ja3MpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZVJlcGxhY2VtZW50UnVuSW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oOgorICAgICAgICAoUmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29u
dGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3BsaXRJbmxpbmVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEl0ZW06OnVwZGF0ZU1hcmtlckxvY2F0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5vblBzZXVkb05vZGUpOgor
ICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKyAgICAgICAgKFJlbmRl
ck9iamVjdENoaWxkTGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaDoKKyAgICAgICAgKFJlbmRl
clJ1YnlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6
YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpkZXN0cm95KToKKwogMjAxMi0xMi0wOSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNl
IEdPYmplY3QgY2FzdHMgaW5zdGVhZCBvZiBDKysgY2FzdCBmb3IgR09iamVjdHMgaW4gRE9NIGJp
bmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGE5YmU5NTM3NjkyZTVmZGUwNTMwYmMwNjAxNzZmZjUzMGE5M2YxZjcuLjEyNDg2
YTkxN2E5ZTM2Y2Q4NDM2ZmNjNjlhNmIwNDZlY2E2Njc5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIlBzZXVkb0VsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODAsNiArMTgxLDQ2IEBAIHZvaWQg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQogICAgIGFzc2VydFBv
c3Rjb25kaXRpb24oKTsKIH0KIAordm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVk
b0F3YXJlTmV4dFNpYmxpbmcoKQoreworICAgIGFzc2VydFByZWNvbmRpdGlvbigpOworCisgICAg
Y29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgIGlmIChub2RlLT5pc0JlZm9yZVBzZXVk
b0VsZW1lbnQoKSkKKyAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VGaXJzdENoaWxkKHRyYXZlcnNl
UGFyZW50KG5vZGUpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlU2libGlu
Z09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7
CisKKyAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgewor
ICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICAgICAgaWYg
KHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIG1fbm9kZSA9
IHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICB9CisKKyAgICBh
c3NlcnRQb3N0Y29uZGl0aW9uKCk7Cit9CisKK3ZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCit7CisgICAgYXNzZXJ0UHJlY29uZGl0aW9u
KCk7CisKKyAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOworCisgICAgaWYgKG5vZGUtPmlz
QWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlTGFzdENoaWxk
KHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm9kZSA9IHRyYXZl
cnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9u
QmFja3dhcmQpOworCisgICAgaWYgKCFtX25vZGUgJiYgIW5vZGUtPmlzQmVmb3JlUHNldWRvRWxl
bWVudCgpKSB7CisgICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFyZW50KG5vZGUpOwor
ICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKyAg
ICB9CisKKyAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Cit9CisKIE5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNvbnN0IE5vZGUqIG5vZGUs
IGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgVHJhdmVyc2FsRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0OyBu
ZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gaW5zZXJ0aW9u
UG9pbnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBvaW50LT5wcmV2aW91c1RvKG5leHQpKSkg
ewpAQCAtMjU4LDYgKzI5OSw5IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwYXJl
bnQoKQogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDE1CiBO
b2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUq
IG5vZGUsIFBhcmVudFRyYXZlcnNhbERldGFpbHMqIGRldGFpbHMpIGNvbnN0CiB7CisgICAgaWYg
KG5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpOworCiAgICAgaWYgKCFjYW5Dcm9zc1VwcGVyQm91bmRhcnkoKSAmJiBub2RlLT5p
c1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBBU1NFUlQodG9TaGFkb3dSb290KG5vZGUpLT5pc1lv
dW5nZXN0KCkpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaAppbmRleCA4OTc2OWIxNzIzNDJkZDRhMThjNTk3ZTVjNmFl
MjRkMWU4MGQyZGMxLi40YjZmZjk1NmE0NTE5YjhkNjAyNDgzMWYyNzU4OGE2NGM0YWE5ZDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC05
MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5leHRTaWJsaW5nKCk7CiAgICAgdm9pZCBw
cmV2aW91c1NpYmxpbmcoKTsKIAorICAgIHZvaWQgcHNldWRvQXdhcmVOZXh0U2libGluZygpOwor
ICAgIHZvaWQgcHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsKKwogICAgIHZvaWQgcGFyZW50
KCk7CiAKICAgICB2b2lkIG5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2MjdlOTgx
M2JmZDdmOTI5ODlmNzFhMzgxM2Y0YTIxNTMyMzMzZjMyLi44OWRmOTFiODkwYWU4NGJlOTRhMGQw
Nzk5OWM4YzY5YTBlOWEyMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTY5LDYgKzEx
NjksOCBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgaWYgKHBhcmVudEVsZW1lbnQoKSAm
JiBwYXJlbnRFbGVtZW50KCktPmlzSW5DYW52YXNTdWJ0cmVlKCkpCiAgICAgICAgIHNldElzSW5D
YW52YXNTdWJ0cmVlKHRydWUpOwogCisgICAgdXBkYXRlUHNldWRvRWxlbWVudChCRUZPUkUpOwor
CiAgICAgLy8gV2hlbiBhIHNoYWRvdyByb290IGV4aXN0cywgaXQgZG9lcyB0aGUgd29yayBvZiBh
dHRhY2hpbmcgdGhlIGNoaWxkcmVuLgogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0
aGlzLT5zaGFkb3coKSkgewogICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgpOwpAQCAtMTE3OCw2
ICsxMTgwLDggQEAgdm9pZCBFbGVtZW50OjphdHRhY2goKQogCiAgICAgQ29udGFpbmVyTm9kZTo6
YXR0YWNoKCk7CiAKKyAgICB1cGRhdGVQc2V1ZG9FbGVtZW50KEFGVEVSKTsKKwogICAgIGlmICho
YXNSYXJlRGF0YSgpKSB7ICAgCiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVsZW1l
bnRSYXJlRGF0YSgpOwogICAgICAgICBpZiAoZGF0YS0+bmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRh
dGVTb29uQWZ0ZXJBdHRhY2goKSkgewpAQCAtMTMzMCw2ICsxMzM0LDggQEAgdm9pZCBFbGVtZW50
OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICB1cGRhdGVQc2V1ZG9FbGVtZW50KEJFRk9SRSwgY2hhbmdlKTsKKwogICAgIC8vIEZJWE1FOiBU
aGlzIGNoZWNrIGlzIGdvb2QgZW5vdWdoIGZvciA6aG92ZXIgKyBmb28sIGJ1dCBpdCBpcyBub3Qg
Z29vZCBlbm91Z2ggZm9yIDpob3ZlciArIGZvbyArIGJhci4KICAgICAvLyBGb3Igbm93IHdlIHdp
bGwganVzdCB3b3JyeSBhYm91dCB0aGUgY29tbW9uIGNhc2UsIHNpbmNlIGl0J3MgYSBsb3QgdHJp
Y2tpZXIgdG8gZ2V0IHRoZSBzZWNvbmQgY2FzZSByaWdodAogICAgIC8vIHdpdGhvdXQgZG9pbmcg
d2F5IHRvbyBtdWNoIHJlLXJlc29sdXRpb24uCkBAIC0xMzU0LDYgKzEzNjAsOCBAQCB2b2lkIEVs
ZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgZm9yY2VDaGVj
a09mQW55RWxlbWVudFNpYmxpbmcgPSBmb3JjZUNoZWNrT2ZBbnlFbGVtZW50U2libGluZyB8fCAo
Y2hpbGRSdWxlc0NoYW5nZWQgJiYgaGFzSW5kaXJlY3RBZGphY2VudFJ1bGVzKTsKICAgICB9CiAK
KyAgICB1cGRhdGVQc2V1ZG9FbGVtZW50KEFGVEVSLCBjaGFuZ2UpOworCiAgICAgY2xlYXJOZWVk
c1N0eWxlUmVjYWxjKCk7CiAgICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAwNWFkNDg2ZDRhZjEyM2E3NTU2ODQ0ZTg0MDlhMmI0YjBjMjQ4
YWNkLi43MWYxOWM2NWUwZmRlOGYxOGZhYzllYWUzOTFjZjExOTlmMjUyYWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgIkNoaWxkTm9kZUxpc3QuaCIKICNpbmNsdWRlICJDbGFzc05vZGVMaXN0LmgiCisjaW5j
bHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgpAQCAtNDQ3LDM0ICs0NDgsNiBAQCB2b2lkIE5vZGU6
OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQogICAgIGVuc3VyZVJhcmVEYXRhKCktPnNl
dFRyZWVTY29wZShzY29wZSk7CiB9CiAKLU5vZGUqIE5vZGU6OnBzZXVkb0F3YXJlUHJldmlvdXNT
aWJsaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoaXNFbGVtZW50Tm9kZSgpICYmICFwcmV2aW91c1Np
YmxpbmcoKSkgewotICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50
KCk7Ci0gICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IGlmIChpc0FmdGVyUHNldWRvRWxlbWVudCgpICYmIHBhcmVudC0+bGFzdENoaWxkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gcGFyZW50LT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgaWYgKCFpc0JlZm9y
ZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmJlZm9yZVBzZXVk
b0VsZW1lbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHByZXZpb3VzU2libGluZygpOwotfQotCi1O
b2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoaXNF
bGVtZW50Tm9kZSgpICYmICFuZXh0U2libGluZygpKSB7Ci0gICAgICAgIEVsZW1lbnQqIHBhcmVu
dCA9IHBhcmVudE9ySG9zdEVsZW1lbnQoKTsKLSAgICAgICAgaWYgKCFwYXJlbnQpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGlzQmVmb3JlUHNldWRvRWxlbWVudCgpICYmIHBh
cmVudC0+Zmlyc3RDaGlsZCgpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+Zmlyc3RDaGls
ZCgpOwotICAgICAgICBpZiAoIWlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcGFyZW50LT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5l
eHRTaWJsaW5nKCk7Ci19Ci0KIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAog
ewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGM5NTFjNzIzODc5
MTdiZTIwMjM5MjhlNmVjZDQyZGFhMDkyZGYwM2YuLjE2MGMyODNjNjkzZWUxNjlhNWM3MDRhNWFl
ZWYwZDk3YTlhZjFkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTkwLDkgKzE5MCw2IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0F0dHJpYnV0ZXMoKSBjb25zdDsKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZXMoKSBjb25zdDsKIAotICAgIE5vZGUqIHBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkg
Y29uc3Q7Ci0gICAgTm9kZSogcHNldWRvQXdhcmVOZXh0U2libGluZygpIGNvbnN0OwotCiAgICAg
dmlydHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGdldFN1YnJlc291
cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNDY0NmNkODRhM2Q5YzBiNjZiZjMyMDMzNmJk
NTEzOTk1OWM0YTRjNy4uMmM4OWE4OGQ5ZmQ0ODZhYmMxMTA3NjlkZDY5ZDVkMTdmNTkxMjRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMiw5
ICszMiwxMSBAQAogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJGbG93VGhy
ZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQc2V1
ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJl
bmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtODMs
MTcgKzg1LDggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKCkgY29uc3QKICAgICBpZiAobV9wYXJlbnREZXRhaWxzLm5vZGUoKSAmJiAhbV9wYXJlbnRE
ZXRhaWxzLm5vZGUoKS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAvLyBG
SVhNRTogVGhpcyBpcyB3cm9uZyB3aGVuIHRoZSBuZXh0IHNpYmxpbmcgd2FzIGFjdHVhbGx5IG1v
dmVkIGFyb3VuZCBieSBzaGFkb3cgaW5zZXJ0aW9uIHBvaW50cy4KLSAgICBpZiAobV9ub2RlLT5p
c1BzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBtX25vZGUt
PnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlcjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIubmV4
dFNpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkgeworICAgIGZv
ciAod2Fsa2VyLnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIu
cHNldWRvQXdhcmVOZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gd2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBSZW5k
ZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNr
aXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAg
IGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxl
KCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQpAQCAtMTEw
LDEwICsxMDMsNiBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91
c1JlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9k
ZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmco
KTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgcHNldWRvIGVs
ZW1lbnRzIHNpbmNlIG5vdGhpbmcgbmVlZHMKLSAgICAvLyBwcmV2aW91c1JlbmRlcmVyKCkgc3Vw
cG9ydCBmb3IgdGhlbSB5ZXQuCi0gICAgQVNTRVJUKCFtX25vZGUtPmlzUHNldWRvRWxlbWVudCgp
KTsKLQogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1fcGFy
ZW50Rmxvd1JlbmRlcmVyLT5wcmV2aW91c1JlbmRlcmVyRm9yTm9kZShtX25vZGUpOwogCkBAIC0x
MjEsNyArMTEwLDcgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlv
dXNSZW5kZXJlcigpIGNvbnN0CiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBp
dCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCiAKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
d2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHJldmlvdXNTaWJsaW5nKCk7IHdhbGtl
ci5nZXQoKTsgd2Fsa2VyLnByZXZpb3VzU2libGluZygpKSB7CisgICAgZm9yICh3YWxrZXIucHNl
dWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJz
IGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVk
IGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYm
ICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKQEAgLTIzNSw3ICsy
MjQsNyBAQCB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZvckVsZW1l
bnRJZk5lZWRlZCgpCiAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+
cGFyZW50UmVuZGVyZXIoKTsKICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IHRoaXMt
Pm5leHRSZW5kZXJlcigpOwotCisgICAgCiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAg
IGlmIChlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKICAgICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9p
bnRGb3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFyZW50UmVuZGVyZXIsIG5leHRSZW5kZXJl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBhMWMwYjAxZTEwMjQyNTMxNmE2NjkzMzRl
MzJkZTQzNDI4MTRiMmUxLi4wNTgxYTg4YzE3NDBhNGNjMWRkMDYzODM1MzhlM2Y2YjZkMjM2MTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgUG9zaXRpb246OlBv
c2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgTGVnYWN5RWRpdGluZ09mZnNldCBv
ZmZzZXQpCiAjZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUt
PmlzU2hhZG93Um9vdCgpKTsKICNlbmRpZgorICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFt
X2FuY2hvck5vZGUtPmlzUHNldWRvRWxlbWVudCgpKTsKIH0KIAogUG9zaXRpb246OlBvc2l0aW9u
KFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgQW5jaG9yVHlwZSBhbmNob3JUeXBlKQpAQCAt
MTAyLDYgKzEwMyw4IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hv
ck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8
fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAjZW5kaWYKIAorICAgIEFTU0VSVCgh
bV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzUHNldWRvRWxlbWVudCgpKTsKKwogICAg
IEFTU0VSVChhbmNob3JUeXBlICE9IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiAgICAgQVNT
RVJUKCEoKGFuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuIHx8IGFuY2hvclR5
cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pCiAgICAgICAgICYmIChtX2FuY2hvck5vZGUt
PmlzVGV4dE5vZGUoKSB8fCBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgp
KSkpKTsKQEAgLTEyMCw2ICsxMjMsOCBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxO
b2RlPiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JUeXBlIGFuY2hvclR5cAogICAgIEFT
U0VSVCghbV9hbmNob3JOb2RlIHx8ICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2Rl
LmdldCgpKSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAjZW5kaWYKIAorICAg
IEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzUHNldWRvRWxlbWVudCgp
KTsKKwogICAgIEFTU0VSVChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7
CiB9CiAKQEAgLTg0MCw3ICs4NDUsNyBAQCBib29sIFBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFu
b255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcgogewogICAg
IFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyLT5uZXh0SW5QcmVPcmRlckFmdGVyQ2hpbGRy
ZW4oKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCAqbyA9IHJlbmRlcmVyLT5maXJzdENoaWxkKCk7
IG8gJiYgbyAhPSBzdG9wOyBvID0gby0+bmV4dEluUHJlT3JkZXIoKSkKLSAgICAgICAgaWYgKG8t
Pm5vZGUoKSAmJiAhby0+bm9kZSgpLT5pc1BzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBpZiAo
by0+bm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoKG8tPmlzVGV4dCgpICYmIHRv
UmVuZGVyVGV4dChvKS0+bGluZXNCb3VuZGluZ0JveCgpLmhlaWdodCgpKSB8fAogICAgICAgICAg
ICAgICAgIChvLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KG8pLT5ib3JkZXJCb3VuZGluZ0JveCgp
LmhlaWdodCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IDJiNmU5NDgwM2FjNzllNjE4ZDQzMzk1YmM4
NTI2OTg0YmM1N2U4ZWEuLjI4Njg5NGI3YjE3ODVjOTEwZThlMmVkNTU5MTk1NDA1M2I1OGE2NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcApAQCAtMjE0LDggKzIx
NCw4IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlQcmV2aW91c0JveChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQCiAgICAgICAgIHJldHVybiBwcmV2aW91c0Jv
eDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94
LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKSA6IDA7Ci0gICAgICAg
IGlmICghc3RhcnROb2RlIHx8IHN0YXJ0Tm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAg
IE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJlbmRl
cmVyKCktPm5vblBzZXVkb05vZGUoKSA6IDA7CisgICAgICAgIGlmICghc3RhcnROb2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBwcmV2aW91c1Jv
b3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihzdGFydE5vZGUsIHZpc2libGVQb3NpdGlvbiwg
Q29udGVudElzRWRpdGFibGUpOwpAQCAtMjU1LDggKzI1NSw4IEBAIHN0YXRpYyBjb25zdCBJbmxp
bmVUZXh0Qm94KiBsb2dpY2FsbHlOZXh0Qm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0CiAgICAgICAgIHJldHVybiBuZXh0Qm94OwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAg
ICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCkgPyBzdGFydEJveC0+cmVu
ZGVyZXIoKS0+bm9kZSgpIDogMDsKLSAgICAgICAgaWYgKCFzdGFydE5vZGUgfHwgc3RhcnROb2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gt
PnJlbmRlcmVyKCkgPyBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9uUHNldWRvTm9kZSgpIDogMDsK
KyAgICAgICAgaWYgKCFzdGFydE5vZGUpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBQ
b3NpdGlvbiBwb3NpdGlvbiA9IG5leHRSb290SW5saW5lQm94Q2FuZGlkYXRlUG9zaXRpb24oc3Rh
cnROb2RlLCB2aXNpYmxlUG9zaXRpb24sIENvbnRlbnRJc0VkaXRhYmxlKTsKQEAgLTc0Myw4ICs3
NDMsOCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaQogICAgICAgICAgICAgaWYgKCFzdGFydFJl
bmRlcmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAg
ICAgICAgICAgc3RhcnROb2RlID0gc3RhcnRSZW5kZXJlci0+bm9kZSgpOwotICAgICAgICAgICAg
aWYgKHN0YXJ0Tm9kZSAmJiAhc3RhcnROb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAg
ICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKKyAgICAgICAg
ICAgIGlmIChzdGFydE5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
IHN0YXJ0Qm94ID0gc3RhcnRCb3gtPm5leHRMZWFmQ2hpbGQoKTsKQEAgLTgxNSw4ICs4MTUsOCBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAgICAgICAgICAgaWYgKCFlbmRSZW5kZXJlcikK
ICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAg
IGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+bm9kZSgpOwotICAgICAgICAgICAgaWYgKGVuZE5vZGUg
JiYgIWVuZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAgICAgZW5kTm9kZSA9IGVu
ZFJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCk7CisgICAgICAgICAgICBpZiAoZW5kTm9kZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZW5kQm94ID0g
ZW5kQm94LT5wcmV2TGVhZkNoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDc4YmM2ZTk0ODY3ZWZmNDM4OTMwN2Ji
MWUyMzk2MzVkMDcxOTk1ODUuLmI3MjVmMmE3NWE5YTg4NjExODFmZTNkNTMzNDJiM2I0NDA1ODQ3
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCkBAIC02NSw2ICs2NSwxMCBAQCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
fkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkKIAogYm9vbCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYgY2hpbGRDb250ZXh0KSBjb25zdAogeworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qg
Zm9yY2UgdGhlIHBzZXVkbyBlbGVtZW50cyBkb3duIGludG8gdGhlIHNoYWRvdywgYnV0CisgICAg
Ly8gdGhpcyBwZXJzZXJ2ZXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgV2ViS2l0LgorICAgIGlm
IChjaGlsZENvbnRleHQubm9kZSgpLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY2hpbGRDb250ZXh0KTsKICAgICByZXR1cm4gY2hpbGRDb250ZXh0LmlzT25FbmNhcHN1bGF0
aW9uQm91bmRhcnkoKSAmJiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggM2EwZGQxNmQyNmFjMjA5NjRjOWRiOTVjZGFhZmQyMjhh
YWVlODllNi4uNmUxM2U0ZWE1YjhhOTRjNDJiOTQzMjZiNWRmYzMwZjdmZGU0MmZlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTYyNSw3ICs2MjUsNyBAQCBOb2Rl
KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSogc3JjLCBOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IEludAogICAgIHN0YXRlLm1fZHJhZ1R5cGUgPSAoc3JjLT5zZWxlY3Rp
b24oKS0+Y29udGFpbnMoZHJhZ09yaWdpbikpID8gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiA6
IERyYWdTb3VyY2VBY3Rpb25Ob25lOwogCiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gc3RhcnROb2RlLT5yZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5k
ZXJlci0+cGFyZW50KCkpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7
CisgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9kZSgpOwogICAgICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAvLyBBbm9ueW1vdXMgcmVuZGVyIGJsb2NrcyBkb24n
dCBjb3JyZXNwb25kIHRvIGFjdHVhbCBET00gbm9kZXMsIHNvIHdlIHNraXAgb3ZlciB0aGVtCiAg
ICAgICAgICAgICAvLyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcgYSBkcmFnZ2FibGUgbm9k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGM4ZmIxNTQy
MWQ5OTIwNzVmZWI2NWY5ZDg2YmNjYmRhNzAwMzAwZWEuLmY3YWIzYTc5MzUzMWQxOWQ4MWM3YTJj
ZWQyNGQ3YzdkNjBmNzVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMzQzLDEyICszNDMsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eQogICAgIHBy
b3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbih0cnVlKTsgICAgCiAgICAgbV9saW5lSGVp
Z2h0ID0gLTE7CiAKLSAgICAvLyBVcGRhdGUgcHNldWRvcyBmb3IgOmJlZm9yZSBhbmQgOmFmdGVy
IG5vdy4KLSAgICBpZiAoIWlzQW5vbnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENv
bGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSAmJiBjYW5IYXZlR2VuZXJhdGVkQ2hp
bGRyZW4oKSkgewotICAgICAgICB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoQkVGT1JFKTsKLSAg
ICAgICAgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KEFGVEVSKTsKLSAgICB9Ci0KICAgICAvLyBB
ZnRlciBvdXIgc3R5bGUgY2hhbmdlZCwgaWYgd2UgbG9zZSBvdXIgYWJpbGl0eSB0byBwcm9wYWdh
dGUgZmxvYXRzIGludG8gbmV4dCBzaWJsaW5nCiAgICAgLy8gYmxvY2tzLCB0aGVuIHdlIG5lZWQg
dG8gZmluZCB0aGUgdG9wIG1vc3QgcGFyZW50IGNvbnRhaW5pbmcgdGhhdCBvdmVyaGFuZ2luZyBm
bG9hdCBhbmQKICAgICAvLyB0aGVuIG1hcmsgaXRzIGRlc2NlbmRhbnRzIHdpdGggZmxvYXRzIGZv
ciBsYXlvdXQgYW5kIGNsZWFyIGFsbCBmbG9hdHMgZnJvbSBpdHMgbmV4dApAQCAtMzgwLDE0ICsz
NzQsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJC
bG9jazo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFBzZXVkb0lkIHBzZXVkb0lkKQotewotICAg
IC8vIElmIHRoaXMgaXMgYW4gYW5vbnltb3VzIHdyYXBwZXIsIHRoZW4gdGhlIHBhcmVudCBhcHBs
aWVzIGl0cyBvd24gcHNldWRvLWVsZW1lbnQgc3R5bGUgdG8gaXQuCi0gICAgaWYgKHBhcmVudCgp
ICYmIHBhcmVudCgpLT5jcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpKQotICAgICAgICByZXR1cm47
Ci0gICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KHRoaXMsIHBzZXVkb0lk
KTsKLX0KLQogUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjb250aW51YXRpb25CZWZvcmUoUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAoYmVmb3JlQ2hpbGQgJiYgYmVmb3Jl
Q2hpbGQtPnBhcmVudCgpID09IHRoaXMpCkBAIC02MDIsMTMgKzU4OCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OnNwbGl0QmxvY2tzKFJlbmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0
b0Jsb2NrLAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyID0gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChwYXJlbnQoKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGN1cnJDaGlsZCA9
IHRoaXM7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyQ2hpbGROZXh0U2libGluZyA9IGN1cnJDaGls
ZC0+bmV4dFNpYmxpbmcoKTsKLSAgICBib29sIGRvY3VtZW50VXNlc0JlZm9yZUFmdGVyUnVsZXMg
PSBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJSdWxl
cygpOwogCi0gICAgLy8gTm90ZTogfHRoaXN8IGNhbiBiZSBkZXN0cm95ZWQgaW5zaWRlIHRoaXMg
bG9vcCBpZiBpdCBpcyBhbiBlbXB0eSBhbm9ueW1vdXMKLSAgICAvLyBibG9jayBhbmQgd2UgdHJ5
IHRvIGNhbGwgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50IGluc2lkZSB3aGljaCByZW1vdmVzIHRo
ZQotICAgIC8vIGdlbmVyYXRlZCBjb250ZW50IGFuZCBhZGRpdGlvbmFsbHkgY2xlYW5zIHVwIHx0
aGlzfCBlbXB0eSBhbm9ueW1vdXMgYmxvY2suCi0gICAgLy8gU2VlIFJlbmRlckJsb2NrOjpyZW1v
dmVDaGlsZCgpLiBETyBOT1QgcmVmZXJlbmNlIGFueSBsb2NhbCB2YXJpYWJsZXMgdG8gfHRoaXN8
Ci0gICAgLy8gYWZ0ZXIgdGhpcyBwb2ludC4KICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IGZy
b21CbG9jaykgewogICAgICAgICBBU1NFUlQoY3Vyci0+aXNSZW5kZXJCbG9jaygpKTsKICAgICAg
ICAgCkBAIC02MzEsMTYgKzYxMSw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNwbGl0QmxvY2tzKFJl
bmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAogICAgICAgICAgICAg
Y2xvbmVCbG9jay0+c2V0Q29udGludWF0aW9uKG9sZENvbnQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gU29tZW9uZSBtYXkgaGF2ZSBpbmRpcmVjdGx5IGNhdXNlZCBhIDxxPiB0byBzcGxpdC4g
IFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgOmFmdGVyIGNvbnRlbnQKLSAgICAgICAgLy8gaGFzIHRv
IG1vdmUgaW50byB0aGUgaW5saW5lIGNvbnRpbnVhdGlvbi4gIENhbGwgdXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBpbmxpbmUncyA6YWZ0ZXIKLSAgICAgICAgLy8g
Y29udGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAgICAgICAgYm9vbCBpc0xhc3RDaGls
ZCA9IChjdXJyQ2hpbGROZXh0U2libGluZyA9PSBibG9ja0N1cnItPmxhc3RDaGlsZCgpKTsKLSAg
ICAgICAgaWYgKGRvY3VtZW50VXNlc0JlZm9yZUFmdGVyUnVsZXMpCi0gICAgICAgICAgICBibG9j
a0N1cnItPmNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChibG9ja0N1cnIsIEFG
VEVSKTsKLSAgICAgICAgaWYgKGlzTGFzdENoaWxkICYmIGN1cnJDaGlsZE5leHRTaWJsaW5nICE9
IGJsb2NrQ3Vyci0+bGFzdENoaWxkKCkpCi0gICAgICAgICAgICBjdXJyQ2hpbGROZXh0U2libGlu
ZyA9IDA7IC8vIFdlIGRlc3Ryb3llZCB0aGUgbGFzdCBjaGlsZCwgc28gbm93IHdlIG5lZWQgdG8g
dXBkYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1
ZSBvZiBjdXJyQ2hpbGROZXh0U2libGluZy4KLQogICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byB0
YWtlIGFsbCBvZiB0aGUgY2hpbGRyZW4gc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgY2hpbGQKICAg
ICAgICAgLy8gKmFmdGVyKiBjdXJyQ2hpbGQgYW5kIGFwcGVuZCB0aGVtIGFsbCB0byB0aGUgY2xv
bmUuCiAgICAgICAgIGJsb2NrQ3Vyci0+bW92ZUNoaWxkcmVuVG8oY2xvbmVCbG9jaywgY3VyckNo
aWxkTmV4dFNpYmxpbmcsIDAsIHRydWUpOwpAQCAtODczLDIzICs4NDMsNiBAQCB2b2lkIFJlbmRl
ckJsb2NrOjphZGRDaGlsZElnbm9yaW5nQW5vbnltb3VzQ29sdW1uQmxvY2tzKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsCiAgICAgICAgICAgICBpZiAoIWlzQW5vbnltb3VzQmxvY2soKSkKICAgICAg
ICAgICAgICAgICBzZXRDb250aW51YXRpb24obmV3Qm94KTsKIAotICAgICAgICAgICAgLy8gU29t
ZW9uZSBtYXkgaGF2ZSBwdXQgYSA8cD4gaW5zaWRlIGEgPHE+LCBjYXVzaW5nIGEgc3BsaXQuICBX
aGVuIHRoaXMgaGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgICAgICAvLyBoYXMg
dG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29udGludWF0aW9uLiAgQ2FsbCB1cGRhdGVCZWZvcmVB
ZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQgb3VyIDphZnRlcgotICAgICAgICAgICAgLy8gY29u
dGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAgICAgICAgICAgIGJvb2wgaXNGaXJzdENo
aWxkID0gKGJlZm9yZUNoaWxkID09IGZpcnN0Q2hpbGQoKSk7Ci0gICAgICAgICAgICBib29sIGlz
TGFzdENoaWxkID0gKGJlZm9yZUNoaWxkID09IGxhc3RDaGlsZCgpKTsKLSAgICAgICAgICAgIGlm
IChkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJSdWxl
cygpKQotICAgICAgICAgICAgICAgIGNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVu
dCh0aGlzLCBBRlRFUik7Ci0gICAgICAgICAgICBpZiAoaXNMYXN0Q2hpbGQgJiYgYmVmb3JlQ2hp
bGQgIT0gbGFzdENoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBkZXN0cm95ZWQgdGhl
IGxhc3QgY2hpbGQsIHNvIG5vdyB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgaW5zZXJ0aW9uCi0gICAg
ICAgICAgICAgICAgLy8gcG9pbnQgdG8gYmUgMC4gSXQncyBqdXN0IGEgc3RyYWlnaHQgYXBwZW5k
IG5vdy4KLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IDA7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGlzRmlyc3RDaGlsZCAmJiBiZWZvcmVDaGlsZCAhPSBmaXJzdENoaWxkKCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBJZiBiZWZvcmVDaGlsZCB3YXMgdGhlIGxhc3QgYW5vbnltb3VzIGJs
b2NrIHRoYXQgY29sbGFwc2VkLAotICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byB1
cGRhdGUgaXRzIHZhbHVlLgotICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gZmlyc3RDaGls
ZCgpOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBzcGxpdEZsb3coYmVmb3JlQ2hpbGQs
IG5ld0JveCwgbmV3Q2hpbGQsIG9sZENvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTE4NzcsMTYgKzE4MzAsNiBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
UmVuZGVyQmxvY2s6OmNyZWF0ZVJlcGxhY2VtZW50UnVuSW4oUmVuZGVyQm94TW9kZWxPYmplY3Qq
CiB7CiAgICAgQVNTRVJUKHJ1bkluLT5pc1J1bkluKCkpOwogCi0gICAgLy8gRmlyc3Qgd2UgZGVz
dHJveSBhbnkgOmJlZm9yZS86YWZ0ZXIgY29udGVudC4gSXQgd2lsbCBiZSByZWdlbmVyYXRlZCBi
eSB0aGUgbmV3IHJ1bi1pbi4KLSAgICAvLyBFeGNlcHRpb24gaXMgaWYgdGhlIHJ1bi1pbiBpdHNl
bGYgaXMgZ2VuZXJhdGVkLgotICAgIGlmIChydW5Jbi0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0g
QkVGT1JFICYmIHJ1bkluLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSBBRlRFUikgewotICAgICAg
ICBSZW5kZXJPYmplY3QqIGdlbmVyYXRlZENvbnRlbnQ7Ci0gICAgICAgIGlmIChydW5Jbi0+Z2V0
Q2FjaGVkUHNldWRvU3R5bGUoQkVGT1JFKSAmJiAoZ2VuZXJhdGVkQ29udGVudCA9IHJ1bkluLT5i
ZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIoKSkpCi0gICAgICAgICAgICBnZW5lcmF0ZWRDb250
ZW50LT5kZXN0cm95KCk7Ci0gICAgICAgIGlmIChydW5Jbi0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUo
QUZURVIpICYmIChnZW5lcmF0ZWRDb250ZW50ID0gcnVuSW4tPmFmdGVyUHNldWRvRWxlbWVudFJl
bmRlcmVyKCkpKQotICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudC0+ZGVzdHJveSgpOwotICAg
IH0KLQogICAgIGJvb2wgbmV3UnVuSW5TaG91bGRCZUJsb2NrID0gIXJ1bkluLT5pc1JlbmRlckJs
b2NrKCk7CiAgICAgTm9kZSogcnVuSW5Ob2RlID0gcnVuSW4tPm5vZGUoKTsKICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogbmV3UnVuSW4gPSAwOwpAQCAtMzIzNSw3ICszMTc4LDcgQEAgYm9vbCBS
ZW5kZXJCbG9jazo6c2hvdWxkUGFpbnRTZWxlY3Rpb25HYXBzKCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKIHsKLSAgICBpZiAoIW5vZGUoKSB8fCBp
c1BzZXVkb0VsZW1lbnQoKSkKKyAgICBpZiAoIW5vblBzZXVkb05vZGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB0YWJsZXMgc2hv
dWxkIGhhdmUgdG8gbGVhcm4gaG93IHRvIGZpbGwgZ2FwcyBiZXR3ZWVuIGNlbGxzLCBhdCBsZWFz
dCBpbiBzaW1wbGUgbm9uLXNwYW5uaW5nIGNhc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAppbmRleCAzNDRkMWRiOWYxZDRmMTBiYzBiZTlhMGRmNjJlZjk5M2VjYmE4MmEz
Li5hNDE2NGRiNzA0ZmZmOWE1YzRlNTUxOWI0NjhhYjIxZGQ0ZjRjMWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNTY1LDggKzU2NSw2IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYm9yZGVyRml0QWRqdXN0KExheW91dFJlY3QmKSBjb25zdDsgLy8g
U2hyaW5rIHRoZSBib3ggaW4gd2hpY2ggdGhlIGJvcmRlciBwYWludHMgaWYgYm9yZGVyLWZpdCBp
cyBzZXQuCiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFBzZXVk
b0lkKTsKLSAgICAKICAgICB2aXJ0dWFsIFJvb3RJbmxpbmVCb3gqIGNyZWF0ZVJvb3RJbmxpbmVC
b3goKTsgLy8gU3ViY2xhc3NlZCBieSBTVkcgYW5kIFJ1YnkuCiAKICAgICAvLyBDYWxsZWQgdG8g
bGF5IG91dCB0aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2YgYSBy
dWJ5IHJ1bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKaW5kZXgg
NjljZWYyOTIyYWM3MzVmMDQyZDdiMzlmZTNhNjJlZWFiNzE1OTQzOS4uMjU3ZmUxZmEwMWZiM2E2
OWJiODYyODNmMjU3YjBmNDVjZWE1ZmFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5jcHAKQEAgLTE1MywxNCArMTUzLDYgQEAgYm9vbCBSZW5kZXJCdXR0b246OmNh
bkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0dXJuICFub2RlKCktPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpOwogfQogCi12b2lkIFJlbmRlckJ1dHRvbjo6dXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50KFBzZXVkb0lkIHR5cGUpCi17Ci0gICAgaWYgKG1faW5uZXIpCi0gICAgICAgIG1f
aW5uZXItPmNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChtX2lubmVyLCB0eXBl
LCB0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIGNoaWxkcmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVy
Q29udGVudCh0aGlzLCB0eXBlKTsKLX0KLQogTGF5b3V0UmVjdCBSZW5kZXJCdXR0b246OmNvbnRy
b2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkgY29uc3QKIHsK
ICAgICAvLyBDbGlwIHRvIHRoZSBwYWRkaW5nIGJveCB0byBhdCBsZWFzdCBnaXZlIGNvbnRlbnQg
dGhlIGV4dHJhIHBhZGRpbmcgc3BhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmgKaW5kZXggNWJlNjJiMDEyNjYwZjgwZmY5N2RlM2Q2OTE0M2VmMWJhMjVmNWMyYy4uYTdh
ZmI1ZGNmZGUyZTNjZTczYjQ3YzJhZWE1NjQxZDlkNDc2MTkwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uaApAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXR1cElubmVyU3R5bGUoUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
RnJvbUVsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVBZnRlckNvbnRl
bnQoUHNldWRvSWQpOwotCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJl
bigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgY29udHJvbENsaXBS
ZWN0KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCmluZGV4IDBlMWNkYTMxNmFmOTRhZDRiNjZlZmVjOWY3N2ZlZWVhMTkx
YTIyMGYuLjE2ZTcxZTFkNmVlY2IyOGZjNmRjNmY3MzgwMTRlZDUzZjQ2NzU1YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAj
aW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIK
IAotI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KLQogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNlbmRpZgpAQCAtMTY5LDE4ICsxNjcsMTEgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QK
ICAgICAvLyBuZWVkIHRvIHBhc3MgaXRzIHN0eWxlIG9uIHRvIGFueW9uZSBlbHNlLgogICAgIFJl
bmRlclN0eWxlKiBuZXdTdHlsZSA9IHN0eWxlKCk7CiAgICAgUmVuZGVySW5saW5lKiBjb250aW51
YXRpb24gPSBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7Ci0gICAgewotICAgICAgICBUZW1w
b3JhcnlDaGFuZ2U8Ym9vbD4gZW5hYmxlQWZ0ZXIoUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpzX2Vu
YWJsZVVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCwgZmFsc2UpOwotICAgICAgICBSZW5kZXJJbmxp
bmUqIG5leHRJbmxpbmVFbGVtZW50Q29udCA9IDA7Ci0gICAgICAgIGZvciAoUmVuZGVySW5saW5l
KiBjdXJyQ29udCA9IGNvbnRpbnVhdGlvbjsgY3VyckNvbnQ7IGN1cnJDb250ID0gbmV4dElubGlu
ZUVsZW1lbnRDb250KSB7Ci0gICAgICAgICAgICBuZXh0SW5saW5lRWxlbWVudENvbnQgPSBjdXJy
Q29udC0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwotICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byB1cGRhdGUgOmFmdGVyIGNvbnRlbnQgZm9yIHRoZSBsYXN0IGNvbnRpbnVhdGlvbiBpbiB0
aGUgY2hhaW4uCi0gICAgICAgICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxlVXBk
YXRlQmVmb3JlQWZ0ZXJDb250ZW50ID0gIW5leHRJbmxpbmVFbGVtZW50Q29udDsKLSAgICAgICAg
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51YXRp
b24oKTsKLSAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24oMCk7Ci0gICAgICAg
ICAgICBjdXJyQ29udC0+c2V0U3R5bGUobmV3U3R5bGUpOwotICAgICAgICAgICAgY3VyckNvbnQt
PnNldENvbnRpbnVhdGlvbihuZXh0Q29udCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlbmRlcklu
bGluZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJyQ29udCA9IGN1cnJD
b250LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKKyAgICAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIG5leHRDb250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOworICAgICAgICBj
dXJyQ29udC0+c2V0Q29udGludWF0aW9uKDApOworICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUo
bmV3U3R5bGUpOworICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG5leHRDb250KTsK
ICAgICB9CiAKICAgICAvLyBJZiBhbiBpbmxpbmUncyBpbi1mbG93IHBvc2l0aW9uaW5nIGhhcyBj
aGFuZ2VkIHRoZW4gYW55IGRlc2NlbmRhbnQgYmxvY2tzIHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhl
aXIgaW4tZmxvdyBwb3NpdGlvbmluZyBhY2NvcmRpbmdseS4KQEAgLTIwMSwxMiArMTkyLDYgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAgICAgICAgfQogICAgICAgICBtX2Fsd2F5c0NyZWF0
ZUxpbmVCb3hlcyA9IGFsd2F5c0NyZWF0ZUxpbmVCb3hlczsKICAgICB9Ci0KLSAgICAvLyBVcGRh
dGUgcHNldWRvcyBmb3IgOmJlZm9yZSBhbmQgOmFmdGVyIG5vdy4KLSAgICBpZiAoIWlzQW5vbnlt
b3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFm
dGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRl
bnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0ZXJD
b250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVySW5saW5lOjp1cGRh
dGVBbHdheXNDcmVhdGVMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpAQCAtMzI5LDE2ICszMTQs
NiBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5k
ZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2xkQ29udGludWF0aW9uID0gY29udGludWF0aW9uKCk7CiAgICAgICAgIHNldENvbnRpbnVh
dGlvbihuZXdCb3gpOwogCi0gICAgICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgcHV0IGEgPHA+IGlu
c2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAgV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSA6YWZ0
ZXIgY29udGVudAotICAgICAgICAvLyBoYXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29udGlu
dWF0aW9uLiAgQ2FsbCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQgb3Vy
IDphZnRlcgotICAgICAgICAvLyBjb250ZW50IGdldHMgcHJvcGVybHkgZGVzdHJveWVkLgotICAg
ICAgICBib29sIGlzTGFzdENoaWxkID0gKGJlZm9yZUNoaWxkID09IGxhc3RDaGlsZCgpKTsKLSAg
ICAgICAgaWYgKGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNCZWZvcmVB
ZnRlclJ1bGVzKCkpCi0gICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNv
bnRlbnQodGhpcywgQUZURVIpOwotICAgICAgICBpZiAoaXNMYXN0Q2hpbGQgJiYgYmVmb3JlQ2hp
bGQgIT0gbGFzdENoaWxkKCkpCi0gICAgICAgICAgICBiZWZvcmVDaGlsZCA9IDA7IC8vIFdlIGRl
c3Ryb3llZCB0aGUgbGFzdCBjaGlsZCwgc28gbm93IHdlIG5lZWQgdG8gdXBkYXRlIG91ciBpbnNl
cnRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgdG8gYmUgMC4gIEl0
J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVuZCBub3cuCi0KICAgICAgICAgc3BsaXRGbG93KGJlZm9y
ZUNoaWxkLCBuZXdCb3gsIG5ld0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNDA1LDEyICszODAsNiBAQCB2b2lkIFJlbmRlcklubGluZTo6c3BsaXRJ
bmxpbmVzKFJlbmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAogICAg
ICAgICAgICAgaW5saW5lQ3Vyci0+c2V0Q29udGludWF0aW9uKGNsb25lSW5saW5lKTsKICAgICAg
ICAgICAgIGNsb25lSW5saW5lLT5zZXRDb250aW51YXRpb24ob2xkQ29udCk7CiAKLSAgICAgICAg
ICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3BsaXQu
ICBXaGVuIHRoaXMgaGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgICAgICAvLyBo
YXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29udGludWF0aW9uLiAgQ2FsbCB1cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQgdGhlIGlubGluZSdzIDphZnRlcgotICAgICAg
ICAgICAgLy8gY29udGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAgICAgICAgICAgIGlm
IChkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJSdWxl
cygpKQotICAgICAgICAgICAgICAgIGlubGluZUN1cnItPmNoaWxkcmVuKCktPnVwZGF0ZUJlZm9y
ZUFmdGVyQ29udGVudChpbmxpbmVDdXJyLCBBRlRFUik7Ci0KICAgICAgICAgICAgIC8vIE5vdyB3
ZSBuZWVkIHRvIHRha2UgYWxsIG9mIHRoZSBjaGlsZHJlbiBzdGFydGluZyBmcm9tIHRoZSBmaXJz
dCBjaGlsZAogICAgICAgICAgICAgLy8gKmFmdGVyKiBjdXJyQ2hpbGQgYW5kIGFwcGVuZCB0aGVt
IGFsbCB0byB0aGUgY2xvbmUuCiAgICAgICAgICAgICBvID0gY3VyckNoaWxkLT5uZXh0U2libGlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5kZXgg
ODRhNTc5NDYwOTBiNmJiMzYyNjc0ZTIwZGQ3M2VlMWRmMWU5YTU0Mi4uZDBiM2I5NTE3NGM3MzZj
NzAwNzAzOTg2NjEzMzliOGJmN2U4Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0yNjgsNyArMjY4LDYgQEAgdm9pZCBSZW5kZXJMaXN0SXRl
bTo6dXBkYXRlTWFya2VyTG9jYXRpb24oKQogICAgICAgICAgICAgaWYgKG1fbWFya2VyLT5wcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKICAgICAgICAgICAgICAgICBtX21hcmtlci0+Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICAgICAgICAgIC8vIElmIG1hcmtlclBh
ciBpcyBhbiBhbm9ueW1vdXMgYmxvY2sgdGhhdCBoYXMgbG9zdCBhbGwgaXRzIGNoaWxkcmVuLCBk
ZXN0cm95IGl0LgotICAgICAgICAgICAgLy8gRXh0cmFuZW91cyBhbm9ueW1vdXMgYmxvY2tzIGNh
biBjYXVzZSBwcm9ibGVtcyBmb3IgUmVuZGVyQmxvY2s6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVu
dC4KICAgICAgICAgICAgIGlmIChtYXJrZXJQYXIgJiYgbWFya2VyUGFyLT5pc0Fub255bW91c0Js
b2NrKCkgJiYgIW1hcmtlclBhci0+Zmlyc3RDaGlsZCgpICYmICF0b1JlbmRlckJsb2NrKG1hcmtl
clBhciktPmNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgICAgIG1hcmtlclBhci0+ZGVzdHJv
eSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IGE0MWY5OTA3NmVhODYyMmQzYTE0YTRjY2QxZTJjMmVkNmFkOTdmZjIuLmNhMDJlMzI0
ZGEwNTRmMTYyOWNhMGVkMmM4YmFmY2NmMGI0MTcxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yOTk0LDggKzI5OTQsNyBAQCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzZXRQYXJlbnQoKSBjb25zdAogVmlzaWJsZVBvc2l0
aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZp
bml0eSBhZmZpbml0eSkKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgbm9uLWFub255bW91cyByZW5k
ZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0J3Mgc2ltcGxlLgotICAgIGlmIChub2Rl
KCkgJiYgIWlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5u
b2RlKCk7CisgICAgaWYgKE5vZGUqIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAg
aWYgKCFub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkgewogICAgICAgICAgICAgLy8gSWYgaXQg
Y2FuIGJlIGZvdW5kLCB3ZSBwcmVmZXIgYSB2aXN1YWxseSBlcXVpdmFsZW50IHBvc2l0aW9uIHRo
YXQgaXMgZWRpdGFibGUuIAogICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KTsKQEAgLTMwMjEsOCArMzAyMCw4IEBA
IFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQg
b2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91cyBj
b250ZW50IGFmdGVyLgogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQ7CiAg
ICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXIocGFyZW50
KSkpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICYmICFyZW5kZXJlci0+aXNQ
c2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihm
aXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocmVuZGVyZXItPm5vZGUoKSksIERPV05TVFJFQU0p
OworICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9kZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJlZm9yZS4KQEAgLTMwMzAsMTMgKzMwMjksMTMg
QEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGlu
dCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgd2hpbGUgKChyZW5kZXJlciA9IHJl
bmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJl
ciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAocmVu
ZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShy
ZW5kZXJlci0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBpZiAoTm9kZSogbm9k
ZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RSRUFN
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVzZSB0aGUgcGFyZW50IGl0c2VsZiB1bmxlc3Mg
aXQgdG9vIGlzIGFub255bW91cy4KLSAgICAgICAgaWYgKHBhcmVudC0+bm9kZSgpICYmICFpc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudC0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7CisgICAg
ICAgIGlmIChOb2RlKiBub2RlID0gcGFyZW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2Rl
KSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0IGxldmVsIHVw
LgogICAgICAgICBjaGlsZCA9IHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCBiMDEwMzM3ODAxOTY2M2MzODNlM2MwN2U5M2Y5MDIwYjkzYzMyNWUwLi5i
MDNkMDlmZjg3OWY5MjE5Yzg3ZTkzOGFjM2NiZjlmMGI3YmI2ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MjEsMTcgKzYyMSwxNSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAwKSBjb25zdDsKIAogICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gMCA6IG1fbm9kZTsgfQorICAgIE5v
ZGUqIG5vblBzZXVkb05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IDAg
OiBub2RlKCk7IH0KKworICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBSZW5kZXJXaWRnZXQgbmVlZCB0
aGlzPworICAgIHZvaWQgY2xlYXJOb2RlKCkgeyBtX25vZGUgPSAwOyB9CiAKICAgICAvLyBSZXR1
cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJl
bmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVu
ZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Ig
d2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGlu
Z05vZGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5vZGUoKS0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgICAgICByZXR1
cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOwotICAgIH0KLSAgICB2b2lkIHNl
dE5vZGUoTm9kZSogbm9kZSkgeyBtX25vZGUgPSBub2RlOyB9CisgICAgTm9kZSogZ2VuZXJhdGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFyZW50
T3JIb3N0Tm9kZSgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX25vZGUtPmRvY3VtZW50KCk7IH0KICAgICBGcmFtZSogZnJhbWUoKSBjb25z
dCB7IHJldHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDIwMmNjMzZiMzE1NDU0
ZjVhMmZlMDA0ZGYwNGMwMmRmYjdlYTkyZjUuLmUyNzI0YmY2ZjU2Mzk2ODIyOTFmZTY5M2YxNTAw
MWU1NDNlZTAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3RDaGlsZExpc3QuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotYm9vbCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxlVXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50ID0gdHJ1ZTsKLQogdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmRlc3Ryb3lM
ZWZ0b3ZlckNoaWxkcmVuKCkKIHsKICAgICB3aGlsZSAoZmlyc3RDaGlsZCgpKSB7CkBAIC0xODcs
MjMgKzE4NSw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNlcnRDaGlsZE5vZGUo
UmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjCiAgICAgICAgIG93bmVyLT5kb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChvd25lcik7CiB9CiAKLXN0
YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRCZWZvcmVBZnRlclBhcmVudChSZW5kZXJPYmplY3QqIG9i
amVjdCkKLXsKLSAgICAvLyBPbmx5IHRhYmxlIHBhcnRzIGFuZCBmbGV4LWJveGVzIG5lZWQgdG8g
c2VhcmNoIGZvciB0aGUgOmJlZm9yZSBvciA6YWZ0ZXIgcGFyZW50Ci0gICAgLy8gRklYTUU6IFdl
IGNvdWxkIGxpa2VseSBnZXQgYXdheSB3aXRob3V0IHRoaXMgY2hlY2sgYW5kIGFsd2F5cyBsb29r
IGZvciB0aGUgcmlnaHQgcGFyZW50LgotICAgIGlmICghKG9iamVjdC0+aXNUYWJsZSgpIHx8IG9i
amVjdC0+aXNUYWJsZVNlY3Rpb24oKSB8fCBvYmplY3QtPmlzVGFibGVSb3coKSB8fCBvYmplY3Qt
PmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkpKQotICAgICAgICByZXR1cm4gb2Jq
ZWN0OwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSA6Zmlyc3QtbGV0dGVyIHN0eWxlIGFwcGxpZWQg
b24gdGhlIDpiZWZvcmUgb3IgOmFmdGVyIGNvbnRlbnQsCi0gICAgLy8gdGhlbiB3ZSB3YW50IHRo
ZSBwYXJlbnQgb2YgdGhlIGZpcnN0LWxldHRlciBibG9jawotICAgIFJlbmRlck9iamVjdCogYmVm
b3JlQWZ0ZXJQYXJlbnQgPSBvYmplY3Q7Ci0gICAgd2hpbGUgKGJlZm9yZUFmdGVyUGFyZW50ICYm
ICEoYmVmb3JlQWZ0ZXJQYXJlbnQtPmlzVGV4dCgpIHx8IGJlZm9yZUFmdGVyUGFyZW50LT5pc0lt
YWdlKCkpCi0gICAgICAgICYmIChiZWZvcmVBZnRlclBhcmVudC0+c3R5bGUoKS0+c3R5bGVUeXBl
KCkgIT0gRklSU1RfTEVUVEVSKSkKLSAgICAgICAgYmVmb3JlQWZ0ZXJQYXJlbnQgPSBiZWZvcmVB
ZnRlclBhcmVudC0+Zmlyc3RDaGlsZCgpOwotCi0gICAgcmV0dXJuIGJlZm9yZUFmdGVyUGFyZW50
ID8gYmVmb3JlQWZ0ZXJQYXJlbnQtPnBhcmVudCgpIDogMDsKLX0KLQogUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3RDaGlsZExpc3Q6OmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdAogewogICAgIC8vIEFuIGFub255bW91cyAoZ2VuZXJh
dGVkKSBpbmxpbmUgcnVuLWluIHRoYXQgaGFzIFBzZXVkb0lkIEJFRk9SRSBtdXN0IGNvbWUgZnJv
bSBhIGdyYW5kcGFyZW50LgpAQCAtMjUwLDIwMyArMjMxLDQgQEAgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamUKICAgICByZXR1cm4gbGFzdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OnVwZGF0ZUJlZm9yZUFmdGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUHNldWRvSWQgdHlw
ZSwgUmVuZGVyU3R5bGUqIHBzZXVkb0VsZW1lbnRTdHlsZSkKLXsKLSAgICBpZiAoIWNoaWxkIHx8
IGNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSB0eXBlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBXZSBoYXZlIGdlbmVyYXRlZCBjb250ZW50IHByZXNlbnQgc3RpbGwuIFdlIHdhbnQg
dG8gd2FsayB0aGlzIGNvbnRlbnQgYW5kIHVwZGF0ZSBvdXIKLSAgICAvLyBzdHlsZSBpbmZvcm1h
dGlvbiB3aXRoIHRoZSBuZXcgcHNldWRvLWVsZW1lbnQgc3R5bGUuCi0gICAgY2hpbGQtPnNldFN0
eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVy
UGFyZW50ID0gZmluZEJlZm9yZUFmdGVyUGFyZW50KGNoaWxkKTsKLSAgICBpZiAoIWJlZm9yZUFm
dGVyUGFyZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXaGVuIGJlZm9yZUFmdGVyUGFy
ZW50IGlzIG5vdCBlcXVhbCB0byBjaGlsZCAoZS5nLiBpbiB0YWJsZXMpLAotICAgIC8vIHdlIG5l
ZWQgdG8gY3JlYXRlIG5ldyBzdHlsZXMgaW5oZXJpdGluZyBmcm9tIHBzZXVkb0VsZW1lbnRTdHls
ZQotICAgIC8vIG9uIGFsbCB0aGUgaW50ZXJtZWRpYXRlIHBhcmVudHMgKGxlYXZpbmcgdGhlaXIg
ZGlzcGxheSBzYW1lKS4KLSAgICBpZiAoYmVmb3JlQWZ0ZXJQYXJlbnQgIT0gY2hpbGQpIHsKLSAg
ICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gYmVmb3JlQWZ0ZXJQYXJlbnQ7Ci0gICAgICAgIHdo
aWxlIChjdXJyICYmIGN1cnIgIT0gY2hpbGQpIHsKLSAgICAgICAgICAgIEFTU0VSVChjdXJyLT5p
c0Fub255bW91cygpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZy
b20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5
KGN1cnItPnN0eWxlKCktPmRpc3BsYXkoKSk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0U3R5
bGVUeXBlKGN1cnItPnN0eWxlKCktPnN0eWxlVHlwZSgpKTsKLSAgICAgICAgICAgIGN1cnItPnNl
dFN0eWxlKG5ld1N0eWxlKTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSBldmVyIHN1cHBvcnQgYWRk
aXRpb25hbCB0eXBlcyBvZiBnZW5lcmF0ZWQgY29udGVudCAod2hpY2ggc2hvdWxkIGJlIHdheSBv
ZmYKLSAgICAvLyBpbiB0aGUgZnV0dXJlKSwgdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBiZSBwYXRj
aGVkLgotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGJlZm9yZUFmdGVyUGFyZW50
LT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICAvLyBH
ZW5lcmF0ZWQgdGV4dCBjb250ZW50IGlzIGEgY2hpbGQgd2hvc2Ugc3R5bGUgYWxzbyBuZWVkcyB0
byBiZSBzZXQgdG8gdGhlIHBzZXVkby1lbGVtZW50IHN0eWxlLgotICAgICAgICAgICAgZ2VuQ2hp
bGQtPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgIGVsc2UgaWYgKGdlbkNo
aWxkLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIEltYWdlcyBnZXQgYW4gZW1wdHkgc3R5
bGUgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBwc2V1ZG8uCi0gICAgICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAgc3R5
bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBnZW5DaGls
ZC0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIFJlbmRlckxpc3RJdGVtIG1heSBpbnNlcnQgYSBsaXN0IG1hcmtlciBoZXJlLiBXZSBk
byBub3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMgY2FzZS4KLSAgICAgICAgICAgIC8vIE90aGVy
d2lzZSwgZ2VuQ2hpbGQgbXVzdCBiZSBhIGZpcnN0LWxldHRlciBjb250YWluZXIuIHVwZGF0ZUZp
cnN0TGV0dGVyKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCi0gICAgICAgICAgICBBU1NFUlQoZ2Vu
Q2hpbGQtPmlzTGlzdE1hcmtlcigpIHx8IGdlbkNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9
PSBGSVJTVF9MRVRURVIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgUmVuZGVyT2Jq
ZWN0KiBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1
ZG9JZCB0eXBlLCBSZW5kZXJTdHlsZSogcHNldWRvRWxlbWVudFN0eWxlLCBOb2RlKiBnZW5lcmF0
aW5nTm9kZSwgUmVuZGVyT2JqZWN0KiBpbnNlcnRCZWZvcmUpCi17Ci0gICAgLy8gTWFrZSBhIGdl
bmVyYXRlZCBib3ggdGhhdCBtaWdodCBiZSBhbnkgZGlzcGxheSB0eXBlIG5vdyB0aGF0IHdlIGFy
ZSBhYmxlIHRvIGRyaWxsIGRvd24gaW50byBjaGlsZHJlbgotICAgIC8vIHRvIGZpbmQgdGhlIG9y
aWdpbmFsIGNvbnRlbnQgcHJvcGVybHkuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250
ZW50Q29udGFpbmVyID0gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qob3duZXItPmRvY3VtZW50
KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgQVNTRVJUKGdlbmVyYXRpbmdOb2RlKTsgLy8g
VGhlIHN0eWxlZCBvYmplY3QgY2Fubm90IGJlIGFub255bW91cyBvciBlbHNlIGl0IGNvdWxkIG5v
dCBoYXZlICc6YmVmb3JlJyBvciAnOmFmdGVyJyBwc2V1ZG8gZWxlbWVudHMuCi0gICAgZ2VuZXJh
dGVkQ29udGVudENvbnRhaW5lci0+c2V0Tm9kZShnZW5lcmF0aW5nTm9kZSk7IC8vIFRoaXMgYWxs
b3dzIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGluZ05vZGUuCi0gICAgZ2VuZXJhdGVkQ29udGVudENv
bnRhaW5lci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICBpZiAoIW93bmVyLT5p
c0NoaWxkQWxsb3dlZChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLCBwc2V1ZG9FbGVtZW50U3R5
bGUpKSB7Ci0gICAgICAgIC8vIFRoZSBnZW5lcmF0ZWQgY29udGVudCBjb250YWluZXIgaXMgbm90
IGFsbG93ZWQgaGVyZSAtPiBhYm9ydC4KLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRhaW5l
ci0+ZGVzdHJveSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBXaGVuIHdl
IGRvbid0IGhhdmUgYSBmaXJzdCBjaGlsZCBhbmQgYXJlIHBhcnQgb2YgYSBjb250aW51YXRpb24g
Y2hhaW4sCi0gICAgLy8gaW5zZXJ0QmVmb3JlIGlzIGluY29ycmVjdGx5IHNldCB0byB6ZXJvIGFi
b3ZlLCB3aGljaCBjYXVzZXMgdGhlIDpiZWZvcmUKLSAgICAvLyBjaGlsZCB0byBlbmQgdXAgYXQg
dGhlIGVuZCBvZiBjb250aW51YXRpb24gY2hhaW4uCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4MC4KLSAgICBpZiAoIWluc2VydEJlZm9yZSAm
JiB0eXBlID09IEJFRk9SRSAmJiBvd25lci0+dmlydHVhbENvbnRpbnVhdGlvbigpKQotICAgICAg
ICBvd25lci0+YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihnZW5lcmF0ZWRDb250ZW50Q29u
dGFpbmVyLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIG93bmVyLT5hZGRDaGlsZChnZW5lcmF0ZWRD
b250ZW50Q29udGFpbmVyLCBpbnNlcnRCZWZvcmUpOwotCi0gICAgcmV0dXJuIGdlbmVyYXRlZENv
bnRlbnRDb250YWluZXI7Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVC
ZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwgY29u
c3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QpCi17Ci0gICAgLy8gRG91YmxlIGNoZWNrIHRo
YXQgdGhlIGRvY3VtZW50IGRpZCBpbiBmYWN0IHVzZSBnZW5lcmF0ZWQgY29udGVudCBydWxlcy4g
IE90aGVyd2lzZSB3ZSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCi0gICAgQVNTRVJUKG93
bmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJS
dWxlcygpKTsKLQotICAgIC8vIEluIENTUzIsIGJlZm9yZS9hZnRlciBwc2V1ZG8tY29udGVudCBj
YW5ub3QgbmVzdC4gIENoZWNrIHRoaXMgZmlyc3QuCi0gICAgaWYgKG93bmVyLT5zdHlsZSgpLT5z
dHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgb3duZXItPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEFG
VEVSKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFzX2VuYWJsZVVwZGF0ZUJlZm9yZUFmdGVy
Q29udGVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghc3R5bGVkT2JqZWN0KQot
ICAgICAgICBzdHlsZWRPYmplY3QgPSBvd25lcjsKLQotICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9F
bGVtZW50U3R5bGUgPSBzdHlsZWRPYmplY3QtPmdldENhY2hlZFBzZXVkb1N0eWxlKHR5cGUpOwot
ICAgIFJlbmRlck9iamVjdCogY2hpbGQ7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBC
RUZPUkU6Ci0gICAgICAgIGNoaWxkID0gYmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKG93bmVy
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBRlRFUjoKLSAgICAgICAgY2hpbGQgPSBhZnRl
clBzZXVkb0VsZW1lbnRSZW5kZXJlcihvd25lcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gV2hldGhlciBvciBub3Qgd2UgY3VycmVudGx5IGhhdmUgZ2VuZXJhdGVkIGNv
bnRlbnQgYXR0YWNoZWQuCi0gICAgYm9vbCBvbGRDb250ZW50UHJlc2VudCA9IGNoaWxkOwotCi0g
ICAgLy8gV2hldGhlciBvciBub3Qgd2Ugbm93IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQuCi0gICAg
Ym9vbCBuZXdDb250ZW50V2FudGVkID0gcHNldWRvRWxlbWVudFN0eWxlICYmIHBzZXVkb0VsZW1l
bnRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7Ci0KLSAgICAvLyBGb3IgPHE+PHAvPjwvcT4sIGlm
IHRoaXMgb2JqZWN0IGlzIHRoZSBpbmxpbmUgY29udGludWF0aW9uIG9mIHRoZSA8cT4sIHdlIG9u
bHkgd2FudCB0byBnZW5lcmF0ZQotICAgIC8vIDphZnRlciBjb250ZW50IGFuZCBub3QgOmJlZm9y
ZSBjb250ZW50LgotICAgIGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQkVGT1JFICYm
IG93bmVyLT5pc0VsZW1lbnRDb250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdhbnRl
ZCA9IGZhbHNlOwotCi0gICAgLy8gU2ltaWxhcmx5LCBpZiB3ZSdyZSB0aGUgYmVnaW5uaW5nIG9m
IGEgPHE+LCBhbmQgdGhlcmUncyBhbiBpbmxpbmUgY29udGludWF0aW9uIGZvciBvdXIgb2JqZWN0
LAotICAgIC8vIHRoZW4gd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlIDphZnRlciBjb250ZW50LgotICAg
IGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQUZURVIgJiYgb3duZXItPnZpcnR1YWxD
b250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdhbnRlZCA9IGZhbHNlOwotICAgIAot
ICAgIC8vIElmIHdlIGRvbid0IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQgYW55IGxvbmdlciwgb3Ig
aWYgd2UgaGF2ZSBnZW5lcmF0ZWQgY29udGVudCwgYnV0IGl0J3Mgbm8gbG9uZ2VyCi0gICAgLy8g
aWRlbnRpY2FsIHRvIHRoZSBuZXcgY29udGVudCBkYXRhIHdlIHdhbnQgdG8gYnVpbGQgcmVuZGVy
IG9iamVjdHMgZm9yLCB0aGVuIHdlIG51a2UgYWxsCi0gICAgLy8gb2YgdGhlIG9sZCBnZW5lcmF0
ZWQgY29udGVudC4KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQgJiYgKCFuZXdDb250ZW50V2Fu
dGVkIHx8IE5vZGU6OmRpZmYoY2hpbGQtPnN0eWxlKCksIHBzZXVkb0VsZW1lbnRTdHlsZSwgb3du
ZXItPmRvY3VtZW50KCkpID09IE5vZGU6OkRldGFjaCkpIHsKLSAgICAgICAgLy8gTnVrZSB0aGUg
Y2hpbGQuIAotICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5cGUp
IHsKLSAgICAgICAgICAgIG9sZENvbnRlbnRQcmVzZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICBj
aGlsZC0+ZGVzdHJveSgpOwotICAgICAgICAgICAgY2hpbGQgPSAodHlwZSA9PSBCRUZPUkUpID8g
b3duZXItPnZpcnR1YWxDaGlsZHJlbigpLT5maXJzdENoaWxkKCkgOiBvd25lci0+dmlydHVhbENo
aWxkcmVuKCktPmxhc3RDaGlsZCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgd2Ug
aGF2ZSBubyBwc2V1ZG8tZWxlbWVudCBzdHlsZSBvciBpZiB0aGUgcHNldWRvLWVsZW1lbnQgc3R5
bGUncyBkaXNwbGF5IHR5cGUgaXMgTk9ORSwgdGhlbiB3ZQotICAgIC8vIGhhdmUgbm8gZ2VuZXJh
dGVkIGNvbnRlbnQgYW5kIGNhbiBub3cgcmV0dXJuLgotICAgIGlmICghbmV3Q29udGVudFdhbnRl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG93bmVyLT5pc1JlbmRlcklubGluZSgpICYm
ICFwc2V1ZG9FbGVtZW50U3R5bGUtPmlzRGlzcGxheUlubGluZVR5cGUoKSAmJiAhcHNldWRvRWxl
bWVudFN0eWxlLT5pc0Zsb2F0aW5nKCkgJiYKLSAgICAgICAgIXBzZXVkb0VsZW1lbnRTdHlsZS0+
aGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKLSAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1My
IHNwZWMgKHRoZSBlbmQgb2Ygc2VjdGlvbiAxMi4xKSwgdGhlIG9ubHkgYWxsb3dlZAotICAgICAg
ICAvLyBkaXNwbGF5IHZhbHVlcyBmb3IgdGhlIHBzZXVkbyBzdHlsZSBhcmUgTk9ORSBhbmQgSU5M
SU5FIGZvciBpbmxpbmUgZmxvd3MuCi0gICAgICAgIC8vIEZJWE1FOiBDU1MyLjEgbGlmdGVkIHRo
aXMgcmVzdHJpY3Rpb24sIGJ1dCBibG9jayBkaXNwbGF5IHR5cGVzIHdpbGwgY3Jhc2guCi0gICAg
ICAgIC8vIEZvciBub3cgd2UgYXQgbGVhc3QgcmVsYXggdGhlIHJlc3RyaWN0aW9uIHRvIGFsbG93
IGFsbCBpbmxpbmUgdHlwZXMgbGlrZSBpbmxpbmUtYmxvY2sKLSAgICAgICAgLy8gYW5kIGlubGlu
ZS10YWJsZS4KLSAgICAgICAgcHNldWRvRWxlbWVudFN0eWxlLT5zZXREaXNwbGF5KElOTElORSk7
Ci0KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQpIHsKLSAgICAgICAgdXBkYXRlQmVmb3JlQWZ0
ZXJTdHlsZShjaGlsZCwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgcmV0dXJu
OyAvLyBXZSd2ZSB1cGRhdGVkIHRoZSBnZW5lcmF0ZWQgY29udGVudC4gVGhhdCdzIGFsbCB3ZSBu
ZWVkZWQgdG8gZG8uCi0gICAgfQotICAgIAotICAgIFJlbmRlck9iamVjdCogaW5zZXJ0QmVmb3Jl
ID0gKHR5cGUgPT0gQkVGT1JFKSA/IG93bmVyLT52aXJ0dWFsQ2hpbGRyZW4oKS0+Zmlyc3RDaGls
ZCgpIDogMDsKLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2VydEJlZm9yZS0+aXNBbm9ueW1v
dXNCbG9jaygpICYmIGluc2VydEJlZm9yZS0+Y2hpbGRyZW5JbmxpbmUoKSAmJiAhaW5zZXJ0QmVm
b3JlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIGFkZCB0aGUgImJl
Zm9yZSIgZWxlbWVudC4gV2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSAiaW5zZXJ0QmVmb3Jl
IiBlbGVtZW50Ci0gICAgICAgIC8vIGlzIGFuIGFub255bW91cyBibG9jayB3aXRoIGlubGluZSBj
aGlsZHJlbi4gSWYgaXQgaXMsIHRoZW4gd2Ugc2hvdWxkIGluc2VydCB0aGUgImJlZm9yZSIgZWxl
bWVudAotICAgICAgICAvLyBiZWZvcmUgdGhlIGZpcnN0IGlubGluZSBjaGlsZCBvZiB0aGUgYW5v
bnltb3VzIGJsb2NrLCBvdGhlcndpc2Ugd2Ugd2lsbCBlbmQgdXAgd2l0aCB0aGUgImJlZm9yZSIK
LSAgICAgICAgLy8gZWxlbWVudCBpbiBhIGRpZmZlcmVudCBibG9jay4gV2UgZG8gdGhpcyBvbmx5
IHdoZW4gdGhlIGFub255bW91cyBibG9jayBoYXMgY2hpbGRyZW4sIG90aGVyd2lzZQotICAgICAg
ICAvLyB3ZSBlbmQgdXAgd2l0aCB0aGUgYmVmb3JlIGVsZW1lbnQgaW4gYSB3cm9uZyBibG9jay4K
LSAgICAgICAgaW5zZXJ0QmVmb3JlID0gaW5zZXJ0QmVmb3JlLT5maXJzdENoaWxkKCk7Ci0gICAg
fQotCi0gICAgLy8gTm90aGluZyBnb2VzIGJlZm9yZSB0aGUgaW50cnVkZWQgcnVuLWluLCBub3Qg
ZXZlbiBnZW5lcmF0ZWQgY29udGVudC4KLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2VydEJl
Zm9yZS0+aXNSdW5JbigpICYmIG93bmVyLT5pc1JlbmRlckJsb2NrKCkKLSAgICAgICAgJiYgdG9S
ZW5kZXJCbG9jayhvd25lciktPnJ1bkluSXNQbGFjZWRJbnRvU2libGluZ0Jsb2NrKGluc2VydEJl
Zm9yZSkpCi0gICAgICAgIGluc2VydEJlZm9yZSA9IGluc2VydEJlZm9yZS0+bmV4dFNpYmxpbmco
KTsKLQotICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGNvbnRh
aW5lciB0aGF0IGhvdXNlcyBtdWx0aXBsZSBjaGlsZHJlbiAoc3BlY2lmaWVkCi0gICAgLy8gYnkg
dGhlIGNvbnRlbnQgcHJvcGVydHkpLiBUaGlzIGdlbmVyYXRlZCBjb250ZW50IGNvbnRhaW5lciBn
ZXRzIHRoZSBwc2V1ZG8tZWxlbWVudCBzdHlsZSBzZXQgb24gaXQuCi0gICAgLy8gRm9yIHBzZXVk
by1lbGVtZW50cyB0aGF0IGFyZSByZWdpb25zLCB0aGUgY29udGFpbmVyIGlzIHRoZSBSZW5kZXJS
ZWdpb24uCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyID0gMDsK
LQotICAgIGlmICghcHNldWRvRWxlbWVudFN0eWxlLT5yZWdpb25UaHJlYWQoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRlckNv
bnRhaW5lcihvd25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3QtPm5v
ZGUoKSwgaW5zZXJ0QmVmb3JlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2FsayBvdXIgbGlz
dCBvZiBnZW5lcmF0ZWQgY29udGVudCBhbmQgY3JlYXRlIHJlbmRlciBvYmplY3RzIGZvciBlYWNo
LgotICAgICAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50ID0gcHNldWRvRWxlbWVu
dFN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4dCgp
KSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29udGVudC0+Y3JlYXRl
UmVuZGVyZXIob3duZXItPmRvY3VtZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAgICAg
ICAgICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikgewotICAgICAgICAgICAgICAg
IGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5lcihv
d25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3QtPm5vZGUoKSwgaW5z
ZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENvbnRlbnRDb250YWlu
ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLT5pc0NoaWxkQWxsb3dlZChy
ZW5kZXJlciwgcHNldWRvRWxlbWVudFN0eWxlKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0ZWRD
b250ZW50Q29udGFpbmVyLT5hZGRDaGlsZChyZW5kZXJlcik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gSGFuZGxlIHBsYWNlbWVudCBvZiBydW4taW5zLiBXZSBkbyB0aGUgcnVuLWluIHBsYWNl
bWVudCBhdCB0aGUgZW5kIHNpbmNlIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgY2FuIGdldCBk
ZXN0cm95ZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVySW1t
ZWRpYXRlUGFyZW50ID0gZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+cGFyZW50KCk7Ci0gICAg
aWYgKGdlbmVyYXRlZENvbnRlbnRDb250YWluZXJJbW1lZGlhdGVQYXJlbnQtPmlzUmVuZGVyQmxv
Y2soKSkKLSAgICAgICAgdG9SZW5kZXJCbG9jayhnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVySW1t
ZWRpYXRlUGFyZW50KS0+cGxhY2VSdW5JbklmTmVlZGVkKGdlbmVyYXRlZENvbnRlbnRDb250YWlu
ZXIsIFBsYWNlR2VuZXJhdGVkUnVuSW4pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgKaW5k
ZXggM2Y2MDZkYjhkMzY4YzIwNmYyYTM5MTMwMjNjODNkMTZkY2U4Y2YyYS4uYjYzZjI0MmRlMWJm
Zjk5NTkzMDI5NDdjZDhjMGIzMWYzZThmNjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRl
ZiBSZW5kZXJPYmplY3RDaGlsZExpc3RfaAogI2RlZmluZSBSZW5kZXJPYmplY3RDaGlsZExpc3Rf
aAogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NiwxNiArNTUsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9i
amVjdCosIGJvb2wgbm90aWZ5UmVuZGVyZXIgPSB0cnVlKTsKICAgICB2b2lkIGluc2VydENoaWxk
Tm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZSwgYm9vbCBub3RpZnlSZW5kZXJlciA9IHRydWUpOwogCi0gICAgdm9pZCB1cGRh
dGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QgPSAwKTsKICAgICBSZW5kZXJPYmplY3Qq
IGJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyKSBj
b25zdDsKICAgICBSZW5kZXJPYmplY3QqIGFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogb3duZXIpIGNvbnN0OwogCi1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wg
c19lbmFibGVVcGRhdGVCZWZvcmVBZnRlckNvbnRlbnQ7Ci0KIHByaXZhdGU6Ci0gICAgdm9pZCB1
cGRhdGVCZWZvcmVBZnRlclN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQsIFBzZXVkb0lkIHR5cGUs
IFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50U3R5bGUpOwotCiAgICAgUmVuZGVyT2JqZWN0KiBt
X2ZpcnN0Q2hpbGQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2xhc3RDaGlsZDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAppbmRleCBlOTc2NWYyOGQyMzJh
MjhmZTQ3ZGRhZmUyMzQ1ZGM0Yjc4NzEzMmUzLi5iZTgzMTNiY2I4MzVmMWZiZGI3MjBkOGJlZDU4
MzRlMzM3YjdjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5jcHAKQEAgLTg4LDE1ICs4OCw0IEBAIGJvb2wgUmVuZGVyUnVieVRleHQ6OmF2b2lkc0Zsb2F0
cygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVyUnVieVRleHQ6OnVw
ZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAgICAvLyBSZW5k
ZXJSdWJ5VGV4dCBtYW5hZ2VzIGl0cyBvd24gOmJlZm9yZSBhbmQgOmFmdGVyIGNvbnRlbnQKLSAg
ICAvLyBhbmQgaXMgbm90IGhhbmRsZWQgYnkgaXRzIGFub255bW91cyB3cmFwcGVycyBSZW5kZXJS
dWJ5UnVuCi0gICAgLy8gYW5kIFJlbmRlclJ1YnkuIFRoaXMgY29udHJhc3RzIHdpdGggb3RoZXIg
cnVieSBjaGlsZHJlbiwgd2hpY2gKLSAgICAvLyBhcmUgZW5jbG9zZWQgaW4gUmVuZGVyUnVieUJh
c2UgYW5kIGhlbmNlIHRoZXkgYXJlIGFibGUgdG8KLSAgICAvLyB1cGRhdGUgdGhlaXIgOmJlZm9y
ZSwgOmFmdGVyIGNvbnRlbnQgKHNpbmNlIFJlbmRlclJ1YnlCYXNlCi0gICAgLy8gaXMgbm90IGEg
YW5vbnltb3VzIHdyYXBwZXIpLgotICAgIHJldHVybiBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVB
ZnRlckNvbnRlbnQodGhpcywgcHNldWRvSWQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCmluZGV4IGY0NzMwNGNj
ZGZmZGU5M2EzYmI0YWNiMzA2MDAzZGE0NWRiZjc0MzguLjNhNjc5MjY5ZjY3ZGEwNWZjYWJjYzg3
MGUwYTRmNzQ4ODA0NTFhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5oCkBAIC00Niw4ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCk7Ci0KIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCBlMDBjOWE2NGZiZDk3ZmQ2ODg4
MzIzMzI4MjkwYWVlYWMxZmM1NjdlLi5kNmNiYmZkYjRmNjAwNWVhY2QzM2VkYjhiNjY2NmFkNTk2
ZTllMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAK
QEAgLTUzLDE0ICs1Myw2IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OndpbGxCZVJlbW92ZWRGcm9t
VHJlZSgpCiAgICAgc2VjdGlvbigpLT5zZXROZWVkc0NlbGxSZWNhbGMoKTsKIH0KIAotdm9pZCBS
ZW5kZXJUYWJsZVJvdzo6dXBkYXRlQmVmb3JlQW5kQWZ0ZXJDb250ZW50KCkKLXsKLSAgICBpZiAo
IWlzQW5vbnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNl
c0JlZm9yZUFmdGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVB
ZnRlckNvbnRlbnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVm
b3JlQWZ0ZXJDb250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVuZGVyVGFi
bGVSb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlKCktPmRpc3BsYXkoKSA9PSBUQUJM
RV9ST1cpOwpAQCAtNjgsOSArNjAsNiBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAgIFJl
bmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHByb3BhZ2F0ZVN0
eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOwogCi0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICB1
cGRhdGVCZWZvcmVBbmRBZnRlckNvbnRlbnQoKTsKLQogICAgIGlmIChzZWN0aW9uKCkgJiYgb2xk
U3R5bGUgJiYgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpICE9IG9sZFN0eWxlLT5sb2dpY2FsSGVp
Z2h0KCkpCiAgICAgICAgIHNlY3Rpb24oKS0+cm93TG9naWNhbEhlaWdodENoYW5nZWQocm93SW5k
ZXgoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXgg
YzA1ZjQ0YjY4NTk1ZTgyOTdkNGVkYzI2YThjMjU4YjVjOWE5ZmE1Ni4uOGI2NjNlNmQyY2E0OTNk
ZTQyNjEyYTk2MWMxZDUyNTg1MDg3ODNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxl
U2VjdGlvbiogc2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGVTZWN0aW9uKHBh
cmVudCgpKTsgfQogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRvUmVu
ZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCZWZvcmVB
bmRBZnRlckNvbnRlbnQoKTsKICAgICB2b2lkIHBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVkKFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBzdGF0aWMgUmVuZGVyVGFibGVS
b3cqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAK
aW5kZXggYzg0NTJhNDdjOWJjYjQ3NTY0NGM3YmZkOGU2NDc0N2E5NGM0MTFiMi4uZmFkMjE5Yjc3
OWU2ZjU5ZWUzZDA3ZTZhNjJlN2I3OTQ3M2JlZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTE4Niw3ICsxODYsNiBAQCB2b2lk
IFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZAogCiAgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBiZWZvcmVD
aGlsZC0+aXNUYWJsZVJvdygpKTsKICAgICBSZW5kZXJCb3g6OmFkZENoaWxkKGNoaWxkLCBiZWZv
cmVDaGlsZCk7Ci0gICAgdG9SZW5kZXJUYWJsZVJvdyhjaGlsZCktPnVwZGF0ZUJlZm9yZUFuZEFm
dGVyQ29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6ZW5zdXJlUm93cyh1
bnNpZ25lZCBudW1Sb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAppbmRleCA5Nzc3NTFhNzM2ODY0NTRlZjhhZWEyM2UwYTc5YTU3Nzg2NGNmMWE0Li41ODhlOTYz
NTM2ODU5NDEzMjJiZjRlMTc1ODU4OWY0NjMzZWVlMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVuZGVyV2lk
Z2V0OjpkZXN0cm95KCkKICAgICAvLyBHcmFiIHRoZSBhcmVuYSBmcm9tIG5vZGUoKS0+ZG9jdW1l
bnQoKS0+cmVuZGVyQXJlbmEoKSBiZWZvcmUgY2xlYXJpbmcgdGhlIG5vZGUgcG9pbnRlci4KICAg
ICAvLyBDbGVhciB0aGUgbm9kZSBiZWZvcmUgZGVyZWYtaW5nLCBhcyB0aGlzIG1heSBiZSBkZWxl
dGVkIHdoZW4gZGVyZWYgaXMgY2FsbGVkLgogICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlbmRl
ckFyZW5hKCk7Ci0gICAgc2V0Tm9kZSgwKTsKKyAgICBjbGVhck5vZGUoKTsKICAgICBkZXJlZihh
cmVuYSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBlZjYxYjg3ZWM3MjU0NzQ2NTZkMDEyZDU3NDg3MWFjMjAzZjAz
M2NlLi5kODJmYjU1MmU2YjY2NDk1ZmQxZTRmZTc0MGY0NWM1OTU2OWIyNjg0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTItMTItMTAgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU3dpdGNoIHRvIG5ldyBQc2V1ZG9FbGVtZW50IGJhc2VkIDpiZWZv
cmUgYW5kIDphZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRlc3QgZm9yIGJsb2NrIGdlbmVyYXRlZCBjb250ZW50IGluc2lkZSBpbmxpbmVz
IHdoaWNoIGlzIG5vdyBzdXBwb3J0ZWQKKyAgICAgICAgcHJvcGVybHksIGFuZCBhbHNvIGZvciB1
c2luZyBib3gtb3JpZW50IGFuZCByZW9yZGVyaW5nLgorCisgICAgICAgIGJlZm9yZS1jb250ZW50
LWNvbnRpbnVhdGlvbi5odG1sJ3MgZXhwZWN0YXRpb25zIGNoYW5nZSBiZWNhdXNlIHdlIG5vdwor
ICAgICAgICBzdXBwb3J0IGJsb2NrIGNvbnRlbnQgcHJvcGVybHkuCisKKyAgICAgICAgSSBhbHNv
IHNraXBwZWQgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGFibGUtcm93LWdyb3VwLXRvLWlu
bGluZS5odG1sCisgICAgICAgIHdoaWNoIG5lZWRzIGEgcmViYXNlbGluZSBhZnRlciB0aGlzIHRo
aXMgbGFuZHMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9iZWZvcmUt
Y29udGVudC1jb250aW51YXRpb24tY2hhaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWluc2lkZS1pbmxpbmUtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmxvY2staW5zaWRl
LWlubGluZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVu
dC9ib3gtb3JpZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdl
bmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9kYXRlL2RhdGUtYXBwZWFyYW5jZS1wc2V1ZG8tZWxlbWVudHMuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEyLTA5ICBTdGVwaGVuIFdoaXRlICA8c2Vu
b3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBn
YXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29u
dGVudC9iZWZvcmUtY29udGVudC1jb250aW51YXRpb24tY2hhaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmVmb3JlLWNvbnRlbnQtY29udGlu
dWF0aW9uLWNoYWluLWV4cGVjdGVkLnR4dAppbmRleCAwNDkzYWExNjIwOWQ2OTNlOWZhOTJjNThm
NWJkZmFmYTIzOWFlODI4Li5lMDlhMWQzOTkzZWRjZGNhYzg2NTM3YTM3MmNiYjhkYTY4MjIzOTdh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9iZWZv
cmUtY29udGVudC1jb250aW51YXRpb24tY2hhaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JlZm9yZS1jb250ZW50LWNvbnRpbnVhdGlv
bi1jaGFpbi1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMTYgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg0MTYKICAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDQxNgogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDQwMAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSA3ODR4MAorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwIFtj
b2xvcj0jMDA4MDAwXQogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSA3ODR4MjAwCi0gICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMDB4
MjAwIFtjb2xvcj0jMDA4MDAwXQotICAgICAgICAgIFJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSBh
dCAoMCwwKSBzaXplIDIwMHgyMDAgW2NvbG9yPSMwMDAwRkZdCi0gICAgICAgICAgICBSZW5kZXJU
ZXh0IGF0ICgwLDApIHNpemUgMjAweDIwMAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAyMDA6ICJBIgotICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjAw
KSBzaXplIDc4NHgwCi0gICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0
eDAgW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIGF0ICgw
LDApIHNpemUgNzg0eDIwMCBbY29sb3I9IzAwMDBGRl0KKyAgICAgICAgICBSZW5kZXJUZXh0IGF0
ICgwLDApIHNpemUgMjAweDIwMAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjAwOiAiQSIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjAwKSBzaXplIDc4NHgw
IFtjb2xvcj0jMDA4MDAwXQogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjAw
KSBzaXplIDc4NHgyMDAKICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXpl
IDIwMHgyMDAgW2NvbG9yPSMwMDgwMDBdCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMjAweDIwMAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjAwOiAiQiIKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9i
bG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjViYmJkNTc5NDA1NmFhY2RhNThkNTQyMmU3YjdkMDRiZWUxMDhhYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWlu
c2lkZS1pbmxpbmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8c3Bhbj4KKyAgICA8ZGl2PlNob3VsZCBiZSBvbiBpdCdzIG93biBsaW5lLCA8L2Rpdj4K
KyAgICBhbmQgdGhpcyB0b28uCis8L3NwYW4+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTQwYTE2YTYzOGVhYWZjNTc1YzY0OWMyYjM0NzUzYTYyODk4NTA2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Js
b2NrLWluc2lkZS1pbmxpbmUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4K
KworPHN0eWxlPgorc3BhbjpiZWZvcmUgeworICBkaXNwbGF5OiBibG9jazsKKyAgY29udGVudDog
IlNob3VsZCBiZSBvbiBpdCdzIG93biBsaW5lLCAiOworfQorPC9zdHlsZT4KKworPHNwYW4+YW5k
IHRoaXMgdG9vLjwvc3Bhbj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L2JveC1vcmllbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTAzY2ZjYTJlMjQxZDY2MGRjYTE3ZjY3OWI0YjRlMDhmZTViZjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYm94LW9yaWVudC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c3R5bGU+
CisuYmVmb3JlIHsKKyAgYmFja2dyb3VuZDpyZWQ7Cit9Cis8L3N0eWxlPgorCis8aDE+Tm9ybWFs
PC9oMT4KKzxkaXY+CisgIDxkaXYgY2xhc3M9ImJlZm9yZSI+QmVmb3JlIGNvbnRlbnQ8L2Rpdj4K
KyAgPGRpdj4xc3QgaW4gY29kZSAtIDFuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2PjJuZCBpbiBj
b2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KKworPGgxPlJlb3JkZXJlZDwvaDE+Cis8
ZGl2PgorICA8ZGl2IGNsYXNzPSJiZWZvcmUiPkJlZm9yZSBjb250ZW50PC9kaXY+CisgIDxkaXY+
Mm5kIGluIGNvZGUgLSAxc3QgaW4gb3JkZXI8L2Rpdj4KKyAgPGRpdj4xc3QgaW4gY29kZSAtIDJu
ZCBpbiBvcmRlcjwvZGl2PgorPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9ib3gtb3JpZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9ib3gtb3JpZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1NWUwZjFm
NjYzNDdlZTM5MmVhNGUzNGE4MGFiMmJhYWFhZjYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQuaHRtbApAQCAtMCww
ICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHN0eWxlPgorLmNvbnRhaW5lciB7CisgIGRp
c3BsYXk6IGJveDsKKyAgZGlzcGxheTogLW1vei1ib3g7CisgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICBib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgLW1vei1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsK
KyAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKK30KKworLmNvbnRhaW5lcjpiZWZvcmUg
eworICBkaXNwbGF5OiBibG9jazsKKyAgY29udGVudDogIkJlZm9yZSBjb250ZW50IjsKKyAgYmFj
a2dyb3VuZDpyZWQ7Cit9CisKKy5jMW8yIHsKKyAgICAtbW96LWJveC1vcmRpbmFsLWdyb3VwOiAy
OworICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7IAorICAgIGJveC1vcmRpbmFsLWdy
b3VwOiAyOworfQorCisuYzJvMSB7CisgICAgLW1vei1ib3gtb3JkaW5hbC1ncm91cDogMTsKKyAg
ICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxOyAKKyAgICBib3gtb3JkaW5hbC1ncm91cDog
MTsKK30KKzwvc3R5bGU+CisKKzxoMT5Ob3JtYWw8L2gxPgorPGRpdiBjbGFzcz0iY29udGFpbmVy
Ij4KKyAgPGRpdj4xc3QgaW4gY29kZSAtIDFuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2PjJuZCBp
biBjb2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KKworPGgxPlJlb3JkZXJlZDwvaDE+
Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICA8ZGl2IGNsYXNzPSJjMW8yIj4xc3QgaW4gY29k
ZSAtIDJuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2IGNsYXNzPSJjMm8xIj4ybmQgaW4gY29kZSAt
IDFzdCBpbiBvcmRlcjwvZGl2PgorPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1hcHBlYXJhbmNlLXBzZXVkby1lbGVtZW50cy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtYXBwZWFyYW5jZS1wc2V1ZG8tZWxlbWVudHMuaHRt
bAppbmRleCA2NzFlMzc0Nzc3MTRiNzg3Y2ZkZjJiZmEwYjI5ZmVmYmRiYzA0YjYzLi5mODZlN2Iz
ZTExODgwZjRkOTMxNmRhYzRjZGRlMTIyYWVmYWVhNzBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1hcHBlYXJhbmNlLXBzZXVkby1lbGVtZW50cy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLWFwcGVhcmFuY2UtcHNldWRvLWVs
ZW1lbnRzLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAKIDwvdWw+CiA8c2NyaXB0PgogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzg2
OTMxYjJlNzNmOTJiMTJiN2VkYjY4NTViOTZiMjMwMTkwZmQ5NS4uNWE5NDIwZjg0ZGYwZDZhOWRi
YTlmYjk5MWMwZDgzOTYzOGViM2NkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTI5LDYgKzM5MjksOSBAQCB3ZWJraXQub3JnL2Iv
MTE2NDUgWyBNYWMgQW5kcm9pZCBdIGZhc3QvdGFibGUvMDI1Lmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xMDExNzcgc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdVc2VFbGVtZW50LWRvbS1y
ZXF1aXJlZEZlYXR1cmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzEwMTE3NyBzdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3guc3ZnIFsgSW1h
Z2VPbmx5RmFpbHVyZSBQYXNzIF0KIAorIyBOZWVkcyByZWJhc2VsaW5lIGFmdGVyIGJ1ZyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDYyCit3ZWJraXQub3JnL2Iv
OTg2ODcgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGFibGUtcm93LWdyb3VwLXRvLWlubGlu
ZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KKwogIyBUaGVzZSBhcmUgcmVhbCBmYWlsdWVzIGR1ZSB0
byA5NTEyMS4KICMgVGhpcyBpcyBzcGlsbGluZyBjYXVzZWQgYnkgTEFOQ1pPUzMgc2NhbGluZyBh
bGdvcml0aG0gdGhhdCBzYW1wbGVzIG91dHNpZGUgdGhlIHNvdXJjZSByZWN0Lgogd2Via2l0Lm9y
Zy9iLzk1MTIxIFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9pbWFnZXMvcGl4ZWwtY3JhY2staW1h
Z2UtYmFja2dyb3VuZC13ZWJraXQtdHJhbnNmb3JtLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjAw
OTczNjhhMGNiMzhmYzUxMGU1OGU0OTM3YjZmYThmYjlhNTk0NC4uOWYzOGJiMDRmOWE3NzhjYTE1
NjViOGE1OThiOWZlZDVjNTg3YzU1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTExNTMsNiArMTE1Myw5IEBAIHdlYmtpdC5vcmcvYi85MDk1MSBmYXN0
L3RleHQvc2hhcGluZwogd2Via2l0Lm9yZy9iLzEwMTE3NyBzdmcvZHluYW1pYy11cGRhdGVzL1NW
R1VzZUVsZW1lbnQtZG9tLXJlcXVpcmVkRmVhdHVyZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
UGFzcyBdCiB3ZWJraXQub3JnL2IvMTAxMTc3IHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Ut
dmlld0JveC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogCisjIE5lZWRzIHJlYmFzZWxp
bmUgYWZ0ZXIgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ0
NjIKK3dlYmtpdC5vcmcvYi85ODY4NyBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC90YWJsZS1y
b3ctZ3JvdXAtdG8taW5saW5lLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQorCiB3ZWJraXQub3JnL2Iv
OTMyNDcgWyBEZWJ1ZyBdIGZhc3QvbGlzdHMvbGlzdC1tYXJrZXItcmVtb3ZlLWNyYXNoLmh0bWwg
WyBDcmFzaCBdCiAKICMgKHIxMjQ0ODQpIGluc3BlY3Rvci9kZXZpY2Utb3JpZW50YXRpb24tc3Vj
Y2Vzcy5odG1sIGZhaWxpbmcgb24gTWFjIHBvcnRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178631</attachid>
            <date>2012-12-10 13:56:44 -0800</date>
            <delta_ts>2012-12-10 14:34:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104462-20121210135406.patch</filename>
            <type>text/plain</type>
            <size>63131</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU5ZmY5NzQzMzc3NGE0
ODg1OWE3OTAyNWRkODkwYzgyNjQxYzg5OC4uZmEzZjE1ZTRiNDQ0NmU1NGZkMDU5N2VmZTNkMWE5
ODljNmEwNGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTEwICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCB0byBu
ZXcgUHNldWRvRWxlbWVudCBiYXNlZCA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB0aGUgbmV3IFBzZXVk
b0VsZW1lbnQgYmFzZWQgZ2VuZXJhdGVkIGNvbnRlbnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
dGhhdCBtb3ZlcyA6YmVmb3JlIGFuZCA6YWZ0ZXIgaW50byB0aGUgRE9NLiBUaGlzIGFsc28gc3dp
dGNoZXMgdG8gdXNpbmcKKyAgICAgICAgdGhlIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBmb3Ig
ZGV0ZXJtaW5pbmcgdGhlIHNpYmxpbmdzIG9mIFBzZXVkb0VsZW1lbnQncworICAgICAgICBtYWtp
bmcgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0IGFkZGlu
ZyA6YmVmb3JlCisgICAgICAgIGFuZCA6YWZ0ZXIgaW50byA8aW5wdXQ+IGVsZW1lbnRzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5s
aW5lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1v
cmllbnQuaHRtbAorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJl
TmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgor
ICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVS
ZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQp
OgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dpY2FsbHlQcmV2aW91c0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsbHlOZXh0
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJh
Z2dhYmxlTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6c3BsaXRCbG9ja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmFkZENoaWxkSWdub3JpbmdBbm9ueW1vdXNDb2x1bW5CbG9ja3MpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZVJlcGxhY2VtZW50UnVuSW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oOgorICAgICAgICAoUmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29u
dGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3BsaXRJbmxpbmVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEl0ZW06OnVwZGF0ZU1hcmtlckxvY2F0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5vblBzZXVkb05vZGUpOgor
ICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKyAgICAgICAgKFJlbmRl
ck9iamVjdENoaWxkTGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaDoKKyAgICAgICAgKFJlbmRl
clJ1YnlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6
YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpkZXN0cm95KToKKwogMjAxMi0xMi0xMCAgTWFyayBQ
aWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXVtXaW5d
IFJlbW92ZSB0aGVtZS1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBh
OWJlOTUzNzY5MmU1ZmRlMDUzMGJjMDYwMTc2ZmY1MzBhOTNmMWY3Li4xMjQ4NmE5MTdhOWUzNmNk
ODQzNmZjYzY5YTZiMDQ2ZWNhNjY3OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhU
TUxDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTgwLDYgKzE4MSw0NiBAQCB2b2lkIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKCkKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9u
KCk7CiB9CiAKK3ZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZU5leHRT
aWJsaW5nKCkKK3sKKyAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKKworICAgIGNvbnN0IE5vZGUq
IG5vZGUgPSBtX25vZGU7CisKKyAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlRmlyc3RDaGlsZCh0cmF2ZXJzZVBhcmVudChub2Rl
KSk7CisgICAgZWxzZQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0lu
c2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOworCisgICAgaWYg
KCFtX25vZGUgJiYgIW5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgTm9k
ZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgICAgIGlmIChwYXJlbnQgJiYg
cGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBtX25vZGUgPSB0b0VsZW1lbnQo
cGFyZW50KS0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CisgICAgfQorCisgICAgYXNzZXJ0UG9zdGNv
bmRpdGlvbigpOworfQorCit2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKQoreworICAgIGFzc2VydFByZWNvbmRpdGlvbigpOworCisgICAg
Y29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRv
RWxlbWVudCgpKQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZUxhc3RDaGlsZCh0cmF2ZXJzZVBh
cmVudChub2RlKSk7CisgICAgZWxzZQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdP
ckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsK
KworICAgIGlmICghbV9ub2RlICYmICFub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewor
ICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICAgICAgaWYg
KHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIG1fbm9kZSA9
IHRvRWxlbWVudChwYXJlbnQpLT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgfQorCisgICAg
YXNzZXJ0UG9zdGNvbmRpdGlvbigpOworfQorCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OnRyYXZlcnNlRGlzdHJpYnV0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdCBJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgZm9yIChjb25zdCBOb2RlKiBuZXh0ID0gbm9kZTsgbmV4dDsgbmV4dCA9IChkaXJl
Y3Rpb24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGluc2VydGlvblBvaW50LT5uZXh0
VG8obmV4dCkgOiBpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNUbyhuZXh0KSkpIHsKQEAgLTI1OCw2
ICsyOTksOSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cGFyZW50KCkKIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQxNQogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJl
bnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogeworICAgIGlmIChub2RlLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsK
KwogICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkgJiYgbm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKICAgICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgpKTsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmgKaW5kZXggODk3NjliMTcyMzQyZGQ0YTE4YzU5N2U1YzZhZTI0ZDFlODBkMmRj
MS4uNGI2ZmY5NTZhNDUxOWI4ZDYwMjQ4MzFmMjc1ODhhNjRjNGFhOWQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtOTAsNiArOTAsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBuZXh0U2libGluZygpOwogICAgIHZvaWQgcHJldmlvdXNTaWJs
aW5nKCk7CiAKKyAgICB2b2lkIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsKKyAgICB2b2lkIHBz
ZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7CisKICAgICB2b2lkIHBhcmVudCgpOwogCiAgICAg
dm9pZCBuZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNjI3ZTk4MTNiZmQ3ZjkyOTg5
ZjcxYTM4MTNmNGEyMTUzMjMzM2YzMi4uODlkZjkxYjg5MGFlODRiZTk0YTBkMDc5OTljOGM2OWEw
ZTlhMjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTE2OSw2ICsxMTY5LDggQEAgdm9p
ZCBFbGVtZW50OjphdHRhY2goKQogICAgIGlmIChwYXJlbnRFbGVtZW50KCkgJiYgcGFyZW50RWxl
bWVudCgpLT5pc0luQ2FudmFzU3VidHJlZSgpKQogICAgICAgICBzZXRJc0luQ2FudmFzU3VidHJl
ZSh0cnVlKTsKIAorICAgIHVwZGF0ZVBzZXVkb0VsZW1lbnQoQkVGT1JFKTsKKwogICAgIC8vIFdo
ZW4gYSBzaGFkb3cgcm9vdCBleGlzdHMsIGl0IGRvZXMgdGhlIHdvcmsgb2YgYXR0YWNoaW5nIHRo
ZSBjaGlsZHJlbi4KICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdGhpcy0+c2hhZG93
KCkpIHsKICAgICAgICAgcGFyZW50UHVzaGVyLnB1c2goKTsKQEAgLTExNzgsNiArMTE4MCw4IEBA
IHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIAogICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwog
CisgICAgdXBkYXRlUHNldWRvRWxlbWVudChBRlRFUik7CisKICAgICBpZiAoaGFzUmFyZURhdGEo
KSkgeyAgIAogICAgICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEo
KTsKICAgICAgICAgaWYgKGRhdGEtPm5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVy
QXR0YWNoKCkpIHsKQEAgLTEzMzAsNiArMTMzNCw4IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICB9CiAgICAgfQogCisgICAgdXBkYXRlUHNl
dWRvRWxlbWVudChCRUZPUkUsIGNoYW5nZSk7CisKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBp
cyBnb29kIGVub3VnaCBmb3IgOmhvdmVyICsgZm9vLCBidXQgaXQgaXMgbm90IGdvb2QgZW5vdWdo
IGZvciA6aG92ZXIgKyBmb28gKyBiYXIuCiAgICAgLy8gRm9yIG5vdyB3ZSB3aWxsIGp1c3Qgd29y
cnkgYWJvdXQgdGhlIGNvbW1vbiBjYXNlLCBzaW5jZSBpdCdzIGEgbG90IHRyaWNraWVyIHRvIGdl
dCB0aGUgc2Vjb25kIGNhc2UgcmlnaHQKICAgICAvLyB3aXRob3V0IGRvaW5nIHdheSB0b28gbXVj
aCByZS1yZXNvbHV0aW9uLgpAQCAtMTM1NCw2ICsxMzYwLDggQEAgdm9pZCBFbGVtZW50OjpyZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIGZvcmNlQ2hlY2tPZkFueUVsZW1l
bnRTaWJsaW5nID0gZm9yY2VDaGVja09mQW55RWxlbWVudFNpYmxpbmcgfHwgKGNoaWxkUnVsZXND
aGFuZ2VkICYmIGhhc0luZGlyZWN0QWRqYWNlbnRSdWxlcyk7CiAgICAgfQogCisgICAgdXBkYXRl
UHNldWRvRWxlbWVudChBRlRFUiwgY2hhbmdlKTsKKwogICAgIGNsZWFyTmVlZHNTdHlsZVJlY2Fs
YygpOwogICAgIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggYmQ5MzkzY2M4OTM1NzMwOTIyZTk5MzkzMDEwNTA4ZGVhYTNlMTQyOC4uN2RmMzdi
YzI0NzQ3Zjk5ZDU2Zjg5NDMwOGNiMDVhYTg3N2M1ZTY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDaGls
ZE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkNvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKQEAgLTQ0NywzNCArNDQ4LDYgQEAgdm9pZCBOb2RlOjpzZXRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiBzY29wZSkKICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUo
c2NvcGUpOwogfQogCi1Ob2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNv
bnN0Ci17Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkpIHsK
LSAgICAgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpOwotICAgICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoaXNBZnRl
clBzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnQtPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+bGFzdENoaWxkKCk7Ci0gICAgICAgIGlmICghaXNCZWZvcmVQc2V1ZG9FbGVt
ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7
Ci0gICAgfQotICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmcoKTsKLX0KLQotTm9kZSogTm9kZTo6
cHNldWRvQXdhcmVOZXh0U2libGluZygpIGNvbnN0Ci17Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUo
KSAmJiAhbmV4dFNpYmxpbmcoKSkgewotICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRP
ckhvc3RFbGVtZW50KCk7Ci0gICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIGlmIChpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnQtPmZpcnN0
Q2hpbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAg
ICAgaWYgKCFpc0FmdGVyUHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7Ci0gICAgfQotICAgIHJldHVybiBuZXh0U2libGluZygp
OwotfQotCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaGFzUmFyZURhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjOTUxYzcyMzg3OTE3YmUyMDIzOTI4
ZTZlY2Q0MmRhYTA5MmRmMDNmLi4xNjBjMjgzYzY5M2VlMTY5YTVjNzA0YTVhZWVmMGQ5N2E5YWYx
ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE5MCw5ICsxOTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNBdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzKCkgY29u
c3Q7CiAKLSAgICBOb2RlKiBwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0OwotICAg
IE5vZGUqIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgS1VS
TCBiYXNlVVJJKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDQ2NDZjZDg0YTNkOWMwYjY2YmYzMjAzMzZiZDUxMzk5NTljNGE0
YzcuLjJjODlhODhkOWZkNDg2YWJjMTEwNzY5ZGQ2OWQ1ZDE3ZjU5MTI0ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsOSArMzIsMTEgQEAK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNoYWRv
d0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTgzLDE3ICs4NSw4IEBA
IFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0
CiAgICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0YWlscy5ub2Rl
KCktPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gRklYTUU6IFRoaXMg
aXMgd3Jvbmcgd2hlbiB0aGUgbmV4dCBzaWJsaW5nIHdhcyBhY3R1YWxseSBtb3ZlZCBhcm91bmQg
Ynkgc2hhZG93IGluc2VydGlvbiBwb2ludHMuCi0gICAgaWYgKG1fbm9kZS0+aXNQc2V1ZG9FbGVt
ZW50KCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBzaWJsaW5nID0gbV9ub2RlLT5wc2V1ZG9Bd2Fy
ZU5leHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wc2V1ZG9Bd2FyZU5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
c2libGluZy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLm5leHRTaWJsaW5nKCk7
IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKHdhbGtlci5w
c2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3YXJl
TmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdh
bGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBl
bGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1
c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5k
ZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKQEAgLTExMCwxMCArMTAzLDYg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigp
IGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBtZXRob2QgZG9lc24ndCBzdXBwb3J0IHBzZXVkbyBlbGVtZW50cyBzaW5j
ZSBub3RoaW5nIG5lZWRzCi0gICAgLy8gcHJldmlvdXNSZW5kZXJlcigpIHN1cHBvcnQgZm9yIHRo
ZW0geWV0LgotICAgIEFTU0VSVCghbV9ub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7Ci0KICAgICBp
ZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5k
ZXJlci0+cHJldmlvdXNSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKIApAQCAtMTIxLDcgKzExMCw3
IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIo
KSBjb25zdAogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNldmVyYWwg
dGVzdHMgZmFpbGVkLgogCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25v
ZGUpOwotICAgIGZvciAod2Fsa2VyLnByZXZpb3VzU2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdh
bGtlci5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgIGZvciAod2Fsa2VyLnBzZXVkb0F3YXJlUHJl
dmlvdXNTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3YXJlUHJldmlvdXNT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIu
Z2V0KCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVu
dHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRo
ZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5u
b2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXIt
PnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCkBAIC0yMzUsNyArMjI0LDcgQEAgdm9p
ZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50SWZOZWVkZWQo
KQogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRl
cmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSB0aGlzLT5uZXh0UmVuZGVy
ZXIoKTsKLQorICAgIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBpZiAoZWxlbWVu
dC0+aXNJblRvcExheWVyKCkpCiAgICAgICAgIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5
ZXJFbGVtZW50KGVsZW1lbnQsIHBhcmVudFJlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggYTFjMGIwMWUxMDI0MjUzMTZhNjY5MzM0ZTMyZGU0MzQyODE0
YjJlMS4uMDU4MWE4OGMxNzQwYTRjYzFkZDA2MzgzNTM4ZTNmNmI2ZDIzNjE5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNz
UmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIExlZ2FjeUVkaXRpbmdPZmZzZXQgb2Zmc2V0KQogI2Vs
c2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jv
b3QoKSk7CiAjZW5kaWYKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSk7CiB9CiAKIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRy
PE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKQEAgLTEwMiw2ICsxMDMs
OCBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNo
b3JUeXBlIGFuY2hvclR5cGUpCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9k
ZSB8fCAhbV9hbmNob3JOb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7CisKICAgICBBU1NFUlQoYW5j
aG9yVHlwZSAhPSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAgIEFTU0VSVCghKChhbmNo
b3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0
aW9uSXNBZnRlckNoaWxkcmVuKQogICAgICAgICAmJiAobV9hbmNob3JOb2RlLT5pc1RleHROb2Rl
KCkgfHwgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0x
MjAsNiArMTIzLDggQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9y
Tm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXAKICAgICBBU1NFUlQoIW1fYW5j
aG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwg
IW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7CisKICAgICBB
U1NFUlQoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBAIC04
NDAsNyArODQ1LDcgQEAgYm9vbCBQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNj
ZW5kYW50c1dpdGhIZWlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXIKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHN0b3AgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXJBZnRlckNoaWxkcmVuKCk7CiAgICAg
Zm9yIChSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBvICYmIG8gIT0g
c3RvcDsgbyA9IG8tPm5leHRJblByZU9yZGVyKCkpCi0gICAgICAgIGlmIChvLT5ub2RlKCkgJiYg
IW8tPm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKG8tPm5vblBzZXVk
b05vZGUoKSkgewogICAgICAgICAgICAgaWYgKChvLT5pc1RleHQoKSAmJiB0b1JlbmRlclRleHQo
byktPmxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKSkgfHwKICAgICAgICAgICAgICAgICAoby0+
aXNCb3goKSAmJiB0b1JlbmRlckJveChvKS0+Ym9yZGVyQm91bmRpbmdCb3goKS5oZWlnaHQoKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAppbmRleCAyYjZlOTQ4MDNhYzc5ZTYxOGQ0MzM5NWJjODUyNjk4NGJjNTdl
OGVhLi4yODY4OTRiN2IxNzg1YzkxMGU4ZTJlZDU1OTE5NTQwNTNiNThhNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTIxNCw4ICsyMTQsOCBAQCBzdGF0
aWMgY29uc3QgSW5saW5lVGV4dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUAogICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CiAKICAgICB3
aGlsZSAoMSkgewotICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIo
KSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAwOwotICAgICAgICBpZiAoIXN0YXJ0
Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICBOb2RlKiBzdGFy
dE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIoKSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub25Q
c2V1ZG9Ob2RlKCkgOiAwOworICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gcHJldmlvdXNSb290SW5saW5lQm94
Q2FuZGlkYXRlUG9zaXRpb24oc3RhcnROb2RlLCB2aXNpYmxlUG9zaXRpb24sIENvbnRlbnRJc0Vk
aXRhYmxlKTsKQEAgLTI1NSw4ICsyNTUsOCBAQCBzdGF0aWMgY29uc3QgSW5saW5lVGV4dEJveCog
bG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdAogICAg
ICAgICByZXR1cm4gbmV4dEJveDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIE5vZGUqIHN0
YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5v
ZGUoKSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlIHx8IHN0YXJ0Tm9kZS0+aXNQc2V1ZG9F
bGVtZW50KCkpCisgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigp
ID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vblBzZXVkb05vZGUoKSA6IDA7CisgICAgICAgIGlm
ICghc3RhcnROb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9z
aXRpb24gPSBuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlz
aWJsZVBvc2l0aW9uLCBDb250ZW50SXNFZGl0YWJsZSk7CkBAIC03NDMsOCArNzQzLDggQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGlmICghc3RhcnRSZW5kZXJlcikKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAgIHN0
YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChzdGFydE5v
ZGUgJiYgIXN0YXJ0Tm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICBzdGFydE5v
ZGUgPSBzdGFydFJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCk7CisgICAgICAgICAgICBpZiAoc3Rh
cnROb2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBzdGFydEJveCA9
IHN0YXJ0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CkBAIC04MTUsOCArODE1LDggQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBMaW5lRW5kcG9pbnQKICAgICAgICAgICAgIGlmICghZW5kUmVuZGVyZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0gICAgICAgICAgICBlbmROb2RlID0g
ZW5kUmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChlbmROb2RlICYmICFlbmROb2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+
bm9uUHNldWRvTm9kZSgpOworICAgICAgICAgICAgaWYgKGVuZE5vZGUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGVuZEJveCA9IGVuZEJveC0+cHJl
dkxlYWZDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA3OGJjNmU5NDg2N2VmZjQzODkzMDdiYjFlMjM5NjM1ZDA3
MTk5NTg1Li5iNzI1ZjJhNzVhOWE4ODYxMTgxZmUzZDUzMzQyYjNiNDQwNTg0N2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtNjUsNiArNjUsMTAgQEAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6On5IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudCgpCiAKIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxk
Q29udGV4dCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGZvcmNlIHRoZSBw
c2V1ZG8gZWxlbWVudHMgZG93biBpbnRvIHRoZSBzaGFkb3csIGJ1dAorICAgIC8vIHRoaXMgcGVy
c2VydmVzIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIFdlYktpdC4KKyAgICBpZiAoY2hpbGRDb250
ZXh0Lm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29u
dGV4dCk7CiAgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5pc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5
KCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDNhMGRkMTZkMjZhYzIwOTY0YzlkYjk1Y2RhYWZkMjI4YWFlZTg5ZTYuLjZl
MTNlNGVhNWI4YTk0YzQyYjk0MzI2YjVkZmMzMGY3ZmRlNDJmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02MjUsNyArNjI1LDcgQEAgTm9kZSogRHJhZ0NvbnRy
b2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBj
b25zdCBJbnQKICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gKHNyYy0+c2VsZWN0aW9uKCktPmNvbnRh
aW5zKGRyYWdPcmlnaW4pKSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNl
QWN0aW9uTm9uZTsKIAogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0
YXJ0Tm9kZS0+cmVuZGVyZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBO
b2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKICAgICAgICAgaWYgKCFub2Rl
KQogICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3QgY29ycmVzcG9u
ZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQogICAgICAgICAgICAg
Ly8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3YTQ0NGY5OTRhMGYyZWExMmI5
YzBkNWZhYjNmZmNmY2IwMDE0YjdhLi5jZDZkODhmODBkZTc3YzdhOGY4N2ZkYTU2NmI0ODA1YmU0
Njk5ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM0
NCwxMiArMzQ0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICBwcm9wYWdhdGVTdHls
ZVRvQW5vbnltb3VzQ2hpbGRyZW4odHJ1ZSk7ICAgIAogICAgIG1fbGluZUhlaWdodCA9IC0xOwog
Ci0gICAgLy8gVXBkYXRlIHBzZXVkb3MgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBub3cuCi0gICAg
aWYgKCFpc0Fub255bW91cygpICYmIGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkt
PnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkgJiYgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpIHsK
LSAgICAgICAgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KEJFRk9SRSk7Ci0gICAgICAgIHVwZGF0
ZUJlZm9yZUFmdGVyQ29udGVudChBRlRFUik7Ci0gICAgfQotCiAgICAgLy8gQWZ0ZXIgb3VyIHN0
eWxlIGNoYW5nZWQsIGlmIHdlIGxvc2Ugb3VyIGFiaWxpdHkgdG8gcHJvcGFnYXRlIGZsb2F0cyBp
bnRvIG5leHQgc2libGluZwogICAgIC8vIGJsb2NrcywgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgdGhl
IHRvcCBtb3N0IHBhcmVudCBjb250YWluaW5nIHRoYXQgb3ZlcmhhbmdpbmcgZmxvYXQgYW5kCiAg
ICAgLy8gdGhlbiBtYXJrIGl0cyBkZXNjZW5kYW50cyB3aXRoIGZsb2F0cyBmb3IgbGF5b3V0IGFu
ZCBjbGVhciBhbGwgZmxvYXRzIGZyb20gaXRzIG5leHQKQEAgLTM4MSwxNCArMzc1LDYgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0
ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAgICAvLyBJZiB0aGlz
IGlzIGFuIGFub255bW91cyB3cmFwcGVyLCB0aGVuIHRoZSBwYXJlbnQgYXBwbGllcyBpdHMgb3du
IHBzZXVkby1lbGVtZW50IHN0eWxlIHRvIGl0LgotICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQo
KS0+Y3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNoaWxk
cmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCh0aGlzLCBwc2V1ZG9JZCk7Ci19Ci0KIFJl
bmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y29udGludWF0aW9uQmVmb3JlKFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJl
bnQoKSA9PSB0aGlzKQpAQCAtNjAzLDEzICs1ODksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzcGxp
dEJsb2NrcyhSZW5kZXJCbG9jayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3VyciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFy
ZW50KCkpOwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyQ2hpbGQgPSB0aGlzOwogICAg
IFJlbmRlck9iamVjdCogY3VyckNoaWxkTmV4dFNpYmxpbmcgPSBjdXJyQ2hpbGQtPm5leHRTaWJs
aW5nKCk7Ci0gICAgYm9vbCBkb2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVzID0gZG9jdW1lbnQo
KS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsKIAotICAg
IC8vIE5vdGU6IHx0aGlzfCBjYW4gYmUgZGVzdHJveWVkIGluc2lkZSB0aGlzIGxvb3AgaWYgaXQg
aXMgYW4gZW1wdHkgYW5vbnltb3VzCi0gICAgLy8gYmxvY2sgYW5kIHdlIHRyeSB0byBjYWxsIHVw
ZGF0ZUJlZm9yZUFmdGVyQ29udGVudCBpbnNpZGUgd2hpY2ggcmVtb3ZlcyB0aGUKLSAgICAvLyBn
ZW5lcmF0ZWQgY29udGVudCBhbmQgYWRkaXRpb25hbGx5IGNsZWFucyB1cCB8dGhpc3wgZW1wdHkg
YW5vbnltb3VzIGJsb2NrLgotICAgIC8vIFNlZSBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQoKS4g
RE8gTk9UIHJlZmVyZW5jZSBhbnkgbG9jYWwgdmFyaWFibGVzIHRvIHx0aGlzfAotICAgIC8vIGFm
dGVyIHRoaXMgcG9pbnQuCiAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBmcm9tQmxvY2spIHsK
ICAgICAgICAgQVNTRVJUKGN1cnItPmlzUmVuZGVyQmxvY2soKSk7CiAgICAgICAgIApAQCAtNjMy
LDE2ICs2MTIsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpzcGxpdEJsb2NrcyhSZW5kZXJCbG9jayog
ZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAgICAgICAgICAgIGNsb25lQmxvY2st
PnNldENvbnRpbnVhdGlvbihvbGRDb250KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFNvbWVv
bmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3BsaXQuICBXaGVuIHRoaXMg
aGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgIC8vIGhhcyB0byBtb3ZlIGludG8g
dGhlIGlubGluZSBjb250aW51YXRpb24uICBDYWxsIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCB0
byBlbnN1cmUgdGhhdCB0aGUgaW5saW5lJ3MgOmFmdGVyCi0gICAgICAgIC8vIGNvbnRlbnQgZ2V0
cyBwcm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgIGJvb2wgaXNMYXN0Q2hpbGQgPSAoY3VyckNo
aWxkTmV4dFNpYmxpbmcgPT0gYmxvY2tDdXJyLT5sYXN0Q2hpbGQoKSk7Ci0gICAgICAgIGlmIChk
b2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVzKQotICAgICAgICAgICAgYmxvY2tDdXJyLT5jaGls
ZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoYmxvY2tDdXJyLCBBRlRFUik7Ci0gICAg
ICAgIGlmIChpc0xhc3RDaGlsZCAmJiBjdXJyQ2hpbGROZXh0U2libGluZyAhPSBibG9ja0N1cnIt
Pmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgY3VyckNoaWxkTmV4dFNpYmxpbmcgPSAwOyAvLyBX
ZSBkZXN0cm95ZWQgdGhlIGxhc3QgY2hpbGQsIHNvIG5vdyB3ZSBuZWVkIHRvIHVwZGF0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgb2YgY3VyckNo
aWxkTmV4dFNpYmxpbmcuCi0KICAgICAgICAgLy8gTm93IHdlIG5lZWQgdG8gdGFrZSBhbGwgb2Yg
dGhlIGNoaWxkcmVuIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGNoaWxkCiAgICAgICAgIC8vICph
ZnRlciogY3VyckNoaWxkIGFuZCBhcHBlbmQgdGhlbSBhbGwgdG8gdGhlIGNsb25lLgogICAgICAg
ICBibG9ja0N1cnItPm1vdmVDaGlsZHJlblRvKGNsb25lQmxvY2ssIGN1cnJDaGlsZE5leHRTaWJs
aW5nLCAwLCB0cnVlKTsKQEAgLTg3NCwyMyArODQ0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRk
Q2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LAogICAgICAgICAgICAgaWYgKCFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgICAgICAgICAg
c2V0Q29udGludWF0aW9uKG5ld0JveCk7CiAKLSAgICAgICAgICAgIC8vIFNvbWVvbmUgbWF5IGhh
dmUgcHV0IGEgPHA+IGluc2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAgV2hlbiB0aGlzIGhh
cHBlbnMsIHRoZSA6YWZ0ZXIgY29udGVudAotICAgICAgICAgICAgLy8gaGFzIHRvIG1vdmUgaW50
byB0aGUgaW5saW5lIGNvbnRpbnVhdGlvbi4gIENhbGwgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50
IHRvIGVuc3VyZSB0aGF0IG91ciA6YWZ0ZXIKLSAgICAgICAgICAgIC8vIGNvbnRlbnQgZ2V0cyBw
cm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgICAgICBib29sIGlzRmlyc3RDaGlsZCA9IChiZWZv
cmVDaGlsZCA9PSBmaXJzdENoaWxkKCkpOwotICAgICAgICAgICAgYm9vbCBpc0xhc3RDaGlsZCA9
IChiZWZvcmVDaGlsZCA9PSBsYXN0Q2hpbGQoKSk7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQo
KS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSkKLSAgICAg
ICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQodGhpcywgQUZU
RVIpOwotICAgICAgICAgICAgaWYgKGlzTGFzdENoaWxkICYmIGJlZm9yZUNoaWxkICE9IGxhc3RD
aGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZGVzdHJveWVkIHRoZSBsYXN0IGNoaWxk
LCBzbyBub3cgd2UgbmVlZCB0byB1cGRhdGUgb3VyIGluc2VydGlvbgotICAgICAgICAgICAgICAg
IC8vIHBvaW50IHRvIGJlIDAuIEl0J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVuZCBub3cuCi0gICAg
ICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Zp
cnN0Q2hpbGQgJiYgYmVmb3JlQ2hpbGQgIT0gZmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgYmVmb3JlQ2hpbGQgd2FzIHRoZSBsYXN0IGFub255bW91cyBibG9jayB0aGF0IGNv
bGxhcHNlZCwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIGl0cyB2
YWx1ZS4KLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IGZpcnN0Q2hpbGQoKTsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgc3BsaXRGbG93KGJlZm9yZUNoaWxkLCBuZXdCb3gsIG5l
d0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0xODc4LDE2ICsxODMxLDYgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlckJsb2Nr
OjpjcmVhdGVSZXBsYWNlbWVudFJ1bkluKFJlbmRlckJveE1vZGVsT2JqZWN0KgogewogICAgIEFT
U0VSVChydW5Jbi0+aXNSdW5JbigpKTsKIAotICAgIC8vIEZpcnN0IHdlIGRlc3Ryb3kgYW55IDpi
ZWZvcmUvOmFmdGVyIGNvbnRlbnQuIEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgYnkgdGhlIG5ldyBy
dW4taW4uCi0gICAgLy8gRXhjZXB0aW9uIGlzIGlmIHRoZSBydW4taW4gaXRzZWxmIGlzIGdlbmVy
YXRlZC4KLSAgICBpZiAocnVuSW4tPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IEJFRk9SRSAmJiBy
dW5Jbi0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQUZURVIpIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBnZW5lcmF0ZWRDb250ZW50OwotICAgICAgICBpZiAocnVuSW4tPmdldENhY2hlZFBzZXVk
b1N0eWxlKEJFRk9SRSkgJiYgKGdlbmVyYXRlZENvbnRlbnQgPSBydW5Jbi0+YmVmb3JlUHNldWRv
RWxlbWVudFJlbmRlcmVyKCkpKQotICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudC0+ZGVzdHJv
eSgpOwotICAgICAgICBpZiAocnVuSW4tPmdldENhY2hlZFBzZXVkb1N0eWxlKEFGVEVSKSAmJiAo
Z2VuZXJhdGVkQ29udGVudCA9IHJ1bkluLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcigpKSkK
LSAgICAgICAgICAgIGdlbmVyYXRlZENvbnRlbnQtPmRlc3Ryb3koKTsKLSAgICB9Ci0KICAgICBi
b29sIG5ld1J1bkluU2hvdWxkQmVCbG9jayA9ICFydW5Jbi0+aXNSZW5kZXJCbG9jaygpOwogICAg
IE5vZGUqIHJ1bkluTm9kZSA9IHJ1bkluLT5ub2RlKCk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIG5ld1J1bkluID0gMDsKQEAgLTMyMzYsNyArMzE3OSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6
OnNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQmxvY2s6Omlz
U2VsZWN0aW9uUm9vdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKCkgfHwgaXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgaWYgKCFub25Qc2V1ZG9Ob2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGFibGVzIHNob3VsZCBoYXZlIHRv
IGxlYXJuIGhvdyB0byBmaWxsIGdhcHMgYmV0d2VlbiBjZWxscywgYXQgbGVhc3QgaW4gc2ltcGxl
IG5vbi1zcGFubmluZyBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
aW5kZXggYWQxNGEwMTI3NWNjYzQ3MTJlMGFiOGMxM2UzZDU1MjE1NzVjYmYwYS4uM2Y2YWYxYWRh
NzFiNmFjZTUwMjAwZTYxYTMxM2UwZDEwNDQzNzBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKQEAgLTU3Miw4ICs1NzIsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIGJvcmRlckZpdEFkanVzdChMYXlvdXRSZWN0JikgY29uc3Q7IC8vIFNocmluayB0aGUg
Ym94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFpbnRzIGlmIGJvcmRlci1maXQgaXMgc2V0LgogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCk7Ci0gICAg
CiAgICAgdmlydHVhbCBSb290SW5saW5lQm94KiBjcmVhdGVSb290SW5saW5lQm94KCk7IC8vIFN1
YmNsYXNzZWQgYnkgU1ZHIGFuZCBSdWJ5LgogCiAgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhl
IGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IDY5Y2VmMjkyMmFj
NzM1ZjA0MmQ3YjM5ZmUzYTYyZWVhYjcxNTk0MzkuLjI1N2ZlMWZhMDFmYjNhNjliYjg2MjgzZjI1
N2IwZjQ1Y2VhNWZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24u
Y3BwCkBAIC0xNTMsMTQgKzE1Myw2IEBAIGJvb2wgUmVuZGVyQnV0dG9uOjpjYW5IYXZlR2VuZXJh
dGVkQ2hpbGRyZW4oKSBjb25zdAogICAgIHJldHVybiAhbm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0
VGFnKTsKIH0KIAotdm9pZCBSZW5kZXJCdXR0b246OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQ
c2V1ZG9JZCB0eXBlKQotewotICAgIGlmIChtX2lubmVyKQotICAgICAgICBtX2lubmVyLT5jaGls
ZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQobV9pbm5lciwgdHlwZSwgdGhpcyk7Ci0g
ICAgZWxzZQotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQodGhp
cywgdHlwZSk7Ci19Ci0KIExheW91dFJlY3QgUmVuZGVyQnV0dG9uOjpjb250cm9sQ2xpcFJlY3Qo
Y29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gQ2xp
cCB0byB0aGUgcGFkZGluZyBib3ggdG8gYXQgbGVhc3QgZ2l2ZSBjb250ZW50IHRoZSBleHRyYSBw
YWRkaW5nIHNwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4
IDViZTYyYjAxMjY2MGY4MGZmOTdkZTNkNjkxNDNlZjFiYTI1ZjVjMmMuLmE3YWZiNWRjZmRlMmUz
Y2U3M2I0N2MyYWVhNTY0MWQ5ZDQ3NjE5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmgKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0dXBJbm5l
clN0eWxlKFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFBzZXVkb0lk
KTsKLQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBM
YXlvdXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCA1YThmYTI3OWFkN2RiMTU4NjY0ZTM4ODcxNjU2ZTkwMjZiYjI3YTViLi5hNjEy
Y2E1MWM5MzdmNDA5NWEwMDMxMjk1YWYxYjIzZjhjNjZlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDEsOCArNDEsNiBAQAogI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKIAotI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KLQogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNlbmRpZgpAQCAtMTcwLDE4ICsxNjgsMTEgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3QKICAgICAvLyBuZWVkIHRvIHBhc3MgaXRzIHN0eWxlIG9uIHRvIGFueW9uZSBlbHNlLgogICAg
IFJlbmRlclN0eWxlKiBuZXdTdHlsZSA9IHN0eWxlKCk7CiAgICAgUmVuZGVySW5saW5lKiBjb250
aW51YXRpb24gPSBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7Ci0gICAgewotICAgICAgICBU
ZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gZW5hYmxlQWZ0ZXIoUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojpz
X2VuYWJsZVVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCwgZmFsc2UpOwotICAgICAgICBSZW5kZXJJ
bmxpbmUqIG5leHRJbmxpbmVFbGVtZW50Q29udCA9IDA7Ci0gICAgICAgIGZvciAoUmVuZGVySW5s
aW5lKiBjdXJyQ29udCA9IGNvbnRpbnVhdGlvbjsgY3VyckNvbnQ7IGN1cnJDb250ID0gbmV4dElu
bGluZUVsZW1lbnRDb250KSB7Ci0gICAgICAgICAgICBuZXh0SW5saW5lRWxlbWVudENvbnQgPSBj
dXJyQ29udC0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwotICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byB1cGRhdGUgOmFmdGVyIGNvbnRlbnQgZm9yIHRoZSBsYXN0IGNvbnRpbnVhdGlvbiBp
biB0aGUgY2hhaW4uCi0gICAgICAgICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxl
VXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50ID0gIW5leHRJbmxpbmVFbGVtZW50Q29udDsKLSAgICAg
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51
YXRpb24oKTsKLSAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24oMCk7Ci0gICAg
ICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUobmV3U3R5bGUpOwotICAgICAgICAgICAgY3VyckNv
bnQtPnNldENvbnRpbnVhdGlvbihuZXh0Q29udCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlbmRl
cklubGluZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJyQ29udCA9IGN1
cnJDb250LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKKyAgICAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIG5leHRDb250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOworICAgICAg
ICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKDApOworICAgICAgICBjdXJyQ29udC0+c2V0U3R5
bGUobmV3U3R5bGUpOworICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG5leHRDb250
KTsKICAgICB9CiAKICAgICAvLyBJZiBhbiBpbmxpbmUncyBpbi1mbG93IHBvc2l0aW9uaW5nIGhh
cyBjaGFuZ2VkIHRoZW4gYW55IGRlc2NlbmRhbnQgYmxvY2tzIHdpbGwgbmVlZCB0byBjaGFuZ2Ug
dGhlaXIgaW4tZmxvdyBwb3NpdGlvbmluZyBhY2NvcmRpbmdseS4KQEAgLTIwMiwxMiArMTkzLDYg
QEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAgICAgICAgfQogICAgICAgICBtX2Fsd2F5c0Ny
ZWF0ZUxpbmVCb3hlcyA9IGFsd2F5c0NyZWF0ZUxpbmVCb3hlczsKICAgICB9Ci0KLSAgICAvLyBV
cGRhdGUgcHNldWRvcyBmb3IgOmJlZm9yZSBhbmQgOmFmdGVyIG5vdy4KLSAgICBpZiAoIWlzQW5v
bnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9y
ZUFmdGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNv
bnRlbnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVySW5saW5lOjp1
cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpAQCAtMzMwLDE2ICsz
MTUsNiBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihS
ZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogb2xkQ29udGludWF0aW9uID0gY29udGludWF0aW9uKCk7CiAgICAgICAgIHNldENvbnRp
bnVhdGlvbihuZXdCb3gpOwogCi0gICAgICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgcHV0IGEgPHA+
IGluc2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAgV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSA6
YWZ0ZXIgY29udGVudAotICAgICAgICAvLyBoYXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29u
dGludWF0aW9uLiAgQ2FsbCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQg
b3VyIDphZnRlcgotICAgICAgICAvLyBjb250ZW50IGdldHMgcHJvcGVybHkgZGVzdHJveWVkLgot
ICAgICAgICBib29sIGlzTGFzdENoaWxkID0gKGJlZm9yZUNoaWxkID09IGxhc3RDaGlsZCgpKTsK
LSAgICAgICAgaWYgKGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNCZWZv
cmVBZnRlclJ1bGVzKCkpCi0gICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRl
ckNvbnRlbnQodGhpcywgQUZURVIpOwotICAgICAgICBpZiAoaXNMYXN0Q2hpbGQgJiYgYmVmb3Jl
Q2hpbGQgIT0gbGFzdENoaWxkKCkpCi0gICAgICAgICAgICBiZWZvcmVDaGlsZCA9IDA7IC8vIFdl
IGRlc3Ryb3llZCB0aGUgbGFzdCBjaGlsZCwgc28gbm93IHdlIG5lZWQgdG8gdXBkYXRlIG91ciBp
bnNlcnRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgdG8gYmUgMC4g
IEl0J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVuZCBub3cuCi0KICAgICAgICAgc3BsaXRGbG93KGJl
Zm9yZUNoaWxkLCBuZXdCb3gsIG5ld0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDA2LDEyICszODEsNiBAQCB2b2lkIFJlbmRlcklubGluZTo6c3Bs
aXRJbmxpbmVzKFJlbmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAog
ICAgICAgICAgICAgaW5saW5lQ3Vyci0+c2V0Q29udGludWF0aW9uKGNsb25lSW5saW5lKTsKICAg
ICAgICAgICAgIGNsb25lSW5saW5lLT5zZXRDb250aW51YXRpb24ob2xkQ29udCk7CiAKLSAgICAg
ICAgICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3Bs
aXQuICBXaGVuIHRoaXMgaGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgICAgICAv
LyBoYXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29udGludWF0aW9uLiAgQ2FsbCB1cGRhdGVC
ZWZvcmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQgdGhlIGlubGluZSdzIDphZnRlcgotICAg
ICAgICAgICAgLy8gY29udGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAgICAgICAgICAg
IGlmIChkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJS
dWxlcygpKQotICAgICAgICAgICAgICAgIGlubGluZUN1cnItPmNoaWxkcmVuKCktPnVwZGF0ZUJl
Zm9yZUFmdGVyQ29udGVudChpbmxpbmVDdXJyLCBBRlRFUik7Ci0KICAgICAgICAgICAgIC8vIE5v
dyB3ZSBuZWVkIHRvIHRha2UgYWxsIG9mIHRoZSBjaGlsZHJlbiBzdGFydGluZyBmcm9tIHRoZSBm
aXJzdCBjaGlsZAogICAgICAgICAgICAgLy8gKmFmdGVyKiBjdXJyQ2hpbGQgYW5kIGFwcGVuZCB0
aGVtIGFsbCB0byB0aGUgY2xvbmUuCiAgICAgICAgICAgICBvID0gY3VyckNoaWxkLT5uZXh0U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5k
ZXggODRhNTc5NDYwOTBiNmJiMzYyNjc0ZTIwZGQ3M2VlMWRmMWU5YTU0Mi4uZDBiM2I5NTE3NGM3
MzZjNzAwNzAzOTg2NjEzMzliOGJmN2U4Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0yNjgsNyArMjY4LDYgQEAgdm9pZCBSZW5kZXJMaXN0
SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpb24oKQogICAgICAgICAgICAgaWYgKG1fbWFya2VyLT5w
cmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKICAgICAgICAgICAgICAgICBtX21hcmtlci0+
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICAgICAgICAgIC8vIElmIG1hcmtl
clBhciBpcyBhbiBhbm9ueW1vdXMgYmxvY2sgdGhhdCBoYXMgbG9zdCBhbGwgaXRzIGNoaWxkcmVu
LCBkZXN0cm95IGl0LgotICAgICAgICAgICAgLy8gRXh0cmFuZW91cyBhbm9ueW1vdXMgYmxvY2tz
IGNhbiBjYXVzZSBwcm9ibGVtcyBmb3IgUmVuZGVyQmxvY2s6OnVwZGF0ZUJlZm9yZUFmdGVyQ29u
dGVudC4KICAgICAgICAgICAgIGlmIChtYXJrZXJQYXIgJiYgbWFya2VyUGFyLT5pc0Fub255bW91
c0Jsb2NrKCkgJiYgIW1hcmtlclBhci0+Zmlyc3RDaGlsZCgpICYmICF0b1JlbmRlckJsb2NrKG1h
cmtlclBhciktPmNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgICAgIG1hcmtlclBhci0+ZGVz
dHJveSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDIwYTE5MTYyYjc0MTU4YzFhNTVhNTYzNzg1ZDk4NGFhZjViMmEzNWQuLjk3MDNi
MTViYjMzZjM5MGQwZjg1MWEzZThkYjBiNGVhYjE0ZDg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yOTk1LDggKzI5OTUsNyBAQCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzZXRQYXJlbnQoKSBjb25zdAogVmlzaWJsZVBv
c2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVB
ZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgbm9uLWFub255bW91cyBy
ZW5kZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0J3Mgc2ltcGxlLgotICAgIGlmIChu
b2RlKCkgJiYgIWlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSB0aGlz
LT5ub2RlKCk7CisgICAgaWYgKE5vZGUqIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAg
ICAgaWYgKCFub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkgewogICAgICAgICAgICAgLy8gSWYg
aXQgY2FuIGJlIGZvdW5kLCB3ZSBwcmVmZXIgYSB2aXN1YWxseSBlcXVpdmFsZW50IHBvc2l0aW9u
IHRoYXQgaXMgZWRpdGFibGUuIAogICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KTsKQEAgLTMwMjIsOCArMzAyMSw4
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihp
bnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91
cyBjb250ZW50IGFmdGVyLgogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQ7
CiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXIocGFy
ZW50KSkpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICYmICFyZW5kZXJlci0+
aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocmVuZGVyZXItPm5vZGUoKSksIERPV05TVFJF
QU0pOworICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJlZm9yZS4KQEAgLTMwMzEsMTMgKzMwMzAs
MTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9u
KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgd2hpbGUgKChyZW5kZXJlciA9
IHJlbmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAo
cmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9k
ZShyZW5kZXJlci0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBpZiAoTm9kZSog
bm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RS
RUFNKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVzZSB0aGUgcGFyZW50IGl0c2VsZiB1bmxl
c3MgaXQgdG9vIGlzIGFub255bW91cy4KLSAgICAgICAgaWYgKHBhcmVudC0+bm9kZSgpICYmICFp
c1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmly
c3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudC0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7Cisg
ICAgICAgIGlmIChOb2RlKiBub2RlID0gcGFyZW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShu
b2RlKSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0IGxldmVs
IHVwLgogICAgICAgICBjaGlsZCA9IHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCBjZTQxMjJlODYxYjNiYWU2NDFjYmJmZmYyNzNhMWVkOTEzMjRhOTNm
Li44YTc4NmY3OGE3OWNjNWNlZWEwYmE1Yjg0MWI3ZTBhOWE1NmMzOWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MjMsMTcgKzYyMywxNSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAwKSBjb25zdDsKIAogICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gMCA6IG1fbm9kZTsgfQorICAg
IE5vZGUqIG5vblBzZXVkb05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/
IDAgOiBub2RlKCk7IH0KKworICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBSZW5kZXJXaWRnZXQgbmVl
ZCB0aGlzPworICAgIHZvaWQgY2xlYXJOb2RlKCkgeyBtX25vZGUgPSAwOyB9CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlz
IHJlbmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3Ig
cmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBm
b3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJh
dGluZ05vZGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIG5vZGUoKS0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgICAgICBy
ZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOwotICAgIH0KLSAgICB2b2lk
IHNldE5vZGUoTm9kZSogbm9kZSkgeyBtX25vZGUgPSBub2RlOyB9CisgICAgTm9kZSogZ2VuZXJh
dGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFy
ZW50T3JIb3N0Tm9kZSgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX25vZGUtPmRvY3VtZW50KCk7IH0KICAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDIwMmNjMzZiMzE1
NDU0ZjVhMmZlMDA0ZGYwNGMwMmRmYjdlYTkyZjUuLmUyNzI0YmY2ZjU2Mzk2ODIyOTFmZTY5M2Yx
NTAwMWU1NDNlZTAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxlVXBkYXRlQmVmb3Jl
QWZ0ZXJDb250ZW50ID0gdHJ1ZTsKLQogdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmRlc3Ry
b3lMZWZ0b3ZlckNoaWxkcmVuKCkKIHsKICAgICB3aGlsZSAoZmlyc3RDaGlsZCgpKSB7CkBAIC0x
ODcsMjMgKzE4NSw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNlcnRDaGlsZE5v
ZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjCiAgICAgICAgIG93bmVyLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChvd25lcik7CiB9CiAK
LXN0YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRCZWZvcmVBZnRlclBhcmVudChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICAvLyBPbmx5IHRhYmxlIHBhcnRzIGFuZCBmbGV4LWJveGVzIG5lZWQg
dG8gc2VhcmNoIGZvciB0aGUgOmJlZm9yZSBvciA6YWZ0ZXIgcGFyZW50Ci0gICAgLy8gRklYTUU6
IFdlIGNvdWxkIGxpa2VseSBnZXQgYXdheSB3aXRob3V0IHRoaXMgY2hlY2sgYW5kIGFsd2F5cyBs
b29rIGZvciB0aGUgcmlnaHQgcGFyZW50LgotICAgIGlmICghKG9iamVjdC0+aXNUYWJsZSgpIHx8
IG9iamVjdC0+aXNUYWJsZVNlY3Rpb24oKSB8fCBvYmplY3QtPmlzVGFibGVSb3coKSB8fCBvYmpl
Y3QtPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkpKQotICAgICAgICByZXR1cm4g
b2JqZWN0OwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSA6Zmlyc3QtbGV0dGVyIHN0eWxlIGFwcGxp
ZWQgb24gdGhlIDpiZWZvcmUgb3IgOmFmdGVyIGNvbnRlbnQsCi0gICAgLy8gdGhlbiB3ZSB3YW50
IHRoZSBwYXJlbnQgb2YgdGhlIGZpcnN0LWxldHRlciBibG9jawotICAgIFJlbmRlck9iamVjdCog
YmVmb3JlQWZ0ZXJQYXJlbnQgPSBvYmplY3Q7Ci0gICAgd2hpbGUgKGJlZm9yZUFmdGVyUGFyZW50
ICYmICEoYmVmb3JlQWZ0ZXJQYXJlbnQtPmlzVGV4dCgpIHx8IGJlZm9yZUFmdGVyUGFyZW50LT5p
c0ltYWdlKCkpCi0gICAgICAgICYmIChiZWZvcmVBZnRlclBhcmVudC0+c3R5bGUoKS0+c3R5bGVU
eXBlKCkgIT0gRklSU1RfTEVUVEVSKSkKLSAgICAgICAgYmVmb3JlQWZ0ZXJQYXJlbnQgPSBiZWZv
cmVBZnRlclBhcmVudC0+Zmlyc3RDaGlsZCgpOwotCi0gICAgcmV0dXJuIGJlZm9yZUFmdGVyUGFy
ZW50ID8gYmVmb3JlQWZ0ZXJQYXJlbnQtPnBhcmVudCgpIDogMDsKLX0KLQogUmVuZGVyT2JqZWN0
KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdAogewogICAgIC8vIEFuIGFub255bW91cyAoZ2Vu
ZXJhdGVkKSBpbmxpbmUgcnVuLWluIHRoYXQgaGFzIFBzZXVkb0lkIEJFRk9SRSBtdXN0IGNvbWUg
ZnJvbSBhIGdyYW5kcGFyZW50LgpAQCAtMjUwLDIwMyArMjMxLDQgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamUKICAgICByZXR1cm4gbGFzdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OnVwZGF0ZUJlZm9yZUFmdGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUHNldWRvSWQg
dHlwZSwgUmVuZGVyU3R5bGUqIHBzZXVkb0VsZW1lbnRTdHlsZSkKLXsKLSAgICBpZiAoIWNoaWxk
IHx8IGNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSB0eXBlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBXZSBoYXZlIGdlbmVyYXRlZCBjb250ZW50IHByZXNlbnQgc3RpbGwuIFdlIHdh
bnQgdG8gd2FsayB0aGlzIGNvbnRlbnQgYW5kIHVwZGF0ZSBvdXIKLSAgICAvLyBzdHlsZSBpbmZv
cm1hdGlvbiB3aXRoIHRoZSBuZXcgcHNldWRvLWVsZW1lbnQgc3R5bGUuCi0gICAgY2hpbGQtPnNl
dFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGJlZm9yZUFm
dGVyUGFyZW50ID0gZmluZEJlZm9yZUFmdGVyUGFyZW50KGNoaWxkKTsKLSAgICBpZiAoIWJlZm9y
ZUFmdGVyUGFyZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXaGVuIGJlZm9yZUFmdGVy
UGFyZW50IGlzIG5vdCBlcXVhbCB0byBjaGlsZCAoZS5nLiBpbiB0YWJsZXMpLAotICAgIC8vIHdl
IG5lZWQgdG8gY3JlYXRlIG5ldyBzdHlsZXMgaW5oZXJpdGluZyBmcm9tIHBzZXVkb0VsZW1lbnRT
dHlsZQotICAgIC8vIG9uIGFsbCB0aGUgaW50ZXJtZWRpYXRlIHBhcmVudHMgKGxlYXZpbmcgdGhl
aXIgZGlzcGxheSBzYW1lKS4KLSAgICBpZiAoYmVmb3JlQWZ0ZXJQYXJlbnQgIT0gY2hpbGQpIHsK
LSAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gYmVmb3JlQWZ0ZXJQYXJlbnQ7Ci0gICAgICAg
IHdoaWxlIChjdXJyICYmIGN1cnIgIT0gY2hpbGQpIHsKLSAgICAgICAgICAgIEFTU0VSVChjdXJy
LT5pc0Fub255bW91cygpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+aW5oZXJp
dEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIG5ld1N0eWxlLT5zZXREaXNw
bGF5KGN1cnItPnN0eWxlKCktPmRpc3BsYXkoKSk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0
U3R5bGVUeXBlKGN1cnItPnN0eWxlKCktPnN0eWxlVHlwZSgpKTsKLSAgICAgICAgICAgIGN1cnIt
PnNldFN0eWxlKG5ld1N0eWxlKTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSBldmVyIHN1cHBvcnQg
YWRkaXRpb25hbCB0eXBlcyBvZiBnZW5lcmF0ZWQgY29udGVudCAod2hpY2ggc2hvdWxkIGJlIHdh
eSBvZmYKLSAgICAvLyBpbiB0aGUgZnV0dXJlKSwgdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBiZSBw
YXRjaGVkLgotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGJlZm9yZUFmdGVyUGFy
ZW50LT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICAv
LyBHZW5lcmF0ZWQgdGV4dCBjb250ZW50IGlzIGEgY2hpbGQgd2hvc2Ugc3R5bGUgYWxzbyBuZWVk
cyB0byBiZSBzZXQgdG8gdGhlIHBzZXVkby1lbGVtZW50IHN0eWxlLgotICAgICAgICAgICAgZ2Vu
Q2hpbGQtPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgIGVsc2UgaWYgKGdl
bkNoaWxkLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIEltYWdlcyBnZXQgYW4gZW1wdHkg
c3R5bGUgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBwc2V1ZG8uCi0gICAgICAgICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
c3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBnZW5D
aGlsZC0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFJlbmRlckxpc3RJdGVtIG1heSBpbnNlcnQgYSBsaXN0IG1hcmtlciBoZXJlLiBX
ZSBkbyBub3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMgY2FzZS4KLSAgICAgICAgICAgIC8vIE90
aGVyd2lzZSwgZ2VuQ2hpbGQgbXVzdCBiZSBhIGZpcnN0LWxldHRlciBjb250YWluZXIuIHVwZGF0
ZUZpcnN0TGV0dGVyKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCi0gICAgICAgICAgICBBU1NFUlQo
Z2VuQ2hpbGQtPmlzTGlzdE1hcmtlcigpIHx8IGdlbkNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBGSVJTVF9MRVRURVIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgUmVuZGVy
T2JqZWN0KiBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG93bmVyLCBQ
c2V1ZG9JZCB0eXBlLCBSZW5kZXJTdHlsZSogcHNldWRvRWxlbWVudFN0eWxlLCBOb2RlKiBnZW5l
cmF0aW5nTm9kZSwgUmVuZGVyT2JqZWN0KiBpbnNlcnRCZWZvcmUpCi17Ci0gICAgLy8gTWFrZSBh
IGdlbmVyYXRlZCBib3ggdGhhdCBtaWdodCBiZSBhbnkgZGlzcGxheSB0eXBlIG5vdyB0aGF0IHdl
IGFyZSBhYmxlIHRvIGRyaWxsIGRvd24gaW50byBjaGlsZHJlbgotICAgIC8vIHRvIGZpbmQgdGhl
IG9yaWdpbmFsIGNvbnRlbnQgcHJvcGVybHkuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRD
b250ZW50Q29udGFpbmVyID0gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qob3duZXItPmRvY3Vt
ZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgQVNTRVJUKGdlbmVyYXRpbmdOb2RlKTsg
Ly8gVGhlIHN0eWxlZCBvYmplY3QgY2Fubm90IGJlIGFub255bW91cyBvciBlbHNlIGl0IGNvdWxk
IG5vdCBoYXZlICc6YmVmb3JlJyBvciAnOmFmdGVyJyBwc2V1ZG8gZWxlbWVudHMuCi0gICAgZ2Vu
ZXJhdGVkQ29udGVudENvbnRhaW5lci0+c2V0Tm9kZShnZW5lcmF0aW5nTm9kZSk7IC8vIFRoaXMg
YWxsb3dzIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGluZ05vZGUuCi0gICAgZ2VuZXJhdGVkQ29udGVu
dENvbnRhaW5lci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICBpZiAoIW93bmVy
LT5pc0NoaWxkQWxsb3dlZChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLCBwc2V1ZG9FbGVtZW50
U3R5bGUpKSB7Ci0gICAgICAgIC8vIFRoZSBnZW5lcmF0ZWQgY29udGVudCBjb250YWluZXIgaXMg
bm90IGFsbG93ZWQgaGVyZSAtPiBhYm9ydC4KLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRh
aW5lci0+ZGVzdHJveSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBXaGVu
IHdlIGRvbid0IGhhdmUgYSBmaXJzdCBjaGlsZCBhbmQgYXJlIHBhcnQgb2YgYSBjb250aW51YXRp
b24gY2hhaW4sCi0gICAgLy8gaW5zZXJ0QmVmb3JlIGlzIGluY29ycmVjdGx5IHNldCB0byB6ZXJv
IGFib3ZlLCB3aGljaCBjYXVzZXMgdGhlIDpiZWZvcmUKLSAgICAvLyBjaGlsZCB0byBlbmQgdXAg
YXQgdGhlIGVuZCBvZiBjb250aW51YXRpb24gY2hhaW4uCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4MC4KLSAgICBpZiAoIWluc2VydEJlZm9y
ZSAmJiB0eXBlID09IEJFRk9SRSAmJiBvd25lci0+dmlydHVhbENvbnRpbnVhdGlvbigpKQotICAg
ICAgICBvd25lci0+YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihnZW5lcmF0ZWRDb250ZW50
Q29udGFpbmVyLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIG93bmVyLT5hZGRDaGlsZChnZW5lcmF0
ZWRDb250ZW50Q29udGFpbmVyLCBpbnNlcnRCZWZvcmUpOwotCi0gICAgcmV0dXJuIGdlbmVyYXRl
ZENvbnRlbnRDb250YWluZXI7Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRh
dGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QpCi17Ci0gICAgLy8gRG91YmxlIGNoZWNr
IHRoYXQgdGhlIGRvY3VtZW50IGRpZCBpbiBmYWN0IHVzZSBnZW5lcmF0ZWQgY29udGVudCBydWxl
cy4gIE90aGVyd2lzZSB3ZSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCi0gICAgQVNTRVJU
KG93bmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0
ZXJSdWxlcygpKTsKLQotICAgIC8vIEluIENTUzIsIGJlZm9yZS9hZnRlciBwc2V1ZG8tY29udGVu
dCBjYW5ub3QgbmVzdC4gIENoZWNrIHRoaXMgZmlyc3QuCi0gICAgaWYgKG93bmVyLT5zdHlsZSgp
LT5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgb3duZXItPnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IEFGVEVSKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFzX2VuYWJsZVVwZGF0ZUJlZm9yZUFm
dGVyQ29udGVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghc3R5bGVkT2JqZWN0
KQotICAgICAgICBzdHlsZWRPYmplY3QgPSBvd25lcjsKLQotICAgIFJlbmRlclN0eWxlKiBwc2V1
ZG9FbGVtZW50U3R5bGUgPSBzdHlsZWRPYmplY3QtPmdldENhY2hlZFBzZXVkb1N0eWxlKHR5cGUp
OwotICAgIFJlbmRlck9iamVjdCogY2hpbGQ7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBCRUZPUkU6Ci0gICAgICAgIGNoaWxkID0gYmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKG93
bmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBRlRFUjoKLSAgICAgICAgY2hpbGQgPSBh
ZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcihvd25lcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gV2hldGhlciBvciBub3Qgd2UgY3VycmVudGx5IGhhdmUgZ2VuZXJhdGVk
IGNvbnRlbnQgYXR0YWNoZWQuCi0gICAgYm9vbCBvbGRDb250ZW50UHJlc2VudCA9IGNoaWxkOwot
Ci0gICAgLy8gV2hldGhlciBvciBub3Qgd2Ugbm93IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQuCi0g
ICAgYm9vbCBuZXdDb250ZW50V2FudGVkID0gcHNldWRvRWxlbWVudFN0eWxlICYmIHBzZXVkb0Vs
ZW1lbnRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7Ci0KLSAgICAvLyBGb3IgPHE+PHAvPjwvcT4s
IGlmIHRoaXMgb2JqZWN0IGlzIHRoZSBpbmxpbmUgY29udGludWF0aW9uIG9mIHRoZSA8cT4sIHdl
IG9ubHkgd2FudCB0byBnZW5lcmF0ZQotICAgIC8vIDphZnRlciBjb250ZW50IGFuZCBub3QgOmJl
Zm9yZSBjb250ZW50LgotICAgIGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQkVGT1JF
ICYmIG93bmVyLT5pc0VsZW1lbnRDb250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdh
bnRlZCA9IGZhbHNlOwotCi0gICAgLy8gU2ltaWxhcmx5LCBpZiB3ZSdyZSB0aGUgYmVnaW5uaW5n
IG9mIGEgPHE+LCBhbmQgdGhlcmUncyBhbiBpbmxpbmUgY29udGludWF0aW9uIGZvciBvdXIgb2Jq
ZWN0LAotICAgIC8vIHRoZW4gd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlIDphZnRlciBjb250ZW50Lgot
ICAgIGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQUZURVIgJiYgb3duZXItPnZpcnR1
YWxDb250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdhbnRlZCA9IGZhbHNlOwotICAg
IAotICAgIC8vIElmIHdlIGRvbid0IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQgYW55IGxvbmdlciwg
b3IgaWYgd2UgaGF2ZSBnZW5lcmF0ZWQgY29udGVudCwgYnV0IGl0J3Mgbm8gbG9uZ2VyCi0gICAg
Ly8gaWRlbnRpY2FsIHRvIHRoZSBuZXcgY29udGVudCBkYXRhIHdlIHdhbnQgdG8gYnVpbGQgcmVu
ZGVyIG9iamVjdHMgZm9yLCB0aGVuIHdlIG51a2UgYWxsCi0gICAgLy8gb2YgdGhlIG9sZCBnZW5l
cmF0ZWQgY29udGVudC4KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQgJiYgKCFuZXdDb250ZW50
V2FudGVkIHx8IE5vZGU6OmRpZmYoY2hpbGQtPnN0eWxlKCksIHBzZXVkb0VsZW1lbnRTdHlsZSwg
b3duZXItPmRvY3VtZW50KCkpID09IE5vZGU6OkRldGFjaCkpIHsKLSAgICAgICAgLy8gTnVrZSB0
aGUgY2hpbGQuIAotICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5
cGUpIHsKLSAgICAgICAgICAgIG9sZENvbnRlbnRQcmVzZW50ID0gZmFsc2U7Ci0gICAgICAgICAg
ICBjaGlsZC0+ZGVzdHJveSgpOwotICAgICAgICAgICAgY2hpbGQgPSAodHlwZSA9PSBCRUZPUkUp
ID8gb3duZXItPnZpcnR1YWxDaGlsZHJlbigpLT5maXJzdENoaWxkKCkgOiBvd25lci0+dmlydHVh
bENoaWxkcmVuKCktPmxhc3RDaGlsZCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYg
d2UgaGF2ZSBubyBwc2V1ZG8tZWxlbWVudCBzdHlsZSBvciBpZiB0aGUgcHNldWRvLWVsZW1lbnQg
c3R5bGUncyBkaXNwbGF5IHR5cGUgaXMgTk9ORSwgdGhlbiB3ZQotICAgIC8vIGhhdmUgbm8gZ2Vu
ZXJhdGVkIGNvbnRlbnQgYW5kIGNhbiBub3cgcmV0dXJuLgotICAgIGlmICghbmV3Q29udGVudFdh
bnRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG93bmVyLT5pc1JlbmRlcklubGluZSgp
ICYmICFwc2V1ZG9FbGVtZW50U3R5bGUtPmlzRGlzcGxheUlubGluZVR5cGUoKSAmJiAhcHNldWRv
RWxlbWVudFN0eWxlLT5pc0Zsb2F0aW5nKCkgJiYKLSAgICAgICAgIXBzZXVkb0VsZW1lbnRTdHls
ZS0+aGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKLSAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBD
U1MyIHNwZWMgKHRoZSBlbmQgb2Ygc2VjdGlvbiAxMi4xKSwgdGhlIG9ubHkgYWxsb3dlZAotICAg
ICAgICAvLyBkaXNwbGF5IHZhbHVlcyBmb3IgdGhlIHBzZXVkbyBzdHlsZSBhcmUgTk9ORSBhbmQg
SU5MSU5FIGZvciBpbmxpbmUgZmxvd3MuCi0gICAgICAgIC8vIEZJWE1FOiBDU1MyLjEgbGlmdGVk
IHRoaXMgcmVzdHJpY3Rpb24sIGJ1dCBibG9jayBkaXNwbGF5IHR5cGVzIHdpbGwgY3Jhc2guCi0g
ICAgICAgIC8vIEZvciBub3cgd2UgYXQgbGVhc3QgcmVsYXggdGhlIHJlc3RyaWN0aW9uIHRvIGFs
bG93IGFsbCBpbmxpbmUgdHlwZXMgbGlrZSBpbmxpbmUtYmxvY2sKLSAgICAgICAgLy8gYW5kIGlu
bGluZS10YWJsZS4KLSAgICAgICAgcHNldWRvRWxlbWVudFN0eWxlLT5zZXREaXNwbGF5KElOTElO
RSk7Ci0KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQpIHsKLSAgICAgICAgdXBkYXRlQmVmb3Jl
QWZ0ZXJTdHlsZShjaGlsZCwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgcmV0
dXJuOyAvLyBXZSd2ZSB1cGRhdGVkIHRoZSBnZW5lcmF0ZWQgY29udGVudC4gVGhhdCdzIGFsbCB3
ZSBuZWVkZWQgdG8gZG8uCi0gICAgfQotICAgIAotICAgIFJlbmRlck9iamVjdCogaW5zZXJ0QmVm
b3JlID0gKHR5cGUgPT0gQkVGT1JFKSA/IG93bmVyLT52aXJ0dWFsQ2hpbGRyZW4oKS0+Zmlyc3RD
aGlsZCgpIDogMDsKLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2VydEJlZm9yZS0+aXNBbm9u
eW1vdXNCbG9jaygpICYmIGluc2VydEJlZm9yZS0+Y2hpbGRyZW5JbmxpbmUoKSAmJiAhaW5zZXJ0
QmVmb3JlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIGFkZCB0aGUg
ImJlZm9yZSIgZWxlbWVudC4gV2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSAiaW5zZXJ0QmVm
b3JlIiBlbGVtZW50Ci0gICAgICAgIC8vIGlzIGFuIGFub255bW91cyBibG9jayB3aXRoIGlubGlu
ZSBjaGlsZHJlbi4gSWYgaXQgaXMsIHRoZW4gd2Ugc2hvdWxkIGluc2VydCB0aGUgImJlZm9yZSIg
ZWxlbWVudAotICAgICAgICAvLyBiZWZvcmUgdGhlIGZpcnN0IGlubGluZSBjaGlsZCBvZiB0aGUg
YW5vbnltb3VzIGJsb2NrLCBvdGhlcndpc2Ugd2Ugd2lsbCBlbmQgdXAgd2l0aCB0aGUgImJlZm9y
ZSIKLSAgICAgICAgLy8gZWxlbWVudCBpbiBhIGRpZmZlcmVudCBibG9jay4gV2UgZG8gdGhpcyBv
bmx5IHdoZW4gdGhlIGFub255bW91cyBibG9jayBoYXMgY2hpbGRyZW4sIG90aGVyd2lzZQotICAg
ICAgICAvLyB3ZSBlbmQgdXAgd2l0aCB0aGUgYmVmb3JlIGVsZW1lbnQgaW4gYSB3cm9uZyBibG9j
ay4KLSAgICAgICAgaW5zZXJ0QmVmb3JlID0gaW5zZXJ0QmVmb3JlLT5maXJzdENoaWxkKCk7Ci0g
ICAgfQotCi0gICAgLy8gTm90aGluZyBnb2VzIGJlZm9yZSB0aGUgaW50cnVkZWQgcnVuLWluLCBu
b3QgZXZlbiBnZW5lcmF0ZWQgY29udGVudC4KLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2Vy
dEJlZm9yZS0+aXNSdW5JbigpICYmIG93bmVyLT5pc1JlbmRlckJsb2NrKCkKLSAgICAgICAgJiYg
dG9SZW5kZXJCbG9jayhvd25lciktPnJ1bkluSXNQbGFjZWRJbnRvU2libGluZ0Jsb2NrKGluc2Vy
dEJlZm9yZSkpCi0gICAgICAgIGluc2VydEJlZm9yZSA9IGluc2VydEJlZm9yZS0+bmV4dFNpYmxp
bmcoKTsKLQotICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGNv
bnRhaW5lciB0aGF0IGhvdXNlcyBtdWx0aXBsZSBjaGlsZHJlbiAoc3BlY2lmaWVkCi0gICAgLy8g
YnkgdGhlIGNvbnRlbnQgcHJvcGVydHkpLiBUaGlzIGdlbmVyYXRlZCBjb250ZW50IGNvbnRhaW5l
ciBnZXRzIHRoZSBwc2V1ZG8tZWxlbWVudCBzdHlsZSBzZXQgb24gaXQuCi0gICAgLy8gRm9yIHBz
ZXVkby1lbGVtZW50cyB0aGF0IGFyZSByZWdpb25zLCB0aGUgY29udGFpbmVyIGlzIHRoZSBSZW5k
ZXJSZWdpb24uCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyID0g
MDsKLQotICAgIGlmICghcHNldWRvRWxlbWVudFN0eWxlLT5yZWdpb25UaHJlYWQoKS5pc0VtcHR5
KCkpCi0gICAgICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRl
ckNvbnRhaW5lcihvd25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3Qt
Pm5vZGUoKSwgaW5zZXJ0QmVmb3JlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2FsayBvdXIg
bGlzdCBvZiBnZW5lcmF0ZWQgY29udGVudCBhbmQgY3JlYXRlIHJlbmRlciBvYmplY3RzIGZvciBl
YWNoLgotICAgICAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50ID0gcHNldWRvRWxl
bWVudFN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4
dCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29udGVudC0+Y3Jl
YXRlUmVuZGVyZXIob3duZXItPmRvY3VtZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAg
ICAgICAgICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikgewotICAgICAgICAgICAg
ICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5l
cihvd25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3QtPm5vZGUoKSwg
aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENvbnRlbnRDb250
YWluZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLT5pc0NoaWxkQWxsb3dl
ZChyZW5kZXJlciwgcHNldWRvRWxlbWVudFN0eWxlKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0
ZWRDb250ZW50Q29udGFpbmVyLT5hZGRDaGlsZChyZW5kZXJlcik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gSGFuZGxlIHBsYWNlbWVudCBvZiBydW4taW5zLiBXZSBkbyB0aGUgcnVuLWluIHBs
YWNlbWVudCBhdCB0aGUgZW5kIHNpbmNlIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgY2FuIGdl
dCBkZXN0cm95ZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
SW1tZWRpYXRlUGFyZW50ID0gZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+cGFyZW50KCk7Ci0g
ICAgaWYgKGdlbmVyYXRlZENvbnRlbnRDb250YWluZXJJbW1lZGlhdGVQYXJlbnQtPmlzUmVuZGVy
QmxvY2soKSkKLSAgICAgICAgdG9SZW5kZXJCbG9jayhnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
SW1tZWRpYXRlUGFyZW50KS0+cGxhY2VSdW5JbklmTmVlZGVkKGdlbmVyYXRlZENvbnRlbnRDb250
YWluZXIsIFBsYWNlR2VuZXJhdGVkUnVuSW4pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgK
aW5kZXggM2Y2MDZkYjhkMzY4YzIwNmYyYTM5MTMwMjNjODNkMTZkY2U4Y2YyYS4uYjYzZjI0MmRl
MWJmZjk5NTkzMDI5NDdjZDhjMGIzMWYzZThmNjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaApAQCAtMjYsNyArMjYsNiBAQAogI2lm
bmRlZiBSZW5kZXJPYmplY3RDaGlsZExpc3RfaAogI2RlZmluZSBSZW5kZXJPYmplY3RDaGlsZExp
c3RfaAogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NiwxNiArNTUsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRl
ck9iamVjdCosIGJvb2wgbm90aWZ5UmVuZGVyZXIgPSB0cnVlKTsKICAgICB2b2lkIGluc2VydENo
aWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZSwgYm9vbCBub3RpZnlSZW5kZXJlciA9IHRydWUpOwogCi0gICAgdm9pZCB1
cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlw
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QgPSAwKTsKICAgICBSZW5kZXJPYmpl
Y3QqIGJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVy
KSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIGFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogb3duZXIpIGNvbnN0OwogCi1wdWJsaWM6Ci0gICAgc3RhdGljIGJv
b2wgc19lbmFibGVVcGRhdGVCZWZvcmVBZnRlckNvbnRlbnQ7Ci0KIHByaXZhdGU6Ci0gICAgdm9p
ZCB1cGRhdGVCZWZvcmVBZnRlclN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQsIFBzZXVkb0lkIHR5
cGUsIFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50U3R5bGUpOwotCiAgICAgUmVuZGVyT2JqZWN0
KiBtX2ZpcnN0Q2hpbGQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2xhc3RDaGlsZDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAppbmRleCBlOTc2NWYyOGQy
MzJhMjhmZTQ3ZGRhZmUyMzQ1ZGM0Yjc4NzEzMmUzLi5iZTgzMTNiY2I4MzVmMWZiZGI3MjBkOGJl
ZDU4MzRlMzM3YjdjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHAKQEAgLTg4LDE1ICs4OCw0IEBAIGJvb2wgUmVuZGVyUnVieVRleHQ6OmF2b2lkc0Zs
b2F0cygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVyUnVieVRleHQ6
OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAgICAvLyBS
ZW5kZXJSdWJ5VGV4dCBtYW5hZ2VzIGl0cyBvd24gOmJlZm9yZSBhbmQgOmFmdGVyIGNvbnRlbnQK
LSAgICAvLyBhbmQgaXMgbm90IGhhbmRsZWQgYnkgaXRzIGFub255bW91cyB3cmFwcGVycyBSZW5k
ZXJSdWJ5UnVuCi0gICAgLy8gYW5kIFJlbmRlclJ1YnkuIFRoaXMgY29udHJhc3RzIHdpdGggb3Ro
ZXIgcnVieSBjaGlsZHJlbiwgd2hpY2gKLSAgICAvLyBhcmUgZW5jbG9zZWQgaW4gUmVuZGVyUnVi
eUJhc2UgYW5kIGhlbmNlIHRoZXkgYXJlIGFibGUgdG8KLSAgICAvLyB1cGRhdGUgdGhlaXIgOmJl
Zm9yZSwgOmFmdGVyIGNvbnRlbnQgKHNpbmNlIFJlbmRlclJ1YnlCYXNlCi0gICAgLy8gaXMgbm90
IGEgYW5vbnltb3VzIHdyYXBwZXIpLgotICAgIHJldHVybiBjaGlsZHJlbigpLT51cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQodGhpcywgcHNldWRvSWQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCmluZGV4IGY0NzMw
NGNjZGZmZGU5M2EzYmI0YWNiMzA2MDAzZGE0NWRiZjc0MzguLjNhNjc5MjY5ZjY3ZGEwNWZjYWJj
Yzg3MGUwYTRmNzQ4ODA0NTFhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCkBAIC00Niw4ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCk7Ci0KIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCA0NDM2MGZmNzQyY2Y0MjBk
NjhiMDkyOWY4NGM2M2QzNTI1ZjI4MzQzLi4wYTVhYTI5MWNkOGRhNDFhMzJjOTQxZjc3NTBlYWE4
NWMyZTM5ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAKQEAgLTU0LDE0ICs1NCw2IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OndpbGxCZVJlbW92ZWRG
cm9tVHJlZSgpCiAgICAgc2VjdGlvbigpLT5zZXROZWVkc0NlbGxSZWNhbGMoKTsKIH0KIAotdm9p
ZCBSZW5kZXJUYWJsZVJvdzo6dXBkYXRlQmVmb3JlQW5kQWZ0ZXJDb250ZW50KCkKLXsKLSAgICBp
ZiAoIWlzQW5vbnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+
dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRl
QmVmb3JlQWZ0ZXJDb250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVuZGVy
VGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlKCktPmRpc3BsYXkoKSA9PSBU
QUJMRV9ST1cpOwpAQCAtNjksOSArNjEsNiBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAg
IFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHByb3BhZ2F0
ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOwogCi0gICAgaWYgKHBhcmVudCgpKQotICAgICAg
ICB1cGRhdGVCZWZvcmVBbmRBZnRlckNvbnRlbnQoKTsKLQogICAgIGlmIChzZWN0aW9uKCkgJiYg
b2xkU3R5bGUgJiYgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpICE9IG9sZFN0eWxlLT5sb2dpY2Fs
SGVpZ2h0KCkpCiAgICAgICAgIHNlY3Rpb24oKS0+cm93TG9naWNhbEhlaWdodENoYW5nZWQocm93
SW5kZXgoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5k
ZXggMTFkZTRmMWJkYWJjZTZlMzY0ZmNiN2ZjMjU5MmFlMWUzNDZkMjQ5MS4uNDQwNWFhMTRlYzAz
ODBiZjYyNWYyMWQyN2FiNDUyMGM1NDgxM2Y0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogc2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGVTZWN0aW9u
KHBhcmVudCgpKTsgfQogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRv
UmVuZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCZWZv
cmVBbmRBZnRlckNvbnRlbnQoKTsKICAgICB2b2lkIHBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVk
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBzdGF0aWMgUmVuZGVyVGFi
bGVSb3cqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKaW5kZXggZGQ2ZjQyZjBmMTIzYzE1ZTI1MWMzNDZkYzM3YzRkOGE3MThiMjlkMy4uMTA3YWZm
MTEzNjUwNjY5ODczZWZlYWRmYTVhN2ZiMjQ5MmE1NjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNiBAQCB2
b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZAogCiAgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBiZWZv
cmVDaGlsZC0+aXNUYWJsZVJvdygpKTsKICAgICBSZW5kZXJCb3g6OmFkZENoaWxkKGNoaWxkLCBi
ZWZvcmVDaGlsZCk7Ci0gICAgdG9SZW5kZXJUYWJsZVJvdyhjaGlsZCktPnVwZGF0ZUJlZm9yZUFu
ZEFmdGVyQ29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6ZW5zdXJlUm93
cyh1bnNpZ25lZCBudW1Sb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAppbmRleCA5Nzc3NTFhNzM2ODY0NTRlZjhhZWEyM2UwYTc5YTU3Nzg2NGNmMWE0Li41ODhl
OTYzNTM2ODU5NDEzMjJiZjRlMTc1ODU4OWY0NjMzZWVlMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVuZGVy
V2lkZ2V0OjpkZXN0cm95KCkKICAgICAvLyBHcmFiIHRoZSBhcmVuYSBmcm9tIG5vZGUoKS0+ZG9j
dW1lbnQoKS0+cmVuZGVyQXJlbmEoKSBiZWZvcmUgY2xlYXJpbmcgdGhlIG5vZGUgcG9pbnRlci4K
ICAgICAvLyBDbGVhciB0aGUgbm9kZSBiZWZvcmUgZGVyZWYtaW5nLCBhcyB0aGlzIG1heSBiZSBk
ZWxldGVkIHdoZW4gZGVyZWYgaXMgY2FsbGVkLgogICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJl
bmRlckFyZW5hKCk7Ci0gICAgc2V0Tm9kZSgwKTsKKyAgICBjbGVhck5vZGUoKTsKICAgICBkZXJl
ZihhcmVuYSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzQ5OTUxYTE2ZDliNTA3ZGI4MjJjMGEyOTQyMDE4ZDRi
Nzg1ODBiLi5lOTcyMjNlNTJjMGJhNDk0NjczMDEyM2MyZGVmMzc4ZTUwNzI5Zjc4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMTItMTAgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU3dpdGNoIHRvIG5ldyBQc2V1ZG9FbGVtZW50IGJhc2VkIDpi
ZWZvcmUgYW5kIDphZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3QgZm9yIGJsb2NrIGdlbmVyYXRlZCBjb250ZW50IGluc2lkZSBpbmxp
bmVzIHdoaWNoIGlzIG5vdyBzdXBwb3J0ZWQKKyAgICAgICAgcHJvcGVybHksIGFuZCBhbHNvIGZv
ciB1c2luZyBib3gtb3JpZW50IGFuZCByZW9yZGVyaW5nLgorCisgICAgICAgIGJlZm9yZS1jb250
ZW50LWNvbnRpbnVhdGlvbi5odG1sJ3MgZXhwZWN0YXRpb25zIGNoYW5nZSBiZWNhdXNlIHdlIG5v
dworICAgICAgICBzdXBwb3J0IGJsb2NrIGNvbnRlbnQgcHJvcGVybHkuCisKKyAgICAgICAgSSBh
bHNvIHNraXBwZWQgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGFibGUtcm93LWdyb3VwLXRv
LWlubGluZS5odG1sCisgICAgICAgIHdoaWNoIG5lZWRzIGEgcmViYXNlbGluZSBhZnRlciB0aGlz
IHRoaXMgbGFuZHMuIFVuZm9ydHVuYXRlbHkgdGhlIHRlc3QKKyAgICAgICAgb3V0cHV0IGlzIHN0
aWxsIHdyb25nIGJlY2F1c2Ugd2UgbGVhdmUgYW4gYW5vbnltb3VzIFJlbmRlclRhYmxlIGluIHRo
ZQorICAgICAgICB0cmVlLCBidXQgdGhhdCBidWcgaGFzIGFsd2F5cyBiZWVuIHRoZXJlLgorCisg
ICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmVmb3JlLWNvbnRlbnQtY29udGlu
dWF0aW9uLWNoYWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWluc2lkZS1pbmxpbmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYm94LW9yaWVudC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVu
dC9ib3gtb3JpZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6
CisKIDIwMTItMTItMTAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFN1cHBvcnQgZm9yIENTUyB3aWRvd3MgYW5kIG9ycGhhbnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JlZm9yZS1jb250ZW50LWNvbnRpbnVhdGlv
bi1jaGFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29u
dGVudC9iZWZvcmUtY29udGVudC1jb250aW51YXRpb24tY2hhaW4tZXhwZWN0ZWQudHh0CmluZGV4
IDA0OTNhYTE2MjA5ZDY5M2U5ZmE5MmM1OGY1YmRmYWZhMjM5YWU4MjguLmUwOWExZDM5OTNlZGNk
Y2FjODY1MzdhMzcyY2JiOGRhNjgyMjM5N2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L2JlZm9yZS1jb250ZW50LWNvbnRpbnVhdGlvbi1jaGFpbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
YmVmb3JlLWNvbnRlbnQtY29udGludWF0aW9uLWNoYWluLWV4cGVjdGVkLnR4dApAQCAtMywxNiAr
MywxNiBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDQxNgogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NDE2CiAgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NDAwCisgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgwCisgICAgICAgIFJlbmRlcklubGluZSB7
U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAgW2NvbG9yPSMwMDgwMDBdCiAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgyMDAKLSAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDIwMHgyMDAgW2NvbG9yPSMwMDgwMDBdCi0gICAgICAgICAg
UmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgMjAweDIwMCBbY29sb3I9IzAw
MDBGRl0KLSAgICAgICAgICAgIFJlbmRlclRleHQgYXQgKDAsMCkgc2l6ZSAyMDB4MjAwCi0gICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwMDogIkEiCi0gICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMDApIHNpemUgNzg0eDAKLSAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVu
ZGVyQmxvY2sgKGdlbmVyYXRlZCkgYXQgKDAsMCkgc2l6ZSA3ODR4MjAwIFtjb2xvcj0jMDAwMEZG
XQorICAgICAgICAgIFJlbmRlclRleHQgYXQgKDAsMCkgc2l6ZSAyMDB4MjAwCisgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDA6ICJBIgorICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwyMDApIHNpemUgNzg0eDAgW2NvbG9yPSMwMDgwMDBdCiAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMDApIHNpemUgNzg0eDIwMAogICAgICAgICBSZW5kZXJJ
bmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjAweDIwMCBbY29sb3I9IzAwODAwMF0KICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMDB4MjAwCiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDA6ICJCIgogICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4
MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWluc2lkZS1pbmxpbmUtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWluc2lkZS1p
bmxpbmUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWJiYmQ1Nzk0MDU2YWFjZGE1OGQ1NDIy
ZTdiN2QwNGJlZTEwOGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvYmxvY2staW5zaWRlLWlubGluZS1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzcGFuPgorICAgIDxkaXY+U2hvdWxkIGJl
IG9uIGl0J3Mgb3duIGxpbmUsIDwvZGl2PgorICAgIGFuZCB0aGlzIHRvby4KKzwvc3Bhbj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWlu
c2lkZS1pbmxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L2Jsb2NrLWluc2lkZS1pbmxpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDBhMTZhNjM4ZWFhZmM1NzVj
NjQ5YzJiMzQ3NTNhNjI4OTg1MDY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmxvY2staW5zaWRlLWlubGluZS5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c3R5bGU+CitzcGFuOmJlZm9yZSB7CisgIGRp
c3BsYXk6IGJsb2NrOworICBjb250ZW50OiAiU2hvdWxkIGJlIG9uIGl0J3Mgb3duIGxpbmUsICI7
Cit9Cis8L3N0eWxlPgorCis8c3Bhbj5hbmQgdGhpcyB0b28uPC9zcGFuPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYm94LW9yaWVudC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYm94LW9yaWVu
dC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMDNjZmNhMmUyNDFkNjYwZGNhMTdmNjc5YjRi
NGUwOGZlNWJmODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5l
cmF0ZWQtY29udGVudC9ib3gtb3JpZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMSBAQAor
PCFET0NUWVBFIGh0bWw+CisKKzxzdHlsZT4KKy5iZWZvcmUgeworICBiYWNrZ3JvdW5kOnJlZDsK
K30KKzwvc3R5bGU+CisKKzxoMT5Ob3JtYWw8L2gxPgorPGRpdj4KKyAgPGRpdiBjbGFzcz0iYmVm
b3JlIj5CZWZvcmUgY29udGVudDwvZGl2PgorICA8ZGl2PjFzdCBpbiBjb2RlIC0gMW5kIGluIG9y
ZGVyPC9kaXY+CisgIDxkaXY+Mm5kIGluIGNvZGUgLSAybmQgaW4gb3JkZXI8L2Rpdj4KKzwvZGl2
PgorCis8aDE+UmVvcmRlcmVkPC9oMT4KKzxkaXY+CisgIDxkaXYgY2xhc3M9ImJlZm9yZSI+QmVm
b3JlIGNvbnRlbnQ8L2Rpdj4KKyAgPGRpdj4ybmQgaW4gY29kZSAtIDFzdCBpbiBvcmRlcjwvZGl2
PgorICA8ZGl2PjFzdCBpbiBjb2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NzU1ZTBmMWY2NjM0N2VlMzkyZWE0ZTM0YTgwYWIyYmFhYWFmNjBi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvYm94LW9yaWVudC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8
c3R5bGU+CisuY29udGFpbmVyIHsKKyAgZGlzcGxheTogYm94OworICBkaXNwbGF5OiAtbW96LWJv
eDsKKyAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgIGJveC1vcmllbnQ6IHZlcnRpY2FsOworICAt
bW96LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2Fs
OworfQorCisuY29udGFpbmVyOmJlZm9yZSB7CisgIGRpc3BsYXk6IGJsb2NrOworICBjb250ZW50
OiAiQmVmb3JlIGNvbnRlbnQiOworICBiYWNrZ3JvdW5kOnJlZDsKK30KKworLmMxbzIgeworICAg
IC1tb3otYm94LW9yZGluYWwtZ3JvdXA6IDI7CisgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91
cDogMjsgCisgICAgYm94LW9yZGluYWwtZ3JvdXA6IDI7Cit9CisKKy5jMm8xIHsKKyAgICAtbW96
LWJveC1vcmRpbmFsLWdyb3VwOiAxOworICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDE7
IAorICAgIGJveC1vcmRpbmFsLWdyb3VwOiAxOworfQorPC9zdHlsZT4KKworPGgxPk5vcm1hbDwv
aDE+Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICA8ZGl2PjFzdCBpbiBjb2RlIC0gMW5kIGlu
IG9yZGVyPC9kaXY+CisgIDxkaXY+Mm5kIGluIGNvZGUgLSAybmQgaW4gb3JkZXI8L2Rpdj4KKzwv
ZGl2PgorCis8aDE+UmVvcmRlcmVkPC9oMT4KKzxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgIDxk
aXYgY2xhc3M9ImMxbzIiPjFzdCBpbiBjb2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+CisgIDxkaXYg
Y2xhc3M9ImMybzEiPjJuZCBpbiBjb2RlIC0gMXN0IGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI0
NDk3MGQyNmE5OTJiYjVhYTQ5N2ZlYTYwNDcxZmFmNDlmN2MwMGIuLjQ2N2ZhYmZhNDEzYmMyMDhj
MDhiMzBlYjI2NDhiODM1NjhkZTM2OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzkyNCw2ICszOTI0LDkgQEAgd2Via2l0Lm9yZy9i
LzExNjQ1IFsgTWFjIEFuZHJvaWQgXSBmYXN0L3RhYmxlLzAyNS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTAxMTc3IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVXNlRWxlbWVudC1kb20t
cmVxdWlyZWRGZWF0dXJlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5v
cmcvYi8xMDExNzcgc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCiAKKyMgTmVlZHMgcmViYXNlbGluZSBhZnRlciBidWcgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ2Mgord2Via2l0Lm9yZy9i
Lzk4Njg3IGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3RhYmxlLXJvdy1ncm91cC10by1pbmxp
bmUuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCisKICMgVGhlc2UgYXJlIHJlYWwgZmFpbHVlcyBkdWUg
dG8gOTUxMjEuCiAjIFRoaXMgaXMgc3BpbGxpbmcgY2F1c2VkIGJ5IExBTkNaT1MzIHNjYWxpbmcg
YWxnb3JpdGhtIHRoYXQgc2FtcGxlcyBvdXRzaWRlIHRoZSBzb3VyY2UgcmVjdC4KIHdlYmtpdC5v
cmcvYi85NTEyMSBbIFdpbiBNYWMgQW5kcm9pZCBdIGZhc3QvaW1hZ2VzL3BpeGVsLWNyYWNrLWlt
YWdlLWJhY2tncm91bmQtd2Via2l0LXRyYW5zZm9ybS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI3
MjhkMTQ4OThhODAwNTcwN2I5YThiZWNkYTk0OGVhNmEyMzQ1ZjQuLmRkMjY4MjRiNTI5NzY2YTE0
OTEyMDg4YmI3M2NiNzM2ODRiMjIzYzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMTUzLDYgKzExNTMsOSBAQCB3ZWJraXQub3JnL2IvOTA5NTEgZmFz
dC90ZXh0L3NoYXBpbmcKIHdlYmtpdC5vcmcvYi8xMDExNzcgc3ZnL2R5bmFtaWMtdXBkYXRlcy9T
VkdVc2VFbGVtZW50LWRvbS1yZXF1aXJlZEZlYXR1cmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzEwMTE3NyBzdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdl
LXZpZXdCb3guc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAorIyBOZWVkcyByZWJhc2Vs
aW5lIGFmdGVyIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
NDYyCit3ZWJraXQub3JnL2IvOTg2ODcgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGFibGUt
cm93LWdyb3VwLXRvLWlubGluZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KKwogd2Via2l0Lm9yZy9i
LzkzMjQ3IFsgRGVidWcgXSBmYXN0L2xpc3RzL2xpc3QtbWFya2VyLXJlbW92ZS1jcmFzaC5odG1s
IFsgQ3Jhc2ggXQogCiAjIChyMTI0NDg0KSBpbnNwZWN0b3IvZGV2aWNlLW9yaWVudGF0aW9uLXN1
Y2Nlc3MuaHRtbCBmYWlsaW5nIG9uIE1hYyBwb3J0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178634</attachid>
            <date>2012-12-10 14:34:48 -0800</date>
            <delta_ts>2012-12-10 21:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104462-20121210143210.patch</filename>
            <type>text/plain</type>
            <size>63239</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU5ZmY5NzQzMzc3NGE0
ODg1OWE3OTAyNWRkODkwYzgyNjQxYzg5OC4uZmEzZjE1ZTRiNDQ0NmU1NGZkMDU5N2VmZTNkMWE5
ODljNmEwNGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTEwICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCB0byBu
ZXcgUHNldWRvRWxlbWVudCBiYXNlZCA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB0aGUgbmV3IFBzZXVk
b0VsZW1lbnQgYmFzZWQgZ2VuZXJhdGVkIGNvbnRlbnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
dGhhdCBtb3ZlcyA6YmVmb3JlIGFuZCA6YWZ0ZXIgaW50byB0aGUgRE9NLiBUaGlzIGFsc28gc3dp
dGNoZXMgdG8gdXNpbmcKKyAgICAgICAgdGhlIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBmb3Ig
ZGV0ZXJtaW5pbmcgdGhlIHNpYmxpbmdzIG9mIFBzZXVkb0VsZW1lbnQncworICAgICAgICBtYWtp
bmcgdGhlIG5ldyBnZW5lcmF0ZWQgY29udGVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0IGFkZGlu
ZyA6YmVmb3JlCisgICAgICAgIGFuZCA6YWZ0ZXIgaW50byA8aW5wdXQ+IGVsZW1lbnRzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5s
aW5lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1v
cmllbnQuaHRtbAorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJl
TmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgor
ICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVS
ZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQp
OgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dpY2FsbHlQcmV2aW91c0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsbHlOZXh0
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJh
Z2dhYmxlTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6c3BsaXRCbG9ja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmFkZENoaWxkSWdub3JpbmdBbm9ueW1vdXNDb2x1bW5CbG9ja3MpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZVJlcGxhY2VtZW50UnVuSW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oOgorICAgICAgICAoUmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29u
dGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6c3BsaXRJbmxpbmVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEl0ZW06OnVwZGF0ZU1hcmtlckxvY2F0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5vblBzZXVkb05vZGUpOgor
ICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2VuZXJhdGluZ05v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKyAgICAgICAgKFJlbmRl
ck9iamVjdENoaWxkTGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaDoKKyAgICAgICAgKFJlbmRl
clJ1YnlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6
YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpkZXN0cm95KToKKwogMjAxMi0xMi0xMCAgTWFyayBQ
aWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXVtXaW5d
IFJlbW92ZSB0aGVtZS1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBh
OWJlOTUzNzY5MmU1ZmRlMDUzMGJjMDYwMTc2ZmY1MzBhOTNmMWY3Li4xMjQ4NmE5MTdhOWUzNmNk
ODQzNmZjYzY5YTZiMDQ2ZWNhNjY3OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhU
TUxDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTgwLDYgKzE4MSw0NiBAQCB2b2lkIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKCkKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9u
KCk7CiB9CiAKK3ZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZU5leHRT
aWJsaW5nKCkKK3sKKyAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKKworICAgIGNvbnN0IE5vZGUq
IG5vZGUgPSBtX25vZGU7CisKKyAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlRmlyc3RDaGlsZCh0cmF2ZXJzZVBhcmVudChub2Rl
KSk7CisgICAgZWxzZQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0lu
c2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOworCisgICAgaWYg
KCFtX25vZGUgJiYgIW5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgTm9k
ZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgICAgIGlmIChwYXJlbnQgJiYg
cGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBtX25vZGUgPSB0b0VsZW1lbnQo
cGFyZW50KS0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CisgICAgfQorCisgICAgYXNzZXJ0UG9zdGNv
bmRpdGlvbigpOworfQorCit2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKQoreworICAgIGFzc2VydFByZWNvbmRpdGlvbigpOworCisgICAg
Y29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRv
RWxlbWVudCgpKQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZUxhc3RDaGlsZCh0cmF2ZXJzZVBh
cmVudChub2RlKSk7CisgICAgZWxzZQorICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdP
ckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsK
KworICAgIGlmICghbV9ub2RlICYmICFub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewor
ICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICAgICAgaWYg
KHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIG1fbm9kZSA9
IHRvRWxlbWVudChwYXJlbnQpLT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgfQorCisgICAg
YXNzZXJ0UG9zdGNvbmRpdGlvbigpOworfQorCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OnRyYXZlcnNlRGlzdHJpYnV0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdCBJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgZm9yIChjb25zdCBOb2RlKiBuZXh0ID0gbm9kZTsgbmV4dDsgbmV4dCA9IChkaXJl
Y3Rpb24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGluc2VydGlvblBvaW50LT5uZXh0
VG8obmV4dCkgOiBpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNUbyhuZXh0KSkpIHsKQEAgLTI1OCw2
ICsyOTksOSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cGFyZW50KCkKIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQxNQogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJl
bnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogeworICAgIGlmIChub2RlLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsK
KwogICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkgJiYgbm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKICAgICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgpKTsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmgKaW5kZXggODk3NjliMTcyMzQyZGQ0YTE4YzU5N2U1YzZhZTI0ZDFlODBkMmRj
MS4uNGI2ZmY5NTZhNDUxOWI4ZDYwMjQ4MzFmMjc1ODhhNjRjNGFhOWQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtOTAsNiArOTAsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBuZXh0U2libGluZygpOwogICAgIHZvaWQgcHJldmlvdXNTaWJs
aW5nKCk7CiAKKyAgICB2b2lkIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsKKyAgICB2b2lkIHBz
ZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7CisKICAgICB2b2lkIHBhcmVudCgpOwogCiAgICAg
dm9pZCBuZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNjI3ZTk4MTNiZmQ3ZjkyOTg5
ZjcxYTM4MTNmNGEyMTUzMjMzM2YzMi4uODlkZjkxYjg5MGFlODRiZTk0YTBkMDc5OTljOGM2OWEw
ZTlhMjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTE2OSw2ICsxMTY5LDggQEAgdm9p
ZCBFbGVtZW50OjphdHRhY2goKQogICAgIGlmIChwYXJlbnRFbGVtZW50KCkgJiYgcGFyZW50RWxl
bWVudCgpLT5pc0luQ2FudmFzU3VidHJlZSgpKQogICAgICAgICBzZXRJc0luQ2FudmFzU3VidHJl
ZSh0cnVlKTsKIAorICAgIHVwZGF0ZVBzZXVkb0VsZW1lbnQoQkVGT1JFKTsKKwogICAgIC8vIFdo
ZW4gYSBzaGFkb3cgcm9vdCBleGlzdHMsIGl0IGRvZXMgdGhlIHdvcmsgb2YgYXR0YWNoaW5nIHRo
ZSBjaGlsZHJlbi4KICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdGhpcy0+c2hhZG93
KCkpIHsKICAgICAgICAgcGFyZW50UHVzaGVyLnB1c2goKTsKQEAgLTExNzgsNiArMTE4MCw4IEBA
IHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIAogICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwog
CisgICAgdXBkYXRlUHNldWRvRWxlbWVudChBRlRFUik7CisKICAgICBpZiAoaGFzUmFyZURhdGEo
KSkgeyAgIAogICAgICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEo
KTsKICAgICAgICAgaWYgKGRhdGEtPm5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVy
QXR0YWNoKCkpIHsKQEAgLTEzMzAsNiArMTMzNCw4IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICB9CiAgICAgfQogCisgICAgdXBkYXRlUHNl
dWRvRWxlbWVudChCRUZPUkUsIGNoYW5nZSk7CisKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBp
cyBnb29kIGVub3VnaCBmb3IgOmhvdmVyICsgZm9vLCBidXQgaXQgaXMgbm90IGdvb2QgZW5vdWdo
IGZvciA6aG92ZXIgKyBmb28gKyBiYXIuCiAgICAgLy8gRm9yIG5vdyB3ZSB3aWxsIGp1c3Qgd29y
cnkgYWJvdXQgdGhlIGNvbW1vbiBjYXNlLCBzaW5jZSBpdCdzIGEgbG90IHRyaWNraWVyIHRvIGdl
dCB0aGUgc2Vjb25kIGNhc2UgcmlnaHQKICAgICAvLyB3aXRob3V0IGRvaW5nIHdheSB0b28gbXVj
aCByZS1yZXNvbHV0aW9uLgpAQCAtMTM1NCw2ICsxMzYwLDggQEAgdm9pZCBFbGVtZW50OjpyZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIGZvcmNlQ2hlY2tPZkFueUVsZW1l
bnRTaWJsaW5nID0gZm9yY2VDaGVja09mQW55RWxlbWVudFNpYmxpbmcgfHwgKGNoaWxkUnVsZXND
aGFuZ2VkICYmIGhhc0luZGlyZWN0QWRqYWNlbnRSdWxlcyk7CiAgICAgfQogCisgICAgdXBkYXRl
UHNldWRvRWxlbWVudChBRlRFUiwgY2hhbmdlKTsKKwogICAgIGNsZWFyTmVlZHNTdHlsZVJlY2Fs
YygpOwogICAgIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggYmQ5MzkzY2M4OTM1NzMwOTIyZTk5MzkzMDEwNTA4ZGVhYTNlMTQyOC4uN2RmMzdi
YzI0NzQ3Zjk5ZDU2Zjg5NDMwOGNiMDVhYTg3N2M1ZTY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDaGls
ZE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkNvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKQEAgLTQ0NywzNCArNDQ4LDYgQEAgdm9pZCBOb2RlOjpzZXRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiBzY29wZSkKICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUo
c2NvcGUpOwogfQogCi1Ob2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNv
bnN0Ci17Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkpIHsK
LSAgICAgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpOwotICAgICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoaXNBZnRl
clBzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnQtPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+bGFzdENoaWxkKCk7Ci0gICAgICAgIGlmICghaXNCZWZvcmVQc2V1ZG9FbGVt
ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7
Ci0gICAgfQotICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmcoKTsKLX0KLQotTm9kZSogTm9kZTo6
cHNldWRvQXdhcmVOZXh0U2libGluZygpIGNvbnN0Ci17Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUo
KSAmJiAhbmV4dFNpYmxpbmcoKSkgewotICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRP
ckhvc3RFbGVtZW50KCk7Ci0gICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIGlmIChpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnQtPmZpcnN0
Q2hpbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAg
ICAgaWYgKCFpc0FmdGVyUHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7Ci0gICAgfQotICAgIHJldHVybiBuZXh0U2libGluZygp
OwotfQotCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaGFzUmFyZURhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjOTUxYzcyMzg3OTE3YmUyMDIzOTI4
ZTZlY2Q0MmRhYTA5MmRmMDNmLi4xNjBjMjgzYzY5M2VlMTY5YTVjNzA0YTVhZWVmMGQ5N2E5YWYx
ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE5MCw5ICsxOTAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNBdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzKCkgY29u
c3Q7CiAKLSAgICBOb2RlKiBwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0OwotICAg
IE5vZGUqIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgS1VS
TCBiYXNlVVJJKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDQ2NDZjZDg0YTNkOWMwYjY2YmYzMjAzMzZiZDUxMzk5NTljNGE0
YzcuLjJjODlhODhkOWZkNDg2YWJjMTEwNzY5ZGQ2OWQ1ZDE3ZjU5MTI0ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsOSArMzIsMTEgQEAK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNoYWRv
d0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTgzLDE3ICs4NSw4IEBA
IFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0
CiAgICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0YWlscy5ub2Rl
KCktPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gRklYTUU6IFRoaXMg
aXMgd3Jvbmcgd2hlbiB0aGUgbmV4dCBzaWJsaW5nIHdhcyBhY3R1YWxseSBtb3ZlZCBhcm91bmQg
Ynkgc2hhZG93IGluc2VydGlvbiBwb2ludHMuCi0gICAgaWYgKG1fbm9kZS0+aXNQc2V1ZG9FbGVt
ZW50KCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBzaWJsaW5nID0gbV9ub2RlLT5wc2V1ZG9Bd2Fy
ZU5leHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wc2V1ZG9Bd2FyZU5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
c2libGluZy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLm5leHRTaWJsaW5nKCk7
IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKHdhbGtlci5w
c2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3YXJl
TmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdh
bGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBl
bGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1
c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5k
ZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKQEAgLTExMCwxMCArMTAzLDYg
QEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigp
IGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBtZXRob2QgZG9lc24ndCBzdXBwb3J0IHBzZXVkbyBlbGVtZW50cyBzaW5j
ZSBub3RoaW5nIG5lZWRzCi0gICAgLy8gcHJldmlvdXNSZW5kZXJlcigpIHN1cHBvcnQgZm9yIHRo
ZW0geWV0LgotICAgIEFTU0VSVCghbV9ub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7Ci0KICAgICBp
ZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5k
ZXJlci0+cHJldmlvdXNSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKIApAQCAtMTIxLDcgKzExMCw3
IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIo
KSBjb25zdAogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNldmVyYWwg
dGVzdHMgZmFpbGVkLgogCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25v
ZGUpOwotICAgIGZvciAod2Fsa2VyLnByZXZpb3VzU2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdh
bGtlci5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgIGZvciAod2Fsa2VyLnBzZXVkb0F3YXJlUHJl
dmlvdXNTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3YXJlUHJldmlvdXNT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIu
Z2V0KCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVu
dHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRo
ZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5u
b2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXIt
PnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCkBAIC0yMzUsNyArMjI0LDcgQEAgdm9p
ZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50SWZOZWVkZWQo
KQogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRl
cmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSB0aGlzLT5uZXh0UmVuZGVy
ZXIoKTsKLQorICAgIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBpZiAoZWxlbWVu
dC0+aXNJblRvcExheWVyKCkpCiAgICAgICAgIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5
ZXJFbGVtZW50KGVsZW1lbnQsIHBhcmVudFJlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggYTFjMGIwMWUxMDI0MjUzMTZhNjY5MzM0ZTMyZGU0MzQyODE0
YjJlMS4uMDU4MWE4OGMxNzQwYTRjYzFkZDA2MzgzNTM4ZTNmNmI2ZDIzNjE5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNz
UmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIExlZ2FjeUVkaXRpbmdPZmZzZXQgb2Zmc2V0KQogI2Vs
c2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jv
b3QoKSk7CiAjZW5kaWYKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSk7CiB9CiAKIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRy
PE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKQEAgLTEwMiw2ICsxMDMs
OCBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNo
b3JUeXBlIGFuY2hvclR5cGUpCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9k
ZSB8fCAhbV9hbmNob3JOb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7CisKICAgICBBU1NFUlQoYW5j
aG9yVHlwZSAhPSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAgIEFTU0VSVCghKChhbmNo
b3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0
aW9uSXNBZnRlckNoaWxkcmVuKQogICAgICAgICAmJiAobV9hbmNob3JOb2RlLT5pc1RleHROb2Rl
KCkgfHwgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0x
MjAsNiArMTIzLDggQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9y
Tm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXAKICAgICBBU1NFUlQoIW1fYW5j
aG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwg
IW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSk7CisKICAgICBB
U1NFUlQoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBAIC04
NDAsNyArODQ1LDcgQEAgYm9vbCBQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNj
ZW5kYW50c1dpdGhIZWlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXIKIHsKICAgICBSZW5kZXJPYmpl
Y3QqIHN0b3AgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXJBZnRlckNoaWxkcmVuKCk7CiAgICAg
Zm9yIChSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBvICYmIG8gIT0g
c3RvcDsgbyA9IG8tPm5leHRJblByZU9yZGVyKCkpCi0gICAgICAgIGlmIChvLT5ub2RlKCkgJiYg
IW8tPm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKG8tPm5vblBzZXVk
b05vZGUoKSkgewogICAgICAgICAgICAgaWYgKChvLT5pc1RleHQoKSAmJiB0b1JlbmRlclRleHQo
byktPmxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKSkgfHwKICAgICAgICAgICAgICAgICAoby0+
aXNCb3goKSAmJiB0b1JlbmRlckJveChvKS0+Ym9yZGVyQm91bmRpbmdCb3goKS5oZWlnaHQoKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAppbmRleCAyYjZlOTQ4MDNhYzc5ZTYxOGQ0MzM5NWJjODUyNjk4NGJjNTdl
OGVhLi4yODY4OTRiN2IxNzg1YzkxMGU4ZTJlZDU1OTE5NTQwNTNiNThhNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTIxNCw4ICsyMTQsOCBAQCBzdGF0
aWMgY29uc3QgSW5saW5lVGV4dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUAogICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CiAKICAgICB3
aGlsZSAoMSkgewotICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIo
KSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAwOwotICAgICAgICBpZiAoIXN0YXJ0
Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICBOb2RlKiBzdGFy
dE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIoKSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub25Q
c2V1ZG9Ob2RlKCkgOiAwOworICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gcHJldmlvdXNSb290SW5saW5lQm94
Q2FuZGlkYXRlUG9zaXRpb24oc3RhcnROb2RlLCB2aXNpYmxlUG9zaXRpb24sIENvbnRlbnRJc0Vk
aXRhYmxlKTsKQEAgLTI1NSw4ICsyNTUsOCBAQCBzdGF0aWMgY29uc3QgSW5saW5lVGV4dEJveCog
bG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdAogICAg
ICAgICByZXR1cm4gbmV4dEJveDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIE5vZGUqIHN0
YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5v
ZGUoKSA6IDA7Ci0gICAgICAgIGlmICghc3RhcnROb2RlIHx8IHN0YXJ0Tm9kZS0+aXNQc2V1ZG9F
bGVtZW50KCkpCisgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJlcigp
ID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vblBzZXVkb05vZGUoKSA6IDA7CisgICAgICAgIGlm
ICghc3RhcnROb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9z
aXRpb24gPSBuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlz
aWJsZVBvc2l0aW9uLCBDb250ZW50SXNFZGl0YWJsZSk7CkBAIC03NDMsOCArNzQzLDggQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGlmICghc3RhcnRSZW5kZXJlcikKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAgIHN0
YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChzdGFydE5v
ZGUgJiYgIXN0YXJ0Tm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICBzdGFydE5v
ZGUgPSBzdGFydFJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCk7CisgICAgICAgICAgICBpZiAoc3Rh
cnROb2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBzdGFydEJveCA9
IHN0YXJ0Qm94LT5uZXh0TGVhZkNoaWxkKCk7CkBAIC04MTUsOCArODE1LDggQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBMaW5lRW5kcG9pbnQKICAgICAgICAgICAgIGlmICghZW5kUmVuZGVyZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0gICAgICAgICAgICBlbmROb2RlID0g
ZW5kUmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgICAgIGlmIChlbmROb2RlICYmICFlbmROb2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGVuZE5vZGUgPSBlbmRSZW5kZXJlci0+
bm9uUHNldWRvTm9kZSgpOworICAgICAgICAgICAgaWYgKGVuZE5vZGUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGVuZEJveCA9IGVuZEJveC0+cHJl
dkxlYWZDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA3OGJjNmU5NDg2N2VmZjQzODkzMDdiYjFlMjM5NjM1ZDA3
MTk5NTg1Li5iNzI1ZjJhNzVhOWE4ODYxMTgxZmUzZDUzMzQyYjNiNDQwNTg0N2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtNjUsNiArNjUsMTAgQEAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6On5IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudCgpCiAKIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxk
Q29udGV4dCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGZvcmNlIHRoZSBw
c2V1ZG8gZWxlbWVudHMgZG93biBpbnRvIHRoZSBzaGFkb3csIGJ1dAorICAgIC8vIHRoaXMgcGVy
c2VydmVzIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIFdlYktpdC4KKyAgICBpZiAoY2hpbGRDb250
ZXh0Lm5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29u
dGV4dCk7CiAgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5pc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5
KCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDNhMGRkMTZkMjZhYzIwOTY0YzlkYjk1Y2RhYWZkMjI4YWFlZTg5ZTYuLjZl
MTNlNGVhNWI4YTk0YzQyYjk0MzI2YjVkZmMzMGY3ZmRlNDJmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02MjUsNyArNjI1LDcgQEAgTm9kZSogRHJhZ0NvbnRy
b2xsZXI6OmRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqIHNyYywgTm9kZSogc3RhcnROb2RlLCBj
b25zdCBJbnQKICAgICBzdGF0ZS5tX2RyYWdUeXBlID0gKHNyYy0+c2VsZWN0aW9uKCktPmNvbnRh
aW5zKGRyYWdPcmlnaW4pKSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNl
QWN0aW9uTm9uZTsKIAogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0
YXJ0Tm9kZS0+cmVuZGVyZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBO
b2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKICAgICAgICAgaWYgKCFub2Rl
KQogICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3QgY29ycmVzcG9u
ZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQogICAgICAgICAgICAg
Ly8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3YTQ0NGY5OTRhMGYyZWExMmI5
YzBkNWZhYjNmZmNmY2IwMDE0YjdhLi5jZDZkODhmODBkZTc3YzdhOGY4N2ZkYTU2NmI0ODA1YmU0
Njk5ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM0
NCwxMiArMzQ0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICBwcm9wYWdhdGVTdHls
ZVRvQW5vbnltb3VzQ2hpbGRyZW4odHJ1ZSk7ICAgIAogICAgIG1fbGluZUhlaWdodCA9IC0xOwog
Ci0gICAgLy8gVXBkYXRlIHBzZXVkb3MgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBub3cuCi0gICAg
aWYgKCFpc0Fub255bW91cygpICYmIGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkt
PnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkgJiYgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpIHsK
LSAgICAgICAgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KEJFRk9SRSk7Ci0gICAgICAgIHVwZGF0
ZUJlZm9yZUFmdGVyQ29udGVudChBRlRFUik7Ci0gICAgfQotCiAgICAgLy8gQWZ0ZXIgb3VyIHN0
eWxlIGNoYW5nZWQsIGlmIHdlIGxvc2Ugb3VyIGFiaWxpdHkgdG8gcHJvcGFnYXRlIGZsb2F0cyBp
bnRvIG5leHQgc2libGluZwogICAgIC8vIGJsb2NrcywgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgdGhl
IHRvcCBtb3N0IHBhcmVudCBjb250YWluaW5nIHRoYXQgb3ZlcmhhbmdpbmcgZmxvYXQgYW5kCiAg
ICAgLy8gdGhlbiBtYXJrIGl0cyBkZXNjZW5kYW50cyB3aXRoIGZsb2F0cyBmb3IgbGF5b3V0IGFu
ZCBjbGVhciBhbGwgZmxvYXRzIGZyb20gaXRzIG5leHQKQEAgLTM4MSwxNCArMzc1LDYgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0
ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAgICAvLyBJZiB0aGlz
IGlzIGFuIGFub255bW91cyB3cmFwcGVyLCB0aGVuIHRoZSBwYXJlbnQgYXBwbGllcyBpdHMgb3du
IHBzZXVkby1lbGVtZW50IHN0eWxlIHRvIGl0LgotICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQo
KS0+Y3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNoaWxk
cmVuKCktPnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCh0aGlzLCBwc2V1ZG9JZCk7Ci19Ci0KIFJl
bmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y29udGludWF0aW9uQmVmb3JlKFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJl
bnQoKSA9PSB0aGlzKQpAQCAtNjAzLDEzICs1ODksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzcGxp
dEJsb2NrcyhSZW5kZXJCbG9jayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3VyciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFy
ZW50KCkpOwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyQ2hpbGQgPSB0aGlzOwogICAg
IFJlbmRlck9iamVjdCogY3VyckNoaWxkTmV4dFNpYmxpbmcgPSBjdXJyQ2hpbGQtPm5leHRTaWJs
aW5nKCk7Ci0gICAgYm9vbCBkb2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVzID0gZG9jdW1lbnQo
KS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsKIAotICAg
IC8vIE5vdGU6IHx0aGlzfCBjYW4gYmUgZGVzdHJveWVkIGluc2lkZSB0aGlzIGxvb3AgaWYgaXQg
aXMgYW4gZW1wdHkgYW5vbnltb3VzCi0gICAgLy8gYmxvY2sgYW5kIHdlIHRyeSB0byBjYWxsIHVw
ZGF0ZUJlZm9yZUFmdGVyQ29udGVudCBpbnNpZGUgd2hpY2ggcmVtb3ZlcyB0aGUKLSAgICAvLyBn
ZW5lcmF0ZWQgY29udGVudCBhbmQgYWRkaXRpb25hbGx5IGNsZWFucyB1cCB8dGhpc3wgZW1wdHkg
YW5vbnltb3VzIGJsb2NrLgotICAgIC8vIFNlZSBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQoKS4g
RE8gTk9UIHJlZmVyZW5jZSBhbnkgbG9jYWwgdmFyaWFibGVzIHRvIHx0aGlzfAotICAgIC8vIGFm
dGVyIHRoaXMgcG9pbnQuCiAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBmcm9tQmxvY2spIHsK
ICAgICAgICAgQVNTRVJUKGN1cnItPmlzUmVuZGVyQmxvY2soKSk7CiAgICAgICAgIApAQCAtNjMy
LDE2ICs2MTIsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpzcGxpdEJsb2NrcyhSZW5kZXJCbG9jayog
ZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAgICAgICAgICAgIGNsb25lQmxvY2st
PnNldENvbnRpbnVhdGlvbihvbGRDb250KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFNvbWVv
bmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3BsaXQuICBXaGVuIHRoaXMg
aGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgIC8vIGhhcyB0byBtb3ZlIGludG8g
dGhlIGlubGluZSBjb250aW51YXRpb24uICBDYWxsIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCB0
byBlbnN1cmUgdGhhdCB0aGUgaW5saW5lJ3MgOmFmdGVyCi0gICAgICAgIC8vIGNvbnRlbnQgZ2V0
cyBwcm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgIGJvb2wgaXNMYXN0Q2hpbGQgPSAoY3VyckNo
aWxkTmV4dFNpYmxpbmcgPT0gYmxvY2tDdXJyLT5sYXN0Q2hpbGQoKSk7Ci0gICAgICAgIGlmIChk
b2N1bWVudFVzZXNCZWZvcmVBZnRlclJ1bGVzKQotICAgICAgICAgICAgYmxvY2tDdXJyLT5jaGls
ZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoYmxvY2tDdXJyLCBBRlRFUik7Ci0gICAg
ICAgIGlmIChpc0xhc3RDaGlsZCAmJiBjdXJyQ2hpbGROZXh0U2libGluZyAhPSBibG9ja0N1cnIt
Pmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgY3VyckNoaWxkTmV4dFNpYmxpbmcgPSAwOyAvLyBX
ZSBkZXN0cm95ZWQgdGhlIGxhc3QgY2hpbGQsIHNvIG5vdyB3ZSBuZWVkIHRvIHVwZGF0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgb2YgY3VyckNo
aWxkTmV4dFNpYmxpbmcuCi0KICAgICAgICAgLy8gTm93IHdlIG5lZWQgdG8gdGFrZSBhbGwgb2Yg
dGhlIGNoaWxkcmVuIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGNoaWxkCiAgICAgICAgIC8vICph
ZnRlciogY3VyckNoaWxkIGFuZCBhcHBlbmQgdGhlbSBhbGwgdG8gdGhlIGNsb25lLgogICAgICAg
ICBibG9ja0N1cnItPm1vdmVDaGlsZHJlblRvKGNsb25lQmxvY2ssIGN1cnJDaGlsZE5leHRTaWJs
aW5nLCAwLCB0cnVlKTsKQEAgLTg3NCwyMyArODQ0LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRk
Q2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LAogICAgICAgICAgICAgaWYgKCFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgICAgICAgICAg
c2V0Q29udGludWF0aW9uKG5ld0JveCk7CiAKLSAgICAgICAgICAgIC8vIFNvbWVvbmUgbWF5IGhh
dmUgcHV0IGEgPHA+IGluc2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAgV2hlbiB0aGlzIGhh
cHBlbnMsIHRoZSA6YWZ0ZXIgY29udGVudAotICAgICAgICAgICAgLy8gaGFzIHRvIG1vdmUgaW50
byB0aGUgaW5saW5lIGNvbnRpbnVhdGlvbi4gIENhbGwgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50
IHRvIGVuc3VyZSB0aGF0IG91ciA6YWZ0ZXIKLSAgICAgICAgICAgIC8vIGNvbnRlbnQgZ2V0cyBw
cm9wZXJseSBkZXN0cm95ZWQuCi0gICAgICAgICAgICBib29sIGlzRmlyc3RDaGlsZCA9IChiZWZv
cmVDaGlsZCA9PSBmaXJzdENoaWxkKCkpOwotICAgICAgICAgICAgYm9vbCBpc0xhc3RDaGlsZCA9
IChiZWZvcmVDaGlsZCA9PSBsYXN0Q2hpbGQoKSk7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQo
KS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSkKLSAgICAg
ICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQodGhpcywgQUZU
RVIpOwotICAgICAgICAgICAgaWYgKGlzTGFzdENoaWxkICYmIGJlZm9yZUNoaWxkICE9IGxhc3RD
aGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZGVzdHJveWVkIHRoZSBsYXN0IGNoaWxk
LCBzbyBub3cgd2UgbmVlZCB0byB1cGRhdGUgb3VyIGluc2VydGlvbgotICAgICAgICAgICAgICAg
IC8vIHBvaW50IHRvIGJlIDAuIEl0J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVuZCBub3cuCi0gICAg
ICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Zp
cnN0Q2hpbGQgJiYgYmVmb3JlQ2hpbGQgIT0gZmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgYmVmb3JlQ2hpbGQgd2FzIHRoZSBsYXN0IGFub255bW91cyBibG9jayB0aGF0IGNv
bGxhcHNlZCwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIGl0cyB2
YWx1ZS4KLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IGZpcnN0Q2hpbGQoKTsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgc3BsaXRGbG93KGJlZm9yZUNoaWxkLCBuZXdCb3gsIG5l
d0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0xODc4LDE2ICsxODMxLDYgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlckJsb2Nr
OjpjcmVhdGVSZXBsYWNlbWVudFJ1bkluKFJlbmRlckJveE1vZGVsT2JqZWN0KgogewogICAgIEFT
U0VSVChydW5Jbi0+aXNSdW5JbigpKTsKIAotICAgIC8vIEZpcnN0IHdlIGRlc3Ryb3kgYW55IDpi
ZWZvcmUvOmFmdGVyIGNvbnRlbnQuIEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgYnkgdGhlIG5ldyBy
dW4taW4uCi0gICAgLy8gRXhjZXB0aW9uIGlzIGlmIHRoZSBydW4taW4gaXRzZWxmIGlzIGdlbmVy
YXRlZC4KLSAgICBpZiAocnVuSW4tPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IEJFRk9SRSAmJiBy
dW5Jbi0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQUZURVIpIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBnZW5lcmF0ZWRDb250ZW50OwotICAgICAgICBpZiAocnVuSW4tPmdldENhY2hlZFBzZXVk
b1N0eWxlKEJFRk9SRSkgJiYgKGdlbmVyYXRlZENvbnRlbnQgPSBydW5Jbi0+YmVmb3JlUHNldWRv
RWxlbWVudFJlbmRlcmVyKCkpKQotICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudC0+ZGVzdHJv
eSgpOwotICAgICAgICBpZiAocnVuSW4tPmdldENhY2hlZFBzZXVkb1N0eWxlKEFGVEVSKSAmJiAo
Z2VuZXJhdGVkQ29udGVudCA9IHJ1bkluLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcigpKSkK
LSAgICAgICAgICAgIGdlbmVyYXRlZENvbnRlbnQtPmRlc3Ryb3koKTsKLSAgICB9Ci0KICAgICBi
b29sIG5ld1J1bkluU2hvdWxkQmVCbG9jayA9ICFydW5Jbi0+aXNSZW5kZXJCbG9jaygpOwogICAg
IE5vZGUqIHJ1bkluTm9kZSA9IHJ1bkluLT5ub2RlKCk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIG5ld1J1bkluID0gMDsKQEAgLTMyMzYsNyArMzE3OSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6
OnNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQmxvY2s6Omlz
U2VsZWN0aW9uUm9vdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKCkgfHwgaXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgaWYgKCFub25Qc2V1ZG9Ob2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGFibGVzIHNob3VsZCBoYXZlIHRv
IGxlYXJuIGhvdyB0byBmaWxsIGdhcHMgYmV0d2VlbiBjZWxscywgYXQgbGVhc3QgaW4gc2ltcGxl
IG5vbi1zcGFubmluZyBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
aW5kZXggYWQxNGEwMTI3NWNjYzQ3MTJlMGFiOGMxM2UzZDU1MjE1NzVjYmYwYS4uM2Y2YWYxYWRh
NzFiNmFjZTUwMjAwZTYxYTMxM2UwZDEwNDQzNzBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKQEAgLTU3Miw4ICs1NzIsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIGJvcmRlckZpdEFkanVzdChMYXlvdXRSZWN0JikgY29uc3Q7IC8vIFNocmluayB0aGUg
Ym94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFpbnRzIGlmIGJvcmRlci1maXQgaXMgc2V0LgogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCk7Ci0gICAg
CiAgICAgdmlydHVhbCBSb290SW5saW5lQm94KiBjcmVhdGVSb290SW5saW5lQm94KCk7IC8vIFN1
YmNsYXNzZWQgYnkgU1ZHIGFuZCBSdWJ5LgogCiAgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhl
IGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IDY5Y2VmMjkyMmFj
NzM1ZjA0MmQ3YjM5ZmUzYTYyZWVhYjcxNTk0MzkuLjI1N2ZlMWZhMDFmYjNhNjliYjg2MjgzZjI1
N2IwZjQ1Y2VhNWZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24u
Y3BwCkBAIC0xNTMsMTQgKzE1Myw2IEBAIGJvb2wgUmVuZGVyQnV0dG9uOjpjYW5IYXZlR2VuZXJh
dGVkQ2hpbGRyZW4oKSBjb25zdAogICAgIHJldHVybiAhbm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0
VGFnKTsKIH0KIAotdm9pZCBSZW5kZXJCdXR0b246OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQ
c2V1ZG9JZCB0eXBlKQotewotICAgIGlmIChtX2lubmVyKQotICAgICAgICBtX2lubmVyLT5jaGls
ZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQobV9pbm5lciwgdHlwZSwgdGhpcyk7Ci0g
ICAgZWxzZQotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQodGhp
cywgdHlwZSk7Ci19Ci0KIExheW91dFJlY3QgUmVuZGVyQnV0dG9uOjpjb250cm9sQ2xpcFJlY3Qo
Y29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gQ2xp
cCB0byB0aGUgcGFkZGluZyBib3ggdG8gYXQgbGVhc3QgZ2l2ZSBjb250ZW50IHRoZSBleHRyYSBw
YWRkaW5nIHNwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4
IDViZTYyYjAxMjY2MGY4MGZmOTdkZTNkNjkxNDNlZjFiYTI1ZjVjMmMuLmE3YWZiNWRjZmRlMmUz
Y2U3M2I0N2MyYWVhNTY0MWQ5ZDQ3NjE5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmgKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0dXBJbm5l
clN0eWxlKFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFBzZXVkb0lk
KTsKLQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBM
YXlvdXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCA1YThmYTI3OWFkN2RiMTU4NjY0ZTM4ODcxNjU2ZTkwMjZiYjI3YTViLi5hNjEy
Y2E1MWM5MzdmNDA5NWEwMDMxMjk1YWYxYjIzZjhjNjZlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDEsOCArNDEsNiBAQAogI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKIAotI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KLQogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNlbmRpZgpAQCAtMTcwLDE4ICsxNjgsMTEgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3QKICAgICAvLyBuZWVkIHRvIHBhc3MgaXRzIHN0eWxlIG9uIHRvIGFueW9uZSBlbHNlLgogICAg
IFJlbmRlclN0eWxlKiBuZXdTdHlsZSA9IHN0eWxlKCk7CiAgICAgUmVuZGVySW5saW5lKiBjb250
aW51YXRpb24gPSBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7Ci0gICAgewotICAgICAgICBU
ZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gZW5hYmxlQWZ0ZXIoUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojpz
X2VuYWJsZVVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCwgZmFsc2UpOwotICAgICAgICBSZW5kZXJJ
bmxpbmUqIG5leHRJbmxpbmVFbGVtZW50Q29udCA9IDA7Ci0gICAgICAgIGZvciAoUmVuZGVySW5s
aW5lKiBjdXJyQ29udCA9IGNvbnRpbnVhdGlvbjsgY3VyckNvbnQ7IGN1cnJDb250ID0gbmV4dElu
bGluZUVsZW1lbnRDb250KSB7Ci0gICAgICAgICAgICBuZXh0SW5saW5lRWxlbWVudENvbnQgPSBj
dXJyQ29udC0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwotICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byB1cGRhdGUgOmFmdGVyIGNvbnRlbnQgZm9yIHRoZSBsYXN0IGNvbnRpbnVhdGlvbiBp
biB0aGUgY2hhaW4uCi0gICAgICAgICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxl
VXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50ID0gIW5leHRJbmxpbmVFbGVtZW50Q29udDsKLSAgICAg
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51
YXRpb24oKTsKLSAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24oMCk7Ci0gICAg
ICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUobmV3U3R5bGUpOwotICAgICAgICAgICAgY3VyckNv
bnQtPnNldENvbnRpbnVhdGlvbihuZXh0Q29udCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlbmRl
cklubGluZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJyQ29udCA9IGN1
cnJDb250LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKKyAgICAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIG5leHRDb250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOworICAgICAg
ICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKDApOworICAgICAgICBjdXJyQ29udC0+c2V0U3R5
bGUobmV3U3R5bGUpOworICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG5leHRDb250
KTsKICAgICB9CiAKICAgICAvLyBJZiBhbiBpbmxpbmUncyBpbi1mbG93IHBvc2l0aW9uaW5nIGhh
cyBjaGFuZ2VkIHRoZW4gYW55IGRlc2NlbmRhbnQgYmxvY2tzIHdpbGwgbmVlZCB0byBjaGFuZ2Ug
dGhlaXIgaW4tZmxvdyBwb3NpdGlvbmluZyBhY2NvcmRpbmdseS4KQEAgLTIwMiwxMiArMTkzLDYg
QEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3QKICAgICAgICAgfQogICAgICAgICBtX2Fsd2F5c0Ny
ZWF0ZUxpbmVCb3hlcyA9IGFsd2F5c0NyZWF0ZUxpbmVCb3hlczsKICAgICB9Ci0KLSAgICAvLyBV
cGRhdGUgcHNldWRvcyBmb3IgOmJlZm9yZSBhbmQgOmFmdGVyIG5vdy4KLSAgICBpZiAoIWlzQW5v
bnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc0JlZm9y
ZUFmdGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRlckNv
bnRlbnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVySW5saW5lOjp1
cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpAQCAtMzMwLDE2ICsz
MTUsNiBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihS
ZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogb2xkQ29udGludWF0aW9uID0gY29udGludWF0aW9uKCk7CiAgICAgICAgIHNldENvbnRp
bnVhdGlvbihuZXdCb3gpOwogCi0gICAgICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgcHV0IGEgPHA+
IGluc2lkZSBhIDxxPiwgY2F1c2luZyBhIHNwbGl0LiAgV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSA6
YWZ0ZXIgY29udGVudAotICAgICAgICAvLyBoYXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29u
dGludWF0aW9uLiAgQ2FsbCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQg
b3VyIDphZnRlcgotICAgICAgICAvLyBjb250ZW50IGdldHMgcHJvcGVybHkgZGVzdHJveWVkLgot
ICAgICAgICBib29sIGlzTGFzdENoaWxkID0gKGJlZm9yZUNoaWxkID09IGxhc3RDaGlsZCgpKTsK
LSAgICAgICAgaWYgKGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNCZWZv
cmVBZnRlclJ1bGVzKCkpCi0gICAgICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZvcmVBZnRl
ckNvbnRlbnQodGhpcywgQUZURVIpOwotICAgICAgICBpZiAoaXNMYXN0Q2hpbGQgJiYgYmVmb3Jl
Q2hpbGQgIT0gbGFzdENoaWxkKCkpCi0gICAgICAgICAgICBiZWZvcmVDaGlsZCA9IDA7IC8vIFdl
IGRlc3Ryb3llZCB0aGUgbGFzdCBjaGlsZCwgc28gbm93IHdlIG5lZWQgdG8gdXBkYXRlIG91ciBp
bnNlcnRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgdG8gYmUgMC4g
IEl0J3MganVzdCBhIHN0cmFpZ2h0IGFwcGVuZCBub3cuCi0KICAgICAgICAgc3BsaXRGbG93KGJl
Zm9yZUNoaWxkLCBuZXdCb3gsIG5ld0NoaWxkLCBvbGRDb250aW51YXRpb24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDA2LDEyICszODEsNiBAQCB2b2lkIFJlbmRlcklubGluZTo6c3Bs
aXRJbmxpbmVzKFJlbmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAog
ICAgICAgICAgICAgaW5saW5lQ3Vyci0+c2V0Q29udGludWF0aW9uKGNsb25lSW5saW5lKTsKICAg
ICAgICAgICAgIGNsb25lSW5saW5lLT5zZXRDb250aW51YXRpb24ob2xkQ29udCk7CiAKLSAgICAg
ICAgICAgIC8vIFNvbWVvbmUgbWF5IGhhdmUgaW5kaXJlY3RseSBjYXVzZWQgYSA8cT4gdG8gc3Bs
aXQuICBXaGVuIHRoaXMgaGFwcGVucywgdGhlIDphZnRlciBjb250ZW50Ci0gICAgICAgICAgICAv
LyBoYXMgdG8gbW92ZSBpbnRvIHRoZSBpbmxpbmUgY29udGludWF0aW9uLiAgQ2FsbCB1cGRhdGVC
ZWZvcmVBZnRlckNvbnRlbnQgdG8gZW5zdXJlIHRoYXQgdGhlIGlubGluZSdzIDphZnRlcgotICAg
ICAgICAgICAgLy8gY29udGVudCBnZXRzIHByb3Blcmx5IGRlc3Ryb3llZC4KLSAgICAgICAgICAg
IGlmIChkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0ZXJS
dWxlcygpKQotICAgICAgICAgICAgICAgIGlubGluZUN1cnItPmNoaWxkcmVuKCktPnVwZGF0ZUJl
Zm9yZUFmdGVyQ29udGVudChpbmxpbmVDdXJyLCBBRlRFUik7Ci0KICAgICAgICAgICAgIC8vIE5v
dyB3ZSBuZWVkIHRvIHRha2UgYWxsIG9mIHRoZSBjaGlsZHJlbiBzdGFydGluZyBmcm9tIHRoZSBm
aXJzdCBjaGlsZAogICAgICAgICAgICAgLy8gKmFmdGVyKiBjdXJyQ2hpbGQgYW5kIGFwcGVuZCB0
aGVtIGFsbCB0byB0aGUgY2xvbmUuCiAgICAgICAgICAgICBvID0gY3VyckNoaWxkLT5uZXh0U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5k
ZXggODRhNTc5NDYwOTBiNmJiMzYyNjc0ZTIwZGQ3M2VlMWRmMWU5YTU0Mi4uZDBiM2I5NTE3NGM3
MzZjNzAwNzAzOTg2NjEzMzliOGJmN2U4Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0yNjgsNyArMjY4LDYgQEAgdm9pZCBSZW5kZXJMaXN0
SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpb24oKQogICAgICAgICAgICAgaWYgKG1fbWFya2VyLT5w
cmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKICAgICAgICAgICAgICAgICBtX21hcmtlci0+
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKICAgICAgICAgICAgIC8vIElmIG1hcmtl
clBhciBpcyBhbiBhbm9ueW1vdXMgYmxvY2sgdGhhdCBoYXMgbG9zdCBhbGwgaXRzIGNoaWxkcmVu
LCBkZXN0cm95IGl0LgotICAgICAgICAgICAgLy8gRXh0cmFuZW91cyBhbm9ueW1vdXMgYmxvY2tz
IGNhbiBjYXVzZSBwcm9ibGVtcyBmb3IgUmVuZGVyQmxvY2s6OnVwZGF0ZUJlZm9yZUFmdGVyQ29u
dGVudC4KICAgICAgICAgICAgIGlmIChtYXJrZXJQYXIgJiYgbWFya2VyUGFyLT5pc0Fub255bW91
c0Jsb2NrKCkgJiYgIW1hcmtlclBhci0+Zmlyc3RDaGlsZCgpICYmICF0b1JlbmRlckJsb2NrKG1h
cmtlclBhciktPmNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgICAgIG1hcmtlclBhci0+ZGVz
dHJveSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDIwYTE5MTYyYjc0MTU4YzFhNTVhNTYzNzg1ZDk4NGFhZjViMmEzNWQuLjk3MDNi
MTViYjMzZjM5MGQwZjg1MWEzZThkYjBiNGVhYjE0ZDg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yOTk1LDggKzI5OTUsNyBAQCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzZXRQYXJlbnQoKSBjb25zdAogVmlzaWJsZVBv
c2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVB
ZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgbm9uLWFub255bW91cyBy
ZW5kZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0J3Mgc2ltcGxlLgotICAgIGlmIChu
b2RlKCkgJiYgIWlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSB0aGlz
LT5ub2RlKCk7CisgICAgaWYgKE5vZGUqIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAg
ICAgaWYgKCFub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkgewogICAgICAgICAgICAgLy8gSWYg
aXQgY2FuIGJlIGZvdW5kLCB3ZSBwcmVmZXIgYSB2aXN1YWxseSBlcXVpdmFsZW50IHBvc2l0aW9u
IHRoYXQgaXMgZWRpdGFibGUuIAogICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgb2Zmc2V0KTsKQEAgLTMwMjIsOCArMzAyMSw4
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihp
bnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91
cyBjb250ZW50IGFmdGVyLgogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQ7
CiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dEluUHJlT3JkZXIocGFy
ZW50KSkpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpICYmICFyZW5kZXJlci0+
aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocmVuZGVyZXItPm5vZGUoKSksIERPV05TVFJF
QU0pOworICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJlZm9yZS4KQEAgLTMwMzEsMTMgKzMwMzAs
MTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9u
KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgd2hpbGUgKChyZW5kZXJlciA9
IHJlbmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAo
cmVuZGVyZXItPm5vZGUoKSAmJiAhcmVuZGVyZXItPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9k
ZShyZW5kZXJlci0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBpZiAoTm9kZSog
bm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RS
RUFNKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVzZSB0aGUgcGFyZW50IGl0c2VsZiB1bmxl
c3MgaXQgdG9vIGlzIGFub255bW91cy4KLSAgICAgICAgaWYgKHBhcmVudC0+bm9kZSgpICYmICFp
c1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmly
c3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudC0+bm9kZSgpKSwgRE9XTlNUUkVBTSk7Cisg
ICAgICAgIGlmIChOb2RlKiBub2RlID0gcGFyZW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShu
b2RlKSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0IGxldmVs
IHVwLgogICAgICAgICBjaGlsZCA9IHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCBjZTQxMjJlODYxYjNiYWU2NDFjYmJmZmYyNzNhMWVkOTEzMjRhOTNm
Li44YTc4NmY3OGE3OWNjNWNlZWEwYmE1Yjg0MWI3ZTBhOWE1NmMzOWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MjMsMTcgKzYyMywxNSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAwKSBjb25zdDsKIAogICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gMCA6IG1fbm9kZTsgfQorICAg
IE5vZGUqIG5vblBzZXVkb05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/
IDAgOiBub2RlKCk7IH0KKworICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBSZW5kZXJXaWRnZXQgbmVl
ZCB0aGlzPworICAgIHZvaWQgY2xlYXJOb2RlKCkgeyBtX25vZGUgPSAwOyB9CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlz
IHJlbmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3Ig
cmVuZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBm
b3Igd2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJh
dGluZ05vZGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIG5vZGUoKS0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgICAgICBy
ZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOwotICAgIH0KLSAgICB2b2lk
IHNldE5vZGUoTm9kZSogbm9kZSkgeyBtX25vZGUgPSBub2RlOyB9CisgICAgTm9kZSogZ2VuZXJh
dGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFy
ZW50T3JIb3N0Tm9kZSgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX25vZGUtPmRvY3VtZW50KCk7IH0KICAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDIwMmNjMzZiMzE1
NDU0ZjVhMmZlMDA0ZGYwNGMwMmRmYjdlYTkyZjUuLmUyNzI0YmY2ZjU2Mzk2ODIyOTFmZTY5M2Yx
NTAwMWU1NDNlZTAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnNfZW5hYmxlVXBkYXRlQmVmb3Jl
QWZ0ZXJDb250ZW50ID0gdHJ1ZTsKLQogdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmRlc3Ry
b3lMZWZ0b3ZlckNoaWxkcmVuKCkKIHsKICAgICB3aGlsZSAoZmlyc3RDaGlsZCgpKSB7CkBAIC0x
ODcsMjMgKzE4NSw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNlcnRDaGlsZE5v
ZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjCiAgICAgICAgIG93bmVyLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChvd25lcik7CiB9CiAK
LXN0YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRCZWZvcmVBZnRlclBhcmVudChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICAvLyBPbmx5IHRhYmxlIHBhcnRzIGFuZCBmbGV4LWJveGVzIG5lZWQg
dG8gc2VhcmNoIGZvciB0aGUgOmJlZm9yZSBvciA6YWZ0ZXIgcGFyZW50Ci0gICAgLy8gRklYTUU6
IFdlIGNvdWxkIGxpa2VseSBnZXQgYXdheSB3aXRob3V0IHRoaXMgY2hlY2sgYW5kIGFsd2F5cyBs
b29rIGZvciB0aGUgcmlnaHQgcGFyZW50LgotICAgIGlmICghKG9iamVjdC0+aXNUYWJsZSgpIHx8
IG9iamVjdC0+aXNUYWJsZVNlY3Rpb24oKSB8fCBvYmplY3QtPmlzVGFibGVSb3coKSB8fCBvYmpl
Y3QtPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkpKQotICAgICAgICByZXR1cm4g
b2JqZWN0OwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSA6Zmlyc3QtbGV0dGVyIHN0eWxlIGFwcGxp
ZWQgb24gdGhlIDpiZWZvcmUgb3IgOmFmdGVyIGNvbnRlbnQsCi0gICAgLy8gdGhlbiB3ZSB3YW50
IHRoZSBwYXJlbnQgb2YgdGhlIGZpcnN0LWxldHRlciBibG9jawotICAgIFJlbmRlck9iamVjdCog
YmVmb3JlQWZ0ZXJQYXJlbnQgPSBvYmplY3Q7Ci0gICAgd2hpbGUgKGJlZm9yZUFmdGVyUGFyZW50
ICYmICEoYmVmb3JlQWZ0ZXJQYXJlbnQtPmlzVGV4dCgpIHx8IGJlZm9yZUFmdGVyUGFyZW50LT5p
c0ltYWdlKCkpCi0gICAgICAgICYmIChiZWZvcmVBZnRlclBhcmVudC0+c3R5bGUoKS0+c3R5bGVU
eXBlKCkgIT0gRklSU1RfTEVUVEVSKSkKLSAgICAgICAgYmVmb3JlQWZ0ZXJQYXJlbnQgPSBiZWZv
cmVBZnRlclBhcmVudC0+Zmlyc3RDaGlsZCgpOwotCi0gICAgcmV0dXJuIGJlZm9yZUFmdGVyUGFy
ZW50ID8gYmVmb3JlQWZ0ZXJQYXJlbnQtPnBhcmVudCgpIDogMDsKLX0KLQogUmVuZGVyT2JqZWN0
KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdAogewogICAgIC8vIEFuIGFub255bW91cyAoZ2Vu
ZXJhdGVkKSBpbmxpbmUgcnVuLWluIHRoYXQgaGFzIFBzZXVkb0lkIEJFRk9SRSBtdXN0IGNvbWUg
ZnJvbSBhIGdyYW5kcGFyZW50LgpAQCAtMjUwLDIwMyArMjMxLDQgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamUKICAgICByZXR1cm4gbGFzdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OnVwZGF0ZUJlZm9yZUFmdGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUHNldWRvSWQg
dHlwZSwgUmVuZGVyU3R5bGUqIHBzZXVkb0VsZW1lbnRTdHlsZSkKLXsKLSAgICBpZiAoIWNoaWxk
IHx8IGNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSB0eXBlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBXZSBoYXZlIGdlbmVyYXRlZCBjb250ZW50IHByZXNlbnQgc3RpbGwuIFdlIHdh
bnQgdG8gd2FsayB0aGlzIGNvbnRlbnQgYW5kIHVwZGF0ZSBvdXIKLSAgICAvLyBzdHlsZSBpbmZv
cm1hdGlvbiB3aXRoIHRoZSBuZXcgcHNldWRvLWVsZW1lbnQgc3R5bGUuCi0gICAgY2hpbGQtPnNl
dFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGJlZm9yZUFm
dGVyUGFyZW50ID0gZmluZEJlZm9yZUFmdGVyUGFyZW50KGNoaWxkKTsKLSAgICBpZiAoIWJlZm9y
ZUFmdGVyUGFyZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXaGVuIGJlZm9yZUFmdGVy
UGFyZW50IGlzIG5vdCBlcXVhbCB0byBjaGlsZCAoZS5nLiBpbiB0YWJsZXMpLAotICAgIC8vIHdl
IG5lZWQgdG8gY3JlYXRlIG5ldyBzdHlsZXMgaW5oZXJpdGluZyBmcm9tIHBzZXVkb0VsZW1lbnRT
dHlsZQotICAgIC8vIG9uIGFsbCB0aGUgaW50ZXJtZWRpYXRlIHBhcmVudHMgKGxlYXZpbmcgdGhl
aXIgZGlzcGxheSBzYW1lKS4KLSAgICBpZiAoYmVmb3JlQWZ0ZXJQYXJlbnQgIT0gY2hpbGQpIHsK
LSAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gYmVmb3JlQWZ0ZXJQYXJlbnQ7Ci0gICAgICAg
IHdoaWxlIChjdXJyICYmIGN1cnIgIT0gY2hpbGQpIHsKLSAgICAgICAgICAgIEFTU0VSVChjdXJy
LT5pc0Fub255bW91cygpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+aW5oZXJp
dEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIG5ld1N0eWxlLT5zZXREaXNw
bGF5KGN1cnItPnN0eWxlKCktPmRpc3BsYXkoKSk7Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0
U3R5bGVUeXBlKGN1cnItPnN0eWxlKCktPnN0eWxlVHlwZSgpKTsKLSAgICAgICAgICAgIGN1cnIt
PnNldFN0eWxlKG5ld1N0eWxlKTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSBldmVyIHN1cHBvcnQg
YWRkaXRpb25hbCB0eXBlcyBvZiBnZW5lcmF0ZWQgY29udGVudCAod2hpY2ggc2hvdWxkIGJlIHdh
eSBvZmYKLSAgICAvLyBpbiB0aGUgZnV0dXJlKSwgdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBiZSBw
YXRjaGVkLgotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBnZW5DaGlsZCA9IGJlZm9yZUFmdGVyUGFy
ZW50LT5maXJzdENoaWxkKCk7IGdlbkNoaWxkOyBnZW5DaGlsZCA9IGdlbkNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIGlmIChnZW5DaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICAv
LyBHZW5lcmF0ZWQgdGV4dCBjb250ZW50IGlzIGEgY2hpbGQgd2hvc2Ugc3R5bGUgYWxzbyBuZWVk
cyB0byBiZSBzZXQgdG8gdGhlIHBzZXVkby1lbGVtZW50IHN0eWxlLgotICAgICAgICAgICAgZ2Vu
Q2hpbGQtPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgIGVsc2UgaWYgKGdl
bkNoaWxkLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgICAgIC8vIEltYWdlcyBnZXQgYW4gZW1wdHkg
c3R5bGUgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBwc2V1ZG8uCi0gICAgICAgICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
c3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBnZW5D
aGlsZC0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFJlbmRlckxpc3RJdGVtIG1heSBpbnNlcnQgYSBsaXN0IG1hcmtlciBoZXJlLiBX
ZSBkbyBub3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMgY2FzZS4KLSAgICAgICAgICAgIC8vIE90
aGVyd2lzZSwgZ2VuQ2hpbGQgbXVzdCBiZSBhIGZpcnN0LWxldHRlciBjb250YWluZXIuIHVwZGF0
ZUZpcnN0TGV0dGVyKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCi0gICAgICAgICAgICBBU1NFUlQo
Z2VuQ2hpbGQtPmlzTGlzdE1hcmtlcigpIHx8IGdlbkNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBGSVJTVF9MRVRURVIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgUmVuZGVy
T2JqZWN0KiBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG93bmVyLCBQ
c2V1ZG9JZCB0eXBlLCBSZW5kZXJTdHlsZSogcHNldWRvRWxlbWVudFN0eWxlLCBOb2RlKiBnZW5l
cmF0aW5nTm9kZSwgUmVuZGVyT2JqZWN0KiBpbnNlcnRCZWZvcmUpCi17Ci0gICAgLy8gTWFrZSBh
IGdlbmVyYXRlZCBib3ggdGhhdCBtaWdodCBiZSBhbnkgZGlzcGxheSB0eXBlIG5vdyB0aGF0IHdl
IGFyZSBhYmxlIHRvIGRyaWxsIGRvd24gaW50byBjaGlsZHJlbgotICAgIC8vIHRvIGZpbmQgdGhl
IG9yaWdpbmFsIGNvbnRlbnQgcHJvcGVybHkuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRD
b250ZW50Q29udGFpbmVyID0gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qob3duZXItPmRvY3Vt
ZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgQVNTRVJUKGdlbmVyYXRpbmdOb2RlKTsg
Ly8gVGhlIHN0eWxlZCBvYmplY3QgY2Fubm90IGJlIGFub255bW91cyBvciBlbHNlIGl0IGNvdWxk
IG5vdCBoYXZlICc6YmVmb3JlJyBvciAnOmFmdGVyJyBwc2V1ZG8gZWxlbWVudHMuCi0gICAgZ2Vu
ZXJhdGVkQ29udGVudENvbnRhaW5lci0+c2V0Tm9kZShnZW5lcmF0aW5nTm9kZSk7IC8vIFRoaXMg
YWxsb3dzIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGluZ05vZGUuCi0gICAgZ2VuZXJhdGVkQ29udGVu
dENvbnRhaW5lci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICBpZiAoIW93bmVy
LT5pc0NoaWxkQWxsb3dlZChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLCBwc2V1ZG9FbGVtZW50
U3R5bGUpKSB7Ci0gICAgICAgIC8vIFRoZSBnZW5lcmF0ZWQgY29udGVudCBjb250YWluZXIgaXMg
bm90IGFsbG93ZWQgaGVyZSAtPiBhYm9ydC4KLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRh
aW5lci0+ZGVzdHJveSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBXaGVu
IHdlIGRvbid0IGhhdmUgYSBmaXJzdCBjaGlsZCBhbmQgYXJlIHBhcnQgb2YgYSBjb250aW51YXRp
b24gY2hhaW4sCi0gICAgLy8gaW5zZXJ0QmVmb3JlIGlzIGluY29ycmVjdGx5IHNldCB0byB6ZXJv
IGFib3ZlLCB3aGljaCBjYXVzZXMgdGhlIDpiZWZvcmUKLSAgICAvLyBjaGlsZCB0byBlbmQgdXAg
YXQgdGhlIGVuZCBvZiBjb250aW51YXRpb24gY2hhaW4uCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4MC4KLSAgICBpZiAoIWluc2VydEJlZm9y
ZSAmJiB0eXBlID09IEJFRk9SRSAmJiBvd25lci0+dmlydHVhbENvbnRpbnVhdGlvbigpKQotICAg
ICAgICBvd25lci0+YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihnZW5lcmF0ZWRDb250ZW50
Q29udGFpbmVyLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIG93bmVyLT5hZGRDaGlsZChnZW5lcmF0
ZWRDb250ZW50Q29udGFpbmVyLCBpbnNlcnRCZWZvcmUpOwotCi0gICAgcmV0dXJuIGdlbmVyYXRl
ZENvbnRlbnRDb250YWluZXI7Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRh
dGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QpCi17Ci0gICAgLy8gRG91YmxlIGNoZWNr
IHRoYXQgdGhlIGRvY3VtZW50IGRpZCBpbiBmYWN0IHVzZSBnZW5lcmF0ZWQgY29udGVudCBydWxl
cy4gIE90aGVyd2lzZSB3ZSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCi0gICAgQVNTRVJU
KG93bmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzQmVmb3JlQWZ0
ZXJSdWxlcygpKTsKLQotICAgIC8vIEluIENTUzIsIGJlZm9yZS9hZnRlciBwc2V1ZG8tY29udGVu
dCBjYW5ub3QgbmVzdC4gIENoZWNrIHRoaXMgZmlyc3QuCi0gICAgaWYgKG93bmVyLT5zdHlsZSgp
LT5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgb3duZXItPnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IEFGVEVSKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFzX2VuYWJsZVVwZGF0ZUJlZm9yZUFm
dGVyQ29udGVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghc3R5bGVkT2JqZWN0
KQotICAgICAgICBzdHlsZWRPYmplY3QgPSBvd25lcjsKLQotICAgIFJlbmRlclN0eWxlKiBwc2V1
ZG9FbGVtZW50U3R5bGUgPSBzdHlsZWRPYmplY3QtPmdldENhY2hlZFBzZXVkb1N0eWxlKHR5cGUp
OwotICAgIFJlbmRlck9iamVjdCogY2hpbGQ7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBCRUZPUkU6Ci0gICAgICAgIGNoaWxkID0gYmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKG93
bmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBRlRFUjoKLSAgICAgICAgY2hpbGQgPSBh
ZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcihvd25lcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gV2hldGhlciBvciBub3Qgd2UgY3VycmVudGx5IGhhdmUgZ2VuZXJhdGVk
IGNvbnRlbnQgYXR0YWNoZWQuCi0gICAgYm9vbCBvbGRDb250ZW50UHJlc2VudCA9IGNoaWxkOwot
Ci0gICAgLy8gV2hldGhlciBvciBub3Qgd2Ugbm93IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQuCi0g
ICAgYm9vbCBuZXdDb250ZW50V2FudGVkID0gcHNldWRvRWxlbWVudFN0eWxlICYmIHBzZXVkb0Vs
ZW1lbnRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7Ci0KLSAgICAvLyBGb3IgPHE+PHAvPjwvcT4s
IGlmIHRoaXMgb2JqZWN0IGlzIHRoZSBpbmxpbmUgY29udGludWF0aW9uIG9mIHRoZSA8cT4sIHdl
IG9ubHkgd2FudCB0byBnZW5lcmF0ZQotICAgIC8vIDphZnRlciBjb250ZW50IGFuZCBub3QgOmJl
Zm9yZSBjb250ZW50LgotICAgIGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQkVGT1JF
ICYmIG93bmVyLT5pc0VsZW1lbnRDb250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdh
bnRlZCA9IGZhbHNlOwotCi0gICAgLy8gU2ltaWxhcmx5LCBpZiB3ZSdyZSB0aGUgYmVnaW5uaW5n
IG9mIGEgPHE+LCBhbmQgdGhlcmUncyBhbiBpbmxpbmUgY29udGludWF0aW9uIGZvciBvdXIgb2Jq
ZWN0LAotICAgIC8vIHRoZW4gd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlIDphZnRlciBjb250ZW50Lgot
ICAgIGlmIChuZXdDb250ZW50V2FudGVkICYmIHR5cGUgPT0gQUZURVIgJiYgb3duZXItPnZpcnR1
YWxDb250aW51YXRpb24oKSkKLSAgICAgICAgbmV3Q29udGVudFdhbnRlZCA9IGZhbHNlOwotICAg
IAotICAgIC8vIElmIHdlIGRvbid0IHdhbnQgZ2VuZXJhdGVkIGNvbnRlbnQgYW55IGxvbmdlciwg
b3IgaWYgd2UgaGF2ZSBnZW5lcmF0ZWQgY29udGVudCwgYnV0IGl0J3Mgbm8gbG9uZ2VyCi0gICAg
Ly8gaWRlbnRpY2FsIHRvIHRoZSBuZXcgY29udGVudCBkYXRhIHdlIHdhbnQgdG8gYnVpbGQgcmVu
ZGVyIG9iamVjdHMgZm9yLCB0aGVuIHdlIG51a2UgYWxsCi0gICAgLy8gb2YgdGhlIG9sZCBnZW5l
cmF0ZWQgY29udGVudC4KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQgJiYgKCFuZXdDb250ZW50
V2FudGVkIHx8IE5vZGU6OmRpZmYoY2hpbGQtPnN0eWxlKCksIHBzZXVkb0VsZW1lbnRTdHlsZSwg
b3duZXItPmRvY3VtZW50KCkpID09IE5vZGU6OkRldGFjaCkpIHsKLSAgICAgICAgLy8gTnVrZSB0
aGUgY2hpbGQuIAotICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5
cGUpIHsKLSAgICAgICAgICAgIG9sZENvbnRlbnRQcmVzZW50ID0gZmFsc2U7Ci0gICAgICAgICAg
ICBjaGlsZC0+ZGVzdHJveSgpOwotICAgICAgICAgICAgY2hpbGQgPSAodHlwZSA9PSBCRUZPUkUp
ID8gb3duZXItPnZpcnR1YWxDaGlsZHJlbigpLT5maXJzdENoaWxkKCkgOiBvd25lci0+dmlydHVh
bENoaWxkcmVuKCktPmxhc3RDaGlsZCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYg
d2UgaGF2ZSBubyBwc2V1ZG8tZWxlbWVudCBzdHlsZSBvciBpZiB0aGUgcHNldWRvLWVsZW1lbnQg
c3R5bGUncyBkaXNwbGF5IHR5cGUgaXMgTk9ORSwgdGhlbiB3ZQotICAgIC8vIGhhdmUgbm8gZ2Vu
ZXJhdGVkIGNvbnRlbnQgYW5kIGNhbiBub3cgcmV0dXJuLgotICAgIGlmICghbmV3Q29udGVudFdh
bnRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG93bmVyLT5pc1JlbmRlcklubGluZSgp
ICYmICFwc2V1ZG9FbGVtZW50U3R5bGUtPmlzRGlzcGxheUlubGluZVR5cGUoKSAmJiAhcHNldWRv
RWxlbWVudFN0eWxlLT5pc0Zsb2F0aW5nKCkgJiYKLSAgICAgICAgIXBzZXVkb0VsZW1lbnRTdHls
ZS0+aGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKLSAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBD
U1MyIHNwZWMgKHRoZSBlbmQgb2Ygc2VjdGlvbiAxMi4xKSwgdGhlIG9ubHkgYWxsb3dlZAotICAg
ICAgICAvLyBkaXNwbGF5IHZhbHVlcyBmb3IgdGhlIHBzZXVkbyBzdHlsZSBhcmUgTk9ORSBhbmQg
SU5MSU5FIGZvciBpbmxpbmUgZmxvd3MuCi0gICAgICAgIC8vIEZJWE1FOiBDU1MyLjEgbGlmdGVk
IHRoaXMgcmVzdHJpY3Rpb24sIGJ1dCBibG9jayBkaXNwbGF5IHR5cGVzIHdpbGwgY3Jhc2guCi0g
ICAgICAgIC8vIEZvciBub3cgd2UgYXQgbGVhc3QgcmVsYXggdGhlIHJlc3RyaWN0aW9uIHRvIGFs
bG93IGFsbCBpbmxpbmUgdHlwZXMgbGlrZSBpbmxpbmUtYmxvY2sKLSAgICAgICAgLy8gYW5kIGlu
bGluZS10YWJsZS4KLSAgICAgICAgcHNldWRvRWxlbWVudFN0eWxlLT5zZXREaXNwbGF5KElOTElO
RSk7Ci0KLSAgICBpZiAob2xkQ29udGVudFByZXNlbnQpIHsKLSAgICAgICAgdXBkYXRlQmVmb3Jl
QWZ0ZXJTdHlsZShjaGlsZCwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgcmV0
dXJuOyAvLyBXZSd2ZSB1cGRhdGVkIHRoZSBnZW5lcmF0ZWQgY29udGVudC4gVGhhdCdzIGFsbCB3
ZSBuZWVkZWQgdG8gZG8uCi0gICAgfQotICAgIAotICAgIFJlbmRlck9iamVjdCogaW5zZXJ0QmVm
b3JlID0gKHR5cGUgPT0gQkVGT1JFKSA/IG93bmVyLT52aXJ0dWFsQ2hpbGRyZW4oKS0+Zmlyc3RD
aGlsZCgpIDogMDsKLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2VydEJlZm9yZS0+aXNBbm9u
eW1vdXNCbG9jaygpICYmIGluc2VydEJlZm9yZS0+Y2hpbGRyZW5JbmxpbmUoKSAmJiAhaW5zZXJ0
QmVmb3JlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIGFkZCB0aGUg
ImJlZm9yZSIgZWxlbWVudC4gV2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSAiaW5zZXJ0QmVm
b3JlIiBlbGVtZW50Ci0gICAgICAgIC8vIGlzIGFuIGFub255bW91cyBibG9jayB3aXRoIGlubGlu
ZSBjaGlsZHJlbi4gSWYgaXQgaXMsIHRoZW4gd2Ugc2hvdWxkIGluc2VydCB0aGUgImJlZm9yZSIg
ZWxlbWVudAotICAgICAgICAvLyBiZWZvcmUgdGhlIGZpcnN0IGlubGluZSBjaGlsZCBvZiB0aGUg
YW5vbnltb3VzIGJsb2NrLCBvdGhlcndpc2Ugd2Ugd2lsbCBlbmQgdXAgd2l0aCB0aGUgImJlZm9y
ZSIKLSAgICAgICAgLy8gZWxlbWVudCBpbiBhIGRpZmZlcmVudCBibG9jay4gV2UgZG8gdGhpcyBv
bmx5IHdoZW4gdGhlIGFub255bW91cyBibG9jayBoYXMgY2hpbGRyZW4sIG90aGVyd2lzZQotICAg
ICAgICAvLyB3ZSBlbmQgdXAgd2l0aCB0aGUgYmVmb3JlIGVsZW1lbnQgaW4gYSB3cm9uZyBibG9j
ay4KLSAgICAgICAgaW5zZXJ0QmVmb3JlID0gaW5zZXJ0QmVmb3JlLT5maXJzdENoaWxkKCk7Ci0g
ICAgfQotCi0gICAgLy8gTm90aGluZyBnb2VzIGJlZm9yZSB0aGUgaW50cnVkZWQgcnVuLWluLCBu
b3QgZXZlbiBnZW5lcmF0ZWQgY29udGVudC4KLSAgICBpZiAoaW5zZXJ0QmVmb3JlICYmIGluc2Vy
dEJlZm9yZS0+aXNSdW5JbigpICYmIG93bmVyLT5pc1JlbmRlckJsb2NrKCkKLSAgICAgICAgJiYg
dG9SZW5kZXJCbG9jayhvd25lciktPnJ1bkluSXNQbGFjZWRJbnRvU2libGluZ0Jsb2NrKGluc2Vy
dEJlZm9yZSkpCi0gICAgICAgIGluc2VydEJlZm9yZSA9IGluc2VydEJlZm9yZS0+bmV4dFNpYmxp
bmcoKTsKLQotICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGNv
bnRhaW5lciB0aGF0IGhvdXNlcyBtdWx0aXBsZSBjaGlsZHJlbiAoc3BlY2lmaWVkCi0gICAgLy8g
YnkgdGhlIGNvbnRlbnQgcHJvcGVydHkpLiBUaGlzIGdlbmVyYXRlZCBjb250ZW50IGNvbnRhaW5l
ciBnZXRzIHRoZSBwc2V1ZG8tZWxlbWVudCBzdHlsZSBzZXQgb24gaXQuCi0gICAgLy8gRm9yIHBz
ZXVkby1lbGVtZW50cyB0aGF0IGFyZSByZWdpb25zLCB0aGUgY29udGFpbmVyIGlzIHRoZSBSZW5k
ZXJSZWdpb24uCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyID0g
MDsKLQotICAgIGlmICghcHNldWRvRWxlbWVudFN0eWxlLT5yZWdpb25UaHJlYWQoKS5pc0VtcHR5
KCkpCi0gICAgICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRl
ckNvbnRhaW5lcihvd25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3Qt
Pm5vZGUoKSwgaW5zZXJ0QmVmb3JlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2FsayBvdXIg
bGlzdCBvZiBnZW5lcmF0ZWQgY29udGVudCBhbmQgY3JlYXRlIHJlbmRlciBvYmplY3RzIGZvciBl
YWNoLgotICAgICAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50ID0gcHNldWRvRWxl
bWVudFN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4
dCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29udGVudC0+Y3Jl
YXRlUmVuZGVyZXIob3duZXItPmRvY3VtZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0KLSAg
ICAgICAgICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikgewotICAgICAgICAgICAg
ICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgPSBlbnN1cmVCZWZvcmVBZnRlckNvbnRhaW5l
cihvd25lciwgdHlwZSwgcHNldWRvRWxlbWVudFN0eWxlLCBzdHlsZWRPYmplY3QtPm5vZGUoKSwg
aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICAgICBpZiAoIWdlbmVyYXRlZENvbnRlbnRDb250
YWluZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyLT5pc0NoaWxkQWxsb3dl
ZChyZW5kZXJlciwgcHNldWRvRWxlbWVudFN0eWxlKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0
ZWRDb250ZW50Q29udGFpbmVyLT5hZGRDaGlsZChyZW5kZXJlcik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gSGFuZGxlIHBsYWNlbWVudCBvZiBydW4taW5zLiBXZSBkbyB0aGUgcnVuLWluIHBs
YWNlbWVudCBhdCB0aGUgZW5kIHNpbmNlIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXIgY2FuIGdl
dCBkZXN0cm95ZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
SW1tZWRpYXRlUGFyZW50ID0gZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+cGFyZW50KCk7Ci0g
ICAgaWYgKGdlbmVyYXRlZENvbnRlbnRDb250YWluZXJJbW1lZGlhdGVQYXJlbnQtPmlzUmVuZGVy
QmxvY2soKSkKLSAgICAgICAgdG9SZW5kZXJCbG9jayhnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
SW1tZWRpYXRlUGFyZW50KS0+cGxhY2VSdW5JbklmTmVlZGVkKGdlbmVyYXRlZENvbnRlbnRDb250
YWluZXIsIFBsYWNlR2VuZXJhdGVkUnVuSW4pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgK
aW5kZXggM2Y2MDZkYjhkMzY4YzIwNmYyYTM5MTMwMjNjODNkMTZkY2U4Y2YyYS4uYjYzZjI0MmRl
MWJmZjk5NTkzMDI5NDdjZDhjMGIzMWYzZThmNjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaApAQCAtMjYsNyArMjYsNiBAQAogI2lm
bmRlZiBSZW5kZXJPYmplY3RDaGlsZExpc3RfaAogI2RlZmluZSBSZW5kZXJPYmplY3RDaGlsZExp
c3RfaAogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NiwxNiArNTUsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRl
ck9iamVjdCosIGJvb2wgbm90aWZ5UmVuZGVyZXIgPSB0cnVlKTsKICAgICB2b2lkIGluc2VydENo
aWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZSwgYm9vbCBub3RpZnlSZW5kZXJlciA9IHRydWUpOwogCi0gICAgdm9pZCB1
cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlw
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QgPSAwKTsKICAgICBSZW5kZXJPYmpl
Y3QqIGJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVy
KSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIGFmdGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogb3duZXIpIGNvbnN0OwogCi1wdWJsaWM6Ci0gICAgc3RhdGljIGJv
b2wgc19lbmFibGVVcGRhdGVCZWZvcmVBZnRlckNvbnRlbnQ7Ci0KIHByaXZhdGU6Ci0gICAgdm9p
ZCB1cGRhdGVCZWZvcmVBZnRlclN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQsIFBzZXVkb0lkIHR5
cGUsIFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50U3R5bGUpOwotCiAgICAgUmVuZGVyT2JqZWN0
KiBtX2ZpcnN0Q2hpbGQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2xhc3RDaGlsZDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAppbmRleCBlOTc2NWYyOGQy
MzJhMjhmZTQ3ZGRhZmUyMzQ1ZGM0Yjc4NzEzMmUzLi5iZTgzMTNiY2I4MzVmMWZiZGI3MjBkOGJl
ZDU4MzRlMzM3YjdjYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHAKQEAgLTg4LDE1ICs4OCw0IEBAIGJvb2wgUmVuZGVyUnVieVRleHQ6OmF2b2lkc0Zs
b2F0cygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVyUnVieVRleHQ6
OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKLXsKLSAgICAvLyBS
ZW5kZXJSdWJ5VGV4dCBtYW5hZ2VzIGl0cyBvd24gOmJlZm9yZSBhbmQgOmFmdGVyIGNvbnRlbnQK
LSAgICAvLyBhbmQgaXMgbm90IGhhbmRsZWQgYnkgaXRzIGFub255bW91cyB3cmFwcGVycyBSZW5k
ZXJSdWJ5UnVuCi0gICAgLy8gYW5kIFJlbmRlclJ1YnkuIFRoaXMgY29udHJhc3RzIHdpdGggb3Ro
ZXIgcnVieSBjaGlsZHJlbiwgd2hpY2gKLSAgICAvLyBhcmUgZW5jbG9zZWQgaW4gUmVuZGVyUnVi
eUJhc2UgYW5kIGhlbmNlIHRoZXkgYXJlIGFibGUgdG8KLSAgICAvLyB1cGRhdGUgdGhlaXIgOmJl
Zm9yZSwgOmFmdGVyIGNvbnRlbnQgKHNpbmNlIFJlbmRlclJ1YnlCYXNlCi0gICAgLy8gaXMgbm90
IGEgYW5vbnltb3VzIHdyYXBwZXIpLgotICAgIHJldHVybiBjaGlsZHJlbigpLT51cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQodGhpcywgcHNldWRvSWQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCmluZGV4IGY0NzMw
NGNjZGZmZGU5M2EzYmI0YWNiMzA2MDAzZGE0NWRiZjc0MzguLjNhNjc5MjY5ZjY3ZGEwNWZjYWJj
Yzg3MGUwYTRmNzQ4ODA0NTFhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCkBAIC00Niw4ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChQc2V1ZG9JZCk7Ci0KIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCA0NDM2MGZmNzQyY2Y0MjBk
NjhiMDkyOWY4NGM2M2QzNTI1ZjI4MzQzLi4wYTVhYTI5MWNkOGRhNDFhMzJjOTQxZjc3NTBlYWE4
NWMyZTM5ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAKQEAgLTU0LDE0ICs1NCw2IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OndpbGxCZVJlbW92ZWRG
cm9tVHJlZSgpCiAgICAgc2VjdGlvbigpLT5zZXROZWVkc0NlbGxSZWNhbGMoKTsKIH0KIAotdm9p
ZCBSZW5kZXJUYWJsZVJvdzo6dXBkYXRlQmVmb3JlQW5kQWZ0ZXJDb250ZW50KCkKLXsKLSAgICBp
ZiAoIWlzQW5vbnltb3VzKCkgJiYgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+
dXNlc0JlZm9yZUFmdGVyUnVsZXMoKSkgewotICAgICAgICBjaGlsZHJlbigpLT51cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQodGhpcywgQkVGT1JFKTsKLSAgICAgICAgY2hpbGRyZW4oKS0+dXBkYXRl
QmVmb3JlQWZ0ZXJDb250ZW50KHRoaXMsIEFGVEVSKTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVuZGVy
VGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlKCktPmRpc3BsYXkoKSA9PSBU
QUJMRV9ST1cpOwpAQCAtNjksOSArNjEsNiBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAg
IFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHByb3BhZ2F0
ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOwogCi0gICAgaWYgKHBhcmVudCgpKQotICAgICAg
ICB1cGRhdGVCZWZvcmVBbmRBZnRlckNvbnRlbnQoKTsKLQogICAgIGlmIChzZWN0aW9uKCkgJiYg
b2xkU3R5bGUgJiYgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpICE9IG9sZFN0eWxlLT5sb2dpY2Fs
SGVpZ2h0KCkpCiAgICAgICAgIHNlY3Rpb24oKS0+cm93TG9naWNhbEhlaWdodENoYW5nZWQocm93
SW5kZXgoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5k
ZXggMTFkZTRmMWJkYWJjZTZlMzY0ZmNiN2ZjMjU5MmFlMWUzNDZkMjQ5MS4uNDQwNWFhMTRlYzAz
ODBiZjYyNWYyMWQyN2FiNDUyMGM1NDgxM2Y0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogc2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGVTZWN0aW9u
KHBhcmVudCgpKTsgfQogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRv
UmVuZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCZWZv
cmVBbmRBZnRlckNvbnRlbnQoKTsKICAgICB2b2lkIHBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVk
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBzdGF0aWMgUmVuZGVyVGFi
bGVSb3cqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKaW5kZXggZGQ2ZjQyZjBmMTIzYzE1ZTI1MWMzNDZkYzM3YzRkOGE3MThiMjlkMy4uMTA3YWZm
MTEzNjUwNjY5ODczZWZlYWRmYTVhN2ZiMjQ5MmE1NjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNiBAQCB2
b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZAogCiAgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBiZWZv
cmVDaGlsZC0+aXNUYWJsZVJvdygpKTsKICAgICBSZW5kZXJCb3g6OmFkZENoaWxkKGNoaWxkLCBi
ZWZvcmVDaGlsZCk7Ci0gICAgdG9SZW5kZXJUYWJsZVJvdyhjaGlsZCktPnVwZGF0ZUJlZm9yZUFu
ZEFmdGVyQ29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6ZW5zdXJlUm93
cyh1bnNpZ25lZCBudW1Sb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAppbmRleCA5Nzc3NTFhNzM2ODY0NTRlZjhhZWEyM2UwYTc5YTU3Nzg2NGNmMWE0Li41ODhl
OTYzNTM2ODU5NDEzMjJiZjRlMTc1ODU4OWY0NjMzZWVlMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVuZGVy
V2lkZ2V0OjpkZXN0cm95KCkKICAgICAvLyBHcmFiIHRoZSBhcmVuYSBmcm9tIG5vZGUoKS0+ZG9j
dW1lbnQoKS0+cmVuZGVyQXJlbmEoKSBiZWZvcmUgY2xlYXJpbmcgdGhlIG5vZGUgcG9pbnRlci4K
ICAgICAvLyBDbGVhciB0aGUgbm9kZSBiZWZvcmUgZGVyZWYtaW5nLCBhcyB0aGlzIG1heSBiZSBk
ZWxldGVkIHdoZW4gZGVyZWYgaXMgY2FsbGVkLgogICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJl
bmRlckFyZW5hKCk7Ci0gICAgc2V0Tm9kZSgwKTsKKyAgICBjbGVhck5vZGUoKTsKICAgICBkZXJl
ZihhcmVuYSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzQ5OTUxYTE2ZDliNTA3ZGI4MjJjMGEyOTQyMDE4ZDRi
Nzg1ODBiLi4wZGE5ZjFmNWRkMjNjNTg2NjE2MjllMGE1MTM4NWMzMTc1Njk0Yjc5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTItMTItMTAgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU3dpdGNoIHRvIG5ldyBQc2V1ZG9FbGVtZW50IGJhc2VkIDpi
ZWZvcmUgYW5kIDphZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3QgZm9yIGJsb2NrIGdlbmVyYXRlZCBjb250ZW50IGluc2lkZSBpbmxp
bmVzIHdoaWNoIGlzIG5vdyBzdXBwb3J0ZWQKKyAgICAgICAgcHJvcGVybHksIGFuZCBhbHNvIGZv
ciB1c2luZyBib3gtb3JpZW50IGFuZCByZW9yZGVyaW5nLgorCisgICAgICAgIGJlZm9yZS1jb250
ZW50LWNvbnRpbnVhdGlvbi5odG1sJ3MgZXhwZWN0YXRpb25zIGNoYW5nZSBiZWNhdXNlIHdlIG5v
dworICAgICAgICBzdXBwb3J0IGJsb2NrIGNvbnRlbnQgcHJvcGVybHkuCisKKyAgICAgICAgSSBz
a2lwcGVkIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3RhYmxlLXJvdy1ncm91cC10by1pbmxp
bmUuaHRtbAorICAgICAgICB3aGljaCBuZWVkcyBhIHJlYmFzZWxpbmUgYWZ0ZXIgdGhpcyB0aGlz
IGxhbmRzLiBVbmZvcnR1bmF0ZWx5IHRoZSB0ZXN0CisgICAgICAgIG91dHB1dCBpcyBzdGlsbCB3
cm9uZyBiZWNhdXNlIHdlIGxlYXZlIGFuIGFub255bW91cyBSZW5kZXJUYWJsZSBpbiB0aGUKKyAg
ICAgICAgdHJlZSwgYnV0IHRoYXQgYnVnIGhhcyBhbHdheXMgYmVlbiB0aGVyZS4KKworICAgICAg
ICBJIGFsc28gc2tpcHBlZCBmYXN0L2Nzcy9lbXB0eS1nZW5lcmF0ZWQtY29udGVudC5odG1sIHdo
aWNoIG5lZWRzIHJlYmFzZWxpbmVzCisgICAgICAgIGFzIHdlIG5vIGxvbmdlciBjcmVhdGUgZXh0
cmEgYW5vbnltb3VzIGJsb2NrcywgdGhvdWdoIHRoZSByZWFzb24gaXMgbm90IGNsZWFyCisgICAg
ICAgIHRvIG1lLgorCisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYmVmb3Jl
LWNvbnRlbnQtY29udGludWF0aW9uLWNoYWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWluc2lk
ZS1pbmxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvYm94LW9yaWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9ib3gtb3JpZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTItMTAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgZm9yIENTUyB3aWRvd3MgYW5kIG9ycGhhbnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JlZm9yZS1jb250
ZW50LWNvbnRpbnVhdGlvbi1jaGFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9iZWZvcmUtY29udGVudC1jb250aW51YXRpb24tY2hhaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDA0OTNhYTE2MjA5ZDY5M2U5ZmE5MmM1OGY1YmRmYWZhMjM5YWU4Mjgu
LmJhYTgyOTNiMTMwM2Y4MmE3MTZhYWFmYzBlM2U3MjIyMWFlMTY3MDQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JlZm9yZS1jb250ZW50LWNvbnRp
bnVhdGlvbi1jaGFpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvYmVmb3JlLWNvbnRlbnQtY29udGludWF0aW9uLWNoYWluLWV4cGVjdGVk
LnR4dApAQCAtMywxMyArMywxMyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDQxNgogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NDE2CiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NDAwCisg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgwCisgICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAgW2NvbG9yPSMwMDgwMDBdCiAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgyMDAKLSAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDIwMHgyMDAgW2NvbG9yPSMwMDgw
MDBdCi0gICAgICAgICAgUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgMjAw
eDIwMCBbY29sb3I9IzAwMDBGRl0KLSAgICAgICAgICAgIFJlbmRlclRleHQgYXQgKDAsMCkgc2l6
ZSAyMDB4MjAwCi0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwMDogIkEi
Ci0gICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMDApIHNpemUgNzg0eDAKLSAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkgYXQgKDAsMCkgc2l6ZSA3ODR4MjAw
IFtjb2xvcj0jMDAwMEZGXQorICAgICAgICAgIFJlbmRlclRleHQgYXQgKDAsMCkgc2l6ZSAyMDB4
MjAwCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDA6ICJBIgorICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMDApIHNpemUgNzg0eDAgW2NvbG9yPSMwMDgwMDBd
CiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMDApIHNpemUgNzg0eDIwMAog
ICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjAweDIwMCBbY29sb3I9
IzAwODAwMF0KICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMDB4
MjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9i
bG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjViYmJkNTc5NDA1NmFhY2RhNThkNTQyMmU3YjdkMDRiZWUxMDhhYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Jsb2NrLWlu
c2lkZS1pbmxpbmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8c3Bhbj4KKyAgICA8ZGl2PlNob3VsZCBiZSBvbiBpdCdzIG93biBsaW5lLCA8L2Rpdj4K
KyAgICBhbmQgdGhpcyB0b28uCis8L3NwYW4+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9ibG9jay1pbnNpZGUtaW5saW5lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTQwYTE2YTYzOGVhYWZjNTc1YzY0OWMyYjM0NzUzYTYyODk4NTA2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2Js
b2NrLWluc2lkZS1pbmxpbmUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4K
KworPHN0eWxlPgorc3BhbjpiZWZvcmUgeworICBkaXNwbGF5OiBibG9jazsKKyAgY29udGVudDog
IlNob3VsZCBiZSBvbiBpdCdzIG93biBsaW5lLCAiOworfQorPC9zdHlsZT4KKworPHNwYW4+YW5k
IHRoaXMgdG9vLjwvc3Bhbj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L2JveC1vcmllbnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTAzY2ZjYTJlMjQxZDY2MGRjYTE3ZjY3OWI0YjRlMDhmZTViZjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvYm94LW9yaWVudC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c3R5bGU+
CisuYmVmb3JlIHsKKyAgYmFja2dyb3VuZDpyZWQ7Cit9Cis8L3N0eWxlPgorCis8aDE+Tm9ybWFs
PC9oMT4KKzxkaXY+CisgIDxkaXYgY2xhc3M9ImJlZm9yZSI+QmVmb3JlIGNvbnRlbnQ8L2Rpdj4K
KyAgPGRpdj4xc3QgaW4gY29kZSAtIDFuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2PjJuZCBpbiBj
b2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KKworPGgxPlJlb3JkZXJlZDwvaDE+Cis8
ZGl2PgorICA8ZGl2IGNsYXNzPSJiZWZvcmUiPkJlZm9yZSBjb250ZW50PC9kaXY+CisgIDxkaXY+
Mm5kIGluIGNvZGUgLSAxc3QgaW4gb3JkZXI8L2Rpdj4KKyAgPGRpdj4xc3QgaW4gY29kZSAtIDJu
ZCBpbiBvcmRlcjwvZGl2PgorPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9ib3gtb3JpZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9ib3gtb3JpZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1NWUwZjFm
NjYzNDdlZTM5MmVhNGUzNGE4MGFiMmJhYWFhZjYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L2JveC1vcmllbnQuaHRtbApAQCAtMCww
ICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHN0eWxlPgorLmNvbnRhaW5lciB7CisgIGRp
c3BsYXk6IGJveDsKKyAgZGlzcGxheTogLW1vei1ib3g7CisgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICBib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgLW1vei1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsK
KyAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKK30KKworLmNvbnRhaW5lcjpiZWZvcmUg
eworICBkaXNwbGF5OiBibG9jazsKKyAgY29udGVudDogIkJlZm9yZSBjb250ZW50IjsKKyAgYmFj
a2dyb3VuZDpyZWQ7Cit9CisKKy5jMW8yIHsKKyAgICAtbW96LWJveC1vcmRpbmFsLWdyb3VwOiAy
OworICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7IAorICAgIGJveC1vcmRpbmFsLWdy
b3VwOiAyOworfQorCisuYzJvMSB7CisgICAgLW1vei1ib3gtb3JkaW5hbC1ncm91cDogMTsKKyAg
ICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxOyAKKyAgICBib3gtb3JkaW5hbC1ncm91cDog
MTsKK30KKzwvc3R5bGU+CisKKzxoMT5Ob3JtYWw8L2gxPgorPGRpdiBjbGFzcz0iY29udGFpbmVy
Ij4KKyAgPGRpdj4xc3QgaW4gY29kZSAtIDFuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2PjJuZCBp
biBjb2RlIC0gMm5kIGluIG9yZGVyPC9kaXY+Cis8L2Rpdj4KKworPGgxPlJlb3JkZXJlZDwvaDE+
Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICA8ZGl2IGNsYXNzPSJjMW8yIj4xc3QgaW4gY29k
ZSAtIDJuZCBpbiBvcmRlcjwvZGl2PgorICA8ZGl2IGNsYXNzPSJjMm8xIj4ybmQgaW4gY29kZSAt
IDFzdCBpbiBvcmRlcjwvZGl2PgorPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNDQ5NzBkMjZhOTkyYmI1YWE0OTdmZWE2MDQ3
MWZhZjQ5ZjdjMDBiLi5iZDUwMjkzZDQwYjgwNjRiMTgxZWE2NTY2ZDZiZTUwMDk5YjBiMTg5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTM5MjQsNiArMzkyNCwxMCBAQCB3ZWJraXQub3JnL2IvMTE2NDUgWyBNYWMgQW5kcm9pZCBdIGZh
c3QvdGFibGUvMDI1Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDExNzcgc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdVc2VFbGVtZW50LWRvbS1yZXF1aXJlZEZlYXR1cmVzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEwMTE3NyBzdmcvcmVwYWludC9p
bm5lci1zdmctY2hhbmdlLXZpZXdCb3guc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAor
IyBOZWVkcyByZWJhc2VsaW5lIGFmdGVyIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0NDYyCit3ZWJraXQub3JnL2IvOTg2ODcgZmFzdC9jc3MtZ2VuZXJhdGVk
LWNvbnRlbnQvdGFibGUtcm93LWdyb3VwLXRvLWlubGluZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTA0NTk1IGZhc3QvY3NzL2VtcHR5LWdlbmVyYXRlZC1jb250ZW50Lmh0bWwgWyBG
YWlsdXJlIF0KKwogIyBUaGVzZSBhcmUgcmVhbCBmYWlsdWVzIGR1ZSB0byA5NTEyMS4KICMgVGhp
cyBpcyBzcGlsbGluZyBjYXVzZWQgYnkgTEFOQ1pPUzMgc2NhbGluZyBhbGdvcml0aG0gdGhhdCBz
YW1wbGVzIG91dHNpZGUgdGhlIHNvdXJjZSByZWN0Lgogd2Via2l0Lm9yZy9iLzk1MTIxIFsgV2lu
IE1hYyBBbmRyb2lkIF0gZmFzdC9pbWFnZXMvcGl4ZWwtY3JhY2staW1hZ2UtYmFja2dyb3VuZC13
ZWJraXQtdHJhbnNmb3JtLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjcyOGQxNDg5OGE4MDA1NzA3
YjlhOGJlY2RhOTQ4ZWE2YTIzNDVmNC4uZmQ0N2M1NGNlMjYxMzRlZTEyZmMyNGVjNDZlODRjNjE2
MGNlOGIwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTExNTMsNiArMTE1MywxMCBAQCB3ZWJraXQub3JnL2IvOTA5NTEgZmFzdC90ZXh0L3NoYXBpbmcK
IHdlYmtpdC5vcmcvYi8xMDExNzcgc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdVc2VFbGVtZW50LWRv
bS1yZXF1aXJlZEZlYXR1cmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0
Lm9yZy9iLzEwMTE3NyBzdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3guc3ZnIFsg
SW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAorIyBOZWVkcyByZWJhc2VsaW5lIGFmdGVyIGJ1ZyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDYyCit3ZWJraXQub3Jn
L2IvOTg2ODcgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvdGFibGUtcm93LWdyb3VwLXRvLWlu
bGluZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA0NTk1IGZhc3QvY3NzL2VtcHR5
LWdlbmVyYXRlZC1jb250ZW50Lmh0bWwgWyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzkzMjQ3
IFsgRGVidWcgXSBmYXN0L2xpc3RzL2xpc3QtbWFya2VyLXJlbW92ZS1jcmFzaC5odG1sIFsgQ3Jh
c2ggXQogCiAjIChyMTI0NDg0KSBpbnNwZWN0b3IvZGV2aWNlLW9yaWVudGF0aW9uLXN1Y2Nlc3Mu
aHRtbCBmYWlsaW5nIG9uIE1hYyBwb3J0cwo=
</data>
<flag name="review"
          id="195232"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="195305"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>