<?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>57088</bug_id>
          
          <creation_ts>2011-03-25 00:18:29 -0700</creation_ts>
          <short_desc>Refactoring: Editor::TextCheckingOptions should be replaced with TextCheckingType</short_desc>
          <delta_ts>2011-05-15 19:46:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>55571</dependson>
    
    <dependson>56085</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373367</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-25 00:18:29 -0700</bug_when>
    <thetext>These two are almost identical. We should use one of them.
And the enum is actually a bitmask. So TextCheckingType should be a class, which has bitfields for each flag.

Marked blocked by 2 refactoring bugs, which touch the spellchecking area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381080</commentid>
    <comment_count>1</comment_count>
      <attachid>88559</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-06 19:49:04 -0700</bug_when>
    <thetext>Created attachment 88559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381082</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 20:09:57 -0700</bug_when>
    <thetext>Attachment 88559 did not build on chromium:
Build output: http://queues.webkit.org/results/8346447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381085</commentid>
    <comment_count>3</comment_count>
      <attachid>88562</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-06 20:19:12 -0700</bug_when>
    <thetext>Created attachment 88562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381104</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 20:47:04 -0700</bug_when>
    <thetext>Attachment 88562 did not build on chromium:
Build output: http://queues.webkit.org/results/8348427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381224</commentid>
    <comment_count>5</comment_count>
      <attachid>88562</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 03:51:28 -0700</bug_when>
    <thetext>Comment on attachment 88562
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:2226
&gt; +    bool shouldMarkSpelling = textCheckingTypes.spelling();
&gt; +    bool shouldMarkGrammar = textCheckingTypes.grammar();
&gt; +    bool shouldPerformReplacement = textCheckingTypes.replacement();
&gt; +    bool shouldShowCorrectionPanel = textCheckingTypes.correctionPanel();
&gt; +    bool shouldCheckForCorrection = shouldShowCorrectionPanel || textCheckingTypes.correction();

I think these member functions should be named as isSpelling, isGrammar, etc...

&gt; Source/WebCore/editing/Editor.cpp:3623
&gt; -TextCheckingTypeMask Editor::textCheckingTypeMaskFor(TextCheckingOptions textCheckingOptions)
&gt; +TextCheckingTypes Editor::addTextCheckSettings(const TextCheckingTypes&amp; textCheckingTypes)

I don&apos;t think this function name makes sense since you&apos;re not modifying the original textCheckingTypes.  Something like resolveReplacedTextCheckingType might work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381287</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-07 06:38:02 -0700</bug_when>
    <thetext>Attachment 88562 did not build on chromium:
Build output: http://queues.webkit.org/results/8341639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381513</commentid>
    <comment_count>7</comment_count>
      <attachid>88665</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-07 11:22:19 -0700</bug_when>
    <thetext>Created attachment 88665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381515</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-07 11:23:05 -0700</bug_when>
    <thetext>Hi Ryosuke, thank you for taking a look!
I update the patch to your feedback.

(In reply to comment #5)
&gt; (From update of attachment 88562 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88562&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:2226
&gt; &gt; +    bool shouldMarkSpelling = textCheckingTypes.spelling();
&gt; &gt; +    bool shouldMarkGrammar = textCheckingTypes.grammar();
&gt; &gt; +    bool shouldPerformReplacement = textCheckingTypes.replacement();
&gt; &gt; +    bool shouldShowCorrectionPanel = textCheckingTypes.correctionPanel();
&gt; &gt; +    bool shouldCheckForCorrection = shouldShowCorrectionPanel || textCheckingTypes.correction();
&gt; 
&gt; I think these member functions should be named as isSpelling, isGrammar, etc...
Fixed.

&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3623
&gt; &gt; -TextCheckingTypeMask Editor::textCheckingTypeMaskFor(TextCheckingOptions textCheckingOptions)
&gt; &gt; +TextCheckingTypes Editor::addTextCheckSettings(const TextCheckingTypes&amp; textCheckingTypes)
&gt; 
&gt; I don&apos;t think this function name makes sense since you&apos;re not modifying the original textCheckingTypes.  Something like resolveReplacedTextCheckingType might work.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383359</commentid>
    <comment_count>9</comment_count>
      <attachid>89049</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-11 12:15:42 -0700</bug_when>
    <thetext>Created attachment 89049
Updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387006</commentid>
    <comment_count>10</comment_count>
      <attachid>89871</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-15 16:18:45 -0700</bug_when>
    <thetext>Created attachment 89871
Updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387176</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-15 20:07:41 -0700</bug_when>
    <thetext>Attachment 89871 did not build on mac:
Build output: http://queues.webkit.org/results/8457309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387184</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-15 21:10:16 -0700</bug_when>
    <thetext>Attachment 89871 did not build on mac:
Build output: http://queues.webkit.org/results/8436375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388537</commentid>
    <comment_count>13</comment_count>
      <attachid>90210</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 09:08:17 -0700</bug_when>
    <thetext>Created attachment 90210
A build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388725</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 13:01:43 -0700</bug_when>
    <thetext>Build passed. It&apos;s ready to review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388859</commentid>
    <comment_count>15</comment_count>
      <attachid>90210</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-19 15:44:11 -0700</bug_when>
    <thetext>Comment on attachment 90210
A build fix

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

&gt; Source/WebCore/editing/Editor.cpp:3249
&gt; -    bool shouldMarkSpelling = textCheckingOptions &amp; MarkSpelling;
&gt; -    bool shouldMarkGrammar = textCheckingOptions &amp; MarkGrammar;
&gt; -    bool shouldShowCorrectionPanel = textCheckingOptions &amp; ShowCorrectionPanel;
&gt; -    bool shouldCheckForCorrection = shouldShowCorrectionPanel || (textCheckingOptions &amp; CheckForCorrection);
&gt; -
&gt; -    TextCheckingTypeMask checkingTypes = 0;
&gt; -    if (shouldMarkSpelling)
&gt; -        checkingTypes |= TextCheckingTypeSpelling;
&gt; -    if (shouldMarkGrammar)
&gt; -        checkingTypes |= TextCheckingTypeGrammar;
&gt; -    if (shouldCheckForCorrection)
&gt; -        checkingTypes |= TextCheckingTypeCorrection;
&gt; -
&gt; +    TextCheckingTypes result = types;

This change is problematic at least on Mac. In original code, TextCheckingTypeCorrection will be set if ShowCorrectionPanel is set in textCheckingOptions. This is not the case in new code. The end result is that, if types.isCorrectionPanel() is true, but types.isCorrection() is false, the spell checker will not check for correction. I suggest to add code here to call setCorrection() if types.isCorrectionPanel() is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388950</commentid>
    <comment_count>16</comment_count>
      <attachid>90281</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 17:48:50 -0700</bug_when>
    <thetext>Created attachment 90281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388951</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-19 17:50:52 -0700</bug_when>
    <thetext>Hi Jia, thank you for your feedback! 
I updated to patch to address your point.
I confused the relationship between checking and showing the correction.
 

(In reply to comment #15)
&gt; (From update of attachment 90210 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90210&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3249
&gt; &gt; -    bool shouldMarkSpelling = textCheckingOptions &amp; MarkSpelling;
&gt; &gt; -    bool shouldMarkGrammar = textCheckingOptions &amp; MarkGrammar;
&gt; &gt; -    bool shouldShowCorrectionPanel = textCheckingOptions &amp; ShowCorrectionPanel;
&gt; &gt; -    bool shouldCheckForCorrection = shouldShowCorrectionPanel || (textCheckingOptions &amp; CheckForCorrection);
&gt; &gt; -
&gt; &gt; -    TextCheckingTypeMask checkingTypes = 0;
&gt; &gt; -    if (shouldMarkSpelling)
&gt; &gt; -        checkingTypes |= TextCheckingTypeSpelling;
&gt; &gt; -    if (shouldMarkGrammar)
&gt; &gt; -        checkingTypes |= TextCheckingTypeGrammar;
&gt; &gt; -    if (shouldCheckForCorrection)
&gt; &gt; -        checkingTypes |= TextCheckingTypeCorrection;
&gt; &gt; -
&gt; &gt; +    TextCheckingTypes result = types;
&gt; 
&gt; This change is problematic at least on Mac. In original code, TextCheckingTypeCorrection will be set if ShowCorrectionPanel is set in textCheckingOptions. This is not the case in new code. The end result is that, if types.isCorrectionPanel() is true, but types.isCorrection() is false, the spell checker will not check for correction. I suggest to add code here to call setCorrection() if types.isCorrectionPanel() is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389423</commentid>
    <comment_count>18</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-20 12:17:07 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=90281) [details]
&gt; Patch

Thanks for fixing this. This patch looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397126</commentid>
    <comment_count>19</comment_count>
      <attachid>90281</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 09:35:59 -0700</bug_when>
    <thetext>Comment on attachment 90281
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:1981
&gt; +                                 &amp;&amp; (isAutomaticQuoteSubstitutionEnabled()

I don&apos;t think we do these deep indentation.  Ditto about other places.

&gt; Source/WebCore/editing/Editor.cpp:3259
&gt; +    if (types.isReplacement()) {
&gt; +        result.setLink(isAutomaticLinkDetectionEnabled());
&gt; +        result.setQuote(isAutomaticQuoteSubstitutionEnabled());
&gt; +        result.setDash(isAutomaticDashSubstitutionEnabled());
&gt; +        result.setReplacement(isAutomaticTextReplacementEnabled());
&gt; +        result.setCorrection(types.isSpelling() &amp;&amp; isAutomaticSpellingCorrectionEnabled());
&gt;      }

It seems silly that we have to copy flags manually like this.  Can&apos;t we make this function a member of TextCheckingTypes and use bitwise operations?  Also, it&apos;s hard to verify that adding Correction to TypeCheckingTypes doesn&apos;t regress anything.  Could you explain briefly why it&apos;s okay?

&gt; Source/WebCore/platform/text/TextChecking.h:54
&gt; +        Correction  = 1 &lt;&lt; 9,

This is a new value.  I can&apos;t tell easily from the patch whether this is correct or not.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:860
&gt; +static unsigned toNSTypes(const TextCheckingTypes&amp; types)

Don&apos;t they normally name these kinds of functions kit?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:241
&gt; +static unsigned toNSTypes(const TextCheckingTypes&amp; types)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402740</commentid>
    <comment_count>20</comment_count>
      <attachid>93265</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-12 01:21:46 -0700</bug_when>
    <thetext>Created attachment 93265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402741</commentid>
    <comment_count>21</comment_count>
      <attachid>90281</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-12 01:22:38 -0700</bug_when>
    <thetext>Comment on attachment 90281
Patch

Hi Ryosuke, 
I&apos;m sorry for my slow response. I&apos;d like to come back this now.

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:1981
&gt;&gt; +                                 &amp;&amp; (isAutomaticQuoteSubstitutionEnabled()
&gt; 
&gt; I don&apos;t think we do these deep indentation.  Ditto about other places.

Fixed.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3259
&gt;&gt;      }
&gt; 
&gt; It seems silly that we have to copy flags manually like this.  Can&apos;t we make this function a member of TextCheckingTypes and use bitwise operations?  Also, it&apos;s hard to verify that adding Correction to TypeCheckingTypes doesn&apos;t regress anything.  Could you explain briefly why it&apos;s okay?

No, we cannot. because flags source is Editor class (or Settings class) and there is no grouping mechanism for these flag on settings side.
Actually this code is what old code was doing.

&gt;&gt; Source/WebCore/platform/text/TextChecking.h:54
&gt;&gt; +        Correction  = 1 &lt;&lt; 9,
&gt; 
&gt; This is a new value.  I can&apos;t tell easily from the patch whether this is correct or not.

Actually, what new is &quot;TextCheckingTypes::CorrectionPanel&quot; &quot;TextCheckingTypes::Correction&quot; has associated old enum value
TextCheckingTypeCorrection. The value TextCheckingTypes::Correction panel came from Editor:: ShowCorrectionPanel.

The goal of this patch is unifying TextCheckingType, which is for carring result type,
and Editor::TextCheckingOptionFlags, which is for specifying request type, into TextCheckingTypes.
because the results basically contain what the caller requested.

So code paths where originally TextCheckingType don&apos;t need to care about CorrectionPanel.
The code where originally used Editor:: ShowCorrectionPanel should replace them with  TextCheckingTypes::CorrectionPanel.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:861
&gt; +{

That&apos;s right. Renamed.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:242
&gt; +{

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402907</commentid>
    <comment_count>22</comment_count>
      <attachid>93265</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-12 09:56:25 -0700</bug_when>
    <thetext>Comment on attachment 93265
Patch

Is there any way to do this in more smaller steps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403334</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-12 19:53:28 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 93265 [details])
&gt; Is there any way to do this in more smaller steps?
I see. I&apos;ll try to use plain enum instead of a new class,
and concentrate to eliminate Editor::TextCheckingOptions at first.
Thanks for your feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403487</commentid>
    <comment_count>24</comment_count>
      <attachid>93437</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-13 05:22:20 -0700</bug_when>
    <thetext>Created attachment 93437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403488</commentid>
    <comment_count>25</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-13 05:23:34 -0700</bug_when>
    <thetext>Darin is right.
Now the change becomes small and obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403611</commentid>
    <comment_count>26</comment_count>
      <attachid>93437</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-13 09:47:54 -0700</bug_when>
    <thetext>Comment on attachment 93437
Patch

LGTM. this patch is so much easier to review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404254</commentid>
    <comment_count>27</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-15 19:46:31 -0700</bug_when>
    <thetext>Committed r86520: &lt;http://trac.webkit.org/changeset/86520&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88559</attachid>
            <date>2011-04-06 19:49:04 -0700</date>
            <delta_ts>2011-04-06 20:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110406194903.patch</filename>
            <type>text/plain</type>
            <size>71899</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkM2U3MjY1YmRhZDFkMDlk
ZDE1Yjg2YTFlOTNjZDIyNDg1MWU3MTA0Li4wYWVlMDNkOWYwY2Y5NTUwY2NlNWFmZDBjMzdhNDY2
OWFjYzY5MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphZGRUZXh0Q2hlY2tTZXR0aW5ncyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJDb3JlOjp0
b01hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVjayk6
CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxS
YW5nZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXM6OlRleHRDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjpzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlczo6Z3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
bGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6cXVvdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmRhc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OnJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjpjb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzOjpzZXRTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlczo6c2V0R3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
c2V0TGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0UXVvdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldERhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldFJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRDb3JyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlczo6c2V0RmxhZyk6CisKIDIwMTEtMDQtMDYgIFN0ZXBoYW5pZSBMZXdpcyAg
PHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggOTBlYjgyNWMwNDc0OWM1ZDNlY2VhZDMzMmIy
YzAwNWM3YjdiZmMxYi4uY2QxYjQ3ZjFmNTUwYWZiY2FhMmY5NjVjMzg4OWQwODQ2ZTQzODQyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRp
dG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQsCiAKICAgICBOb2RlKiBub2RlVG9DaGVjayA9IG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKG1fc3BlbGxDaGVja2VyLT5j
YW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGVUb0NoZWNrKSkKLSAgICAgICAgbV9zcGVsbENoZWNr
ZXItPnJlcXVlc3RDaGVja2luZ0Zvcih0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihNYXJrU3BlbGxp
bmcgfCBNYXJrR3JhbW1hciksIG5vZGVUb0NoZWNrKTsKKyAgICAgICAgbV9zcGVsbENoZWNrZXIt
PnJlcXVlc3RDaGVja2luZ0ZvcihhZGRUZXh0Q2hlY2tTZXR0aW5ncyhUZXh0Q2hlY2tpbmdUeXBl
cyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlczo6R3JhbW1h
cikpLCBub2RlVG9DaGVjayk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSkKQEAgLTIwODUsMzEgKzIwODUsMjYgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFy
dCwKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsKICNlbmRp
ZgotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7Ci0gICAg
aWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMgfD0gTWFya1NwZWxsaW5nOwotCisgICAgVGV4dENoZWNraW5nVHlwZXMgdGV4
dENoZWNraW5nVHlwZXM7CisgICAgdGV4dENoZWNraW5nVHlwZXMuc2V0U3BlbGxpbmcoaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSk7CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQotICAgIGlmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgp
Ci0gICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQotICAgICAgICB8
fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgfHwgaXNBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKLSAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdP
cHRpb25zICYgTWFya1NwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVu
YWJsZWQoKSkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gUGVyZm9ybVJlcGxhY2Vt
ZW50OworICAgIHRleHRDaGVja2luZ1R5cGVzLnNldFJlcGxhY2VtZW50KGlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
RW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdUeXBlcy5zcGVsbGluZygpKSAmJiBpc0F1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkpOwogI2VuZGlmCisgICAgdGV4dENo
ZWNraW5nVHlwZXMuc2V0R3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAKLSAg
ICBpZiAoIXRleHRDaGVja2luZ09wdGlvbnMgJiAoTWFya1NwZWxsaW5nIHwgUGVyZm9ybVJlcGxh
Y2VtZW50KSkKKyAgICBpZiAoIXRleHRDaGVja2luZ1R5cGVzLnNwZWxsaW5nKCkgJiYgIXRleHRD
aGVja2luZ1R5cGVzLnJlcGxhY2VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8
PSBNYXJrR3JhbW1hcjsKLQogICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZp
c2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFy
eSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIGlm
ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXIpIHsKKyAgICBpZiAodGV4dENoZWNr
aW5nVHlwZXMuZ3JhbW1hcigpKSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRT
ZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVu
ZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKHRleHRDaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAg
IG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nVHlw
ZXMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jk
cy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9CiAKICNlbHNlCkBAIC0yMjE4LDE3
ICsyMjEzLDE3IEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihzZWxl
Y3Rpb24sIGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCi12b2lkIEVkaXRvcjo6
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3Jh
bW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIHRleHRDaGVja2luZ1R5cGVzLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKICNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQogICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9j
b3JyZWN0aW9uIGF0IHRoaXMgbW9tZW50LgogICAgIEFTU0VSVCghbV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLnJhbmdlVG9CZVJlcGxhY2VkKTsKIAotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3VsZE1hcmtH
cmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJvb2wgc2hv
dWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBs
YWNlbWVudDsKLSAgICBib29sIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9y
Q29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09w
dGlvbnMgJiBDaGVja0ZvckNvcnJlY3Rpb24pOworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nVHlwZXMuc3BlbGxpbmcoKTsKKyAgICBib29sIHNob3VsZE1hcmtHcmFt
bWFyID0gdGV4dENoZWNraW5nVHlwZXMuZ3JhbW1hcigpOworICAgIGJvb2wgc2hvdWxkUGVyZm9y
bVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nVHlwZXMucmVwbGFjZW1lbnQoKTsKKyAgICBib29s
IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdUeXBlcy5jb3JyZWN0aW9u
UGFuZWwoKTsKKyAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dD
b3JyZWN0aW9uUGFuZWwgfHwgdGV4dENoZWNraW5nVHlwZXMuY29ycmVjdGlvbigpOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5k
ZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjI3
NSwxMCArMjI3MCwxMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAg
ICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdyYXBo
LnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1h
c2tGb3IodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUZXh0Q2hlY2tTZXR0aW5ncyh0ZXh0Q2hlY2tp
bmdUeXBlcyksIHJlc3VsdHMpOwogICAgIGVsc2UKICAgICAgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgc3Bl
bGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENoZWNraW5nT3B0
aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUZXh0Q2hlY2tTZXR0aW5ncyh0ZXh0Q2hlY2tpbmdUeXBlcyksIHJlc3VsdHMpOwog
ICAgICAgICAKIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKQEAgLTIzMDEsNyAr
MjI5Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgIC8vIDIuIFJlc3VsdCBm
YWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVl
c3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2Us
IHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVk
IHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJr
U3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBy
ZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVz
dWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAh
cmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtT
cGVsbGluZyAmJiByZXN1bHQtPnR5cGUuc3BlbGxpbmcoKSAmJiByZXN1bHRMb2NhdGlvbiA+PSBz
cGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1
bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1
b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJl
c3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGlu
Z1JhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3Vs
dExlbmd0aCk7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTApAQCAtMjMwOSw3ICsy
MzA0LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICNlbmRpZiAvLyBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgICAgICAgICBt
aXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMo
KS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tp
bmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZS5ncmFtbWFyKCkgJiYg
Z3JhbW1hclBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uLCByZXN1
bHRMZW5ndGgpKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1
bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBy
ZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICBjb25zdCBHcmFt
bWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwpAQCAtMjMyMCwxNSArMjMx
NSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0
aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQotICAgICAgICAgICAgICAg
ICAgICAmJiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCi0gICAgICAgICAg
ICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUKLSAgICAg
ICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVEYXNoCi0g
ICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUmVw
bGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5
cGUubGluaygpIHx8IHJlc3VsdC0+dHlwZS5xdW90ZSgpIHx8IHJlc3VsdC0+dHlwZS5kYXNoKCkg
fHwgcmVzdWx0LT50eXBlLnJlcGxhY2VtZW50KCkgfHwgcmVzdWx0LT50eXBlLmNvcnJlY3Rpb24o
KSkpIHsKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3Qg
aGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNp
bmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAgICAg
IGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3Vs
dExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVj
dGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFu
Z2VFbmRPZmZzZXQgfHwgIXJlc3VsdC0+dHlwZS5jb3JyZWN0aW9uKCkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpbnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1
bHQtPnJlcGxhY2VtZW50Lmxlbmd0aCgpOwpAQCAtMjM0MiwxMyArMjMzMywxMyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25U
b1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERPV05TVFJFQU0pOwogCiAgICAgICAgICAg
ICAvLyBhZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0
aGV5IGFyZSB0eXBlZAotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlTGluayAmJiBzZWxlY3Rpb25PZmZzZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExl
bmd0aCArIDEpCisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmxpbmsoKSAmJiBzZWxlY3Rp
b25PZmZzZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZzsKIAog
ICAgICAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBzcGVsbGluZyBpbiBhbiBhbHJlYWR5LWNvcnJl
Y3RlZCB3b3JkLgotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbikgeworICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5jb3JyZWN0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRv
UmVwbGFjZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
KiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgICAgICAgICAg
ICAgIGlmIChtYXJrZXJzLT5oYXNNYXJrZXJzKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQpKSB7CkBAIC0yMzg1LDcgKzIzNzYsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGlu
aykgeworICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5saW5rKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSk7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yMzk0LDcgKzIz
ODUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgfSBlbHNlIGlmIChj
YW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50LCByYW5nZVRv
UmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKSB7CiAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kID0gZmFsc2U7CiAjaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTAotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZS5jb3JyZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHVzZVNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKHVzZVNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpCkBAIC0yNDE3LDcgKzI0MDgsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzQm91bmRhcnlP
ZmZzZXQgPSBzZWxlY3Rpb25PZmZzZXQgLSAxOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmNvcnJlY3Rpb24oKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4g
ZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgogICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VkUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFwaC5z
dWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzVG9B
ZGQgPSBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCk7CkBAIC0yNDUwLDcgKzI0NDEsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhU
ZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIH0KICNlbHNlCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOworICAgIFVO
VVNFRF9QQVJBTSh0ZXh0Q2hlY2tpbmdUeXBlcyk7CiAgICAgVU5VU0VEX1BBUkFNKHNwZWxsaW5n
UmFuZ2UpOwogICAgIFVOVVNFRF9QQVJBTShncmFtbWFyUmFuZ2UpOwogI2VuZGlmIC8vIFVTRShV
TklGSUVEX1RFWFRfQ0hFQ0tJTkcpCkBAIC0yNTE0LDEwICsyNTA1LDkgQEAgdm9pZCBFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNw
ZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmICghaXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZyB8IENo
ZWNrRm9yQ29ycmVjdGlvbjsKLSAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7
Ci0gICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tp
bmdPcHRpb25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBn
cmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIFRleHRDaGVj
a2luZ1R5cGVzIHRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8
IFRleHRDaGVja2luZ1R5cGVzOjpDb3JyZWN0aW9uKTsKKyAgICB0ZXh0Q2hlY2tpbmdUeXBlcy5z
ZXRHcmFtbWFyKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsKKyAg
ICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ1R5
cGVzLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBSZWZQdHI8
UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBtYXJrTWlzc3BlbGxpbmdzKHNwZWxs
aW5nU2VsZWN0aW9uLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwpAQCAtMjUzNiw3ICsyNTI2LDgg
QEAgdm9pZCBFZGl0b3I6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8RWRpdG9yPiop
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChzZWxlY3Rpb24uc3RhcnQoKSwgc2VsZWN0
aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcCA9IHN0YXJ0T2ZXb3Jk
KHN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
YWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24ocCwgc3RhcnQpOwotICAgICAgICBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKE1hcmtTcGVsbGluZyB8IFNob3dD
b3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
MCk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nVHlwZXMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZXM6OkNvcnJlY3Rpb25QYW5lbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
LCAwKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5m
bzo6UGFuZWxUeXBlUmV2ZXJzaW9uOiB7CkBAIC0zNjI5LDM4ICszNjIwLDE5IEBAIEZsb2F0UmVj
dCBFZGl0b3I6OndpbmRvd1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvbnN0CiAg
ICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChib3VuZGluZ1JlY3QpKTsK
IH0gICAgICAgIAogCi1UZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnRleHRDaGVja2luZ1R5
cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucykKK1RleHRD
aGVja2luZ1R5cGVzIEVkaXRvcjo6YWRkVGV4dENoZWNrU2V0dGluZ3MoY29uc3QgVGV4dENoZWNr
aW5nVHlwZXMmIHRleHRDaGVja2luZ1R5cGVzKQogewotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxs
aW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3Vs
ZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJv
b2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93
Q29ycmVjdGlvblBhbmVsOwotICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIENoZWNrRm9y
Q29ycmVjdGlvbik7Ci0KLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0g
MDsKLSAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0g
ICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAgaWYg
KHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKLQorICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGVzID0g
dGV4dENoZWNraW5nVHlwZXM7CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAm
IFBlcmZvcm1SZXBsYWNlbWVudDsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7
Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAg
ICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAo
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNr
aW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIGlmICh0eXBlcy5yZXBs
YWNlbWVudCgpKSB7CisgICAgICAgIHR5cGVzLnNldExpbmsoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgdHlwZXMuc2V0UXVvdGUoaXNBdXRvbWF0aWNRdW90ZVN1
YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHR5cGVzLnNldERhc2goaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgdHlwZXMuc2V0UmVwbGFjZW1lbnQo
aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpOworICAgICAgICB0eXBlcy5zZXRD
b3JyZWN0aW9uKHRleHRDaGVja2luZ1R5cGVzLnNwZWxsaW5nKCkgJiYgaXNBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpOwogICAgIH0KICNlbmRpZgotCi0gICAgcmV0dXJuIGNo
ZWNraW5nVHlwZXM7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmOWFlYzQwNjkwYTAxZjNhMzg3ODU1Y2Ey
MmEwNjU3ZTc0NWFiMzE1Li5iMjdkMTg3ZTdlMmM1YTEzOGMyNGM1Yjc5MjVhYTY0MjhlMWU0ZTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTIyNCwxNSArMjI0LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZv
aWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIGdyYW1tYXJTZWxlY3Rpb24pOwogCi0gICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25GbGFn
cyB7Ci0gICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKLSAgICAgICAgTWFya0dyYW1tYXIg
PSAxIDw8IDEsCi0gICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKLSAgICAgICAg
U2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKLSAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9u
ID0gMSA8PCA0LAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRp
b25zOwotCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdXBw
ZXJjYXNlV29yZCgpOwogICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpOwpAQCAtMjUyLDcgKzI0Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigp
OwogI2VuZGlmCiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBn
cmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBS
YW5nZSogZ3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTQxNiw3
ICs0MDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
UGFzdGVib2FyZCopOwogICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0
aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7CisgICAgVGV4dENoZWNraW5nVHlwZXMgYWRk
VGV4dENoZWNrU2V0dGluZ3MoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmKTsKICAgICB2b2lkIHJl
Y29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlKiwgY29u
c3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAKICAgICB2
b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5jcHAKaW5kZXggZmVkY2MwNzczZTZlNzk4MWY2YTkwMjM5MzE2MTY3YmI3NDdlZGJlMS4uNzRl
OWY0YjY4Zjk0ODYxM2QxYTMwZGUwMDViNzRhN2E4YjFlNjYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgYm9vbCBTcGVsbENo
ZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIG5vZGUgJiYg
bm9kZS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2lu
Z0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBOb2RlKiBub2RlKQordm9pZCBTcGVsbENo
ZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcihjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgb3B0aW9u
cywgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2Rl
KSk7CiAKICAgICBpZiAoIWluaXRSZXF1ZXN0KG5vZGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNl
LCBtYXNrLCBtX3JlcXVlc3RUZXh0KTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG9wdGlvbnMsIG1fcmVxdWVzdFRleHQpOwog
fQogCiBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0
b3IsIGludCBkaXN0YW5jZSkKQEAgLTEzMSwxMSArMTMxLDExIEBAIHN0YXRpYyBib29sIGZvcndh
cmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQogICAg
IHJldHVybiBmYWxzZTsgICAgCiB9CiAKLXN0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSB0b01hcmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQorc3RhdGljIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdHlw
ZXMpCiB7Ci0gICAgaWYgKHR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgIGlm
ICh0eXBlcy5zcGVsbGluZygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nOwotICAgIEFTU0VSVCh0eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKTsKKyAgICBB
U1NFUlQodHlwZXMuZ3JhbW1hcigpKTsKICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXI7CiB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
aW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAg
IGludCBzdGFydE9mZnNldCA9IDA7CiAgICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3Vs
dHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBl
ICE9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQorICAgICAgICBpZiAoIXJlc3VsdHNbaV0udHlw
ZS5zcGVsbGluZygpICYmICFyZXN1bHRzW2ldLnR5cGUuZ3JhbW1hcigpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3NpdGlvbiBiYWNr
d2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTli
ZmFkMDdkOWQ0Y2FlMWIzMy4uNDE2MzEzYjQwNGJkZmQ5OTg3M2JmOWYyNWYyODc1YTYwMWY3YWQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZChpbnQg
c2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2FibGUoTm9kZSopIGNvbnN0OwotICAg
IHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7Cisg
ICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBOb2Rl
Kik7CiAgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMzkxMmE0OWY0ZmU5NjdkN2Q1YjgxMWI3OTI5MjI3
MDM2YmYzZjhlNy4uNzU0MDk3YWU5M2JhOWE4ODY3Y2Y5MmU1MzNjNDY1NjhjYTc2ODYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjc0
LDE5ICsyNzQsMjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgICAgICAg
ICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/
IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPnRleHRD
aGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJz
KCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7Cisg
ICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZXMgb3B0aW9ucyhUZXh0Q2hlY2tpbmdUeXBl
czo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0R3JhbW1hcihjaGVja0dy
YW1tYXIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJp
bmcubGVuZ3RoKCksIG9wdGlvbnMsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0g
JnJlc3VsdHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0
T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA8PSBjdXJyZW50RW5k
T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuc3BlbGxpbmco
KSAmJiByZXN1bHQtPmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQtPmxv
Y2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0
aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJl
c3VsdC0+bG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5n
dGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPCBjdXJyZW50
RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1cnJlbnRT
dGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJl
c3VsdC0+dHlwZS5ncmFtbWFyKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZz
ZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zm
c2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAw
ICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUg
bWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1
dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtNTI0
LDEyICs1MjUsMTQgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2Vz
Rm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1
ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIFRl
eHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOwotICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRP
ZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5n
dGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBv
cHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgb3B0aW9ucy5zZXRHcmFt
bWFyKGNoZWNrR3JhbW1hcik7CisgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4
dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExl
bmd0aCgpLCBvcHRpb25zLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdS
ZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1
bHQtPnR5cGUuc3BlbGxpbmcoKSAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVz
dWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWlz
c3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKTsKICAgICAgICAgICAg
IEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+
dGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygp
LCBndWVzc2VzKTsKQEAgLTU0NCw3ICs1NDcsNyBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tp
bmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAog
ICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkr
KykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRz
W2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
ICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LT5sb2NhdGlvbiwg
cmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuZ3JhbW1hcigpICYm
IHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LT5sb2NhdGlvbiwgcmVz
dWx0LT5sZW5ndGgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVz
dWx0LT5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgR3JhbW1h
ckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC0+ZGV0YWlsc1tqXTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwICYmIGRldGFpbC0+bG9jYXRpb24gPj0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZTFhOWZmZWY1Yjg4NGIyZWJlZTUwNzU3
NWMzM2E0Y2UzMDU1MDM2NS4uYmE2ZGUwNmMzZWNkOTM1MTA1MjUyZTA2OWY2NDc1MTg2YjUyMmVl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtNDA3LDExICs0MDcsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiwgaW50KikgeyB9CiAKICNp
ZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgU3RyaW5nJikgeyB9CiB9
OwogCiBjbGFzcyBFbXB0eUVkaXRvckNsaWVudCA6IHB1YmxpYyBFZGl0b3JDbGllbnQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCmluZGV4
IGQxNmFkZTE2NDYwYWQ3MGYzN2ViOWU4ZDQxNGRmNjFmNjdjZmM4ZDMuLjhkZjE4MDkxNTFmYjkw
YWNjZGY3NDE4YzhmNjhiMmJjOTM1NzJjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEdy
YW1tYXJEZXRhaWwgewogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7Ci0gICAgVGV4
dENoZWNraW5nVHlwZSB0eXBlOworICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGU7CiAgICAgaW50
IGxvY2F0aW9uOwogICAgIGludCBsZW5ndGg7CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGRl
dGFpbHM7CkBAIC02NCwxNCArNjQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFy
RGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgp
ID0gMDsKIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgdmlydHVhbCB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0
Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAwOwogI2VuZGlmCiAKICAgICAv
LyBGb3Igc3BlbGxjaGVja2VycyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgbGFuZ3VhZ2VzLCBpdCdz
IG9mdGVuIGltcG9ydGFudCB0byBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSBsYW5ndWFnZSBpbiBv
cmRlciB0bwogICAgIC8vIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSBjb3JyZWN0aW9uIHN1Z2dlc3Rp
b25zLiBDYWxsZXIgY2FuIHBhc3MgaW4gbW9yZSB0ZXh0IGluICJjb250ZXh0IiB0byBhaWQgc3Vj
aCBzcGVsbGNoZWNrZXJzIG9uIGxhbmd1YWdlCiAgICAgLy8gaWRlbnRpZmljYXRpb24uIE5vcmFt
bGx5IGl0J3MgdGhlIHRleHQgc3Vycm91bmRpbmcgdGhlICJ3b3JkIiBmb3Igd2hpY2ggd2UgYXJl
IGdldHRpbmcgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
aGVja2luZy5oCmluZGV4IGQyMDQwZDVlYWZiY2ZmYmVjZDdlYjU2NjlkNTU4MzIwOTEyODM5MzEu
LmMwOTkxMzg3NjZlNzM3MDU1MmQyYTE0MmQ5MmRmYWExMjBkZjRmOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtNDIsMTcgKzQyLDQ2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNkZWZpbmUgV1RGX1VTRV9BVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCAxCiAjZW5kaWYKIAotZW51bSBUZXh0Q2hlY2tpbmdUeXBlIHsKLSAgICBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgICAgPSAxIDw8IDEsCi0gICAgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIg
ICAgID0gMSA8PCAyLAotICAgIFRleHRDaGVja2luZ1R5cGVMaW5rICAgICAgICA9IDEgPDwgNSwK
LSAgICBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgICAgICAgPSAxIDw8IDYsCi0gICAgVGV4dENoZWNr
aW5nVHlwZURhc2ggICAgICAgID0gMSA8PCA3LAotICAgIFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudCA9IDEgPDwgOCwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAgPSAxIDw8IDkK
LX07CitzdHJ1Y3QgVGV4dENoZWNraW5nVHlwZXMgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7
CisgICAgICAgIFNwZWxsaW5nICAgID0gMSA8PCAxLAorICAgICAgICBHcmFtbWFyICAgICA9IDEg
PDwgMiwKKyAgICAgICAgTGluayAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIFF1b3RlICAgICAg
ID0gMSA8PCA2LAorICAgICAgICBEYXNoICAgICAgICA9IDEgPDwgNywKKyAgICAgICAgUmVwbGFj
ZW1lbnQgPSAxIDw8IDgsCisgICAgICAgIENvcnJlY3Rpb24gID0gMSA8PCA5LAorICAgICAgICBD
b3JyZWN0aW9uUGFuZWwgID0gMSA8PCAxMCwKKyAgICB9OworCisgICAgZXhwbGljaXQgVGV4dENo
ZWNraW5nVHlwZXModW5zaWduZWQgdmFsdWUgPSAwKSA6IG1fdmFsdWUodmFsdWUpIHt9CisKKyAg
ICBib29sIHNwZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9Cisg
ICAgYm9vbCBncmFtbWFyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIEdyYW1tYXI7IH0KKyAg
ICBib29sIGxpbmsoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgTGluazsgfQorICAgIGJvb2wg
cXVvdGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUXVvdGU7IH0KKyAgICBib29sIGRhc2go
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgRGFzaDsgfQorICAgIGJvb2wgcmVwbGFjZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUmVwbGFjZW1lbnQ7IH0KKyAgICBib29sIGNvcnJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvbjsgfQorICAgIGJvb2wg
Y29ycmVjdGlvblBhbmVsKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIENvcnJlY3Rpb25QYW5l
bDsgfQorCisgICAgdm9pZCBzZXRTcGVsbGluZyhib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9u
LCBTcGVsbGluZyk7IH0KKyAgICB2b2lkIHNldEdyYW1tYXIoYm9vbCBvbiA9IHRydWUpIHsgc2V0
RmxhZyhvbiwgR3JhbW1hcik7IH0KKyAgICB2b2lkIHNldExpbmsoYm9vbCBvbiA9IHRydWUpIHsg
c2V0RmxhZyhvbiwgTGluayk7IH0KKyAgICB2b2lkIHNldFF1b3RlKGJvb2wgb24gPSB0cnVlKSB7
IHNldEZsYWcob24sIFF1b3RlKTsgfQorICAgIHZvaWQgc2V0RGFzaChib29sIG9uID0gdHJ1ZSkg
eyBzZXRGbGFnKG9uLCBEYXNoKTsgfQorICAgIHZvaWQgc2V0UmVwbGFjZW1lbnQoYm9vbCBvbiA9
IHRydWUpIHsgc2V0RmxhZyhvbiwgUmVwbGFjZW1lbnQpOyB9CisgICAgdm9pZCBzZXRDb3JyZWN0
aW9uKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIENvcnJlY3Rpb24pOyB9CisgICAgdm9p
ZCBzZXRDb3JyZWN0aW9uUGFuZWwoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVj
dGlvblBhbmVsKTsgfQogCi10eXBlZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ1R5cGVNYXNrOwor
ICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRl
OgorICAgIHZvaWQgc2V0RmxhZyhib29sIG9uLCB1bnNpZ25lZCB0eXBlKSB7IG1fdmFsdWUgPSBv
biA/IChtX3ZhbHVlIHwgdHlwZSkgOiAobV92YWx1ZSAmIH50eXBlKTsgfQorCisgICAgdW5zaWdu
ZWQgbV92YWx1ZTsKK307CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NTg0
NzI0ODU5M2Q3NDI3MTc1MDU3OTIyNWZkNWU0Y2VmMDc4NGYxLi40NjYwNGIwMWY3NDJjYWZhZTA1
YWYzZjJkNDY3NmMwYTFjMGM2MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3Rv
cmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Db3Jl
Q2hlY2tpbmdUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOgorCiAyMDEx
LTA0LTA2ICBBc2Fua2EgSGVyYXRoICA8YXNhbmthQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDNjMzZjNTdkNTU2NWYzMzUwMWUzNWU3OGUwNGZh
MzViYmMxYWY0ZTQuLmIyODJiNWVjMDA3MmU4ZmNmMDllZTFkOThhMDE2OThmNTY5NjE3OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBA
IC04NzIsNyArODcyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZT
dHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGlu
Z0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwg
VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGlu
dCBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0
cmluZyYgdGV4dCkKIHsKICAgICBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpCiAg
ICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRl
eHQodGV4dCwgbmV3IFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNl
bmRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5o
CmluZGV4IDJlYmM2ZWE1ODA0YjI1M2ZiZTQxNjM4Njc0NWI5ODcxMTdhYWZkZTkuLmEzNzFjNzEy
NTkzZWY4ZTg2OTViMzM5OTQ5YzQyNDVjNTMxZWQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbklt
cGwuY3BwCmluZGV4IGY1YTY2MDRkYmE2Nzg2M2M3NmM5ZjY5MGI1MTI2MDQ5NzJlMWY3YmUuLjNk
NDkxMDMyODBhMWQ3OGRiMGIzMjljNWQzYTEyYzM3Zjc3M2Y3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHAKQEAgLTQwLDEyICs0MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBUZXh0Q2hlY2tpbmdUeXBlIHRvQ29yZUNoZWNr
aW5nVHlwZShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yIGVycm9yKQorc3RhdGljIFRleHRD
aGVja2luZ1R5cGVzIHRvQ29yZUNoZWNraW5nVHlwZXMoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpF
cnJvciBlcnJvcikKIHsKLSAgICBpZiAoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpF
cnJvclNwZWxsaW5nKQotICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwot
ICAgIEFTU0VSVChlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7
Ci0gICAgcmV0dXJuIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5
cGVzIHR5cGVzOworICAgIHR5cGVzLnNldFNwZWxsaW5nKGVycm9yID09IFdlYlRleHRDaGVja2lu
Z1Jlc3VsdDo6RXJyb3JTcGVsbGluZyk7CisgICAgdHlwZXMuc2V0R3JhbW1hcihlcnJvciA9PSBX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7CisgICAgQVNTRVJUSU9OUyh0eXBl
cy52YWx1ZSgpKTsKKyAgICByZXR1cm4gdHllcHM7CiB9CiAKIHN0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNr
aW5nUgogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgeyAKICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7Ci0gICAgICAgIGNvcmVSZXN1bHQudHlwZSA9IHRv
Q29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9yKTsKKyAgICAgICAgY29yZVJlc3VsdC50
eXBlID0gdG9Db3JlQ2hlY2tpbmdUeXBlcyhyZXN1bHRzW2ldLmVycm9yKTsKICAgICAgICAgY29y
ZVJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdHNbaV0ucG9zaXRpb247CiAgICAgICAgIGNvcmVSZXN1
bHQubGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7CiAgICAgICAgIGNvcmVSZXN1bHRzLmFwcGVu
ZChjb3JlUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2YWQyMjE3MTdjY2JmNGRmYjEyNjll
Y2I3ZGMyNjczZTRjMzY4YTAwLi4yNjRjYjQyNWQzOGYwZTBmM2Q4NzhiZTMzMDdkMDJkOTg4ZWU0
MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNCAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJkODQ3
M2ZkYzNhMmEuLmRkNGNjZTFiZjJhY2M5ZmNkYTRlYzdlNzEzYTNlOGNiOTAxODRkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2Vz
Rm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RGOjpW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBl
bmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNr
ZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IGNhOTQ0YTBhNmM5MmMyNzgxOGIwOWIyMzhhZTVkNmE2MmRhNDMzY2Yu
LmU0YWQ2ZjMzNDI5Mjk4MWFhNjU1MWQ1Nzg3ZTU4OGEzY2M4OTE4NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAg
ICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVw
bGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXJD
bGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMDUgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAppbmRleCA1ZDkzYzA3MjE2ZDk5
NWJmZTM2Y2FmYWRkOTkwYzBhNzgyZjUyZGRhLi42OWZhZTY0NGUzZTIxYzMyOGIwY2EyNTI4MzFi
NmNkNmY5ZGZmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDksNyBAQCBj
bGFzcyBUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3Vn
Z2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgs
IFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcm
IGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYp
IHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2lu
Z0xhbmd1YWdlKGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hl
Y2tpbmdMYW5ndWFnZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRl
eCA2YWUzZGExOWJlNjA5ZGI2NTQyZWY4YjBmODJhODc5NmY4ZGRmYzlkLi44MDIzZDIwYjAwNjFj
NjkwMWIxY2EzNDgyZGM1OTFiZmEwY2VlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3Rv
cmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEhhaWt1Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3Uu
aCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3Uu
aAppbmRleCBjYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1Li42MzM3NDlm
NDM1NjAwZTU4MTU4NDFmZDIwODAyM2E5MDhmYjI0MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysrIGIvU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCkBAIC0xMTEs
NyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQ2xpZW50
LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRl
KGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
cyYsIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5n
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNmE1MDFhYzRmYWUxY2U4ZGRiOWJjNGQ1OTBk
MTQ5NzM0Y2U5NjM1Ni4uMmMzNzdkMjcxMDQwNGQ3OWJmNTFiMWEzYjNjZWRhNzkwMGE3NjFhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25z
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAodG9OU1R5cGVz
KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAg
ICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVyOldlYkNv
cmU6OnNlcXVlbmNlOnR5cGVzOldlYkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNiAgUm9iZXJ0
IFNlc2VrICA8cnNlc2VrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwZTUyMTAyMzY4MmJhMTIxOTI0M2UxZGRjMzBjYjNk
ZGUyMzAwN2U3Li5jNTEyM2I2NmRiNjJhYjNhYWMxYTk5MDZmNWI0MTk2ZTcxMzViZTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVs
bGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xv
Y2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFy
KiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQq
IGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9p
ZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29u
c3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6
R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1p
c3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dT
cGVsbGluZ1VJKGJvb2wgc2hvdyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nl
cyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6
U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9u
UGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IDM0MWEyOGZkNDQ0YTViNmQxMDE0MWYxZDQ4NWM3NTJlZTg4OTQxNDcuLmQwYzM4Y2Vl
YmVmYzUzMDNiMDQxODY4MDMxZmQyNTEyZjM2NDAxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc5MSw3ICs3OTEs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsIFZlY3RvcgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi1zdGF0aWMgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRD
aGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMpCitzdGF0aWMgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIGNvbnN0IFRleHRDaGVja2lu
Z1R5cGVzJiBjaGVja2luZ1R5cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHJlc3VsdHM7CiAKQEAgLTgwMCwxNiArODAwLDE2IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlw
CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0
IHJlc3VsdFR5cGVdOwogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAg
ICAgaWYgKE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgMCAhPSAo
Y2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgeworICAgICAgICBp
ZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5
cGVzLnNwZWxsaW5nKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAg
ICAgICAgICAgIHJlc3VsdC50eXBlLnNldFNwZWxsaW5nKCk7CiAgICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVz
dWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyID09IHJl
c3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5ncmFtbWFyKCkpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2lu
Y29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRHcmFt
bWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAg
ICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewpA
QCAtODI5LDM3ICs4MjksMzcgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNv
cmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXAKICAgICAgICAgICAg
ICAgICByZXN1bHQuZGV0YWlscy5hcHBlbmQoZGV0YWlsKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlTGluayA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBO
U1RleHRDaGVja2luZ1R5cGVMaW5rKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNr
aW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmxpbmsoKSkgewogICAg
ICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50
eXBlID0gVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRM
aW5rKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAg
ICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1
dGVTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIDAgIT0g
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKKyAgICAgICAgfSBl
bHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5n
VHlwZXMucXVvdGUoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAg
ICAgICAgcmVzdWx0LnR5cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNv
bWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0g
cmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlRGFz
aCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVEYXNoID09IHJlc3Vs
dFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5kYXNoKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGVEYXNoOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0RGFzaCgpOwogICAgICAgICAgICAg
cmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1
bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxh
Y2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tp
bmdUeXBlUmVwbGFjZW1lbnQgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNU
ZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVz
LnJlcGxhY2VtZW50KCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsK
KyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFJlcGxhY2VtZW50KCk7CiAgICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2lu
Z1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5T
VGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuY29y
cmVjdGlvbigpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICAg
ICAgICAgIHJlc3VsdC50eXBlLnNldENvcnJlY3Rpb24oKTsKICAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CkBAIC04NjksMTMgKzg2OSwzNCBA
QCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWlu
Z1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CisKK3N0
YXRpYyB1bnNpZ25lZCB0b05TVHlwZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQor
eworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgaWYgKHR5cGVzLnNwZWxsaW5nKCkpCisg
ICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAodHlw
ZXMuZ3JhbW1hcigpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cjsKKyAgICBpZiAodHlwZXMubGluaygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tp
bmdUeXBlTGluazsKKyAgICBpZiAodHlwZXMucXVvdGUoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5T
VGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgIGlmICh0eXBlcy5kYXNoKCkpCisgICAgICAgIHJl
c3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworICAgIGlmICh0eXBlcy5yZXBsYWNlbWVu
dCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7Cisg
ICAgaWYgKHR5cGVzLmNvcnJlY3Rpb24oKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNr
aW5nVHlwZUNvcnJlY3Rpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogI2VuZGlmCiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4
dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFRl
eHRDaGVja2luZ1R5cGVzJiBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBOU1N0cmluZyAqdGV4dFN0cmluZyA9IFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyc05vQ29weTpjb25zdF9jYXN0PFVDaGFyKj4o
dGV4dCkgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dOwotICAgIE5TQXJyYXkgKmluY29t
aW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0
cmluZzp0ZXh0U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0p
IHR5cGVzOihjaGVja2luZ1R5cGVzfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRp
b25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkg
b3J0aG9ncmFwaHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07CisgICAgTlNBcnJheSAqaW5jb21pbmdS
ZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5n
OnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlw
ZXM6KHRvTlNUeXBlcyhjaGVja2luZ1R5cGVzKXxOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBo
eSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOwogICAgIFt0ZXh0U3RyaW5n
IHJlbGVhc2VdOwogICAgIHJlc3VsdHMgPSBjb3JlKGluY29taW5nUmVzdWx0cywgY2hlY2tpbmdU
eXBlcyk7CiAjZW5kaWYKQEAgLTk3NiwxNSArOTk3LDE1IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiB7CiAgICAgV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiBfc2VuZGVyOwogICAgIGludCBfc2VxdWVuY2U7Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sg
X3R5cGVzOworICAgIFRleHRDaGVja2luZ1R5cGVzIF90eXBlczsKICAgICBSZXRhaW5QdHI8TlNB
cnJheT4gX3Jlc3VsdHM7CiB9Ci0tIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxD
aGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKKy0gKGlk
KWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZToo
aW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyl0eXBlcyByZXN1
bHRzOihOU0FycmF5KilyZXN1bHRzOwogLSAodm9pZClwZXJmb3JtOwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlcgotLSAoaWQpaW5pdFdpdGhTZW5k
ZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2Ug
dHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6KE5TQXJy
YXkqKXJlc3VsdHMKKy0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIq
KXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlcyl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCiB7CiAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xMDA0LDE1ICsxMDI1LDIwIEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiBAZW5kCiAjZW5kaWYK
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2VxdWVuY2UsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
IHNlbmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYg
Y2hlY2tpbmdUeXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFu
Z2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAvLyBTdG9yZXMg
aXQgYXMgYSBwcmltaXRpdmUgdmFsdWUgdG8gYWxsb3cgdGhlIGJsb2NrIHRvIGNvcHkgaXQuCisg
ICAgdW5zaWduZWQgY2hlY2tpbmdUeXBlc1ZhbHVlID0gY2hlY2tpbmdUeXBlcy52YWx1ZSgpOwog
ICAgIE5TUnVuTG9vcCogY3VycmVudExvb3AgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsK
ICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENoZWNraW5n
T2ZTdHJpbmc6dGV4dCByYW5nZTpyYW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5c3RlbVR5
cGVzIG9wdGlvbnM6MCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOjAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBO
U0FycmF5KiByZXN1bHRzLCBOU09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CiAgICAgICAgICAg
ICBbY3VycmVudExvb3AgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtKSAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVj
a1Jlc3BvbmRlciBhbGxvY10gaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNl
IHR5cGVzOmNoZWNraW5nVHlwZXMgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVj
a1Jlc3BvbmRlciBhbGxvY10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlczpXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyhjaGVja2luZ1R5cGVzVmFsdWUpIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzOnJlc3VsdHNd
IGF1dG9yZWxlYXNlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpu
aWwgb3JkZXI6MCBtb2RlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9v
cE1vZGVdXTsKICAgICAgICAgfV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZWNlZTMwYjgy
NmE2YWJjYzQ4MTBjMjE4YThhODBmNjljYTUwMGU3My4uYzg1MmU4ZWYzMmI2NDUxYThmNWE2ZjA4
OTU3MjE1NWRkZWE4ODg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
NC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4
dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBl
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAx
MS0wNC0wNiAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCAwZDhlOGM2Nzk4NGU5
YWQxZjdmMmM1NmI2YzBkMWNmZDY0YmUyMWYwLi5kMDBiNjQ1MzllZDBjZDNlZGJkY2QxOGVkYzY2
OGViOTRmZDdhN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYg
Y29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBj
b25zdCBTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVj
a2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCAwZjkwODVkOWZhODNkOGJkODgwZjcwZDg5YzhkMmYwYjRiYjM2MWJm
Li4wZGU3OTYxZjJiM2VmYjcyZjM4N2JiOWY4ZGIyNmE0ZDZlZTg1OGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAg
ICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
ZDQ1NmNjOWIwNzkyYzg0YWYxOTQ1ZWU3N2NiN2M3OWQzYmUyMjlkNy4uNWFmMzU0NTgyYmQyYTQx
NjhjNmNlY2JjMWMwYWE3MTZlZTMwY2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVj
a2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRl
eCBhNWI5YWNiMzRlYTQ1OTQ1NGZlODhmNzJmMGRhZGRhMmI3NzQxMWM1Li43ZDQzZjg2ZGJiNmJk
YjY3NWU4ZDVmZTQ2N2IyMWViZTgwNmUzYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3Rv
cmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5o
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5o
CmluZGV4IGEyYjIzYjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3ZWYuLmMyMzVjMmNi
ZDIwMWQzMDg4YjhjN2QxNTIzMDZlMzZmNTRjMTdkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNv
bnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShi
b29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3d4L0NoYW5nZUxvZwppbmRleCA1ZWI0YzA5NzZiZTllODI0NzBkZTFjYzg4ZDg0NjMxMWEzZjIy
ZTMwLi4wMTUxZjI4NGRmYWJhYWZiMjA1ZjEwM2I1OTQ5MjQzYWRhZmVhN2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAg
ICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
V3g6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNiAgTWFsY29sbSBNYWNM
ZW9kICA8bWFsY29sbS5tYWNsZW9kQHRzaHdhbmVkamUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtldmluIE9sbGl2aWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RWRpdG9yQ2xpZW50V3guaAppbmRleCA2NWVlNDkzMDU5MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0
ZDUwNzI4Li44YmYwNDk4OWYyOTU4NDcyZmU2ZTY2MGUxOTc2MTkwYmNiZGZmNjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaApAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0
IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzMzk4YmY5YWNmZTc2NWNiMjUyMjdkYjBhODRlNzI2NzkyM2JhZTc3Li5lMWM4Nzdj
YWQxMGQ4NzU3YzA0NmU2Mzc0ZGU2Y2VlMzVmNWM2NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5n
OiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nVHlwZQorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6dG9OU1R5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisKIDIwMTEtMDQtMDYgIFNpZGRoYXJ0aCBNYXRo
dXIgIDxzaWRkaGFydGgubWF0aHVyQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
ZW5qYW1pbiBQb3VsYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDUzOTRjMjU5OTM0ZGI2NzY3ZWZmM2UyN2VkMWQ2NWU1NDhjMDRmOWIu
LjE0ZTQzYzkzMTIzMWY1YmU4NTlhNzBjM2Y4YzJhYjFkZGRhMTAyOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQ1NCwxMCArNDU0LDI2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhbW1hckRldGFp
bD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMp
CisgICAgeworICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMih0eXBlcy52YWx1ZSgpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCisgICAgeworICAgICAgICB1aW50MzJf
dCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0eXBlcyA9IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzdWx0
LnR5cGUpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1bHQubG9jYXRpb24pOwog
ICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1bHQubGVuZ3RoKTsKICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc3VsdC5kZXRhaWxzKTsKQEAgLTQ2Niw3ICs0ODIsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gewog
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiAgICAgewotICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZUVudW0ocmVzdWx0LnR5cGUpKQorICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShyZXN1bHQudHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENo
ZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tCmluZGV4IGNlZjNhNTU4MjQxYzAyMDJlODlkNzRlYjA4MjFlZmQ0NjhlMmExNTMuLjA3ZmMw
Mzg5M2ViNzA2MTMxNTk4NWJlMjIwNTc3MDJkYTFlMmEyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMjI0LDE0ICsyMjQsMTQgQEAg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0
aCA+IDApOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVs
bGluZyAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgewog
ICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAgICAgICAgcmVzdWx0LnR5
cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIChjaGVja2lu
Z1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2lu
Y29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRHcmFt
bWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAg
ICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewpA
QCAtMjUzLDM1ICsyNTMsMzUgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNr
ZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tp
bmdUeXBlTGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVMaW5rOworICAgICAgICAg
ICAgcmVzdWx0LnR5cGUuc2V0TGluaygpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0g
cmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWlu
Z1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2lu
Z1R5cGVRdW90ZSAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAgICAgICAgcmVzdWx0LnR5
cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBs
YWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiAo
Y2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZURhc2gpKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldERhc2goKTsKICAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgKGNoZWNraW5nVHlw
ZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAg
ICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRT
dHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgKGNo
ZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRD
b3JyZWN0aW9uKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDFiODY0MDkzZWU3ZjYw
ZDU5ZmM3MTY3NTI2YTc1YTdhYWNjNDkzNTYuLjcxN2I1NWRkNzRlYjMzNmMyZTY3ZTMxMzg4NjJh
MTZkMjQwZGU0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25z
dCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNjMzMDkwZjQ0
ZDAwYTY4MDY4ZDhmZTU2ZmQyYzk1OWYzMTVhYTNiZC4uNzg1M2Y3ZTM4ZTFhOTBlOTcyZjJiYWRk
NWE1Mzc1NTkzYjYwNmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMzYsNyArMTM2LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25G
b3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBW
ZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwg
aW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZp
cnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9p
ZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29u
c3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3Bl
bGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3
b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcm
KTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0
aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IGVhNDQwZmMyMzQ4MWJiMmVh
NGNmMjFhOGM5NWYzNmIxN2MyOGY1OTkuLjFhNjg1OWVjOTg1NDUwNTkyM2EwMWVhODQ4MzJhYWY5
NWE1MWYzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTI0MCwx
MCArMjQwLDMwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgdW5zaWduZWQgdG9OU1R5cGVzKGNv
bnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAw
OworICAgIGlmICh0eXBlcy5zcGVsbGluZygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHR5cGVzLmdyYW1tYXIoKSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgaWYgKHR5cGVzLmxpbmsoKSkK
KyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgaWYgKHR5cGVz
LnF1b3RlKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAg
ICBpZiAodHlwZXMuZGFzaCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBl
RGFzaDsKKyAgICBpZiAodHlwZXMucmVwbGFjZW1lbnQoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5T
VGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgIGlmICh0eXBlcy5jb3JyZWN0aW9uKCkp
CisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHdvdWxkbid0
IGhhdmUgdG8gY29weSB0aGUgdGV4dCBoZXJlLgotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0
aCksIGNoZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBh
cmFncmFwaDo6UmVwbHkocmVzdWx0cykpOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCks
IHRvTlNUeXBlcyhjaGVja2luZ1R5cGVzKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNr
VGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88562</attachid>
            <date>2011-04-06 20:19:12 -0700</date>
            <delta_ts>2011-04-07 11:22:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110406201911.patch</filename>
            <type>text/plain</type>
            <size>71898</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkM2U3MjY1YmRhZDFkMDlk
ZDE1Yjg2YTFlOTNjZDIyNDg1MWU3MTA0Li4wYWVlMDNkOWYwY2Y5NTUwY2NlNWFmZDBjMzdhNDY2
OWFjYzY5MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphZGRUZXh0Q2hlY2tTZXR0aW5ncyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJDb3JlOjp0
b01hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVjayk6
CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxS
YW5nZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXM6OlRleHRDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjpzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlczo6Z3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
bGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6cXVvdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmRhc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OnJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjpjb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzOjpzZXRTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlczo6c2V0R3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
c2V0TGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0UXVvdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldERhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldFJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRDb3JyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlczo6c2V0RmxhZyk6CisKIDIwMTEtMDQtMDYgIFN0ZXBoYW5pZSBMZXdpcyAg
PHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggOTBlYjgyNWMwNDc0OWM1ZDNlY2VhZDMzMmIy
YzAwNWM3YjdiZmMxYi4uY2QxYjQ3ZjFmNTUwYWZiY2FhMmY5NjVjMzg4OWQwODQ2ZTQzODQyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRp
dG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQsCiAKICAgICBOb2RlKiBub2RlVG9DaGVjayA9IG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKG1fc3BlbGxDaGVja2VyLT5j
YW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGVUb0NoZWNrKSkKLSAgICAgICAgbV9zcGVsbENoZWNr
ZXItPnJlcXVlc3RDaGVja2luZ0Zvcih0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihNYXJrU3BlbGxp
bmcgfCBNYXJrR3JhbW1hciksIG5vZGVUb0NoZWNrKTsKKyAgICAgICAgbV9zcGVsbENoZWNrZXIt
PnJlcXVlc3RDaGVja2luZ0ZvcihhZGRUZXh0Q2hlY2tTZXR0aW5ncyhUZXh0Q2hlY2tpbmdUeXBl
cyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlczo6R3JhbW1h
cikpLCBub2RlVG9DaGVjayk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSkKQEAgLTIwODUsMzEgKzIwODUsMjYgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFy
dCwKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsKICNlbmRp
ZgotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7Ci0gICAg
aWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMgfD0gTWFya1NwZWxsaW5nOwotCisgICAgVGV4dENoZWNraW5nVHlwZXMgdGV4
dENoZWNraW5nVHlwZXM7CisgICAgdGV4dENoZWNraW5nVHlwZXMuc2V0U3BlbGxpbmcoaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSk7CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQotICAgIGlmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgp
Ci0gICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQotICAgICAgICB8
fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgfHwgaXNBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKLSAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdP
cHRpb25zICYgTWFya1NwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVu
YWJsZWQoKSkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gUGVyZm9ybVJlcGxhY2Vt
ZW50OworICAgIHRleHRDaGVja2luZ1R5cGVzLnNldFJlcGxhY2VtZW50KGlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
RW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdUeXBlcy5zcGVsbGluZygpKSAmJiBpc0F1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkpOwogI2VuZGlmCisgICAgdGV4dENo
ZWNraW5nVHlwZXMuc2V0R3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAKLSAg
ICBpZiAoIXRleHRDaGVja2luZ09wdGlvbnMgJiAoTWFya1NwZWxsaW5nIHwgUGVyZm9ybVJlcGxh
Y2VtZW50KSkKKyAgICBpZiAoIXRleHRDaGVja2luZ1R5cGVzLnNwZWxsaW5nKCkgJiYgIXRleHRD
aGVja2luZ1R5cGVzLnJlcGxhY2VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8
PSBNYXJrR3JhbW1hcjsKLQogICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZp
c2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFy
eSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIGlm
ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXIpIHsKKyAgICBpZiAodGV4dENoZWNr
aW5nVHlwZXMuZ3JhbW1hcigpKSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRT
ZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVu
ZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKHRleHRDaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAg
IG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nVHlw
ZXMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jk
cy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9CiAKICNlbHNlCkBAIC0yMjE4LDE3
ICsyMjEzLDE3IEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihzZWxl
Y3Rpb24sIGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCi12b2lkIEVkaXRvcjo6
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3Jh
bW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIHRleHRDaGVja2luZ1R5cGVzLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKICNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQogICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9j
b3JyZWN0aW9uIGF0IHRoaXMgbW9tZW50LgogICAgIEFTU0VSVCghbV9jb3JyZWN0aW9uUGFuZWxJ
bmZvLnJhbmdlVG9CZVJlcGxhY2VkKTsKIAotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3VsZE1hcmtH
cmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJvb2wgc2hv
dWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBs
YWNlbWVudDsKLSAgICBib29sIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9y
Q29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09w
dGlvbnMgJiBDaGVja0ZvckNvcnJlY3Rpb24pOworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nVHlwZXMuc3BlbGxpbmcoKTsKKyAgICBib29sIHNob3VsZE1hcmtHcmFt
bWFyID0gdGV4dENoZWNraW5nVHlwZXMuZ3JhbW1hcigpOworICAgIGJvb2wgc2hvdWxkUGVyZm9y
bVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nVHlwZXMucmVwbGFjZW1lbnQoKTsKKyAgICBib29s
IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdUeXBlcy5jb3JyZWN0aW9u
UGFuZWwoKTsKKyAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dD
b3JyZWN0aW9uUGFuZWwgfHwgdGV4dENoZWNraW5nVHlwZXMuY29ycmVjdGlvbigpOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5k
ZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjI3
NSwxMCArMjI3MCwxMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAg
ICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdyYXBo
LnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1h
c2tGb3IodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUZXh0Q2hlY2tTZXR0aW5ncyh0ZXh0Q2hlY2tp
bmdUeXBlcyksIHJlc3VsdHMpOwogICAgIGVsc2UKICAgICAgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgc3Bl
bGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENoZWNraW5nT3B0
aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUZXh0Q2hlY2tTZXR0aW5ncyh0ZXh0Q2hlY2tpbmdUeXBlcyksIHJlc3VsdHMpOwog
ICAgICAgICAKIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKQEAgLTIzMDEsNyAr
MjI5Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgIC8vIDIuIFJlc3VsdCBm
YWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVl
c3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2Us
IHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVk
IHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJr
U3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBy
ZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVz
dWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAh
cmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtT
cGVsbGluZyAmJiByZXN1bHQtPnR5cGUuc3BlbGxpbmcoKSAmJiByZXN1bHRMb2NhdGlvbiA+PSBz
cGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1
bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1
b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJl
c3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGlu
Z1JhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3Vs
dExlbmd0aCk7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTApAQCAtMjMwOSw3ICsy
MzA0LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICNlbmRpZiAvLyBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgICAgICAgICBt
aXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMo
KS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tp
bmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZS5ncmFtbWFyKCkgJiYg
Z3JhbW1hclBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uLCByZXN1
bHRMZW5ndGgpKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1
bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBy
ZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICBjb25zdCBHcmFt
bWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwpAQCAtMjMyMCwxNSArMjMx
NSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0
aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQotICAgICAgICAgICAgICAg
ICAgICAmJiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCi0gICAgICAgICAg
ICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUKLSAgICAg
ICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVEYXNoCi0g
ICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUmVw
bGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5
cGUubGluaygpIHx8IHJlc3VsdC0+dHlwZS5xdW90ZSgpIHx8IHJlc3VsdC0+dHlwZS5kYXNoKCkg
fHwgcmVzdWx0LT50eXBlLnJlcGxhY2VtZW50KCkgfHwgcmVzdWx0LT50eXBlLmNvcnJlY3Rpb24o
KSkpIHsKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3Qg
aGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNp
bmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAgICAg
IGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3Vs
dExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVj
dGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFu
Z2VFbmRPZmZzZXQgfHwgIXJlc3VsdC0+dHlwZS5jb3JyZWN0aW9uKCkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpbnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1
bHQtPnJlcGxhY2VtZW50Lmxlbmd0aCgpOwpAQCAtMjM0MiwxMyArMjMzMywxMyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25U
b1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERPV05TVFJFQU0pOwogCiAgICAgICAgICAg
ICAvLyBhZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0
aGV5IGFyZSB0eXBlZAotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlTGluayAmJiBzZWxlY3Rpb25PZmZzZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExl
bmd0aCArIDEpCisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmxpbmsoKSAmJiBzZWxlY3Rp
b25PZmZzZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZzsKIAog
ICAgICAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBzcGVsbGluZyBpbiBhbiBhbHJlYWR5LWNvcnJl
Y3RlZCB3b3JkLgotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbikgeworICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5jb3JyZWN0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRv
UmVwbGFjZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
KiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgICAgICAgICAg
ICAgIGlmIChtYXJrZXJzLT5oYXNNYXJrZXJzKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQpKSB7CkBAIC0yMzg1LDcgKzIzNzYsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGlu
aykgeworICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5saW5rKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSk7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yMzk0LDcgKzIz
ODUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgfSBlbHNlIGlmIChj
YW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50LCByYW5nZVRv
UmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKSB7CiAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kID0gZmFsc2U7CiAjaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTAotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZS5jb3JyZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHVzZVNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKHVzZVNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpCkBAIC0yNDE3LDcgKzI0MDgsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzQm91bmRhcnlP
ZmZzZXQgPSBzZWxlY3Rpb25PZmZzZXQgLSAxOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmNvcnJlY3Rpb24oKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4g
ZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgogICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VkUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFwaC5z
dWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzVG9B
ZGQgPSBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCk7CkBAIC0yNDUwLDcgKzI0NDEsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhU
ZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIH0KICNlbHNlCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOworICAgIFVO
VVNFRF9QQVJBTSh0ZXh0Q2hlY2tpbmdUeXBlcyk7CiAgICAgVU5VU0VEX1BBUkFNKHNwZWxsaW5n
UmFuZ2UpOwogICAgIFVOVVNFRF9QQVJBTShncmFtbWFyUmFuZ2UpOwogI2VuZGlmIC8vIFVTRShV
TklGSUVEX1RFWFRfQ0hFQ0tJTkcpCkBAIC0yNTE0LDEwICsyNTA1LDkgQEAgdm9pZCBFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNw
ZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmICghaXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZyB8IENo
ZWNrRm9yQ29ycmVjdGlvbjsKLSAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7
Ci0gICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tp
bmdPcHRpb25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBn
cmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIFRleHRDaGVj
a2luZ1R5cGVzIHRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8
IFRleHRDaGVja2luZ1R5cGVzOjpDb3JyZWN0aW9uKTsKKyAgICB0ZXh0Q2hlY2tpbmdUeXBlcy5z
ZXRHcmFtbWFyKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsKKyAg
ICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ1R5
cGVzLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBSZWZQdHI8
UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBtYXJrTWlzc3BlbGxpbmdzKHNwZWxs
aW5nU2VsZWN0aW9uLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwpAQCAtMjUzNiw3ICsyNTI2LDgg
QEAgdm9pZCBFZGl0b3I6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8RWRpdG9yPiop
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChzZWxlY3Rpb24uc3RhcnQoKSwgc2VsZWN0
aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcCA9IHN0YXJ0T2ZXb3Jk
KHN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
YWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24ocCwgc3RhcnQpOwotICAgICAgICBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKE1hcmtTcGVsbGluZyB8IFNob3dD
b3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
MCk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nVHlwZXMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZXM6OkNvcnJlY3Rpb25QYW5lbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
LCAwKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29ycmVjdGlvblBhbmVsSW5m
bzo6UGFuZWxUeXBlUmV2ZXJzaW9uOiB7CkBAIC0zNjI5LDM4ICszNjIwLDE5IEBAIEZsb2F0UmVj
dCBFZGl0b3I6OndpbmRvd1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvbnN0CiAg
ICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChib3VuZGluZ1JlY3QpKTsK
IH0gICAgICAgIAogCi1UZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnRleHRDaGVja2luZ1R5
cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucykKK1RleHRD
aGVja2luZ1R5cGVzIEVkaXRvcjo6YWRkVGV4dENoZWNrU2V0dGluZ3MoY29uc3QgVGV4dENoZWNr
aW5nVHlwZXMmIHRleHRDaGVja2luZ1R5cGVzKQogewotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxs
aW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3Vs
ZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJv
b2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93
Q29ycmVjdGlvblBhbmVsOwotICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIENoZWNrRm9y
Q29ycmVjdGlvbik7Ci0KLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0g
MDsKLSAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0g
ICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAgaWYg
KHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKLQorICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGVzID0g
dGV4dENoZWNraW5nVHlwZXM7CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAm
IFBlcmZvcm1SZXBsYWNlbWVudDsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7
Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAg
ICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAo
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNr
aW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIGlmICh0eXBlcy5yZXBs
YWNlbWVudCgpKSB7CisgICAgICAgIHR5cGVzLnNldExpbmsoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgdHlwZXMuc2V0UXVvdGUoaXNBdXRvbWF0aWNRdW90ZVN1
YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHR5cGVzLnNldERhc2goaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgdHlwZXMuc2V0UmVwbGFjZW1lbnQo
aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpOworICAgICAgICB0eXBlcy5zZXRD
b3JyZWN0aW9uKHRleHRDaGVja2luZ1R5cGVzLnNwZWxsaW5nKCkgJiYgaXNBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpOwogICAgIH0KICNlbmRpZgotCi0gICAgcmV0dXJuIGNo
ZWNraW5nVHlwZXM7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmOWFlYzQwNjkwYTAxZjNhMzg3ODU1Y2Ey
MmEwNjU3ZTc0NWFiMzE1Li5iMjdkMTg3ZTdlMmM1YTEzOGMyNGM1Yjc5MjVhYTY0MjhlMWU0ZTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTIyNCwxNSArMjI0LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZv
aWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIGdyYW1tYXJTZWxlY3Rpb24pOwogCi0gICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25GbGFn
cyB7Ci0gICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKLSAgICAgICAgTWFya0dyYW1tYXIg
PSAxIDw8IDEsCi0gICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKLSAgICAgICAg
U2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKLSAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9u
ID0gMSA8PCA0LAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRp
b25zOwotCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdXBw
ZXJjYXNlV29yZCgpOwogICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpOwpAQCAtMjUyLDcgKzI0Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigp
OwogI2VuZGlmCiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBn
cmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBS
YW5nZSogZ3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTQxNiw3
ICs0MDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
UGFzdGVib2FyZCopOwogICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0
aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7CisgICAgVGV4dENoZWNraW5nVHlwZXMgYWRk
VGV4dENoZWNrU2V0dGluZ3MoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmKTsKICAgICB2b2lkIHJl
Y29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlKiwgY29u
c3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAKICAgICB2
b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5jcHAKaW5kZXggZmVkY2MwNzczZTZlNzk4MWY2YTkwMjM5MzE2MTY3YmI3NDdlZGJlMS4uNzRl
OWY0YjY4Zjk0ODYxM2QxYTMwZGUwMDViNzRhN2E4YjFlNjYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgYm9vbCBTcGVsbENo
ZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIG5vZGUgJiYg
bm9kZS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2lu
Z0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBOb2RlKiBub2RlKQordm9pZCBTcGVsbENo
ZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcihjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgb3B0aW9u
cywgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2Rl
KSk7CiAKICAgICBpZiAoIWluaXRSZXF1ZXN0KG5vZGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNl
LCBtYXNrLCBtX3JlcXVlc3RUZXh0KTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG9wdGlvbnMsIG1fcmVxdWVzdFRleHQpOwog
fQogCiBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0
b3IsIGludCBkaXN0YW5jZSkKQEAgLTEzMSwxMSArMTMxLDExIEBAIHN0YXRpYyBib29sIGZvcndh
cmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQogICAg
IHJldHVybiBmYWxzZTsgICAgCiB9CiAKLXN0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSB0b01hcmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQorc3RhdGljIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdHlw
ZXMpCiB7Ci0gICAgaWYgKHR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgIGlm
ICh0eXBlcy5zcGVsbGluZygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nOwotICAgIEFTU0VSVCh0eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKTsKKyAgICBB
U1NFUlQodHlwZXMuZ3JhbW1hcigpKTsKICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXI7CiB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
aW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAg
IGludCBzdGFydE9mZnNldCA9IDA7CiAgICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3Vs
dHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBl
ICE9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQorICAgICAgICBpZiAoIXJlc3VsdHNbaV0udHlw
ZS5zcGVsbGluZygpICYmICFyZXN1bHRzW2ldLnR5cGUuZ3JhbW1hcigpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3NpdGlvbiBiYWNr
d2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTli
ZmFkMDdkOWQ0Y2FlMWIzMy4uNDE2MzEzYjQwNGJkZmQ5OTg3M2JmOWYyNWYyODc1YTYwMWY3YWQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZChpbnQg
c2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2FibGUoTm9kZSopIGNvbnN0OwotICAg
IHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7Cisg
ICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBOb2Rl
Kik7CiAgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMzkxMmE0OWY0ZmU5NjdkN2Q1YjgxMWI3OTI5MjI3
MDM2YmYzZjhlNy4uNzU0MDk3YWU5M2JhOWE4ODY3Y2Y5MmU1MzNjNDY1NjhjYTc2ODYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjc0
LDE5ICsyNzQsMjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgICAgICAg
ICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/
IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPnRleHRD
aGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJz
KCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7Cisg
ICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZXMgb3B0aW9ucyhUZXh0Q2hlY2tpbmdUeXBl
czo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0R3JhbW1hcihjaGVja0dy
YW1tYXIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJp
bmcubGVuZ3RoKCksIG9wdGlvbnMsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0g
JnJlc3VsdHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0
T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA8PSBjdXJyZW50RW5k
T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuc3BlbGxpbmco
KSAmJiByZXN1bHQtPmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQtPmxv
Y2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0
aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJl
c3VsdC0+bG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5n
dGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPCBjdXJyZW50
RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1cnJlbnRT
dGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJl
c3VsdC0+dHlwZS5ncmFtbWFyKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZz
ZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zm
c2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAw
ICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUg
bWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1
dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtNTI0
LDEyICs1MjUsMTQgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2Vz
Rm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1
ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIFRl
eHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOwotICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRP
ZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5n
dGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBv
cHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgb3B0aW9ucy5zZXRHcmFt
bWFyKGNoZWNrR3JhbW1hcik7CisgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4
dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExl
bmd0aCgpLCBvcHRpb25zLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdS
ZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1
bHQtPnR5cGUuc3BlbGxpbmcoKSAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVz
dWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWlz
c3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKTsKICAgICAgICAgICAg
IEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+
dGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygp
LCBndWVzc2VzKTsKQEAgLTU0NCw3ICs1NDcsNyBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tp
bmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAog
ICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkr
KykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRz
W2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
ICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LT5sb2NhdGlvbiwg
cmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuZ3JhbW1hcigpICYm
IHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LT5sb2NhdGlvbiwgcmVz
dWx0LT5sZW5ndGgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVz
dWx0LT5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgR3JhbW1h
ckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC0+ZGV0YWlsc1tqXTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwICYmIGRldGFpbC0+bG9jYXRpb24gPj0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZTFhOWZmZWY1Yjg4NGIyZWJlZTUwNzU3
NWMzM2E0Y2UzMDU1MDM2NS4uYmE2ZGUwNmMzZWNkOTM1MTA1MjUyZTA2OWY2NDc1MTg2YjUyMmVl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtNDA3LDExICs0MDcsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiwgaW50KikgeyB9CiAKICNp
ZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgU3RyaW5nJikgeyB9CiB9
OwogCiBjbGFzcyBFbXB0eUVkaXRvckNsaWVudCA6IHB1YmxpYyBFZGl0b3JDbGllbnQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCmluZGV4
IGQxNmFkZTE2NDYwYWQ3MGYzN2ViOWU4ZDQxNGRmNjFmNjdjZmM4ZDMuLjhkZjE4MDkxNTFmYjkw
YWNjZGY3NDE4YzhmNjhiMmJjOTM1NzJjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEdy
YW1tYXJEZXRhaWwgewogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7Ci0gICAgVGV4
dENoZWNraW5nVHlwZSB0eXBlOworICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGU7CiAgICAgaW50
IGxvY2F0aW9uOwogICAgIGludCBsZW5ndGg7CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGRl
dGFpbHM7CkBAIC02NCwxNCArNjQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFy
RGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgp
ID0gMDsKIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgdmlydHVhbCB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0
Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAwOwogI2VuZGlmCiAKICAgICAv
LyBGb3Igc3BlbGxjaGVja2VycyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgbGFuZ3VhZ2VzLCBpdCdz
IG9mdGVuIGltcG9ydGFudCB0byBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSBsYW5ndWFnZSBpbiBv
cmRlciB0bwogICAgIC8vIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSBjb3JyZWN0aW9uIHN1Z2dlc3Rp
b25zLiBDYWxsZXIgY2FuIHBhc3MgaW4gbW9yZSB0ZXh0IGluICJjb250ZXh0IiB0byBhaWQgc3Vj
aCBzcGVsbGNoZWNrZXJzIG9uIGxhbmd1YWdlCiAgICAgLy8gaWRlbnRpZmljYXRpb24uIE5vcmFt
bGx5IGl0J3MgdGhlIHRleHQgc3Vycm91bmRpbmcgdGhlICJ3b3JkIiBmb3Igd2hpY2ggd2UgYXJl
IGdldHRpbmcgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
aGVja2luZy5oCmluZGV4IGQyMDQwZDVlYWZiY2ZmYmVjZDdlYjU2NjlkNTU4MzIwOTEyODM5MzEu
LmMwOTkxMzg3NjZlNzM3MDU1MmQyYTE0MmQ5MmRmYWExMjBkZjRmOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtNDIsMTcgKzQyLDQ2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNkZWZpbmUgV1RGX1VTRV9BVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCAxCiAjZW5kaWYKIAotZW51bSBUZXh0Q2hlY2tpbmdUeXBlIHsKLSAgICBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgICAgPSAxIDw8IDEsCi0gICAgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIg
ICAgID0gMSA8PCAyLAotICAgIFRleHRDaGVja2luZ1R5cGVMaW5rICAgICAgICA9IDEgPDwgNSwK
LSAgICBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgICAgICAgPSAxIDw8IDYsCi0gICAgVGV4dENoZWNr
aW5nVHlwZURhc2ggICAgICAgID0gMSA8PCA3LAotICAgIFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudCA9IDEgPDwgOCwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAgPSAxIDw8IDkK
LX07CitzdHJ1Y3QgVGV4dENoZWNraW5nVHlwZXMgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7
CisgICAgICAgIFNwZWxsaW5nICAgID0gMSA8PCAxLAorICAgICAgICBHcmFtbWFyICAgICA9IDEg
PDwgMiwKKyAgICAgICAgTGluayAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIFF1b3RlICAgICAg
ID0gMSA8PCA2LAorICAgICAgICBEYXNoICAgICAgICA9IDEgPDwgNywKKyAgICAgICAgUmVwbGFj
ZW1lbnQgPSAxIDw8IDgsCisgICAgICAgIENvcnJlY3Rpb24gID0gMSA8PCA5LAorICAgICAgICBD
b3JyZWN0aW9uUGFuZWwgID0gMSA8PCAxMCwKKyAgICB9OworCisgICAgZXhwbGljaXQgVGV4dENo
ZWNraW5nVHlwZXModW5zaWduZWQgdmFsdWUgPSAwKSA6IG1fdmFsdWUodmFsdWUpIHt9CisKKyAg
ICBib29sIHNwZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9Cisg
ICAgYm9vbCBncmFtbWFyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIEdyYW1tYXI7IH0KKyAg
ICBib29sIGxpbmsoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgTGluazsgfQorICAgIGJvb2wg
cXVvdGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUXVvdGU7IH0KKyAgICBib29sIGRhc2go
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgRGFzaDsgfQorICAgIGJvb2wgcmVwbGFjZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUmVwbGFjZW1lbnQ7IH0KKyAgICBib29sIGNvcnJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvbjsgfQorICAgIGJvb2wg
Y29ycmVjdGlvblBhbmVsKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIENvcnJlY3Rpb25QYW5l
bDsgfQorCisgICAgdm9pZCBzZXRTcGVsbGluZyhib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9u
LCBTcGVsbGluZyk7IH0KKyAgICB2b2lkIHNldEdyYW1tYXIoYm9vbCBvbiA9IHRydWUpIHsgc2V0
RmxhZyhvbiwgR3JhbW1hcik7IH0KKyAgICB2b2lkIHNldExpbmsoYm9vbCBvbiA9IHRydWUpIHsg
c2V0RmxhZyhvbiwgTGluayk7IH0KKyAgICB2b2lkIHNldFF1b3RlKGJvb2wgb24gPSB0cnVlKSB7
IHNldEZsYWcob24sIFF1b3RlKTsgfQorICAgIHZvaWQgc2V0RGFzaChib29sIG9uID0gdHJ1ZSkg
eyBzZXRGbGFnKG9uLCBEYXNoKTsgfQorICAgIHZvaWQgc2V0UmVwbGFjZW1lbnQoYm9vbCBvbiA9
IHRydWUpIHsgc2V0RmxhZyhvbiwgUmVwbGFjZW1lbnQpOyB9CisgICAgdm9pZCBzZXRDb3JyZWN0
aW9uKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIENvcnJlY3Rpb24pOyB9CisgICAgdm9p
ZCBzZXRDb3JyZWN0aW9uUGFuZWwoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVj
dGlvblBhbmVsKTsgfQogCi10eXBlZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ1R5cGVNYXNrOwor
ICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRl
OgorICAgIHZvaWQgc2V0RmxhZyhib29sIG9uLCB1bnNpZ25lZCB0eXBlKSB7IG1fdmFsdWUgPSBv
biA/IChtX3ZhbHVlIHwgdHlwZSkgOiAobV92YWx1ZSAmIH50eXBlKTsgfQorCisgICAgdW5zaWdu
ZWQgbV92YWx1ZTsKK307CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NTg0
NzI0ODU5M2Q3NDI3MTc1MDU3OTIyNWZkNWU0Y2VmMDc4NGYxLi40NjYwNGIwMWY3NDJjYWZhZTA1
YWYzZjJkNDY3NmMwYTFjMGM2MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3Rv
cmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Db3Jl
Q2hlY2tpbmdUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOgorCiAyMDEx
LTA0LTA2ICBBc2Fua2EgSGVyYXRoICA8YXNhbmthQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDNjMzZjNTdkNTU2NWYzMzUwMWUzNWU3OGUwNGZh
MzViYmMxYWY0ZTQuLmIyODJiNWVjMDA3MmU4ZmNmMDllZTFkOThhMDE2OThmNTY5NjE3OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBA
IC04NzIsNyArODcyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZT
dHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGlu
Z0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwg
VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGlu
dCBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0
cmluZyYgdGV4dCkKIHsKICAgICBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpCiAg
ICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRl
eHQodGV4dCwgbmV3IFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNl
bmRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5o
CmluZGV4IDJlYmM2ZWE1ODA0YjI1M2ZiZTQxNjM4Njc0NWI5ODcxMTdhYWZkZTkuLmEzNzFjNzEy
NTkzZWY4ZTg2OTViMzM5OTQ5YzQyNDVjNTMxZWQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbklt
cGwuY3BwCmluZGV4IGY1YTY2MDRkYmE2Nzg2M2M3NmM5ZjY5MGI1MTI2MDQ5NzJlMWY3YmUuLmY2
YWZhYjUzYjFhNDgwMzE2NzFhODk0NjA3YTlkMDFiYjk2YzczNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHAKQEAgLTQwLDEyICs0MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBUZXh0Q2hlY2tpbmdUeXBlIHRvQ29yZUNoZWNr
aW5nVHlwZShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yIGVycm9yKQorc3RhdGljIFRleHRD
aGVja2luZ1R5cGVzIHRvQ29yZUNoZWNraW5nVHlwZXMoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpF
cnJvciBlcnJvcikKIHsKLSAgICBpZiAoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpF
cnJvclNwZWxsaW5nKQotICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwot
ICAgIEFTU0VSVChlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7
Ci0gICAgcmV0dXJuIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5
cGVzIHR5cGVzOworICAgIHR5cGVzLnNldFNwZWxsaW5nKGVycm9yID09IFdlYlRleHRDaGVja2lu
Z1Jlc3VsdDo6RXJyb3JTcGVsbGluZyk7CisgICAgdHlwZXMuc2V0R3JhbW1hcihlcnJvciA9PSBX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7CisgICAgQVNTRVJUSU9OKHR5cGVz
LnZhbHVlKCkpOworICAgIHJldHVybiB0eWVwczsKIH0KIAogc3RhdGljIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC01Myw3ICs1NCw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tp
bmdSCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKSB7IAogICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgY29yZVJlc3VsdDsKLSAgICAgICAgY29yZVJlc3VsdC50eXBlID0gdG9D
b3JlQ2hlY2tpbmdUeXBlKHJlc3VsdHNbaV0uZXJyb3IpOworICAgICAgICBjb3JlUmVzdWx0LnR5
cGUgPSB0b0NvcmVDaGVja2luZ1R5cGVzKHJlc3VsdHNbaV0uZXJyb3IpOwogICAgICAgICBjb3Jl
UmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0c1tpXS5wb3NpdGlvbjsKICAgICAgICAgY29yZVJlc3Vs
dC5sZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0aDsKICAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5k
KGNvcmVSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDZhZDIyMTcxN2NjYmY0ZGZiMTI2OWVj
YjdkYzI2NzNlNGMzNjhhMDAuLjI2NGNiNDI1ZDM4ZjBlMGYzZDg3OGJlMzMwN2QwMmQ5ODhlZTQz
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0
aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA0ICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmgKaW5kZXggNTZiMzMwMDJlYWExN2E4NWI5YjM3MDE2OWQ4YmQ4NDcz
ZmRjM2EyYS4uZGQ0Y2NlMWJmMmFjYzlmY2RhNGVjN2U3MTNhM2U4Y2I5MDE4NGQzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgK
QEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNG
b3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVu
YWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25z
dCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggY2E5NDRhMGE2YzkyYzI3ODE4YjA5YjIzOGFlNWQ2YTYyZGE0MzNjZi4u
ZTRhZDZmMzM0MjkyOTgxYWE2NTUxZDU3ODdlNTg4YTNjYzg5MTg2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAg
ICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBs
YWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Rl
eHRDaGVja2VyQ2xpZW50RW5jaGFudC5oOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNs
aWVudEVuY2hhbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNSAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCmluZGV4IDVkOTNjMDcyMTZkOTk1
YmZlMzZjYWZhZGQ5OTBjMGE3ODJmNTJkZGEuLjY5ZmFlNjQ0ZTNlMjFjMzI4YjBjYTI1MjgzMWI2
Y2Q2ZjlkZmZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNs
YXNzIFRleHRDaGVja2VyQ2xpZW50RW5jaGFudCA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2Nh
dGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikg
e30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTcGVsbENoZWNraW5n
TGFuZ3VhZ2UoY29uc3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3BlbGxDaGVj
a2luZ0xhbmd1YWdlKGdwb2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4
IDZhZTNkYTE5YmU2MDlkYjY1NDJlZjhiMGY4MmE4Nzk2ZjhkZGZjOWQuLjgwMjNkMjBiMDA2MWM2
OTAxYjFjYTM0ODJkYzU5MWJmYTBjZWVlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9y
aW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
VGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5o
IGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5o
CmluZGV4IGNjMjFmY2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNkNWU2NGNjYmExOTUuLjYzMzc0OWY0
MzU2MDBlNTgxNTg0MWZkMjA4MDIzYTkwOGZiMjQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3
ICsxMTEsNyBAQCBjbGFzcyBFZGl0b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQs
IHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0
TWV0aG9kU3RhdGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUo
Ym9vbCBlbmFibGVkKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVz
JiwgY29uc3QgU3RyaW5nJikge30KICAgICAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCog
dGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgYm9vbCBpc0VkaXRpbmco
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2YTUwMWFjNGZhZTFjZThkZGI5YmM0ZDU5MGQx
NDk3MzRjZTk2MzU2Li4yYzM3N2QyNzEwNDA0ZDc5YmY1MWIxYTNiM2NlZGE3OTAwYTc2MWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoY29yZSk6CisgICAgICAgICh0b05TVHlwZXMp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAg
ICAgICgtW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgaW5pdFdpdGhTZW5kZXI6V2ViQ29y
ZTo6c2VxdWVuY2U6dHlwZXM6V2ViQ29yZTo6cmVzdWx0czpdKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA2ICBSb2JlcnQg
U2VzZWsgIDxyc2VzZWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDBlNTIxMDIzNjgyYmExMjE5MjQzZTFkZGMzMGNiM2Rk
ZTIzMDA3ZTcuLmM1MTIzYjY2ZGI2MmFiM2FhYzFhOTkwNmY1YjQxOTZlNzEzNWJlNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxs
aW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9j
YXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCog
YmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1YWwg
dm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgV1RGOjpWZWN0b3I8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25z
dCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGlu
Z1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlz
c3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1Nw
ZWxsaW5nVUkoYm9vbCBzaG93KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2Vz
KTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQs
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpT
dHJpbmcmKTsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQog
ICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
aW5kZXggMzQxYTI4ZmQ0NDRhNWI2ZDEwMTQxZjFkNDg1Yzc1MmVlODg5NDE0Ny4uZDBjMzhjZWVi
ZWZjNTMwM2IwNDE4NjgwMzFmZDI1MTJmMzY0MDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzkxLDcgKzc5MSw3
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgVmVjdG9yCiB9CiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLXN0YXRpYyBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENo
ZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcykKK3N0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgY29uc3QgVGV4dENoZWNraW5n
VHlwZXMmIGNoZWNraW5nVHlwZXMpCiB7CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
cmVzdWx0czsKIApAQCAtODAwLDE2ICs4MDAsMTYgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXAK
ICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQg
cmVzdWx0VHlwZV07CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwotICAgICAg
ICBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKSB7CisgICAgICAgIGlm
IChOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlw
ZXMuc3BlbGxpbmcoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAg
ICAgICAgICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1
bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFy
KSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVz
dWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmdyYW1tYXIoKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5j
b21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldEdyYW1t
YXIoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAg
ICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CkBA
IC04MjksMzcgKzgyOSwzNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29y
ZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogICAgICAgICAgICAg
ICAgIHJlc3VsdC5kZXRhaWxzLmFwcGVuZChkZXRhaWwpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRD
aGVja2luZ1R5cGVMaW5rID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5T
VGV4dENoZWNraW5nVHlwZUxpbmspKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tp
bmdUeXBlTGluayA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMubGluaygpKSB7CiAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldExp
bmsoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAg
ICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0
ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9
IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVF1b3RlID09IHJlc3VsdFR5cGUgJiYgMCAhPSAo
Y2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlKSkgeworICAgICAgICB9IGVs
c2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVF1b3RlID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdU
eXBlcy5xdW90ZSgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0Owot
ICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgICAg
ICAgICByZXN1bHQudHlwZS5zZXRRdW90ZSgpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29t
aW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCA9PSBy
ZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVEYXNo
KSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0gcmVzdWx0
VHlwZSAmJiBjaGVja2luZ1R5cGVzLmRhc2goKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZURhc2g7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAgICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2lu
Z1R5cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBO
U1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1Rl
eHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMu
cmVwbGFjZW1lbnQoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owor
ICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0UmVwbGFjZW1lbnQoKTsKICAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24gPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5jb3Jy
ZWN0aW9uKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAg
ICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAg
ICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlvbigpOwogICAgICAgICAgICAgcmVzdWx0Lmxv
Y2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0g
W2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKQEAgLTg2OSwxMyArODY5LDM0IEBA
IHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5n
UmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KKworc3Rh
dGljIHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCit7
CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAodHlwZXMuc3BlbGxpbmcoKSkKKyAg
ICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGlmICh0eXBl
cy5ncmFtbWFyKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFy
OworICAgIGlmICh0eXBlcy5saW5rKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2lu
Z1R5cGVMaW5rOworICAgIGlmICh0eXBlcy5xdW90ZSgpKQorICAgICAgICByZXN1bHQgfD0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgaWYgKHR5cGVzLmRhc2goKSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgaWYgKHR5cGVzLnJlcGxhY2VtZW50
KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAg
ICBpZiAodHlwZXMuY29ycmVjdGlvbigpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAjZW5kaWYKIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0
LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVj
a1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgVGV4
dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
JiByZXN1bHRzKQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0
ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNBcnJheSAqaW5jb21p
bmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3Ry
aW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkg
dHlwZXM6KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlv
bnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBv
cnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jl
c3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6
dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBl
czoodG9OU1R5cGVzKGNoZWNraW5nVHlwZXMpfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5
KSBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50
VGFnKCkgb3J0aG9ncmFwaHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07CiAgICAgW3RleHRTdHJpbmcg
cmVsZWFzZV07CiAgICAgcmVzdWx0cyA9IGNvcmUoaW5jb21pbmdSZXN1bHRzLCBjaGVja2luZ1R5
cGVzKTsKICNlbmRpZgpAQCAtOTc2LDE1ICs5OTcsMTUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIq
IF9zZW5kZXI7CiAgICAgaW50IF9zZXF1ZW5jZTsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBf
dHlwZXM7CisgICAgVGV4dENoZWNraW5nVHlwZXMgX3R5cGVzOwogICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBfcmVzdWx0czsKIH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOworLSAoaWQp
aW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihp
bnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzKXR5cGVzIHJlc3Vs
dHM6KE5TQXJyYXkqKXJlc3VsdHM7CiAtICh2b2lkKXBlcmZvcm07CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyCi0tIChpZClpbml0V2l0aFNlbmRl
cjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0
eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJh
eSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciop
c2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTEwMDQsMTUgKzEwMjUsMjAgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIEBlbmQKICNlbmRpZgog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciog
c2VuZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiBj
aGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNSYW5n
ZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIHRleHQubGVuZ3RoKCkpOworICAgIC8vIFN0b3JlcyBp
dCBhcyBhIHByaW1pdGl2ZSB2YWx1ZSB0byBhbGxvdyB0aGUgYmxvY2sgdG8gY29weSBpdC4KKyAg
ICB1bnNpZ25lZCBjaGVja2luZ1R5cGVzVmFsdWUgPSBjaGVja2luZ1R5cGVzLnZhbHVlKCk7CiAg
ICAgTlNSdW5Mb29wKiBjdXJyZW50TG9vcCA9IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwog
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZzp0ZXh0IHJhbmdlOnJhbmdlIHR5cGVzOk5TVGV4dENoZWNraW5nQWxsU3lzdGVtVHlw
ZXMgb3B0aW9uczowIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6MCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIsIE5T
QXJyYXkqIHJlc3VsdHMsIE5TT3J0aG9ncmFwaHkqLCBOU0ludGVnZXIpIHsKICAgICAgICAgICAg
IFtjdXJyZW50TG9vcCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm0pIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNr
UmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2Ug
dHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNr
UmVzcG9uZGVyIGFsbG9jXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzOldlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVzKGNoZWNraW5nVHlwZXNWYWx1ZSkgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6cmVzdWx0c10g
YXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Om5p
bCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29w
TW9kZV1dOwogICAgICAgICB9XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBlY2VlMzBiODI2
YTZhYmNjNDgxMGMyMThhOGE4MGY2OWNhNTAwZTczLi5jODUyZThlZjMyYjY0NTFhOGY1YTZmMDg5
NTcyMTU1ZGRlYTg4ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0
LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0
Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDEx
LTA0LTA2ICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDBkOGU4YzY3OTg0ZTlh
ZDFmN2YyYzU2YjZjMGQxY2ZkNjRiZTIxZjAuLmQwMGI2NDUzOWVkMGNkM2VkYmRjZDE4ZWRjNjY4
ZWI5NGZkN2E3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoU3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgU3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNv
bnN0IFN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBib29sIGlzRWRpdGluZygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDBmOTA4NWQ5ZmE4M2Q4YmQ4ODBmNzBkODljOGQyZjBiNGJiMzYxYmYu
LjBkZTc5NjFmMmIzZWZiNzJmMzg3YmI5ZjhkYjI2YTRkNmVlODU4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAg
ICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVw
bGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA2ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBk
NDU2Y2M5YjA3OTJjODRhZjE5NDVlZTc3Y2I3Yzc5ZDNiZTIyOWQ3Li41YWYzNTQ1ODJiZDJhNDE2
OGM2Y2VjYmMxYzBhYTcxNmVlMzBjZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4
IGE1YjlhY2IzNGVhNDU5NDU0ZmU4OGY3MmYwZGFkZGEyYjc3NDExYzUuLjdkNDNmODZkYmI2YmRi
Njc1ZThkNWZlNDY3YjIxZWJlODA2ZTNhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9y
aW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
VGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgK
aW5kZXggYTJiMjNiNDg1MzZhOThjOWE1MDg3YjQxMmY4YmU0YTNhNWJkZjdlZi4uYzIzNWMyY2Jk
MjAxZDMwODhiOGM3ZDE1MjMwNmUzNmY1NGMxN2RmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaApAQCAtMTAxLDcg
KzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29u
c3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5w
dXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBX
VEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0
Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IDVlYjRjMDk3NmJlOWU4MjQ3MGRlMWNjODhkODQ2MzExYTNmMjJl
MzAuLjAxNTFmMjg0ZGZhYmFhZmIyMDVmMTAzYjU5NDkyNDNhZGFmZWE3ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAg
ICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRX
eDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA2ICBNYWxjb2xtIE1hY0xl
b2QgIDxtYWxjb2xtLm1hY2xlb2RAdHNod2FuZWRqZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2V2aW4gT2xsaXZpZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5oCmluZGV4IDY1ZWU0OTMwNTkzOWMyN2Y1YjAzNjE2NWE3NmM1NWRkZjRk
NTA3MjguLjhiZjA0OTg5ZjI5NTg0NzJmZTZlNjYwZTE5NzYxOTBiY2JkZmY2NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCkBAIC0xMTQs
NyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDMzOThiZjlhY2ZlNzY1Y2IyNTIyN2RiMGE4NGU3MjY3OTIzYmFlNzcuLmUxYzg3N2Nh
ZDEwZDg3NTdjMDQ2ZTYzNzRkZTZjZWUzNWY1YzY3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6
IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0
Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0Ojp0b05TVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKwogMjAxMS0wNC0wNiAgU2lkZGhhcnRoIE1hdGh1
ciAgPHNpZGRoYXJ0aC5tYXRodXJAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJl
bmphbWluIFBvdWxhaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNTM5NGMyNTk5MzRkYjY3NjdlZmYzZTI3ZWQxZDY1ZTU0OGMwNGY5Yi4u
MTRlNDNjOTMxMjMxZjViZTg1OWE3MGMzZjhjMmFiMWRkZGExMDI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDU0LDEwICs0NTQsMjYg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykK
KyAgICB7CisgICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHR5cGVzLnZhbHVlKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKKyAgICB7CisgICAgICAgIHVpbnQzMl90
IHZhbHVlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh2YWx1ZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHR5cGVzID0gV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZXModmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShyZXN1bHQudHlwZSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXN1bHQu
dHlwZSk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHJlc3VsdC5sb2NhdGlvbik7CiAg
ICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHJlc3VsdC5sZW5ndGgpOwogICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUocmVzdWx0LmRldGFpbHMpOwpAQCAtNDY2LDcgKzQ4Miw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiB7CiAK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHJlc3VsdC50eXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVJbnQzMihyZXN1bHQubG9jYXRpb24pKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hl
Y2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMu
bW0KaW5kZXggY2VmM2E1NTgyNDFjMDIwMmU4OWQ3NGViMDgyMWVmZDQ2OGUyYTE1My4uMDdmYzAz
ODkzZWI3MDYxMzE1OTg1YmUyMjA1NzcwMmRhMWUyYTIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0yMjQsMTQgKzIyNCwxNCBAQCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3Ro
ID4gMCk7CiAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgICAgICAgICByZXN1bHQudHlw
ZS5zZXRTcGVsbGluZygpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgKGNoZWNraW5n
VHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5j
b21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldEdyYW1t
YXIoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAg
ICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CkBA
IC0yNTMsMzUgKzI1MywzNSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tl
cjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2lu
Z1R5cGVMaW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgICAgICAg
ICByZXN1bHQudHlwZS5zZXRMaW5rKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5n
UmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5n
VHlwZVF1b3RlICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpKSB7
CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVz
dWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgICAgICAgICByZXN1bHQudHlw
ZS5zZXRRdW90ZSgpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxh
Y2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCkpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVEYXNoOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0RGFzaCgpOwogICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiAoY2hlY2tpbmdUeXBl
cyAmIE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50OworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0UmVwbGFjZW1l
bnQoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAg
ICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0
cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVs
c2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiAoY2hl
Y2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldENv
cnJlY3Rpb24oKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
ICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNl
bWVudFN0cmluZ107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMWI4NjQwOTNlZTdmNjBk
NTlmYzcxNjc1MjZhNzVhN2FhY2M0OTM1Ni4uNzE3YjU1ZGQ3NGViMzM2YzJlNjdlMzEzODg2MmEx
NmQyNDBkZTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA2MzMwOTBmNDRk
MDBhNjgwNjhkOGZlNTZmZDJjOTU5ZjMxNWFhM2JkLi43ODUzZjdlMzhlMWE5MGU5NzJmMmJhZGQ1
YTUzNzU1OTNiNjA2YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzNiw3ICsxMzYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZv
ck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpOwogICAgIHZpcnR1
YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZl
Y3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBp
bnQqIGJhZEdyYW1tYXJMZW5ndGgpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmly
dHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25z
dCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCYgZGV0YWlsKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdp
dGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYp
OwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggZWE0NDBmYzIzNDgxYmIyZWE0
Y2YyMWE4Yzk1ZjM2YjE3YzI4ZjU5OS4uMWE2ODU5ZWM5ODU0NTA1OTIzYTAxZWE4NDgzMmFhZjk1
YTUxZjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtMjQwLDEw
ICsyNDAsMzAgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3N0YXRpYyB1bnNpZ25lZCB0b05TVHlwZXMoY29u
c3QgVGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CisgICAgaWYgKHR5cGVzLnNwZWxsaW5nKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAodHlwZXMuZ3JhbW1hcigpKQorICAgICAgICByZXN1
bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBpZiAodHlwZXMubGluaygpKQor
ICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICBpZiAodHlwZXMu
cXVvdGUoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAg
IGlmICh0eXBlcy5kYXNoKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVE
YXNoOworICAgIGlmICh0eXBlcy5yZXBsYWNlbWVudCgpKQorICAgICAgICByZXN1bHQgfD0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgaWYgKHR5cGVzLmNvcnJlY3Rpb24oKSkK
KyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3Qg
aGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCi0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3Ro
KSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFy
YWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwg
dG9OU1R5cGVzKGNoZWNraW5nVHlwZXMpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tU
ZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMpKTsKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88665</attachid>
            <date>2011-04-07 11:22:19 -0700</date>
            <delta_ts>2011-04-11 12:15:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110407112218.patch</filename>
            <type>text/plain</type>
            <size>72111</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTg4MTMzNTViM2MzZTRm
OTJlMzFmMDc0OWY1MjljNGI4NTUwM2M3Li5hZTlmZGMxN2YxM2VlOTA2YzllMjk1NTJhY2MwMTFj
NTMzYTBhMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvTWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6
OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5n
cmFtbWF0aWNhbFJhbmdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6VGV4dENoZWNraW5nVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlczo6aXNMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzOjppc1F1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0Rh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzUmVwbGFjZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzQ29ycmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0U3BlbGxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEdyYW1tYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldExpbmspOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXM6OnNldFF1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzOjpzZXREYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpz
ZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0
Q29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6dmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEZsYWcpOgorCiAyMDEx
LTA0LTA3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA5MGViODI1
YzA0NzQ5YzVkM2VjZWFkMzMyYjJjMDA1YzdiN2JmYzFiLi5iMTlkZmUzNDZmYWRkMWM5MjkzZmM0
OTVlNjI3NzI0YmE5N2YzYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NTUs
NyArNDU1LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKIAogICAgIE5vZGUqIG5vZGVUb0No
ZWNrID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBp
ZiAobV9zcGVsbENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9kZVRvQ2hlY2spKQot
ICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5
cGVNYXNrRm9yKE1hcmtTcGVsbGluZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOworICAg
ICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlc29sdmVSZXBsYWNlZFRl
eHRDaGVja2luZ1R5cGUoVGV4dENoZWNraW5nVHlwZXMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxs
aW5nIHwgVGV4dENoZWNraW5nVHlwZXM6OkdyYW1tYXIpKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2
b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
Ym9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMDg1LDMxICsy
MDg1LDI2IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShzZWxlY3Rpb25BZnRlclR5cGluZyk7CiAjZW5kaWYKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25z
IHRleHRDaGVja2luZ09wdGlvbnMgPSAwOwotICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtTcGVsbGlu
ZzsKLQorICAgIFRleHRDaGVja2luZ1R5cGVzIHRleHRDaGVja2luZ1R5cGVzOworICAgIHRleHRD
aGVja2luZ1R5cGVzLnNldFNwZWxsaW5nKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpOwogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoaXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICB8fCBpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpCi0gICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpCi0gICAgICAgIHx8ICgodGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZykgJiYg
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpKQotICAgICAgICB0ZXh0Q2hl
Y2tpbmdPcHRpb25zIHw9IFBlcmZvcm1SZXBsYWNlbWVudDsKKyAgICB0ZXh0Q2hlY2tpbmdUeXBl
cy5zZXRSZXBsYWNlbWVudChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgodGV4dENo
ZWNraW5nVHlwZXMuaXNTcGVsbGluZygpKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQoKSkpOwogI2VuZGlmCisgICAgdGV4dENoZWNraW5nVHlwZXMuc2V0R3JhbW1hcihp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAKLSAgICBpZiAoIXRleHRDaGVja2luZ09wdGlv
bnMgJiAoTWFya1NwZWxsaW5nIHwgUGVyZm9ybVJlcGxhY2VtZW50KSkKKyAgICBpZiAoIXRleHRD
aGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSAmJiAhdGV4dENoZWNraW5nVHlwZXMuaXNSZXBsYWNl
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7Ci0KICAg
ICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0
YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSAgICBpZiAodGV4dENoZWNraW5nT3B0aW9u
cyAmIE1hcmtHcmFtbWFyKSB7CisgICAgaWYgKHRleHRDaGVja2luZ1R5cGVzLmlzR3JhbW1hcigp
KSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0
YXJ0KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
dGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAg
ICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ1R5
cGVzLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHNlbGVjdGVkU2Vu
dGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29y
ZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nVHlwZXMsIGFkamFjZW50V29yZHMu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKICAgICB9CiAKICNlbHNlCkBAIC0yMjE4LDE3ICsyMjEzLDE3IEBAIHZvaWQg
RWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
CiAgICAgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihzZWxlY3Rpb24sIGZhbHNlLCBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCi12b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09w
dGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBF
ZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoY29uc3QgVGV4
dENoZWNraW5nVHlwZXMmIHRleHRDaGVja2luZ1R5cGVzLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwg
UmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQog
ICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGF0IHRoaXMg
bW9tZW50LgogICAgIEFTU0VSVCghbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJlcGxh
Y2VkKTsKIAotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0aW9u
cyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNr
aW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2Vt
ZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKLSAgICBib29s
IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgU2hvd0Nv
cnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3Vs
ZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBDaGVja0ZvckNv
cnJlY3Rpb24pOworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nVHlw
ZXMuaXNTcGVsbGluZygpOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tp
bmdUeXBlcy5pc0dyYW1tYXIoKTsKKyAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ1R5cGVzLmlzUmVwbGFjZW1lbnQoKTsKKyAgICBib29sIHNob3VsZFNob3dD
b3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdUeXBlcy5pc0NvcnJlY3Rpb25QYW5lbCgpOwor
ICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25Q
YW5lbCB8fCB0ZXh0Q2hlY2tpbmdUeXBlcy5pc0NvcnJlY3Rpb24oKTsKIAogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggc2VsZWN0aW9ucyBhbHJlYWR5IGV4cGFuZGVkIHRvIHdv
cmQgYm91bmRhcmllcy4KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTIyNzUsMTAgKzIy
NzAsMTAgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiByZXN1bHRzOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKICAgICAgICAgdGV4
dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoZ3JhbW1hclBhcmFncmFwaC50ZXh0Q2hh
cmFjdGVycygpLCBncmFtbWFyUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKHRl
eHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSh0ZXh0Q2hl
Y2tpbmdUeXBlcyksIHJlc3VsdHMpOwogICAgIGVsc2UKICAgICAgICAgdGV4dENoZWNrZXIoKS0+
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwg
c3BlbGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENoZWNraW5n
T3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKHRleHRDaGVja2luZ1R5cGVz
KSwgcmVzdWx0cyk7CiAgICAgICAgIAogCiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TApAQCAtMjMwMSw3ICsyMjk2LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAg
Ly8gMi4gUmVzdWx0IGZhbGxzIHdpdGhpbiBzcGVsbGluZ1JhbmdlLgogICAgICAgICAvLyAzLiBU
aGUgd29yZCBpbiBxdWVzdGlvbiBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3VvdXMgYm91bmRhcnku
IEZvciBpbnN0YW5jZSwgd2Ugd291bGQgbm90IG1hcmsKICAgICAgICAgLy8gICAgIndvdWxkbici
IGFzIG1pc3NwZWxsZWQgcmlnaHQgYWZ0ZXIgYXBvc3Ryb3BoZSBpcyB0eXBlZC4KLSAgICAgICAg
aWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nICYmIHJlc3VsdExvY2F0aW9uID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5n
U3RhcnQoKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1Jhbmdl
RW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgeworICAgICAgICBp
ZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIHJlc3VsdC0+dHlwZS5pc1NwZWxsaW5nKCkgJiYgcmVz
dWx0TG9jYXRpb24gPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpICYmIHJlc3Vs
dExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJl
c3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IHNwZWxsaW5nUGFyYWdyYXBoLnN1YnJhbmdlKHJlc3Vs
dExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOwogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFO
RUwKQEAgLTIzMDksNyArMjMwNCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAjZW5kaWYgLy8gU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TAogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpOwotICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFt
bWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBncmFtbWFy
UGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHQtPnR5
cGUuaXNHcmFtbWFyKCkgJiYgZ3JhbW1hclBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJl
c3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pd
OwpAQCAtMjMyMCwxNSArMjMxNSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb2Nh
dGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExv
Y2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQo
KQotICAgICAgICAgICAgICAgICAgICAmJiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5
cGVMaW5rCi0gICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlUXVvdGUKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRD
aGVja2luZ1R5cGVEYXNoCi0gICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0
LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkgeworICAgICAgICAgICAgICAg
ICAgICYmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkgfHwgcmVzdWx0LT50eXBlLmlzUXVvdGUoKSB8
fCByZXN1bHQtPnR5cGUuaXNEYXNoKCkgfHwgcmVzdWx0LT50eXBlLmlzUmVwbGFjZW1lbnQoKSB8
fCByZXN1bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBJbiB0aGlz
IGNhc2UgdGhlIHJlc3VsdCByYW5nZSBqdXN0IGhhcyB0byB0b3VjaCB0aGUgc3BlbGxpbmcgcmFu
Z2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVwbGFjaW5nIG5vbi13b3JkIHRleHQgc3VjaCBhcyBwdW5j
dHVhdGlvbi4KICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExv
Y2F0aW9uID49IDApOwogCi0gICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5l
bCAmJiAocmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPCBzcGVsbGluZ1JhbmdlRW5kT2Zm
c2V0IHx8IHJlc3VsdC0+dHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpCisgICAg
ICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiAocmVzdWx0TG9jYXRpb24g
KyByZXN1bHRMZW5ndGggPCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0IHx8ICFyZXN1bHQtPnR5cGUu
aXNDb3JyZWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBpbnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1bHQtPnJlcGxhY2VtZW50Lmxlbmd0aCgpOwpA
QCAtMjM0MiwxMyArMjMzMywxMyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UuZ2V0
KCksIERPV05TVFJFQU0pOwogCiAgICAgICAgICAgICAvLyBhZGRpbmcgbGlua3Mgc2hvdWxkIGJl
IGRvbmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZAotICAgICAgICAgICAg
aWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBzZWxlY3Rpb25PZmZz
ZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCisgICAgICAgICAgICBpZiAo
cmVzdWx0LT50eXBlLmlzTGluaygpICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3VsdExvY2F0aW9u
ICsgcmVzdWx0TGVuZ3RoICsgMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nOwogCiAgICAgICAgICAgICAvLyBEb24ndCBjb3Jy
ZWN0IHNwZWxsaW5nIGluIGFuIGFscmVhZHktY29ycmVjdGVkIHdvcmQuCi0gICAgICAgICAgICBp
ZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAocmVzdWx0LT50eXBlLmlzQ29ycmVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
cmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1JlcGxhY2UuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPm1hcmtlcnMoKTsKICAgICAgICAgICAgICAgICBpZiAobWFya2Vycy0+aGFzTWFy
a2VycyhyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KSkg
ewpAQCAtMjM4NSw3ICsyMzc2LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChy
ZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmspIHsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQtPnR5cGUuaXNMaW5rKCkpIHsKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFjZSk7CiAgICAgICAgICAgICAgICAg
c2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVzdG9yZVNlbGVjdGlv
bkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yMzk0LDcgKzIzODUsNyBAQCB2b2lkIEVkaXRvcjo6
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaAogICAgICAgICAgICAgfSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5z
ZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uVHlwZWQpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCB1c2VTcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kID0gZmFsc2U7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5F
TAotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNv
cnJlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24o
KSkKICAgICAgICAgICAgICAgICAgICAgdXNlU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCA9IHRy
dWU7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAodXNlU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZCkKQEAgLTI0MTcsNyArMjQwOCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHNlbGVjdGlvbk9m
ZnNldCAtIDE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikgeworICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gQWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUg
YW5kIHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiByZXBsYWNlZFJhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9j
YXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlc1RvQWRkID0gbWFya2VyVHlwZXNG
b3JBdXRvY29ycmVjdGlvbigpOwpAQCAtMjQ1MCw3ICsyNDQxLDcgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICB9CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFVO
VVNFRF9QQVJBTSh0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKKyAgICBVTlVTRURfUEFSQU0odGV4dENo
ZWNraW5nVHlwZXMpOwogICAgIFVOVVNFRF9QQVJBTShzcGVsbGluZ1JhbmdlKTsKICAgICBVTlVT
RURfUEFSQU0oZ3JhbW1hclJhbmdlKTsKICNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNL
SU5HKQpAQCAtMjUxNCwxMCArMjUwNSw5IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAjaWYg
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25z
IHRleHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247
Ci0gICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAg
ICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOwotICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxp
bmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyB0ZXh0Q2hl
Y2tpbmdUeXBlcyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBl
czo6Q29ycmVjdGlvbik7CisgICAgdGV4dENoZWNraW5nVHlwZXMuc2V0R3JhbW1hcihtYXJrR3Jh
bW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CisgICAgbWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdUeXBlcywgc3BlbGxpbmdTZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpKTsKICNlbHNlCiAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2U7CiAgICAgbWFya01pc3NwZWxsaW5ncyhzcGVsbGluZ1NlbGVjdGlvbiwgZmly
c3RNaXNzcGVsbGluZ1JhbmdlKTsKQEAgLTI1MzYsNyArMjUyNiw4IEBAIHZvaWQgRWRpdG9yOjpj
b3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPEVkaXRvcj4qKQogICAgICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5hZmZpbml0eSgpKTsK
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29yZChzdGFydCwgTGVmdFdvcmRJ
Zk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBW
aXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyhNYXJrU3BlbGxpbmcgfCBTaG93Q29ycmVjdGlvblBhbmVsLCBh
ZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVzKFRl
eHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpDb3JyZWN0aW9u
UGFuZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CiAgICAgfQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZVJldmVy
c2lvbjogewpAQCAtMzYyOSwzOCArMzYyMCwxOSBAQCBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dS
ZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKSBjb25zdAogICAgIHJldHVybiB2aWV3LT5j
b250ZW50c1RvV2luZG93KEludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9ICAgICAgICAKIAotVGV4
dENoZWNraW5nVHlwZU1hc2sgRWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hl
Y2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMpCitUZXh0Q2hlY2tpbmdUeXBlcyBFZGl0
b3I6OnJlc29sdmVSZXBsYWNlZFRleHRDaGVja2luZ1R5cGUoY29uc3QgVGV4dENoZWNraW5nVHlw
ZXMmIHRleHRDaGVja2luZ1R5cGVzKQogewotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3VsZE1hcmtH
cmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJvb2wgc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29ycmVj
dGlvblBhbmVsOwotICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hv
d0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIENoZWNrRm9yQ29ycmVj
dGlvbik7Ci0KLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gMDsKLSAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0gICAgICAg
IGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAgaWYgKHNob3Vs
ZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbjsKLQorICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGVzID0gdGV4dENo
ZWNraW5nVHlwZXM7CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGJv
b2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZv
cm1SZXBsYWNlbWVudDsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAg
ICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBj
aGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50
RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBl
UmVwbGFjZW1lbnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVz
IHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIGlmICh0eXBlcy5pc1JlcGxhY2Vt
ZW50KCkpIHsKKyAgICAgICAgdHlwZXMuc2V0TGluayhpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25F
bmFibGVkKCkpOworICAgICAgICB0eXBlcy5zZXRRdW90ZShpc0F1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgdHlwZXMuc2V0RGFzaChpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkKCkpOworICAgICAgICB0eXBlcy5zZXRSZXBsYWNlbWVudChpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSk7CisgICAgICAgIHR5cGVzLnNldENvcnJl
Y3Rpb24odGV4dENoZWNraW5nVHlwZXMuaXNTcGVsbGluZygpICYmIGlzQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZCgpKTsKICAgICB9CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGVj
a2luZ1R5cGVzOworICAgIHJldHVybiB0eXBlczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZjlhZWM0MDY5MGEwMWYzYTM4Nzg1NWNhMjJh
MDY1N2U3NDVhYjMxNS4uYTk4MDM5ZGU0ZTk0YTIyNThhYmQ0ZWM4ZjA4ZDQ1NzYwODY4NDI5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0yMjQsMTUgKzIyNCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lk
IG1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNw
ZWxsaW5nU2VsZWN0aW9uLCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBncmFtbWFyU2VsZWN0aW9uKTsKIAotICAgIGVudW0gVGV4dENoZWNraW5nT3B0aW9uRmxhZ3Mg
ewotICAgICAgICBNYXJrU3BlbGxpbmcgPSAxIDw8IDAsCi0gICAgICAgIE1hcmtHcmFtbWFyID0g
MSA8PCAxLAotICAgICAgICBQZXJmb3JtUmVwbGFjZW1lbnQgPSAxIDw8IDIsCi0gICAgICAgIFNo
b3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8IDMsCi0gICAgICAgIENoZWNrRm9yQ29ycmVjdGlvbiA9
IDEgPDwgNCwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9u
czsKLQogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICB2b2lkIHVwcGVy
Y2FzZVdvcmQoKTsKICAgICB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKQEAgLTI1Miw3ICsyNDMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3Jh
bW1hclJhbmdlKTsKKyAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFu
Z2UqIGdyYW1tYXJSYW5nZSk7CiAgICAgdm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CkBAIC00MTYsNyAr
NDA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlv
bigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpOwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ1R5cGVN
YXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOworICAgIFRleHRDaGVja2luZ1R5cGVzIHJlc29s
dmVSZXBsYWNlZFRleHRDaGVja2luZ1R5cGUoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmKTsKICAg
ICB2b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJh
bmdlKiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7
CiAKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAKaW5kZXggZmVkY2MwNzczZTZlNzk4MWY2YTkwMjM5MzE2MTY3YmI3NDdl
ZGJlMS4uYjYxNzNlYjg3ZDE5MWE3NGIxNjE2ZDRiNWE3MDFlYWRkOTRhZTI3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgYm9v
bCBTcGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJu
IG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVl
c3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBOb2RlKiBub2RlKQordm9p
ZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcihjb25zdCBUZXh0Q2hlY2tpbmdUeXBl
cyYgb3B0aW9ucywgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25v
dXNseShub2RlKSk7CiAKICAgICBpZiAoIWluaXRSZXF1ZXN0KG5vZGUpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVz
dFNlcXVlbmNlLCBtYXNrLCBtX3JlcXVlc3RUZXh0KTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG9wdGlvbnMsIG1fcmVxdWVz
dFRleHQpOwogfQogCiBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRv
ciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKQEAgLTEzMSwxMSArMTMxLDExIEBAIHN0YXRpYyBi
b29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3Rh
bmNlKQogICAgIHJldHVybiBmYWxzZTsgICAgCiB9CiAKLXN0YXRpYyBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0b01hcmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQorc3RhdGljIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdU
eXBlcyYgdHlwZXMpCiB7Ci0gICAgaWYgKHR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
KQorICAgIGlmICh0eXBlcy5pc1NwZWxsaW5nKCkpCiAgICAgICAgIHJldHVybiBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmc7Ci0gICAgQVNTRVJUKHR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIpOworICAgIEFTU0VSVCh0eXBlcy5pc0dyYW1tYXIoKSk7CiAgICAgcmV0dXJuIERvY3VtZW50
TWFya2VyOjpHcmFtbWFyOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3UKICAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOwogICAgIFBvc2l0aW9uSXRlcmF0b3Ig
c3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobV9yZXF1ZXN0Tm9kZS5nZXQoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChyZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJl
c3VsdHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgaWYgKCFy
ZXN1bHRzW2ldLnR5cGUuaXNTcGVsbGluZygpICYmICFyZXN1bHRzW2ldLnR5cGUuaXNHcmFtbWFy
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3Zpbmcg
dGhlIHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNv
cnRlZCB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCA0YmNiODll
NTk4NWNkMWJkM2M2MmVhOWJmYWQwN2Q5ZDRjYWUxYjMzLi40MTYzMTNiNDA0YmRmZDk5ODczYmY5
ZjI1ZjI4NzVhNjAxZjdhZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1ZhbGlkKGludCBzZXF1ZW5jZSkgY29uc3Q7CiAgICAgYm9vbCBpc0NoZWNrYWJsZShO
b2RlKikgY29uc3Q7Ci0gICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlw
ZU1hc2ssIE5vZGUqKTsKKyAgICB2b2lkIHJlcXVlc3RDaGVja2luZ0Zvcihjb25zdCBUZXh0Q2hl
Y2tpbmdUeXBlcyYsIE5vZGUqKTsKICAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29u
c3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAzOTEyYTQ5ZjRmZTk2
N2Q3ZDViODExYjc5MjkyMjcwMzZiZjNmOGU3Li5kNDdmZWI4ZmJjZmE0YTJjMzkxOWQ0Y2FiMzdi
ODE1MTRjMmE3YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuY3BwCkBAIC0yNzQsMTkgKzI3NCwyMCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKLSAgICAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVz
ID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICAgICAgICAgICAg
ICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBo
U3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBjaGVja2luZ1R5
cGVzLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25z
KFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5z
ZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnRleHRD
aGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJz
KCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgb3B0aW9ucywgcmVzdWx0cyk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3Vs
dHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dENoZWNraW5n
UmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlv
biA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVu
Z3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZS5pc1NwZWxsaW5nKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRP
ZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRP
ZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+
IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNw
ZWxsaW5nTG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAg
ICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC0+bG9j
YXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
aXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFt
bWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiByZXN1bHQt
PmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0
LT5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUuaXNHcmFtbWFyKCkgJiYgcmVzdWx0LT5sb2Nh
dGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVu
Z3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFy
IHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBm
aXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdy
YW1tYXIgcmVzdWx0LgpAQCAtNTI0LDEyICs1MjUsMTQgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENo
ZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJv
b2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiByZXN1bHRzOwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBj
aGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotICAgIG1fY2xpZW50LT50ZXh0
Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMo
KSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisKKyAg
ICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7
CisgICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7CisgICAgbV9jbGllbnQtPnRl
eHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVy
cygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBvcHRpb25zLCByZXN1bHRzKTsKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAg
ICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAg
ICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgp
KSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNTcGVsbGluZygpICYmIHBhcmFncmFwaC5j
aGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsK
ICAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1
YnN0cmluZygpOwogICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZCht
aXNzcGVsbGVkV29yZCwgU3RyaW5nKCksIGd1ZXNzZXMpOwpAQCAtNTQ0LDcgKzU0Nyw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVu
Z3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jl
c3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0g
VGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVy
ZWRCeShyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJl
c3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJl
ZEJ5KHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKSkgewogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAg
ICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFp
bHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRh
aWwtPmxvY2F0aW9uID49IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4
IGUxYTlmZmVmNWI4ODRiMmViZWU1MDc1NzVjMzNhNGNlMzA1NTAzNjUuLmJhNmRlMDZjM2VjZDkz
NTEwNTI1MmUwNjlmNjQ3NTE4NmI1MjJlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKQEAgLTQwNywxMSArNDA3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWls
PiYsIGludCosIGludCopIHsgfQogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRl
eHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIGNv
bnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFRleHRDaGVja2lu
Z1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBl
cyYsIGNvbnN0IFN0cmluZyYpIHsgfQogfTsKIAogY2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBw
dWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENoZWNrZXJDbGllbnQuaAppbmRleCBkMTZhZGUxNjQ2MGFkNzBmMzdlYjllOGQ0MTRkZjYx
ZjY3Y2ZjOGQzLi44ZGYxODA5MTUxZmI5MGFjY2RmNzQxOGM4ZjY4YjJiYzkzNTcyYzk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHN0cnVjdCBHcmFtbWFyRGV0YWlsIHsKIH07CiAKIHN0cnVjdCBUZXh0
Q2hlY2tpbmdSZXN1bHQgewotICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKKyAgICBUZXh0Q2hl
Y2tpbmdUeXBlcyB0eXBlOwogICAgIGludCBsb2NhdGlvbjsKICAgICBpbnQgbGVuZ3RoOwogICAg
IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBkZXRhaWxzOwpAQCAtNjQsMTQgKzY0LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBp
bnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlv
biwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7CiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NI
RUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNv
bnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dHMpID0gMDsKICNlbmRpZgogCiAgICAgLy8gRm9yIHNwZWxsY2hlY2tlcnMgdGhhdCBzdXBwb3J0
IG11bHRpcGxlIGxhbmd1YWdlcywgaXQncyBvZnRlbiBpbXBvcnRhbnQgdG8gYmUgYWJsZSB0byBp
ZGVudGlmeSB0aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8KICAgICAvLyBwcm92aWRlIG1vcmUgYWNj
dXJhdGUgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4gQ2FsbGVyIGNhbiBwYXNzIGluIG1vcmUgdGV4
dCBpbiAiY29udGV4dCIgdG8gYWlkIHN1Y2ggc3BlbGxjaGVja2VycyBvbiBsYW5ndWFnZQogICAg
IC8vIGlkZW50aWZpY2F0aW9uLiBOb3JhbWxseSBpdCdzIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRo
ZSAid29yZCIgZm9yIHdoaWNoIHdlIGFyZSBnZXR0aW5nIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMu
CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgVGV4
dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBkMjA0MGQ1ZWFmYmNmZmJl
Y2Q3ZWI1NjY5ZDU1ODMyMDkxMjgzOTMxLi44ZTNmODI3ZTE1N2RhNDVmMmFhZTNmNzlkNjM3OTVl
MTkwYzhjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
aGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5n
LmgKQEAgLTQyLDE3ICs0Miw0NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZGVmaW5lIFdURl9V
U0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQgMQogI2VuZGlmCiAKLWVudW0gVGV4dENoZWNr
aW5nVHlwZSB7Ci0gICAgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICAgID0gMSA8PCAxLAotICAg
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICAgICA9IDEgPDwgMiwKLSAgICBUZXh0Q2hlY2tpbmdU
eXBlTGluayAgICAgICAgPSAxIDw8IDUsCi0gICAgVGV4dENoZWNraW5nVHlwZVF1b3RlICAgICAg
ID0gMSA8PCA2LAotICAgIFRleHRDaGVja2luZ1R5cGVEYXNoICAgICAgICA9IDEgPDwgNywKLSAg
ICBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPSAxIDw8IDgsCi0gICAgVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5Ci19Oworc3RydWN0IFRleHRDaGVja2luZ1R5cGVzIHsK
K3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBTcGVsbGluZyAgICA9IDEgPDwgMSwK
KyAgICAgICAgR3JhbW1hciAgICAgPSAxIDw8IDIsCisgICAgICAgIExpbmsgICAgICAgID0gMSA8
PCA1LAorICAgICAgICBRdW90ZSAgICAgICA9IDEgPDwgNiwKKyAgICAgICAgRGFzaCAgICAgICAg
PSAxIDw8IDcsCisgICAgICAgIFJlcGxhY2VtZW50ID0gMSA8PCA4LAorICAgICAgICBDb3JyZWN0
aW9uICA9IDEgPDwgOSwKKyAgICAgICAgQ29ycmVjdGlvblBhbmVsICA9IDEgPDwgMTAsCisgICAg
fTsKKworICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1R5cGVzKHVuc2lnbmVkIHZhbHVlID0gMCkg
OiBtX3ZhbHVlKHZhbHVlKSB7fQorCisgICAgYm9vbCBpc1NwZWxsaW5nKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9CisgICAgYm9vbCBpc0dyYW1tYXIoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlICYgR3JhbW1hcjsgfQorICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSAmIExpbms7IH0KKyAgICBib29sIGlzUXVvdGUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlICYgUXVvdGU7IH0KKyAgICBib29sIGlzRGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgJiBEYXNoOyB9CisgICAgYm9vbCBpc1JlcGxhY2VtZW50KCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSAmIFJlcGxhY2VtZW50OyB9CisgICAgYm9vbCBpc0NvcnJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvbjsgfQorICAgIGJvb2wgaXNDb3JyZWN0aW9uUGFuZWwo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvblBhbmVsOyB9CisKKyAgICB2b2lk
IHNldFNwZWxsaW5nKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIFNwZWxsaW5nKTsgfQor
ICAgIHZvaWQgc2V0R3JhbW1hcihib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBHcmFtbWFy
KTsgfQorICAgIHZvaWQgc2V0TGluayhib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBMaW5r
KTsgfQorICAgIHZvaWQgc2V0UXVvdGUoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgUXVv
dGUpOyB9CisgICAgdm9pZCBzZXREYXNoKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIERh
c2gpOyB9CisgICAgdm9pZCBzZXRSZXBsYWNlbWVudChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFn
KG9uLCBSZXBsYWNlbWVudCk7IH0KKyAgICB2b2lkIHNldENvcnJlY3Rpb24oYm9vbCBvbiA9IHRy
dWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVjdGlvbik7IH0KKyAgICB2b2lkIHNldENvcnJlY3Rpb25Q
YW5lbChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBDb3JyZWN0aW9uUGFuZWwpOyB9CiAK
LXR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nVHlwZU1hc2s7CisgICAgdW5zaWduZWQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRG
bGFnKGJvb2wgb24sIHVuc2lnbmVkIHR5cGUpIHsgbV92YWx1ZSA9IG9uID8gKG1fdmFsdWUgfCB0
eXBlKSA6IChtX3ZhbHVlICYgfnR5cGUpOyB9CisKKyAgICB1bnNpZ25lZCBtX3ZhbHVlOworfTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVkYzhjZjRmMWJlOTgyMzg1YWM1
YzZhMWJhNWVhNTg2Y2VhMjJiNDQuLmYwYmE3NWExMjQwNjllMDRlYTVjOGQ5YjJlZjkxYWM3YmZi
NDQ0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEt
MDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRl
eHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlw
ZQorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICog
c3JjL0VkaXRvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0NvcmVDaGVja2luZ1R5cGVzKToK
KyAgICAgICAgKFdlYktpdDo6dG9Db3JlUmVzdWx0cyk6CisKIDIwMTEtMDQtMDcgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogcm9s
bGluZyBjaHJvbWl1bSBERVBTIDgwNDIxOjgwNzY3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAzYzM2YzU3ZDU1NjVmMzM1MDFlMzVl
NzhlMDRmYTM1YmJjMWFmNGU0Li5iMjgyYjVlYzAwNzJlOGZjZjA5ZWUxZDk4YTAxNjk4ZjU2OTYx
NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcApAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlz
c3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50
aWZpZXIsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2Vu
ZGVyLCBpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVu
dCgpKQogICAgICAgICBtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+cmVxdWVzdENoZWNr
aW5nT2ZUZXh0KHRleHQsIG5ldyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlm
aWVyLCBzZW5kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuaAppbmRleCAyZWJjNmVhNTgwNGIyNTNmYmU0MTYzODY3NDViOTg3MTE3YWFmZGU5Li5h
MzcxYzcxMjU5M2VmOGU4Njk1YjMzOTk0OWM0MjQ1YzUzMWVkODA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0
Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25J
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsLmNwcAppbmRleCBmNWE2NjA0ZGJhNjc4NjNjNzZjOWY2OTBiNTEyNjA0OTcyZTFm
N2JlLi42N2I0ODg2OWI1Yjc5YzI5YmZlY2EzODdmYjA3MDQ2ZmFlOWQ5ODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwCkBAIC00MCwxMiArNDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVGV4dENoZWNraW5nVHlwZSB0b0Nv
cmVDaGVja2luZ1R5cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKK3N0YXRp
YyBUZXh0Q2hlY2tpbmdUeXBlcyB0b0NvcmVDaGVja2luZ1R5cGVzKFdlYlRleHRDaGVja2luZ1Jl
c3VsdDo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yID09IFdlYlRleHRDaGVja2luZ1Jl
c3VsdDo6RXJyb3JTcGVsbGluZykKLSAgICAgICAgcmV0dXJuIFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZzsKLSAgICBBU1NFUlQoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvckdy
YW1tYXIpOwotICAgIHJldHVybiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBUZXh0Q2hl
Y2tpbmdUeXBlcyB0eXBlczsKKyAgICB0eXBlcy5zZXRTcGVsbGluZyhlcnJvciA9PSBXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmcpOworICAgIHR5cGVzLnNldEdyYW1tYXIoZXJy
b3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvckdyYW1tYXIpOworICAgIEFTU0VSVCh0
eXBlcy52YWx1ZSgpKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIHN0YXRpYyBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUgogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgeyAKICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7Ci0gICAgICAgIGNvcmVSZXN1bHQudHlwZSA9
IHRvQ29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9yKTsKKyAgICAgICAgY29yZVJlc3Vs
dC50eXBlID0gdG9Db3JlQ2hlY2tpbmdUeXBlcyhyZXN1bHRzW2ldLmVycm9yKTsKICAgICAgICAg
Y29yZVJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdHNbaV0ucG9zaXRpb247CiAgICAgICAgIGNvcmVS
ZXN1bHQubGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7CiAgICAgICAgIGNvcmVSZXN1bHRzLmFw
cGVuZChjb3JlUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2YWQyMjE3MTdjY2JmNGRmYjEy
NjllY2I3ZGMyNjczZTRjMzY4YTAwLi4yNjRjYjQyNWQzOGYwZTBmM2Q4NzhiZTMzMDdkMDJkOTg4
ZWU0MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2lu
Z09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0w
NCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJk
ODQ3M2ZkYzNhMmEuLmRkNGNjZTFiZjJhY2M5ZmNkYTRlYzdlNzEzYTNlOGNiOTAxODRkMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RG
OjpWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENo
ZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCmluZGV4IDRlZjM0ODYzNTY0YTg3OTI0YTM4NmM5NzAxYjkzZmI5MWY2Mjk5
NDEuLjE1NzU3YTMzNTIzOWVjN2E0YjdkN2JkOTAyMmRjNzEyYWJkY2JlYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAg
ICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNr
ZXJDbGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMDYg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAppbmRleCA1ZDkzYzA3
MjE2ZDk5NWJmZTM2Y2FmYWRkOTkwYzBhNzgyZjUyZGRhLi42OWZhZTY0NGUzZTIxYzMyOGIwY2Ey
NTI4MzFiNmNkNmY5ZGZmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4
dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3Jy
ZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBs
ZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFt
bWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxD
aGVja2luZ0xhbmd1YWdlKGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNw
ZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZwppbmRleCA2YWUzZGExOWJlNjA5ZGI2NTQyZWY4YjBmODJhODc5NmY4ZGRmYzlkLi44MDIzZDIw
YjAwNjFjNjkwMWIxY2EzNDgyZGM1OTFiZmEwY2VlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBS
ZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEhhaWt1Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaAppbmRleCBjYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1Li42
MzM3NDlmNDM1NjAwZTU4MTU4NDFmZDIwODAyM2E5MDhmYjI0MzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysrIGIv
U291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCkBA
IC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9y
Q2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVN
YXNrLCBjb25zdCBTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNF
ZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggN2VhYTVjZGE4ZTc2MmViNWE2NTZl
OGM1YjU4NTliODc1Y2VkNjYzMC4uYTcwNmE0OWMzMDQwZmE4OTYxOTk3OTBlNTQ3ZGZiM2I0NWQx
OGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTA2ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdP
cHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAodG9O
U1R5cGVzKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgp
OgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVy
OldlYkNvcmU6OnNlcXVlbmNlOnR5cGVzOldlYkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNiAg
RGFpIE1pa3VydWJlICA8ZG1pa3VydWJlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMGU1MjEwMjM2ODJiYTEyMTkyNDNlMWRkYzMwY2Iz
ZGRlMjMwMDdlNy4uYzUxMjNiNjZkYjYyYWIzYWFjMWE5OTA2ZjViNDE5NmU3MTM1YmU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVh
bCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3Rv
cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNv
bnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxs
aW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
U3BlbGxpbmdVSShib29sIHNob3cpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNz
ZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6
OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQppbmRleCAzNDFhMjhmZDQ0NGE1YjZkMTAxNDFmMWQ0ODVjNzUyZWU4ODk0MTQ3Li42MDdiMzZm
NGYzZDdkZWFiNzc5NjIyMTY1YjY3N2FhYTIwMmNmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC03OTEsNyArNzkx
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVD
aGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBWZWN0b3IKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotc3RhdGljIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0
Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzKQorc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBjb25zdCBUZXh0Q2hlY2tp
bmdUeXBlcyYgY2hlY2tpbmdUeXBlcykKIHsKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiByZXN1bHRzOwogCkBAIC04MDAsMTYgKzgwMCwxNiBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5
cAogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3Vs
dCByZXN1bHRUeXBlXTsKICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5T
Tm90Rm91bmQpOwogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAg
ICAgIGlmIChOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlICYmIDAgIT0g
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKKyAgICAgICAg
aWYgKE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdU
eXBlcy5pc1NwZWxsaW5nKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsK
KyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFNwZWxsaW5nKCk7CiAgICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0g
cmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hcikpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyID09
IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc0dyYW1tYXIoKSkgewogICAgICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMg
PSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwotICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNl
dEdyYW1tYXIoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
ICAgICAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxz
KSB7CkBAIC04MjksMzcgKzgyOSwzNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogICAgICAg
ICAgICAgICAgIHJlc3VsdC5kZXRhaWxzLmFwcGVuZChkZXRhaWwpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChO
U1RleHRDaGVja2luZ1R5cGVMaW5rID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBl
cyAmIE5TVGV4dENoZWNraW5nVHlwZUxpbmspKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlTGluayA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNMaW5rKCkp
IHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICBy
ZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVMaW5rOworICAgICAgICAgICAgcmVzdWx0LnR5
cGUuc2V0TGluaygpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxd
IGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgPT0gcmVzdWx0VHlwZSAm
JiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgPT0gcmVzdWx0VHlwZSAmJiBj
aGVja2luZ1R5cGVzLmlzUXVvdGUoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3Rl
OworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVu
dCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlw
ZURhc2ggPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tp
bmdUeXBlRGFzaCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVEYXNo
ID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc0Rhc2goKSkgewogICAgICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAg
ICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChO
U1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNr
aW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgfSBl
bHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBlICYmIGNo
ZWNraW5nVHlwZXMuaXNSZXBsYWNlbWVudCgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRSZXBsYWNlbWVudCgpOwog
ICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAg
ICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAg
cmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
TlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNr
aW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkgeworICAgICAgICB9IGVs
c2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gPT0gcmVzdWx0VHlwZSAmJiBjaGVj
a2luZ1R5cGVzLmlzQ29ycmVjdGlvbigpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlQ29y
cmVjdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldENvcnJlY3Rpb24oKTsKICAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CkBAIC04
NjksMTMgKzg2OSwzNCBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShO
U0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogCiAgICAgcmV0dXJuIHJl
c3VsdHM7CiB9CisKK3N0YXRpYyB1bnNpZ25lZCB0b05TVHlwZXMoY29uc3QgVGV4dENoZWNraW5n
VHlwZXMmIHR5cGVzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgaWYgKHR5cGVz
LmlzU3BlbGxpbmcoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nOworICAgIGlmICh0eXBlcy5pc0dyYW1tYXIoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4
dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgaWYgKHR5cGVzLmlzTGluaygpKQorICAgICAgICBy
ZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICBpZiAodHlwZXMuaXNRdW90ZSgp
KQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgaWYgKHR5
cGVzLmlzRGFzaCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsK
KyAgICBpZiAodHlwZXMuaXNSZXBsYWNlbWVudCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0
Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgaWYgKHR5cGVzLmlzQ29ycmVjdGlvbigpKQor
ICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiAjZW5kaWYKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdU
eXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlw
ZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAg
IE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0
ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVu
RG9uZTpOT107Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5nVHlwZXN8TlNUZXh0
Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpO
VUxMXTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5n
ZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczoodG9OU1R5cGVzKGNoZWNraW5nVHlwZXMp
fE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1l
bnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVMTCB3b3Jk
Q291bnQ6TlVMTF07CiAgICAgW3RleHRTdHJpbmcgcmVsZWFzZV07CiAgICAgcmVzdWx0cyA9IGNv
cmUoaW5jb21pbmdSZXN1bHRzLCBjaGVja2luZ1R5cGVzKTsKICNlbmRpZgpAQCAtOTc2LDE1ICs5
OTcsMTUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkK
IHsKICAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIF9zZW5kZXI7CiAgICAgaW50IF9zZXF1ZW5j
ZTsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBfdHlwZXM7CisgICAgVGV4dENoZWNraW5nVHlw
ZXMgX3R5cGVzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfcmVzdWx0czsKIH0KLS0gKGlkKWlu
aXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50
KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1
bHRzOihOU0FycmF5KilyZXN1bHRzOworLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CiAtICh2
b2lkKXBlcmZvcm07CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNr
UmVzcG9uZGVyCi0tIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilz
ZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhT
ZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVu
Y2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzKXR5cGVzIHJlc3VsdHM6KE5TQXJy
YXkqKXJlc3VsdHMKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikK
QEAgLTEwMDQsMTUgKzEwMjUsMjAgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0
aG9kU3RhdGUoYm9vbCkKIEBlbmQKICNlbmRpZgogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBz
ZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgY29u
c3QgU3RyaW5nJiB0ZXh0KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcm
IHRleHQpCiB7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIHRl
eHQubGVuZ3RoKCkpOworICAgIC8vIFN0b3JlcyBpdCBhcyBhIHByaW1pdGl2ZSB2YWx1ZSB0byBh
bGxvdyB0aGUgYmxvY2sgdG8gY29weSBpdC4KKyAgICB1bnNpZ25lZCBjaGVja2luZ1R5cGVzVmFs
dWUgPSBjaGVja2luZ1R5cGVzLnZhbHVlKCk7CiAgICAgTlNSdW5Mb29wKiBjdXJyZW50TG9vcCA9
IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzp0ZXh0IHJhbmdlOnJhbmdlIHR5
cGVzOk5TVGV4dENoZWNraW5nQWxsU3lzdGVtVHlwZXMgb3B0aW9uczowIGluU3BlbGxEb2N1bWVu
dFdpdGhUYWc6MCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIsIE5TQXJyYXkqIHJlc3VsdHMsIE5TT3J0aG9ncmFw
aHkqLCBOU0ludGVnZXIpIHsKICAgICAgICAgICAgIFtjdXJyZW50TG9vcCBwZXJmb3JtU2VsZWN0
b3I6QHNlbGVjdG9yKHBlcmZvcm0pIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNl
bmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UgdHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRz
OnJlc3VsdHNdIGF1dG9yZWxlYXNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoU2VuZGVyOnNlbmRl
ciBzZXF1ZW5jZTpzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVzOldlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzKGNoZWNr
aW5nVHlwZXNWYWx1ZSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCBhMjI5YjlmNjI2ZTIxZTE3ZTBhMzZkNDZmZDFmMWQ2MGI4Nzc4
OTdkLi42OGVjYjcwNTQyM2RmYjI5OGMyMmRlNzAzNjY2ZmM4MjIzZTUzNjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAg
ICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA3ICBDYWlvIE1hcmNlbG8gZGUgT2xp
dmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCAwZDhlOGM2Nzk4NGU5YWQxZjdmMmM1NmI2
YzBkMWNmZDY0YmUyMWYwLi5kMDBiNjQ1MzllZDBjZDNlZGJkY2QxOGVkYzY2OGViOTRmZDdhN2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYp
IHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcm
KSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1
cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCAwZjkwODVkOWZhODNkOGJkODgwZjcwZDg5YzhkMmYwYjRiYjM2MWJmLi4wZGU3OTYxZjJi
M2VmYjcyZjM4N2JiOWY4ZGIyNmE0ZDZlZTg1OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9y
aW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
VGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KToKKwogMjAxMS0wNC0wNiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZDQ1NmNjOWIwNzky
Yzg0YWYxOTQ1ZWU3N2NiN2M3OWQzYmUyMjlkNy4uNWFmMzU0NTgyYmQyYTQxNjhjNmNlY2JjMWMw
YWE3MTZlZTMwY2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAg
IHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1
cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCBhNWI5YWNiMzRl
YTQ1OTQ1NGZlODhmNzJmMGRhZGRhMmI3NzQxMWM1Li43ZDQzZjg2ZGJiNmJkYjY3NWU4ZDVmZTQ2
N2IyMWViZTgwNmUzYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9y
OjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2lu
Z1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDQtMDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oIGIvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCmluZGV4IGEyYjIz
YjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3ZWYuLmMyMzVjMmNiZDIwMWQzMDg4Yjhj
N2QxNTIzMDZlMzZmNTRjMTdkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3Ry
aW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCA1ZWI0YzA5NzZiZTllODI0NzBkZTFjYzg4ZDg0NjMxMWEzZjIyZTMwLi4wMTUxZjI4
NGRmYWJhYWZiMjA1ZjEwM2I1OTQ5MjQzYWRhZmVhN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3Rv
cmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1R5cGUKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0
b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNiAgTWFsY29sbSBNYWNMZW9kICA8bWFsY29s
bS5tYWNsZW9kQHRzaHdhbmVkamUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9s
bGl2aWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRv
ckNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guaAppbmRleCA2NWVlNDkzMDU5MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUwNzI4Li44YmYw
NDk4OWYyOTU4NDcyZmU2ZTY2MGUxOTc2MTkwYmNiZGZmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaApAQCAtMTE0LDcgKzExNCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5n
Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNv
bnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0
Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1Yzg3
MDk4NDU1ZjRkYjc5MjAyZTkwYTM5YTUzNGEzNTUyZjc4NWQ3Li5mOGEyMGZmNGIzMTAwOThjN2Vh
OTQ0N2M0MDRkOWEyZTdmMDc0YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEt
MDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRl
eHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlw
ZQorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRD
aGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6dG9OU1R5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1Rl
eHRPZlBhcmFncmFwaCk6CisKIDIwMTEtMDQtMDcgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDUzOTRjMjU5OTM0ZGI2
NzY3ZWZmM2UyN2VkMWQ2NWU1NDhjMDRmOWIuLjE0ZTQzYzkzMTIzMWY1YmU4NTlhNzBjM2Y4YzJh
YjFkZGRhMTAyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTQ1NCwxMCArNDU0LDI2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCisgICAgeworICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVJbnQzMih0eXBlcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlw
ZXMpCisgICAgeworICAgICAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0eXBl
cyA9IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3Vs
dCkKICAgICB7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOworICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUocmVzdWx0LnR5cGUpOwogICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVJbnQzMihyZXN1bHQubG9jYXRpb24pOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihy
ZXN1bHQubGVuZ3RoKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC5kZXRhaWxzKTsK
QEAgLTQ2Niw3ICs0ODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gewogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQp
CiAgICAgewotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocmVzdWx0LnR5cGUpKQor
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQudHlwZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIocmVzdWx0Lmxv
Y2F0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4IDhkYzAzNzM2N2I3ZDg2NzAwMjUy
ZWQyOGYzNjk3ZWEwY2QwMzk0MzIuLjJiN2YzNGUzNjc5ZGNmOTBhYTFkNDYyOGY2OTk2YTg1YjE1
ODQ5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1h
Yy5tbQpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4
dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAg
ICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICBpZiAocmVzdWx0VHlw
ZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAg
IHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVz
dWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVHcmFtbWFyICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAg
ICAgICAgICByZXN1bHQudHlwZS5zZXRHcmFtbWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5j
b21pbmdEZXRhaWwgaW4gZGV0YWlscykgewpAQCAtMjU2LDM1ICsyNTYsMzUgQEAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0
X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVMaW5rOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0TGluaygpOwogICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiAoY2hlY2tpbmdUeXBlcyAm
IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1
b3RlOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5n
VHlwZURhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAg
IHJlc3VsdC50eXBlLnNldERhc2goKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jl
c3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBl
UmVwbGFjZW1lbnQgJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAg
ICAgIHJlc3VsdC50eXBlLnNldFJlcGxhY2VtZW50KCk7CiAgICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBb
aW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247Cisg
ICAgICAgICAgICByZXN1bHQudHlwZS5zZXRDb3JyZWN0aW9uKCk7CiAgICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1l
bnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDljNWZjMmE1OTE5OGI0NWM2NjFhZTBhZjg0MDdmMzM5MzRlYjBkNWYuLmNm
YjMzMzU1YjFmMjk1NWE0MjlmNmMxNGQ4YWI3NGEwNjdmZDU4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5w
dXRNZXRob2RTdGF0ZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYs
IGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNjMzMDkwZjQ0ZDAwYTY4MDY4ZDhmZTU2ZmQyYzk1OWYzMTVhYTNi
ZC4uNzg1M2Y3ZTM4ZTFhOTBlOTcyZjJiYWRkNWE1Mzc1NTkzYjYwNmI0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcm
IG1pc3NwZWxsZWRXb3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4m
LCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMm
LCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5n
Jik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVu
YWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25z
dCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFj
Lm1tCmluZGV4IGVhNDQwZmMyMzQ4MWJiMmVhNGNmMjFhOGM5NWYzNmIxN2MyOGY1OTkuLjU4NGJi
Yjk2MGEzYjczNWUyZDdmZGFhYWFkNDM3ZDMwY2YzYjQ4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
ZGl0b3JDbGllbnRNYWMubW0KQEAgLTI0MCwxMCArMjQwLDMwIEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitz
dGF0aWMgdW5zaWduZWQgdG9OU1R5cGVzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykK
K3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgIGlmICh0eXBlcy5pc1NwZWxsaW5nKCkp
CisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAo
dHlwZXMuaXNHcmFtbWFyKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVH
cmFtbWFyOworICAgIGlmICh0eXBlcy5pc0xpbmsoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4
dENoZWNraW5nVHlwZUxpbms7CisgICAgaWYgKHR5cGVzLmlzUXVvdGUoKSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgIGlmICh0eXBlcy5pc0Rhc2goKSkK
KyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgaWYgKHR5cGVz
LmlzUmVwbGFjZW1lbnQoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVJl
cGxhY2VtZW50OworICAgIGlmICh0eXBlcy5pc0NvcnJlY3Rpb24oKSkKKyAgICAgICAgcmVzdWx0
IHw9IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgY2hl
Y2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAgICAg
Ly8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5IHRo
ZSB0ZXh0IGhlcmUuCi0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBl
cyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShy
ZXN1bHRzKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
aGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgdG9OU1R5cGVzKGNoZWNr
aW5nVHlwZXMpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6
OlJlcGx5KHJlc3VsdHMpKTsKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89049</attachid>
            <date>2011-04-11 12:15:42 -0700</date>
            <delta_ts>2011-04-15 16:18:42 -0700</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-57088-20110411121541.patch</filename>
            <type>text/plain</type>
            <size>71794</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM0NDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOTIzMWE4YjE4ODlmMTQ1
NjM0NTExODgyYzhmYWQ4MzgwNjRhNzg1Li4wYjhlZDA0MmU4ZDYwN2I3NzBjZDc5NzlhOWEyMjAy
OWUyNWU0OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvTWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6
OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5n
cmFtbWF0aWNhbFJhbmdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6VGV4dENoZWNraW5nVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlczo6aXNMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzOjppc1F1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0Rh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzUmVwbGFjZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzQ29ycmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0U3BlbGxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEdyYW1tYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldExpbmspOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXM6OnNldFF1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzOjpzZXREYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpz
ZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0
Q29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6dmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEZsYWcpOgorCiAyMDEx
LTA0LTExICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCAzZGMxZGFlM2M3MjZkMDg1NWNmY2Y0NzZhMTM3YzExODdiMjRkMDM0Li5hYmM1NDcw
MzJhYTRkYjgzYTM4NDg3YTM0NDZlMjRiZDBmNzY0ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKIAogICAg
IE5vZGUqIG5vZGVUb0NoZWNrID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsKICAgICBpZiAobV9zcGVsbENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9ub3VzbHko
bm9kZVRvQ2hlY2spKQotICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9y
KHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGluZyB8IE1hcmtHcmFtbWFyKSwgbm9k
ZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJl
c29sdmVSZXBsYWNlZFRleHRDaGVja2luZ1R5cGUoVGV4dENoZWNraW5nVHlwZXMoVGV4dENoZWNr
aW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZXM6OkdyYW1tYXIpKSwgbm9kZVRv
Q2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2Up
CkBAIC0xOTc0LDMwICsxOTc0LDI2IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0
ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAjaWYgVVNF
KFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5hcHBseVBl
bmRpbmdDb3JyZWN0aW9uKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsKIAotICAgIFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7Ci0gICAgaWYgKGlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFy
a1NwZWxsaW5nOwotCisgICAgVGV4dENoZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlczsKKyAgICBj
aGVja2luZ1R5cGVzLnNldFNwZWxsaW5nKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpOwogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoaXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICB8fCBpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpCi0gICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpCi0gICAgICAgIHx8ICgodGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZykgJiYg
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpKQotICAgICAgICB0ZXh0Q2hl
Y2tpbmdPcHRpb25zIHw9IFBlcmZvcm1SZXBsYWNlbWVudDsKKyAgICBjaGVja2luZ1R5cGVzLnNl
dFJlcGxhY2VtZW50KGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8fCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgY2hlY2tpbmdUeXBlcy5pc1NwZWxsaW5nKCkgJiYgaXNBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpOwogI2VuZGlmCi0gICAgaWYgKCF0ZXh0
Q2hlY2tpbmdPcHRpb25zICYgKE1hcmtTcGVsbGluZyB8IFBlcmZvcm1SZXBsYWNlbWVudCkpCisg
ICAgaWYgKCFjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSAmJiAhY2hlY2tpbmdUeXBlcy5pc1Jl
cGxhY2VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0dyYW1tYXJDaGVja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrR3JhbW1hcjsK
KyAgICBjaGVja2luZ1R5cGVzLnNldEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
OwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlv
bihzdGFydE9mV29yZCh3b3JkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3Jk
KHdvcmRTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7Ci0gICAgaWYgKHRleHRDaGVja2lu
Z09wdGlvbnMgJiBNYXJrR3JhbW1hcikgeworICAgIGlmIChjaGVja2luZ1R5cGVzLmlzR3JhbW1h
cigpKSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2li
bGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29y
ZFN0YXJ0KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAg
ICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNoZWNraW5nVHlw
ZXMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50
ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlv
bnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jk
cy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhjaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSk7CiAgICAgfQogCiAjZWxzZQpAQCAtMjEwNywxNyArMjEwMywxNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAg
IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsKIH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25z
LCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNvbnN0IFRleHRDaGVj
a2luZ1R5cGVzJiB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFu
Z2UqIGdyYW1tYXJSYW5nZSkKIHsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAg
IC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGF0IHRoaXMgbW9t
ZW50LgogICAgIEFTU0VSVCghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aGFzUGVuZGluZ0NvcnJlY3Rp
b24oKSk7CiAKLSAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlv
bnMgJiBNYXJrU3BlbGxpbmc7Ci0gICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVj
a2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKLSAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNl
bWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7Ci0gICAgYm9v
bCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dD
b3JyZWN0aW9uUGFuZWw7Ci0gICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91
bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tGb3JD
b3JyZWN0aW9uKTsKKyAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09w
dGlvbnMuaXNTcGVsbGluZygpOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLmlzR3JhbW1hcigpOworICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2Vt
ZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc1JlcGxhY2VtZW50KCk7CisgICAgYm9vbCBzaG91
bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc0NvcnJlY3Rpb25Q
YW5lbCgpOworICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0Nv
cnJlY3Rpb25QYW5lbCB8fCB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlzQ29ycmVjdGlvbigpOwogCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhw
YW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
MjE2NCwxMCArMjE2MCwxMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQog
ICAgICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdy
YXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdU
eXBlKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKICAgICBlbHNlCiAgICAgICAgIHRl
eHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHNwZWxsaW5nUGFyYWdyYXBoLnRleHRD
aGFyYWN0ZXJzKCksIHNwZWxsaW5nUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNrRm9y
KHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSh0ZXh0
Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cyk7CiAgICAgICAgIAogCiAgICAgLy8gSWYgdGhpcyBj
aGVja2luZyBpcyBvbmx5IGZvciBzaG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIHNob3VsZG4n
dCBib3RoZXIgdG8gbWFyayBtaXNzcGVsbGluZ3MuCkBAIC0yMTg4LDEzICsyMTg0LDEzIEBAIHZv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgIC8vIDIuIFJlc3VsdCBmYWxscyB3aXRoaW4g
c3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVlc3Rpb24gZG9lc24n
dCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2UsIHdlIHdvdWxkIG5v
dCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVkIHJpZ2h0IGFmdGVy
IGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYg
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlv
biA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24g
KyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0
QW1iaWd1b3VzQm91bmRhcnkpIHsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiBy
ZXN1bHQtPnR5cGUuaXNTcGVsbGluZygpICYmIHJlc3VsdExvY2F0aW9uID49IHNwZWxsaW5nUGFy
YWdyYXBoLmNoZWNraW5nU3RhcnQoKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8
PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFy
eSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRp
b24gPj0gMCk7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBz
cGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsK
ICAgICAgICAgICAgIGlmICghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aXNTcGVsbGluZ01hcmtlckFs
bG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYg
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZS5pc0dy
YW1tYXIoKSAmJiBncmFtbWFyUGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9j
YXRpb24sIHJlc3VsdExlbmd0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGgg
PiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAg
IGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CkBAIC0y
MjA1LDE1ICsyMjAxLDE1IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExvY2F0aW9uICsg
cmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24g
KyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCi0gICAg
ICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsK
LSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVR
dW90ZQotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZURhc2gKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgJiYg
KHJlc3VsdC0+dHlwZS5pc0xpbmsoKQorICAgICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQt
PnR5cGUuaXNRdW90ZSgpCisgICAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5p
c0Rhc2goKQorICAgICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNSZXBsYWNl
bWVudCgpCisgICAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rp
b24oKSkpIHsKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1
c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBs
YWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAg
ICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJl
c3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29y
cmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5n
UmFuZ2VFbmRPZmZzZXQgfHwgIXJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9
IHJlc3VsdC0+cmVwbGFjZW1lbnQubGVuZ3RoKCk7CkBAIC0yMjI3LDEzICsyMjIzLDEzIEBAIHZv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvblRvUmVwbGFjZShyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CiAKICAgICAg
ICAgICAgIC8vIGFkZGluZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFm
dGVyIHRoZXkgYXJlIHR5cGVkCi0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRD
aGVja2luZ1R5cGVMaW5rICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3VsdExvY2F0aW9uICsgcmVz
dWx0TGVuZ3RoICsgMSkKKyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkgJiYg
c2VsZWN0aW9uT2Zmc2V0ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggKyAxKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJp
bmc7CiAKICAgICAgICAgICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4gYW4gYWxyZWFk
eS1jb3JyZWN0ZWQgd29yZC4KLSAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXND
b3JyZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4
dChyYW5nZVRvUmVwbGFjZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyKiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAg
ICAgICAgICAgICAgIGlmIChtYXJrZXJzLT5oYXNNYXJrZXJzKHJhbmdlVG9SZXBsYWNlLmdldCgp
LCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpKSB7CkBAIC0yMjYzLDE0ICsyMjU5LDE0IEBA
IHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVMaW5rKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzTGluaygpKSB7
CiAgICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxl
Y3Rpb25Ub1JlcGxhY2UpOwogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGlmIChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAg
IGFwcGx5Q29tbWFuZChDcmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50
KCksIHJlc3VsdC0+cmVwbGFjZW1lbnQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRp
dCgpICYmIHNob3VsZEluc2VydFRleHQocmVzdWx0LT5yZXBsYWNlbWVudCwgcmFuZ2VUb1JlcGxh
Y2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVkKSkgewotICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRv
UmVwbGFjZSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOwogICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNl
bGVjdGlvblRvUmVwbGFjZSk7CkBAIC0yMjkxLDcgKzIyODcsNyBAQCB2b2lkIEVkaXRvcjo6bWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25z
IHRleHRDaAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1h
cmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBi
ZSByZS1jb3JyZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBl
LmlzQ29ycmVjdGlvbigpKQogICAgICAgICAgICAgICAgICAgICBtX3NwZWxsaW5nQ29ycmVjdG9y
LT5tYXJrQ29ycmVjdGlvbihzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlv
biwgcmVwbGFjZW1lbnRMZW5ndGgpLCByZXBsYWNlZFN0cmluZyk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTIzNDcsOSArMjM0Myw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAj
aWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rp
b247Ci0gICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOworICAgIFRleHRDaGVj
a2luZ1R5cGVzIHRleHRDaGVja2luZ09wdGlvbnMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5n
IHwgVGV4dENoZWNraW5nVHlwZXM6OkNvcnJlY3Rpb24pOworICAgIHRleHRDaGVja2luZ09wdGlv
bnMuc2V0R3JhbW1hcihtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7
CiAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tp
bmdPcHRpb25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBn
cmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBS
ZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKQEAgLTMyNDcsMzggKzMyNDIsMTkg
QEAgRmxvYXRSZWN0IEVkaXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5n
ZSkgY29uc3QKICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KGJvdW5k
aW5nUmVjdCkpOwogfSAgICAgICAgCiAKLVRleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6dGV4
dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRp
b25zKQorVGV4dENoZWNraW5nVHlwZXMgRWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tp
bmdUeXBlKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKIHsKLSAgICBib29sIHNob3Vs
ZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmc7Ci0gICAg
Ym9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1h
cjsKLSAgICBib29sIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRp
b25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVj
dGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMg
JiBDaGVja0ZvckNvcnJlY3Rpb24pOwotCi0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tp
bmdUeXBlcyA9IDA7Ci0gICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgaWYgKHNob3VsZE1hcmtH
cmFtbWFyKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
OwotICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24pCi0gICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247Ci0KKyAgICBUZXh0Q2hlY2tpbmdUeXBl
cyByZXN1bHQgPSB0eXBlczsKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0g
ICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYg
UGVyZm9ybVJlcGxhY2VtZW50OwotICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsK
LSAgICAgICAgaWYgKGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUxpbms7Ci0gICAgICAgIGlmIChp
c0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGVEYXNoOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2lu
Z1R5cGVSZXBsYWNlbWVudDsKLSAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiBpc0F1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5n
VHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgaWYgKHR5cGVzLmlzUmVw
bGFjZW1lbnQoKSkgeworICAgICAgICByZXN1bHQuc2V0TGluayhpc0F1dG9tYXRpY0xpbmtEZXRl
Y3Rpb25FbmFibGVkKCkpOworICAgICAgICByZXN1bHQuc2V0UXVvdGUoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXREYXNoKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXRSZXBsYWNl
bWVudChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSk7CisgICAgICAgIHJlc3Vs
dC5zZXRDb3JyZWN0aW9uKHR5cGVzLmlzU3BlbGxpbmcoKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQoKSk7CiAgICAgfQogI2VuZGlmCi0KLSAgICByZXR1cm4gY2hlY2tp
bmdUeXBlczsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA4YjkxMTUzMWQzMTUzMzEwOTAwM2VkOTU4NWU2
NTAzZTgxNTVmNDM3Li43ZjAwMmYxZTAwOWFiZGNiNjM4YzJhMTA2ZDdkYzRjODY5YzMwOTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTIyNCwxNSArMjI0LDYgQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQg
bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3Bl
bGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IGdyYW1tYXJTZWxlY3Rpb24pOwogCi0gICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7
Ci0gICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKLSAgICAgICAgTWFya0dyYW1tYXIgPSAx
IDw8IDEsCi0gICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKLSAgICAgICAgU2hv
d0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKLSAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9uID0g
MSA8PCA0LAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25z
OwotCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdXBwZXJj
YXNlV29yZCgpOwogICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpOwpAQCAtMjUyLDcgKzI0Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwog
I2VuZGlmCiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFt
bWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5n
ZSogZ3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTQxNCw3ICs0
MDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFz
dGVib2FyZCopOwogICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9u
KCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSk7Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1h
c2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7CisgICAgVGV4dENoZWNraW5nVHlwZXMgcmVzb2x2
ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYpOwogCiAg
ICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IGZlZGNjMDc3M2U2ZTc5ODFmNmE5MDIzOTMxNjE2
N2JiNzQ3ZWRiZTEuLmI2MTczZWI4N2QxOTFhNzRiMTYxNmQ0YjVhNzAxZWFkZDk0YWUyNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDEz
IEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAg
IHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9k
ZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4dENoZWNr
aW5nVHlwZXMmIG9wdGlvbnMsIE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKGNhbkNoZWNrQXN5
bmNocm9ub3VzbHkobm9kZSkpOwogCiAgICAgaWYgKCFpbml0UmVxdWVzdChub2RlKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0aGlzLCBt
X3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CisgICAgbV9jbGllbnQtPnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBvcHRpb25zLCBt
X3JlcXVlc3RUZXh0KTsKIH0KIAogc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9u
SXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCBz
dGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGlu
dCBkaXN0YW5jZSkKICAgICByZXR1cm4gZmFsc2U7ICAgIAogfQogCi1zdGF0aWMgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUgdG9NYXJrZXJUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlwZSkKK3N0
YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0b01hcmtlclR5cGUoY29uc3QgVGV4dENo
ZWNraW5nVHlwZXMmIHR5cGVzKQogewotICAgIGlmICh0eXBlID09IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZykKKyAgICBpZiAodHlwZXMuaXNTcGVsbGluZygpKQogICAgICAgICByZXR1cm4gRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nOwotICAgIEFTU0VSVCh0eXBlID09IFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyKTsKKyAgICBBU1NFUlQodHlwZXMuaXNHcmFtbWFyKCkpOwogICAgIHJldHVybiBE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU3Bl
bGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1CiAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0
ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUu
Z2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCisgICAgICAg
IGlmICghcmVzdWx0c1tpXS50eXBlLmlzU3BlbGxpbmcoKSAmJiAhcmVzdWx0c1tpXS50eXBlLmlz
R3JhbW1hcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQg
bW92aW5nIHRoZSBwb3NpdGlvbiBiYWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRz
IGFyZSBzb3J0ZWQgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXgg
NGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTliZmFkMDdkOWQ0Y2FlMWIzMy4uNDE2MzEzYjQwNGJkZmQ5
OTg3M2JmOWYyNWYyODc1YTYwMWY3YWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hl
Y2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgpIGNvbnN0
OwogICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wgaXNDaGVj
a2FibGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVj
a2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3Qg
VGV4dENoZWNraW5nVHlwZXMmLCBOb2RlKik7CiAgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVu
Y2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9s
bGVyLmNwcAppbmRleCBjMzc3ZmU4YTYyMzgzM2VjZDE5ZmYzYTFhODU3YzMzOWI1M2UzN2EzLi4w
NTEyZjg2YmUwZjlhNjI4OTY5N2M4MTYxZGEwMGNjZDgzMzAzODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXI6OmNv
cnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8U3BlbGxpbmdDb3JyZQogICAgICAgICBWaXNp
YmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5hZmZpbml0eSgp
KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29yZChzdGFydCwgTGVmdFdv
cmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMg
PSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCkt
Pm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoRWRpdG9yOjpNYXJrU3Bl
bGxpbmcgfCBFZGl0b3I6OlNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVzKFRl
eHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpDb3JyZWN0aW9u
UGFuZWwpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOwogICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAppbmRleCAzOTEyYTQ5ZjRmZTk2N2Q3ZDViODExYjc5MjkyMjcwMzZiZjNmOGU3Li5k
NDdmZWI4ZmJjZmE0YTJjMzkxOWQ0Y2FiMzdiODE1MTRjMmE3YjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yNzQsMTkgKzI3NCwyMCBA
QCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1t
YXJEZXRhaWxJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5
cGVTcGVsbGluZzsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBo
U3RyaW5nLmxlbmd0aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7
CisgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBo
KHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwg
b3B0aW9ucywgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVz
dWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc1NwZWxsaW5nKCkgJiYgcmVzdWx0
LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJl
c3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQtPmxvY2F0
aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhT
dHJpbmcuc3Vic3RyaW5nKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hciAmJiByZXN1bHQtPmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAm
JiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUu
aXNHcmFtbWFyKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVz
dWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3Vs
dC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBz
dG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3Rp
bGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4g
c3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtNTI0LDEyICs1MjUs
MTQgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3Bl
bGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAK
ICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwotICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFw
aChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hl
Y2tpbmdUeXBlcywgcmVzdWx0cyk7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25zKFRl
eHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNr
R3JhbW1hcik7CisgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdy
YXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBv
cHRpb25zLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVz
dWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJl
c3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0
LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUu
aXNTcGVsbGluZygpICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQtPmxv
Y2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKICAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVk
V29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOwogICAgICAgICAgICAgQVNTRVJU
KG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hl
Y2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVsbGVkV29yZCwgU3RyaW5nKCksIGd1ZXNz
ZXMpOwpAQCAtNTQ0LDcgKzU0Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBl
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0g
ICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcGFy
YWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQt
Pmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBwYXJh
Z3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+
bGVuZ3RoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+
ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRh
aWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGUxYTlmZmVmNWI4ODRiMmViZWU1MDc1NzVjMzNh
NGNlMzA1NTAzNjUuLmJhNmRlMDZjM2VjZDkzNTEwNTI1MmUwNjlmNjQ3NTE4NmI1MjJlZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQwNywxMSArNDA3LDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGludCopIHsgfQogCiAjaWYgVVNF
KFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3Ry
aW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVs
bENoZWNrZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHsgfQogfTsKIAog
Y2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAppbmRleCBkMTZh
ZGUxNjQ2MGFkNzBmMzdlYjllOGQ0MTRkZjYxZjY3Y2ZjOGQzLi44ZGYxODA5MTUxZmI5MGFjY2Rm
NzQxOGM4ZjY4YjJiYzkzNTcyYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBHcmFtbWFy
RGV0YWlsIHsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewotICAgIFRleHRDaGVj
a2luZ1R5cGUgdHlwZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyB0eXBlOwogICAgIGludCBsb2Nh
dGlvbjsKICAgICBpbnQgbGVuZ3RoOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBkZXRhaWxz
OwpAQCAtNjQsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFt
bWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1hckRldGFp
bD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7
CiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNr
aW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3Qg
VUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogCiAgICAgLy8gRm9y
IHNwZWxsY2hlY2tlcnMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgaXQncyBvZnRl
biBpbXBvcnRhbnQgdG8gYmUgYWJsZSB0byBpZGVudGlmeSB0aGUgbGFuZ3VhZ2UgaW4gb3JkZXIg
dG8KICAgICAvLyBwcm92aWRlIG1vcmUgYWNjdXJhdGUgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4g
Q2FsbGVyIGNhbiBwYXNzIGluIG1vcmUgdGV4dCBpbiAiY29udGV4dCIgdG8gYWlkIHN1Y2ggc3Bl
bGxjaGVja2VycyBvbiBsYW5ndWFnZQogICAgIC8vIGlkZW50aWZpY2F0aW9uLiBOb3JhbWxseSBp
dCdzIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSAid29yZCIgZm9yIHdoaWNoIHdlIGFyZSBnZXR0
aW5nIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNG
b3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8
U3RyaW5nPiYgZ3Vlc3NlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBT
dHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNw
ZWxsQ2hlY2tlciosIGludCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcm
KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tp
bmcuaAppbmRleCBkMjA0MGQ1ZWFmYmNmZmJlY2Q3ZWI1NjY5ZDU1ODMyMDkxMjgzOTMxLi44ZTNm
ODI3ZTE1N2RhNDVmMmFhZTNmNzlkNjM3OTVlMTkwYzhjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTQyLDE3ICs0Miw0NiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQg
MQogI2VuZGlmCiAKLWVudW0gVGV4dENoZWNraW5nVHlwZSB7Ci0gICAgVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nICAgID0gMSA8PCAxLAotICAgIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICAgICA9
IDEgPDwgMiwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTGluayAgICAgICAgPSAxIDw8IDUsCi0gICAg
VGV4dENoZWNraW5nVHlwZVF1b3RlICAgICAgID0gMSA8PCA2LAotICAgIFRleHRDaGVja2luZ1R5
cGVEYXNoICAgICAgICA9IDEgPDwgNywKLSAgICBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQg
PSAxIDw8IDgsCi0gICAgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5Ci19Owor
c3RydWN0IFRleHRDaGVja2luZ1R5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAg
ICAgICBTcGVsbGluZyAgICA9IDEgPDwgMSwKKyAgICAgICAgR3JhbW1hciAgICAgPSAxIDw8IDIs
CisgICAgICAgIExpbmsgICAgICAgID0gMSA8PCA1LAorICAgICAgICBRdW90ZSAgICAgICA9IDEg
PDwgNiwKKyAgICAgICAgRGFzaCAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIFJlcGxhY2VtZW50
ID0gMSA8PCA4LAorICAgICAgICBDb3JyZWN0aW9uICA9IDEgPDwgOSwKKyAgICAgICAgQ29ycmVj
dGlvblBhbmVsICA9IDEgPDwgMTAsCisgICAgfTsKKworICAgIGV4cGxpY2l0IFRleHRDaGVja2lu
Z1R5cGVzKHVuc2lnbmVkIHZhbHVlID0gMCkgOiBtX3ZhbHVlKHZhbHVlKSB7fQorCisgICAgYm9v
bCBpc1NwZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9CisgICAg
Ym9vbCBpc0dyYW1tYXIoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgR3JhbW1hcjsgfQorICAg
IGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIExpbms7IH0KKyAgICBib29s
IGlzUXVvdGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUXVvdGU7IH0KKyAgICBib29sIGlz
RGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgJiBEYXNoOyB9CisgICAgYm9vbCBpc1JlcGxh
Y2VtZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFJlcGxhY2VtZW50OyB9CisgICAgYm9v
bCBpc0NvcnJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvbjsgfQor
ICAgIGJvb2wgaXNDb3JyZWN0aW9uUGFuZWwoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29y
cmVjdGlvblBhbmVsOyB9CisKKyAgICB2b2lkIHNldFNwZWxsaW5nKGJvb2wgb24gPSB0cnVlKSB7
IHNldEZsYWcob24sIFNwZWxsaW5nKTsgfQorICAgIHZvaWQgc2V0R3JhbW1hcihib29sIG9uID0g
dHJ1ZSkgeyBzZXRGbGFnKG9uLCBHcmFtbWFyKTsgfQorICAgIHZvaWQgc2V0TGluayhib29sIG9u
ID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBMaW5rKTsgfQorICAgIHZvaWQgc2V0UXVvdGUoYm9vbCBv
biA9IHRydWUpIHsgc2V0RmxhZyhvbiwgUXVvdGUpOyB9CisgICAgdm9pZCBzZXREYXNoKGJvb2wg
b24gPSB0cnVlKSB7IHNldEZsYWcob24sIERhc2gpOyB9CisgICAgdm9pZCBzZXRSZXBsYWNlbWVu
dChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBSZXBsYWNlbWVudCk7IH0KKyAgICB2b2lk
IHNldENvcnJlY3Rpb24oYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVjdGlvbik7
IH0KKyAgICB2b2lkIHNldENvcnJlY3Rpb25QYW5lbChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFn
KG9uLCBDb3JyZWN0aW9uUGFuZWwpOyB9CiAKLXR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5n
VHlwZU1hc2s7CisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRGbGFnKGJvb2wgb24sIHVuc2lnbmVkIHR5cGUpIHsg
bV92YWx1ZSA9IG9uID8gKG1fdmFsdWUgfCB0eXBlKSA6IChtX3ZhbHVlICYgfnR5cGUpOyB9CisK
KyAgICB1bnNpZ25lZCBtX3ZhbHVlOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDM4ZWNmNzQwMjc2Y2ZmNGM4YTdkYjQyOWNmMjE0M2MwYTI0MWQ5ZTguLjU2ZmFhYTk3
NWMzYWYwYTkxYjlmYzk3MTZjZmRlOTIwNjk4ZjEyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAg
ICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKyAgICAg
ICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojp0b0NvcmVDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYktpdDo6dG9Db3JlUmVzdWx0
cyk6CisKIDIwMTEtMDQtMDUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggM2MzNmM1N2Q1NTY1ZjMzNTAxZTM1
ZTc4ZTA0ZmEzNWJiYzFhZjRlNC4uYjI4MmI1ZWMwMDcyZThmY2YwOWVlMWQ5OGEwMTY5OGY1Njk2
MTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHAKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwKICAgICAgICAgKm1p
c3NwZWxsaW5nTGVuZ3RoID0gc3BlbGxMZW5ndGg7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50SW1w
bDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVu
dGlmaWVyLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNl
bmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmIChtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGll
bnQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPnJlcXVlc3RDaGVj
a2luZ09mVGV4dCh0ZXh0LCBuZXcgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwoaWRlbnRp
Zmllciwgc2VuZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmgKaW5kZXggMmViYzZlYTU4MDRiMjUzZmJlNDE2Mzg2NzQ1Yjk4NzExN2FhZmRlOS4u
YTM3MWM3MTI1OTNlZjhlODY5NWIzMzk5NDljNDI0NWM1MzFlZDgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMTE0LDcgKzExNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVu
YWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25z
dCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21w
bGV0aW9uSW1wbC5jcHAKaW5kZXggZjVhNjYwNGRiYTY3ODYzYzc2YzlmNjkwYjUxMjYwNDk3MmUx
ZjdiZS4uNjdiNDg4NjliNWI3OWMyOWJmZWNhMzg3ZmIwNzA0NmZhZTlkOTgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0Nv
bXBsZXRpb25JbXBsLmNwcApAQCAtNDAsMTIgKzQwLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFRleHRDaGVja2luZ1R5cGUgdG9D
b3JlQ2hlY2tpbmdUeXBlKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3IgZXJyb3IpCitzdGF0
aWMgVGV4dENoZWNraW5nVHlwZXMgdG9Db3JlQ2hlY2tpbmdUeXBlcyhXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQ6OkVycm9yIGVycm9yKQogewotICAgIGlmIChlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQ6OkVycm9yU3BlbGxpbmcpCi0gICAgICAgIHJldHVybiBUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmc7Ci0gICAgQVNTRVJUKGVycm9yID09IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JH
cmFtbWFyKTsKLSAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgVGV4dENo
ZWNraW5nVHlwZXMgdHlwZXM7CisgICAgdHlwZXMuc2V0U3BlbGxpbmcoZXJyb3IgPT0gV2ViVGV4
dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nKTsKKyAgICB0eXBlcy5zZXRHcmFtbWFyKGVy
cm9yID09IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JHcmFtbWFyKTsKKyAgICBBU1NFUlQo
dHlwZXMudmFsdWUoKSk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBzdGF0aWMgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKQEAgLTUzLDcgKzU0LDcgQEAgc3RhdGljIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRD
aGVja2luZ1IKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsgCiAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCBjb3JlUmVzdWx0OwotICAgICAgICBjb3JlUmVzdWx0LnR5cGUg
PSB0b0NvcmVDaGVja2luZ1R5cGUocmVzdWx0c1tpXS5lcnJvcik7CisgICAgICAgIGNvcmVSZXN1
bHQudHlwZSA9IHRvQ29yZUNoZWNraW5nVHlwZXMocmVzdWx0c1tpXS5lcnJvcik7CiAgICAgICAg
IGNvcmVSZXN1bHQubG9jYXRpb24gPSByZXN1bHRzW2ldLnBvc2l0aW9uOwogICAgICAgICBjb3Jl
UmVzdWx0Lmxlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb3JlUmVzdWx0cy5h
cHBlbmQoY29yZVJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZjkxMzNjYjkwOGJlZDlmNDE3
NmM5ODg5MjEzZjhmMWZmMzQ0NjE5Ny4uN2E2YTI4MWEwNTAxODYxNDIxYjFmNGJlNWJhY2NmYmMy
MWVhNDRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tp
bmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQt
MTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDU2YjMzMDAyZWFhMTdhODViOWIzNzAx
NjlkOGJkODQ3M2ZkYzNhMmEuLmRkNGNjZTFiZjJhY2M5ZmNkYTRlYzdlNzEzYTNlOGNiOTAxODRk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4
dCwgV1RGOjpWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDUxMGQ0OGQ0YTc5MDc2Njg4OTRmMDA0ZTFlYzg2NWY1
MDZkOTA0MGMuLjQ0MjU4MWE1OTQwOGU3ZGU4M2NkYjA4ZDNlMGFkZTQ3ZDM3Y2Q4YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcw
ODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNrZXJDbGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEt
MDQtMDggIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAppbmRleCA1ZDkzYzA3
MjE2ZDk5NWJmZTM2Y2FmYWRkOTkwYzBhNzgyZjUyZGRhLi42OWZhZTY0NGUzZTIxYzMyOGIwY2Ey
NTI4MzFiNmNkNmY5ZGZmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4
dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3Jy
ZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBs
ZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFt
bWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxD
aGVja2luZ0xhbmd1YWdlKGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNw
ZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZwppbmRleCA2YWUzZGExOWJlNjA5ZGI2NTQyZWY4YjBmODJhODc5NmY4ZGRmYzlkLi44MDIzZDIw
YjAwNjFjNjkwMWIxY2EzNDgyZGM1OTFiZmEwY2VlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBS
ZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEhhaWt1Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaAppbmRleCBjYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1Li42
MzM3NDlmNDM1NjAwZTU4MTU4NDFmZDIwODAyM2E5MDhmYjI0MzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysrIGIv
U291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCkBA
IC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9y
Q2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVN
YXNrLCBjb25zdCBTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNF
ZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYmE0YTIyZDdiZDA2YTI1MTg0ZjVj
NzUzOTlhZjk3NGEwZWVjOWUyNC4uY2E1NDJjNjIxZWRiMzViYzI1ODAwZDU5YTlhOTRjZjhkNjdh
YWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTA2ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdP
cHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAodG9O
U1R5cGVzKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgp
OgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVy
OldlYkNvcmU6OnNlcXVlbmNlOnR5cGVzOldlYkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wOCAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCAwZTUyMTAyMzY4MmJhMTIxOTI0M2UxZGRjMzBjYjNkZGUy
MzAwN2U3Li5jNTEyM2I2NmRiNjJhYjNhYWMxYTk5MDZmNWI0MTk2ZTcxMzViZTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGlu
Z09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0
aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdl
dEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJh
ZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9pZCBj
aGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3Qg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3Nw
ZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVs
bGluZ1VJKGJvb2wgc2hvdyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmlu
ZGV4IDM0MWEyOGZkNDQ0YTViNmQxMDE0MWYxZDQ4NWM3NTJlZTg4OTQxNDcuLjYwN2IzNmY0ZjNk
N2RlYWI3Nzk2MjIxNjViNjc3YWFhMjAyY2ZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc5MSw3ICs3OTEsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
IHRleHQsIGludCBsZW5ndGgsIFZlY3RvcgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi1zdGF0aWMgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMpCitzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIGNvbnN0IFRleHRDaGVja2luZ1R5
cGVzJiBjaGVja2luZ1R5cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7CiAKQEAgLTgwMCwxNiArODAwLDE2IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAg
ICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJl
c3VsdFR5cGVdOwogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RG
b3VuZCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAg
aWYgKE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hl
Y2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgeworICAgICAgICBpZiAo
TlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVz
LmlzU3BlbGxpbmcoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAg
ICAgICAgICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1
bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFy
KSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVz
dWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAgICAgICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtp
bmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0YWlsc107Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0R3Jh
bW1hcigpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAg
ICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsK
QEAgLTgyOSwzNyArODI5LDM3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBj
b3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmRldGFpbHMuYXBwZW5kKGRldGFpbCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4
dENoZWNraW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVj
a2luZ1R5cGVMaW5rID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc0xpbmsoKSkgewog
ICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgICAgICAgICByZXN1bHQudHlwZS5z
ZXRMaW5rKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAg
ICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJz
b2x1dGVTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAg
ICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIDAg
IT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIGNoZWNr
aW5nVHlwZXMuaXNRdW90ZSgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVz
dWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7Cisg
ICAgICAgICAgICByZXN1bHQudHlwZS5zZXRRdW90ZSgpOwogICAgICAgICAgICAgcmVzdWx0Lmxv
Y2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0g
W2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlRGFz
aCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5
cGVEYXNoKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0g
cmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzRGFzaCgpKSB7CiAgICAgICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldERhc2goKTsKICAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4
dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdU
eXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkgeworICAgICAgICB9IGVsc2Ug
aWYgKE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYgY2hlY2tp
bmdUeXBlcy5pc1JlcGxhY2VtZW50KCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBs
YWNlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFJlcGxhY2VtZW50KCk7CiAgICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1
bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1Rl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdU
eXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAoTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5n
VHlwZXMuaXNDb3JyZWN0aW9uKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0
aW9uOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlvbigpOwogICAgICAgICAg
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKQEAgLTg2OSwx
MyArODY5LDM0IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJy
YXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAKICAgICByZXR1cm4gcmVzdWx0
czsKIH0KKworc3RhdGljIHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBl
cyYgdHlwZXMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAodHlwZXMuaXNT
cGVsbGluZygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CisgICAgaWYgKHR5cGVzLmlzR3JhbW1hcigpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hcjsKKyAgICBpZiAodHlwZXMuaXNMaW5rKCkpCisgICAgICAgIHJlc3Vs
dCB8PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworICAgIGlmICh0eXBlcy5pc1F1b3RlKCkpCisg
ICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICBpZiAodHlwZXMu
aXNEYXNoKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworICAg
IGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICBpZiAodHlwZXMuaXNDb3JyZWN0aW9uKCkpCisgICAg
ICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKICNlbmRpZgogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVN
YXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQor
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNT
dHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNO
b0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25l
Ok5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5n
ZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVj
a2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpz
cGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExd
OworICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOih0b05TVHlwZXMoY2hlY2tpbmdUeXBlcyl8TlNU
ZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3Vu
dDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAgICByZXN1bHRzID0gY29yZShp
bmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCkBAIC05NzYsMTUgKzk5Nywx
NSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogewog
ICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogX3NlbmRlcjsKICAgICBpbnQgX3NlcXVlbmNlOwot
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIF90eXBlczsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBf
dHlwZXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdp
dGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2Vx
dWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6
KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxD
aGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXMpdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQp
cGVyZm9ybTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNw
b25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRl
ciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCistIChpZClpbml0V2l0aFNlbmRl
cjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0
eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMpdHlwZXMgcmVzdWx0czooTlNBcnJheSop
cmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAt
MTAwNCwxNSArMTAyNSwyMCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKQogQGVuZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVl
bmNlLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBT
dHJpbmcmIHRleHQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgY29uc3QgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKICAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgdGV4dC5s
ZW5ndGgoKSk7CisgICAgLy8gU3RvcmVzIGl0IGFzIGEgcHJpbWl0aXZlIHZhbHVlIHRvIGFsbG93
IHRoZSBibG9jayB0byBjb3B5IGl0LgorICAgIHVuc2lnbmVkIGNoZWNraW5nVHlwZXNWYWx1ZSA9
IGNoZWNraW5nVHlwZXMudmFsdWUoKTsKICAgICBOU1J1bkxvb3AqIGN1cnJlbnRMb29wID0gW05T
UnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6
TlNUZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0
aFRhZzowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSos
IE5TSW50ZWdlcikgewogICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IocGVyZm9ybSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVy
OnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6cmVz
dWx0c10gYXV0b3JlbGVhc2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNl
cXVlbmNlOnNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZXM6V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMoY2hlY2tpbmdU
eXBlc1ZhbHVlKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9kZXM6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0Ok5TRGVmYXVsdFJ1bkxvb3BNb2RlXV07CiAgICAgICAgIH1dOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDA5Y2RlNTk3ZjBiMjY5MzlmODU5NWE5YjY2ZTBjOTk4NGZmYThlYWYu
LjljYTc3MGYxNzk4MjZmNmNkMTk0YjFmNGRkNWQ4NWZmMzhjNmEyYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAg
IFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxh
Y2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMTEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5oCmluZGV4IDBkOGU4YzY3OTg0ZTlhZDFmN2YyYzU2YjZjMGQxY2ZkNjRiZTIxZjAuLmQwMGI2
NDUzOWVkMGNkM2VkYmRjZDE4ZWRjNjY4ZWI5NGZkN2E3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKQEAgLTEwOSw3ICsxMDksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmlu
ZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0
Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBib29s
IGlzRWRpdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDBmOTA4NWQ5ZmE4M2Q4YmQ4
ODBmNzBkODljOGQyZjBiNGJiMzYxYmYuLjBkZTc5NjFmMmIzZWZiNzJmMzg3YmI5ZjhkYjI2YTRk
NmVlODU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNr
aW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTA2ICBCcmlh
biBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCBkNDU2Y2M5YjA3OTJjODRhZjE5NDVlZTc3Y2I3Yzc5ZDNi
ZTIyOWQ3Li41YWYzNTQ1ODJiZDJhNDE2OGM2Y2VjYmMxYzBhYTcxNmVlMzBjZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5w
dXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBX
VEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0
Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGE1YjlhY2IzNGVhNDU5NDU0ZmU4OGY3MmYwZGFkZGEy
Yjc3NDExYzUuLjdkNDNmODZkYmI2YmRiNjc1ZThkNWZlNDY3YjIxZWJlODA2ZTNhODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50V2luQ0U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0wNCAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmgKaW5kZXggYTJiMjNiNDg1MzZhOThjOWE1MDg3YjQxMmY4
YmU0YTNhNWJkZjdlZi4uYzIzNWMyY2JkMjAxZDMwODhiOGM3ZDE1MjMwNmUzNmY1NGMxN2RmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50V2luQ0UuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29u
c3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJl
dHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDVlYjRjMDk3NmJlOWU4
MjQ3MGRlMWNjODhkODQ2MzExYTNmMjJlMzAuLjAxNTFmMjg0ZGZhYmFhZmIyMDVmMTAzYjU5NDky
NDNhZGFmZWE3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYg
IE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVj
a2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorICAg
ICAgICAKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAy
MDExLTA0LTA2ICBNYWxjb2xtIE1hY0xlb2QgIDxtYWxjb2xtLm1hY2xlb2RAdHNod2FuZWRqZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCmluZGV4IDY1ZWU0OTMwNTkz
OWMyN2Y1YjAzNjE2NWE3NmM1NWRkZjRkNTA3MjguLjhiZjA0OTg5ZjI5NTg0NzJmZTZlNjYwZTE5
NzYxOTBiY2JkZmY2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9FZGl0b3JDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQog
ICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhp
czsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIxYjI5ZmZjNWNkYjc4YjY3ZTNlMDFmMjUx
YzY1NWQ2YzgzOTFjZDAuLjBiNmVkMmMyMmI0ZmUwNTVhOTdlYTkzYWRiZjFjYjhjNmUxMjI2Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcw
ODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hl
Y2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b05TVHlwZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKwogMjAx
MS0wNC0xMCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIE5v
dCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA1Mzk0YzI1OTkzNGRiNjc2N2VmZjNlMjdlZDFkNjVlNTQ4YzA0ZjliLi4xNGU0
M2M5MzEyMzFmNWJlODU5YTcwYzNmOGMyYWIxZGRkYTEwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00NTQsMTAgKzQ1NCwyNiBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+IHsK
ICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQorICAg
IHsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIodHlwZXMudmFsdWUoKSk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgdmFs
dWU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZhbHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdHlwZXMgPSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyh2
YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiAgICAgewotICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVFbnVtKHJlc3VsdC50eXBlKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC50eXBl
KTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIocmVzdWx0Lmxlbmd0aCk7CiAgICAgICAgIGVuY29kZXIt
PmVuY29kZShyZXN1bHQuZGV0YWlscyk7CkBAIC00NjYsNyArNDgyLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKIAogICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHJlc3VsdC50eXBlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVz
dWx0LnR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZUludDMyKHJlc3VsdC5sb2NhdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2Vy
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpp
bmRleCBjNDhmOGQzNzc1MDBkNzA5NzMyZWQ3ZjAzNDZhNGE4MWMyMmY3OTRiLi5kODEyZmNiZjVm
NWM5MzhlZjcxYjY2YjU0ODYzMTU3YTFiYjE1MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTI0MiwxNCArMjQyLDE0IEBAIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChp
bnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAw
KTsKICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcg
JiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNl
dFNwZWxsaW5nKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYg
KHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiAoY2hlY2tpbmdUeXBl
cyAmIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWlu
Z1Jlc3VsdCBncmFtbWFyRGV0YWlsc107Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0R3JhbW1hcigp
OwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAg
ICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKQEAgLTI3
MSwzNSArMjcxLDM1IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpj
aGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNU
ZXh0Q2hlY2tpbmdUeXBlTGluayAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlw
ZUxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgICAgIHJl
c3VsdC50eXBlLnNldExpbmsoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1
bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBl
UXVvdGUgJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKICAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNl
dFF1b3RlKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAg
ICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1l
bnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgKGNoZWNr
aW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVEYXNoKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZURhc2g7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAgICAgICAg
ICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAg
IHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdU
eXBlUmVwbGFjZW1lbnQ7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRSZXBsYWNlbWVudCgp
OwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAg
ICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5n
XTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIChjaGVja2lu
Z1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVj
dGlvbigpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA1ODgzOTYyMmRmMjg2MGJhZmI2
NGY0YzZmYmU1ZTBlMjA4YTRhZmQ4Li5lMjcxZGMzMzA1MzY5OTlhZTk2OTUyODA2N2Y1ZDhlMzA3
NTlkZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDYzMzA5MGY0NGQwMGE2
ODA2OGQ4ZmU1NmZkMmM5NTlmMzE1YWEzYmQuLjc4NTNmN2UzOGUxYTkwZTk3MmYyYmFkZDVhNTM3
NTU5M2I2MDZiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlz
c3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9y
PFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCog
YmFkR3JhbW1hckxlbmd0aCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFs
IHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFy
RGV0YWlsJiBkZXRhaWwpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAg
ICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCAxMGRiMzgzYzZmNTUwYmU0NTY3NDk1
Y2JkMmQ3MTY3OTllMmVjY2IzLi43ZTQ5MGE2OTM2ZWUyZGE0ZWJmZmQ0M2ZkNzE4ZTk0N2MwMWEy
NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0yNDEsMTAgKzI0
MSwzMCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorc3RhdGljIHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBU
ZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAg
ICBpZiAodHlwZXMuaXNTcGVsbGluZygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHR5cGVzLmlzR3JhbW1hcigpKQorICAgICAgICByZXN1
bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBpZiAodHlwZXMuaXNMaW5rKCkp
CisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworICAgIGlmICh0eXBl
cy5pc1F1b3RlKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsK
KyAgICBpZiAodHlwZXMuaXNEYXNoKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2lu
Z1R5cGVEYXNoOworICAgIGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpCisgICAgICAgIHJlc3Vs
dCB8PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICBpZiAodHlwZXMuaXNDb3Jy
ZWN0aW9uKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1Rl
eHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQogewogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdl
IHdvdWxkbid0IGhhdmUgdG8gY29weSB0aGUgdGV4dCBoZXJlLgotICAgIG1fcGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRl
eHQsIGxlbmd0aCksIGNoZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVj
a1RleHRPZlBhcmFncmFwaDo6UmVwbHkocmVzdWx0cykpOworICAgIG1fcGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQs
IGxlbmd0aCksIHRvTlNUeXBlcyhjaGVja2luZ1R5cGVzKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89871</attachid>
            <date>2011-04-15 16:18:45 -0700</date>
            <delta_ts>2011-04-19 09:08:14 -0700</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-57088-20110415161844.patch</filename>
            <type>text/plain</type>
            <size>71985</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQwNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYjEyYzNkZWUyY2ZjYTUw
M2FmOTZkZTQ0YmM1MWVmZDQ0M2NjNmUyLi44NTQ5OGI1NTcwNmRiNmJlNThjNzFkNDE5ZjE2Yzc3
NjNjYmI3ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvTWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6
OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5n
cmFtbWF0aWNhbFJhbmdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6VGV4dENoZWNraW5nVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlczo6aXNMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVzOjppc1F1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0Rh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzUmVwbGFjZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OmlzQ29ycmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0U3BlbGxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEdyYW1tYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldExpbmspOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXM6OnNldFF1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzOjpzZXREYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpz
ZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0
Q29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6dmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldEZsYWcpOgorCiAyMDEx
LTA0LTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBDaHJvbWl1bSBMaW51eCBSZWxlYXNlIGJ1aWxkIGZpeCBkdWUgdG8gdW51c2VkIHZh
cmlhYmxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBhMWRmNzRlY2E4MGJkYTYx
YmY0NmIzN2M5OGNmMjU1OGFiNWJjOTc4Li5mOGMwMDhhMGQ3Njc3NzgzYzcyNGVhYjUxYTc1MmVk
NzBiYTZlYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKIAogICAgIE5vZGUqIG5vZGVUb0NoZWNrID0gbV9m
cmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBpZiAobV9zcGVs
bENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9kZVRvQ2hlY2spKQotICAgICAgICBt
X3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9y
KE1hcmtTcGVsbGluZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOworICAgICAgICBtX3Nw
ZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlc29sdmVSZXBsYWNlZFRleHRDaGVja2lu
Z1R5cGUoVGV4dENoZWNraW5nVHlwZXMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4
dENoZWNraW5nVHlwZXM6OkdyYW1tYXIpKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxl
Y3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0xOTc0LDMxICsxOTc0LDI3IEBA
IHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlz
aWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykK
ICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5hcHBseVBlbmRpbmdDb3JyZWN0aW9uKHNlbGVjdGlv
bkFmdGVyVHlwaW5nKTsKIAotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0
aW9ucyA9IDA7Ci0gICAgaWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0g
ICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya1NwZWxsaW5nOwotCisgICAgVGV4dENo
ZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlczsKKyAgICBjaGVja2luZ1R5cGVzLnNldFNwZWxsaW5n
KGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpOwogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZG9SZXBsYWNlbWVudCAKLSAgICAgICAgJiYgKGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQotICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWQoKQotICAgICAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgTWFya1NwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQo
KSkpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFBlcmZvcm1SZXBsYWNlbWVudDsK
KyAgICBjaGVja2luZ1R5cGVzLnNldFJlcGxhY2VtZW50KGRvUmVwbGFjZW1lbnQgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY2hl
Y2tpbmdUeXBlcy5pc1NwZWxsaW5nKCkgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkKCkpKTsKICNlbmRpZgotICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucyAmIChNYXJr
U3BlbGxpbmcgfCBQZXJmb3JtUmVwbGFjZW1lbnQpKQorICAgIGlmICghY2hlY2tpbmdUeXBlcy5p
c1NwZWxsaW5nKCkgJiYgIWNoZWNraW5nVHlwZXMuaXNSZXBsYWNlbWVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRl
eHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7CisgICAgY2hlY2tpbmdUeXBlcy5zZXRH
cmFtbWFyKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsKIAogICAgIFZpc2libGVTZWxlY3Rp
b24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0
LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkpOwotICAgIGlmICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXIp
IHsKKyAgICBpZiAoY2hlY2tpbmdUeXBlcy5pc0dyYW1tYXIoKSkgewogICAgICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50
ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRTdGFydCkpOwotICAgICAgICBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMs
IGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5j
ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhjaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
Y2hlY2tpbmdUeXBlcywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBh
ZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogICAgIH0KIAogI2Vsc2UK
QEAgLTIxMDksMTcgKzIxMDUsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtCYWRHcmFtbWFyKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICAgICBtYXJrTWlzc3BlbGxpbmdzT3JCYWRH
cmFtbWFyKHNlbGVjdGlvbiwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKLXZv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2Us
IFJhbmdlKiBncmFtbWFyUmFuZ2UpCit2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdGV4dENoZWNraW5n
T3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpCiB7CiAj
aWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUg
cGVuZGluZyBhdXRvY29ycmVjdGlvbiBhdCB0aGlzIG1vbWVudC4KICAgICBBU1NFUlQoIW1fc3Bl
bGxpbmdDb3JyZWN0b3ItPmhhc1BlbmRpbmdDb3JyZWN0aW9uKCkpOwogCi0gICAgYm9vbCBzaG91
bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOwotICAg
IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1t
YXI7Ci0gICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRp
b25zICYgUGVyZm9ybVJlcGxhY2VtZW50OwotICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25Q
YW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29ycmVjdGlvblBhbmVsOwotICAgIGJv
b2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8
fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIENoZWNrRm9yQ29ycmVjdGlvbik7CisgICAgYm9vbCBz
aG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlzU3BlbGxpbmcoKTsKKyAg
ICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc0dyYW1tYXIo
KTsKKyAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlv
bnMuaXNSZXBsYWNlbWVudCgpOworICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9
IHRleHRDaGVja2luZ09wdGlvbnMuaXNDb3JyZWN0aW9uUGFuZWwoKTsKKyAgICBib29sIHNob3Vs
ZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgdGV4dENo
ZWNraW5nT3B0aW9ucy5pc0NvcnJlY3Rpb24oKTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIHdpdGggc2VsZWN0aW9ucyBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmll
cy4KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTIxNjYsMTAgKzIxNjIsMTAgQEAgdm9p
ZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENo
ZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1
bHRzOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKICAgICAgICAgdGV4dENoZWNrZXIoKS0+
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoZ3JhbW1hclBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBn
cmFtbWFyUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09w
dGlvbnMpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSh0ZXh0Q2hlY2tpbmdPcHRpb25z
KSwgcmVzdWx0cyk7CiAgICAgZWxzZQogICAgICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRP
ZlBhcmFncmFwaChzcGVsbGluZ1BhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBzcGVsbGluZ1Bh
cmFncmFwaC50ZXh0TGVuZ3RoKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcih0ZXh0Q2hlY2tpbmdPcHRpb25zKSwg
cmVzdWx0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmVSZXBsYWNlZFRleHRDaGVja2luZ1R5cGUodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3Vs
dHMpOwogICAgICAgICAKIAogICAgIC8vIElmIHRoaXMgY2hlY2tpbmcgaXMgb25seSBmb3Igc2hv
d2luZyBjb3JyZWN0aW9uIHBhbmVsLCB3ZSBzaG91bGRuJ3QgYm90aGVyIHRvIG1hcmsgbWlzc3Bl
bGxpbmdzLgpAQCAtMjE5MCwxMyArMjE4NiwxMyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAog
ICAgICAgICAvLyAyLiBSZXN1bHQgZmFsbHMgd2l0aGluIHNwZWxsaW5nUmFuZ2UuCiAgICAgICAg
IC8vIDMuIFRoZSB3b3JkIGluIHF1ZXN0aW9uIGRvZXNuJ3QgZW5kIGF0IGFuIGFtYmlndW91cyBi
b3VuZGFyeS4gRm9yIGluc3RhbmNlLCB3ZSB3b3VsZCBub3QgbWFyawogICAgICAgICAvLyAgICAi
d291bGRuJyIgYXMgbWlzc3BlbGxlZCByaWdodCBhZnRlciBhcG9zdHJvcGhlIGlzIHR5cGVkLgot
ICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0TG9jYXRpb24gPj0gc3BlbGxpbmdQYXJhZ3JhcGgu
Y2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxs
aW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7Cisg
ICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlLmlzU3BlbGxpbmco
KSAmJiByZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkg
JiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNl
dCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFu
Z2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CiAgICAgICAgICAgICBpZiAoIW1fc3Bl
bGxpbmdDb3JyZWN0b3ItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1pc3NwZWxsaW5nUmFuZ2Up
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5n
ZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlciht
aXNzcGVsbGluZ1JhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwotICAgICAg
ICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hciAmJiBncmFtbWFyUGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMo
cmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChzaG91
bGRNYXJrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUuaXNHcmFtbWFyKCkgJiYgZ3JhbW1hclBhcmFn
cmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpKSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+
PSAwKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFp
bHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBk
ZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwpAQCAtMjIwNywxNSArMjIwMywxNSBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGlu
Z1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxs
aW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQotICAgICAgICAgICAgICAgICAgICAmJiAocmVz
dWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCi0gICAgICAgICAgICAgICAgICAgIHx8
IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUKLSAgICAgICAgICAgICAgICAg
ICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVEYXNoCi0gICAgICAgICAgICAg
ICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQKLSAg
ICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlLmlzUXVvdGUoKQorICAgICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNEYXNoKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgfHwgcmVzdWx0LT50eXBlLmlzUmVwbGFjZW1lbnQoKQorICAgICAgICAgICAgICAg
ICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAv
LyBJbiB0aGlzIGNhc2UgdGhlIHJlc3VsdCByYW5nZSBqdXN0IGhhcyB0byB0b3VjaCB0aGUgc3Bl
bGxpbmcgcmFuZ2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVwbGFjaW5nIG5vbi13b3JkIHRleHQgc3Vj
aCBhcyBwdW5jdHVhdGlvbi4KICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYm
IHJlc3VsdExvY2F0aW9uID49IDApOwogCi0gICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJl
Y3Rpb25QYW5lbCAmJiAocmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPCBzcGVsbGluZ1Jh
bmdlRW5kT2Zmc2V0IHx8IHJlc3VsdC0+dHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bikpCisgICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiAocmVzdWx0
TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0IHx8ICFyZXN1
bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBpbnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1bHQtPnJlcGxhY2VtZW50Lmxl
bmd0aCgpOwpAQCAtMjIyOSwxMyArMjIyNSwxMyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAog
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1Jl
cGxhY2UuZ2V0KCksIERPV05TVFJFQU0pOwogCiAgICAgICAgICAgICAvLyBhZGRpbmcgbGlua3Mg
c2hvdWxkIGJlIGRvbmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZAotICAg
ICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBzZWxl
Y3Rpb25PZmZzZXQgPiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCisgICAgICAg
ICAgICBpZiAocmVzdWx0LT50eXBlLmlzTGluaygpICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3Vs
dExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoICsgMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nOwogCiAgICAgICAgICAgICAvLyBE
b24ndCBjb3JyZWN0IHNwZWxsaW5nIGluIGFuIGFscmVhZHktY29ycmVjdGVkIHdvcmQuCi0gICAg
ICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzQ29ycmVjdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgcmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1JlcGxhY2UuZ2V0KCkp
OwogICAgICAgICAgICAgICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKICAgICAgICAgICAgICAgICBpZiAobWFya2Vy
cy0+aGFzTWFya2VycyhyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50KSkgewpAQCAtMjI2NSwxNCArMjI2MSwxNCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRD
aAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluaykgeworICAgICAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0xpbmsoKSkgewogICAgICAgICAgICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uVG9SZXBsYWNlKTsKICAgICAg
ICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXN0
b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoY2Fu
RWRpdFJpY2hseSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlu
a0NvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByZXN1bHQtPnJlcGxhY2VtZW50
KSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAmJiBzaG91bGRJbnNlcnRUZXh0
KHJlc3VsdC0+cmVwbGFjZW1lbnQsIHJhbmdlVG9SZXBsYWNlLmdldCgpLCBFZGl0b3JJbnNlcnRB
Y3Rpb25UeXBlZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uKQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUu
aXNDb3JyZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VUb1JlcGxhY2UsIHJlc3VsdC0+cmVwbGFj
ZW1lbnQpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbV9m
cmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rpb25Ub1JlcGxhY2UpOwpAQCAt
MjI5Myw3ICsyMjg5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9u
cyBjYW4gZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgotICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24p
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkKICAgICAg
ICAgICAgICAgICAgICAgbV9zcGVsbGluZ0NvcnJlY3Rvci0+bWFya0NvcnJlY3Rpb24oc3BlbGxp
bmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKSwg
cmVwbGFjZWRTdHJpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzQ5LDkgKzIz
NDUsOCBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlYwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hF
Q0tJTkcpCiAgICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25z
ID0gTWFya1NwZWxsaW5nIHwgQ2hlY2tGb3JDb3JyZWN0aW9uOwotICAgIGlmIChtYXJrR3JhbW1h
ciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0
aW9ucyB8PSBNYXJrR3JhbW1hcjsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyB0ZXh0Q2hlY2tpbmdP
cHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpD
b3JyZWN0aW9uKTsKKyAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLnNldEdyYW1tYXIobWFya0dyYW1t
YXIgJiYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpOwogICAgIG1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpKTsKICNlbHNlCiAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2U7CkBAIC0zMjQ5LDM4ICszMjQ0LDE5IEBAIEZsb2F0UmVjdCBFZGl0b3I6Ondp
bmRvd1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvbnN0CiAgICAgcmV0dXJuIHZp
ZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChib3VuZGluZ1JlY3QpKTsKIH0gICAgICAgIAog
Ci1UZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucykKK1RleHRDaGVja2luZ1R5cGVz
IEVkaXRvcjo6cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZShjb25zdCBUZXh0Q2hlY2tp
bmdUeXBlcyYgdHlwZXMpCiB7Ci0gICAgYm9vbCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOwotICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIg
PSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXI7Ci0gICAgYm9vbCBzaG91bGRTaG93
Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFu
ZWw7Ci0gICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVj
dGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsK
LQotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChz
aG91bGRNYXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkQ2hlY2tG
b3JDb3JyZWN0aW9uKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVD
b3JyZWN0aW9uOwotCisgICAgVGV4dENoZWNraW5nVHlwZXMgcmVzdWx0ID0gdHlwZXM7CiAjaWYg
VVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJl
cGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKLSAg
ICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsK
LSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAgICAg
ICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7Ci0gICAg
ICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uOworICAgIGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpIHsKKyAgICAgICAg
cmVzdWx0LnNldExpbmsoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKTsKKyAgICAg
ICAgcmVzdWx0LnNldFF1b3RlKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkp
OworICAgICAgICByZXN1bHQuc2V0RGFzaChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCkpOworICAgICAgICByZXN1bHQuc2V0UmVwbGFjZW1lbnQoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpOworICAgICAgICByZXN1bHQuc2V0Q29ycmVjdGlvbih0eXBlcy5p
c1NwZWxsaW5nKCkgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpOwog
ICAgIH0KICNlbmRpZgotCi0gICAgcmV0dXJuIGNoZWNraW5nVHlwZXM7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggMTEwNWNlOTkyYTk5OTY1YjQzOGI4MTA1YTdkNjRkZGE4MmY3NDQxMC4uZjcwMGYzNzE4
Y2IxNTliMDUyNmNkZmQ2MzkxOWM5YzdmMGExYzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CkBAIC0yMjQsMTUgKzIyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtCYWRHcmFtbWFyKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9uLCBib29sIG1h
cmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0aW9uKTsKIAot
ICAgIGVudW0gVGV4dENoZWNraW5nT3B0aW9uRmxhZ3MgewotICAgICAgICBNYXJrU3BlbGxpbmcg
PSAxIDw8IDAsCi0gICAgICAgIE1hcmtHcmFtbWFyID0gMSA8PCAxLAotICAgICAgICBQZXJmb3Jt
UmVwbGFjZW1lbnQgPSAxIDw8IDIsCi0gICAgICAgIFNob3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8
IDMsCi0gICAgICAgIENoZWNrRm9yQ29ycmVjdGlvbiA9IDEgPDwgNCwKLSAgICB9OwotICAgIHR5
cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKLQogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKICAgICB2b2lkIGxv
d2VyY2FzZVdvcmQoKTsKQEAgLTI1Miw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b2dn
bGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKICNlbmRpZgogCi0gICAgdm9pZCBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMs
IFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKKyAgICB2b2lkIG1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoY29uc3QgVGV4dENoZWNraW5n
VHlwZXMmLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAgICAg
dm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24gPSBmYWxzZSk7CkBAIC00MTQsNyArNDA1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJl
dmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1Nw
ZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFRleHRD
aGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlv
bnMpOworICAgIFRleHRDaGVja2luZ1R5cGVzIHJlc29sdmVSZXBsYWNlZFRleHRDaGVja2luZ1R5
cGUoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmKTsKIAogICAgIHZvaWQgc2VsZWN0Q29tcG9zaXRp
b24oKTsKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBib29sIHBy
ZXNlcnZlU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApp
bmRleCBmZWRjYzA3NzNlNmU3OTgxZjZhOTAyMzkzMTYxNjdiYjc0N2VkYmUxLi5iNjE3M2ViODdk
MTkxYTc0YjE2MTZkNGI1YTcwMWVhZGQ5NGFlMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbENoZWNrZXIuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29sIFNwZWxsQ2hlY2tlcjo6
aXNDaGVja2FibGUoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5y
ZW5kZXJlcigpOwogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKFRl
eHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIE5vZGUqIG5vZGUpCit2b2lkIFNwZWxsQ2hlY2tlcjo6
cmVxdWVzdENoZWNraW5nRm9yKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiBvcHRpb25zLCBOb2Rl
KiBub2RlKQogewogICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGUpKTsKIAog
ICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVu
dC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG1hc2ss
IG1fcmVxdWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0
aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgb3B0aW9ucywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0
YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50
IGRpc3RhbmNlKQpAQCAtMTMxLDExICsxMzEsMTEgQEAgc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJh
dG9yKFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCiAgICAgcmV0dXJu
IGZhbHNlOyAgICAKIH0KIAotc3RhdGljIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHRvTWFy
a2VyVHlwZShUZXh0Q2hlY2tpbmdUeXBlIHR5cGUpCitzdGF0aWMgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUgdG9NYXJrZXJUeXBlKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKIHsK
LSAgICBpZiAodHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCisgICAgaWYgKHR5cGVz
LmlzU3BlbGxpbmcoKSkKICAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsK
LSAgICBBU1NFUlQodHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7CisgICAgQVNTRVJU
KHR5cGVzLmlzR3JhbW1hcigpKTsKICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7
CiB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50
IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAgIGlu
dCBzdGFydE9mZnNldCA9IDA7CiAgICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNb
aV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBlICE9
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQorICAgICAgICBpZiAoIXJlc3VsdHNbaV0udHlwZS5p
c1NwZWxsaW5nKCkgJiYgIXJlc3VsdHNbaV0udHlwZS5pc0dyYW1tYXIoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRvIGF2b2lkIG1vdmluZyB0aGUgcG9zaXRpb24gYmFj
a3dhcmQsIHdlIGFzc3VtZSB0aGUgZ2l2ZW4gcmVzdWx0cyBhcmUgc29ydGVkIHdpdGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCmluZGV4IDRiY2I4OWU1OTg1Y2QxYmQzYzYyZWE5
YmZhZDA3ZDlkNGNhZTFiMzMuLjQxNjMxM2I0MDRiZGZkOTk4NzNiZjlmMjVmMjg3NWE2MDFmN2Fk
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50
IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzaywgTm9kZSopOwor
ICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgTm9k
ZSopOwogICAgIHZvaWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYzM3N2ZlOGE2
MjM4MzNlY2QxOWZmM2ExYTg1N2MzMzliNTNlMzdhMy4uMDUxMmY4NmJlMGY5YTYyODk2OTdjODE2
MWRhMDBjY2Q4MzMwMzgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9p
ZCBTcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVk
KFRpbWVyPFNwZWxsaW5nQ29ycmUKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHNlbGVj
dGlvbi5zdGFydCgpLCBzZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBwID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihwLCBz
dGFydCk7Ci0gICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJrQWxsTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hckluUmFuZ2VzKEVkaXRvcjo6TWFya1NwZWxsaW5nIHwgRWRpdG9yOjpTaG93Q29y
cmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDAp
OworICAgICAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlcyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxp
bmcgfCBUZXh0Q2hlY2tpbmdUeXBlczo6Q29ycmVjdGlvblBhbmVsKSwgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCAwKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMzkxMmE0OWY0
ZmU5NjdkN2Q1YjgxMWI3OTI5MjI3MDM2YmYzZjhlNy4uZDQ3ZmViOGZiY2ZhNGEyYzM5MTlkNGNh
YjM3YjgxNTE0YzJhN2IzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcApAQCAtMjc0LDE5ICsyNzQsMjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIs
IGIKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgICAgICAg
ICAgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFn
cmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tp
bmdUeXBlcywgcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZXMgb3B0
aW9ucyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgIG9wdGlv
bnMuc2V0R3JhbW1hcihjaGVja0dyYW1tYXIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT50
ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFj
dGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIG9wdGlvbnMsIHJlc3VsdHMpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVj
a2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9j
YXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQt
Pmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQtPnR5cGUuaXNTcGVsbGluZygpICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gY3VycmVudFN0
YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA8PSBjdXJyZW50
RW5kT2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5n
dGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQt
PmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
R3JhbW1hciAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcmVz
dWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJl
c3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlLmlzR3JhbW1hcigpICYmIHJlc3VsdC0+
bG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQt
Pmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3Jh
bW1hciByZXN1bHQsIHNpbmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0
IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0
aGUgZmlyc3QgZGV0YWlsIGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29u
ZCBncmFtbWFyIHJlc3VsdC4KQEAgLTUyNCwxMiArNTI1LDE0IEBAIFZlY3RvcjxTdHJpbmc+IFRl
eHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5n
ZShib29sCiAgICAgICAgIHJldHVybiBndWVzc2VzOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVz
ID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBtX2NsaWVudC0+
dGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0
ZXJzKCksIHBhcmFncmFwaC50ZXh0TGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMpOwor
CisgICAgVGV4dENoZWNraW5nVHlwZXMgb3B0aW9ucyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxp
bmcpOworICAgIG9wdGlvbnMuc2V0R3JhbW1hcihjaGVja0dyYW1tYXIpOworICAgIG1fY2xpZW50
LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJh
Y3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgb3B0aW9ucywgcmVzdWx0cyk7CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcGFy
YWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVu
Z3RoKSkgeworICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzU3BlbGxpbmcoKSAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgp
KSB7CiAgICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tp
bmdTdWJzdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgo
KSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0Zvcldv
cmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygpLCBndWVzc2VzKTsKQEAgLTU0NCw3ICs1NDcsNyBA
QCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
T3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tp
bmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VD
b3ZlcmVkQnkocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlm
IChyZXN1bHQtPnR5cGUuaXNHcmFtbWFyKCkgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNv
dmVyZWRCeShyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5k
ZXRhaWxzW2pdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDAgJiYg
ZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApp
bmRleCBlMWE5ZmZlZjViODg0YjJlYmVlNTA3NTc1YzMzYTRjZTMwNTUwMzY1Li5iYTZkZTA2YzNl
Y2Q5MzUxMDUyNTJlMDY5ZjY0NzUxODZiNTIyZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcp
Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50
LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07
CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50
LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jikg
eyB9OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgVGV4dENoZWNraW5n
VHlwZXMmLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50
IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggZDE2YWRlMTY0NjBhZDcwZjM3ZWI5ZThkNDE0
ZGY2MWY2N2NmYzhkMy4uOGRmMTgwOTE1MWZiOTBhY2NkZjc0MThjOGY2OGIyYmM5MzU3MmM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQu
aApAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgR3JhbW1hckRldGFpbCB7CiB9OwogCiBzdHJ1Y3Qg
VGV4dENoZWNraW5nUmVzdWx0IHsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7CisgICAgVGV4
dENoZWNraW5nVHlwZXMgdHlwZTsKICAgICBpbnQgbG9jYXRpb247CiAgICAgaW50IGxlbmd0aDsK
ICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsKQEAgLTY0LDE0ICs2NCwxNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFy
KiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwogCiAjaWYgVVNFKFVOSUZJRURfVEVY
VF9DSEVDS0lORykKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3Qg
VUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlw
ZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3Vw
cG9ydCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUg
dG8gaWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3Jl
IGFjY3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3Jl
IHRleHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UK
ICAgICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGlu
ZyB0aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rp
b25zLgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgU3RyaW5nJikgPSAwOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKaW5kZXggZDIwNDBkNWVhZmJj
ZmZiZWNkN2ViNTY2OWQ1NTgzMjA5MTI4MzkzMS4uOGUzZjgyN2UxNTdkYTQ1ZjJhYWUzZjc5ZDYz
Nzk1ZTE5MGM4YzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oCkBAIC00MiwxNyArNDIsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2RlZmluZSBX
VEZfVVNFX0FVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UIDEKICNlbmRpZgogCi1lbnVtIFRleHRD
aGVja2luZ1R5cGUgewotICAgIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAgICA9IDEgPDwgMSwK
LSAgICBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAgICAgPSAxIDw8IDIsCi0gICAgVGV4dENoZWNr
aW5nVHlwZUxpbmsgICAgICAgID0gMSA8PCA1LAotICAgIFRleHRDaGVja2luZ1R5cGVRdW90ZSAg
ICAgICA9IDEgPDwgNiwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlRGFzaCAgICAgICAgPSAxIDw8IDcs
Ci0gICAgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LAotICAgIFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQotfTsKK3N0cnVjdCBUZXh0Q2hlY2tpbmdUeXBl
cyB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgU3BlbGxpbmcgICAgPSAxIDw8
IDEsCisgICAgICAgIEdyYW1tYXIgICAgID0gMSA8PCAyLAorICAgICAgICBMaW5rICAgICAgICA9
IDEgPDwgNSwKKyAgICAgICAgUXVvdGUgICAgICAgPSAxIDw8IDYsCisgICAgICAgIERhc2ggICAg
ICAgID0gMSA8PCA3LAorICAgICAgICBSZXBsYWNlbWVudCA9IDEgPDwgOCwKKyAgICAgICAgQ29y
cmVjdGlvbiAgPSAxIDw8IDksCisgICAgICAgIENvcnJlY3Rpb25QYW5lbCAgPSAxIDw8IDEwLAor
ICAgIH07CisKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdUeXBlcyh1bnNpZ25lZCB2YWx1ZSA9
IDApIDogbV92YWx1ZSh2YWx1ZSkge30KKworICAgIGJvb2wgaXNTcGVsbGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgJiBTcGVsbGluZzsgfQorICAgIGJvb2wgaXNHcmFtbWFyKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSAmIEdyYW1tYXI7IH0KKyAgICBib29sIGlzTGluaygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgJiBMaW5rOyB9CisgICAgYm9vbCBpc1F1b3RlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSAmIFF1b3RlOyB9CisgICAgYm9vbCBpc0Rhc2goKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlICYgRGFzaDsgfQorICAgIGJvb2wgaXNSZXBsYWNlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgJiBSZXBsYWNlbWVudDsgfQorICAgIGJvb2wgaXNDb3JyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSAmIENvcnJlY3Rpb247IH0KKyAgICBib29sIGlzQ29ycmVjdGlvblBh
bmVsKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIENvcnJlY3Rpb25QYW5lbDsgfQorCisgICAg
dm9pZCBzZXRTcGVsbGluZyhib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBTcGVsbGluZyk7
IH0KKyAgICB2b2lkIHNldEdyYW1tYXIoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgR3Jh
bW1hcik7IH0KKyAgICB2b2lkIHNldExpbmsoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwg
TGluayk7IH0KKyAgICB2b2lkIHNldFF1b3RlKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24s
IFF1b3RlKTsgfQorICAgIHZvaWQgc2V0RGFzaChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9u
LCBEYXNoKTsgfQorICAgIHZvaWQgc2V0UmVwbGFjZW1lbnQoYm9vbCBvbiA9IHRydWUpIHsgc2V0
RmxhZyhvbiwgUmVwbGFjZW1lbnQpOyB9CisgICAgdm9pZCBzZXRDb3JyZWN0aW9uKGJvb2wgb24g
PSB0cnVlKSB7IHNldEZsYWcob24sIENvcnJlY3Rpb24pOyB9CisgICAgdm9pZCBzZXRDb3JyZWN0
aW9uUGFuZWwoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVjdGlvblBhbmVsKTsg
fQogCi10eXBlZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ1R5cGVNYXNrOworICAgIHVuc2lnbmVk
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIHZvaWQg
c2V0RmxhZyhib29sIG9uLCB1bnNpZ25lZCB0eXBlKSB7IG1fdmFsdWUgPSBvbiA/IChtX3ZhbHVl
IHwgdHlwZSkgOiAobV92YWx1ZSAmIH50eXBlKTsgfQorCisgICAgdW5zaWduZWQgbV92YWx1ZTsK
K307CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1MmE3YmJkNGY4MmM5ZDY5
ZjZlNDA2Y2JjMzZmMzNhZjdhZWFjYmE3Li5lODYzNjI5NGNmYmI0NWE1MWYxZmYxYWMxODYxNDAw
ZGU3OTgyZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9y
OjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2lu
Z1R5cGUKKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAg
ICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Db3JlQ2hlY2tpbmdUeXBl
cyk6CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOgorCiAyMDExLTA0LTE1ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwCmluZGV4IDExNDFlYTQ0ODM2OGQ0MzMxNzk3MmVkNDkyYzU2NGQ4OTI2YmYy
OTYuLjQzOGU5NjA5NTU2YTdiODA5YWJjODE3NzRhM2IyOTMxZGU4YWUxMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC04NzIsNyAr
ODcyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29u
c3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9
IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwgVGV4dENoZWNr
aW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICAgICBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpCiAgICAgICAgIG1f
d2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRleHQodGV4dCwg
bmV3IFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNlbmRlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IDJl
YmM2ZWE1ODA0YjI1M2ZiZTQxNjM4Njc0NWI5ODcxMTdhYWZkZTkuLmEzNzFjNzEyNTkzZWY4ZTg2
OTViMzM5OTQ5YzQyNDVjNTMxZWQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vl
c3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCmlu
ZGV4IGY1YTY2MDRkYmE2Nzg2M2M3NmM5ZjY5MGI1MTI2MDQ5NzJlMWY3YmUuLjY3YjQ4ODY5YjVi
NzljMjliZmVjYTM4N2ZiMDcwNDZmYWU5ZDk4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAK
QEAgLTQwLDEyICs0MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXN0YXRpYyBUZXh0Q2hlY2tpbmdUeXBlIHRvQ29yZUNoZWNraW5nVHlwZShX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yIGVycm9yKQorc3RhdGljIFRleHRDaGVja2luZ1R5
cGVzIHRvQ29yZUNoZWNraW5nVHlwZXMoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJv
cikKIHsKLSAgICBpZiAoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxs
aW5nKQotICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotICAgIEFTU0VS
VChlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7Ci0gICAgcmV0
dXJuIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGVz
OworICAgIHR5cGVzLnNldFNwZWxsaW5nKGVycm9yID09IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6
RXJyb3JTcGVsbGluZyk7CisgICAgdHlwZXMuc2V0R3JhbW1hcihlcnJvciA9PSBXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7CisgICAgQVNTRVJUKHR5cGVzLnZhbHVlKCkpOwor
ICAgIHJldHVybiB0eXBlczsKIH0KIAogc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpCkBAIC01Myw3ICs1NCw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKSB7IAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgY29yZVJlc3VsdDsKLSAgICAgICAgY29yZVJlc3VsdC50eXBlID0gdG9Db3JlQ2hlY2tpbmdU
eXBlKHJlc3VsdHNbaV0uZXJyb3IpOworICAgICAgICBjb3JlUmVzdWx0LnR5cGUgPSB0b0NvcmVD
aGVja2luZ1R5cGVzKHJlc3VsdHNbaV0uZXJyb3IpOwogICAgICAgICBjb3JlUmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0c1tpXS5wb3NpdGlvbjsKICAgICAgICAgY29yZVJlc3VsdC5sZW5ndGggPSBy
ZXN1bHRzW2ldLmxlbmd0aDsKICAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKGNvcmVSZXN1bHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IDI0ZmU1NWEzMzRjOWRiYTU4MTlkNmNkMTQyZTgyNGY3Yzdk
MmEzY2MuLmU1YzhjYzNmMDkyOTIzODFjYWZkZmNjZGYyMDIwNGFhNTc1ZTk1MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgK
KyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA0LTE0ICBHcnplZ29yeiBDemFq
a293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJkODQ3
M2ZkYzNhMmEuLmRkNGNjZTFiZjJhY2M5ZmNkYTRlYzdlNzEzYTNlOGNiOTAxODRkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2Vz
Rm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RGOjpW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBl
bmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNr
ZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IGE1OTNhNzRhZTYwY2Y0ODQ3ZDM4NDQ3MWM5NjYxNzBmMmJkOWI4NTIu
LjA1OWI4Yzg4Y2Q1NzBhYWNlMzMxNDQwZjA3NmRlMjVhYWUzMTQ4NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAg
ICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVw
bGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXJD
bGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMTIgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENo
ZWNrZXJDbGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAppbmRleCA1ZDkzYzA3MjE2ZDk5NWJmZTM2Y2FmYWRk
OTkwYzBhNzgyZjUyZGRhLi42OWZhZTY0NGUzZTIxYzMyOGIwY2EyNTI4MzFiNmNkNmY5ZGZmYmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tl
ckNsaWVudEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBUZXh0Q2hl
Y2tlckNsaWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewog
ICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
aGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9y
PFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCog
YmFkR3JhbW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29y
ZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpT
dHJpbmcmKSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNv
bnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFn
ZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA2YWUzZGExOWJl
NjA5ZGI2NTQyZWY4YjBmODJhODc5NmY4ZGRmYzlkLi44MDIzZDIwYjAwNjFjNjkwMWIxY2EzNDgy
ZGM1OTFiZmEwY2VlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9y
OjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2lu
Z1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorCiAyMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAppbmRleCBjYzIx
ZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1Li42MzM3NDlmNDM1NjAwZTU4MTU4
NDFmZDIwODAyM2E5MDhmYjI0MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCkBAIC0xMTEsNyArMTExLDcgQEAg
Y2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4
dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+
JiBndWVzc2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxl
ZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcm
KSB7fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxD
aGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0
cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2Vy
KCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNjBhNWFkMTQ4Y2M5Zjc4ZDJiODUyODk0OWRkZDQ0ZGYyOTM1Mjdk
YS4uYWVjMDQ0M2I1MTlkZGI4NzkxYmE5Yzc0OGYxNTdkZDJmNjE5NzNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAg
ICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAodG9OU1R5cGVzKToKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoLVtXZWJF
ZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVyOldlYkNvcmU6OnNlcXVlbmNl
OnR5cGVzOldlYkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xNCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCAwZTUyMTAyMzY4MmJhMTIxOTI0M2UxZGRjMzBjYjNkZGUyMzAwN2U3Li5jNTEyM2I2
NmRiNjJhYjNhYWMxYTk5MDZmNWI0MTk2ZTcxMzViZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTMwLDcgKzEzMCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0
IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3Nw
ZWxsaW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3Vn
Z2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RG
OjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlv
biwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVj
a2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0
IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hv
dyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDM0MWEyOGZkNDQ0
YTViNmQxMDE0MWYxZDQ4NWM3NTJlZTg4OTQxNDcuLjYwN2IzNmY0ZjNkN2RlYWI3Nzk2MjIxNjVi
Njc3YWFhMjAyY2ZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5n
dGgsIFZlY3RvcgogfQogCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi1zdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNo
ZWNraW5nVHlwZXMpCitzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0Fy
cmF5ICppbmNvbWluZ1Jlc3VsdHMsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiBjaGVja2luZ1R5
cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKQEAgLTgw
MCwxNiArODAwLDE2IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5T
QXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAgICAgICAgIE5TVGV4dENo
ZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwogICAg
ICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAg
IEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgaWYgKE5TVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5T
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgeworICAgICAgICBpZiAoTlNUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAgICAgICAgcmVzdWx0
LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1bHRUeXBlICYmIDAgIT0g
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkgeworICAgICAgICB9
IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVzdWx0VHlwZSAmJiBjaGVj
a2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBn
cmFtbWFyRGV0YWlsc107Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0R3JhbW1hcigpOwogICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKQEAgLTgyOSwzNyArODI5
LDM3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmlu
Y29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAgICAgICAgICAgICAgICAgcmVzdWx0LmRl
dGFpbHMuYXBwZW5kKGRldGFpbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUxp
bmsgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdU
eXBlTGluaykpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVMaW5rID09
IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc0xpbmsoKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZUxpbms7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRMaW5rKCk7CiAgICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1
bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChO
U1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlw
ZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1Rl
eHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNRdW90
ZSgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgICAgICAgICByZXN1
bHQudHlwZS5zZXRRdW90ZSgpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0
IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCA9PSByZXN1bHRUeXBl
ICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVEYXNoKSkgeworICAg
ICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0gcmVzdWx0VHlwZSAmJiBj
aGVja2luZ1R5cGVzLmlzRGFzaCgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsK
KyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldERhc2goKTsKICAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVJl
cGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENo
ZWNraW5nVHlwZVJlcGxhY2VtZW50KSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc1JlcGxh
Y2VtZW50KCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAg
ICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAg
ICAgICAgIHJlc3VsdC50eXBlLnNldFJlcGxhY2VtZW50KCk7CiAgICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVD
b3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNDb3JyZWN0
aW9uKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAgICAg
ICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlvbigpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKQEAgLTg2OSwxMyArODY5LDM0IEBAIHN0
YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVz
dWx0cywgVGV4dENoZWNraW5nVHlwCiAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KKworc3RhdGlj
IHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCit7Cisg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAodHlwZXMuaXNTcGVsbGluZygpKQorICAg
ICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHR5cGVz
LmlzR3JhbW1hcigpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cjsKKyAgICBpZiAodHlwZXMuaXNMaW5rKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVj
a2luZ1R5cGVMaW5rOworICAgIGlmICh0eXBlcy5pc1F1b3RlKCkpCisgICAgICAgIHJlc3VsdCB8
PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICBpZiAodHlwZXMuaXNEYXNoKCkpCisgICAg
ICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworICAgIGlmICh0eXBlcy5pc1Jl
cGxhY2VtZW50KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudDsKKyAgICBpZiAodHlwZXMuaXNDb3JyZWN0aW9uKCkpCisgICAgICAgIHJlc3VsdCB8PSBO
U1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKICNl
bmRpZgogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3Qg
VUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlw
ZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNTdHJpbmcgKnRleHRTdHJp
bmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2Fz
dDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0Fy
cmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmlu
ZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dy
YXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOworICAgIE5TQXJyYXkg
KmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBj
aGVja1N0cmluZzp0ZXh0U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxl
bmd0aF0pIHR5cGVzOih0b05TVHlwZXMoY2hlY2tpbmdUeXBlcyl8TlNUZXh0Q2hlY2tpbmdUeXBl
T3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKICAgICBb
dGV4dFN0cmluZyByZWxlYXNlXTsKICAgICByZXN1bHRzID0gY29yZShpbmNvbWluZ1Jlc3VsdHMs
IGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCkBAIC05NzYsMTUgKzk5NywxNSBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogewogICAgIFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciogX3NlbmRlcjsKICAgICBpbnQgX3NlcXVlbmNlOwotICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIF90eXBlczsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBfdHlwZXM7CiAgICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3Vs
dHM7CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIg
c2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMp
dHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWlu
aXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50
KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1
bHRzOihOU0FycmF5KilyZXN1bHRzCistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZXMpdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cwogewogICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMTAwNCwxNSArMTAyNSwy
MCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogQGVu
ZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcmIHRleHQpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
ICAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAg
Ly8gU3RvcmVzIGl0IGFzIGEgcHJpbWl0aXZlIHZhbHVlIHRvIGFsbG93IHRoZSBibG9jayB0byBj
b3B5IGl0LgorICAgIHVuc2lnbmVkIGNoZWNraW5nVHlwZXNWYWx1ZSA9IGNoZWNraW5nVHlwZXMu
dmFsdWUoKTsKICAgICBOU1J1bkxvb3AqIGN1cnJlbnRMb29wID0gW05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF07CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNUZXh0Q2hlY2tpbmdB
bGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRhZzowIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
SW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdlcikgewog
ICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9y
bSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRv
clNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5j
ZTpzZXF1ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVh
c2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRv
clNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZXM6V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMoY2hlY2tpbmdUeXBlc1ZhbHVlKSAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9kZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRGVm
YXVsdFJ1bkxvb3BNb2RlXV07CiAgICAgICAgIH1dOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4
IDM0MjExZjMwNjRiODBkOGQ3Y2VjNWYyNTM4ZDY0ODdmM2E0NzIyMDAuLmI0ZDNhYjk0Zjc0OWNh
OWE1YzI2OGQ1MTMyODQ5NTVkNDQwNTU0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBF
ZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDQtMTUgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKaW5kZXggMGQ4ZThjNjc5ODRlOWFkMWY3
ZjJjNTZiNmMwZDFjZmQ2NGJlMjFmMC4uZDAwYjY0NTM5ZWQwY2QzZWRiZGNkMThlZGM2NjhlYjk0
ZmQ3YTdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShi
b29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhT
cGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBT
dHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVs
bENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3Qg
U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigp
IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggODk3MWVkNjg1NDI3YjZiZDI3ZjY3NDA2MGYyMDQyODZhZmUzMWZlMy4uMDQ2
YWMwYjQ5NjZkNThmYzQxYjEwNTRmYTYwMzJlMzUzN2E5NTAxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBS
ZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyk6CisKIDIwMTEtMDQtMTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlcGxhY2Ugc29tZSBrbm93bi10by1mYWlsIGFzc2VydGlvbnMgd2l0aCBGSVhN
RXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggZDQ1NmNjOWIwNzkyYzg0YWYxOTQ1ZWU3N2NiN2M3OWQzYmUyMjlkNy4uNWFm
MzU0NTgyYmQyYTQxNjhjNmNlY2JjMWMwYWE3MTZlZTMwY2ViNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwppbmRleCBhNWI5YWNiMzRlYTQ1OTQ1NGZlODhmNzJmMGRhZGRhMmI3NzQxMWM1Li43
ZDQzZjg2ZGJiNmJkYjY3NWU4ZDVmZTQ2N2IyMWViZTgwNmUzYTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAg
ICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNF
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMDQgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdh
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5oCmluZGV4IGEyYjIzYjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3
ZWYuLmMyMzVjMmNiZDIwMWQzMDg4YjhjN2QxNTIzMDZlMzZmNTRjMTdkZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNF
LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNz
ZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwg
V2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA5MDhlMzU2ZTc2YzEwOGU4ZGNiNDAwMjU2
MDZkNDFhMjVlNWEwY2Y5Li5iMWM5NWYwMzFhZDIzZDI1NjQyZmUzYzkwMWMzYTY0ZWM5MWY0ZjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25z
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKyAgICAgICAgCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xNCAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hd
IFVucmV2aWV3ZWQgYnVpbGQgZml4ZXMgZm9yIHd4TVNXIGFuZCB3eCAyLjkuMS4xLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmggYi9T
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAppbmRleCA2NWVl
NDkzMDU5MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUwNzI4Li44YmYwNDk4OWYyOTU4NDcyZmU2
ZTY2MGUxOTc2MTkwYmNiZGZmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRWRpdG9yQ2xpZW50V3guaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5n
Jikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0
dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZTdhYzU2MjZiYWY5YTcyOTJm
OTA2ZWZmMzkyNGU1OTA2ZDAwYTY1Li43NTY2YTY0MWI0YmYyYmE0YWY4NGZkYjM3NzViZTI4NzE3
YmMwMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlv
bnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
VGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1Rl
eHRPZlBhcmFncmFwaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6dG9OU1R5cGVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6
CisKIDIwMTEtMDQtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDUzOTRjMjU5OTM0ZGI2NzY3ZWZmM2UyN2Vk
MWQ2NWU1NDhjMDRmOWIuLjE0ZTQzYzkzMTIzMWY1YmU4NTlhNzBjM2Y4YzJhYjFkZGRhMTAyOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTQ1NCwxMCArNDU0LDI2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6R3JhbW1hckRldGFpbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlcyYgdHlwZXMpCisgICAgeworICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMih0eXBl
cy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCisgICAgewor
ICAgICAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0eXBlcyA9IFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
fTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkKICAgICB7Ci0g
ICAgICAgIGVuY29kZXItPmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGUocmVzdWx0LnR5cGUpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1
bHQubG9jYXRpb24pOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1bHQubGVuZ3Ro
KTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC5kZXRhaWxzKTsKQEAgLTQ2Niw3ICs0
ODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVj
a2luZ1Jlc3VsdD4gewogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiAgICAgewotICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocmVzdWx0LnR5cGUpKQorICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShyZXN1bHQudHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RleHRDaGVja2VyTWFjLm1tCmluZGV4IGYwZGNlYjBiZDFlMDQ2NzdiMWI0YjRjNmM2NDBkODcz
OTYyYzQ1ZjcuLjEzYTkzYzQxMjIwMWQ1ZmRiOGNjNjUzNWM5YTk4Nzg1Y2MzNGMyOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMjQy
LDE0ICsyNDIsMTQgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgQVNTRVJUKHJl
c3VsdFJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRD
aGVja2luZ1R5cGVTcGVsbGluZyAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAg
ICAgICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9
IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7
CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFt
bWFyICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikpIHsKICAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5
ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgICAgICByZXN1
bHQudHlwZS5zZXRHcmFtbWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwg
aW4gZGV0YWlscykgewpAQCAtMjcxLDM1ICsyNzEsMzUgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1
bWUKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIChjaGVja2luZ1R5cGVz
ICYgTlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVM
aW5rOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0TGluaygpOwogICAgICAgICAgICAgcmVz
dWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQu
bGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNr
aW5nVHlwZVF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAg
ICAgICAgcmVzdWx0LnR5cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNv
bWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tp
bmdUeXBlRGFzaCAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZURhc2gpKSB7
CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVz
dWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBl
LnNldERhc2goKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
ICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNl
bWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQg
JiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpIHsKICAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC50
eXBlLnNldFJlcGxhY2VtZW50KCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1
bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0
KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNv
cnJlY3Rpb24gJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgICAgICAgICBy
ZXN1bHQudHlwZS5zZXRDb3JyZWN0aW9uKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24g
PSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1
bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21p
bmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDU4ODM5NjIyZGYyODYwYmFmYjY0ZjRjNmZiZTVlMGUyMDhhNGFmZDguLmUyNzFkYzMzMDUzNjk5
OWFlOTY5NTI4MDY3ZjVkOGUzMDc1OWRkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
ZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6
U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggNjMzMDkwZjQ0ZDAwYTY4MDY4ZDhmZTU2ZmQyYzk1OWYzMTVhYTNiZC4uNzg1M2Y3ZTM4
ZTFhOTBlOTcyZjJiYWRkNWE1Mzc1NTkzYjYwNmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRX
b3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdy
YW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tp
bmdUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBAIC0xNDUs
NyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+
JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29u
c3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChX
ZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3Jy
ZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDEw
ZGIzODNjNmY1NTBiZTQ1Njc0OTVjYmQyZDcxNjc5OWUyZWNjYjMuLjdlNDkwYTY5MzZlZTJkYTRl
YmZmZDQzZmQ3MThlOTQ3YzAxYTI1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRN
YWMubW0KQEAgLTI0MSwxMCArMjQxLDMwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgdW5zaWdu
ZWQgdG9OU1R5cGVzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKK3sKKyAgICB1bnNp
Z25lZCByZXN1bHQgPSAwOworICAgIGlmICh0eXBlcy5pc1NwZWxsaW5nKCkpCisgICAgICAgIHJl
c3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAodHlwZXMuaXNHcmFt
bWFyKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAg
IGlmICh0eXBlcy5pc0xpbmsoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlw
ZUxpbms7CisgICAgaWYgKHR5cGVzLmlzUXVvdGUoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4
dENoZWNraW5nVHlwZVF1b3RlOworICAgIGlmICh0eXBlcy5pc0Rhc2goKSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgaWYgKHR5cGVzLmlzUmVwbGFjZW1l
bnQoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owor
ICAgIGlmICh0eXBlcy5pc0NvcnJlY3Rpb24oKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQg
bGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUu
Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRP
ZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7Cisg
ICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBh
cmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgdG9OU1R5cGVzKGNoZWNraW5nVHlwZXMpKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3Vs
dHMpKTsKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90210</attachid>
            <date>2011-04-19 09:08:17 -0700</date>
            <delta_ts>2011-04-19 17:48:47 -0700</delta_ts>
            <desc>A build fix</desc>
            <filename>bug-57088-20110419090816.patch</filename>
            <type>text/plain</type>
            <size>73096</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyNTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MmRlMGFiMjQ1NmQxMzNl
NGZhYjExNmZmOTE3YjI1MmFmZTc2OGQyLi5iODA0NTlkNmQwOWU2YmI4MDE0NDU5ZTMxYWU1YWUw
ZjVhMjA2ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorICAgICAgICAoV2Vi
Q29yZTo6QVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJD
b3JlOjp0b01hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1h
dGljYWxSYW5nZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OlRleHRDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjppc0dyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZXM6OmlzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
aXNRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6aXNEYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1JlcGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0NvcnJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldFNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzOjpzZXRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzOjpzZXRRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
czo6c2V0RGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0UmVw
bGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldENvcnJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRGbGFnKToKKwogMjAxMS0wNC0x
OSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0g
UkVHUkVTU0lPTig4NDE3Nik6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZXZlbnQtbGlzdGVu
ZXItZ2MuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBlZDNlYmE4
ZmIxMDU4OGY4NjhjMGZiYTJkN2JlMzYxNTQ2ZjRlZDNkLi5jOTEyMTYzYjgwNTlmOGY2MzI5MTAz
NzkxNTBjNDA3NjBhYmM3MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtNDg2
LDcgKzQ4Niw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKIAogICAgIC8vIGNoZWNrVGV4dE9m
UGFyYWdyYXBoIGlzIHRoZSBvbmx5IHNwZWxsaW5nL2dyYW1tYXIgY2hlY2tlciBpbXBsZW1lbnRl
ZCBpbiBXSzEgYW5kIFdLMgogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
Ci0gICAgY2hlY2tlci0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgY2hlY2tlci0+Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVj
a2luZ1R5cGVzOjpTcGVsbGluZyksIHJlc3VsdHMpOwogICAgIAogICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgTlNOdW1iZXIqIHRydWVWYWx1ZSA9IFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGExZGY3NGVj
YTgwYmRhNjFiZjQ2YjM3Yzk4Y2YyNTU4YWI1YmM5NzguLmY4YzAwOGEwZDc2Nzc3ODNjNzI0ZWFi
NTFhNzUyZWQ3MGJhNmViMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hl
Y2sgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlm
IChtX3NwZWxsQ2hlY2tlci0+Y2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0g
ICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IodGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IoTWFya1NwZWxsaW5nIHwgTWFya0dyYW1tYXIpLCBub2RlVG9DaGVjayk7CisgICAg
ICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVzb2x2ZVJlcGxhY2VkVGV4
dENoZWNraW5nVHlwZShUZXh0Q2hlY2tpbmdUeXBlcyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxp
bmcgfCBUZXh0Q2hlY2tpbmdUeXBlczo6R3JhbW1hcikpLCBub2RlVG9DaGVjayk7CiB9CiAKIHZv
aWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSkKQEAgLTE5NzQsMzEgKzE5
NzQsMjcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChj
b25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICNpZiBVU0UoVU5JRklFRF9URVhUX0NI
RUNLSU5HKQogICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24o
c2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwogCi0gICAgVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hl
Y2tpbmdPcHRpb25zID0gMDsKLSAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrU3BlbGxpbmc7Ci0KKyAg
ICBUZXh0Q2hlY2tpbmdUeXBlcyBjaGVja2luZ1R5cGVzOworICAgIGNoZWNraW5nVHlwZXMuc2V0
U3BlbGxpbmcoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSk7CiAjaWYgVVNFKEFV
VE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChkb1JlcGxhY2VtZW50IAotICAgICAg
ICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlzQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCi0gICAgICAgICAgICB8fCAoKHRleHRDaGVja2lu
Z09wdGlvbnMgJiBNYXJrU3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZCgpKSkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gUGVyZm9ybVJlcGxh
Y2VtZW50OworICAgIGNoZWNraW5nVHlwZXMuc2V0UmVwbGFjZW1lbnQoZG9SZXBsYWNlbWVudCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChpc0F1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8fCBjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoKSkpOwogI2VuZGlmCi0gICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgKE1hcmtTcGVsbGluZyB8IFBlcmZvcm1SZXBsYWNlbWVudCkpCisgICAgaWYgKCFjaGVja2lu
Z1R5cGVzLmlzU3BlbGxpbmcoKSAmJiAhY2hlY2tpbmdUeXBlcy5pc1JlcGxhY2VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrR3JhbW1hcjsKKyAgICBjaGVja2luZ1R5
cGVzLnNldEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpOwogCiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZCh3
b3JkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHdvcmRTdGFydCwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KSk7Ci0gICAgaWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJr
R3JhbW1hcikgeworICAgIGlmIChjaGVja2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAgICAgICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAg
ICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5n
T3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3Rl
ZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNoZWNraW5nVHlwZXMsIGFkamFjZW50V29y
ZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50V29y
ZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpKTsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhjaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgfQog
CiAjZWxzZQpAQCAtMjEwOSwxNyArMjEwNSwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIG1hcmtNaXNzcGVsbGlu
Z3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
IH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxp
bmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0ZXh0
Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5n
ZSkKIHsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIC8vIFRoZXJlIHNob3Vs
ZG4ndCBiZSBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGF0IHRoaXMgbW9tZW50LgogICAgIEFTU0VS
VCghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aGFzUGVuZGluZ0NvcnJlY3Rpb24oKSk7CiAKLSAgICBi
b29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxp
bmc7Ci0gICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBN
YXJrR3JhbW1hcjsKLSAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVj
a2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7Ci0gICAgYm9vbCBzaG91bGRTaG93Q29y
cmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7
Ci0gICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlv
blBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKKyAg
ICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMuaXNTcGVsbGlu
ZygpOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlz
R3JhbW1hcigpOworICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNr
aW5nT3B0aW9ucy5pc1JlcGxhY2VtZW50KCk7CisgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlv
blBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc0NvcnJlY3Rpb25QYW5lbCgpOworICAgIGJv
b2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8
fCB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlzQ29ycmVjdGlvbigpOwogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBi
b3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjE2NiwxMCArMjE2Miwx
MCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAgICAgICB0ZXh0Q2hl
Y2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0
ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENo
ZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKHRleHRDaGVja2lu
Z09wdGlvbnMpLCByZXN1bHRzKTsKICAgICBlbHNlCiAgICAgICAgIHRleHRDaGVja2VyKCktPmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKHNwZWxsaW5nUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHNw
ZWxsaW5nUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09w
dGlvbnMpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSh0ZXh0Q2hlY2tpbmdPcHRpb25z
KSwgcmVzdWx0cyk7CiAgICAgICAgIAogCiAgICAgLy8gSWYgdGhpcyBjaGVja2luZyBpcyBvbmx5
IGZvciBzaG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIHNob3VsZG4ndCBib3RoZXIgdG8gbWFy
ayBtaXNzcGVsbGluZ3MuCkBAIC0yMTkwLDEzICsyMTg2LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgIC8vIDIuIFJlc3VsdCBmYWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4K
ICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVlc3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1i
aWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2UsIHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAg
IC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVkIHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMg
dHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1Bh
cmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
PD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRh
cnkpIHsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiByZXN1bHQtPnR5cGUuaXNT
cGVsbGluZygpICYmIHJlc3VsdExvY2F0aW9uID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5n
U3RhcnQoKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1Jhbmdl
RW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgewogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFw
aC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIGlm
ICghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aXNTcGVsbGluZ01hcmtlckFsbG93ZWQobWlzc3BlbGxp
bmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBtaXNzcGVs
bGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRk
TWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5n
ZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBncmFt
bWFyUGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExl
bmd0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExv
Y2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3Vs
dC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJE
ZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CkBAIC0yMjA3LDE1ICsyMjAzLDE1
IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9
IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
Pj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCi0gICAgICAgICAgICAgICAgICAg
ICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKLSAgICAgICAgICAgICAg
ICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQotICAgICAgICAg
ICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gKLSAgICAg
ICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudAotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgJiYgKHJlc3VsdC0+dHlwZS5p
c0xpbmsoKQorICAgICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNRdW90ZSgp
CisgICAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5pc0Rhc2goKQorICAgICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNSZXBsYWNlbWVudCgpCisgICAgICAg
ICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpIHsKICAgICAg
ICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNo
IHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQg
dGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0
aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRT
aG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNw
ZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRleHRDaGVja2luZ1R5cGVD
b3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYm
IChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
fHwgIXJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9IHJlc3VsdC0+cmVwbGFj
ZW1lbnQubGVuZ3RoKCk7CkBAIC0yMjI5LDEzICsyMjI1LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZShy
YW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgICAgIC8vIGFkZGlu
ZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5
cGVkCi0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5r
ICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkgJiYgc2VsZWN0aW9uT2Zmc2V0
ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggKyAxKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmc7CiAKICAgICAgICAg
ICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4gYW4gYWxyZWFkeS1jb3JyZWN0ZWQgd29y
ZC4KLSAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpIHsK
ICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRvUmVwbGFj
ZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJr
ZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgICAgICAgICAgICAgIGlm
IChtYXJrZXJzLT5oYXNNYXJrZXJzKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpKSB7CkBAIC0yMjY1LDE0ICsyMjYxLDE0IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlv
bnMgdGV4dENoCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rKSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzTGluaygpKSB7CiAgICAgICAgICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rpb25Ub1JlcGxhY2Up
OwogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmIChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChD
cmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVw
bGFjZW1lbnQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYmIHNob3VsZElu
c2VydFRleHQocmVzdWx0LT5yZXBsYWNlbWVudCwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIEVkaXRv
ckluc2VydEFjdGlvblR5cGVkKSkgewotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgYXBwbHlDb21tYW5k
KFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVzdWx0
LT5yZXBsYWNlbWVudCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSk7CkBAIC0yMjkzLDcgKzIyODksNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNv
cnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQu
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29y
cmVjdGlvbikKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzQ29ycmVjdGlvbigp
KQogICAgICAgICAgICAgICAgICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5tYXJrQ29ycmVjdGlv
bihzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRM
ZW5ndGgpLCByZXBsYWNlZFN0cmluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIz
NDksOSArMjM0NSw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
cihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2lu
Z09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247Ci0gICAgaWYgKG1h
cmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hl
Y2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5cGVzIHRleHRD
aGVja2luZ09wdGlvbnMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZXM6OkNvcnJlY3Rpb24pOworICAgIHRleHRDaGVja2luZ09wdGlvbnMuc2V0R3JhbW1hciht
YXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAgICAgbWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVs
bGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFyU2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBSZWZQdHI8UmFuZ2U+IGZp
cnN0TWlzc3BlbGxpbmdSYW5nZTsKQEAgLTMyNDksMzggKzMyNDQsMTkgQEAgRmxvYXRSZWN0IEVk
aXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QKICAgICBy
ZXR1cm4gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOwogfSAg
ICAgICAgCiAKLVRleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1h
c2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQorVGV4dENoZWNr
aW5nVHlwZXMgRWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKGNvbnN0IFRl
eHRDaGVja2luZ1R5cGVzJiB0eXBlcykKIHsKLSAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9
IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmc7Ci0gICAgYm9vbCBzaG91bGRNYXJr
R3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKLSAgICBib29sIHNo
b3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgU2hvd0NvcnJl
Y3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNo
b3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBDaGVja0ZvckNvcnJl
Y3Rpb24pOwotCi0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7Ci0g
ICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwotICAgIGlmIChzaG91
bGRDaGVja0ZvckNvcnJlY3Rpb24pCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZUNvcnJlY3Rpb247Ci0KKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyByZXN1bHQgPSB0eXBl
czsKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgYm9vbCBzaG91bGRQ
ZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgUGVyZm9ybVJlcGxhY2Vt
ZW50OwotICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKLSAgICAgICAgaWYgKGlz
QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZUxpbms7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlUXVvdGU7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5
cGVEYXNoOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkp
Ci0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVu
dDsKLSAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgaWYgKHR5cGVzLmlzUmVwbGFjZW1lbnQoKSkgewor
ICAgICAgICByZXN1bHQuc2V0TGluayhpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkp
OworICAgICAgICByZXN1bHQuc2V0UXVvdGUoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXREYXNoKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXRSZXBsYWNlbWVudChpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXRDb3JyZWN0aW9u
KHR5cGVzLmlzU3BlbGxpbmcoKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQoKSk7CiAgICAgfQogI2VuZGlmCi0KLSAgICByZXR1cm4gY2hlY2tpbmdUeXBlczsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAppbmRleCAxMTA1Y2U5OTJhOTk5NjViNDM4YjgxMDVhN2Q2NGRkYTgyZjc0NDEwLi5m
NzAwZjM3MThjYjE1OWIwNTI2Y2RmZDYzOTE5YzljN2YwYTFjMjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKQEAgLTIyNCwxNSArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0JhZEdy
YW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24s
IGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rp
b24pOwogCi0gICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7Ci0gICAgICAgIE1hcmtT
cGVsbGluZyA9IDEgPDwgMCwKLSAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCi0gICAgICAg
IFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKLSAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5l
bCA9IDEgPDwgMywKLSAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9uID0gMSA8PCA0LAotICAgIH07
Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOwotCiAjaWYgVVNFKEFV
VE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpOwogICAg
IHZvaWQgbG93ZXJjYXNlV29yZCgpOwpAQCAtMjUyLDcgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogI2VuZGlmCiAKLSAgICB2
b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
T3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpOworICAg
IHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhjb25zdCBUZXh0
Q2hlY2tpbmdUeXBlcyYsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdl
KTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTQxNCw3ICs0MDUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCopOwogICAg
IHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBt
YXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29s
IGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0g
ICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNr
aW5nT3B0aW9ucyk7CisgICAgVGV4dENoZWNraW5nVHlwZXMgcmVzb2x2ZVJlcGxhY2VkVGV4dENo
ZWNraW5nVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYpOwogCiAgICAgdm9pZCBzZWxlY3RD
b21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYs
IGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuY3BwCmluZGV4IGZlZGNjMDc3M2U2ZTc5ODFmNmE5MDIzOTMxNjE2N2JiNzQ3ZWRiZTEuLmI2
MTczZWI4N2QxOTFhNzRiMTYxNmQ0YjVhNzAxZWFkZDk0YWUyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDEzIEBAIGJvb2wgU3BlbGxD
aGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiBub2RlICYm
IG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tp
bmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxD
aGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIG9wdGlv
bnMsIE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKGNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9k
ZSkpOwogCiAgICAgaWYgKCFpbml0UmVxdWVzdChub2RlKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5j
ZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CisgICAgbV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBvcHRpb25zLCBtX3JlcXVlc3RUZXh0KTsK
IH0KIAogc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJh
dG9yLCBpbnQgZGlzdGFuY2UpCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCBzdGF0aWMgYm9vbCBmb3J3
YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAg
ICByZXR1cm4gZmFsc2U7ICAgIAogfQogCi1zdGF0aWMgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGUgdG9NYXJrZXJUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlwZSkKK3N0YXRpYyBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSB0b01hcmtlclR5cGUoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIHR5
cGVzKQogewotICAgIGlmICh0eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZykKKyAgICBp
ZiAodHlwZXMuaXNTcGVsbGluZygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsaW5nOwotICAgIEFTU0VSVCh0eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKTsKKyAg
ICBBU1NFUlQodHlwZXMuaXNHcmFtbWFyKCkpOwogICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hcjsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0g
Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
cmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRzW2ld
LnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCisgICAgICAgIGlmICghcmVzdWx0c1tp
XS50eXBlLmlzU3BlbGxpbmcoKSAmJiAhcmVzdWx0c1tpXS50eXBlLmlzR3JhbW1hcigpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3Np
dGlvbiBiYWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggNGJjYjg5ZTU5ODVjZDFi
ZDNjNjJlYTliZmFkMDdkOWQ0Y2FlMWIzMy4uNDE2MzEzYjQwNGJkZmQ5OTg3M2JmOWYyNWYyODc1
YTYwMWY3YWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgpIGNvbnN0OwogICAgIGJvb2wgaXNW
YWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2FibGUoTm9kZSopIGNv
bnN0OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBO
b2RlKik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4dENoZWNraW5nVHlw
ZXMmLCBOb2RlKik7CiAgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCBj
Mzc3ZmU4YTYyMzgzM2VjZDE5ZmYzYTFhODU3YzMzOWI1M2UzN2EzLi4wNTEyZjg2YmUwZjlhNjI4
OTY5N2M4MTYxZGEwMGNjZDgzMzAzODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCB2b2lkIFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXI6OmNvcnJlY3Rpb25QYW5lbFRp
bWVyRmlyZWQoVGltZXI8U3BlbGxpbmdDb3JyZQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkp
OwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0
aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoRWRpdG9yOjpNYXJrU3BlbGxpbmcgfCBFZGl0b3I6
OlNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVja2luZ1R5cGVz
OjpTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpDb3JyZWN0aW9uUGFuZWwpLCBhZGphY2Vu
dFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOwogICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb246IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAz
OTEyYTQ5ZjRmZTk2N2Q3ZDViODExYjc5MjkyMjcwMzZiZjNmOGU3Li5kNDdmZWI4ZmJjZmE0YTJj
MzkxOWQ0Y2FiMzdiODE1MTRjMmE3YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yNzQsMTkgKzI3NCwyMCBAQCBTdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNr
R3JhbW1hciwgYgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRleCA9
IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgp
LCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdU
eXBlcyBvcHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgICAgICAgICAg
ICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmlu
Zy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgb3B0aW9ucywgcmVzdWx0
cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVz
dWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiAr
IHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC0+dHlwZS5pc1NwZWxsaW5nKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBj
dXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9
IGN1cnJlbnRFbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9uOwogICAgICAgICAg
ICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5n
KHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
ciAmJiByZXN1bHQtPmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQtPmxvY2F0
aW9uICsgcmVzdWx0LT5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUuaXNHcmFtbWFyKCkgJiYg
cmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiAr
IHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0g
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBm
aXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGlu
ZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQg
YmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5k
IGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtNTI0LDEyICs1MjUsMTQgQEAgVmVjdG9yPFN0
cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0
aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNr
aW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotICAgIG1f
Y2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4
dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVz
dWx0cyk7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25zKFRleHRDaGVja2luZ1R5cGVz
OjpTcGVsbGluZyk7CisgICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7CisgICAg
bV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50
ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBvcHRpb25zLCByZXN1bHRz
KTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkr
KykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRz
W2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVz
dWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNTcGVsbGluZygpICYm
IHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQt
Pmxlbmd0aCkpIHsKICAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFw
aC5jaGVja2luZ1N1YnN0cmluZygpOwogICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3Jk
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5nZXRHdWVz
c2VzRm9yV29yZChtaXNzcGVsbGVkV29yZCwgU3RyaW5nKCksIGd1ZXNzZXMpOwpAQCAtNTQ0LDcg
KzU0Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1p
c3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFRl
eHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgIGlmIChyZXN1
bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tp
bmdSYW5nZUNvdmVyZWRCeShyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKKyAg
ICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBwYXJhZ3JhcGguaXNDaGVja2lu
Z1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKSkgewogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7
IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZy
ZXN1bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3Ro
ID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IGU5OTcxYTQxMTU4OWRiM2U5OWJmYzUwZWQ2NWI1ZWZhN2RmZGMxMDQuLjQx
ZjA1OTQ0ODhjYjVjNTM2MWY1MGVhNjA5NDMyMzBjNjAzZTVjODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQxMSwxMSArNDExLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxH
cmFtbWFyRGV0YWlsPiYsIGludCosIGludCopIHsgfQogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9D
SEVDS0lORykKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNo
YXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNo
YXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29y
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBUZXh0
Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHsgfQogfTsKIAogY2xhc3MgRW1wdHlFZGl0
b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAppbmRleCBkMTZhZGUxNjQ2MGFkNzBmMzdl
YjllOGQ0MTRkZjYxZjY3Y2ZjOGQzLi44ZGYxODA5MTUxZmI5MGFjY2RmNzQxOGM4ZjY4YjJiYzkz
NTcyYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tl
ckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBHcmFtbWFyRGV0YWlsIHsKIH07CiAK
IHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewotICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsK
KyAgICBUZXh0Q2hlY2tpbmdUeXBlcyB0eXBlOwogICAgIGludCBsb2NhdGlvbjsKICAgICBpbnQg
bGVuZ3RoOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBkZXRhaWxzOwpAQCAtNjQsMTQgKzY0
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdy
YW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7CiAKICNpZiBVU0UoVU5J
RklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hl
Y2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGlu
dCBsZW5ndGgsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogCiAgICAgLy8gRm9yIHNwZWxsY2hlY2tlcnMg
dGhhdCBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgaXQncyBvZnRlbiBpbXBvcnRhbnQgdG8g
YmUgYWJsZSB0byBpZGVudGlmeSB0aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8KICAgICAvLyBwcm92
aWRlIG1vcmUgYWNjdXJhdGUgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4gQ2FsbGVyIGNhbiBwYXNz
IGluIG1vcmUgdGV4dCBpbiAiY29udGV4dCIgdG8gYWlkIHN1Y2ggc3BlbGxjaGVja2VycyBvbiBs
YW5ndWFnZQogICAgIC8vIGlkZW50aWZpY2F0aW9uLiBOb3JhbWxseSBpdCdzIHRoZSB0ZXh0IHN1
cnJvdW5kaW5nIHRoZSAid29yZCIgZm9yIHdoaWNoIHdlIGFyZSBnZXR0aW5nIGNvcnJlY3Rpb24g
c3VnZ2VzdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0
cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nl
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENo
ZWNrZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcmKSA9IDA7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBkMjA0
MGQ1ZWFmYmNmZmJlY2Q3ZWI1NjY5ZDU1ODMyMDkxMjgzOTMxLi44ZTNmODI3ZTE1N2RhNDVmMmFh
ZTNmNzlkNjM3OTVlMTkwYzhjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENoZWNraW5nLmgKQEAgLTQyLDE3ICs0Miw0NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQgMQogI2VuZGlmCiAKLWVu
dW0gVGV4dENoZWNraW5nVHlwZSB7Ci0gICAgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICAgID0g
MSA8PCAxLAotICAgIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICAgICA9IDEgPDwgMiwKLSAgICBU
ZXh0Q2hlY2tpbmdUeXBlTGluayAgICAgICAgPSAxIDw8IDUsCi0gICAgVGV4dENoZWNraW5nVHlw
ZVF1b3RlICAgICAgID0gMSA8PCA2LAotICAgIFRleHRDaGVja2luZ1R5cGVEYXNoICAgICAgICA9
IDEgPDwgNywKLSAgICBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPSAxIDw8IDgsCi0gICAg
VGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5Ci19Oworc3RydWN0IFRleHRDaGVj
a2luZ1R5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBTcGVsbGluZyAg
ICA9IDEgPDwgMSwKKyAgICAgICAgR3JhbW1hciAgICAgPSAxIDw8IDIsCisgICAgICAgIExpbmsg
ICAgICAgID0gMSA8PCA1LAorICAgICAgICBRdW90ZSAgICAgICA9IDEgPDwgNiwKKyAgICAgICAg
RGFzaCAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIFJlcGxhY2VtZW50ID0gMSA8PCA4LAorICAg
ICAgICBDb3JyZWN0aW9uICA9IDEgPDwgOSwKKyAgICAgICAgQ29ycmVjdGlvblBhbmVsICA9IDEg
PDwgMTAsCisgICAgfTsKKworICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1R5cGVzKHVuc2lnbmVk
IHZhbHVlID0gMCkgOiBtX3ZhbHVlKHZhbHVlKSB7fQorCisgICAgYm9vbCBpc1NwZWxsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9CisgICAgYm9vbCBpc0dyYW1tYXIo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgR3JhbW1hcjsgfQorICAgIGJvb2wgaXNMaW5rKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIExpbms7IH0KKyAgICBib29sIGlzUXVvdGUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlICYgUXVvdGU7IH0KKyAgICBib29sIGlzRGFzaCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgJiBEYXNoOyB9CisgICAgYm9vbCBpc1JlcGxhY2VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSAmIFJlcGxhY2VtZW50OyB9CisgICAgYm9vbCBpc0NvcnJlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvbjsgfQorICAgIGJvb2wgaXNDb3Jy
ZWN0aW9uUGFuZWwoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlvblBhbmVsOyB9
CisKKyAgICB2b2lkIHNldFNwZWxsaW5nKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIFNw
ZWxsaW5nKTsgfQorICAgIHZvaWQgc2V0R3JhbW1hcihib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFn
KG9uLCBHcmFtbWFyKTsgfQorICAgIHZvaWQgc2V0TGluayhib29sIG9uID0gdHJ1ZSkgeyBzZXRG
bGFnKG9uLCBMaW5rKTsgfQorICAgIHZvaWQgc2V0UXVvdGUoYm9vbCBvbiA9IHRydWUpIHsgc2V0
RmxhZyhvbiwgUXVvdGUpOyB9CisgICAgdm9pZCBzZXREYXNoKGJvb2wgb24gPSB0cnVlKSB7IHNl
dEZsYWcob24sIERhc2gpOyB9CisgICAgdm9pZCBzZXRSZXBsYWNlbWVudChib29sIG9uID0gdHJ1
ZSkgeyBzZXRGbGFnKG9uLCBSZXBsYWNlbWVudCk7IH0KKyAgICB2b2lkIHNldENvcnJlY3Rpb24o
Ym9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVjdGlvbik7IH0KKyAgICB2b2lkIHNl
dENvcnJlY3Rpb25QYW5lbChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBDb3JyZWN0aW9u
UGFuZWwpOyB9CiAKLXR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nVHlwZU1hc2s7CisgICAg
dW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBzZXRGbGFnKGJvb2wgb24sIHVuc2lnbmVkIHR5cGUpIHsgbV92YWx1ZSA9IG9uID8g
KG1fdmFsdWUgfCB0eXBlKSA6IChtX3ZhbHVlICYgfnR5cGUpOyB9CisKKyAgICB1bnNpZ25lZCBt
X3ZhbHVlOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRiZDlkNGM2
ZTU4NzAwMDM2Y2NmNTQ1OTZmNjdjYjZjYTM2MjQxYTUuLjc3MTQwYWRlMDk2Nzc1Y2RmN2UxNTYx
ODQ1YzUxZmJmNDRmNDk0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5n
OiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nVHlwZQorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVGV4
dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0NvcmVDaGVj
a2luZ1R5cGVzKToKKyAgICAgICAgKFdlYktpdDo6dG9Db3JlUmVzdWx0cyk6CisKIDIwMTEtMDQt
MTkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAxMTQxZWE0NDgzNjhkNDMzMTc5NzJlZDQ5MmM1NjRk
ODkyNmJmMjk2Li40MzhlOTYwOTU1NmE3YjgwOWFiYzgxNzc0YTNiMjkzMWRlOGFlMTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAt
ODcyLDcgKzg3Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3Ry
aW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdM
ZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIFRl
eHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIEVkaXRvckNsaWVu
dEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKQogICAg
ICAgICBtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0
KHRleHQsIG5ldyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5k
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApp
bmRleCAyZWJjNmVhNTgwNGIyNTNmYmU0MTYzODY3NDViOTg3MTE3YWFmZGU5Li5hMzcxYzcxMjU5
M2VmOGU4Njk1YjMzOTk0OWM0MjQ1YzUzMWVkODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBj
b25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNs
aWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBs
LmNwcAppbmRleCBmNWE2NjA0ZGJhNjc4NjNjNzZjOWY2OTBiNTEyNjA0OTcyZTFmN2JlLi42N2I0
ODg2OWI1Yjc5YzI5YmZlY2EzODdmYjA3MDQ2ZmFlOWQ5ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbklt
cGwuY3BwCkBAIC00MCwxMiArNDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVGV4dENoZWNraW5nVHlwZSB0b0NvcmVDaGVja2lu
Z1R5cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKK3N0YXRpYyBUZXh0Q2hl
Y2tpbmdUeXBlcyB0b0NvcmVDaGVja2luZ1R5cGVzKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJy
b3IgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yID09IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJy
b3JTcGVsbGluZykKLSAgICAgICAgcmV0dXJuIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAg
ICBBU1NFUlQoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvckdyYW1tYXIpOwot
ICAgIHJldHVybiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBUZXh0Q2hlY2tpbmdUeXBl
cyB0eXBlczsKKyAgICB0eXBlcy5zZXRTcGVsbGluZyhlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQ6OkVycm9yU3BlbGxpbmcpOworICAgIHR5cGVzLnNldEdyYW1tYXIoZXJyb3IgPT0gV2Vi
VGV4dENoZWNraW5nUmVzdWx0OjpFcnJvckdyYW1tYXIpOworICAgIEFTU0VSVCh0eXBlcy52YWx1
ZSgpKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQpAQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUgog
ICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgeyAKICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IGNvcmVSZXN1bHQ7Ci0gICAgICAgIGNvcmVSZXN1bHQudHlwZSA9IHRvQ29yZUNo
ZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9yKTsKKyAgICAgICAgY29yZVJlc3VsdC50eXBlID0g
dG9Db3JlQ2hlY2tpbmdUeXBlcyhyZXN1bHRzW2ldLmVycm9yKTsKICAgICAgICAgY29yZVJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdHNbaV0ucG9zaXRpb247CiAgICAgICAgIGNvcmVSZXN1bHQubGVu
Z3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7CiAgICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZChjb3Jl
UmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0Cmlu
ZGV4IDlhNDc2Y2NhY2E4NzRiYzdhMDliZTAyM2Q0ZTcwMDMxYTU2ODY4Y2MuLjdjNGM3YmNhZDcz
NDhmYzQ3NzM4ZjlmNGQzNmEyYzAyZTliZTU4ZjAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRp
dG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVj
a2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDQtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NDE1NS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKaW5kZXgg
NTZiMzMwMDJlYWExN2E4NWI5YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYS4uZGQ0Y2NlMWJmMmFjYzlm
Y2RhNGVjN2U3MTNhM2U4Y2I5MDE4NGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7
IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNzI4NjNkN2Uy
ZmEyNTE0MTIzY2FjYzkwMjBiNDc5NDU1MDYwNjFiMC4uM2E4M2I3YTg4ZGY5YzgzOGY0ZjU2Njdi
Zjg5YzAzMzIyNzgyOGZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpU
ZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5
cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5o
OgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50
RW5jaGFudC5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50LmgKaW5kZXggNWQ5M2MwNzIxNmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1
MmRkYS4uNjlmYWU2NDRlM2UyMWMzMjhiMGNhMjUyODMxYjZjZDZmOWRmZmJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNo
YW50LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENoZWNrZXJDbGllbnRF
bmNoYW50IDogcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFy
T2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJM
ZW5ndGgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RG
OjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIGd1ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJikge30K
IAogICAgICAgICB2b2lkIHVwZGF0ZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShjb25zdCBjaGFyKik7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGZyZWVTcGVsbENoZWNraW5nTGFuZ3VhZ2UoZ3BvaW50ZXIs
IGdwb2ludGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNmFlM2RhMTliZTYwOWRiNjU0MmVm
OGIwZjgyYTg3OTZmOGRkZmM5ZC4uODAyM2QyMGIwMDYxYzY5MDFiMWNhMzQ4MmRjNTkxYmZhMGNl
ZWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNr
aW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAx
MS0wNC0wNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKaW5kZXggY2MyMWZjYjg2ZjI5MTk0
ZWEzZTgxNGZhMDU3M2Q1ZTY0Y2NiYTE5NS4uNjMzNzQ5ZjQzNTYwMGU1ODE1ODQxZmQyMDgwMjNh
OTA4ZmIyNDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEVkaXRv
ckNsaWVudEhhaWt1IDogcHVibGljIEVkaXRvckNsaWVudCwgcHVibGljIFRleHRDaGVja2VyQ2xp
ZW50IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmlu
ZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikge30KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcmKSB7fQog
ICAgICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJu
IHRoaXM7IH0KIAogICAgICAgICBib29sIGlzRWRpdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDJlYzgwYWU5NWZkODVjYmMwMzg1YjJjYjIzYjA1NDdlNmQ4MmI4YzQuLmJjNWZiZmEz
ZjAzY2MzMGE5ZmUzNWFkODFiMTA4YjdiNmMwZTBmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0
b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0
aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChjb3JlKToKKyAgICAgICAgKHRvTlNUeXBlcyk6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxD
aGVja1Jlc3BvbmRlciBpbml0V2l0aFNlbmRlcjpXZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJD
b3JlOjpyZXN1bHRzOl0pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMTggIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwZTUyMTAyMzY4MmJhMTIxOTI0
M2UxZGRjMzBjYjNkZGUyMzAwN2U3Li5jNTEyM2I2NmRiNjJhYjNhYWMxYTk5MDZmNWI0MTk2ZTcx
MzViZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBt
aXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNv
bnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRl
dGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMs
IFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAg
IHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBXVEY6OlZlY3RvcjxX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVh
bCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmlu
ZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3Jl
OjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCmluZGV4IDIzMDBiZTE4MjkzM2RiZTAyODRjNGQ2YTA2NDdiOGQzYjYzM2Zh
NDMuLmE2MWYzZTc5NWJkOTQxY2U0ZGM0NWZlNWEzOWFhMDFhN2VkODczYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAg
LTc3OCw3ICs3NzgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFZlY3RvcgogfQogCiAjaWYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi1z
dGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jl
c3VsdHMsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMpCitzdGF0aWMgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIGNvbnN0
IFRleHRDaGVja2luZ1R5cGVzJiBjaGVja2luZ1R5cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKQEAgLTc4NywxNiArNzg3LDE2IEBAIHN0YXRpYyBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4
dENoZWNraW5nVHlwCiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2lu
Y29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGgg
PiAwKTsKLSAgICAgICAgaWYgKE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nID09IHJlc3VsdFR5
cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkg
eworICAgICAgICBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAm
JiBjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hciA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVj
a2luZ1R5cGVHcmFtbWFyKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXIgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJh
eSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0YWlsc107Ci0gICAgICAgICAg
ICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICAgICAgcmVz
dWx0LnR5cGUuc2V0R3JhbW1hcigpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVz
dWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFu
Z2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWls
IGluIGRldGFpbHMpIHsKQEAgLTgxNiwzNyArODE2LDM3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5n
VHlwCiAgICAgICAgICAgICAgICAgcmVzdWx0LmRldGFpbHMuYXBwZW5kKGRldGFpbCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9
IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChOU1RleHRDaGVja2luZ1R5cGVMaW5rID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBl
cy5pc0xpbmsoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgICAgICAg
ICByZXN1bHQudHlwZS5zZXRMaW5rKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5n
UmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSBy
ZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90
ZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1
bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNRdW90ZSgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlUXVvdGU7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRRdW90ZSgpOwogICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlRGFzaCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBO
U1RleHRDaGVja2luZ1R5cGVEYXNoKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNr
aW5nVHlwZURhc2ggPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzRGFzaCgpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNl
dERhc2goKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAg
ICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVu
dFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9
IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYg
MCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkgewor
ICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3Vs
dFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc1JlcGxhY2VtZW50KCkpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFJlcGxh
Y2VtZW50KCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAg
ICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1l
bnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYg
MCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRU
eXBlICYmIGNoZWNraW5nVHlwZXMuaXNDb3JyZWN0aW9uKCkpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlv
bigpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAg
ICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3Ry
aW5nXTsKQEAgLTg1NiwxMyArODU2LDM0IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwCiAKICAg
ICByZXR1cm4gcmVzdWx0czsKIH0KKworc3RhdGljIHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBU
ZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAg
ICBpZiAodHlwZXMuaXNTcGVsbGluZygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHR5cGVzLmlzR3JhbW1hcigpKQorICAgICAgICByZXN1
bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBpZiAodHlwZXMuaXNMaW5rKCkp
CisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworICAgIGlmICh0eXBl
cy5pc1F1b3RlKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsK
KyAgICBpZiAodHlwZXMuaXNEYXNoKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2lu
Z1R5cGVEYXNoOworICAgIGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpCisgICAgICAgIHJlc3Vs
dCB8PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICBpZiAodHlwZXMuaXNDb3Jy
ZWN0aW9uKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKICNlbmRpZgogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRl
eHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCiAgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5n
dGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyBy
YW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdU
eXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwg
d29yZENvdW50Ok5VTExdOworICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nIHJhbmdl
Ok5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOih0b05TVHlwZXMoY2hl
Y2tpbmdUeXBlcyl8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBo
eTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAgICBy
ZXN1bHRzID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCkBA
IC05NjMsMTUgKzk4NCwxNSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKQogewogICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogX3NlbmRlcjsKICAgICBp
bnQgX3NlcXVlbmNlOwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIF90eXBlczsKKyAgICBUZXh0
Q2hlY2tpbmdUeXBlcyBfdHlwZXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwog
fQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNl
cXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNr
KXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aFNlbmRlcjoo
V2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBl
czooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMpdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVz
dWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRv
clNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVs
bENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCistIChp
ZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6
KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMpdHlwZXMgcmVz
dWx0czooTlNBcnJheSopcmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAg
aWYgKCFzZWxmKQpAQCAtOTkxLDE1ICsxMDEyLDIwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiBAZW5kCiAjZW5kaWYKIAotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2Vu
ZGVyLCBpbnQgc2VxdWVuY2UsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5n
VHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVl
bmNlLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywgY29u
c3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VS
YW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAvLyBTdG9yZXMgaXQgYXMgYSBwcmltaXRpdmUg
dmFsdWUgdG8gYWxsb3cgdGhlIGJsb2NrIHRvIGNvcHkgaXQuCisgICAgdW5zaWduZWQgY2hlY2tp
bmdUeXBlc1ZhbHVlID0gY2hlY2tpbmdUeXBlcy52YWx1ZSgpOwogICAgIE5TUnVuTG9vcCogY3Vy
cmVudExvb3AgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKICAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6dGV4dCByYW5n
ZTpyYW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5c3RlbVR5cGVzIG9wdGlvbnM6MCBpblNw
ZWxsRG9jdW1lbnRXaXRoVGFnOjAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBOU0FycmF5KiByZXN1bHRzLCBO
U09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CiAgICAgICAgICAgICBbY3VycmVudExvb3AgcGVy
Zm9ybVNlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtKSAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBhbGxvY10g
aW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNlIHR5cGVzOmNoZWNraW5nVHlw
ZXMgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBhbGxvY10K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aFNl
bmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlczpXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlcyhjaGVja2luZ1R5cGVzVmFsdWUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2Rlczpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9vcE1vZGVdXTsKICAgICAgICAg
fV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODIyNTkyMTMzMDM0NGRlYWRmYzIyYjcyMTgz
MWViMjQ2YWFmMDVhZC4uMjUwYWNmZGNhNTZmZGFmMmE5ODg1NzQ1YTQ1OTAxZTY2ODc3YjA2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOCAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBVbnJldmll
d2VkIGJ1aWxkZml4IGFmdGVyIHI4NDE3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCAwZDhlOGM2Nzk4NGU5YWQxZjdmMmM1NmI2
YzBkMWNmZDY0YmUyMWYwLi5kMDBiNjQ1MzllZDBjZDNlZGJkY2QxOGVkYzY2OGViOTRmZDdhN2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYp
IHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcm
KSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1
cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCBhN2IxNWZiOTBmNzNmMWE2YjliMzk1YmI5NTkyN2I1OGMzYWYzM2I3Li5lYzQwMjdiOGY4
NjNjMzZlNzA5ZDg4Y2UzZTUxMDE3ZDkwZjk2NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9y
aW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
VGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KToKKwogMjAxMS0wNC0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHRoZSB0d28gY29tbWFuZHMgdGhhdCBtYWtlIGVuLmxwcm9qIGFuZCBj
b3B5IExvY2FsaXphYmxlLnN0cmluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGQ0NTZjYzliMDc5MmM4NGFmMTk0NWVl
NzdjYjdjNzlkM2JlMjI5ZDcuLjVhZjM1NDU4MmJkMmE0MTY4YzZjZWNiYzFjMGFhNzE2ZWUzMGNl
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0
aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggYTViOWFjYjM0ZWE0NTk0NTRmZTg4
ZjcyZjBkYWRkYTJiNzc0MTFjNS4uN2Q0M2Y4NmRiYjZiZGI2NzVlOGQ1ZmU0NjdiMjFlYmU4MDZl
M2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNr
aW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oOgorICAgICAgICAoV2Vi
S2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDEx
LTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAppbmRleCBhMmIyM2I0ODUzNmE5OGM5
YTUwODdiNDEyZjhiZTRhM2E1YmRmN2VmLi5jMjM1YzJjYmQyMDFkMzA4OGI4YzdkMTUyMzA2ZTM2
ZjU0YzE3ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vl
c3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hl
Y2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggOTA4
ZTM1NmU3NmMxMDhlOGRjYjQwMDI1NjA2ZDQxYTI1ZTVhMGNmOS4uYjFjOTVmMDMxYWQyM2QyNTY0
MmZlM2M5MDFjM2E2NGVjOTFmNGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wNC0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRv
cjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tp
bmdUeXBlCisgICAgICAgIAorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyk6CisKIDIwMTEtMDQtMTQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeGVzIGZvciB3eE1TVyBh
bmQgd3ggMi45LjEuMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9FZGl0b3JDbGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRv
ckNsaWVudFd4LmgKaW5kZXggNjVlZTQ5MzA1OTM5YzI3ZjViMDM2MTY1YTc2YzU1ZGRmNGQ1MDcy
OC4uOGJmMDQ5ODlmMjk1ODQ3MmZlNmU2NjBlMTk3NjE5MGJjYmRmZjY0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKKysrIGIvU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKQEAgLTExNCw3ICsx
MTQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6
OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVu
dCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMzg4Y2Q3ZDcwMjk0MjkxOWM0NTIwYzRlOTkyNmY5NTgyNmFiZGJmYi4uZmMzYjE1YzQwMDNh
MjMyZmNiNzAwMmU0MDFlZTE4ZDRiY2M4YTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRp
dG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVj
a2luZ1R5cGUKKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OnRvTlNUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorCiAyMDExLTA0LTE5ICBBbmRyZWFzIEtsaW5nICA8YW5k
cmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCAxYjliNGY1ODBlZDNlMjI0YWQ3YjIzMDdiNTIxN2U5NzhlYjVjYWIyLi45OTU1NjgzMDk1ZWNk
YjA4ZTViMzk2NTQyOTEzZmNiNzQyZWRiYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00NTQsMTAgKzQ1NCwyNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+IHsKICAgICB9CiB9
OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQorICAgIHsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIodHlwZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmIHR5cGVzKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgdmFsdWU7CisgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgdHlwZXMgPSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyh2YWx1ZSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0JiByZXN1bHQpCiAgICAgewotICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHJl
c3VsdC50eXBlKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC50eXBlKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKTsKICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlSW50MzIocmVzdWx0Lmxlbmd0aCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShy
ZXN1bHQuZGV0YWlscyk7CkBAIC00NjYsNyArNDgyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKIAogICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdCYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVt
KHJlc3VsdC50eXBlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZUludDMyKHJlc3VsdC5sb2NhdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCAyOTQ5
M2Y5Yzg5OGM5YjdjMTcwZTJkOWFiYjUwYWIwZDI0NjQyYjE5Li4zNGNhYTM1Mzk0ODM5OTNiMjdm
NGJkYjQ0NWY3YTZmNmFhZjcxNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTI0NCwxNCArMjQ0LDE0IEBAIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNw
ZWxsRG9jdW1lCiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKICAgICAg
ICAgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgKGNoZWNr
aW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFNwZWxsaW5n
KCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
ICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBn
cmFtbWFyRGV0YWlsc107Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0R3JhbW1hcigpOwogICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKQEAgLTI3MywzNSArMjcz
LDM1IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRP
ZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tp
bmdUeXBlTGluayAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUxpbmspKSB7
CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVz
dWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgICAgIHJlc3VsdC50eXBl
LnNldExpbmsoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
ICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBh
YnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYg
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFF1b3RlKCk7
CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAg
ICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmdd
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlm
IChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgKGNoZWNraW5nVHlwZXMg
JiBOU1RleHRDaGVja2luZ1R5cGVEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZURh
c2g7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAgICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1l
bnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5T
VGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hl
Y2tpbmdUeXBlUmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFj
ZW1lbnQ7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRSZXBsYWNlbWVudCgpOwogICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlvbigpOwog
ICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAg
ICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAg
cmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA1ODgzOTYyMmRmMjg2MGJhZmI2NGY0YzZmYmU1
ZTBlMjA4YTRhZmQ4Li5lMjcxZGMzMzA1MzY5OTlhZTk2OTUyODA2N2Y1ZDhlMzA3NTlkZDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
Y29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDYzMzA5MGY0NGQwMGE2ODA2OGQ4ZmU1
NmZkMmM5NTlmMzE1YWEzYmQuLjc4NTNmN2UzOGUxYTkwZTk3MmYyYmFkZDVhNTM3NTU5M2I2MDZi
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdv
cmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNr
R3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6
OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1h
ckxlbmd0aCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzJiwgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBk
ZXRhaWwpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRX
b3JkKGNvbnN0IFN0cmluZyYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3Ry
aW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0
aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmlydHVh
bCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1l
bnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVu
dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbQppbmRleCAxN2ZkNWZlZDMxMzBlOTdlZWJmMmQzOGZiYmMxNzQx
YWNlNjdmYjZhLi40YTAwYWMzZDRhNTBhZDZlNjYwMjA2OGQ1Y2JjOTcyY2M5YWVmNWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
ZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0yMzgsMTAgKzIzOCwzMCBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQorc3RhdGljIHVuc2lnbmVkIHRvTlNUeXBlcyhjb25zdCBUZXh0Q2hlY2tp
bmdUeXBlcyYgdHlwZXMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAodHlw
ZXMuaXNTcGVsbGluZygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmc7CisgICAgaWYgKHR5cGVzLmlzR3JhbW1hcigpKQorICAgICAgICByZXN1bHQgfD0gTlNU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBpZiAodHlwZXMuaXNMaW5rKCkpCisgICAgICAg
IHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworICAgIGlmICh0eXBlcy5pc1F1b3Rl
KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICBpZiAo
dHlwZXMuaXNEYXNoKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVEYXNo
OworICAgIGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1Rl
eHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICBpZiAodHlwZXMuaXNDb3JyZWN0aW9uKCkp
CisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHdvdWxkbid0
IGhhdmUgdG8gY29weSB0aGUgdGV4dCBoZXJlLgotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0
aCksIGNoZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBh
cmFncmFwaDo6UmVwbHkocmVzdWx0cykpOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCks
IHRvTlNUeXBlcyhjaGVja2luZ1R5cGVzKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNr
VGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90281</attachid>
            <date>2011-04-19 17:48:50 -0700</date>
            <delta_ts>2011-05-13 05:22:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110419174849.patch</filename>
            <type>text/plain</type>
            <size>73065</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzMDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YTJkYzQyZTk5Mzg2YWQ2
NDk2NzBkZGIwNDBlMTY0MTg4ODM3MzAyLi5kZGJhODcyNWZjM2QyNWY4YjkzNTc5MjgyZjgyY2Nl
NzMwMzA1ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDQtMDYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorICAgICAgICAoV2Vi
Q29yZTo6QVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJD
b3JlOjp0b01hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1h
dGljYWxSYW5nZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OlRleHRDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjppc0dyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZXM6OmlzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
aXNRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6aXNEYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1JlcGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0NvcnJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldFNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzOjpzZXRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzOjpzZXRRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
czo6c2V0RGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0UmVw
bGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldENvcnJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRGbGFnKToKKwogMjAxMS0wNC0x
OSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBlZDNlYmE4
ZmIxMDU4OGY4NjhjMGZiYTJkN2JlMzYxNTQ2ZjRlZDNkLi5jOTEyMTYzYjgwNTlmOGY2MzI5MTAz
NzkxNTBjNDA3NjBhYmM3MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtNDg2
LDcgKzQ4Niw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKIAogICAgIC8vIGNoZWNrVGV4dE9m
UGFyYWdyYXBoIGlzIHRoZSBvbmx5IHNwZWxsaW5nL2dyYW1tYXIgY2hlY2tlciBpbXBsZW1lbnRl
ZCBpbiBXSzEgYW5kIFdLMgogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
Ci0gICAgY2hlY2tlci0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgY2hlY2tlci0+Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVj
a2luZ1R5cGVzOjpTcGVsbGluZyksIHJlc3VsdHMpOwogICAgIAogICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgTlNOdW1iZXIqIHRydWVWYWx1ZSA9IFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGExZGY3NGVj
YTgwYmRhNjFiZjQ2YjM3Yzk4Y2YyNTU4YWI1YmM5NzguLjJkMzRjOTY4M2Y5YTA0YzE3ZjNhMjFj
OWIwZjRiMmY2OWQ2MjVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hl
Y2sgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlm
IChtX3NwZWxsQ2hlY2tlci0+Y2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0g
ICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IodGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IoTWFya1NwZWxsaW5nIHwgTWFya0dyYW1tYXIpLCBub2RlVG9DaGVjayk7CisgICAg
ICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVzb2x2ZVJlcGxhY2VkVGV4
dENoZWNraW5nVHlwZShUZXh0Q2hlY2tpbmdUeXBlcyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxp
bmcgfCBUZXh0Q2hlY2tpbmdUeXBlczo6R3JhbW1hcikpLCBub2RlVG9DaGVjayk7CiB9CiAKIHZv
aWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSkKQEAgLTE5NzQsMzEgKzE5
NzQsMjcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChj
b25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICNpZiBVU0UoVU5JRklFRF9URVhUX0NI
RUNLSU5HKQogICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24o
c2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwogCi0gICAgVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hl
Y2tpbmdPcHRpb25zID0gMDsKLSAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrU3BlbGxpbmc7Ci0KKyAg
ICBUZXh0Q2hlY2tpbmdUeXBlcyBjaGVja2luZ1R5cGVzOworICAgIGNoZWNraW5nVHlwZXMuc2V0
U3BlbGxpbmcoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSk7CiAjaWYgVVNFKEFV
VE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChkb1JlcGxhY2VtZW50IAotICAgICAg
ICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlzQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCi0gICAgICAgICAgICB8fCAoKHRleHRDaGVja2lu
Z09wdGlvbnMgJiBNYXJrU3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZCgpKSkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gUGVyZm9ybVJlcGxh
Y2VtZW50OworICAgIGNoZWNraW5nVHlwZXMuc2V0UmVwbGFjZW1lbnQoZG9SZXBsYWNlbWVudCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChpc0F1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8fCBjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoKSkpOwogI2VuZGlmCi0gICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgKE1hcmtTcGVsbGluZyB8IFBlcmZvcm1SZXBsYWNlbWVudCkpCisgICAgaWYgKCFjaGVja2lu
Z1R5cGVzLmlzU3BlbGxpbmcoKSAmJiAhY2hlY2tpbmdUeXBlcy5pc1JlcGxhY2VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrR3JhbW1hcjsKKyAgICBjaGVja2luZ1R5
cGVzLnNldEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpOwogCiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZCh3
b3JkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHdvcmRTdGFydCwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KSk7Ci0gICAgaWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJr
R3JhbW1hcikgeworICAgIGlmIChjaGVja2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAgICAgICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAg
ICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5n
T3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3Rl
ZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNoZWNraW5nVHlwZXMsIGFkamFjZW50V29y
ZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50V29y
ZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpKTsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhjaGVja2luZ1R5cGVzLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgfQog
CiAjZWxzZQpAQCAtMjEwOSwxNyArMjEwNSwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIG1hcmtNaXNzcGVsbGlu
Z3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
IH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxp
bmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0ZXh0
Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5n
ZSkKIHsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIC8vIFRoZXJlIHNob3Vs
ZG4ndCBiZSBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGF0IHRoaXMgbW9tZW50LgogICAgIEFTU0VS
VCghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aGFzUGVuZGluZ0NvcnJlY3Rpb24oKSk7CiAKLSAgICBi
b29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxp
bmc7Ci0gICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBN
YXJrR3JhbW1hcjsKLSAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVj
a2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7Ci0gICAgYm9vbCBzaG91bGRTaG93Q29y
cmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7
Ci0gICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlv
blBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKKyAg
ICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMuaXNTcGVsbGlu
ZygpOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlz
R3JhbW1hcigpOworICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNr
aW5nT3B0aW9ucy5pc1JlcGxhY2VtZW50KCk7CisgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlv
blBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc0NvcnJlY3Rpb25QYW5lbCgpOworICAgIGJv
b2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8
fCB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlzQ29ycmVjdGlvbigpOwogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBi
b3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjE2NiwxMCArMjE2Miwx
MCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQogICAgICAgICB0ZXh0Q2hl
Y2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0
ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENo
ZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKHRleHRDaGVja2lu
Z09wdGlvbnMpLCByZXN1bHRzKTsKICAgICBlbHNlCiAgICAgICAgIHRleHRDaGVja2VyKCktPmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKHNwZWxsaW5nUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHNw
ZWxsaW5nUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09w
dGlvbnMpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSh0ZXh0Q2hlY2tpbmdPcHRpb25z
KSwgcmVzdWx0cyk7CiAgICAgICAgIAogCiAgICAgLy8gSWYgdGhpcyBjaGVja2luZyBpcyBvbmx5
IGZvciBzaG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIHNob3VsZG4ndCBib3RoZXIgdG8gbWFy
ayBtaXNzcGVsbGluZ3MuCkBAIC0yMTkwLDEzICsyMTg2LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgIC8vIDIuIFJlc3VsdCBmYWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4K
ICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVlc3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1i
aWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2UsIHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAg
IC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVkIHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMg
dHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1Bh
cmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
PD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRh
cnkpIHsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiByZXN1bHQtPnR5cGUuaXNT
cGVsbGluZygpICYmIHJlc3VsdExvY2F0aW9uID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5n
U3RhcnQoKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1Jhbmdl
RW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgewogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFw
aC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIGlm
ICghbV9zcGVsbGluZ0NvcnJlY3Rvci0+aXNTcGVsbGluZ01hcmtlckFsbG93ZWQobWlzc3BlbGxp
bmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBtaXNzcGVs
bGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRk
TWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5n
ZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBncmFt
bWFyUGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExl
bmd0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExv
Y2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3Vs
dC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJE
ZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CkBAIC0yMjA3LDE1ICsyMjAzLDE1
IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9
IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
Pj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCi0gICAgICAgICAgICAgICAgICAg
ICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKLSAgICAgICAgICAgICAg
ICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQotICAgICAgICAg
ICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gKLSAgICAg
ICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudAotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgJiYgKHJlc3VsdC0+dHlwZS5p
c0xpbmsoKQorICAgICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNRdW90ZSgp
CisgICAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5pc0Rhc2goKQorICAgICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNSZXBsYWNlbWVudCgpCisgICAgICAg
ICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpIHsKICAgICAg
ICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNo
IHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQg
dGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0
aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRT
aG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNw
ZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRleHRDaGVja2luZ1R5cGVD
b3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYm
IChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
fHwgIXJlc3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9IHJlc3VsdC0+cmVwbGFj
ZW1lbnQubGVuZ3RoKCk7CkBAIC0yMjI5LDEzICsyMjI1LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZShy
YW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgICAgIC8vIGFkZGlu
ZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5
cGVkCi0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5r
ICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkgJiYgc2VsZWN0aW9uT2Zmc2V0
ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggKyAxKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmc7CiAKICAgICAgICAg
ICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4gYW4gYWxyZWFkeS1jb3JyZWN0ZWQgd29y
ZC4KLSAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNDb3JyZWN0aW9uKCkpIHsK
ICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRvUmVwbGFj
ZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJr
ZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgICAgICAgICAgICAgIGlm
IChtYXJrZXJzLT5oYXNNYXJrZXJzKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpKSB7CkBAIC0yMjY1LDE0ICsyMjYxLDE0IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlv
bnMgdGV4dENoCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rKSB7
CisgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzTGluaygpKSB7CiAgICAgICAgICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rpb25Ub1JlcGxhY2Up
OwogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmIChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChD
cmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVw
bGFjZW1lbnQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYmIHNob3VsZElu
c2VydFRleHQocmVzdWx0LT5yZXBsYWNlbWVudCwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIEVkaXRv
ckluc2VydEFjdGlvblR5cGVkKSkgewotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgYXBwbHlDb21tYW5k
KFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVzdWx0
LT5yZXBsYWNlbWVudCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSk7CkBAIC0yMjkzLDcgKzIyODksNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNv
cnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQu
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29y
cmVjdGlvbikKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzQ29ycmVjdGlvbigp
KQogICAgICAgICAgICAgICAgICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5tYXJrQ29ycmVjdGlv
bihzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRM
ZW5ndGgpLCByZXBsYWNlZFN0cmluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIz
NDksOSArMjM0NSw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
cihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2lu
Z09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247Ci0gICAgaWYgKG1h
cmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hl
Y2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5cGVzIHRleHRD
aGVja2luZ09wdGlvbnMoVGV4dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZXM6OkNvcnJlY3Rpb24pOworICAgIHRleHRDaGVja2luZ09wdGlvbnMuc2V0R3JhbW1hciht
YXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAgICAgbWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVs
bGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFyU2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBSZWZQdHI8UmFuZ2U+IGZp
cnN0TWlzc3BlbGxpbmdSYW5nZTsKQEAgLTMyNDksMzggKzMyNDQsMjIgQEAgRmxvYXRSZWN0IEVk
aXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QKICAgICBy
ZXR1cm4gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOwogfSAg
ICAgICAgCiAKLVRleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1h
c2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQorVGV4dENoZWNr
aW5nVHlwZXMgRWRpdG9yOjpyZXNvbHZlUmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKGNvbnN0IFRl
eHRDaGVja2luZ1R5cGVzJiB0eXBlcykKIHsKLSAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9
IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmc7Ci0gICAgYm9vbCBzaG91bGRNYXJr
R3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKLSAgICBib29sIHNo
b3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgU2hvd0NvcnJl
Y3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNo
b3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBDaGVja0ZvckNvcnJl
Y3Rpb24pOwotCi0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7Ci0g
ICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwotICAgIGlmIChzaG91
bGRDaGVja0ZvckNvcnJlY3Rpb24pCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZUNvcnJlY3Rpb247CisgICAgVGV4dENoZWNraW5nVHlwZXMgcmVzdWx0ID0gdHlwZXM7
CisgICAgcmVzdWx0LnNldENvcnJlY3Rpb24odHlwZXMuaXNDb3JyZWN0aW9uKCkgfHwgdHlwZXMu
aXNDb3JyZWN0aW9uUGFuZWwoKSk7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRp
b25zICYgUGVyZm9ybVJlcGxhY2VtZW50OwotICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1l
bnQpIHsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKLSAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUxpbms7Ci0gICAgICAg
IGlmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAg
Y2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7Ci0gICAgICAgIGlmIChpc0F1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVEYXNoOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVSZXBsYWNlbWVudDsKLSAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAm
JiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNo
ZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgaWYgKHR5cGVz
LmlzUmVwbGFjZW1lbnQoKSkgeworICAgICAgICByZXN1bHQuc2V0TGluayhpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCkpOworICAgICAgICByZXN1bHQuc2V0UXVvdGUoaXNBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXREYXNoKGlz
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJlc3VsdC5zZXRS
ZXBsYWNlbWVudChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSk7CisgICAgICAg
IHJlc3VsdC5zZXRDb3JyZWN0aW9uKHR5cGVzLmlzU3BlbGxpbmcoKSAmJiBpc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
Y2hlY2tpbmdUeXBlczsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAxMTA1Y2U5OTJhOTk5NjViNDM4Yjgx
MDVhN2Q2NGRkYTgyZjc0NDEwLi5mNzAwZjM3MThjYjE1OWIwNTI2Y2RmZDYzOTE5YzljN2YwYTFj
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTIyNCwxNSArMjI0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAg
IHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOwogCi0gICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25G
bGFncyB7Ci0gICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKLSAgICAgICAgTWFya0dyYW1t
YXIgPSAxIDw8IDEsCi0gICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKLSAgICAg
ICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKLSAgICAgICAgQ2hlY2tGb3JDb3JyZWN0
aW9uID0gMSA8PCA0LAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdP
cHRpb25zOwotCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQg
dXBwZXJjYXNlV29yZCgpOwogICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpOwpAQCAtMjUyLDcgKzI0
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bigpOwogI2VuZGlmCiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyhjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIFJhbmdlKiBzcGVsbGluZ1Jhbmdl
LCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKQEAgLTQx
NCw3ICs0MDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCopOwogICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0
TWlzc3BlbGxpbmdSYW5nZSk7Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5n
VHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7CisgICAgVGV4dENoZWNraW5nVHlwZXMg
cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYp
OwogCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IGZlZGNjMDc3M2U2ZTc5ODFmNmE5MDIz
OTMxNjE2N2JiNzQ3ZWRiZTEuLmI2MTczZWI4N2QxOTFhNzRiMTYxNmQ0YjVhNzAxZWFkZDk0YWUy
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyAr
MTAwLDEzIEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25z
dAogICAgIHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxD
aGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9k
ZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoY29uc3QgVGV4
dENoZWNraW5nVHlwZXMmIG9wdGlvbnMsIE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKGNhbkNo
ZWNrQXN5bmNocm9ub3VzbHkobm9kZSkpOwogCiAgICAgaWYgKCFpbml0UmVxdWVzdChub2RlKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0
aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CisgICAgbV9jbGll
bnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBvcHRp
b25zLCBtX3JlcXVlc3RUZXh0KTsKIH0KIAogc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBv
c2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCkBAIC0xMzEsMTEgKzEzMSwx
MSBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0
b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4gZmFsc2U7ICAgIAogfQogCi1zdGF0aWMgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdG9NYXJrZXJUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlw
ZSkKK3N0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0b01hcmtlclR5cGUoY29uc3Qg
VGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQogewotICAgIGlmICh0eXBlID09IFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZykKKyAgICBpZiAodHlwZXMuaXNTcGVsbGluZygpKQogICAgICAgICByZXR1
cm4gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOwotICAgIEFTU0VSVCh0eXBlID09IFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyKTsKKyAgICBBU1NFUlQodHlwZXMuaXNHcmFtbWFyKCkpOwogICAgIHJl
dHVybiBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1CiAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3Np
dGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG1fcmVxdWVz
dE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCisg
ICAgICAgIGlmICghcmVzdWx0c1tpXS50eXBlLmlzU3BlbGxpbmcoKSAmJiAhcmVzdWx0c1tpXS50
eXBlLmlzR3JhbW1hcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8g
YXZvaWQgbW92aW5nIHRoZSBwb3NpdGlvbiBiYWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiBy
ZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
aW5kZXggNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTliZmFkMDdkOWQ0Y2FlMWIzMy4uNDE2MzEzYjQw
NGJkZmQ5OTg3M2JmOWYyNWYyODc1YTYwMWY3YWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgp
IGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wg
aXNDaGVja2FibGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRl
eHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3Io
Y29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBOb2RlKik7CiAgICAgdm9pZCBkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25D
b250cm9sbGVyLmNwcAppbmRleCBjMzc3ZmU4YTYyMzgzM2VjZDE5ZmYzYTFhODU3YzMzOWI1M2Uz
N2EzLi4wNTEyZjg2YmUwZjlhNjI4OTY5N2M4MTYxZGEwMGNjZDgzMzAzODEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xs
ZXI6OmNvcnJlY3Rpb25QYW5lbFRpbWVyRmlyZWQoVGltZXI8U3BlbGxpbmdDb3JyZQogICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5hZmZp
bml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29yZChzdGFydCwg
TGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50
V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9mcmFtZS0+ZWRp
dG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoRWRpdG9yOjpN
YXJrU3BlbGxpbmcgfCBFZGl0b3I6OlNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigp
LT5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5
cGVzKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpDb3Jy
ZWN0aW9uUGFuZWwpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDAp
OwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQ
YW5lbFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCAzOTEyYTQ5ZjRmZTk2N2Q3ZDViODExYjc5MjkyMjcwMzZiZjNm
OGU3Li5kNDdmZWI4ZmJjZmE0YTJjMzkxOWQ0Y2FiMzdiODE1MTRjMmE3YjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yNzQsMTkgKzI3
NCwyMCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8gKFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIo
KS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFy
YWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKKyAgICAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRpb25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVs
bGluZyk7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXRHcmFtbWFyKGNoZWNrR3JhbW1hcik7
CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFy
YWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5n
dGgoKSwgb3B0aW9ucywgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0
c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQg
JiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc1NwZWxsaW5nKCkgJiYg
cmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlv
biArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+
PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQt
PmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJh
Z3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiByZXN1bHQtPmxvY2F0aW9uIDwgY3VycmVudEVuZE9m
ZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPiBjdXJyZW50U3RhcnRP
ZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQt
PnR5cGUuaXNHcmFtbWFyKCkgJiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQg
JiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYm
IHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBj
YW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUgbWln
aHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3
ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtNTI0LDEy
ICs1MjUsMTQgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9y
TWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNz
ZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIFRleHRD
aGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOwotICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBh
cmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgo
KSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyBvcHRp
b25zKFRleHRDaGVja2luZ1R5cGVzOjpTcGVsbGluZyk7CisgICAgb3B0aW9ucy5zZXRHcmFtbWFy
KGNoZWNrR3JhbW1hcik7CisgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9m
UGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0
aCgpLCBvcHRpb25zLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1
bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMo
cmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQt
PnR5cGUuaXNTcGVsbGluZygpICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1
bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKICAgICAgICAgICAgIFN0cmluZyBtaXNz
cGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOwogICAgICAgICAgICAg
QVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50LT50
ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVsbGVkV29yZCwgU3RyaW5nKCks
IGd1ZXNzZXMpOwpAQCAtNTQ0LDcgKzU0Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2lu
Z0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAg
ICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsr
KSB7CiAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNb
aV07Ci0gICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIg
JiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQtPmxvY2F0aW9uLCBy
ZXN1bHQtPmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAm
JiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC0+bG9jYXRpb24sIHJl
c3VsdC0+bGVuZ3RoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1t
YXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGU5OTcxYTQxMTU4OWRiM2U5OWJmYzUw
ZWQ2NWI1ZWZhN2RmZGMxMDQuLjQxZjA1OTQ0ODhjYjVjNTM2MWY1MGVhNjA5NDMyMzBjNjAzZTVj
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQxMSwxMSArNDExLDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGludCopIHsgfQogCiAj
aWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBWZWN0
b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhTcGVsbENoZWNrZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYpIHsgfQog
fTsKIAogY2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAppbmRl
eCBkMTZhZGUxNjQ2MGFkNzBmMzdlYjllOGQ0MTRkZjYxZjY3Y2ZjOGQzLi44ZGYxODA5MTUxZmI5
MGFjY2RmNzQxOGM4ZjY4YjJiYzkzNTcyYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBH
cmFtbWFyRGV0YWlsIHsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewotICAgIFRl
eHRDaGVja2luZ1R5cGUgdHlwZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlcyB0eXBlOwogICAgIGlu
dCBsb2NhdGlvbjsKICAgICBpbnQgbGVuZ3RoOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBk
ZXRhaWxzOwpAQCAtNjQsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1h
ckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3Ro
KSA9IDA7CiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9p
ZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4
dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogCiAgICAg
Ly8gRm9yIHNwZWxsY2hlY2tlcnMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgaXQn
cyBvZnRlbiBpbXBvcnRhbnQgdG8gYmUgYWJsZSB0byBpZGVudGlmeSB0aGUgbGFuZ3VhZ2UgaW4g
b3JkZXIgdG8KICAgICAvLyBwcm92aWRlIG1vcmUgYWNjdXJhdGUgY29ycmVjdGlvbiBzdWdnZXN0
aW9ucy4gQ2FsbGVyIGNhbiBwYXNzIGluIG1vcmUgdGV4dCBpbiAiY29udGV4dCIgdG8gYWlkIHN1
Y2ggc3BlbGxjaGVja2VycyBvbiBsYW5ndWFnZQogICAgIC8vIGlkZW50aWZpY2F0aW9uLiBOb3Jh
bWxseSBpdCdzIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSAid29yZCIgZm9yIHdoaWNoIHdlIGFy
ZSBnZXR0aW5nIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBT
dHJpbmcmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAppbmRleCBkMjA0MGQ1ZWFmYmNmZmJlY2Q3ZWI1NjY5ZDU1ODMyMDkxMjgzOTMx
Li44ZTNmODI3ZTE1N2RhNDVmMmFhZTNmNzlkNjM3OTVlMTkwYzhjMjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTQyLDE3ICs0Miw0NiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFD
RU1FTlQgMQogI2VuZGlmCiAKLWVudW0gVGV4dENoZWNraW5nVHlwZSB7Ci0gICAgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nICAgID0gMSA8PCAxLAotICAgIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
ICAgICA9IDEgPDwgMiwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTGluayAgICAgICAgPSAxIDw8IDUs
Ci0gICAgVGV4dENoZWNraW5nVHlwZVF1b3RlICAgICAgID0gMSA8PCA2LAotICAgIFRleHRDaGVj
a2luZ1R5cGVEYXNoICAgICAgICA9IDEgPDwgNywKLSAgICBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFj
ZW1lbnQgPSAxIDw8IDgsCi0gICAgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5
Ci19Oworc3RydWN0IFRleHRDaGVja2luZ1R5cGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUg
eworICAgICAgICBTcGVsbGluZyAgICA9IDEgPDwgMSwKKyAgICAgICAgR3JhbW1hciAgICAgPSAx
IDw8IDIsCisgICAgICAgIExpbmsgICAgICAgID0gMSA8PCA1LAorICAgICAgICBRdW90ZSAgICAg
ICA9IDEgPDwgNiwKKyAgICAgICAgRGFzaCAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIFJlcGxh
Y2VtZW50ID0gMSA8PCA4LAorICAgICAgICBDb3JyZWN0aW9uICA9IDEgPDwgOSwKKyAgICAgICAg
Q29ycmVjdGlvblBhbmVsICA9IDEgPDwgMTAsCisgICAgfTsKKworICAgIGV4cGxpY2l0IFRleHRD
aGVja2luZ1R5cGVzKHVuc2lnbmVkIHZhbHVlID0gMCkgOiBtX3ZhbHVlKHZhbHVlKSB7fQorCisg
ICAgYm9vbCBpc1NwZWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFNwZWxsaW5nOyB9
CisgICAgYm9vbCBpc0dyYW1tYXIoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgR3JhbW1hcjsg
fQorICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIExpbms7IH0KKyAg
ICBib29sIGlzUXVvdGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgUXVvdGU7IH0KKyAgICBi
b29sIGlzRGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgJiBEYXNoOyB9CisgICAgYm9vbCBp
c1JlcGxhY2VtZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIFJlcGxhY2VtZW50OyB9Cisg
ICAgYm9vbCBpc0NvcnJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYgQ29ycmVjdGlv
bjsgfQorICAgIGJvb2wgaXNDb3JyZWN0aW9uUGFuZWwoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ICYgQ29ycmVjdGlvblBhbmVsOyB9CisKKyAgICB2b2lkIHNldFNwZWxsaW5nKGJvb2wgb24gPSB0
cnVlKSB7IHNldEZsYWcob24sIFNwZWxsaW5nKTsgfQorICAgIHZvaWQgc2V0R3JhbW1hcihib29s
IG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBHcmFtbWFyKTsgfQorICAgIHZvaWQgc2V0TGluayhi
b29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBMaW5rKTsgfQorICAgIHZvaWQgc2V0UXVvdGUo
Ym9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgUXVvdGUpOyB9CisgICAgdm9pZCBzZXREYXNo
KGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIERhc2gpOyB9CisgICAgdm9pZCBzZXRSZXBs
YWNlbWVudChib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBSZXBsYWNlbWVudCk7IH0KKyAg
ICB2b2lkIHNldENvcnJlY3Rpb24oYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgQ29ycmVj
dGlvbik7IH0KKyAgICB2b2lkIHNldENvcnJlY3Rpb25QYW5lbChib29sIG9uID0gdHJ1ZSkgeyBz
ZXRGbGFnKG9uLCBDb3JyZWN0aW9uUGFuZWwpOyB9CiAKLXR5cGVkZWYgdW5zaWduZWQgVGV4dENo
ZWNraW5nVHlwZU1hc2s7CisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRGbGFnKGJvb2wgb24sIHVuc2lnbmVkIHR5
cGUpIHsgbV92YWx1ZSA9IG9uID8gKG1fdmFsdWUgfCB0eXBlKSA6IChtX3ZhbHVlICYgfnR5cGUp
OyB9CisKKyAgICB1bnNpZ25lZCBtX3ZhbHVlOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGRjZTdiZjk2YzUzMjkzNDJkMWFkNWYyYmIzODYzNDllMmRjYzEwYjIuLmM5
ZmM2MTZkNTU2NmRmZjk5M2Q2NzVmZTM4MWEyNGQ2ZmEwZTIyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4
CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogc3JjL0VkaXRv
ckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoK
KyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b0NvcmVDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYktpdDo6dG9Db3Jl
UmVzdWx0cyk6CisKIDIwMTEtMDQtMTkgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAxMTQxZWE0NDgzNjhkNDMz
MTc5NzJlZDQ5MmM1NjRkODkyNmJmMjk2Li40MzhlOTYwOTU1NmE3YjgwOWFiYzgxNzc0YTNiMjkz
MWRlOGFlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcApAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAg
ICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGll
bnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50
IGlkZW50aWZpZXIsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmIHRleHQpCit2
b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tl
ciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZXMmLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVj
a0NsaWVudCgpKQogICAgICAgICBtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+cmVxdWVz
dENoZWNraW5nT2ZUZXh0KHRleHQsIG5ldyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChp
ZGVudGlmaWVyLCBzZW5kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuaAppbmRleCAyZWJjNmVhNTgwNGIyNTNmYmU0MTYzODY3NDViOTg3MTE3YWFm
ZGU5Li5hMzcxYzcxMjU5M2VmOGU4Njk1YjMzOTk0OWM0MjQ1YzUzMWVkODA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5w
dXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ss
IGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcAppbmRleCBmNWE2NjA0ZGJhNjc4NjNjNzZjOWY2OTBiNTEyNjA0
OTcyZTFmN2JlLi42N2I0ODg2OWI1Yjc5YzI5YmZlY2EzODdmYjA3MDQ2ZmFlOWQ5ODNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuY3BwCkBAIC00MCwxMiArNDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVGV4dENoZWNraW5nVHlw
ZSB0b0NvcmVDaGVja2luZ1R5cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikK
K3N0YXRpYyBUZXh0Q2hlY2tpbmdUeXBlcyB0b0NvcmVDaGVja2luZ1R5cGVzKFdlYlRleHRDaGVj
a2luZ1Jlc3VsdDo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yID09IFdlYlRleHRDaGVj
a2luZ1Jlc3VsdDo6RXJyb3JTcGVsbGluZykKLSAgICAgICAgcmV0dXJuIFRleHRDaGVja2luZ1R5
cGVTcGVsbGluZzsKLSAgICBBU1NFUlQoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpF
cnJvckdyYW1tYXIpOwotICAgIHJldHVybiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICBU
ZXh0Q2hlY2tpbmdUeXBlcyB0eXBlczsKKyAgICB0eXBlcy5zZXRTcGVsbGluZyhlcnJvciA9PSBX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmcpOworICAgIHR5cGVzLnNldEdyYW1t
YXIoZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvckdyYW1tYXIpOworICAgIEFT
U0VSVCh0eXBlcy52YWx1ZSgpKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIHN0YXRpYyBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2Vi
VGV4dENoZWNraW5nUgogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRz
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgeyAKICAg
ICAgICAgVGV4dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7Ci0gICAgICAgIGNvcmVSZXN1bHQu
dHlwZSA9IHRvQ29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9yKTsKKyAgICAgICAgY29y
ZVJlc3VsdC50eXBlID0gdG9Db3JlQ2hlY2tpbmdUeXBlcyhyZXN1bHRzW2ldLmVycm9yKTsKICAg
ICAgICAgY29yZVJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdHNbaV0ucG9zaXRpb247CiAgICAgICAg
IGNvcmVSZXN1bHQubGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7CiAgICAgICAgIGNvcmVSZXN1
bHRzLmFwcGVuZChjb3JlUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA3NTUKbmV3
IG1vZGUgMTAwNjQ0CmluZGV4IGFhYzgyOThkMDJiMzY0MTBiMzBmMjg4MTU0Yjc4ZGNiNTRiNGRm
NTEuLmJjMTU1NDMwNjMyYjg1M2IzMWU0NjMwN2YyNTBlZmYzZGZmNTMyZWQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBS
ZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDQtMTkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZp
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgK
aW5kZXggNTZiMzMwMDJlYWExN2E4NWI5YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYS4uZGQ0Y2NlMWJm
MmFjYzlmY2RhNGVjN2U3MTNhM2U4Y2I5MDE4NGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKQEAgLTExNCw3ICsxMTQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmlu
ZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBndWVz
c2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBX
VEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNjVk
ZmNjODAwY2Q2NTg1MGQwM2RmOGQwN2ZhOGExMTVlMzQ4OTIyMy4uZmQ2MTM4OTk5YmM5ODFlMzg1
Nzg5Y2M1Yjk0NjEwOTIwMzdjMjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRp
dG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVj
a2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5j
aGFudC5oOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudEVuY2hhbnQuaAppbmRleCA1ZDkzYzA3MjE2ZDk5NWJmZTM2Y2FmYWRkOTkwYzBh
NzgyZjUyZGRhLi42OWZhZTY0NGUzZTIxYzMyOGIwY2EyNTI4MzFiNmNkNmY5ZGZmYmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVu
dEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBUZXh0Q2hlY2tlckNs
aWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewogICAgICAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxs
ZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja0dy
YW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3Jh
bW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25z
dCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNvbnN0IGNo
YXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9p
bnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA2YWUzZGExOWJlNjA5ZGI2
NTQyZWY4YjBmODJhODc5NmY4ZGRmYzlkLi44MDIzZDIwYjAwNjFjNjkwMWIxY2EzNDgyZGM1OTFi
ZmEwY2VlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0
LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0
Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgor
CiAyMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAppbmRleCBjYzIxZmNiODZm
MjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1Li42MzM3NDlmNDM1NjAwZTU4MTU4NDFmZDIw
ODAyM2E5MDhmYjI0MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3Mg
RWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4dENoZWNr
ZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVz
c2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
LCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7fQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYp
IHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyBy
ZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNTEzOTczNDgzNzMzYjJjM2YwMGNiN2Y3NDA4NjMwZGJiN2MzYTg2ZC4uYjA2
YTkwZTViZTNlOTBjNmE5NWU1OGExMDdhYzU5ZTBkZGM4NzIyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBS
ZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAodG9OU1R5cGVzKToKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoLVtXZWJFZGl0b3JT
cGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVyOldlYkNvcmU6OnNlcXVlbmNlOnR5cGVz
OldlYkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOSAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFu
ZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggMGU1MjEwMjM2ODJiYTEyMTkyNDNlMWRkYzMwY2IzZGRlMjMwMDdlNy4uYzUxMjNiNjZkYjYy
YWIzYWFjMWE5OTA2ZjViNDE5NmU3MTM1YmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGlu
Z0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9p
ZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVj
dG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzayBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVzJiwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOwpA
QCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0Zv
cldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0
LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dD
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAyMzAwYmUxODI5MzNkYmUw
Mjg0YzRkNmEwNjQ3YjhkM2I2MzNmYTQzLi5hNjFmM2U3OTViZDk0MWNlNGRjNDVmZTVhMzlhYTAx
YTdlZDg3M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBW
ZWN0b3IKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQotc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNv
cmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2lu
Z1R5cGVzKQorc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAq
aW5jb21pbmdSZXN1bHRzLCBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcykK
IHsKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogCkBAIC03ODcsMTYg
Kzc4NywxNiBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5
ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogICAgICAgICBOU1RleHRDaGVja2lu
Z1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKICAgICAgICAg
QVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICBBU1NF
UlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgIGlmIChOU1RleHRDaGVja2luZ1R5
cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRD
aGVja2luZ1R5cGVTcGVsbGluZykpIHsKKyAgICAgICAgaWYgKE5TVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdUeXBlcy5pc1NwZWxsaW5nKCkpIHsKICAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICAgICAgICAgIHJlc3VsdC50eXBl
LnNldFNwZWxsaW5nKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2Ug
aWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVj
a2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyID09IHJlc3VsdFR5cGUgJiYgY2hlY2tpbmdU
eXBlcy5pc0dyYW1tYXIoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3Vs
dDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1h
ckRldGFpbHNdOwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hcjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldEdyYW1tYXIoKTsKICAgICAgICAgICAg
IHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVz
dWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CkBAIC04MTYsMzcgKzgxNiwzNyBA
QCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWlu
Z1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cAogICAgICAgICAgICAgICAgIHJlc3VsdC5kZXRhaWxz
LmFwcGVuZChkZXRhaWwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVMaW5rID09
IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUxp
bmspKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlTGluayA9PSByZXN1
bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNMaW5rKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVj
a2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGVMaW5rOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0TGluaygpOwogICAgICAgICAg
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlUXVvdGUgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hl
Y2tpbmdUeXBlUXVvdGUgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzUXVvdGUoKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAgICAgICAgcmVzdWx0LnR5
cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBs
YWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAg
ICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0gcmVzdWx0VHlwZSAmJiAw
ICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVEYXNoID09IHJlc3VsdFR5cGUgJiYgY2hlY2tp
bmdUeXBlcy5pc0Rhc2goKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3Vs
dDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAg
ICAgICAgICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRp
b24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBy
ZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5j
b21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2lu
Z1R5cGVSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5
cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNSZXBsYWNlbWVu
dCgpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgICAgICAg
ICByZXN1bHQudHlwZS5zZXRSZXBsYWNlbWVudCgpOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbiA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2lu
Z1R5cGVDb3JyZWN0aW9uKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlw
ZUNvcnJlY3Rpb24gPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzQ29ycmVjdGlvbigp
KSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAgICAgIHJl
c3VsdC50eXBlLnNldENvcnJlY3Rpb24oKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3Vs
dFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CkBAIC04NTYsMTMgKzg1NiwzNCBAQCBzdGF0aWMg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMs
IFRleHRDaGVja2luZ1R5cAogCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CisKK3N0YXRpYyB1bnNp
Z25lZCB0b05TVHlwZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQoreworICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CisgICAgaWYgKHR5cGVzLmlzU3BlbGxpbmcoKSkKKyAgICAgICAg
cmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGlmICh0eXBlcy5pc0dy
YW1tYXIoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Cisg
ICAgaWYgKHR5cGVzLmlzTGluaygpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdU
eXBlTGluazsKKyAgICBpZiAodHlwZXMuaXNRdW90ZSgpKQorICAgICAgICByZXN1bHQgfD0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgaWYgKHR5cGVzLmlzRGFzaCgpKQorICAgICAgICBy
ZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICBpZiAodHlwZXMuaXNSZXBsYWNl
bWVudCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7
CisgICAgaWYgKHR5cGVzLmlzQ29ycmVjdGlvbigpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAjZW5kaWYK
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29u
c3QgVGV4dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0g
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNo
YXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNBcnJheSAq
aW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNo
ZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVu
Z3RoXSkgdHlwZXM6KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkp
IG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKKyAgICBOU0FycmF5ICppbmNv
bWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tT
dHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhd
KSB0eXBlczoodG9OU1R5cGVzKGNoZWNraW5nVHlwZXMpfE5TVGV4dENoZWNraW5nVHlwZU9ydGhv
Z3JhcGh5KSBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07CiAgICAgW3RleHRT
dHJpbmcgcmVsZWFzZV07CiAgICAgcmVzdWx0cyA9IGNvcmUoaW5jb21pbmdSZXN1bHRzLCBjaGVj
a2luZ1R5cGVzKTsKICNlbmRpZgpAQCAtOTYzLDE1ICs5ODQsMTUgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqIF9zZW5kZXI7CiAgICAgaW50IF9zZXF1ZW5jZTsKLSAgICBUZXh0Q2hlY2tpbmdUeXBl
TWFzayBfdHlwZXM7CisgICAgVGV4dENoZWNraW5nVHlwZXMgX3R5cGVzOwogICAgIFJldGFpblB0
cjxOU0FycmF5PiBfcmVzdWx0czsKIH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpT
cGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOwor
LSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVl
bmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzKXR5cGVz
IHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CiAtICh2b2lkKXBlcmZvcm07CiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyCi0tIChpZClpbml0V2l0
aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1
ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czoo
TlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVzKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTk5MSwxNSArMTAxMiwyMCBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogQGVuZAogI2Vu
ZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZXMmIGNoZWNraW5nVHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBO
U1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgLy8gU3Rv
cmVzIGl0IGFzIGEgcHJpbWl0aXZlIHZhbHVlIHRvIGFsbG93IHRoZSBibG9jayB0byBjb3B5IGl0
LgorICAgIHVuc2lnbmVkIGNoZWNraW5nVHlwZXNWYWx1ZSA9IGNoZWNraW5nVHlwZXMudmFsdWUo
KTsKICAgICBOU1J1bkxvb3AqIGN1cnJlbnRMb29wID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9v
cF07CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNUZXh0Q2hlY2tpbmdBbGxTeXN0
ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRhZzowIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdl
ciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdlcikgewogICAgICAg
ICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybSkgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxs
Q2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1
ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxs
Q2hlY2tSZXNwb25kZXIgYWxsb2NdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM6
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMoY2hlY2tpbmdUeXBlc1ZhbHVlKSAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czpyZXN1
bHRzXSBhdXRvcmVsZWFzZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnQ6bmlsIG9yZGVyOjAgbW9kZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRGVmYXVsdFJ1
bkxvb3BNb2RlXV07CiAgICAgICAgIH1dOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDk3ZDY0
OGRlYzJhNzY2ZTBhNzYwYmVhNjQ5MTMzYjlmOTQ5NGQ0OWEuLmZmOGUwM2I5NGY0OTkyOWE3NWRk
MDVmYWFkMmRmNzRjNzhlODk5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6
OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5n
VHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisK
IDIwMTEtMDQtMTkgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCAwZDhlOGM2Nzk4NGU5
YWQxZjdmMmM1NmI2YzBkMWNmZDY0YmUyMWYwLi5kMDBiNjQ1MzllZDBjZDNlZGJkY2QxOGVkYzY2
OGViOTRmZDdhN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYg
Y29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBj
b25zdCBTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVj
a2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCAyMWIwNGM3YTMyNzI4YjQ0YzA0NmE1ZDIzYmExODcyYWI3NTQ3OWFj
Li5kNWJjMWFkYmVjODUxYzY5YmQzNzE3ODlkNWJjNDQ1MzFmNzA2Mjg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAg
ICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCBkNDU2Y2M5YjA3OTJjODRhZjE5NDVlZTc3Y2I3Yzc5ZDNiZTIyOWQ3Li41YWYzNTQ1ODJiZDJh
NDE2OGM2Y2VjYmMxYzBhYTcxNmVlMzBjZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENo
ZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmlu
ZGV4IGY1MjU3YjZiNjBmNGU2NWFiOWM0NTlkNDUyMTQ3MGVhMTg3ZjBhMmIuLjBkODNiZGZkYmVm
MmU0Y2MyZWZjNWY5YzY2ZjA0MjcyNjkzNWUzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFj
dG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdp
dGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5oCmluZGV4IGEyYjIzYjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3ZWYuLmMy
MzVjMmNiZDIwMWQzMDg4YjhjN2QxNTIzMDZlMzZmNTRjMTdkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JX
b3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA5MDhlMzU2ZTc2YzEwOGU4ZGNiNDAwMjU2MDZkNDFh
MjVlNWEwY2Y5Li5iMWM5NWYwMzFhZDIzZDI1NjQyZmUzYzkwMWMzYTY0ZWM5MWY0ZjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTA2ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4
OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3Vs
ZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKyAgICAgICAgCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50V3g6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNC0xNCAgS2V2aW4g
T2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2
aWV3ZWQgYnVpbGQgZml4ZXMgZm9yIHd4TVNXIGFuZCB3eCAyLjkuMS4xLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmggYi9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAppbmRleCA2NWVlNDkzMDU5
MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUwNzI4Li44YmYwNDk4OWYyOTU4NDcyZmU2ZTY2MGUx
OTc2MTkwYmNiZGZmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RWRpdG9yQ2xpZW50V3guaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJikge30K
ICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRo
aXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNDUzYWI1NTE5MjViZTg1N2RhZTdiMTBj
YjlmYTY2MmY3NTc3NWE1Li41Y2Y4MGUxM2I1MTBiYmRmMmZlODQxMmE3OWE2NjUwNjMzZTFlYzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMDYgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3
MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hv
dWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dENo
ZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6dG9OU1R5cGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisKIDIw
MTEtMDQtMTkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDFiOWI0ZjU4MGVkM2UyMjRhZDdiMjMwN2I1MjE3
ZTk3OGViNWNhYjIuLjk5NTU2ODMwOTVlY2RiMDhlNWIzOTY1NDI5MTNmY2I3NDJlZGJhNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQ1
NCwxMCArNDU0LDI2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhbW1hckRldGFpbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlcyYgdHlwZXMpCisgICAgeworICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMih0eXBlcy52
YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCisgICAgeworICAg
ICAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0eXBlcyA9IFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkKICAgICB7Ci0gICAg
ICAgIGVuY29kZXItPmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUocmVzdWx0LnR5cGUpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1bHQu
bG9jYXRpb24pOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihyZXN1bHQubGVuZ3RoKTsK
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC5kZXRhaWxzKTsKQEAgLTQ2Niw3ICs0ODIs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4gewogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiAgICAgewotICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocmVzdWx0LnR5cGUpKQorICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShyZXN1bHQudHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Rl
eHRDaGVja2VyTWFjLm1tCmluZGV4IDI5NDkzZjljODk4YzliN2MxNzBlMmQ5YWJiNTBhYjBkMjQ2
NDJiMTkuLjM0Y2FhMzUzOTQ4Mzk5M2IyN2Y0YmRiNDQ1ZjdhNmY2YWFmNzE2OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMjQ0LDE0
ICsyNDQsMTQgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgQVNTRVJUKHJlc3Vs
dFJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVTcGVsbGluZyAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAg
ICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAgICAg
ICAgcmVzdWx0LnR5cGUuc2V0U3BlbGxpbmcoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFy
ICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpk
ZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgICAgICByZXN1bHQu
dHlwZS5zZXRHcmFtbWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4g
ZGV0YWlscykgewpAQCAtMjczLDM1ICsyNzMsMzUgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIChjaGVja2luZ1R5cGVzICYg
TlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVMaW5r
OworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0TGluaygpOwogICAgICAgICAgICAgcmVzdWx0
LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVu
Z3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50
ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5n
VHlwZVF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAgICAg
ICAgcmVzdWx0LnR5cGUuc2V0UXVvdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3Vs
dFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdU
eXBlRGFzaCAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZURhc2gpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNl
dERhc2goKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAg
ICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVu
dFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9
IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYg
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBl
LnNldFJlcGxhY2VtZW50KCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQg
cmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsK
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb24gJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgICAgICAgICByZXN1
bHQudHlwZS5zZXRDb3JyZWN0aW9uKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDE5
N2EwYWIzNzhjM2JkMmJjY2RkYWIyNDEzOTdhYmY1MDRmNDk1YzUuLjM4ZDM1OWM1MDdhNTc5YmE4
MzEyNGMwYmVhNjBkMDI0MzRlMGI1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ1
MCw3ICs0NTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShi
b29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3Ry
aW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNjMzMDkwZjQ0ZDAwYTY4MDY4ZDhmZTU2ZmQyYzk1OWYzMTVhYTNiZC4uNzg1M2Y3ZTM4ZTFh
OTBlOTcyZjJiYWRkNWE1Mzc1NTkzYjYwNmI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0x
MzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVj
dFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3Jk
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBp
bnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1t
YXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAg
IHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmd0aCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBWZWN0b3I8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29u
c3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBn
dWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYp
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0
aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDE3ZmQ1
ZmVkMzEzMGU5N2VlYmYyZDM4ZmJiYzE3NDFhY2U2N2ZiNmEuLjRhMDBhYzNkNGE1MGFkNmU2NjAy
MDY4ZDVjYmM5NzJjYzlhZWY1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMu
bW0KQEAgLTIzOCwxMCArMjM4LDMwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4
dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBl
cywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgdW5zaWduZWQg
dG9OU1R5cGVzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKK3sKKyAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOworICAgIGlmICh0eXBlcy5pc1NwZWxsaW5nKCkpCisgICAgICAgIHJlc3Vs
dCB8PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAodHlwZXMuaXNHcmFtbWFy
KCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlm
ICh0eXBlcy5pc0xpbmsoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUxp
bms7CisgICAgaWYgKHR5cGVzLmlzUXVvdGUoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENo
ZWNraW5nVHlwZVF1b3RlOworICAgIGlmICh0eXBlcy5pc0Rhc2goKSkKKyAgICAgICAgcmVzdWx0
IHw9IE5TVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgaWYgKHR5cGVzLmlzUmVwbGFjZW1lbnQo
KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAg
IGlmICh0eXBlcy5pc0NvcnJlY3Rpb24oKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNr
aW5nVHlwZUNvcnJlY3Rpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdv
dWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCi0g
ICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBh
cmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CisgICAg
bV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFn
cmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgdG9OU1R5cGVzKGNoZWNraW5nVHlwZXMpKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMp
KTsKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93265</attachid>
            <date>2011-05-12 01:21:46 -0700</date>
            <delta_ts>2011-05-13 05:22:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110512172144.patch</filename>
            <type>text/plain</type>
            <size>71784</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYzMTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZGVhODRkYjc1YTRkNjMx
NTdkODlkN2UxMTQ5NTg4NzMxNTEwNGNhLi4yZGQ2ZDY1NWZhYzA3ZjJhNmY4YTIyMmJhMmZjNGNi
NmQ2ZjNlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDUtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09w
dGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZSAKKworICAgICAg
ICBSZW1vdmVkOgorICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9u
cworICAgICAgICAtIFdlYkNvcmU6OkVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9uRmxhZ3MKKyAg
ICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIC0gV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2sKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggbmV3bHkgaW50cm9kdWNl
ZDoKKyAgICAgICAgLSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcworICAgICAgICAKKyAgICAg
ICAgTm90ZSB0aGF0IFRleHRDaGVja2luZ1R5cGUgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSBOU1Rl
eHRDaGVja2luZ1R5cGUgZW50cmllcyBidXQKKyAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZXM6OlR5cGUgdmFsdWVzIGFyZSBub3QuCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZWQgdG9OU1R5cGVzKCkgY29udmVyc2lvbiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorICAgICAgICAoV2Vi
Q29yZTo6QVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNraW5nVHlwZSk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJD
b3JlOjp0b01hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1h
dGljYWxSYW5nZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXM6OlRleHRDaGVja2luZ1R5cGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzOjppc0dyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZXM6OmlzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6
aXNRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6aXNEYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc1JlcGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjppc0NvcnJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldFNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVzOjpzZXRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVzOjpzZXRRdW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
czo6c2V0RGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlczo6c2V0UmVw
bGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnNldENvcnJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXM6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzOjpzZXRGbGFnKToKKwogMjAxMS0wNS0x
MSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IDgwZTI2
N2MyZGRjZWUxYmM2YjM5YjZiNzNmMWQwNWYwMzdhNjUwOGYuLmExYjNmYWU5MTFlOGE5YWIxYTNj
Y2I3NmU5ZjdhZjc5OWM0ZTcyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC00
ODEsNyArNDgxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogCiAgICAgLy8gY2hlY2tUZXh0
T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVu
dGVkIGluIFdLMSBhbmQgV0syCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0
czsKLSAgICBjaGVja2VyLT5jaGVja1RleHRPZlBhcmFncmFwaChjaGFycywgY2hhckxlbmd0aCwg
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRzKTsKKyAgICBjaGVja2VyLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChjaGFycywgY2hhckxlbmd0aCwgVGV4dENoZWNraW5nVHlwZXMoVGV4dENo
ZWNraW5nVHlwZXM6OlNwZWxsaW5nKSwgcmVzdWx0cyk7CiAgICAgCiAgICAgc2l6ZV90IHNpemUg
PSByZXN1bHRzLnNpemUoKTsKICAgICBOU051bWJlciogdHJ1ZVZhbHVlID0gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYWJhNjli
NjA1NjY4ZjBhOTRkNGQ3NTBjMjkxNzljNjI1Y2FjODIxNC4uNjkyZTE1YjAzYTUwZTk5NGRkMDk5
MzdjYjJkMDBkNjkyY2QxN2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDE2
LDcgKzQxNiw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsCiAKICAgICBOb2RlKiBub2RlVG9D
aGVjayA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAg
aWYgKG1fc3BlbGxDaGVja2VyLT5jYW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGVUb0NoZWNrKSkK
LSAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0Zvcih0ZXh0Q2hlY2tpbmdU
eXBlTWFza0ZvcihNYXJrU3BlbGxpbmcgfCBNYXJrR3JhbW1hciksIG5vZGVUb0NoZWNrKTsKKyAg
ICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlUmVwbGFjZWRU
ZXh0Q2hlY2tpbmdUeXBlKFRleHRDaGVja2luZ1R5cGVzKFRleHRDaGVja2luZ1R5cGVzOjpTcGVs
bGluZyB8IFRleHRDaGVja2luZ1R5cGVzOjpHcmFtbWFyKSksIG5vZGVUb0NoZWNrKTsKIH0KIAog
dm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlKQpAQCAtMTk3MSwzMSAr
MTk3MSwyOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogI2lmIFVTRShVTklGSUVEX1RFWFRf
Q0hFQ0tJTkcpCiAgICAgbV9zcGVsbGluZ0NvcnJlY3Rvci0+YXBwbHlQZW5kaW5nQ29ycmVjdGlv
bihzZWxlY3Rpb25BZnRlclR5cGluZyk7CiAKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRD
aGVja2luZ09wdGlvbnMgPSAwOwotICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtTcGVsbGluZzsKLQor
ICAgIFRleHRDaGVja2luZ1R5cGVzIGNoZWNraW5nVHlwZXM7CisgICAgY2hlY2tpbmdUeXBlcy5z
ZXRTcGVsbGluZyhpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKTsKICNpZiBVU0Uo
QVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGRvUmVwbGFjZW1lbnQgCi0gICAg
ICAgICYmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0gICAgICAgICAg
ICB8fCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlz
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAgfHwgaXNBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKLSAgICAgICAgICAgIHx8ICgodGV4dENoZWNr
aW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZykgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCkpKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBQZXJmb3JtUmVw
bGFjZW1lbnQ7CisgICAgYm9vbCByZXBsYWNlID0KKyAgICAgICAgKGRvUmVwbGFjZW1lbnQgCisg
ICAgICAgICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAg
ICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQorICAgICAgICAgICAg
IHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgIHx8
IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCisgICAgICAgICAgICAgfHwgY2hl
Y2tpbmdUeXBlcy5pc1NwZWxsaW5nKCkgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkKCkpKTsKKyAgICBjaGVja2luZ1R5cGVzLnNldFJlcGxhY2VtZW50KHJlcGxhY2UpOwog
I2VuZGlmCi0gICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zICYgKE1hcmtTcGVsbGluZyB8IFBl
cmZvcm1SZXBsYWNlbWVudCkpCisgICAgaWYgKCFjaGVja2luZ1R5cGVzLmlzU3BlbGxpbmcoKSAm
JiAhY2hlY2tpbmdUeXBlcy5pc1JlcGxhY2VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0
aW9ucyB8PSBNYXJrR3JhbW1hcjsKKyAgICBjaGVja2luZ1R5cGVzLnNldEdyYW1tYXIoaXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdv
cmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZCh3b3JkU3RhcnQsIExlZnRXb3JkSWZP
bkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHdvcmRTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7
Ci0gICAgaWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcikgeworICAgIGlmIChj
aGVja2luZ1R5cGVzLmlzR3JhbW1hcigpKSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFy
dCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jk
cy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKGNoZWNraW5nVHlwZXMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAg
ICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhjaGVja2luZ1R5cGVz
LCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgfQogCiAjZWxzZQpAQCAtMjEwNiwxNyAr
MjEwNCwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKQogICAgIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0
aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKIH0KIAotdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1t
YXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKICNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQogICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9j
b3JyZWN0aW9uIGF0IHRoaXMgbW9tZW50LgogICAgIEFTU0VSVCghbV9zcGVsbGluZ0NvcnJlY3Rv
ci0+aGFzUGVuZGluZ0NvcnJlY3Rpb24oKSk7CiAKLSAgICBib29sIHNob3VsZE1hcmtTcGVsbGlu
ZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmc7Ci0gICAgYm9vbCBzaG91bGRN
YXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKLSAgICBib29s
IHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3Jt
UmVwbGFjZW1lbnQ7Ci0gICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENo
ZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7Ci0gICAgYm9vbCBzaG91bGRDaGVj
a0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKKyAgICBib29sIHNob3VsZE1hcmtTcGVs
bGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMuaXNTcGVsbGluZygpOworICAgIGJvb2wgc2hvdWxk
TWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zLmlzR3JhbW1hcigpOworICAgIGJvb2wg
c2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucy5pc1JlcGxhY2Vt
ZW50KCk7CisgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5n
T3B0aW9ucy5pc0NvcnJlY3Rpb25QYW5lbCgpOworICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3Jy
ZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCB0ZXh0Q2hlY2tpbmdPcHRpb25z
LmlzQ29ycmVjdGlvbigpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBz
ZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwpAQCAtMjE2MywxMCArMjE2MSwxMCBAQCB2b2lkIEVkaXRvcjo6bWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25z
IHRleHRDaAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYg
KHNob3VsZE1hcmtHcmFtbWFyKQogICAgICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBh
cmFncmFwaChncmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3Jh
cGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3Vs
dHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
UmVwbGFjZWRUZXh0Q2hlY2tpbmdUeXBlKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsK
ICAgICBlbHNlCiAgICAgICAgIHRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHNw
ZWxsaW5nUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHNwZWxsaW5nUGFyYWdyYXBoLnRleHRM
ZW5ndGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVJlcGxhY2Vk
VGV4dENoZWNraW5nVHlwZSh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cyk7CiAgICAgICAg
IAogCiAgICAgLy8gSWYgdGhpcyBjaGVja2luZyBpcyBvbmx5IGZvciBzaG93aW5nIGNvcnJlY3Rp
b24gcGFuZWwsIHdlIHNob3VsZG4ndCBib3RoZXIgdG8gbWFyayBtaXNzcGVsbGluZ3MuCkBAIC0y
MTg3LDEzICsyMTg1LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgIC8vIDIu
IFJlc3VsdCBmYWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdv
cmQgaW4gcXVlc3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3Ig
aW5zdGFuY2UsIHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBt
aXNzcGVsbGVkIHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChz
aG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0
KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9m
ZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKKyAgICAgICAgaWYgKHNo
b3VsZE1hcmtTcGVsbGluZyAmJiByZXN1bHQtPnR5cGUuaXNTcGVsbGluZygpICYmIHJlc3VsdExv
Y2F0aW9uID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSAmJiByZXN1bHRMb2Nh
dGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1bHRF
bmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0
aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IG1pc3NwZWxsaW5nUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2Nh
dGlvbiwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIGlmICghbV9zcGVsbGluZ0NvcnJlY3Rv
ci0+aXNTcGVsbGluZ01hcmtlckFsbG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRh
aW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFt
bWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFy
ICYmIHJlc3VsdC0+dHlwZS5pc0dyYW1tYXIoKSAmJiBncmFtbWFyUGFyYWdyYXBoLmNoZWNraW5n
UmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsKICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGor
KykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1
bHQtPmRldGFpbHNbal07CkBAIC0yMjA0LDE1ICsyMjAyLDE1IEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZz
ZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGgu
Y2hlY2tpbmdTdGFydCgpCi0gICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0g
VGV4dENoZWNraW5nVHlwZUxpbmsKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQt
PnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVz
dWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudAotICAgICAgICAgICAgICAg
ICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7Cisg
ICAgICAgICAgICAgICAgICAgJiYgKHJlc3VsdC0+dHlwZS5pc0xpbmsoKQorICAgICAgICAgICAg
ICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUuaXNRdW90ZSgpCisgICAgICAgICAgICAgICAgICAg
ICAgIHx8IHJlc3VsdC0+dHlwZS5pc0Rhc2goKQorICAgICAgICAgICAgICAgICAgICAgICB8fCBy
ZXN1bHQtPnR5cGUuaXNSZXBsYWNlbWVudCgpCisgICAgICAgICAgICAgICAgICAgICAgIHx8IHJl
c3VsdC0+dHlwZS5pc0NvcnJlY3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2Fz
ZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwg
c28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0
aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRp
b24gPj0gMCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYm
IChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
fHwgcmVzdWx0LT50eXBlICE9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkKKyAgICAgICAg
ICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJl
c3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgIXJlc3VsdC0+dHlwZS5pc0Nv
cnJlY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlu
dCByZXBsYWNlbWVudExlbmd0aCA9IHJlc3VsdC0+cmVwbGFjZW1lbnQubGVuZ3RoKCk7CkBAIC0y
MjI2LDcgKzIyMjQsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERP
V05TVFJFQU0pOwogCiAgICAgICAgICAgICAvLyBhZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUg
b25seSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZAotICAgICAgICAgICAgaWYgKHJl
c3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBzZWxlY3Rpb25PZmZzZXQgPiBy
ZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCisgICAgICAgICAgICBpZiAocmVzdWx0
LT50eXBlLmlzTGluaygpICYmIHNlbGVjdGlvbk9mZnNldCA+IHJlc3VsdExvY2F0aW9uICsgcmVz
dWx0TGVuZ3RoICsgMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
aWYgKCEoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZFNob3dDb3JyZWN0aW9uUGFu
ZWwpIHx8ICFkb1JlcGxhY2VtZW50KQpAQCAtMjI1NCw3ICsyMjUyLDcgQEAgdm9pZCBFZGl0b3I6
Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsp
IHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUuaXNMaW5rKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSk7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yMjc3LDcgKzIy
NzUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNp
bHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCi0gICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikKKyAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0LT50eXBlLmlzQ29ycmVjdGlvbigpKQogICAgICAgICAgICAgICAg
ICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5tYXJrQ29ycmVjdGlvbihzcGVsbGluZ1BhcmFncmFw
aC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpLCByZXBsYWNlZFN0
cmluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzMzMsOSArMjMzMSw4IEBAIHZv
aWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAg
ICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3Bl
bGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247Ci0gICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1h
cmtHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5cGVzIHRleHRDaGVja2luZ09wdGlvbnMoVGV4
dENoZWNraW5nVHlwZXM6OlNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZXM6OkNvcnJlY3Rpb24p
OworICAgIHRleHRDaGVja2luZ09wdGlvbnMuc2V0R3JhbW1hcihtYXJrR3JhbW1hciAmJiBpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7CiAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOwogI2Vsc2UKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5n
ZTsKQEAgLTMyMjQsMzggKzMyMjEsMjIgQEAgYm9vbCBFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUsIGkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9ICAgICAgIAogCi1UZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0
aW9ucykKK1RleHRDaGVja2luZ1R5cGVzIEVkaXRvcjo6cmVzb2x2ZVJlcGxhY2VkVGV4dENoZWNr
aW5nVHlwZShjb25zdCBUZXh0Q2hlY2tpbmdUeXBlcyYgdHlwZXMpCiB7Ci0gICAgYm9vbCBzaG91
bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOwotICAg
IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1t
YXI7Ci0gICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0
aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7Ci0gICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJl
Y3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKLQotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNr
aW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNr
aW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJr
R3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cjsKLSAgICBpZiAoc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uKQotICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIFRleHRDaGVja2luZ1R5cGVz
IHJlc3VsdCA9IHR5cGVzOworICAgIHJlc3VsdC5zZXRDb3JyZWN0aW9uKHR5cGVzLmlzQ29ycmVj
dGlvbigpIHx8IHR5cGVzLmlzQ29ycmVjdGlvblBhbmVsKCkpOwogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKLSAgICBpZiAoc2hvdWxk
UGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5
cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQo
KSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVF1b3RlOwot
ICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAg
ICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKLSAgICAgICAgaWYg
KGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGlmIChzaG91
bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkp
Ci0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
OworICAgIGlmICh0eXBlcy5pc1JlcGxhY2VtZW50KCkpIHsKKyAgICAgICAgcmVzdWx0LnNldExp
bmsoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgcmVzdWx0LnNl
dFF1b3RlKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpOworICAgICAgICBy
ZXN1bHQuc2V0RGFzaChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpOworICAg
ICAgICByZXN1bHQuc2V0UmVwbGFjZW1lbnQoaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKCkpOworICAgICAgICByZXN1bHQuc2V0Q29ycmVjdGlvbih0eXBlcy5pc1NwZWxsaW5nKCkg
JiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpOwogICAgIH0KICNlbmRp
ZgogCi0gICAgcmV0dXJuIGNoZWNraW5nVHlwZXM7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYTczYTk5
MjhlYzljZTlmZDlhM2ExY2VmNDgwOTdlNjBjM2MyZjVjOC4uMjM3ZDBmY2U0ZGFlMzM5MDdlMGFm
OTBmYTVhZmNkMTgzMzBmNzVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0yMjMsMTUg
KzIyMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9uLCBib29sIG1hcmtHcmFtbWFyLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0aW9uKTsKIAotICAgIGVudW0gVGV4
dENoZWNraW5nT3B0aW9uRmxhZ3MgewotICAgICAgICBNYXJrU3BlbGxpbmcgPSAxIDw8IDAsCi0g
ICAgICAgIE1hcmtHcmFtbWFyID0gMSA8PCAxLAotICAgICAgICBQZXJmb3JtUmVwbGFjZW1lbnQg
PSAxIDw8IDIsCi0gICAgICAgIFNob3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8IDMsCi0gICAgICAg
IENoZWNrRm9yQ29ycmVjdGlvbiA9IDEgPDwgNCwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWdu
ZWQgVGV4dENoZWNraW5nT3B0aW9uczsKLQogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKICAgICB2b2lkIGxvd2VyY2FzZVdvcmQo
KTsKQEAgLTI1MSw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb24oKTsKICNlbmRpZgogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVs
bGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKKyAgICB2b2lkIG1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAgICAgdm9pZCBjaGFuZ2VC
YWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsKIAogICAg
IHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24g
PSBmYWxzZSk7CkBAIC00MTQsNyArNDA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVjdGlv
bkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09yQmFk
R3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQ
dHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFRleHRDaGVja2luZ1R5cGVN
YXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOworICAgIFRl
eHRDaGVja2luZ1R5cGVzIHJlc29sdmVSZXBsYWNlZFRleHRDaGVja2luZ1R5cGUoY29uc3QgVGV4
dENoZWNraW5nVHlwZXMmKTsKIAogICAgIHZvaWQgc2VsZWN0Q29tcG9zaXRpb24oKTsKICAgICB2
b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBib29sIHByZXNlcnZlU2VsZWN0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAppbmRleCBjNmNhOTI2
OTAzNmQ1NGNkOTI1MWJlZDU0ZDc5Y2ZkOTA3MTA4NjMyLi42YmJiM2E5YjJlODQ4OWU4YTBmOTUx
NDE4OTI0MmU0MmNjNGI1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBib29sIFNwZWxsQ2hlY2tlcjo6aXNDaGVja2FibGUo
Tm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5yZW5kZXJlcigpOwog
fQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5
cGVNYXNrIG1hc2ssIE5vZGUqIG5vZGUpCit2b2lkIFNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNr
aW5nRm9yKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiBvcHRpb25zLCBOb2RlKiBub2RlKQogewog
ICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGUpKTsKIAogICAgIGlmICghaW5p
dFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBjbGllbnQoKS0+cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG1hc2ssIG1fcmVxdWVzdFRl
eHQpOworICAgIGNsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0aGlzLCBtX3JlcXVl
c3RTZXF1ZW5jZSwgb3B0aW9ucywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGZv
cndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQpA
QCAtMTM5LDExICsxMzksMTEgQEAgc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9u
SXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCiAgICAgcmV0dXJuIGZhbHNlOyAgICAK
IH0KIAotc3RhdGljIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShUZXh0
Q2hlY2tpbmdUeXBlIHR5cGUpCitzdGF0aWMgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdG9N
YXJrZXJUeXBlKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiB0eXBlcykKIHsKLSAgICBpZiAodHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCisgICAgaWYgKHR5cGVzLmlzU3BlbGxpbmco
KSkKICAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBBU1NFUlQo
dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7CisgICAgQVNTRVJUKHR5cGVzLmlzR3Jh
bW1hcigpKTsKICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CiB9CiAKQEAgLTE2
MSw3ICsxNjEsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBj
b25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAgIGludCBzdGFydE9mZnNl
dCA9IDA7CiAgICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAhPSBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyKQorICAgICAgICBpZiAoIXJlc3VsdHNbaV0udHlwZS5pc1NwZWxsaW5nKCkg
JiYgIXJlc3VsdHNbaV0udHlwZS5pc0dyYW1tYXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIC8vIFRvIGF2b2lkIG1vdmluZyB0aGUgcG9zaXRpb24gYmFja3dhcmQsIHdlIGFz
c3VtZSB0aGUgZ2l2ZW4gcmVzdWx0cyBhcmUgc29ydGVkIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsQ2hlY2tlci5oCmluZGV4IDFlZDkwMTEwZjA4YjA2ZDliNjRkMWMyNDJiODkwMzY5N2Vm
ZDg4MjQuLjVkYjA4OTEzYTE0ZDAyMGM4ZWJjZTYyYmE1YTRjNWQ0OGQxOGVkMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50IHNlcXVlbmNlKSBj
b25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIHJlcXVl
c3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzaywgTm9kZSopOworICAgIHZvaWQgcmVx
dWVzdENoZWNraW5nRm9yKGNvbnN0IFRleHRDaGVja2luZ1R5cGVzJiwgTm9kZSopOwogICAgIHZv
aWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMDNjODdlMjM2M2IwZWRmNDI2NTRj
MGJmNTY3ZTMyNTk1NTk5NzdmMi4uN2E2ZTJkNzI4NzM3MGU4YWYyODc2YWFhMTVlMDVjZmQ4NjVj
N2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTcGVsbGluZ0Nv
cnJlY3Rpb25Db250cm9sbGVyOjpjb3JyZWN0aW9uUGFuZWxUaW1lckZpcmVkKFRpbWVyPFNwZWxs
aW5nQ29ycmUKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHNlbGVjdGlvbi5zdGFydCgp
LCBzZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0gc3Rh
cnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgVmlzaWJsZVNl
bGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihwLCBzdGFydCk7Ci0gICAg
ICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKEVkaXRvcjo6TWFya1NwZWxsaW5nIHwgRWRpdG9yOjpTaG93Q29ycmVjdGlvblBhbmVs
LCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBt
X2ZyYW1lLT5lZGl0b3IoKS0+bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhUZXh0Q2hlY2tpbmdUeXBlcyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcgfCBUZXh0Q2hl
Y2tpbmdUeXBlczo6Q29ycmVjdGlvblBhbmVsKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpLCAwKTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29ycmVj
dGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMzkxMmE0OWY0ZmU5NjdkN2Q1Yjgx
MWI3OTI5MjI3MDM2YmYzZjhlNy4uZDQ3ZmViOGZiY2ZhNGEyYzM5MTlkNGNhYjM3YjgxNTE0YzJh
N2IzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cApAQCAtMjc0LDE5ICsyNzQsMjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0g
ICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IGNoZWNr
R3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgICAgICAgICAgICAgbV9jbGll
bnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5j
aGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVz
dWx0cyk7CisgICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZXMgb3B0aW9ucyhUZXh0Q2hl
Y2tpbmdUeXBlczo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0R3JhbW1h
cihjaGVja0dyYW1tYXIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigp
LT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJh
Z3JhcGhTdHJpbmcubGVuZ3RoKCksIG9wdGlvbnMsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCog
cmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5
cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gY3Vy
cmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA8PSBj
dXJyZW50RW5kT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUu
aXNTcGVsbGluZygpICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYm
IHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJl
c3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xv
Y2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3Nw
ZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQtPmxvY2F0aW9uLCBy
ZXN1bHQtPmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxl
ZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiBy
ZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcmVzdWx0LT5sb2NhdGlv
biA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3Ro
ID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dy
YW1tYXIgJiYgcmVzdWx0LT50eXBlLmlzR3JhbW1hcigpICYmIHJlc3VsdC0+bG9jYXRpb24gPCBj
dXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1
cnJlbnRTdGFydE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQs
IHNpbmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0
YWlsIGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJl
c3VsdC4KQEAgLTUyNCwxMiArNTI1LDE0IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hl
bHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAg
ICAgIHJldHVybiBndWVzc2VzOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFt
bWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
KSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIo
KS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFn
cmFwaC50ZXh0TGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMpOworCisgICAgVGV4dENo
ZWNraW5nVHlwZXMgb3B0aW9ucyhUZXh0Q2hlY2tpbmdUeXBlczo6U3BlbGxpbmcpOworICAgIG9w
dGlvbnMuc2V0R3JhbW1hcihjaGVja0dyYW1tYXIpOworICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tl
cigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFy
YWdyYXBoLnRleHRMZW5ndGgoKSwgb3B0aW9ucywgcmVzdWx0cyk7CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3Qg
VGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAgaWYgKHJl
c3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNr
aW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKSkgeworICAg
ICAgICBpZiAocmVzdWx0LT50eXBlLmlzU3BlbGxpbmcoKSAmJiBwYXJhZ3JhcGguY2hlY2tpbmdS
YW5nZU1hdGNoZXMocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmco
KTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxl
ZFdvcmQsIFN0cmluZygpLCBndWVzc2VzKTsKQEAgLTU0NCw3ICs1NDcsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsUmFuZ2UoYm9vbAogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVz
dWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJl
c3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVz
dWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5
cGUuaXNHcmFtbWFyKCkgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1
bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDAgJiYgZGV0YWlsLT5sb2Nh
dGlvbiA+PSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhYTJmYzlj
ZDU0NTVkZWNhNDMwMWNmNThmZmQ2MjIzMWY0NzVlOTk2Li44YWVhZjI4Mzg1YjVmMTAyMzFhZTY2
YjRiMTdkNTAzZmVmNWYyNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBA
IC00MTIsMTEgKzQxMiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1h
ck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQq
LCBpbnQqKSB7IH0KIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgdmlydHVh
bCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tp
bmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAgdmlydHVh
bCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBjb25zdCBUZXh0
Q2hlY2tpbmdUeXBlcyYsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgeyB9OwogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmLCBjb25z
dCBTdHJpbmcmKSB7IH0KIH07CiAKIGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVk
aXRvckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2VyQ2xpZW50LmgKaW5kZXggZDE2YWRlMTY0NjBhZDcwZjM3ZWI5ZThkNDE0ZGY2MWY2N2NmYzhk
My4uOGRmMTgwOTE1MWZiOTBhY2NkZjc0MThjOGY2OGIyYmM5MzU3MmM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNDYsNyAr
NDYsNyBAQCBzdHJ1Y3QgR3JhbW1hckRldGFpbCB7CiB9OwogCiBzdHJ1Y3QgVGV4dENoZWNraW5n
UmVzdWx0IHsKLSAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7CisgICAgVGV4dENoZWNraW5nVHlw
ZXMgdHlwZTsKICAgICBpbnQgbG9jYXRpb247CiAgICAgaW50IGxlbmd0aDsKICAgICBWZWN0b3I8
R3JhbW1hckRldGFpbD4gZGV0YWlsczsKQEAgLTY0LDE0ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCog
YmFkR3JhbW1hckxlbmd0aCkgPSAwOwogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykK
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNoZWNr
VGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBUZXh0
Q2hlY2tpbmdUeXBlcyYsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7
CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9ydCBtdWx0aXBs
ZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8gaWRlbnRpZnkg
dGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIGNv
cnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRleHQgaW4gImNv
bnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAgICAvLyBpZGVu
dGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0aGUgIndvcmQi
IGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25zLgogICAgIHZp
cnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0
cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFRleHRDaGVja2lu
Z1R5cGVzJiwgY29uc3QgU3RyaW5nJikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKaW5kZXggNzI1OThjMTFmNWFmNjBmYmU2ZDMzNjE5
Y2NhZDljYjgyYmNhMDc3NS4uMzFhODUxYTQ0OTI0Y2UyODVkM2EwYTNlZjhiZWY5NzM3Yzc5ZDBj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC00
MCwxNyArNDAsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2RlZmluZSBXVEZfVVNFX0FVVE9N
QVRJQ19URVhUX1JFUExBQ0VNRU5UIDEKICNlbmRpZgogCi1lbnVtIFRleHRDaGVja2luZ1R5cGUg
ewotICAgIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAgICA9IDEgPDwgMSwKLSAgICBUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hciAgICAgPSAxIDw8IDIsCi0gICAgVGV4dENoZWNraW5nVHlwZUxpbmsg
ICAgICAgID0gMSA8PCA1LAotICAgIFRleHRDaGVja2luZ1R5cGVRdW90ZSAgICAgICA9IDEgPDwg
NiwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlRGFzaCAgICAgICAgPSAxIDw8IDcsCi0gICAgVGV4dENo
ZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LAotICAgIFRleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uICA9IDEgPDwgOQotfTsKK3N0cnVjdCBUZXh0Q2hlY2tpbmdUeXBlcyB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgU3BlbGxpbmcgICAgPSAxIDw8IDEsCisgICAgICAg
IEdyYW1tYXIgICAgID0gMSA8PCAyLAorICAgICAgICBMaW5rICAgICAgICA9IDEgPDwgNSwKKyAg
ICAgICAgUXVvdGUgICAgICAgPSAxIDw8IDYsCisgICAgICAgIERhc2ggICAgICAgID0gMSA8PCA3
LAorICAgICAgICBSZXBsYWNlbWVudCA9IDEgPDwgOCwKKyAgICAgICAgQ29ycmVjdGlvbiAgPSAx
IDw8IDksCisgICAgICAgIENvcnJlY3Rpb25QYW5lbCAgPSAxIDw8IDEwLAorICAgIH07CisKKyAg
ICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdUeXBlcyh1bnNpZ25lZCB2YWx1ZSA9IDApIDogbV92YWx1
ZSh2YWx1ZSkgeyB9CisKKyAgICBib29sIGlzU3BlbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlICYgU3BlbGxpbmc7IH0KKyAgICBib29sIGlzR3JhbW1hcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgJiBHcmFtbWFyOyB9CisgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlICYgTGluazsgfQorICAgIGJvb2wgaXNRdW90ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
JiBRdW90ZTsgfQorICAgIGJvb2wgaXNEYXNoKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIERh
c2g7IH0KKyAgICBib29sIGlzUmVwbGFjZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICYg
UmVwbGFjZW1lbnQ7IH0KKyAgICBib29sIGlzQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgJiBDb3JyZWN0aW9uOyB9CisgICAgYm9vbCBpc0NvcnJlY3Rpb25QYW5lbCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUgJiBDb3JyZWN0aW9uUGFuZWw7IH0KKworICAgIHZvaWQgc2V0U3Bl
bGxpbmcoYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgU3BlbGxpbmcpOyB9CisgICAgdm9p
ZCBzZXRHcmFtbWFyKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIEdyYW1tYXIpOyB9Cisg
ICAgdm9pZCBzZXRMaW5rKGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIExpbmspOyB9Cisg
ICAgdm9pZCBzZXRRdW90ZShib29sIG9uID0gdHJ1ZSkgeyBzZXRGbGFnKG9uLCBRdW90ZSk7IH0K
KyAgICB2b2lkIHNldERhc2goYm9vbCBvbiA9IHRydWUpIHsgc2V0RmxhZyhvbiwgRGFzaCk7IH0K
KyAgICB2b2lkIHNldFJlcGxhY2VtZW50KGJvb2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIFJl
cGxhY2VtZW50KTsgfQorICAgIHZvaWQgc2V0Q29ycmVjdGlvbihib29sIG9uID0gdHJ1ZSkgeyBz
ZXRGbGFnKG9uLCBDb3JyZWN0aW9uKTsgfQorICAgIHZvaWQgc2V0Q29ycmVjdGlvblBhbmVsKGJv
b2wgb24gPSB0cnVlKSB7IHNldEZsYWcob24sIENvcnJlY3Rpb25QYW5lbCk7IH0KIAotdHlwZWRl
ZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKyAgICB1bnNpZ25lZCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldEZsYWcoYm9v
bCBvbiwgdW5zaWduZWQgdHlwZSkgeyBtX3ZhbHVlID0gb24gPyAobV92YWx1ZSB8IHR5cGUpIDog
KG1fdmFsdWUgJiB+dHlwZSk7IH0KKworICAgIHVuc2lnbmVkIG1fdmFsdWU7Cit9OwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmY2NTg2Nzk1YzZmMzc1NTFkNTE5MGQwNDI0
YjE0NzFlYTcxNzg4NS4uZWVkMzRlNWE4ZDlkOWQ5Yjc2NDA5YzgwNjM3YmQyYTBjMjJkOGFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wNS0xMSAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNr
aW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAg
ICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
ckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBzcmMvRWRp
dG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZUNoZWNraW5nVHlwZXMpOgorICAgICAg
ICAoV2ViS2l0Ojp0b0NvcmVSZXN1bHRzKToKKwogMjAxMS0wNS0xMSAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmlu
ZGV4IDk2YWVhMWRmNjMzMmYzZjA0ZDc0MGEyOTMxODI5NTg4MGQwOTczZTYuLmFiODY2NDg0ZGVk
MTk1Y2VkZWM0MzRmOGE4ZTcyNDNkODk5OGE2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwog
fQogCi12b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxs
Q2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAo
bV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpCiAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxD
aGVja0NsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRleHQodGV4dCwgbmV3IFdlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNlbmRlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IDZiY2M3OWRkMTlmNWY1YTUx
ZjY3MDU1NmZiNjY1MTMxMmZiOTNmMGUuLmJhYWY0ZTcwMWRhOGI1ZDA0ZDIxZGFiYzJmZThhNzlj
Mjk4NzM1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsg
cmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCmluZGV4IGY1YTY2MDRkYmE2
Nzg2M2M3NmM5ZjY5MGI1MTI2MDQ5NzJlMWY3YmUuLjY3YjQ4ODY5YjViNzljMjliZmVjYTM4N2Zi
MDcwNDZmYWU5ZDk4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKQEAgLTQwLDEyICs0MCwx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyBUZXh0Q2hlY2tpbmdUeXBlIHRvQ29yZUNoZWNraW5nVHlwZShXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQ6OkVycm9yIGVycm9yKQorc3RhdGljIFRleHRDaGVja2luZ1R5cGVzIHRvQ29yZUNoZWNr
aW5nVHlwZXMoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKIHsKLSAgICBpZiAo
ZXJyb3IgPT0gV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nKQotICAgICAgICBy
ZXR1cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotICAgIEFTU0VSVChlcnJvciA9PSBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcik7Ci0gICAgcmV0dXJuIFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyOworICAgIFRleHRDaGVja2luZ1R5cGVzIHR5cGVzOworICAgIHR5cGVzLnNl
dFNwZWxsaW5nKGVycm9yID09IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JTcGVsbGluZyk7
CisgICAgdHlwZXMuc2V0R3JhbW1hcihlcnJvciA9PSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVy
cm9yR3JhbW1hcik7CisgICAgQVNTRVJUKHR5cGVzLnZhbHVlKCkpOworICAgIHJldHVybiB0eXBl
czsKIH0KIAogc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMo
Y29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC01Myw3
ICs1NCw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRz
KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSCiAgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gY29yZVJlc3VsdHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRz
LnNpemUoKTsgKytpKSB7IAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgY29yZVJlc3VsdDsK
LSAgICAgICAgY29yZVJlc3VsdC50eXBlID0gdG9Db3JlQ2hlY2tpbmdUeXBlKHJlc3VsdHNbaV0u
ZXJyb3IpOworICAgICAgICBjb3JlUmVzdWx0LnR5cGUgPSB0b0NvcmVDaGVja2luZ1R5cGVzKHJl
c3VsdHNbaV0uZXJyb3IpOwogICAgICAgICBjb3JlUmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0c1tp
XS5wb3NpdGlvbjsKICAgICAgICAgY29yZVJlc3VsdC5sZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0
aDsKICAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKGNvcmVSZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggM2IzMTU1ODZiNDM2NzA5MGIw
Zjk0ZDE3OWE3OGIyOTMwNTFlMGVmNi4uYjM2ZGU5Y2QwOTBlNjkzNmJmNWVmMDEzYmU1NzE4NDI4
NTcxZTY4ZQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMTEgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU3MDg4CisgICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlv
bnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wNS0xMSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDVjYjE2Y2RmNzBjMmFiOTUyOWM0NTM5YzcxYWY2
NzZkNTYyZWZlNmQuLmEwMWE4ZTkxZWM4OTcwYWYwYzQ4YWUyYWU4NWQzYjBjNzQ1Y2MyMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RG
OjpWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFRleHRD
aGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCA2NmEwYTcxNmNlMzk0Yzg5OGQzMzE4N2I4OTM1OTBhMzA0NmJk
ZDZlLi4yYTljODNkYTI5YmU2N2M4NzBjOTczMjY5MWI5NjFjOTdhZGZhNjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMTEgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDg4Cisg
ICAgICAgIFJlZmFjdG9yaW5nOiBFZGl0b3I6OlRleHRDaGVja2luZ09wdGlvbnMgc2hvdWxkIGJl
IHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nVHlwZQorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVj
a2VyQ2xpZW50RW5jaGFudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA1LTA5
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXgg
YSB0ZXN0IGFmdGVyIHI4NjEwMi4gU2Nyb2xsYmFycyB1cGRhdGUgYXN5bmNocm9ub3VzbHksIHNv
IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudEVuY2hhbnQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Rl
eHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCmluZGV4IDVkOTNjMDcyMTZkOTk1YmZlMzZjYWZhZGQ5
OTBjMGE3ODJmNTJkZGEuLjBmMjFmM2RjZjdjYjIwMDVjMmE1MzBjNTc3NzZkYmNhNjhmNGQ4NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2Vy
Q2xpZW50RW5jaGFudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Rl
eHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50RW5jaGFudCA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CiAg
ICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlz
c3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNo
ZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBi
YWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNv
bnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFn
ZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCBhZTg5MGJlOTFi
N2UwY2U2ZDM0NWVkY2Q2NjM3MzA0ZmEwZGViOWMzLi42MGIzNzIxMzc2OWEwOWMyZmJiNDRiNDY0
ZjZiN2VhNjNmM2ExMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTA1LTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9y
OjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2lu
Z1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorCiAyMDExLTA1LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCmluZGV4IGIyZjM4MzE4
YWYxZjdkNjAxMWQ2ZTIzMzkxNjk3MjA1N2E3YjRhODMuLmE2OGY3NTkyMTNjNWVjYTliYmIzM2Yz
OTViY2MwZTdiY2M4MjNhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFz
cyBFZGl0b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hl
Y2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25z
dCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1
ZXNzZXMpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tl
ciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgU3RyaW5n
JikgeyB9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkg
eyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2VmYmYyYjc1YzcxZDQ2NmM4NDk5MjZkODdiNjkyY2ExNDBlM2QwOS4u
NGU2ZDU4Y2ZjMTc2OWQwNjFkMjY0OTdiNTg0ZjExZjQ3ZGQ4OWU3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA1LTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAg
ICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBs
YWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVyOldlYkNvcmU6OnNlcXVlbmNlOnR5cGVzOldl
YkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKToKKwogMjAxMS0wNS0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGQzYTg4MGM5ODhhN2Iy
ZjJlMDNjOTM1OTVjNjA5MWRmMWI2Y2FhNS4uNWU1Zjg3MWY3MTI2MTk0MjQxNDc0NzdlYTU4NjJk
N2I1MjQ2ZDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGlu
dCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1t
YXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5
cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgV1RGOjpWZWN0
b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZp
cnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOwpAQCAtMTM1LDcgKzEzNSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpT
dHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxl
ZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZXMmLCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5l
bFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGEwY2YzYWJj
NDA3MjA2MDA1NTgyMTA3ZjRhN2E4OGMwYzQ2ZTQ4NWYuLmUwNzYwMDA1ZjNlZjU0MjE3NjI1Y2Ex
ODdjMDQ1MGI5ZmU5MTM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc1OCw3ICs3NTgsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIFZlY3RvcgogfQogCiAjaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQKLXN0YXRpYyBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywg
VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcykKK3N0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgY29uc3QgVGV4dENo
ZWNraW5nVHlwZXMmIGNoZWNraW5nVHlwZXMpCiB7CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gcmVzdWx0czsKIApAQCAtNzY3LDE2ICs3NjcsMTYgQEAgc3RhdGljIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tp
bmdUeXAKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdS
ZXN1bHQgcmVzdWx0VHlwZV07CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwot
ICAgICAgICBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiAw
ICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKSB7CisgICAg
ICAgIGlmIChOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlICYmIGNoZWNr
aW5nVHlwZXMuaXNTcGVsbGluZygpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmc7CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRTcGVsbGluZygpOwogICAgICAgICAgICAg
cmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1
bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFy
ID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXIpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
ciA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNHcmFtbWFyKCkpIHsKICAgICAgICAg
ICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRh
aWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgICAgICByZXN1bHQudHlw
ZS5zZXRHcmFtbWFyKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0
YWlscykgewpAQCAtNzk2LDM3ICs3OTYsMzcgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXAKICAg
ICAgICAgICAgICAgICByZXN1bHQuZGV0YWlscy5hcHBlbmQoZGV0YWlsKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoTlNUZXh0Q2hlY2tpbmdUeXBlTGluayA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5n
VHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVMaW5rKSkgeworICAgICAgICB9IGVsc2UgaWYgKE5T
VGV4dENoZWNraW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAmJiBjaGVja2luZ1R5cGVzLmlzTGlu
aygpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgICAgIHJlc3Vs
dC50eXBlLnNldExpbmsoKTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQg
VVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OwotICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVF1b3RlID09IHJlc3VsdFR5
cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZVF1b3RlID09IHJlc3VsdFR5cGUg
JiYgY2hlY2tpbmdUeXBlcy5pc1F1b3RlKCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVR
dW90ZTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFF1b3RlKCk7CiAgICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2lu
Z1R5cGVEYXNoID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENo
ZWNraW5nVHlwZURhc2gpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBl
RGFzaCA9PSByZXN1bHRUeXBlICYmIGNoZWNraW5nVHlwZXMuaXNEYXNoKCkpIHsKICAgICAgICAg
ICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9
IFRleHRDaGVja2luZ1R5cGVEYXNoOworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0RGFzaCgp
OwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAg
ICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5n
XTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKSB7CisgICAgICAg
IH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPT0gcmVzdWx0VHlwZSAm
JiBjaGVja2luZ1R5cGVzLmlzUmVwbGFjZW1lbnQoKSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0UmVwbGFjZW1lbnQo
KTsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwog
ICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAg
ICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmlu
Z107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAgICB9IGVsc2Ug
aWYgKE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gPT0gcmVzdWx0VHlwZSAmJiAwICE9IChj
aGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYg
Y2hlY2tpbmdUeXBlcy5pc0NvcnJlY3Rpb24oKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZUNvcnJlY3Rpb247CisgICAgICAgICAgICByZXN1bHQudHlwZS5zZXRDb3JyZWN0aW9uKCk7CiAg
ICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwpA
QCAtODM2LDEzICs4MzYsMzUgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNv
cmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXAKIAogICAgIHJldHVy
biByZXN1bHRzOwogfQorCisKK3N0YXRpYyB1bnNpZ25lZCBraXQoY29uc3QgVGV4dENoZWNraW5n
VHlwZXMmIHR5cGVzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgaWYgKHR5cGVz
LmlzU3BlbGxpbmcoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nOworICAgIGlmICh0eXBlcy5pc0dyYW1tYXIoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4
dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgaWYgKHR5cGVzLmlzTGluaygpKQorICAgICAgICBy
ZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICBpZiAodHlwZXMuaXNRdW90ZSgp
KQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgaWYgKHR5
cGVzLmlzRGFzaCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsK
KyAgICBpZiAodHlwZXMuaXNSZXBsYWNlbWVudCgpKQorICAgICAgICByZXN1bHQgfD0gTlNUZXh0
Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgaWYgKHR5cGVzLmlzQ29ycmVjdGlvbigpKQor
ICAgICAgICByZXN1bHQgfD0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiAjZW5kaWYKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdU
eXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgVGV4dENoZWNraW5nVHlwZXMmIGNoZWNraW5nVHlw
ZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogI2lmbmRlZiBCVUlM
RElOR19PTl9MRU9QQVJECiAgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxl
bmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3Vs
dHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4
dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczoo
Y2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwg
aW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3Jh
cGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOworICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3Ry
aW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOihraXQo
Y2hlY2tpbmdUeXBlcyl8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dy
YXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAg
ICByZXN1bHRzID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwogI2VuZGlm
CkBAIC05NDEsMTUgKzk2MywxNSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sKQogewogICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogX3NlbmRlcjsKICAg
ICBpbnQgX3NlcXVlbmNlOwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIF90eXBlczsKKyAgICBU
ZXh0Q2hlY2tpbmdUeXBlcyBfdHlwZXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRz
OwogfQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVy
IHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVN
YXNrKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aFNlbmRl
cjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0
eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMpdHlwZXMgcmVzdWx0czooTlNBcnJheSop
cmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVk
aXRvclNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpT
cGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCist
IChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVu
Y2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMpdHlwZXMg
cmVzdWx0czooTlNBcnJheSopcmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQpAQCAtOTY5LDE1ICs5OTEsMjAgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIEBlbmQKICNlbmRpZgogCi12b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBz
ZW5kZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tp
bmdUeXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2Vx
dWVuY2UsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiBjaGVja2luZ1R5cGVzLCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAjaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQKICAgICBO
U1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgLy8gU3Rv
cmVzIGl0IGFzIGEgcHJpbWl0aXZlIHZhbHVlIHRvIGFsbG93IHRoZSBibG9jayB0byBjb3B5IGl0
LgorICAgIHVuc2lnbmVkIGNoZWNraW5nVHlwZXNWYWx1ZSA9IGNoZWNraW5nVHlwZXMudmFsdWUo
KTsKICAgICBOU1J1bkxvb3AqIGN1cnJlbnRMb29wID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9v
cF07CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNUZXh0Q2hlY2tpbmdBbGxTeXN0
ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRhZzowIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdl
ciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdlcikgewogICAgICAg
ICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybSkgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxs
Q2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1
ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIGFsbG9jXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZXM6V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMoY2hlY2tpbmdUeXBlc1ZhbHVlKSAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6
cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0RlZmF1
bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5
YzBlMzM4OTUwNWFmMTM5MjY5ZGI0ZDBjOTFkOTk2MWIwMDZjYTY0Li5kNWJhMzkyMTljMTRlYmQ1
OTY1MWZiOWM1NDg2MmVhY2RiOTBhYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA1LTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRp
dG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVj
a2luZ1R5cGUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcp
OgorCiAyMDExLTA1LTExICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
aCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRl
eCBlY2NiNzVkZDBhNjg4MGQ3OWQ0MWQ4YWQ5ODAxY2Y0Mjc1NDgzMDJhLi5jMzg2ZmVkMmFjZmQ1
NTU1OTBkYmVhNzg3MjIxYzVlZjZjZWU3ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZXMmLCBjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIGJvb2wgaXNFZGl0
aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2IwYzhlMTZkMTViZGVlZDkzOWI3YmI5
YTQ5MDg3MTNjMjBhOTdkNi4uY2M2YjFmZTJjNTAzZTFmYWNmYjZiY2I3M2Y3N2JjOThmZWEyYmU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA1LTExICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzA4OAorICAgICAgICBSZWZhY3RvcmluZzogRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRp
b25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1R5cGUKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDUtMTEgIERtaXRyeSBMb21v
diAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMWRiNGM2ODBlNTY0YzkzOWQyMzkyYzEyMzg3MDljMTZjNTJjMmUzYS4uMWU3
ZGNlYjI0ZGU2MGNlNDQwMDUzZjZkOWFiNmE1NWI5ZWMxZTJhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xp
ZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cKaW5kZXggMzgzMzg5YTY2YjAwYzg2NTBhNzVkNzc0Mjc2ZGUxYzU5ZDQ3YjRmYS4u
YmYwZmVjZjliY2Y1NmNhMGU4ZDk5OGM5YWI1NmU4NTkyYjk3YWY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNS0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAg
ICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5D
RTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTA1LTA1ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oCmluZGV4IDVhMWQ1YWFkYjFmNDU2ZmZkNDFhZDEyMDFkMWQ3YmNlMTdmZDM3Y2Eu
Ljg1NDM0ZmYyMzQxMDg4NGJlOGYxYmRhOTFiNWI5ZmIxOGQxZDJkYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgK
QEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNG
b3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4
dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggZWVhNmY2ZGE0OWMzZjI3ZWQ0YmFkNDYxNGVk
MmQ2Yjc3MjhmZjNhMy4uNGYxN2IwYjRiZTlkNjViODBiYzJjNzI0M2I3NzAzZDk1MmE1YWEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNS0xMSAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5nT3B0aW9ucyBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAgIAorICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDUtMDkgIFJv
YmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZp
biBPbGxpdmllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNs
aWVudFd4LmgKaW5kZXggNzM3MGYwYTUzYjM4ZTQwM2Y0NzJkZjU2NTE5MjE4MzUyMWI2NWI1YS4u
ZTM1ZTEwYWZlZjIzMGRhYzFjYzZiZjNiOGJmNDMxYjg3ZWVmY2U3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKKysrIGIvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMm
LCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGQwM2YzNGFiMTdiYzk4ODk1OTE0NjMwYmEwYjhkNDU4ZTg4NjZkOGMuLmYyZDVlMzk3MzkzN2Vk
OTg5N2IxNDExMjc4MGNmYTBkNTcxYWFmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMS0wNS0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwODgKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRv
cjo6VGV4dENoZWNraW5nT3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tp
bmdUeXBlCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKToKKwogMjAxMS0wNS0xMSAgRGFtaWFuIEthbGV0YSAgPGRrYWxldGFAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAxYjliNGY1ODBlZDNl
MjI0YWQ3YjIzMDdiNTIxN2U5NzhlYjVjYWIyLi45OTU1NjgzMDk1ZWNkYjA4ZTViMzk2NTQyOTEz
ZmNiNzQyZWRiYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC00NTQsMTAgKzQ1NCwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZXMmIHR5cGVzKQorICAgIHsKKyAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlSW50MzIodHlwZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmIHR5
cGVzKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdHlw
ZXMgPSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlcyh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JiByZXN1
bHQpCiAgICAgewotICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKKyAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3VsdC50eXBlKTsKICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlSW50MzIocmVzdWx0LmxvY2F0aW9uKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIo
cmVzdWx0Lmxlbmd0aCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShyZXN1bHQuZGV0YWlscyk7
CkBAIC00NjYsNyArNDgyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKIAogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHJlc3VsdC50eXBlKSkK
KyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnR5cGUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHJlc3VsdC5s
b2NhdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCAyOTQ5M2Y5Yzg5OGM5YjdjMTcw
ZTJkOWFiYjUwYWIwZDI0NjQyYjE5Li4zNGNhYTM1Mzk0ODM5OTNiMjdmNGJkYjQ0NWY3YTZmNmFh
ZjcxNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVj
a2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJN
YWMubW0KQEAgLTI0NCwxNCArMjQ0LDE0IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAg
ICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKICAgICAgICAgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgKGNoZWNraW5nVHlwZXMgJiBOU1Rl
eHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZzsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFNwZWxsaW5nKCk7CiAgICAgICAgICAg
ICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJl
c3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hl
Y2tpbmdUeXBlR3JhbW1hciAmJiAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAg
ICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0YWlsc107
Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAg
ICAgICAgICAgcmVzdWx0LnR5cGUuc2V0R3JhbW1hcigpOwogICAgICAgICAgICAgcmVzdWx0Lmxv
Y2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmlu
Y29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKQEAgLTI3MywzNSArMjczLDM1IEBAIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2
NF90IHNwZWxsRG9jdW1lCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiAo
Y2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUxpbmspKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldExpbmsoKTsKICAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107
CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYg
KHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgKGNoZWNraW5nVHlwZXMg
JiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVR
dW90ZTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlLnNldFF1b3RlKCk7CiAgICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2lu
Z1R5cGVEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgICAg
ICByZXN1bHQudHlwZS5zZXREYXNoKCk7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVz
dWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50ICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFj
ZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgICAg
ICAgICByZXN1bHQudHlwZS5zZXRSZXBsYWNlbWVudCgpOwogICAgICAgICAgICAgcmVzdWx0Lmxv
Y2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0g
W2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwor
ICAgICAgICAgICAgcmVzdWx0LnR5cGUuc2V0Q29ycmVjdGlvbigpOwogICAgICAgICAgICAgcmVz
dWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQu
bGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAppbmRleCA3YTQwOGQ3MjdjNTY0NTg5YzgxNTcxYTczYWQzODI5Nzc5MzdjZmJhLi5l
NTJmMWI3MTMzZjQyZjEwYTI4YTJkNWY1MjE3YmVmYzQyMmI0NDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJp
bmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMm
LCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDJmOTg4YTk4ZTU4NTlkMjY2YjQ1OTQ0YWZkMDNiYzc4MTg0MjI1
M2QuLjJmMTgyYTJkOTczM2EzYjgyYWU5OWYzMjQ4OTk5ZWEzYTlhZWU4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5n
JiBtaXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+
JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1
YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9pZCBj
aGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgY29uc3Qg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZXMmLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1t
YXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3Jk
LCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQs
IGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVzJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsK
ICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9u
UGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDA1OTgxMDAzNWZjMzdhZWI1M2Zh
NTU1Y2M3MWFhNTVkOTkxNGQ1ZDUuLmRmZGEzYmExZDQ0NTU5ODNiN2ZlMGJkYzNhMDNiYWNjNjRh
NDU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTIzMSwxMCAr
MjMxLDMwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgdW5zaWduZWQga2l0KGNvbnN0IFRleHRD
aGVja2luZ1R5cGVzJiB0eXBlcykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgIGlm
ICh0eXBlcy5pc1NwZWxsaW5nKCkpCisgICAgICAgIHJlc3VsdCB8PSBOU1RleHRDaGVja2luZ1R5
cGVTcGVsbGluZzsKKyAgICBpZiAodHlwZXMuaXNHcmFtbWFyKCkpCisgICAgICAgIHJlc3VsdCB8
PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlmICh0eXBlcy5pc0xpbmsoKSkKKyAg
ICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgaWYgKHR5cGVzLmlz
UXVvdGUoKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworICAg
IGlmICh0eXBlcy5pc0Rhc2goKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlw
ZURhc2g7CisgICAgaWYgKHR5cGVzLmlzUmVwbGFjZW1lbnQoKSkKKyAgICAgICAgcmVzdWx0IHw9
IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgIGlmICh0eXBlcy5pc0NvcnJlY3Rp
b24oKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlcyYgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291
bGRuJ3QgaGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCi0gICAgbV9wYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwg
bGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4
dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVu
Z3RoKSwga2l0KGNoZWNraW5nVHlwZXMpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tU
ZXh0T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMpKTsKIH0KIAogI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93437</attachid>
            <date>2011-05-13 05:22:20 -0700</date>
            <delta_ts>2011-05-13 09:47:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57088-20110513212218.patch</filename>
            <type>text/plain</type>
            <size>11318</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY0MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYTVlYTQzNzU3ODM0YjU4
NzE3NTBlZDE1YmZmYTFmZWEzZGExMGZhLi41MTY5NzE2YmY5YzEyY2ZkNWQ1ZjNmNmJkYzFjMjI3
M2UzZjI2OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDUtMTMgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEVkaXRvcjo6VGV4dENoZWNraW5n
T3B0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdUeXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA4OAorCisgICAgICAg
IFJlbW92ZWQgRWRpdG9yOjpUZXh0Q2hlY2tpbmdPcHRpb25zIGFuZCByZXBsYWNlZCBpdCB3aXRo
IFRleHRDaGVja2luZ1R5cGVNYXNrCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVN
YXNrKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmg6IEFkZGVkIFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBh
bmVsCisKIDIwMTEtMDUtMDUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCAzZjNjMDk2M2NiNzc5NmNkMzJkYzljMTIyZmJmZjFhZDY4Y2IwZTMxLi5jNmMyZmU2
MzBlNjIwNzZmZDJhNTkzM2RmNmMwODQ1MzdiMWZjYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKIAogICAg
IE5vZGUqIG5vZGVUb0NoZWNrID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsKICAgICBpZiAobV9zcGVsbENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9ub3VzbHko
bm9kZVRvQ2hlY2spKQotICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9y
KHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGluZyB8IE1hcmtHcmFtbWFyKSwgbm9k
ZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJl
c29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hciksIG5vZGVUb0NoZWNrKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
cGxhY2VTZWxlY3Rpb25XaXRoVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0UmVw
bGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlKQpAQCAtMTk3Myw5ICsxOTczLDEwIEBAIHZvaWQg
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uICZ3b3JkU3RhcnQsCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBt
X3NwZWxsaW5nQ29ycmVjdG9yLT5hcHBseVBlbmRpbmdDb3JyZWN0aW9uKHNlbGVjdGlvbkFmdGVy
VHlwaW5nKTsKIAotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9
IDA7CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CisK
ICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4
dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrU3BlbGxpbmc7CisgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19U
RVhUX1JFUExBQ0VNRU5UKQogICAgIGlmIChkb1JlcGxhY2VtZW50IApAQCAtMTk4MywxNyArMTk4
NCwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAgICAgfHwgaXNBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCiAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkKCkKICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpCi0gICAgICAgICAgICB8fCAoKHRleHRDaGVja2luZ09wdGlvbnMgJiBN
YXJrU3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKSkp
Ci0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gUGVyZm9ybVJlcGxhY2VtZW50OworICAg
ICAgICAgICAgfHwgKCh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkpKQorICAgICAg
ICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKICNl
bmRpZgotICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucyAmIChNYXJrU3BlbGxpbmcgfCBQZXJm
b3JtUmVwbGFjZW1lbnQpKQorICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucyAmIChUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7CisgICAgICAgIHRleHRDaGVja2lu
Z09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CiAKICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFy
dCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0YXJ0LCBSaWdodFdvcmRJ
Zk9uQm91bmRhcnkpKTsKLSAgICBpZiAodGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFy
KSB7CisgICAgaWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikgewogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRT
dGFydCkpOwogICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICAgICB9
IGVsc2UgewpAQCAtMjEwOCwxNyArMjEwOSwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIG1hcmtNaXNzcGVsbGlu
Z3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
IH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxp
bmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQog
ewogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAgLy8gVGhlcmUgc2hvdWxkbid0
IGJlIHBlbmRpbmcgYXV0b2NvcnJlY3Rpb24gYXQgdGhpcyBtb21lbnQuCiAgICAgQVNTRVJUKCFt
X3NwZWxsaW5nQ29ycmVjdG9yLT5oYXNQZW5kaW5nQ29ycmVjdGlvbigpKTsKIAotICAgIGJvb2wg
c2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsK
LSAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtH
cmFtbWFyOwotICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5n
T3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKLSAgICBib29sIHNob3VsZFNob3dDb3JyZWN0
aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAg
ICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFu
ZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBDaGVja0ZvckNvcnJlY3Rpb24pOworICAgIGJv
b2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5n
T3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGJvb2wgc2hvdWxkUGVyZm9y
bVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVSZXBs
YWNlbWVudDsKKyAgICBib29sIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWw7CisgICAgYm9v
bCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8
ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pOwogCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhw
YW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
MjE2NSwxMCArMjE2NiwxMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQog
ICAgICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChncmFtbWFyUGFyYWdy
YXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlw
ZU1hc2tGb3IodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2so
dGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOwogICAgIGVsc2UKICAgICAgICAgdGV4dENo
ZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJh
Y3RlcnMoKSwgc3BlbGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IodGV4
dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5n
T3B0aW9ucyksIHJlc3VsdHMpOwogICAgICAgICAKIAogICAgIC8vIElmIHRoaXMgY2hlY2tpbmcg
aXMgb25seSBmb3Igc2hvd2luZyBjb3JyZWN0aW9uIHBhbmVsLCB3ZSBzaG91bGRuJ3QgYm90aGVy
IHRvIG1hcmsgbWlzc3BlbGxpbmdzLgpAQCAtMjMzNSw5ICsyMzM2LDkgQEAgdm9pZCBFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNw
ZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmICghaXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZyB8IENo
ZWNrRm9yQ29ycmVjdGlvbjsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdP
cHRpb25zID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb247CiAgICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgp
KQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOworICAgICAgICB0
ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwogICAgIG1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywg
c3BlbGxpbmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVj
dGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKICNlbHNlCiAgICAgUmVmUHRyPFJhbmdl
PiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CkBAIC0zMjI2LDEyICszMjI3LDEyIEBAIGJvb2wgRWRp
dG9yOjpzZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSBtYXJrZXJUeXBlLCBpCiAgICAgcmV0dXJuIGZhbHNlOwogfSAgICAgICAKIAotVGV4dENoZWNr
aW5nVHlwZU1hc2sgRWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMpCitUZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6
OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hl
Y2tpbmdPcHRpb25zKQogewotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNr
aW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKLSAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwotICAgIGJvb2wgc2hvdWxkU2hvd0Nv
cnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29ycmVjdGlvblBhbmVs
OwotICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIENoZWNrRm9yQ29ycmVjdGlvbik7Cisg
ICAgYm9vbCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgYm9vbCBzaG91bGRT
aG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5
cGVTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9u
ID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNo
ZWNraW5nVHlwZXMgPSAwOwogICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCkBAIC0zMjQyLDcg
KzMyNDMsNyBAQCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnRleHRDaGVja2luZ1R5cGVN
YXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZQogICAgICAgICBjaGVja2luZ1R5cGVz
IHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhU
X1JFUExBQ0VNRU5UKQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENo
ZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKKyAgICBib29sIHNob3VsZFBlcmZv
cm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlUmVw
bGFjZW1lbnQ7CiAgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewogICAgICAgICBp
ZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IGE3M2E5OTI4ZWM5Y2U5ZmQ5YTNhMWNlZjQ4MDk3ZTYwYzNjMmY1YzguLjY2OGQ3YzYzOTY0
ZTZiODkxYzllNzM0MmFhZDQxNDU5ZDc2MzUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtMjIzLDE1ICsyMjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3Jh
bW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJr
R3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CiAKLSAg
ICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAgTWFya1NwZWxsaW5nID0g
MSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAgICAgICAgUGVyZm9ybVJl
cGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAz
LAotICAgICAgICBDaGVja0ZvckNvcnJlY3Rpb24gPSAxIDw8IDQsCi0gICAgfTsKLSAgICB0eXBl
ZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ09wdGlvbnM7Ci0KICNpZiBVU0UoQVVUT01BVElDX1RF
WFRfUkVQTEFDRU1FTlQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CkBAIC0yNTEsNyArMjQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xl
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgbWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zLCBS
YW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNr
LCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAgICAgdm9pZCBj
aGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsK
IAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24gPSBmYWxzZSk7CkBAIC00MTQsNyArNDA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNl
bGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5n
c09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5n
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwor
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0
Q2hlY2tpbmdUeXBlTWFzayk7CiAKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CiAgICAg
dm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBwcmVzZXJ2ZVNlbGVj
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRl
eCA3MjU5OGMxMWY1YWY2MGZiZTZkMzM2MTljY2FkOWNiODJiY2EwNzc1Li5mMjFmZjg0NzY3NWVk
NWRkODFiNWEwYTMzZGZkNmNkODNiNjE3NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTQ3LDcgKzQ3LDggQEAgZW51bSBUZXh0Q2hlY2tpbmdU
eXBlIHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgICAgICAgPSAxIDw8IDYsCiAgICAgVGV4
dENoZWNraW5nVHlwZURhc2ggICAgICAgID0gMSA8PCA3LAogICAgIFRleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudCA9IDEgPDwgOCwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAgPSAx
IDw8IDkKKyAgICBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAgPSAxIDw8IDksCisgICAgVGV4
dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8IDEwCiB9OwogCiB0eXBlZGVm
IHVuc2lnbmVkIFRleHRDaGVja2luZ1R5cGVNYXNrOwo=
</data>
<flag name="review"
          id="86589"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>