<?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>239426</bug_id>
          
          <creation_ts>2022-04-16 17:44:20 -0700</creation_ts>
          <short_desc>Leverage StringView in more places</short_desc>
          <delta_ts>2022-04-18 09: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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862096</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 17:44:20 -0700</bug_when>
    <thetext>Leverage StringView in more places, to reduce the number of String allocations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862097</commentid>
    <comment_count>1</comment_count>
      <attachid>457760</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 17:49:10 -0700</bug_when>
    <thetext>Created attachment 457760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862098</commentid>
    <comment_count>2</comment_count>
      <attachid>457761</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 17:58:25 -0700</bug_when>
    <thetext>Created attachment 457761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862100</commentid>
    <comment_count>3</comment_count>
      <attachid>457762</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 19:45:48 -0700</bug_when>
    <thetext>Created attachment 457762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862105</commentid>
    <comment_count>4</comment_count>
      <attachid>457764</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-16 20:56:48 -0700</bug_when>
    <thetext>Created attachment 457764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862121</commentid>
    <comment_count>5</comment_count>
      <attachid>457767</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 00:01:17 -0700</bug_when>
    <thetext>Created attachment 457767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862164</commentid>
    <comment_count>6</comment_count>
      <attachid>457767</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-17 14:15:14 -0700</bug_when>
    <thetext>Comment on attachment 457767
Patch

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

&gt; Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:148
&gt; +    stringValue = StringView(stringValue).stripWhiteSpace().convertToASCIILowercase();

Going through the convertToASCIILowercase() and seeing how many can be converted to either explicit equalIgnoringASCIICase() or case-ignore SortedArrayMap would be a good investment.

&gt; Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:234
&gt; +                purposeStringValue = StringView(purposeStringValue).stripWhiteSpace().convertToASCIILowercase();
&gt;                  Vector&lt;String&gt; keywords = purposeStringValue.splitAllowingEmptyEntries(&quot; &quot;);

This could totally be done without any allocation using SortedArrayMap and StringView&apos;s functor based split.

&gt; Source/WebCore/editing/Editor.cpp:3224
&gt; +    String transposed = makeString(text[1], text[0]);

Unrelated to this change, but it seems like this is totally not going to work with all graphemes. I bet transposing (control-t) two emoji doesn&apos;t work. Yep.

&gt; Source/WebCore/platform/network/CacheValidation.cpp:301
&gt; +                double maxAge = directives[i].second.toDouble(ok);

Another good project for the future is replacing these out parameter based conversion functions with std:;optional returning ones.

&gt; Source/WebCore/platform/network/MIMEHeader.cpp:125
&gt; +    auto encoding = text.stripWhiteSpace();

Another good SortedArrayMap use case for the future.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:464
&gt; +        if (!executeCommandSlow(makeString(&quot;DROP TABLE &quot;, table)))

Because string concatenation and databases make me very uncomfortable, can this / should this use prepareStatement + &apos;?&apos; + bindText()? (not relevant to this change, but a question none-the-less).

&gt; Source/WebCore/platform/xr/PlatformXR.h:120
&gt; +    auto feature = string.stripWhiteSpace().convertToASCIILowercase();

This would be more efficient / idiomatic if we switch to use a case insensitive SortedArrayMap (for the future, not relevant to the kind of changes you are making).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862165</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 14:32:26 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 457767 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457767&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:148
&gt; &gt; +    stringValue = StringView(stringValue).stripWhiteSpace().convertToASCIILowercase();
&gt; 
&gt; Going through the convertToASCIILowercase() and seeing how many can be
&gt; converted to either explicit equalIgnoringASCIICase() or case-ignore
&gt; SortedArrayMap would be a good investment.
&gt; 
&gt; &gt; Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:234
&gt; &gt; +                purposeStringValue = StringView(purposeStringValue).stripWhiteSpace().convertToASCIILowercase();
&gt; &gt;                  Vector&lt;String&gt; keywords = purposeStringValue.splitAllowingEmptyEntries(&quot; &quot;);
&gt; 
&gt; This could totally be done without any allocation using SortedArrayMap and
&gt; StringView&apos;s functor based split.
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3224
&gt; &gt; +    String transposed = makeString(text[1], text[0]);
&gt; 
&gt; Unrelated to this change, but it seems like this is totally not going to
&gt; work with all graphemes. I bet transposing (control-t) two emoji doesn&apos;t
&gt; work. Yep.
&gt; 
&gt; &gt; Source/WebCore/platform/network/CacheValidation.cpp:301
&gt; &gt; +                double maxAge = directives[i].second.toDouble(ok);
&gt; 
&gt; Another good project for the future is replacing these out parameter based
&gt; conversion functions with std:;optional returning ones.
&gt; 
&gt; &gt; Source/WebCore/platform/network/MIMEHeader.cpp:125
&gt; &gt; +    auto encoding = text.stripWhiteSpace();
&gt; 
&gt; Another good SortedArrayMap use case for the future.
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:464
&gt; &gt; +        if (!executeCommandSlow(makeString(&quot;DROP TABLE &quot;, table)))
&gt; 
&gt; Because string concatenation and databases make me very uncomfortable, can
&gt; this / should this use prepareStatement + &apos;?&apos; + bindText()? (not relevant to
&gt; this change, but a question none-the-less).

As far as I know (and just double checked on google), it isn&apos;t possible to prepare a statement and bind a table name. It only works for parameters, not table names.

&gt; &gt; Source/WebCore/platform/xr/PlatformXR.h:120
&gt; &gt; +    auto feature = string.stripWhiteSpace().convertToASCIILowercase();
&gt; 
&gt; This would be more efficient / idiomatic if we switch to use a case
&gt; insensitive SortedArrayMap (for the future, not relevant to the kind of
&gt; changes you are making).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862177</commentid>
    <comment_count>8</comment_count>
      <attachid>457780</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 15:18:43 -0700</bug_when>
    <thetext>Created attachment 457780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862180</commentid>
    <comment_count>9</comment_count>
      <attachid>457783</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 16:46:36 -0700</bug_when>
    <thetext>Created attachment 457783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862182</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-17 17:10:29 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 457767 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457767&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/applicationmanifest/ApplicationManifestParser.cpp:148
&gt; &gt; +    stringValue = StringView(stringValue).stripWhiteSpace().convertToASCIILowercase();
&gt; 
&gt; Going through the convertToASCIILowercase() and seeing how many can be
&gt; converted to either explicit equalIgnoringASCIICase() or case-ignore
&gt; SortedArrayMap would be a good investment.

I wish I understood how to use SortedArrayMap with string literal keys...
ComparableASCIILiteral / ComparableCaseFoldingASCIILiteral / ComparableLettersLiteral with no explanation of what each is for.

Which ones are case sensitive and which ones are not for e.g. Probably obvious to some people but not to me. 

I looked at the SortedArrayMap API test, hoping it would help me understand. Sadly, only one test is actually trying uppercase and it is with ComparableLettersLiteral and somehow it matches. So somehow ComparableLettersLiteral is case-insensitive, which I find surprising.
Then what is ComparableCaseFoldingASCIILiteral for?

As often with WebKit code, I wish there was a smidge of documentation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862205</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-17 22:57:04 -0700</bug_when>
    <thetext>Committed r292951 (249716@main): &lt;https://commits.webkit.org/249716@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457783.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862206</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-17 22:58:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91878229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862222</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2022-04-18 04:47:50 -0700</bug_when>
    <thetext>Committed r292952 (249717@trunk): &lt;https://commits.webkit.org/249717@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862244</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-18 09:46:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; I wish I understood how to use SortedArrayMap with string literal keys...
&gt; ComparableASCIILiteral / ComparableCaseFoldingASCIILiteral /
&gt; ComparableLettersLiteral with no explanation of what each is for.

I’m happy to write more documentation.

&gt; Which ones are case sensitive and which ones are not for e.g. Probably
&gt; obvious to some people but not to me. 

ComparableASCIILiteral is case sensitive
ComparableCaseFoldingASCIILiteral is case insensitive
ComparableLettersLiteral is case insensitive

We can also make new ones; there is nothing special about this.

&gt; So somehow
&gt; ComparableLettersLiteral is case-insensitive, which I find surprising.
&gt; Then what is ComparableCaseFoldingASCIILiteral for?

This is like equalIgnoringASCIICase and equalLettersIgnoringASCIICase.

ComparableCaseFoldingASCIILiteral is case-insensitve

ComparableLettersLiteral is case insensitive and more efficient when the keys are all guaranteed to only include the ASCII characters we can compare with the high speed &quot;just or with 0x20&quot; approach. We can give it a longer more-descriptive name. I think your complaints mostly boil down to unhappiness with that name.

&gt; As often with WebKit code, I wish there was a smidge of documentation :)

Happy to add it.

We can also make additional ComparableXXX classes that build whitespace skipping into the canonicalization and comparison functions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457760</attachid>
            <date>2022-04-16 17:49:10 -0700</date>
            <delta_ts>2022-04-16 18:12:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220416174909.patch</filename>
            <type>text/plain</type>
            <size>50070</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLjY1OGVmYTE5NzE0YTExMjNhMWZkNmFlYzI4N2VlZWZiOGUzNDg5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTm90U3BhY2VP
ck5ld2xpbmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjb21w
bGV4IFN0cmluZzo6aW5zZXJ0KCkgd2l0aCBhIHNpbXBsaWZpZWQgbWFrZVN0cmluZ0J5SW5zZXJ0
aW5nKCkgZnJlZSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxMGIxYTk4OGNiOTgxMTRjM2ZiYzdl
ZDk4MmJiMjZjODAyYjI2ZWIuLmI0MmIzYTU4NmQ3NDI2Mjk0OGVjOGZiZTljN2I0ZDYyNGUwMjAy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudF0pOgor
ICAgICAgICAoYXBwZW5kU3RyaW5nVG9SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW5kZXJlckZvclZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OnNldE1l
ZGlhVHlwZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFn
bWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICog
aHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OnJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFwcGVuZCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByaW50VGV4dEZvclN1
YnRyZWUpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vRGVj
aW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0
dXJlRGVzY3JpcHRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXlUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGNvbXBsZXggU3RyaW5n
OjppbnNlcnQoKSB3aXRoIGEgc2ltcGxpZmllZCBtYWtlU3RyaW5nQnlJbnNlcnRpbmcoKSBmcmVl
IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3ZWRhM2VkMWQ2NWE2NDc0MGM0YTQzYTY3ODVjNjEyN2Vl
ZTQ0OTcuLjZkNmJmMjhhNjEzZTUzZDkxNjYzZDVmNWY4YWNjYzU1ZjMxYWYxZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFnZSBTdHJp
bmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJpbmcgYWxs
b2NhdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9y
UmFuZ2UpOgorCiAyMDIyLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9pZCBzb21l
IFN0cmluZyBhbGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0MzIz
Y2RmZjg4NjQ1ZThkZGQyY2U0ZGRmZTYzZWIzMGEyNGI4YmIuLjhlMmY5YmFjNzljNjNiZDIwZjM1
NTFjZjMwMzRmOTA0OTU5ZjJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcg
aW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBhbGxvY2F0aW9u
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9p
ZCBzb21lIFN0cmluZyBhbGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5k
ZXggNThiODU0NTZmODZjNWNhODRlZTNlOTVlYTRiMjNiNGI0MzE0NDVjMS4uM2M0MTc0ZTUyNmFh
NjY1MGRjZGU1YmY1Y2VhYzU5YTM2Y2NkMzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC04MzUsMTMgKzgzNSw2IEBAIGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCog
b2spCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgb2spOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1
bmN0aW9uLCBzdGFydCk7Ci0gICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBD
aGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAppbmRleCA3MzUwOGVjZWI2NTVhNWE1ZGZjM2NiNTdjMWY4YmIxODcyMjJh
ZmI3Li40M2M5NTQ5ZjY1MzYwMTcwZTUxZGEwODYxNWQ2MDhmNDU5NjkzZTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDMwLDcgKzQzMCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
ZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZp
bmQoY2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQo
VUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfaW52b2NhYmxlX3Jfdjxib29sLCBDb2RlVW5pdE1hdGNoRnVuY3Rp
b24sIFVDaGFyPj4qID0gbnVsbHB0cj4KKyAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nVmlldyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KTsKQEAgLTYwMCw2ICs2MDEs
NyBAQCBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5n
SW1wbCopOwogLy8gRklYTUU6IFNob3VsZCByZW5hbWUgdGhpcyB0byBtYWtlIGNsZWFyIGl0IHVz
ZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLgogLy8gTW9zdCBXZWJLaXQg
Y2FsbGVycyBkb24ndCB3YW50IHRoYXQgd291bGQgdXNlIGlzQVNDSUlTcGFjZSBvciBpc0hUTUxT
cGFjZSBpbnN0ZWFkLgogYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyMzIpOworYm9vbCBpc05v
dFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3Rl
clR5cGUqKTsKIApAQCAtNzA0LDYgKzcwNiwxNCBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6
OmZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+
Kj4KK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0
YXJ0KTsKKyAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgbWF0
Y2hGdW5jdGlvbiwgc3RhcnQpOworfQorCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBhLCBTdHJpbmdJbXBsKiBiKQogewogICAgIHJldHVybiBlcXVhbElnbm9y
aW5nTnVsbGl0eShhLmRhdGEoKSwgYS5zaXplKCksIGIpOwpAQCAtNzU0LDYgKzc2NCwxMSBAQCBp
bmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHJldHVy
biBpc0xhdGluMShjaGFyYWN0ZXIpID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJE
aXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKK2lubGlu
ZSBib29sIGlzTm90U3BhY2VPck5ld2xpbmUoVUNoYXIzMiBjaGFyYWN0ZXIpCit7CisgICAgcmV0
dXJuICFpc1NwYWNlT3JOZXdsaW5lKGNoYXJhY3Rlcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3Ry
aW5nKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZykKIHsKICAgICBBU1NFUlQoc3RyaW5nKTsK
QEAgLTEzMTQsMyArMTMyOSw1IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBQcmVkaWNhdGUmIGZpbmRNYXRjaCkKIHVzaW5nIFdURjo6
U3RhdGljU3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1
YWw7Cit1c2luZyBXVEY6OmlzTm90U3BhY2VPck5ld2xpbmU7Cit1c2luZyBXVEY6OmlzU3BhY2VP
ck5ld2xpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1NGQwYmJlZmUwN2NiZDU5YTU3
MzhlOTQ1NGExODFlMjFiMDFkZjNkLi4yOWExY2Y2MzU5Nzc4YTU2ZjQ4YmQ3MzkzODQzM2RjY2M1
ZWVjYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsK
ICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlv
biwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRN
YXRjaEZ1bmN0aW9uLCBVQ2hhcj4+KiA9IG51bGxwdHI+CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVu
aXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9CiAgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQg
c3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBz
dGFydCkgOiBub3RGb3VuZDsgfQogCkBAIC02NDMsNyArNjQ0LDYgQEAgdXNpbmcgV1RGOjpudWxs
U3RyaW5nOwogdXNpbmcgV1RGOjplcXVhbDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKLXVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVz
aW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNjgz
ZGZjZDBjNGU1ZDgzNmEzOTg0ZjM1ZWMyMWFkMTBmYTM2OTY0Yi4uYWNhY2JmNzI3NmE4NWQwYjkx
YzllNTViYjMwZjI2NzBiZmM2OGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OkRpc3BsYXkgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VEaXNwbGF5KGNvbnN0IEpT
T046CiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5OjpCcm93c2Vy
OwogICAgIH0KIAotICAgIHN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWUuc3RyaXBXaGl0ZVNwYWNl
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBzdHJpbmdWYWx1ZSA9IFN0cmluZ1Zp
ZXcoc3RyaW5nVmFsdWUpLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CiAKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImZ1bGxzY3JlZW4iKQogICAgICAgICByZXR1
cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6RnVsbHNjcmVlbjsKQEAgLTIzMCw3ICsy
MzAsNyBAQCBWZWN0b3I8QXBwbGljYXRpb25NYW5pZmVzdDo6SWNvbj4gQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6cGFyc2VJY29ucyhjb25zdCBKUwogICAgICAgICAgICAgICAgIHB1cnBvc2Vz
LmFkZChBcHBsaWNhdGlvbk1hbmlmZXN0OjpJY29uOjpQdXJwb3NlOjpBbnkpOwogICAgICAgICAg
ICAgICAgIGN1cnJlbnRJY29uLnB1cnBvc2VzID0gcHVycG9zZXM7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHB1cnBvc2VTdHJpbmdWYWx1ZSA9IHB1cnBvc2VTdHJpbmdW
YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgICAg
ICAgICAgICAgIHB1cnBvc2VTdHJpbmdWYWx1ZSA9IFN0cmluZ1ZpZXcocHVycG9zZVN0cmluZ1Zh
bHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGtleXdvcmRzID0gcHVycG9zZVN0cmluZ1ZhbHVlLnNw
bGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoIiAiKTsKIAogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYga2V5d29yZCA6IGtleXdvcmRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4
IDQyZDBiN2MwOTYzMDU1NGRhZGY3ZTYyNGE5Y2VlZWQxMjQ0NGQwNDMuLjQ1NWFhY2U4ODBkZDlm
Y2M4NGFhNWVlYmQ3ZGRiMzA4MzIzYzQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0x
ODEsNyArMTgxLDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmVzdGFibGlzaFN0YXRlbWVudCgp
CiAgICAgcmV0dXJuIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChzcWwpOwogfQogCi1ib29sIFNRTGl0
ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQorYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdWaWV3IHNxbCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiQ3JlYXRpbmcgY3Vyc29yIHdpdGggU1FMIHF1ZXJ5OiBc
IiVzXCIiLCBzcWwudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCBmNzg3
OTMyNjY1NjQ3MDQ4OTBkMzBjMGExZjFlMmYwMTJjY2NmMzVhLi42MDIyNjk0MGM1NDY5MTQ5ZWVm
NGEwOTA5MTJhZmYwNzE4MDZlNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC04MSw3ICs4MSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGVzdGFibGlzaFN0YXRlbWVudCgpOwot
ICAgIGJvb2wgY3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKTsKKyAgICBi
b29sIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdWaWV3IHNxbCk7CiAgICAgYm9vbCBiaW5k
QXJndW1lbnRzKCk7CiAKICAgICBib29sIHJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCBlNjcwMDJkMTdkY2YzNDgzMThkMTg1YjM0N2IxZTI2MGUyYmQ5YjYz
Li4wMThkYmI5OWIxOGZiNjdiOGIwZGMwOTM4ODI3ODE3YWJkYjJjNjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMTEyLDI5ICsx
MTIsMjkgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogbWVz
c2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyht
ZXNzYWdlLCAiICgiLCBzcWxpdGVFcnJvckNvZGUsICcgJywgc3FsaXRlRXJyb3JNZXNzYWdlLCAn
KScpOwogfQogCi1zdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRp
YyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBTdHJpbmdW
aWV3IHF1ZXJ5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIGlmICghc3RhdGVtZW50KSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHNldCB2YWx1
ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJh
c2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCB2YWx1ZSk7CiAKICAgICBpZiAoc3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gc3RlcCBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0ZXAgc3Rh
dGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCitzdGF0
aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRi
LCBTdHJpbmdWaWV3IHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKIHsKICAgICBhdXRvIHN0
YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRl
bWVudCkgewotICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFyaW5nIHN0YXRlbWVu
dCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0YXRlbWVudC5lcnJv
cigpLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRXJyb3IgKCVp
KSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAo
JXMpIiwgc3RhdGVtZW50LmVycm9yKCksIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGJvb2wgcmV0
cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3Ry
aW5nJiBxdWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgTE9HX0VSUk9SKCJF
cnJvciAoJWkpIHJlYWRpbmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0
LCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHJlYWRp
bmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBxdWVyeS51dGY4KCku
ZGF0YSgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggMTk0NDliM2VlNWEwNDIzYzBlYWY3MzQ0OWE4YmIyNjYzOTVh
Y2U5OS4uNTQ2ODRhMzM2Y2VjNTUyNzIyNjQ5ZTRkZGRmYjFhYjNjMGY5OGI1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTQsNyArMTExNCw3IEBAIC0g
KEJPT0wpZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudAogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDkyCiAgICAgICAgIHJldHVybiBz
ZWxmLmF4QmFja2luZ09iamVjdC0+aXNLZXlib2FyZEZvY3VzYWJsZSgpCiAgICAgICAgICAgICAm
JiBbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XSA9PSAwCi0gICAgICAgICAgICAmJiBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLnN0cmlwV2hp
dGVTcGFjZSgpLmxlbmd0aCgpID4gMDsKKyAgICAgICAgICAgICYmIHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5kZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGlu
ZSkgIT0gbm90Rm91bmQ7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlh
UXVlcnlQYXJzZXIuaAppbmRleCBlNmMxNWVjMzA2YmY0NzgzYjljN2UzNWZhNTM5NzYxNTI3Yzkw
M2M5Li4wMWNkNTNlMzNjY2Y5ZTFkMzk5NDEyZWJmNDBjNmI1MjNjZWZjZmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTMsNyArOTMsNyBA
QCBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYpOwogICAgICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKICAgICAgICAgdm9pZCBy
ZW1vdmVMYXN0RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsgfQorICAgICAgICB2
b2lkIHNldE1lZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUgPSBXVEZN
b3ZlKG1lZGlhVHlwZSk7IH0KIAogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3Ry
aWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICAgICAgVmVjdG9yPE1l
ZGlhUXVlcnlFeHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4cHJlc3Npb25z
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2I0YjcxYWI5M2M2ZWQ3ZDU2ODhm
NDg0NWIzMzQxODRlYjJjMGNiZS4uOTVkNDRlODgwODU4NWRkZjA0OTJmMjkwNzk0YTJkYjdkZGI1
OWVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzIyMSw3ICszMjIxLDcgQEAg
dm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQoKnJh
bmdlKTsKICAgICBpZiAodGV4dC5sZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1cm47Ci0gICAg
U3RyaW5nIHRyYW5zcG9zZWQgPSB0ZXh0LnJpZ2h0KDEpICsgdGV4dC5sZWZ0KDEpOworICAgIFN0
cmluZyB0cmFuc3Bvc2VkID0gbWFrZVN0cmluZyh0ZXh0WzFdLCB0ZXh0WzBdKTsKIAogICAgIC8v
IFNlbGVjdCB0aGUgdHdvIGNoYXJhY3RlcnMuCiAgICAgaWYgKG5ld1NlbGVjdGlvbiAhPSBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGNlZDMyMzVlZmI4OWZhYjc0YWYyOWM2ZDVlODIwZjQ3
MThiNjZkYWYuLjIxZTAyZWE4MGI4NjNiYzIyYmM0YWQ5Yjk5ZDRlYTQwMTMwOTE3MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xOTA0LDE1ICsxOTA0
LDE1IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBjYXJldCA9IHBv
czsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zIC0gbWlkIDwgMCkgewogICAgICAgICAgICAg
ICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVycyB0byBsZWZ0Ci0gICAgICAgICAgICAgICAgc2hvdyA9
IHRleHQubGVmdChtYXggLSAzKSArICIuLi4iOworICAgICAgICAgICAgICAgIHNob3cgPSBtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcodGV4dCkubGVmdChtYXggLSAzKSwgIi4uLiIpOwogICAgICAgICAg
ICAgICAgIGNhcmV0ID0gcG9zOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0g
MCAmJiBwb3MgKyBtaWQgPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgICAgIC8vIGVub3Vn
aCBjaGFyYWN0ZXJzIG9uIGVhY2ggc2lkZQotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiAr
IHRleHQuc3Vic3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CisgICAgICAg
ICAgICAgICAgc2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmluZ1ZpZXcodGV4dCkuc3Vic3Ry
aW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpLCAiLi4uIik7CiAgICAgICAgICAgICAgICAgY2Fy
ZXQgPSBtaWQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIHRvbyBm
ZXcgY2hhcmFjdGVycyBvbiByaWdodAotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRl
eHQucmlnaHQobWF4IC0gMyk7CisgICAgICAgICAgICAgICAgc2hvdyA9IG1ha2VTdHJpbmcoIi4u
LiIsIFN0cmluZ1ZpZXcodGV4dCkucmlnaHQobWF4IC0gMykpOwogICAgICAgICAgICAgICAgIGNh
cmV0ID0gcG9zIC0gKHRleHRMZW5ndGggLSBzaG93Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5jcHAKaW5kZXggOWYzNjg2MGEyNjE0MGY0OWU4MjRkMzI2N2RlM2VhZjlhMTJkYzg5MS4u
MGIyZDQzYjVjZTlhNDhhY2YzYjMyYjM5MmQzYWY1MDk2OWQ1ZjYzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC01NSwxOSArNTUsMTcg
QEAgc3RhdGljIFN0cmluZyBjb2xsZWN0RGlnaXRzKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCYgcG9zaXQKICAgICByZXR1cm4gZGlnaXRzLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29sbGVjdEZyYWN0aW9uKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgcG9zaXRpb24pCitzdGF0aWMgU3RyaW5nVmlldyBj
b2xsZWN0RnJhY3Rpb24oY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkJiBwb3NpdGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGRpZ2l0czsKLQogICAgIC8vIGh0
dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIzMjYudHh0CiAgICAgLy8gWyAiLiIgKkRJR0lUIF0K
ICAgICBpZiAoaW5wdXRbcG9zaXRpb25dICE9ICcuJykKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZGlnaXRzLmFwcGVuZChpbnB1dFtwb3NpdGlv
bisrXSk7CisgICAgKytwb3NpdGlvbjsgLy8gSW5jbHVkZSBpbml0aWFsIHBlcmlvZC4KICAgICB3
aGlsZSAocG9zaXRpb24gPCBsZW5ndGggJiYgaXNBU0NJSURpZ2l0KGlucHV0W3Bvc2l0aW9uXSkp
Ci0gICAgICAgIGRpZ2l0cy5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwotICAgIHJldHVybiBk
aWdpdHMudG9TdHJpbmcoKTsKKyAgICAgICAgKytwb3NpdGlvbjsKKyAgICByZXR1cm4gU3RyaW5n
VmlldyB7IGlucHV0LCBwb3NpdGlvbiB9OwogfQogCiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyKGNvbnN0IFVSTCYgdXJsKQpAQCAtMjcwLDggKzI2OCw5IEBA
IGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0
aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgKHRpbWVTdHJpbmdbb2Zmc2V0XSA9PSAn
LicpIHsKICAgICAgICAgaWYgKG9mZnNldCA9PSBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgU3RyaW5nIGRpZ2l0cyA9IGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5n
LCBsZW5ndGgsIG9mZnNldCk7Ci0gICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGRpZ2l0cy50b0RvdWJsZSgpKTsKKyAgICAgICAgYXV0byBkaWdpdHMgPSBjb2xs
ZWN0RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBib29sIGlz
VmFsaWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRp
Z2l0cy50b0RvdWJsZShpc1ZhbGlkKSk7CiAgICAgICAgIHRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUodmFsdWUxKSArIGZyYWN0aW9uOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0zMDgsOCArMzA3LDEwIEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFy
c2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgICAg
IHZhbHVlMSA9IDA7CiAgICAgfQogCi0gICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1lU3Ry
aW5nW29mZnNldF0gPT0gJy4nKQotICAgICAgICBmcmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShjb2xsZWN0RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpLnRv
RG91YmxlKCkpOworICAgIGlmIChvZmZzZXQgPCBsZW5ndGggJiYgdGltZVN0cmluZ1tvZmZzZXRd
ID09ICcuJykgeworICAgICAgICBib29sIGlzVmFsaWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5n
dGgsIG9mZnNldCkudG9Eb3VibGUoaXNWYWxpZCkpOworICAgIH0KICAgICAKICAgICB0aW1lID0g
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKCh2YWx1ZTEgKiBzZWNvbmRzUGVySG91cikgKyAo
dmFsdWUyICogc2Vjb25kc1Blck1pbnV0ZSkgKyB2YWx1ZTMpICsgZnJhY3Rpb247CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggYmQzNWE4NDc4MjYxYzEw
MGZmMTdkMjFlMTJjYjdhNmUwY2JiZThiNC4uN2VhODczMDExZTVmZTk1MzcwMmUxMDFkY2E4OTdl
ZDczNDkzMGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtOTUsNyArOTUsNyBA
QCBEZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29u
c3QKICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1EZWNpbWFsIFN0ZXBSYW5nZTo6cGFy
c2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlw
dGlvbiYgc3RlcERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCitEZWNpbWFs
IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNv
bnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uLCBTdHJpbmdWaWV3IHN0ZXBTdHJp
bmcpCiB7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3Rl
cERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXgg
NzNkMjNkYTlmNTU3ODc3YTlhNTBiMTc2ZTRiOTk0MzlkNjIyZDU4YS4uNTQ4NTNkMjk3NWIzNmE5
MGZiODlmYzU4NjJlZjBlYmRkMjI4MjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVy
biBtX21heGltdW07IH0KICAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21p
bmltdW07IH0KICAgICBEZWNpbWFsIHN0ZXBTbmFwcGVkTWF4aW11bSgpIGNvbnN0OwotICAgIHN0
YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlw
dGlvbiYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlT
dGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIFN0cmluZ1ZpZXcpOwogICAgIERl
Y2ltYWwgc3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQogICAgIERlY2ltYWwgc3RlcEJh
c2UoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRl
eCA1YzFlYzc0MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5Li43M2EzNTgxNDgyM2Nk
ZWRmOThhYmU5ZWI2Zjk5ZWQ1Y2UxNDMyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtOTIsOSArOTIsMTEgQEAgU3RyaW5nIHNl
cmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nOjpu
dW1iZXIobnVtYmVyKTsKIH0KIAotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCitEZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgY29uc3Qg
RGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVh
bCBudW1iZXJzLicgYW5kIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlCisgICAgaWYgKHN0cmlu
Zy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgLy8gU3Ry
aW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3Rl
cnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBjb25zdCBVQ2hhciBmaXJzdENoYXJh
Y3RlciA9IHN0cmluZ1swXTsKQEAgLTExNiwxNCArMTE4LDE2IEBAIERlY2ltYWwgcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBm
YWxsYmFjCiAgICAgcmV0dXJuIHZhbHVlLmlzWmVybygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOwog
fQogCi1EZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZykKK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nLCBE
ZWNpbWFsOjpuYW4oKSk7CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCitkb3VibGUgcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoU3RyaW5nVmlldyBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1Zh
bHVlKQogewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJworICAgIGlm
IChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAg
IC8vIFN0cmluZzo6dG9Eb3VibGUoKSBhY2NlcHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVzcGFjZSBj
aGFyYWN0ZXJzLCB3aGljaCBhcmUgbm90IHZhbGlkIGhlcmUuCiAgICAgVUNoYXIgZmlyc3RDaGFy
YWN0ZXIgPSBzdHJpbmdbMF07CkBAIC0xMzQsMTEgKzEzOCwxMSBAQCBkb3VibGUgcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1Zh
bHVlKQogICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGJvb2wgdmFsaWQgPSBm
YWxzZTsKLSAgICBkb3VibGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUoJnZhbGlkKTsKKyAgICBk
b3VibGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUodmFsaWQpOwogICAgIGlmICghdmFsaWQpCiAg
ICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCi0gICAgLy8gTmFOIGFuZCBpbmZpbml0eSBh
cmUgY29uc2lkZXJlZCB2YWxpZCBieSBTdHJpbmc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhl
cmUuCisgICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lkZXJlZCB2YWxpZCBieSBTdHJp
bmdWaWV3Ojp0b0RvdWJsZSwgYnV0IG5vdCB2YWxpZCBoZXJlLgogICAgIGlmICghc3RkOjppc2Zp
bml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCkBAIC0xNTEsNyAr
MTU1LDcgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSA6
IDA7CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcm
IHN0cmluZykKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0
cmluZykKIHsKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4OTUxNmIxYjliZWU5
ZTE5YzY2MTg1MWMyMjQ3ODJiOGFmNWQ2NDkwLi43YzAzZjMyZDI0YmJhNjJlMTgxYjEzMWViZjIw
YTgzMjRjYTJmM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5oCkBAIC01NCwxMCArNTQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5
cGUoZG91YmxlKTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkZWNpbWFs
L2RvdWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFs
bGJhY2sgdmFsdWUgb3IgTmFOIGlmIG5vdCBzcGVjaWZpZWQuCiAvLyBMZWFkaW5nIG9yIHRyYWls
aW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4g
ZW1wdHkgc3RyaW5nLgogLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNr
IGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4K
LURlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwotRGVj
aW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVj
aW1hbCYgZmFsbGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
Y29uc3QgU3RyaW5nJik7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3Qg
U3RyaW5nJiwgZG91YmxlIGZhbGxiYWNrVmFsdWUpOworRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZv
ck51bWJlclR5cGUoU3RyaW5nVmlldyk7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVy
VHlwZShTdHJpbmdWaWV3LCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKK2RvdWJsZSBw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK2RvdWJsZSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3LCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVz
LWZvci1wYXJzaW5nLWludGVnZXJzCiBlbnVtIGNsYXNzIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9y
IHsgTmVnYXRpdmVPdmVyZmxvdywgUG9zaXRpdmVPdmVyZmxvdywgT3RoZXIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMTU1YmM3YzE2NmY0OGFlYWQyYmRiMTUzZjRiMjkxZTkxYzAwYWY2ZC4uNWQ1YTM3NmZi
ZDQwYzgwZjE4YzdkZGU0OThmYzUzY2RmM2YyZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1OCw3ICs3
NTgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6
c2V0QXR0cmlidXRlc0FzVGV4dChQcm90b2NvbDo6RAogICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKICAgICB9CiAKLSAgICBpZiAoIWZvdW5kT3JpZ2luYWxB
dHRyaWJ1dGUgJiYgIW5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYg
KCFmb3VuZE9yaWdpbmFsQXR0cmlidXRlICYmIG5hbWUuZmluZChpc05vdFNwYWNlT3JOZXdsaW5l
KSAhPSBub3RGb3VuZCkgewogICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5yZW1vdmVBdHRyaWJ1
dGUoKmVsZW1lbnQsIG5hbWUsIGVycm9yU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5jcHAKaW5kZXggNTZhMDc4MmM2ZWMwYzQzNjliZTFjZmJkYTc0OWIzMjQy
ZmEzN2M0My4uNGE4ZDFmYTcyNGY5YTkxOWJjYTMyYjQ4ODQxOGFhZmViODM5ZjIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCkBAIC0xNjMsMTIgKzE2Mywx
MiBAQCBzdGF0aWMgdm9pZCByZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRB
cHBlbmQoY29uc3QgSW5saW5lVGV4dEJveCYgaQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9u
KQotICAgICAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRleHRDb250ZW50
LnN1YnN0cmluZyhub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9u
IC0gbm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgcGFyYWdy
YXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnN1YnN0cmlu
Zyhub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVw
bGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOwogICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVp
bGRlci5hcHBlbmQoc3BhY2UpOwogICAgICAgICBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0
aW9uID0gcG9zaXRpb247CiAgICAgfQogICAgIGlmIChub25SZXBsYWNlZENvbnRlbnRTdGFydFBv
c2l0aW9uIDwgY29udGVudExlbmd0aCkKLSAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIu
YXBwZW5kKHRleHRDb250ZW50LnJpZ2h0KGNvbnRlbnRMZW5ndGggLSBub25SZXBsYWNlZENvbnRl
bnRTdGFydFBvc2l0aW9uKSk7CisgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVu
ZChTdHJpbmdWaWV3KHRleHRDb250ZW50KS5yaWdodChjb250ZW50TGVuZ3RoIC0gbm9uUmVwbGFj
ZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOwogfQogCiBzdHJ1Y3QgQmlkaUNvbnRleHQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDIzMWQzNmJjMGEzNzFkNDk2NTU3Y2JiNTJk
MGU3MzE4MTA4YzYwYjguLjc2ZDJhYjQ2NGRmNzllZjE3ODZjYzZkNjEwZmJmNWYyYzg3ZGY2NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIHVuc2lnbmVkJiBjaGFyYWN0CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZU
eXBlPFJlbmRlck9iamVjdD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKSkgewog
ICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBTdHJpbmcg
dGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkKS50ZXh0KCk7Ci0gICAgICAgICAgICB0
ZXh0ID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGF1dG8gbGVuID0gc3Rk
OjptaW4oY2hhcmFjdGVyc0xlZnQsIHRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgc3RyZWFt
IDw8IHRleHQubGVmdChsZW4pOwotICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuOwor
ICAgICAgICAgICAgYXV0byB0ZXh0VmlldyA9IFN0cmluZ1ZpZXcodGV4dCkuc3RyaXBXaGl0ZVNw
YWNlKCk7CisgICAgICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKGNoYXJhY3RlcnNMZWZ0
LCB0ZXh0Vmlldy5sZW5ndGgoKSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgdGV4dFZpZXcubGVm
dChsZW5ndGgpOworICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuZ3RoOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZShk
b3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggNDBkMDIwNTM4YzM5MmE0NTM5
NTVhOTJlNGM2MWRhZDAzODMwOWViNC4uNmFiZjY1ZmM3ZmY2ZWVlZDExM2M4MWZmYmE3YjUxYTQ3
YmFkZDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0yMjgsNyAr
MjI4LDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUucmVuZGVy
ZXIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1w
dHkoKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlKS5m
aW5kKGlzTm90U3BhY2VPck5ld2xpbmUpID09IG5vdEZvdW5kOwogfQogCiBzdGF0aWMgYm9vbCBp
bml0aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgRmxvYXRTaXplIG1hcmdpbiwgYm9vbCBpbmRpY2F0
ZXNDdXJyZW50U2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5
ZWMwMTcyYTIxYTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li42ZGM1NDgyMmZlYzZlOGQ0
MjI3YTE5YWFhOTBmY2U3MzM1MzgxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNw
cApAQCAtNjkzLDcgKzY5Myw3IEBAIERlY2ltYWwgRGVjaW1hbDo6ZnJvbURvdWJsZShkb3VibGUg
ZG91YmxlVmFsdWUpCiAgICAgcmV0dXJuIG5hbigpOwogfQogCi1EZWNpbWFsIERlY2ltYWw6OmZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpCitEZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmco
U3RyaW5nVmlldyBzdHIpCiB7CiAgICAgaW50IGV4cG9uZW50ID0gMDsKICAgICBTaWduIGV4cG9u
ZW50U2lnbiA9IFBvc2l0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVjaW1hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCmluZGV4IDU5Y2Ri
MThkODIxYzZiYzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjVhNTQwMzRkMzIzMmI2ZjZjMDNj
M2ZjZjgzZTFhY2U4OWU0ZDU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKQEAgLTE0
OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gIGV4cG9uZW50LW1hcmtlciA6Oj0gJ2UnIHwg
J0UnCiAgICAgLy8gIGRpZ2l0IDo6PSAnMCcgfCAnMScgfCAuLi4gfCAnOScKICAgICAvLyBOb3Rl
OiBmcm9tU3RyaW5nIGRvZXNuJ3Qgc3VwcG9ydCAiaW5maW5pdHkiIGFuZCAibmFuIi4KLSAgICBz
dGF0aWMgRGVjaW1hbCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNp
bWFsIGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIERlY2ltYWwgaW5maW5pdHko
U2lnbik7CiAgICAgc3RhdGljIERlY2ltYWwgbmFuKCk7CiAgICAgc3RhdGljIERlY2ltYWwgemVy
byhTaWduKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVW
YWxpZGF0aW9uLmNwcAppbmRleCBjNzQzMTg5OTI4YjNmNmE5YmIzOWY2ZmY0ZmMwOTkzZmUwOTBj
YjU0Li5jNjJmNzE5NTBhY2FlYzMzMTBmMTJhZTNhYTUwOTM4ODY1YzU5ZTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBA
IC0yMTMsOSArMjEzLDkgQEAgaW5saW5lIFN0cmluZ1ZpZXcgdHJpbVRvTmV4dFNlcGFyYXRvcihT
dHJpbmdWaWV3IHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nLmxlZnQoc3RyaW5nLmZpbmQoaXND
YWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCi1zdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCitzdGF0
aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBTdHJpbmdWaWV3Pj4gcGFyc2VDYWNoZUhl
YWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKIHsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gcmVzdWx0OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nVmlldywgU3Ry
aW5nVmlldz4+IHJlc3VsdDsKIAogICAgIFN0cmluZyBzYWZlSGVhZGVyU3RyaW5nID0gaGVhZGVy
LnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9sQ2hhcmFjdGVyT3JTcGFjZSk7CiAgICAgU3RyaW5n
VmlldyBzYWZlSGVhZGVyID0gc2FmZUhlYWRlclN0cmluZzsKQEAgLTIzNiw3ICsyMzYsNyBAQCBz
dGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBHZXQgZGlyZWN0aXZlIG5hbWUsIHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiBl
cXVhbCBzaWduLCB0aGVuIGFkZCB0byBtYXAKLSAgICAgICAgU3RyaW5nIGRpcmVjdGl2ZSA9IHRy
aW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1YWxTaWdu
UG9zaXRpb24gLSBwb3MpKS50b1N0cmluZygpOworICAgICAgICBTdHJpbmdWaWV3IGRpcmVjdGl2
ZSA9IHRyaW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1
YWxTaWduUG9zaXRpb24gLSBwb3MpKS50b1N0cmluZygpOwogICAgICAgICBwb3MgKz0gbmV4dEVx
dWFsU2lnblBvc2l0aW9uIC0gcG9zICsgMTsKIAogICAgICAgICBTdHJpbmdWaWV3IHZhbHVlID0g
c2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBtYXggLSBwb3MpOwpAQCAtMjk3LDcgKzI5Nyw3IEBA
IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAg
ICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOwor
ICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0Rv
dWJsZShvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubWF4QWdlID0gU2Vjb25kcyB7IG1heEFnZSB9OwogICAgICAgICAgICAgfSBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4
LXN0YWxlIikpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBh
cnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgICAgICBkb3VibGUgbWF4U3RhbGUgPSBkaXJl
Y3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAgIGRvdWJsZSBt
YXhTdGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9rKTsKICAgICAgICAgICAg
ICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IFNlY29u
ZHMgeyBtYXhTdGFsZSB9OwogICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAiaW1tdXRhYmxlIikpIHsKQEAgLTMy
Myw3ICszMjMsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGly
ZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYm9vbCBvazsK
LSAgICAgICAgICAgICAgICBkb3VibGUgc3RhbGVXaGlsZVJldmFsaWRhdGUgPSBkaXJlY3RpdmVz
W2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFsZVdo
aWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9rKTsKICAgICAg
ICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdGFsZVdoaWxl
UmV2YWxpZGF0ZSA9IFNlY29uZHMgeyBzdGFsZVdoaWxlUmV2YWxpZGF0ZSB9OwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAppbmRleCA5ZDUwM2I1YTkyOTkyZTdlZTFhZjMwZjA5ZTFkZjE4YTU2NzliODIxLi4yNjU1ODEy
OTNjZDlhNGM4Y2IyYjE2NWYwOWM0MzA1MzRmNDg2ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMxLDcgKzMzMSw3IEBAIHN0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IC8vIHRoYXQgYXJpc2VzIGZyb20gcXVvdGVkLXN0cmluZywgbm9yIGRvZXMgdGhpcyBmdW5jdGlv
biBwcm9wZXJseSB1bnF1b3RlCiAvLyBhdHRyaWJ1dGUgdmFsdWVzLiBGdXJ0aGVyIHRoaXMgZnVu
Y3Rpb24gYXBwZWFycyB0byBwcm9jZXNzIHBhcmFtZXRlciBuYW1lcwogLy8gaW4gYSBjYXNlLXNl
bnNpdGl2ZSBtYW5uZXIuIChUaGVyZSBhcmUgbGlrZWx5IG90aGVyIGJ1Z3MgYXMgd2VsbC4pCi1T
dHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihTdHJpbmdWaWV3IHZhbHVl
KQorU3RyaW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1Zp
ZXcgdmFsdWUpCiB7CiAgICAgZm9yIChhdXRvIGtleVZhbHVlUGFpciA6IHZhbHVlLnNwbGl0KCc7
JykpIHsKICAgICAgICAgc2l6ZV90IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBhaXIuZmluZCgn
PScpOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIFN0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERp
c3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCiAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+
IDEgJiYgdmFsdWVbMF0gPT0gJ1wiJykKICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3Ry
aW5nKDEsIHZhbHVlLmxlbmd0aCgpIC0gMik7CiAKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5k
ZXggZDVjZTc4MjliNWFkMTYyM2Y2OTcxMzhmNzI5NjU4ZGMwZDMzNzNmZi4uYWUyNDk4NWYzZTgw
ZjA0OWJlZTFiYTBhYTc3NTg1NjJmYTg1NDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtNzksNyArNzksNyBAQCBXRUJDT1JFX0VYUE9S
VCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKIGJvb2wg
aXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihT
dHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3Qg
U3RyaW5nJik7Ci1TdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihTdHJp
bmdWaWV3KTsKK1N0cmluZ1ZpZXcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihT
dHJpbmdWaWV3KTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nVmlldyBleHRyYWN0Q2hhcnNldEZyb21NZWRp
YVR5cGUoU3RyaW5nVmlldyk7CiBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90
ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24s
IHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IDFhOWI4M2Vl
ZjU3NzIxZmZjNWUxMTBhMDgzNGJiMDMxMDY3NTVlMTMuLmNmZWZlMWViMjVjZGY5Y2ZmMjhmYjBl
NTNkOTIyZmQ1ODdmN2IwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgS2V5VmFsdWVNYXAgcmV0
cmlldmVLZXlWYWx1ZVBhaXJzKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZm
ZQogICAgICAgICAgICAgLy8gVGhpcyBpcyBub3QgYSBrZXkgdmFsdWUgcGFpciwgaWdub3JlLgog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAga2V5ID0gU3RyaW5nVmll
dyhsaW5lKS5sZWZ0KHNlbWljb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnN0
cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUpLmxlZnQoc2Vt
aWNvbG9uSW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CiAgICAgICAgIHZhbHVlLmFwcGVuZChTdHJpbmdWaWV3KGxpbmUpLnN1YnN0cmluZyhzZW1pY29s
b25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhlIGxhc3QgcHJvcGVydHkgaWYg
dGhlcmUgaXMgb25lLgpAQCAtMTIwLDkgKzEyMCw5IEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1F
SGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogICAg
IHJldHVybiBtaW1lSGVhZGVyOwogfQogCi1NSU1FSGVhZGVyOjpFbmNvZGluZyBNSU1FSGVhZGVy
OjpwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKGNvbnN0IFN0cmluZyYgdGV4dCkKK01JTUVI
ZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6OnBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2Rpbmco
U3RyaW5nVmlldyB0ZXh0KQogewotICAgIFN0cmluZyBlbmNvZGluZyA9IHRleHQuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgYXV0byBlbmNvZGluZyA9IHRleHQuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuY29kaW5nLCAiYmFzZTY0Iikp
CiAgICAgICAgIHJldHVybiBCYXNlNjQ7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGVuY29kaW5nLCAicXVvdGVkLXByaW50YWJsZSIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAppbmRleCAwMDhhZWMyZTA3ZTM2OTg3NzBmMGMx
MzJmNTg2MmEzNGE1YTJjYjFjLi5kYTEwNjlhNGUxNGJkOGZiNTc5MDI5Y2IyM2UxMzIzYWEyYzhh
NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaApA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1JTUVIZWFkZXIoKTsKIAot
ICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKGNvbnN0IFN0
cmluZyYpOworICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CiAgICAgU3RyaW5nIG1f
Y2hhcnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFy
c2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRDb250ZW50VHlwZS5jcHAKaW5kZXggNmI5MTY1OTE0YzFmYzEyMzIzODk3Y2E1MmQ3MzcyZDc2
NjEzNTEyOC4uZmFmYTMyMTFmMTMzNWUzNjY5ZDRmNzcyOGJjM2MzNGRkYzA2MjZlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlw
ZS5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250
ZW50VHlwZShTdHJpbmcmJiBjb250ZW50UmFuZ2UsIE1vZGUgbW9kZSkKIHsKICAgICBtX21pbWVU
eXBlID0gV1RGTW92ZShjb250ZW50UmFuZ2UpOwogICAgIGlmIChtb2RlID09IE1vZGU6Ok1pbWVT
bmlmZikKLSAgICAgICAgbV9taW1lVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNw
YWNlcyhtX21pbWVUeXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgICAgICBtX21p
bWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKFN0cmluZ1ZpZXcobV9t
aW1lVHlwZSkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgZWxzZQogICAgICAgICBt
X21pbWVUeXBlID0gbV9taW1lVHlwZS5zdHJpcFdoaXRlU3BhY2UoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKaW5kZXggZDA2NmVhNDcyYzU0ZTY1MjA3OWRiYTQxOGFiMjQ3YTgzZmE4MjI1Yi4uNzgzODU2
YTMyZjY1ODE0NDcxODhiNTA1NDRkMTAwMTY3NjEyMmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAg
LTc4MSw3ICs3ODEsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQo
KSBjb25zdAogICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CiAKICAgICBhdXRvIHZhbHVlID0gbV9o
dHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKTsK
LSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUubGVmdCh2YWx1
ZS5maW5kKCc7JykpLnN0cmlwV2hpdGVTcGFjZSgpLCAiYXR0YWNobWVudCIpOworICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHZhbHVlKS5sZWZ0KHZh
bHVlLmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7CiB9CiAKIGJv
b2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpIGNvbnN0
CkBAIC03OTYsOCArNzk2LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgY29uc3QKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGNvbnRlbnREaXNwb3NpdGlvblZpZXcubGVmdChjb250ZW50RGlzcG9zaXRpb25WaWV3
LmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50IikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250
ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uVmlldyk7Ci0gICAgcmV0dXJuICFmaWxl
bmFtZS5pc051bGwoKTsKKyAgICByZXR1cm4gIWZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpb24oY29udGVudERpc3Bvc2l0aW9uVmlldykuaXNOdWxsKCk7CiB9CiAKIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpTb3VyY2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNvdXJjZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXNwb25zZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlUmVzcG9uc2VDdXJsLmNwcAppbmRleCAyOTMxZDA1ZDRjMjlhM2Q2OTcwYzlmN2FkN2Zj
MGY5NmRjNzUyMDViLi5mNmMxMDcyY2ZlMmVjNjJhYWY3ZGMwZTEyN2VkNDc3OTgyODVlNDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFJlc291
cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlSW5mbyhDZXJ0aWZpY2F0ZUluZm8mJiBjZXJ0aWZp
Y2F0ZUluZm8pCiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNw
b3NpdGlvbihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlv
bikpOworICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKSkudG9TdHJpbmco
KTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpzaG91bGRSZWRpcmVjdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA1NWMzNGM4
ZGIzZDg3YjRjZDRiNDU1OTg4NDRmMDVkYTEyM2VkZTc5Li5hNzg3M2ExNTNmNjJlNzNhZWNlOTIx
NGRkZjFhZTUxZDU5OWY4NjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNl
OjpzZXRCdXN5SGFuZGxlcihpbnQoKmhhbmRsZXIpKHZvaWQqLCBpbnQpKQogICAgICAgICBMT0co
U1FMRGF0YWJhc2UsICJCdXN5IGhhbmRsZXIgc2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNlIik7CiB9
CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcm
IHF1ZXJ5KQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KFN0cmluZ1Zp
ZXcgcXVlcnkpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50U2xvdyhx
dWVyeSk7CiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5k
KCk7CkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xlYXJBbGxUYWJs
ZXMoKQogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQogICAgICAg
ICB0YWJsZXMuYXBwZW5kKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAgZm9yIChhdXRv
JiB0YWJsZSA6IHRhYmxlcykgewotICAgICAgICBpZiAoIWV4ZWN1dGVDb21tYW5kU2xvdygiRFJP
UCBUQUJMRSAiICsgdGFibGUpKQorICAgICAgICBpZiAoIWV4ZWN1dGVDb21tYW5kU2xvdyhtYWtl
U3RyaW5nKCJEUk9QIFRBQkxFICIsIHRhYmxlKSkpCiAgICAgICAgICAgICBMT0coU1FMRGF0YWJh
c2UsICJVbmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsIHRhYmxlLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICB9CiB9CkBAIC03MjMsNyArNzIzLDcgQEAgc3RhdGljIEV4cGVjdGVkPHNxbGl0ZTNfc3RtdCos
IGludD4gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZSYKICAgICBy
ZXR1cm4gc3RhdGVtZW50OwogfQogCi1FeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FM
aXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJp
bmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBh
cmVTdGF0ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgQ1N0cmluZyBx
dWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0ZjgoKTsKICAgICBhdXRvIHNx
bFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoKnRoaXMsIHF1ZXJ5LmRh
dGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudChBU0NJSUxp
dGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudCB7ICp0aGlzLCBzcWxTdGF0ZW1l
bnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50Piwg
aW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmlu
ZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50
PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVl
cnlTdHJpbmcpCiB7CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVT
cGFjZSgpLnV0ZjgoKTsKICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBh
cmVTdGF0ZW1lbnQoKnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA5MTYwMTM0ODE3
NTkyMTNhYTUyZDE5OGE0N2UyZTVjNGQ2YTk4NzM0Li44NmZjMDQ1ODhiZDhlMzg1ZmU0ODYyNTQx
NWM1NGU5Nzg3NmRkNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09wZW4oKSBj
b25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZSgpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coU3RyaW5nVmll
dyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwp
OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoU3RyaW5nVmlldyk7
CkBAIC03NSw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0
YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhw
ZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVTdGF0ZW1lbnRTbG93KFN0cmluZ1Zp
ZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwg
aW50PiBwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhl
YXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOworICAgIFdFQkNPUkVfRVhQT1JU
IEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3Rh
dGVtZW50U2xvdyhTdHJpbmdWaWV3IHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3Rl
ZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVwYXJlSGVhcFN0YXRlbWVudChB
U0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAgLy8gQWJvcnRzIHRoZSBjdXJyZW50IGRhdGFiYXNl
IG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQgc2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaAppbmRleCA1NGQyZWI3MjgyYzM5NDg3NTZiZDg1MmFhOTZiZTMxM2IxNzQ5
N2Q3Li4wYTZjMDk3ZjNkNWNkYjc1NjA5M2Q0MWZhYjdiNmZhZmE1ZjI0Yjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xMTUsOSArMTE1LDkgQEAgaW5saW5l
IFNlc3Npb25GZWF0dXJlIHNlc3Npb25GZWF0dXJlRnJvbVJlZmVyZW5jZVNwYWNlVHlwZShSZWZl
cmVuY2VTcGFjZVR5cGUgcmUKICAgICByZXR1cm4gU2Vzc2lvbkZlYXR1cmU6OlJlZmVyZW5jZVNw
YWNlVHlwZVZpZXdlcjsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbkZlYXR1cmU+
IHBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoraW5s
aW5lIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbkZlYXR1cmU+IHBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNj
cmlwdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIFN0cmluZyBmZWF0dXJlID0gc3RyaW5n
LnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgYXV0byBm
ZWF0dXJlID0gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CiAKICAgICBpZiAoZmVhdHVyZSA9PSAidmlld2VyIl9zKQogICAgICAgICByZXR1cm4gU2Vz
c2lvbkZlYXR1cmU6OlJlZmVyZW5jZVNwYWNlVHlwZVZpZXdlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCBjNjkyYjQwNzQyYzM3N2Y5OWYwYzg5NGZi
NjI1N2I2MmM0M2Y0M2YwLi41MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYwZTIwNDYxODRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC01Niwx
MSArNTYsMTEgQEAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6U1ZHQW5pbWF0aW9uRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKIHsKIH0KIAotc3RhdGljIHZvaWQg
cGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBWZWN0b3I8ZmxvYXQ+JiByZXN1bHQs
IGJvb2wgdmVyaWZ5T3JkZXIpCitzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKFN0cmluZ1ZpZXcg
cGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKIHsKICAgICBy
ZXN1bHQuY2xlYXIoKTsKICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIGZvciAoU3RyaW5n
VmlldyB0aW1lU3RyaW5nIDogU3RyaW5nVmlldyhwYXJzZSkuc3BsaXQoJzsnKSkgeworICAgIGZv
ciAoYXV0byB0aW1lU3RyaW5nIDogcGFyc2Uuc3BsaXQoJzsnKSkgewogICAgICAgICBib29sIG9r
OwogICAgICAgICBmbG9hdCB0aW1lID0gdGltZVN0cmluZy50b0Zsb2F0KG9rKTsKICAgICAgICAg
aWYgKCFvayB8fCB0aW1lIDwgMCB8fCB0aW1lID4gMSkKQEAgLTE1Myw5ICsxNTMsMTAgQEAgdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICAgICAgLy8gUGVyIHRoZSBTTUlMIHNwZWNpZmljYXRp
b24sIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlLAogICAgICAgICAvLyBhbmQgd2hp
dGUgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciBzZW1pY29sb24gc2VwYXJhdG9ycywgaXMgYWxsb3dl
ZCBhbmQgd2lsbCBiZSBpZ25vcmVkLgogICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9T
VkcxMS9hbmltYXRlLmh0bWwjVmFsdWVzQXR0cmlidXRlCi0gICAgICAgIG1fdmFsdWVzID0gdmFs
dWUuc3RyaW5nKCkuc3BsaXQoJzsnKTsKLSAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFs
dWVzKQotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAg
ICAgbV92YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAgdmFsdWUuc3RyaW5nKCkuc3BsaXQoJzsnLCBb
dGhpc10oU3RyaW5nVmlldyBpbm5lclZhbHVlKSB7CisgICAgICAgICAgICBtX3ZhbHVlcy5hcHBl
bmQoaW5uZXJWYWx1ZS5zdHJpcFdoaXRlU3BhY2UoKS50b1N0cmluZygpKTsKKyAgICAgICAgfSk7
CiAKICAgICAgICAgdXBkYXRlQW5pbWF0aW9uTW9kZSgpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KaW5kZXggYjI5NDAzZWZjZTJiOGVjM2E0OGMyNTQ2OGYxODk2Njc5ZjgxNTZjNS4uZWY2
NGM0ZDY1MWYxNWM3OGJlNzhkMGY1OTdlNjUzZDlhMjk4YzgyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAt
MTY0LDggKzE2NCw3IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBv
cHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltCiAgICAgRWRpdG9yJiBlZGl0
b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBv
cHVwSW5mbyh0cnVlKTsKIAotICAgIC8vIEZJWE1FOiBJbmVmZmljaWVudCB0byBjYWxsIHN0cmlw
V2hpdGVTcGFjZSB0byBkZXRlY3Qgd2hldGhlciBhIHN0cmluZyBoYXMgYSBub24td2hpdGVzcGFj
ZSBjaGFyYWN0ZXIgaW4gaXQuCi0gICAgaWYgKHBsYWluVGV4dChyYW5nZSkuc3RyaXBXaGl0ZVNw
YWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4dChyYW5nZSkuZmluZChpc05vdFNw
YWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5n
RGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDBhZWU3YjY5YWZkNWI0YTZmNzY4ZjIw
NWY4YTAyOGMxOGVhNzg4OGMuLjM3Mjk0NmQ5ZjdkOGM3YmNkZDY0Y2M1OTM3ZDM3YzFlNDA3ZGYx
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTUxNyw3ICs1MTcsNyBAQCAr
IChXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvKV9kaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2U6KGNvbnN0IFdlYkNvcmU6OlNpbQogICAgIC8vIERpY3Rpb25hcnkgQVBJIHdpbGwgYWNjZXB0
IGEgd2hpdGVzcGFjZS1vbmx5IHN0cmluZyBhbmQgZGlzcGxheSBVSSBhcyBpZiBpdCB3ZXJlIHJl
YWwgdGV4dCwKICAgICAvLyBzbyBiYWlsIG91dCBlYXJseSB0byBhdm9pZCB0aGF0LgogICAgIFdl
YkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8gcG9wdXBJbmZvOwotICAgIGlmIChwbGFpblRleHQo
cmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkgeworICAgIGlmIChwbGFpblRleHQo
cmFuZ2UpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0gbm90Rm91bmQpIHsKICAgICAgICAg
ZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwogICAgICAgICBy
ZXR1cm4gcG9wdXBJbmZvOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="486447"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457761</attachid>
            <date>2022-04-16 17:58:25 -0700</date>
            <delta_ts>2022-04-16 20:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220416175824.patch</filename>
            <type>text/plain</type>
            <size>50069</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLjY1OGVmYTE5NzE0YTExMjNhMWZkNmFlYzI4N2VlZWZiOGUzNDg5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTm90U3BhY2VP
ck5ld2xpbmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjb21w
bGV4IFN0cmluZzo6aW5zZXJ0KCkgd2l0aCBhIHNpbXBsaWZpZWQgbWFrZVN0cmluZ0J5SW5zZXJ0
aW5nKCkgZnJlZSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxMGIxYTk4OGNiOTgxMTRjM2ZiYzdl
ZDk4MmJiMjZjODAyYjI2ZWIuLmI0MmIzYTU4NmQ3NDI2Mjk0OGVjOGZiZTljN2I0ZDYyNGUwMjAy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudF0pOgor
ICAgICAgICAoYXBwZW5kU3RyaW5nVG9SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW5kZXJlckZvclZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OnNldE1l
ZGlhVHlwZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFn
bWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICog
aHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OnJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFwcGVuZCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByaW50VGV4dEZvclN1
YnRyZWUpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vRGVj
aW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0
dXJlRGVzY3JpcHRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXlUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGNvbXBsZXggU3RyaW5n
OjppbnNlcnQoKSB3aXRoIGEgc2ltcGxpZmllZCBtYWtlU3RyaW5nQnlJbnNlcnRpbmcoKSBmcmVl
IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3ZWRhM2VkMWQ2NWE2NDc0MGM0YTQzYTY3ODVjNjEyN2Vl
ZTQ0OTcuLjZkNmJmMjhhNjEzZTUzZDkxNjYzZDVmNWY4YWNjYzU1ZjMxYWYxZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFnZSBTdHJp
bmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJpbmcgYWxs
b2NhdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9y
UmFuZ2UpOgorCiAyMDIyLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9pZCBzb21l
IFN0cmluZyBhbGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0MzIz
Y2RmZjg4NjQ1ZThkZGQyY2U0ZGRmZTYzZWIzMGEyNGI4YmIuLjhlMmY5YmFjNzljNjNiZDIwZjM1
NTFjZjMwMzRmOTA0OTU5ZjJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcg
aW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBhbGxvY2F0aW9u
cy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToK
KyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0
cmFuc2l0aW9uOl0pOgorCiAyMDIyLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9p
ZCBzb21lIFN0cmluZyBhbGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5k
ZXggNThiODU0NTZmODZjNWNhODRlZTNlOTVlYTRiMjNiNGI0MzE0NDVjMS4uM2M0MTc0ZTUyNmFh
NjY1MGRjZGU1YmY1Y2VhYzU5YTM2Y2NkMzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC04MzUsMTMgKzgzNSw2IEBAIGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCog
b2spCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgb2spOwogfQogCi1zaXplX3QgU3RyaW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1
bmN0aW9uLCBzdGFydCk7Ci0gICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBD
aGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAppbmRleCA3MzUwOGVjZWI2NTVhNWE1ZGZjM2NiNTdjMWY4YmIxODcyMjJh
ZmI3Li40M2M5NTQ5ZjY1MzYwMTcwZTUxZGEwODYxNWQ2MDhmNDU5NjkzZTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDMwLDcgKzQzMCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
ZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZp
bmQoY2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQo
VUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfaW52b2NhYmxlX3Jfdjxib29sLCBDb2RlVW5pdE1hdGNoRnVuY3Rp
b24sIFVDaGFyPj4qID0gbnVsbHB0cj4KKyAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nVmlldyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KTsKQEAgLTYwMCw2ICs2MDEs
NyBAQCBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5n
SW1wbCopOwogLy8gRklYTUU6IFNob3VsZCByZW5hbWUgdGhpcyB0byBtYWtlIGNsZWFyIGl0IHVz
ZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLgogLy8gTW9zdCBXZWJLaXQg
Y2FsbGVycyBkb24ndCB3YW50IHRoYXQgd291bGQgdXNlIGlzQVNDSUlTcGFjZSBvciBpc0hUTUxT
cGFjZSBpbnN0ZWFkLgogYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyMzIpOworYm9vbCBpc05v
dFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3Rl
clR5cGUqKTsKIApAQCAtNzA0LDYgKzcwNiwxNCBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6
OmZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKICAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+
Kj4KK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0
YXJ0KTsKKyAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgbWF0
Y2hGdW5jdGlvbiwgc3RhcnQpOworfQorCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBhLCBTdHJpbmdJbXBsKiBiKQogewogICAgIHJldHVybiBlcXVhbElnbm9y
aW5nTnVsbGl0eShhLmRhdGEoKSwgYS5zaXplKCksIGIpOwpAQCAtNzU0LDYgKzc2NCwxMSBAQCBp
bmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHJldHVy
biBpc0xhdGluMShjaGFyYWN0ZXIpID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJE
aXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKK2lubGlu
ZSBib29sIGlzTm90U3BhY2VPck5ld2xpbmUoVUNoYXIzMiBjaGFyYWN0ZXIpCit7CisgICAgcmV0
dXJuICFpc1NwYWNlT3JOZXdsaW5lKGNoYXJhY3Rlcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3Ry
aW5nKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZykKIHsKICAgICBBU1NFUlQoc3RyaW5nKTsK
QEAgLTEzMTQsMyArMTMyOSw1IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBQcmVkaWNhdGUmIGZpbmRNYXRjaCkKIHVzaW5nIFdURjo6
U3RhdGljU3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1
YWw7Cit1c2luZyBXVEY6OmlzTm90U3BhY2VPck5ld2xpbmU7Cit1c2luZyBXVEY6OmlzU3BhY2VP
ck5ld2xpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1NGQwYmJlZmUwN2NiZDU5YTU3
MzhlOTQ1NGExODFlMjFiMDFkZjNkLi4yOWExY2Y2MzU5Nzc4YTU2ZjQ4YmQ3MzkzODQzM2RjY2M1
ZWVjYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsK
ICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlv
biwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRN
YXRjaEZ1bmN0aW9uLCBVQ2hhcj4+KiA9IG51bGxwdHI+CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVu
aXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9CiAgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQg
c3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBz
dGFydCkgOiBub3RGb3VuZDsgfQogCkBAIC02NDMsNyArNjQ0LDYgQEAgdXNpbmcgV1RGOjpudWxs
U3RyaW5nOwogdXNpbmcgV1RGOjplcXVhbDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKLXVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVz
aW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNjgz
ZGZjZDBjNGU1ZDgzNmEzOTg0ZjM1ZWMyMWFkMTBmYTM2OTY0Yi4uYWNhY2JmNzI3NmE4NWQwYjkx
YzllNTViYjMwZjI2NzBiZmM2OGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OkRpc3BsYXkgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VEaXNwbGF5KGNvbnN0IEpT
T046CiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5OjpCcm93c2Vy
OwogICAgIH0KIAotICAgIHN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWUuc3RyaXBXaGl0ZVNwYWNl
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBzdHJpbmdWYWx1ZSA9IFN0cmluZ1Zp
ZXcoc3RyaW5nVmFsdWUpLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CiAKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImZ1bGxzY3JlZW4iKQogICAgICAgICByZXR1
cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6RnVsbHNjcmVlbjsKQEAgLTIzMCw3ICsy
MzAsNyBAQCBWZWN0b3I8QXBwbGljYXRpb25NYW5pZmVzdDo6SWNvbj4gQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6cGFyc2VJY29ucyhjb25zdCBKUwogICAgICAgICAgICAgICAgIHB1cnBvc2Vz
LmFkZChBcHBsaWNhdGlvbk1hbmlmZXN0OjpJY29uOjpQdXJwb3NlOjpBbnkpOwogICAgICAgICAg
ICAgICAgIGN1cnJlbnRJY29uLnB1cnBvc2VzID0gcHVycG9zZXM7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHB1cnBvc2VTdHJpbmdWYWx1ZSA9IHB1cnBvc2VTdHJpbmdW
YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgICAg
ICAgICAgICAgIHB1cnBvc2VTdHJpbmdWYWx1ZSA9IFN0cmluZ1ZpZXcocHVycG9zZVN0cmluZ1Zh
bHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGtleXdvcmRzID0gcHVycG9zZVN0cmluZ1ZhbHVlLnNw
bGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoIiAiKTsKIAogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYga2V5d29yZCA6IGtleXdvcmRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4
IDQyZDBiN2MwOTYzMDU1NGRhZGY3ZTYyNGE5Y2VlZWQxMjQ0NGQwNDMuLjQ1NWFhY2U4ODBkZDlm
Y2M4NGFhNWVlYmQ3ZGRiMzA4MzIzYzQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0x
ODEsNyArMTgxLDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmVzdGFibGlzaFN0YXRlbWVudCgp
CiAgICAgcmV0dXJuIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChzcWwpOwogfQogCi1ib29sIFNRTGl0
ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQorYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdWaWV3IHNxbCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiQ3JlYXRpbmcgY3Vyc29yIHdpdGggU1FMIHF1ZXJ5OiBc
IiVzXCIiLCBzcWwudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCBmNzg3
OTMyNjY1NjQ3MDQ4OTBkMzBjMGExZjFlMmYwMTJjY2NmMzVhLi42MDIyNjk0MGM1NDY5MTQ5ZWVm
NGEwOTA5MTJhZmYwNzE4MDZlNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC04MSw3ICs4MSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGVzdGFibGlzaFN0YXRlbWVudCgpOwot
ICAgIGJvb2wgY3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKTsKKyAgICBi
b29sIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdWaWV3IHNxbCk7CiAgICAgYm9vbCBiaW5k
QXJndW1lbnRzKCk7CiAKICAgICBib29sIHJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCBlNjcwMDJkMTdkY2YzNDgzMThkMTg1YjM0N2IxZTI2MGUyYmQ5YjYz
Li4wMThkYmI5OWIxOGZiNjdiOGIwZGMwOTM4ODI3ODE3YWJkYjJjNjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMTEyLDI5ICsx
MTIsMjkgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogbWVz
c2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyht
ZXNzYWdlLCAiICgiLCBzcWxpdGVFcnJvckNvZGUsICcgJywgc3FsaXRlRXJyb3JNZXNzYWdlLCAn
KScpOwogfQogCi1zdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRp
YyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBTdHJpbmdW
aWV3IHF1ZXJ5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIGlmICghc3RhdGVtZW50KSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHNldCB2YWx1
ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJh
c2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCB2YWx1ZSk7CiAKICAgICBpZiAoc3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gc3RlcCBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0ZXAgc3Rh
dGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCitzdGF0
aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRi
LCBTdHJpbmdWaWV3IHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKIHsKICAgICBhdXRvIHN0
YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRl
bWVudCkgewotICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFyaW5nIHN0YXRlbWVu
dCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0YXRlbWVudC5lcnJv
cigpLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRXJyb3IgKCVp
KSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAo
JXMpIiwgc3RhdGVtZW50LmVycm9yKCksIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGJvb2wgcmV0
cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3Ry
aW5nJiBxdWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgTE9HX0VSUk9SKCJF
cnJvciAoJWkpIHJlYWRpbmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0
LCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHJlYWRp
bmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBxdWVyeS51dGY4KCku
ZGF0YSgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggMTk0NDliM2VlNWEwNDIzYzBlYWY3MzQ0OWE4YmIyNjYzOTVh
Y2U5OS4uYWQzMzY2YjE5NzBmZTA2YmVkNmI4YTUwMTZiNzE1ZjkxYmVjZmM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTQsNyArMTExNCw3IEBAIC0g
KEJPT0wpZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudAogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDkyCiAgICAgICAgIHJldHVybiBz
ZWxmLmF4QmFja2luZ09iamVjdC0+aXNLZXlib2FyZEZvY3VzYWJsZSgpCiAgICAgICAgICAgICAm
JiBbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XSA9PSAwCi0gICAgICAgICAgICAmJiBz
ZWxmLmF4QmFja2luZ09iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLnN0cmlwV2hp
dGVTcGFjZSgpLmxlbmd0aCgpID4gMDsKKyAgICAgICAgICAgICYmIHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5kZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkuZmluZChpc05vdFNwYWNlT3JOZXdsaW5l
KSAhPSBub3RGb3VuZDsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOgogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFR
dWVyeVBhcnNlci5oCmluZGV4IGU2YzE1ZWMzMDZiZjQ3ODNiOWM3ZTM1ZmE1Mzk3NjE1MjdjOTAz
YzkuLjAxY2Q1M2UzM2NjZjllMWQzOTk0MTJlYmY0MGM2YjUyM2NlZmNmYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oCkBAIC05Myw3ICs5Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgYWRkRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJhbmdl
Jik7CiAgICAgICAgIGJvb2wgbGFzdEV4cHJlc3Npb25WYWxpZCgpOwogICAgICAgICB2b2lkIHJl
bW92ZUxhc3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIHZvaWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKSB7IG1fbWVkaWFUeXBlID0gbWVkaWFUeXBlOyB9CisgICAgICAgIHZv
aWQgc2V0TWVkaWFUeXBlKFN0cmluZyYmIG1lZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IFdURk1v
dmUobWVkaWFUeXBlKTsgfQogCiAgICAgICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJp
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RvcjsgfQogICAgICAgICBWZWN0b3I8TWVk
aWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3YjRiNzFhYjkzYzZlZDdkNTY4OGY0
ODQ1YjMzNDE4NGViMmMwY2JlLi45NWQ0NGU4ODA4NTg1ZGRmMDQ5MmYyOTA3OTRhMmRiN2RkYjU5
ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMjIxLDcgKzMyMjEsNyBAQCB2
b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkKICAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dCgqcmFu
Z2UpOwogICAgIGlmICh0ZXh0Lmxlbmd0aCgpICE9IDIpCiAgICAgICAgIHJldHVybjsKLSAgICBT
dHJpbmcgdHJhbnNwb3NlZCA9IHRleHQucmlnaHQoMSkgKyB0ZXh0LmxlZnQoMSk7CisgICAgU3Ry
aW5nIHRyYW5zcG9zZWQgPSBtYWtlU3RyaW5nKHRleHRbMV0sIHRleHRbMF0pOwogCiAgICAgLy8g
U2VsZWN0IHRoZSB0d28gY2hhcmFjdGVycy4KICAgICBpZiAobmV3U2VsZWN0aW9uICE9IG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggY2VkMzIzNWVmYjg5ZmFiNzRhZjI5YzZkNWU4MjBmNDcx
OGI2NmRhZi4uMjFlMDJlYTgwYjg2M2JjMjJiYzRhZDliOTlkNGVhNDAxMzA5MTcyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE5MDQsMTUgKzE5MDQs
MTUgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBib29sIHNlbGVjdGVkKSBjb25zdAogICAgICAgICAgICAgICAgIGNhcmV0ID0gcG9z
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPCAwKSB7CiAgICAgICAgICAgICAg
ICAgLy8gdG9vIGZldyBjaGFyYWN0ZXJzIHRvIGxlZnQKLSAgICAgICAgICAgICAgICBzaG93ID0g
dGV4dC5sZWZ0KG1heCAtIDMpICsgIi4uLiI7CisgICAgICAgICAgICAgICAgc2hvdyA9IG1ha2VT
dHJpbmcoU3RyaW5nVmlldyh0ZXh0KS5sZWZ0KG1heCAtIDMpLCAiLi4uIik7CiAgICAgICAgICAg
ICAgICAgY2FyZXQgPSBwb3M7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvcyAtIG1pZCA+PSAw
ICYmIHBvcyArIG1pZCA8PSB0ZXh0TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgLy8gZW5vdWdo
IGNoYXJhY3RlcnMgb24gZWFjaCBzaWRlCi0gICAgICAgICAgICAgICAgc2hvdyA9ICIuLi4iICsg
dGV4dC5zdWJzdHJpbmcocG9zIC0gbWlkICsgMywgbWF4IC0gNikgKyAiLi4uIjsKKyAgICAgICAg
ICAgICAgICBzaG93ID0gbWFrZVN0cmluZygiLi4uIiwgU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJp
bmcocG9zIC0gbWlkICsgMywgbWF4IC0gNiksICIuLi4iKTsKICAgICAgICAgICAgICAgICBjYXJl
dCA9IG1pZDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gdG9vIGZl
dyBjaGFyYWN0ZXJzIG9uIHJpZ2h0Ci0gICAgICAgICAgICAgICAgc2hvdyA9ICIuLi4iICsgdGV4
dC5yaWdodChtYXggLSAzKTsKKyAgICAgICAgICAgICAgICBzaG93ID0gbWFrZVN0cmluZygiLi4u
IiwgU3RyaW5nVmlldyh0ZXh0KS5yaWdodChtYXggLSAzKSk7CiAgICAgICAgICAgICAgICAgY2Fy
ZXQgPSBwb3MgLSAodGV4dExlbmd0aCAtIHNob3cubGVuZ3RoKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21l
bnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmNwcAppbmRleCA5ZjM2ODYwYTI2MTQwZjQ5ZTgyNGQzMjY3ZGUzZWFmOWExMmRjODkxLi4w
YjJkNDNiNWNlOWE0OGFjZjNiMzJiMzkyZDNhZjUwOTY5ZDVmNjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTU1LDE5ICs1NSwxNyBA
QCBzdGF0aWMgU3RyaW5nIGNvbGxlY3REaWdpdHMoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3NpdAogICAgIHJldHVybiBkaWdpdHMudG9TdHJpbmcoKTsK
IH0KIAotc3RhdGljIFN0cmluZyBjb2xsZWN0RnJhY3Rpb24oY29uc3QgTENoYXIqIGlucHV0LCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3NpdGlvbikKK3N0YXRpYyBTdHJpbmdWaWV3IGNv
bGxlY3RGcmFjdGlvbihjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQmIHBvc2l0aW9uKQogewotICAgIFN0cmluZ0J1aWxkZXIgZGlnaXRzOwotCiAgICAgLy8gaHR0
cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjMyNi50eHQKICAgICAvLyBbICIuIiAqRElHSVQgXQog
ICAgIGlmIChpbnB1dFtwb3NpdGlvbl0gIT0gJy4nKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBkaWdpdHMuYXBwZW5kKGlucHV0W3Bvc2l0aW9u
KytdKTsKKyAgICArK3Bvc2l0aW9uOyAvLyBJbmNsdWRlIGluaXRpYWwgcGVyaW9kLgogICAgIHdo
aWxlIChwb3NpdGlvbiA8IGxlbmd0aCAmJiBpc0FTQ0lJRGlnaXQoaW5wdXRbcG9zaXRpb25dKSkK
LSAgICAgICAgZGlnaXRzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7Ci0gICAgcmV0dXJuIGRp
Z2l0cy50b1N0cmluZygpOworICAgICAgICArK3Bvc2l0aW9uOworICAgIHJldHVybiBTdHJpbmdW
aWV3IHsgaW5wdXQsIHBvc2l0aW9uIH07CiB9CiAKIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1l
ZGlhRnJhZ21lbnRVUklQYXJzZXIoY29uc3QgVVJMJiB1cmwpCkBAIC0yNzAsOCArMjY4LDkgQEAg
Ym9vbCBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZU5QVFRpbWUoY29uc3QgTENoYXIqIHRp
bWVTdHJpbmcsIHVuc2lnbmVkIGxlbmcKICAgICBpZiAodGltZVN0cmluZ1tvZmZzZXRdID09ICcu
JykgewogICAgICAgICBpZiAob2Zmc2V0ID09IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBTdHJpbmcgZGlnaXRzID0gY29sbGVjdEZyYWN0aW9uKHRpbWVTdHJpbmcs
IGxlbmd0aCwgb2Zmc2V0KTsKLSAgICAgICAgZnJhY3Rpb24gPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoZGlnaXRzLnRvRG91YmxlKCkpOworICAgICAgICBhdXRvIGRpZ2l0cyA9IGNvbGxl
Y3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgsIG9mZnNldCk7CisgICAgICAgIGJvb2wgaXNW
YWxpZDsKKyAgICAgICAgZnJhY3Rpb24gPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZGln
aXRzLnRvRG91YmxlKGlzVmFsaWQpKTsKICAgICAgICAgdGltZSA9IE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSh2YWx1ZTEpICsgZnJhY3Rpb247CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTMwOCw4ICszMDcsMTAgQEAgYm9vbCBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJz
ZU5QVFRpbWUoY29uc3QgTENoYXIqIHRpbWVTdHJpbmcsIHVuc2lnbmVkIGxlbmcKICAgICAgICAg
dmFsdWUxID0gMDsKICAgICB9CiAKLSAgICBpZiAob2Zmc2V0IDwgbGVuZ3RoICYmIHRpbWVTdHJp
bmdbb2Zmc2V0XSA9PSAnLicpCi0gICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgsIG9mZnNldCkudG9E
b3VibGUoKSk7CisgICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1lU3RyaW5nW29mZnNldF0g
PT0gJy4nKSB7CisgICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAgZnJhY3Rpb24gPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY29sbGVjdEZyYWN0aW9uKHRpbWVTdHJpbmcsIGxlbmd0
aCwgb2Zmc2V0KS50b0RvdWJsZShpc1ZhbGlkKSk7CisgICAgfQogICAgIAogICAgIHRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKHZhbHVlMSAqIHNlY29uZHNQZXJIb3VyKSArICh2
YWx1ZTIgKiBzZWNvbmRzUGVyTWludXRlKSArIHZhbHVlMykgKyBmcmFjdGlvbjsKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBiZDM1YTg0NzgyNjFjMTAw
ZmYxN2QyMWUxMmNiN2E2ZTBjYmJlOGI0Li43ZWE4NzMwMTFlNWZlOTUzNzAyZTEwMWRjYTg5N2Vk
NzM0OTMwYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IERlY2ltYWwgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25z
dAogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKLURlY2ltYWwgU3RlcFJhbmdlOjpwYXJz
ZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0
aW9uJiBzdGVwRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3RlcFN0cmluZykKK0RlY2ltYWwg
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29u
c3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIFN0cmluZ1ZpZXcgc3RlcFN0cmlu
ZykKIHsKICAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGVw
RGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAppbmRleCA3
M2QyM2RhOWY1NTc4NzdhOWE1MGIxNzZlNGI5OTQzOWQ2MjJkNThhLi41NDg1M2QyOTc1YjM2YTkw
ZmI4OWZjNTg2MmVmMGViZGQyMjgyNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIERlY2ltYWwgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4aW11bTsgfQogICAgIERlY2ltYWwgbWluaW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlu
aW11bTsgfQogICAgIERlY2ltYWwgc3RlcFNuYXBwZWRNYXhpbXVtKCkgY29uc3Q7Ci0gICAgc3Rh
dGljIERlY2ltYWwgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0
aW9uJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIERlY2ltYWwgcGFyc2VTdGVwKEFueVN0
ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgU3RyaW5nVmlldyk7CiAgICAgRGVj
aW1hbCBzdGVwKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwOyB9CiAgICAgRGVjaW1hbCBzdGVwQmFz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEJhc2U7IH0KICAgICBpbnQgc3RlcFNjYWxlRmFjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4
IDVjMWVjNzQxYzIxYTQ5Nzk0YjRhODZhYmI1NzU4Njc4OWExMWNlZTkuLjczYTM1ODE0ODIzY2Rl
ZGY5OGFiZTllYjZmOTllZDVjZTE0MzJmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC05Miw5ICs5MiwxMSBAQCBTdHJpbmcgc2Vy
aWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiBTdHJpbmc6Om51
bWJlcihudW1iZXIpOwogfQogCi1EZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKK0RlY2lt
YWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBE
ZWNpbWFsJiBmYWxsYmFja1ZhbHVlKQogewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFs
IG51bWJlcnMuJyBhbmQgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUKKyAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKICAgICAvLyBTdHJp
bmc6OnRvRG91YmxlKCkgYWNjZXB0cyBsZWFkaW5nICsgYW5kIHdoaXRlc3BhY2UgY2hhcmFjdGVy
cywgd2hpY2ggYXJlIG5vdCB2YWxpZCBoZXJlLgogICAgIGNvbnN0IFVDaGFyIGZpcnN0Q2hhcmFj
dGVyID0gc3RyaW5nWzBdOwpAQCAtMTE2LDE0ICsxMTgsMTYgQEAgRGVjaW1hbCBwYXJzZVRvRGVj
aW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZh
bGxiYWMKICAgICByZXR1cm4gdmFsdWUuaXNaZXJvKCkgPyBEZWNpbWFsKDApIDogdmFsdWU7CiB9
CiAKLURlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoU3RyaW5nVmlldyBzdHJp
bmcpCiB7CiAgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdHJpbmcsIERl
Y2ltYWw6Om5hbigpKTsKIH0KIAotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKK2RvdWJsZSBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFs
dWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nCisgICAgaWYg
KHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAg
Ly8gU3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNo
YXJhY3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBVQ2hhciBmaXJzdENoYXJh
Y3RlciA9IHN0cmluZ1swXTsKQEAgLTEzNCwxMSArMTM4LDExIEBAIGRvdWJsZSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFs
dWUpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgYm9vbCB2YWxpZCA9IGZh
bHNlOwotICAgIGRvdWJsZSB2YWx1ZSA9IHN0cmluZy50b0RvdWJsZSgmdmFsaWQpOworICAgIGRv
dWJsZSB2YWx1ZSA9IHN0cmluZy50b0RvdWJsZSh2YWxpZCk7CiAgICAgaWYgKCF2YWxpZCkKICAg
ICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKLSAgICAvLyBOYU4gYW5kIGluZmluaXR5IGFy
ZSBjb25zaWRlcmVkIHZhbGlkIGJ5IFN0cmluZzo6dG9Eb3VibGUsIGJ1dCBub3QgdmFsaWQgaGVy
ZS4KKyAgICAvLyBOYU4gYW5kIGluZmluaXR5IGFyZSBjb25zaWRlcmVkIHZhbGlkIGJ5IFN0cmlu
Z1ZpZXc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUuCiAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKQEAgLTE1MSw3ICsx
NTUsNyBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlIDog
MDsKIH0KIAotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQorZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDg5NTE2YjFiOWJlZTll
MTljNjYxODUxYzIyNDc4MmI4YWY1ZDY0OTAuLjdjMDNmMzJkMjRiYmE2MmUxODFiMTMxZWJmMjBh
ODMyNGNhMmYzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmgKQEAgLTU0LDEwICs1NCwxMCBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShkb3VibGUpOwogLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGRlY2ltYWwv
ZG91YmxlLiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgdGhlIHJldHVybiB2YWx1ZSBpcyBmYWxs
YmFjayB2YWx1ZSBvciBOYU4gaWYgbm90IHNwZWNpZmllZC4KIC8vIExlYWRpbmcgb3IgdHJhaWxp
bmcgaWxsZWdhbCBjaGFyYWN0ZXJzIGNhdXNlIGZhaWx1cmUsIGFzIGRvZXMgcGFzc2luZyBhbiBl
bXB0eSBzdHJpbmcuCiAvLyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAgdG8gY2hlY2sg
aWYgdGhlIHN0cmluZyBjYW4gYmUgcGFyc2VkIHdpdGhvdXQgZ2V0dGluZyB0aGUgcmVzdWx0Lgot
RGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7Ci1EZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNp
bWFsJiBmYWxsYmFja1ZhbHVlKTsKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmKTsKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9y
TnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKFN0cmluZ1ZpZXcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpOworZG91YmxlIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcpOworZG91YmxlIHBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKTsKIAogLy8g
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMt
Zm9yLXBhcnNpbmctaW50ZWdlcnMKIGVudW0gY2xhc3MgSFRNTEludGVnZXJQYXJzaW5nRXJyb3Ig
eyBOZWdhdGl2ZU92ZXJmbG93LCBQb3NpdGl2ZU92ZXJmbG93LCBPdGhlciB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCAxNTViYzdjMTY2ZjQ4YWVhZDJiZGIxNTNmNGIyOTFlOTFjMDBhZjZkLi41ZDVhMzc2ZmJk
NDBjODBmMThjN2RkZTQ5OGZjNTNjZGYzZjJkOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNzU4LDcgKzc1
OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRBdHRyaWJ1dGVzQXNUZXh0KFByb3RvY29sOjpECiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogICAgIH0KIAotICAgIGlmICghZm91bmRPcmlnaW5hbEF0
dHJpYnV0ZSAmJiAhbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
IWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgJiYgbmFtZS5maW5kKGlzTm90U3BhY2VPck5ld2xpbmUp
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGlmICghbV9kb21FZGl0b3ItPnJlbW92ZUF0dHJpYnV0
ZSgqZWxlbWVudCwgbmFtZSwgZXJyb3JTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
SXRlbXNCdWlsZGVyLmNwcAppbmRleCA1NmEwNzgyYzZlYzBjNDM2OWJlMWNmYmRhNzQ5YjMyNDJm
YTM3YzQzLi40YThkMWZhNzI0ZjlhOTE5YmNhMzJiNDg4NDE4YWFmZWI4MzlmMjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKQEAgLTE2MywxMiArMTYzLDEy
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFw
cGVuZChjb25zdCBJbmxpbmVUZXh0Qm94JiBpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBpZiAobm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbiA8IHN0YXJ0UG9zaXRpb24p
Ci0gICAgICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5hcHBlbmQodGV4dENvbnRlbnQu
c3Vic3RyaW5nKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24g
LSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CisgICAgICAgICAgICBwYXJhZ3Jh
cGhDb250ZW50QnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyh0ZXh0Q29udGVudCkuc3Vic3RyaW5n
KG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24gLSBub25SZXBs
YWNlZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CiAgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWls
ZGVyLmFwcGVuZChzcGFjZSk7CiAgICAgICAgIG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRp
b24gPSBwb3NpdGlvbjsKICAgICB9CiAgICAgaWYgKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9z
aXRpb24gPCBjb250ZW50TGVuZ3RoKQotICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5h
cHBlbmQodGV4dENvbnRlbnQucmlnaHQoY29udGVudExlbmd0aCAtIG5vblJlcGxhY2VkQ29udGVu
dFN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5k
KFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnJpZ2h0KGNvbnRlbnRMZW5ndGggLSBub25SZXBsYWNl
ZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CiB9CiAKIHN0cnVjdCBCaWRpQ29udGV4dCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMjMxZDM2YmMwYTM3MWQ0OTY1NTdjYmI1MmQw
ZTczMTgxMDhjNjBiOC4uNzZkMmFiNDY0ZGY3OWVmMTc4NmNjNmQ2MTBmYmY1ZjJjODdkZjY1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtMjE5LDEwICsyMTksMTAgQEAgc3Rh
dGljIHZvaWQgcHJpbnRUZXh0Rm9yU3VidHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgdW5zaWduZWQmIGNoYXJhY3QKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5
cGU8UmVuZGVyT2JqZWN0Pihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpKSB7CiAg
ICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0
ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGQpLnRleHQoKTsKLSAgICAgICAgICAgIHRl
eHQgPSB0ZXh0LnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgYXV0byBsZW4gPSBzdGQ6
Om1pbihjaGFyYWN0ZXJzTGVmdCwgdGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBzdHJlYW0g
PDwgdGV4dC5sZWZ0KGxlbik7Ci0gICAgICAgICAgICBjaGFyYWN0ZXJzTGVmdCAtPSBsZW47Cisg
ICAgICAgICAgICBhdXRvIHRleHRWaWV3ID0gU3RyaW5nVmlldyh0ZXh0KS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gc3RkOjptaW4oY2hhcmFjdGVyc0xlZnQs
IHRleHRWaWV3Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCB0ZXh0Vmlldy5sZWZ0
KGxlbmd0aCk7CisgICAgICAgICAgICBjaGFyYWN0ZXJzTGVmdCAtPSBsZW5ndGg7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBwcmludFRleHRGb3JTdWJ0cmVlKGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSwgY2hhcmFjdGVyc0xlZnQsIHN0cmVhbSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCA0MGQwMjA1MzhjMzkyYTQ1Mzk1
NWE5MmU0YzYxZGFkMDM4MzA5ZWI0Li42YWJmNjVmYzdmZjZlZWVkMTEzYzgxZmZiYTdiNTFhNDdi
YWRkODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTIyOCw3ICsy
MjgsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dChjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UpCiAgICAgICAgIGlmICghaXM8UmVuZGVyVGV4dD4obm9kZS5yZW5kZXJl
cigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0
eSgpOworICAgIHJldHVybiBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLmZp
bmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0gbm90Rm91bmQ7CiB9CiAKIHN0YXRpYyBib29sIGlu
aXRpYWxpemVJbmRpY2F0b3IoVGV4dEluZGljYXRvckRhdGEmIGRhdGEsIEZyYW1lJiBmcmFtZSwg
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBGbG9hdFNpemUgbWFyZ2luLCBib29sIGluZGljYXRl
c0N1cnJlbnRTZWxlY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDll
YzAxNzJhMjFhOThkYzgwN2E0YzE2Nzc1N2U3MzVhYmUyMzU4NDguLjZkYzU0ODIyZmVjNmU4ZDQy
MjdhMTlhYWE5MGZjZTczMzUzODFiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3Bw
CkBAIC02OTMsNyArNjkzLDcgQEAgRGVjaW1hbCBEZWNpbWFsOjpmcm9tRG91YmxlKGRvdWJsZSBk
b3VibGVWYWx1ZSkKICAgICByZXR1cm4gbmFuKCk7CiB9CiAKLURlY2ltYWwgRGVjaW1hbDo6ZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikKK0RlY2ltYWwgRGVjaW1hbDo6ZnJvbVN0cmluZyhT
dHJpbmdWaWV3IHN0cikKIHsKICAgICBpbnQgZXhwb25lbnQgPSAwOwogICAgIFNpZ24gZXhwb25l
bnRTaWduID0gUG9zaXRpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKaW5kZXggNTljZGIx
OGQ4MjFjNmJjNjFhYjk4YmU1OGVhODdhNTBkZjBiNTMxOS4uNWE1NDAzNGQzMjMyYjZmNmMwM2Mz
ZmNmODNlMWFjZTg5ZTRkNTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVjaW1hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAvLyAgZXhwb25lbnQtbWFya2VyIDo6PSAnZScgfCAn
RScKICAgICAvLyAgZGlnaXQgOjo9ICcwJyB8ICcxJyB8IC4uLiB8ICc5JwogICAgIC8vIE5vdGU6
IGZyb21TdHJpbmcgZG9lc24ndCBzdXBwb3J0ICJpbmZpbml0eSIgYW5kICJuYW4iLgotICAgIHN0
YXRpYyBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIERlY2lt
YWwgZnJvbVN0cmluZyhTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgRGVjaW1hbCBpbmZpbml0eShT
aWduKTsKICAgICBzdGF0aWMgRGVjaW1hbCBuYW4oKTsKICAgICBzdGF0aWMgRGVjaW1hbCB6ZXJv
KFNpZ24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCmluZGV4IGM3NDMxODk5MjhiM2Y2YTliYjM5ZjZmZjRmYzA5OTNmZTA5MGNi
NTQuLmM2MmY3MTk1MGFjYWVjMzMxMGYxMmFlM2FhNTA5Mzg4NjVjNTllODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAg
LTIxMyw5ICsyMTMsOSBAQCBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcubGVmdChzdHJpbmcuZmluZChpc0Nh
Y2hlSGVhZGVyU2VwYXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK3N0YXRp
YyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+PiBwYXJzZUNhY2hlSGVh
ZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogewotICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiByZXN1bHQ7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBTdHJp
bmdWaWV3Pj4gcmVzdWx0OwogCiAgICAgU3RyaW5nIHNhZmVIZWFkZXJTdHJpbmcgPSBoZWFkZXIu
cmVtb3ZlQ2hhcmFjdGVycyhpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNlKTsKICAgICBTdHJpbmdW
aWV3IHNhZmVIZWFkZXIgPSBzYWZlSGVhZGVyU3RyaW5nOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0
YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihj
b25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEdldCBkaXJlY3RpdmUgbmFtZSwgcGFyc2UgcmlnaHQgaGFuZCBzaWRlIG9mIGVx
dWFsIHNpZ24sIHRoZW4gYWRkIHRvIG1hcAotICAgICAgICBTdHJpbmcgZGlyZWN0aXZlID0gdHJp
bVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG5leHRFcXVhbFNpZ25Q
b3NpdGlvbiAtIHBvcykpLnRvU3RyaW5nKCk7CisgICAgICAgIFN0cmluZ1ZpZXcgZGlyZWN0aXZl
ID0gdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG5leHRFcXVh
bFNpZ25Qb3NpdGlvbiAtIHBvcykpLnRvU3RyaW5nKCk7CiAgICAgICAgIHBvcyArPSBuZXh0RXF1
YWxTaWduUG9zaXRpb24gLSBwb3MgKyAxOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgdmFsdWUgPSBz
YWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcyk7CkBAIC0yOTcsNyArMjk3LDcgQEAg
Q2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3Qg
SFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAg
ICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7Cisg
ICAgICAgICAgICAgICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91
YmxlKG9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5tYXhBZ2UgPSBTZWNvbmRzIHsgbWF4QWdlIH07CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgt
c3RhbGUiKSkgewpAQCAtMzEyLDcgKzMxMiw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFy
c2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVj
dGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIG1h
eFN0YWxlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAg
ICAgIGlmIChvaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gU2Vjb25k
cyB7IG1heFN0YWxlIH07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJpbW11dGFibGUiKSkgewpAQCAtMzIz
LDcgKzMyMyw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwot
ICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNb
aV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIHN0YWxlV2hp
bGVSZXZhbGlkYXRlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAg
ICAgICAgICAgIGlmIChvaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YWxlV2hpbGVS
ZXZhbGlkYXRlID0gU2Vjb25kcyB7IHN0YWxlV2hpbGVSZXZhbGlkYXRlIH07CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CmluZGV4IDlkNTAzYjVhOTI5OTJlN2VlMWFmMzBmMDllMWRmMThhNTY3OWI4MjEuLjI2NTU4MTI5
M2NkOWE0YzhjYjJiMTY1ZjA5YzQzMDUzNGY0ODZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMzEsNyArMzMxLDcgQEAgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
Ly8gdGhhdCBhcmlzZXMgZnJvbSBxdW90ZWQtc3RyaW5nLCBub3IgZG9lcyB0aGlzIGZ1bmN0aW9u
IHByb3Blcmx5IHVucXVvdGUKIC8vIGF0dHJpYnV0ZSB2YWx1ZXMuIEZ1cnRoZXIgdGhpcyBmdW5j
dGlvbiBhcHBlYXJzIHRvIHByb2Nlc3MgcGFyYW1ldGVyIG5hbWVzCiAvLyBpbiBhIGNhc2Utc2Vu
c2l0aXZlIG1hbm5lci4gKFRoZXJlIGFyZSBsaWtlbHkgb3RoZXIgYnVncyBhcyB3ZWxsLikKLVN0
cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUp
CitTdHJpbmdWaWV3IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oU3RyaW5nVmll
dyB2YWx1ZSkKIHsKICAgICBmb3IgKGF1dG8ga2V5VmFsdWVQYWlyIDogdmFsdWUuc3BsaXQoJzsn
KSkgewogICAgICAgICBzaXplX3QgdmFsdWVTdGFydFBvcyA9IGtleVZhbHVlUGFpci5maW5kKCc9
Jyk7CkBAIC0zNDksNyArMzQ5LDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlz
cG9zaXRpb24oU3RyaW5nVmlldyB2YWx1ZSkKICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpID4g
MSAmJiB2YWx1ZVswXSA9PSAnXCInKQogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJp
bmcoMSwgdmFsdWUubGVuZ3RoKCkgLSAyKTsKIAotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRl
eCBkNWNlNzgyOWI1YWQxNjIzZjY5NzEzOGY3Mjk2NThkYzBkMzM3M2ZmLi5hZTI0OTg1ZjNlODBm
MDQ5YmVlMWJhMGFhNzc1ODU2MmZhODU0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03OSw3ICs3OSw3IEBAIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBp
c1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKFN0
cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBT
dHJpbmcmKTsKLVN0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmlu
Z1ZpZXcpOworU3RyaW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0
cmluZ1ZpZXcpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRp
YVR5cGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShTdHJpbmdWaWV3KTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3Rl
Y3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwg
dW5zaWduZWQmIGZhaWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggMWE5YjgzZWVm
NTc3MjFmZmM1ZTExMGEwODM0YmIwMzEwNjc1NWUxMy4uY2ZlZmUxZWIyNWNkZjljZmYyOGZiMGU1
M2Q5MjJmZDU4N2Y3YjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRy
aWV2ZUtleVZhbHVlUGFpcnMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZl
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBTdHJpbmdWaWV3
KGxpbmUpLmxlZnQoc2VtaWNvbG9uSW5kZXgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGtleSA9IFN0cmluZ1ZpZXcobGluZSkubGVmdChzZW1p
Y29sb25JbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
ICAgICAgICAgdmFsdWUuYXBwZW5kKFN0cmluZ1ZpZXcobGluZSkuc3Vic3RyaW5nKHNlbWljb2xv
bkluZGV4ICsgMSkpOwogICAgIH0KICAgICAvLyBTdG9yZSB0aGUgbGFzdCBwcm9wZXJ0eSBpZiB0
aGVyZSBpcyBvbmUuCkBAIC0xMjAsOSArMTIwLDkgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVI
ZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiAgICAg
cmV0dXJuIG1pbWVIZWFkZXI7CiB9CiAKLU1JTUVIZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6
OnBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3RyaW5nJiB0ZXh0KQorTUlNRUhl
YWRlcjo6RW5jb2RpbmcgTUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhT
dHJpbmdWaWV3IHRleHQpCiB7Ci0gICAgU3RyaW5nIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRl
U3BhY2UoKTsKKyAgICBhdXRvIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmcsICJiYXNlNjQiKSkK
ICAgICAgICAgcmV0dXJuIEJhc2U2NDsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZW5jb2RpbmcsICJxdW90ZWQtcHJpbnRhYmxlIikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCmluZGV4IDAwOGFlYzJlMDdlMzY5ODc3MGYwYzEz
MmY1ODYyYTM0YTVhMmNiMWMuLmRhMTA2OWE0ZTE0YmQ4ZmI1NzkwMjljYjIzZTEzMjNhYTJjOGE1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTUlNRUhlYWRlcigpOwogCi0g
ICAgc3RhdGljIEVuY29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3Ry
aW5nJik7CisgICAgc3RhdGljIEVuY29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2Rpbmco
U3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9j
aGFyc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZENvbnRlbnRUeXBlLmNwcAppbmRleCA2YjkxNjU5MTRjMWZjMTIzMjM4OTdjYTUyZDczNzJkNzY2
MTM1MTI4Li5mYWZhMzIxMWYxMzM1ZTM2NjlkNGY3NzI4YmMzYzM0ZGRjMDYyNmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBl
LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRl
bnRUeXBlKFN0cmluZyYmIGNvbnRlbnRSYW5nZSwgTW9kZSBtb2RlKQogewogICAgIG1fbWltZVR5
cGUgPSBXVEZNb3ZlKGNvbnRlbnRSYW5nZSk7CiAgICAgaWYgKG1vZGUgPT0gTW9kZTo6TWltZVNu
aWZmKQotICAgICAgICBtX21pbWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3Bh
Y2VzKG1fbWltZVR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgIG1fbWlt
ZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoU3RyaW5nVmlldyhtX21p
bWVUeXBlKSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBlbHNlCiAgICAgICAgIG1f
bWltZVR5cGUgPSBtX21pbWVUeXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAppbmRleCBkMDY2ZWE0NzJjNTRlNjUyMDc5ZGJhNDE4YWIyNDdhODNmYTgyMjViLi43ODM4NTZh
MzJmNjU4MTQ0NzE4OGI1MDU0NGQxMDAxNjc2MTIyZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAt
NzgxLDcgKzc4MSw3IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgp
IGNvbnN0CiAgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIGF1dG8gdmFsdWUgPSBtX2h0
dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pOwot
ICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5sZWZ0KHZhbHVl
LmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7CisgICAgcmV0dXJu
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcodmFsdWUpLmxlZnQodmFs
dWUuZmluZCgnOycpKS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKTsKIH0KIAogYm9v
bCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgY29uc3QK
QEAgLTc5Niw4ICs3OTYsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1l
bnRXaXRoRmlsZW5hbWUoKSBjb25zdAogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29udGVudERpc3Bvc2l0aW9uVmlldy5sZWZ0KGNvbnRlbnREaXNwb3NpdGlvblZpZXcu
ZmluZCgnOycpKS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tSFRUUENvbnRl
bnREaXNwb3NpdGlvbihjb250ZW50RGlzcG9zaXRpb25WaWV3KTsKLSAgICByZXR1cm4gIWZpbGVu
YW1lLmlzTnVsbCgpOworICAgIHJldHVybiAhZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3Np
dGlvbihjb250ZW50RGlzcG9zaXRpb25WaWV3KS5pc051bGwoKTsKIH0KIAogUmVzb3VyY2VSZXNw
b25zZUJhc2U6OlNvdXJjZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c291cmNlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDI5MzFkMDVkNGMyOWEzZDY5NzBjOWY3YWQ3ZmMw
Zjk2ZGM3NTIwNWIuLmY2YzEwNzJjZmUyZWM2MmFhZjdkYzBlMTI3ZWQ0Nzc5ODI4NWU0NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVJbmZvKENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmlj
YXRlSW5mbykKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmls
ZW5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bv
c2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9u
KSk7CisgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKS50b1N0cmluZygp
OwogfQogCiBib29sIFJlc291cmNlUmVzcG9uc2U6OnNob3VsZFJlZGlyZWN0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDU1YzM0Yzhk
YjNkODdiNGNkNGI0NTU5ODg0NGYwNWRhMTIzZWRlNzkuLmE3ODczYTE1M2Y2MmU3M2FlY2U5MjE0
ZGRmMWFlNTFkNTk5Zjg2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6
OnNldEJ1c3lIYW5kbGVyKGludCgqaGFuZGxlcikodm9pZCosIGludCkpCiAgICAgICAgIExPRyhT
UUxEYXRhYmFzZSwgIkJ1c3kgaGFuZGxlciBzZXQgb24gbm9uLW9wZW4gZGF0YWJhc2UiKTsKIH0K
IAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KGNvbnN0IFN0cmluZyYg
cXVlcnkpCitib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3coU3RyaW5nVmll
dyBxdWVyeSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KHF1
ZXJ5KTsKICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQo
KTsKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxl
cygpCiAgICAgd2hpbGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAg
IHRhYmxlcy5hcHBlbmQoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICBmb3IgKGF1dG8m
IHRhYmxlIDogdGFibGVzKSB7Ci0gICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KCJEUk9Q
IFRBQkxFICIgKyB0YWJsZSkpCisgICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VT
dHJpbmcoIkRST1AgVEFCTEUgIiwgdGFibGUpKSkKICAgICAgICAgICAgIExPRyhTUUxEYXRhYmFz
ZSwgIlVuYWJsZSB0byBkcm9wIHRhYmxlICVzIiwgdGFibGUuYXNjaWkoKS5kYXRhKCkpOwogICAg
IH0KIH0KQEAgLTcyMyw3ICs3MjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8c3FsaXRlM19zdG10Kiwg
aW50PiBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJgogICAgIHJl
dHVybiBzdGF0ZW1lbnQ7CiB9CiAKLUV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxp
dGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmlu
ZykKK0V4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZVN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1
ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3Fs
U3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0
YSgpLCBxdWVyeS5sZW5ndGgoKSk7CkBAIC03NDQsNyArNzQ0LDcgQEAgRXhwZWN0ZWQ8U1FMaXRl
U3RhdGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0
ZXJhbCBxdWUKICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50IHsgKnRoaXMsIHNxbFN0YXRlbWVu
dC52YWx1ZSgpIH07CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBp
bnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5n
JiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+
IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVy
eVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNw
YWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFy
ZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDkxNjAxMzQ4MTc1
OTIxM2FhNTJkMTk4YTQ3ZTJlNWM0ZDZhOTg3MzQuLjg2ZmMwNDU4OGJkOGUzODVmZTQ4NjI1NDE1
YzU0ZTk3ODc2ZGQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3BlbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhTdHJpbmdWaWV3
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7
CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0YWJsZUV4aXN0cyhTdHJpbmdWaWV3KTsK
QEAgLTc1LDkgKzc1LDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblBy
b2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3Rh
dGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeHBl
Y3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudFNsb3coU3RyaW5nVmll
dyBxdWVyeSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBp
bnQ+IHByZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVwYXJlSGVh
cFN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
RXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0
ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KEFT
Q0lJTGl0ZXJhbCBxdWVyeSk7CiAKICAgICAvLyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ug
b3BlcmF0aW9uLiBUaGlzIGlzIHRocmVhZCBzYWZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
UGxhdGZvcm1YUi5oCmluZGV4IDU0ZDJlYjcyODJjMzk0ODc1NmJkODUyYWE5NmJlMzEzYjE3NDk3
ZDcuLjBhNmMwOTdmM2Q1Y2RiNzU2MDkzZDQxZmFiN2I2ZmFmYTVmMjRiNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTExNSw5ICsxMTUsOSBAQCBpbmxpbmUg
U2Vzc2lvbkZlYXR1cmUgc2Vzc2lvbkZlYXR1cmVGcm9tUmVmZXJlbmNlU3BhY2VUeXBlKFJlZmVy
ZW5jZVNwYWNlVHlwZSByZQogICAgIHJldHVybiBTZXNzaW9uRmVhdHVyZTo6UmVmZXJlbmNlU3Bh
Y2VUeXBlVmlld2VyOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxTZXNzaW9uRmVhdHVyZT4g
cGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxTZXNzaW9uRmVhdHVyZT4gcGFyc2VTZXNzaW9uRmVhdHVyZURlc2Ny
aXB0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nIGZlYXR1cmUgPSBzdHJpbmcu
c3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZl
YXR1cmUgPSBzdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKIAogICAgIGlmIChmZWF0dXJlID09ICJ2aWV3ZXIiX3MpCiAgICAgICAgIHJldHVybiBTZXNz
aW9uRmVhdHVyZTo6UmVmZXJlbmNlU3BhY2VUeXBlVmlld2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IGM2OTJiNDA3NDJjMzc3Zjk5ZjBjODk0ZmI2
MjU3YjYyYzQzZjQzZjAuLjUzMjE0OTdhZDEwYjcwM2YzOTEyYmNiMGZmNmQxNjBlMjA0NjE4NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTU2LDEx
ICs1NiwxMSBAQCBTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogewogfQogCi1zdGF0aWMgdm9pZCBw
YXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwg
Ym9vbCB2ZXJpZnlPcmRlcikKK3N0YXRpYyB2b2lkIHBhcnNlS2V5VGltZXMoU3RyaW5nVmlldyBw
YXJzZSwgVmVjdG9yPGZsb2F0PiYgcmVzdWx0LCBib29sIHZlcmlmeU9yZGVyKQogewogICAgIHJl
c3VsdC5jbGVhcigpOwogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgZm9yIChTdHJpbmdW
aWV3IHRpbWVTdHJpbmcgOiBTdHJpbmdWaWV3KHBhcnNlKS5zcGxpdCgnOycpKSB7CisgICAgZm9y
IChhdXRvIHRpbWVTdHJpbmcgOiBwYXJzZS5zcGxpdCgnOycpKSB7CiAgICAgICAgIGJvb2wgb2s7
CiAgICAgICAgIGZsb2F0IHRpbWUgPSB0aW1lU3RyaW5nLnRvRmxvYXQob2spOwogICAgICAgICBp
ZiAoIW9rIHx8IHRpbWUgPCAwIHx8IHRpbWUgPiAxKQpAQCAtMTUzLDkgKzE1MywxMCBAQCB2b2lk
IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdAogICAgICAgICAvLyBQZXIgdGhlIFNNSUwgc3BlY2lmaWNhdGlv
biwgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUgc3BhY2UsCiAgICAgICAgIC8vIGFuZCB3aGl0
ZSBzcGFjZSBiZWZvcmUgYW5kIGFmdGVyIHNlbWljb2xvbiBzZXBhcmF0b3JzLCBpcyBhbGxvd2Vk
IGFuZCB3aWxsIGJlIGlnbm9yZWQuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NW
RzExL2FuaW1hdGUuaHRtbCNWYWx1ZXNBdHRyaWJ1dGUKLSAgICAgICAgbV92YWx1ZXMgPSB2YWx1
ZS5zdHJpbmcoKS5zcGxpdCgnOycpOwotICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1
ZXMpCi0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAg
ICBtX3ZhbHVlcy5jbGVhcigpOworICAgICAgICB2YWx1ZS5zdHJpbmcoKS5zcGxpdCgnOycsIFt0
aGlzXShTdHJpbmdWaWV3IGlubmVyVmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVu
ZChpbm5lclZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpLnRvU3RyaW5nKCkpOworICAgICAgICB9KTsK
IAogICAgICAgICB1cGRhdGVBbmltYXRpb25Nb2RlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCBiMjk0MDNlZmNlMmI4ZWMzYTQ4YzI1NDY4ZjE4OTY2NzlmODE1NmM1Li5lZjY0
YzRkNjUxZjE1Yzc4YmU3OGQwZjU5N2U2NTNkOWEyOThjODI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0x
NjQsOCArMTY0LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBFZGl0b3ImIGVkaXRv
ciA9IGZyYW1lLmVkaXRvcigpOwogICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9w
dXBJbmZvKHRydWUpOwogCi0gICAgLy8gRklYTUU6IEluZWZmaWNpZW50IHRvIGNhbGwgc3RyaXBX
aGl0ZVNwYWNlIHRvIGRldGVjdCB3aGV0aGVyIGEgc3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNl
IGNoYXJhY3RlciBpbiBpdC4KLSAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5zdHJpcFdoaXRlU3Bh
Y2UoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5maW5kKGlzTm90U3Bh
Y2VPck5ld2xpbmUpID09IG5vdEZvdW5kKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdE
aWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMGFlZTdiNjlhZmQ1YjRhNmY3NjhmMjA1
ZjhhMDI4YzE4ZWE3ODg4Yy4uMzcyOTQ2ZDlmN2Q4YzdiY2RkNjRjYzU5MzdkMzdjMWU0MDdkZjEy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAICsg
KFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8pX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5n
ZTooY29uc3QgV2ViQ29yZTo6U2ltCiAgICAgLy8gRGljdGlvbmFyeSBBUEkgd2lsbCBhY2NlcHQg
YSB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlmIGl0IHdlcmUgcmVh
bCB0ZXh0LAogICAgIC8vIHNvIGJhaWwgb3V0IGVhcmx5IHRvIGF2b2lkIHRoYXQuCiAgICAgV2Vi
Q29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyBwb3B1cEluZm87Ci0gICAgaWYgKHBsYWluVGV4dChy
YW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4dChy
YW5nZSkuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAgICBl
ZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJl
dHVybiBwb3B1cEluZm87CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="486449"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457762</attachid>
            <date>2022-04-16 19:45:48 -0700</date>
            <delta_ts>2022-04-16 20:56:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220416194547.patch</filename>
            <type>text/plain</type>
            <size>50775</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLjY1OGVmYTE5NzE0YTExMjNhMWZkNmFlYzI4N2VlZWZiOGUzNDg5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTm90U3BhY2VP
ck5ld2xpbmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjb21w
bGV4IFN0cmluZzo6aW5zZXJ0KCkgd2l0aCBhIHNpbXBsaWZpZWQgbWFrZVN0cmluZ0J5SW5zZXJ0
aW5nKCkgZnJlZSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwNGY2MmJlMDNlNTJiNTQ4YzM2NmRi
NWIwZmQwNGRkYjg5MzY2MTEuLmU4YmM0NWExYTEyZDlhMWJmNDg2ZDE3YzVjMTVmNGM1NzMzZDk5
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudF0pOgor
ICAgICAgICAoYXBwZW5kU3RyaW5nVG9SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW5kZXJlckZvclZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OnNldE1l
ZGlhVHlwZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFn
bWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICog
aHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OnJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFwcGVuZCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByaW50VGV4dEZvclN1
YnRyZWUpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vRGVj
aW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0
dXJlRGVzY3JpcHRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXlUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBpZCBtYXRjaGluZyBp
biBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA0N2VkYTNlZDFkNjVhNjQ3NDBjNGE0M2E2Nzg1YzYxMjdlZWU0NDk3Li42
ZDZiZjI4YTYxM2U1M2Q5MTY2M2Q1ZjVmOGFjY2M1NWYzMWFmMWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBp
biBtb3JlIHBsYWNlcywgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgU3RyaW5nIGFsbG9jYXRpb25z
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToK
KwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBTdHJpbmcg
YWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNDMyM2NkZmY4ODY0
NWU4ZGRkMmNlNGRkZmU2M2ViMzBhMjRiOGJiLi44ZTJmOWJhYzc5YzYzYmQyMGYzNTUxY2YzMDM0
ZjkwNDk1OWYyZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUg
cGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJpbmcgYWxsb2NhdGlvbnMuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICgrW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZTppbkZyYW1lOndpdGhMb29rdXBPcHRpb25zOmluZGljYXRvck9wdGlvbnM6dHJhbnNpdGlv
bjpdKToKKwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBT
dHJpbmcgYWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDU4Yjg1
NDU2Zjg2YzVjYTg0ZWUzZTk1ZWE0YjIzYjRiNDMxNDQ1YzEuLjNjNDE3NGU1MjZhYTY2NTBkY2Rl
NWJmNWNlYWM1OWEzNmNjZDM5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAt
ODM1LDEzICs4MzUsNiBAQCBmbG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
IH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNo
RnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0KQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgbWF0Y2hGdW5jdGlvbiwg
c3RhcnQpOwotICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBt
YXRjaEZ1bmN0aW9uLCBzdGFydCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0
IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggNzM1MDhlY2ViNjU1YTVhNWRmYzNjYjU3YzFmOGJiMTg3MjIyYWZiNy4uNDNj
OTU0OWY2NTM2MDE3MGU1MWRhMDg2MTVkNjA4ZjQ1OTY5M2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTQzMCw3ICs0MzAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoTENo
YXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hh
cj4+KiA9IG51bGxwdHI+CisgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChj
b25zdCBMQ2hhciosIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCk7CkBAIC02MDAsNiArNjAxLDcgQEAgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsK
IC8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBpdCB1c2VzIHRoZSBV
bmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KIC8vIE1vc3QgV2ViS2l0IGNhbGxlcnMg
ZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNIVE1MU3BhY2UgaW5z
dGVhZC4KIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyKTsKK2Jvb2wgaXNOb3RTcGFjZU9y
TmV3bGluZShVQ2hhcjMyKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5z
aWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKik7
CiAKQEAgLTcwNCw2ICs3MDYsMTQgQEAgaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFVD
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19p
bnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgVUNoYXI+Pio+CitzaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgc3RhcnQpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBzdGFydCk7Cisg
ICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rp
b24sIHN0YXJ0KTsKK30KKwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFj
aXR5PiYgYSwgU3RyaW5nSW1wbCogYikKIHsKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxp
dHkoYS5kYXRhKCksIGEuc2l6ZSgpLCBiKTsKQEAgLTc1NCw2ICs3NjQsMTEgQEAgaW5saW5lIGJv
b2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyIGNoYXJhY3RlcikKICAgICByZXR1cm4gaXNMYXRp
bjEoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9u
KGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCitpbmxpbmUgYm9vbCBp
c05vdFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIgY2hhcmFjdGVyKQoreworICAgIHJldHVybiAhaXNT
cGFjZU9yTmV3bGluZShjaGFyYWN0ZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25z
dCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZyk7CkBAIC0xMzE0
LDMgKzEzMjksNSBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNo
YXJhY3RlcnMoY29uc3QgUHJlZGljYXRlJiBmaW5kTWF0Y2gpCiB1c2luZyBXVEY6OlN0YXRpY1N0
cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwordXNp
bmcgV1RGOjppc05vdFNwYWNlT3JOZXdsaW5lOwordXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTRkMGJiZWZlMDdjYmQ1OWE1NzM4ZTk0NTRh
MTgxZTIxYjAxZGYzZC4uMjlhMWNmNjM1OTc3OGE1NmY0OGJkNzM5Mzg0MzNkY2NjNWVlY2I3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29u
c3Q7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5j
dGlvbiwgVUNoYXI+PiogPSBudWxscHRyPgogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hG
dW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsg
fQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDog
bm90Rm91bmQ7IH0KIApAQCAtNjQzLDcgKzY0NCw2IEBAIHVzaW5nIFdURjo6bnVsbFN0cmluZzsK
IHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM7Ci11c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6
OnJldmVyc2VGaW5kOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDY4M2RmY2QwYzRl
NWQ4MzZhMzk4NGYzNWVjMjFhZDEwZmEzNjk2NGIuLmFjYWNiZjcyNzZhODVkMGI5MWM5ZTU1YmIz
MGYyNjcwYmZjNjhjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5
IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheShjb25zdCBKU09OOgogICAg
ICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6QnJvd3NlcjsKICAgICB9
CiAKLSAgICBzdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgc3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHN0cmlu
Z1ZhbHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJmdWxsc2NyZWVuIikKICAgICAgICAgcmV0dXJuIEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXk6OkZ1bGxzY3JlZW47CkBAIC0yMzAsNyArMjMwLDcgQEAg
VmVjdG9yPEFwcGxpY2F0aW9uTWFuaWZlc3Q6Okljb24+IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXI6OnBhcnNlSWNvbnMoY29uc3QgSlMKICAgICAgICAgICAgICAgICBwdXJwb3Nlcy5hZGQoQXBw
bGljYXRpb25NYW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6QW55KTsKICAgICAgICAgICAgICAgICBj
dXJyZW50SWNvbi5wdXJwb3NlcyA9IHB1cnBvc2VzOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBwdXJwb3NlU3RyaW5nVmFsdWUuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICAgICAgICAgICAg
ICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHB1cnBvc2VTdHJpbmdWYWx1ZSkuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBrZXl3b3JkcyA9IHB1cnBvc2VTdHJpbmdWYWx1ZS5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCIgIik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGtleXdvcmQgOiBrZXl3b3JkcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA0MmQwYjdj
MDk2MzA1NTRkYWRmN2U2MjRhOWNlZWVkMTI0NDRkMDQzLi40NTVhYWNlODgwZGQ5ZmNjODRhYTVl
ZWJkN2RkYjMwODMyM2M0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMTgxLDcgKzE4
MSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3RhYmxpc2hTdGF0ZW1lbnQoKQogICAgIHJl
dHVybiBjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoc3FsKTsKIH0KIAotYm9vbCBTUUxpdGVJREJDdXJz
b3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKK2Jvb2wgU1FMaXRl
SURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIkNyZWF0aW5nIGN1cnNvciB3aXRoIFNRTCBxdWVyeTogXCIlc1wiIiwg
c3FsLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggZjc4NzkzMjY2NTY0
NzA0ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YS4uNjAyMjY5NDBjNTQ2OTE0OWVlZjRhMDkwOTEy
YWZmMDcxODA2ZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKLSAgICBib29s
IGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCk7CisgICAgYm9vbCBjcmVh
dGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpOwogICAgIGJvb2wgYmluZEFyZ3VtZW50
cygpOwogCiAgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKaW5kZXggZTY3MDAyZDE3ZGNmMzQ4MzE4ZDE4NWIzNDdiMWUyNjBlMmJkOWI2My4uMDE4ZGJi
OTliMThmYjY3YjhiMGRjMDkzODgyNzgxN2FiZGIyYzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTExMiwyOSArMTEyLDI5IEBA
IHN0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGlu
dCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobWVzc2FnZSwg
IiAoIiwgc3FsaXRlRXJyb3JDb2RlLCAnICcsIHNxbGl0ZUVycm9yTWVzc2FnZSwgJyknKTsKIH0K
IAotc3RhdGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBz
ZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5nVmlldyBxdWVy
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBh
cmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0
YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcyki
LCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwgdmFsdWUpOwogCiAgICAgaWYgKHN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0
ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGVwIHN0YXRlbWVudCB0
byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQorc3RhdGljIGJvb2wg
cmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5n
VmlldyBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYi5wcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVh
ZCB0ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVl
cnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFy
aW5nIHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0
YXRlbWVudC5lcnJvcigpLCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4
dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIExPR19FUlJPUigiRXJyb3IgKCVp
KSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnku
YXNjaWkoKS5kYXRhKCkpOworICAgIExPR19FUlJPUigiRXJyb3IgKCVpKSByZWFkaW5nIHRleHQg
cmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnkudXRmOCgpLmRhdGEoKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDE5NDQ5YjNlZTVhMDQyM2MwZWFmNzM0NDlhOGJiMjY2Mzk1YWNlOTkuLmFk
MzM2NmIxOTcwZmUwNmJlZDZiOGE1MDE2YjcxNWY5MWJlY2ZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTE0LDcgKzExMTQsNyBAQCAtIChCT09MKWRl
dGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzQ5MgogICAgICAgICByZXR1cm4gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmlzS2V5Ym9hcmRGb2N1c2FibGUoKQogICAgICAgICAgICAgJiYgW3NlbGYg
YWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0gPT0gMAotICAgICAgICAgICAgJiYgc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKS5zdHJpcFdoaXRlU3BhY2Uo
KS5sZW5ndGgoKSA+IDA7CisgICAgICAgICAgICAmJiBzZWxmLmF4QmFja2luZ09iamVjdC0+ZGVz
Y3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgIT0gbm90
Rm91bmQ7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRp
YVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJz
ZXIuaAppbmRleCBlNmMxNWVjMzA2YmY0NzgzYjljN2UzNWZhNTM5NzYxNTI3YzkwM2M5Li4wMWNk
NTNlMzNjY2Y5ZTFkMzk5NDEyZWJmNDBjNmI1MjNjZWZjZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAg
ICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKICAgICAgICAgdm9pZCByZW1vdmVMYXN0
RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsgfQorICAgICAgICB2b2lkIHNldE1l
ZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUgPSBXVEZNb3ZlKG1lZGlh
VHlwZSk7IH0KIAogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlF
eHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2I0YjcxYWI5M2M2ZWQ3ZDU2ODhmNDg0NWIzMzQx
ODRlYjJjMGNiZS4uOTVkNDRlODgwODU4NWRkZjA0OTJmMjkwNzk0YTJkYjdkZGI1OWVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzIyMSw3ICszMjIxLDcgQEAgdm9pZCBFZGl0
b3I6OnRyYW5zcG9zZSgpCiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQoKnJhbmdlKTsKICAg
ICBpZiAodGV4dC5sZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIHRy
YW5zcG9zZWQgPSB0ZXh0LnJpZ2h0KDEpICsgdGV4dC5sZWZ0KDEpOworICAgIFN0cmluZyB0cmFu
c3Bvc2VkID0gbWFrZVN0cmluZyh0ZXh0WzFdLCB0ZXh0WzBdKTsKIAogICAgIC8vIFNlbGVjdCB0
aGUgdHdvIGNoYXJhY3RlcnMuCiAgICAgaWYgKG5ld1NlbGVjdGlvbiAhPSBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGNlZDMyMzVlZmI4OWZhYjc0YWYyOWM2ZDVlODIwZjQ3MThiNjZkYWYu
LjIxZTAyZWE4MGI4NjNiYzIyYmM0YWQ5Yjk5ZDRlYTQwMTMwOTE3MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xOTA0LDE1ICsxOTA0LDE1IEBAIHZv
aWQgRnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Ym9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBjYXJldCA9IHBvczsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocG9zIC0gbWlkIDwgMCkgewogICAgICAgICAgICAgICAgIC8vIHRv
byBmZXcgY2hhcmFjdGVycyB0byBsZWZ0Ci0gICAgICAgICAgICAgICAgc2hvdyA9IHRleHQubGVm
dChtYXggLSAzKSArICIuLi4iOworICAgICAgICAgICAgICAgIHNob3cgPSBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcodGV4dCkubGVmdChtYXggLSAzKSwgIi4uLiIpOwogICAgICAgICAgICAgICAgIGNh
cmV0ID0gcG9zOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBwb3Mg
KyBtaWQgPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgICAgIC8vIGVub3VnaCBjaGFyYWN0
ZXJzIG9uIGVhY2ggc2lkZQotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQuc3Vi
c3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CisgICAgICAgICAgICAgICAg
c2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHBvcyAt
IG1pZCArIDMsIG1heCAtIDYpLCAiLi4uIik7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBtaWQ7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFj
dGVycyBvbiByaWdodAotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQucmlnaHQo
bWF4IC0gMyk7CisgICAgICAgICAgICAgICAgc2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmlu
Z1ZpZXcodGV4dCkucmlnaHQobWF4IC0gMykpOwogICAgICAgICAgICAgICAgIGNhcmV0ID0gcG9z
IC0gKHRleHRMZW5ndGggLSBzaG93Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
aW5kZXggOWYzNjg2MGEyNjE0MGY0OWU4MjRkMzI2N2RlM2VhZjlhMTJkYzg5MS4uMGIyZDQzYjVj
ZTlhNDhhY2YzYjMyYjM5MmQzYWY1MDk2OWQ1ZjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC01NSwxOSArNTUsMTcgQEAgc3RhdGlj
IFN0cmluZyBjb2xsZWN0RGlnaXRzKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCYgcG9zaXQKICAgICByZXR1cm4gZGlnaXRzLnRvU3RyaW5nKCk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgY29sbGVjdEZyYWN0aW9uKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCYgcG9zaXRpb24pCitzdGF0aWMgU3RyaW5nVmlldyBjb2xsZWN0RnJh
Y3Rpb24oY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3Np
dGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGRpZ2l0czsKLQogICAgIC8vIGh0dHA6Ly93d3cu
aWV0Zi5vcmcvcmZjL3JmYzIzMjYudHh0CiAgICAgLy8gWyAiLiIgKkRJR0lUIF0KICAgICBpZiAo
aW5wdXRbcG9zaXRpb25dICE9ICcuJykKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgZGlnaXRzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7Cisg
ICAgKytwb3NpdGlvbjsgLy8gSW5jbHVkZSBpbml0aWFsIHBlcmlvZC4KICAgICB3aGlsZSAocG9z
aXRpb24gPCBsZW5ndGggJiYgaXNBU0NJSURpZ2l0KGlucHV0W3Bvc2l0aW9uXSkpCi0gICAgICAg
IGRpZ2l0cy5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwotICAgIHJldHVybiBkaWdpdHMudG9T
dHJpbmcoKTsKKyAgICAgICAgKytwb3NpdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nVmlldyB7IGlu
cHV0LCBwb3NpdGlvbiB9OwogfQogCiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyKGNvbnN0IFVSTCYgdXJsKQpAQCAtMjcwLDggKzI2OCw5IEBAIGJvb2wgTWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3RyaW5n
LCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgKHRpbWVTdHJpbmdbb2Zmc2V0XSA9PSAnLicpIHsKICAg
ICAgICAgaWYgKG9mZnNldCA9PSBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgU3RyaW5nIGRpZ2l0cyA9IGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgs
IG9mZnNldCk7Ci0gICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRpZ2l0cy50b0RvdWJsZSgpKTsKKyAgICAgICAgYXV0byBkaWdpdHMgPSBjb2xsZWN0RnJhY3Rp
b24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBib29sIGlzVmFsaWQ7Cisg
ICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRpZ2l0cy50b0Rv
dWJsZShpc1ZhbGlkKSk7CiAgICAgICAgIHRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUodmFsdWUxKSArIGZyYWN0aW9uOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDgsOCArMzA3LDEwIEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1l
KGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgICAgIHZhbHVlMSA9
IDA7CiAgICAgfQogCi0gICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1lU3RyaW5nW29mZnNl
dF0gPT0gJy4nKQotICAgICAgICBmcmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShjb2xsZWN0RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpLnRvRG91YmxlKCkp
OworICAgIGlmIChvZmZzZXQgPCBsZW5ndGggJiYgdGltZVN0cmluZ1tvZmZzZXRdID09ICcuJykg
eworICAgICAgICBib29sIGlzVmFsaWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgsIG9mZnNl
dCkudG9Eb3VibGUoaXNWYWxpZCkpOworICAgIH0KICAgICAKICAgICB0aW1lID0gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKCh2YWx1ZTEgKiBzZWNvbmRzUGVySG91cikgKyAodmFsdWUyICog
c2Vjb25kc1Blck1pbnV0ZSkgKyB2YWx1ZTMpICsgZnJhY3Rpb247CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggYmQzNWE4NDc4MjYxYzEwMGZmMTdkMjFl
MTJjYjdhNmUwY2JiZThiNC4uN2VhODczMDExZTVmZTk1MzcwMmUxMDFkY2E4OTdlZDczNDkzMGMz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBEZWNpbWFs
IFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKICAgICBy
ZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1EZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFu
eVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3Rl
cERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCitEZWNpbWFsIFN0ZXBSYW5n
ZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBE
ZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uLCBTdHJpbmdWaWV3IHN0ZXBTdHJpbmcpCiB7CiAg
ICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RlcERlc2NyaXB0
aW9uLmRlZmF1bHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggNzNkMjNkYTlm
NTU3ODc3YTlhNTBiMTc2ZTRiOTk0MzlkNjIyZDU4YS4uNTQ4NTNkMjk3NWIzNmE5MGZiODlmYzU4
NjJlZjBlYmRkMjI4MjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGlt
dW07IH0KICAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0K
ICAgICBEZWNpbWFsIHN0ZXBTbmFwcGVkTWF4aW11bSgpIGNvbnN0OwotICAgIHN0YXRpYyBEZWNp
bWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxp
bmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIFN0cmluZ1ZpZXcpOwogICAgIERlY2ltYWwgc3Rl
cCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQogICAgIERlY2ltYWwgc3RlcEJhc2UoKSBjb25z
dCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA1YzFlYzc0
MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5Li43M2EzNTgxNDgyM2NkZWRmOThhYmU5
ZWI2Zjk5ZWQ1Y2UxNDMyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcApAQCAtOTIsOSArOTIsMTEgQEAgU3RyaW5nIHNlcmlhbGl6ZUZv
ck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobnVt
YmVyKTsKIH0KIAotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCitEZWNpbWFsIHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgRGVjaW1hbCYg
ZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1iZXJz
LicgYW5kIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlCisgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgLy8gU3RyaW5nOjp0b0Rv
dWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNo
IGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBjb25zdCBVQ2hhciBmaXJzdENoYXJhY3RlciA9IHN0
cmluZ1swXTsKQEAgLTExNiwxNCArMTE4LDE2IEBAIERlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JO
dW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFjCiAg
ICAgcmV0dXJuIHZhbHVlLmlzWmVybygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOwogfQogCi1EZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKK0Rl
Y2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewog
ICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nLCBEZWNpbWFsOjpu
YW4oKSk7CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJp
bmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCitkb3VibGUgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoU3RyaW5nVmlldyBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogewog
ICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJworICAgIGlmIChzdHJpbmcu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIC8vIFN0cmlu
Zzo6dG9Eb3VibGUoKSBhY2NlcHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJz
LCB3aGljaCBhcmUgbm90IHZhbGlkIGhlcmUuCiAgICAgVUNoYXIgZmlyc3RDaGFyYWN0ZXIgPSBz
dHJpbmdbMF07CkBAIC0xMzQsMTEgKzEzOCwxMSBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGJvb2wgdmFsaWQgPSBmYWxzZTsKLSAg
ICBkb3VibGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUoJnZhbGlkKTsKKyAgICBkb3VibGUgdmFs
dWUgPSBzdHJpbmcudG9Eb3VibGUodmFsaWQpOwogICAgIGlmICghdmFsaWQpCiAgICAgICAgIHJl
dHVybiBmYWxsYmFja1ZhbHVlOwogCi0gICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lk
ZXJlZCB2YWxpZCBieSBTdHJpbmc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUuCisgICAg
Ly8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lkZXJlZCB2YWxpZCBieSBTdHJpbmdWaWV3Ojp0
b0RvdWJsZSwgYnV0IG5vdCB2YWxpZCBoZXJlLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCkBAIC0xNTEsNyArMTU1LDcgQEAg
ZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBk
b3VibGUgZmFsbGJhY2tWYWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSA6IDA7CiB9CiAK
LWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykK
K2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsK
ICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4OTUxNmIxYjliZWU5ZTE5YzY2MTg1
MWMyMjQ3ODJiOGFmNWQ2NDkwLi43YzAzZjMyZDI0YmJhNjJlMTgxYjEzMWViZjIwYTgzMjRjYTJm
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
CkBAIC01NCwxMCArNTQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91Ymxl
KTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkZWNpbWFsL2RvdWJsZS4g
SWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsbGJhY2sgdmFs
dWUgb3IgTmFOIGlmIG5vdCBzcGVjaWZpZWQuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVn
YWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3Ry
aW5nLgogLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBz
dHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KLURlY2ltYWwg
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwotRGVjaW1hbCBwYXJz
ZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZmFs
bGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3Ry
aW5nJik7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwg
ZG91YmxlIGZhbGxiYWNrVmFsdWUpOworRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoU3RyaW5nVmlldyk7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJp
bmdWaWV3LCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKK2RvdWJsZSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShTdHJpbmdWaWV3LCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJz
aW5nLWludGVnZXJzCiBlbnVtIGNsYXNzIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yIHsgTmVnYXRp
dmVPdmVyZmxvdywgUG9zaXRpdmVPdmVyZmxvdywgT3RoZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTU1
YmM3YzE2NmY0OGFlYWQyYmRiMTUzZjRiMjkxZTkxYzAwYWY2ZC4uNWQ1YTM3NmZiZDQwYzgwZjE4
YzdkZGU0OThmYzUzY2RmM2YyZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1OCw3ICs3NTgsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmli
dXRlc0FzVGV4dChQcm90b2NvbDo6RAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGVycm9yU3RyaW5nKTsKICAgICB9CiAKLSAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUg
JiYgIW5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFmb3VuZE9y
aWdpbmFsQXR0cmlidXRlICYmIG5hbWUuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSAhPSBub3RG
b3VuZCkgewogICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5yZW1vdmVBdHRyaWJ1dGUoKmVsZW1l
bnQsIG5hbWUsIGVycm9yU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChlcnJvclN0cmluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVp
bGRlci5jcHAKaW5kZXggNTZhMDc4MmM2ZWMwYzQzNjliZTFjZmJkYTc0OWIzMjQyZmEzN2M0My4u
NGE4ZDFmYTcyNGY5YTkxOWJjYTMyYjQ4ODQxOGFhZmViODM5ZjIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCkBAIC0xNjMsMTIgKzE2MywxMiBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRBcHBlbmQoY29u
c3QgSW5saW5lVGV4dEJveCYgaQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9uKQotICAgICAg
ICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRleHRDb250ZW50LnN1YnN0cmlu
Zyhub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVw
bGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgcGFyYWdyYXBoQ29udGVu
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnN1YnN0cmluZyhub25SZXBs
YWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVwbGFjZWRDb250
ZW50U3RhcnRQb3NpdGlvbikpOwogICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5hcHBl
bmQoc3BhY2UpOwogICAgICAgICBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uID0gcG9z
aXRpb247CiAgICAgfQogICAgIGlmIChub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uIDwg
Y29udGVudExlbmd0aCkKLSAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRl
eHRDb250ZW50LnJpZ2h0KGNvbnRlbnRMZW5ndGggLSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBv
c2l0aW9uKSk7CisgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChTdHJpbmdW
aWV3KHRleHRDb250ZW50KS5yaWdodChjb250ZW50TGVuZ3RoIC0gbm9uUmVwbGFjZWRDb250ZW50
U3RhcnRQb3NpdGlvbikpOwogfQogCiBzdHJ1Y3QgQmlkaUNvbnRleHQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDIzMWQzNmJjMGEzNzFkNDk2NTU3Y2JiNTJkMGU3MzE4MTA4
YzYwYjguLjc2ZDJhYjQ2NGRmNzllZjE3ODZjYzZkNjEwZmJmNWYyYzg3ZGY2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNv
dmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHN0YXRpYyB2b2lk
IHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVuc2ln
bmVkJiBjaGFyYWN0CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRl
ck9iamVjdD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKSkgewogICAgICAgICBp
ZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KGNoaWxkKS50ZXh0KCk7Ci0gICAgICAgICAgICB0ZXh0ID0gdGV4
dC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGF1dG8gbGVuID0gc3RkOjptaW4oY2hh
cmFjdGVyc0xlZnQsIHRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgc3RyZWFtIDw8IHRleHQu
bGVmdChsZW4pOwotICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuOworICAgICAgICAg
ICAgYXV0byB0ZXh0VmlldyA9IFN0cmluZ1ZpZXcodGV4dCkuc3RyaXBXaGl0ZVNwYWNlKCk7Cisg
ICAgICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKGNoYXJhY3RlcnNMZWZ0LCB0ZXh0Vmll
dy5sZW5ndGgoKSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgdGV4dFZpZXcubGVmdChsZW5ndGgp
OworICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuZ3RoOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZShkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihjaGlsZCksIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggNDBkMDIwNTM4YzM5MmE0NTM5NTVhOTJlNGM2
MWRhZDAzODMwOWViNC4uNmFiZjY1ZmM3ZmY2ZWVlZDExM2M4MWZmYmE3YjUxYTQ3YmFkZDgwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAg
c3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUucmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlKS5maW5kKGlzTm90
U3BhY2VPck5ld2xpbmUpID09IG5vdEZvdW5kOwogfQogCiBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
SW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgRmxvYXRTaXplIG1hcmdpbiwgYm9vbCBpbmRpY2F0ZXNDdXJyZW50
U2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIx
YTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li42ZGM1NDgyMmZlYzZlOGQ0MjI3YTE5YWFh
OTBmY2U3MzM1MzgxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNp
bWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtNjkz
LDcgKzY5Myw3IEBAIERlY2ltYWwgRGVjaW1hbDo6ZnJvbURvdWJsZShkb3VibGUgZG91YmxlVmFs
dWUpCiAgICAgcmV0dXJuIG5hbigpOwogfQogCi1EZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHIpCitEZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmcoU3RyaW5nVmll
dyBzdHIpCiB7CiAgICAgaW50IGV4cG9uZW50ID0gMDsKICAgICBTaWduIGV4cG9uZW50U2lnbiA9
IFBvc2l0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCmluZGV4IDU5Y2RiMThkODIxYzZi
YzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjVhNTQwMzRkMzIzMmI2ZjZjMDNjM2ZjZjgzZTFh
Y2U4OWU0ZDU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKQEAgLTE0OSw3ICsxNDks
NyBAQCBwdWJsaWM6CiAgICAgLy8gIGV4cG9uZW50LW1hcmtlciA6Oj0gJ2UnIHwgJ0UnCiAgICAg
Ly8gIGRpZ2l0IDo6PSAnMCcgfCAnMScgfCAuLi4gfCAnOScKICAgICAvLyBOb3RlOiBmcm9tU3Ry
aW5nIGRvZXNuJ3Qgc3VwcG9ydCAiaW5maW5pdHkiIGFuZCAibmFuIi4KLSAgICBzdGF0aWMgRGVj
aW1hbCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIGZyb21T
dHJpbmcoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIERlY2ltYWwgaW5maW5pdHkoU2lnbik7CiAg
ICAgc3RhdGljIERlY2ltYWwgbmFuKCk7CiAgICAgc3RhdGljIERlY2ltYWwgemVybyhTaWduKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcAppbmRleCBjNzQzMTg5OTI4YjNmNmE5YmIzOWY2ZmY0ZmMwOTkzZmUwOTBjYjU0Li41ODFl
ZTgyNzViNDY3ZTYyZmZkNzBiNzg4MjY3NWVlYzI0YjY0OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0yMTMsMTIg
KzIxMywxMiBAQCBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcubGVmdChzdHJpbmcuZmluZChpc0NhY2hlSGVh
ZGVyU2VwYXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK3N0YXRpYyBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+PiBwYXJzZUNhY2hlSGVhZGVyKFN0
cmluZ1ZpZXcgc2FmZUhlYWRlcikKIHsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gcmVzdWx0OworICAgIEFTU0VSVChzYWZlSGVhZGVyLmZpbmQoaXNDb250cm9sQ2hhcmFj
dGVyT3JTcGFjZSkgPT0gbm90Rm91bmQpOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdW
aWV3LCBTdHJpbmdWaWV3Pj4gcmVzdWx0OwogCi0gICAgU3RyaW5nIHNhZmVIZWFkZXJTdHJpbmcg
PSBoZWFkZXIucmVtb3ZlQ2hhcmFjdGVycyhpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNlKTsKLSAg
ICBTdHJpbmdWaWV3IHNhZmVIZWFkZXIgPSBzYWZlSGVhZGVyU3RyaW5nOwogICAgIHVuc2lnbmVk
IG1heCA9IHNhZmVIZWFkZXIubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcG9zID0gMDsKICAgICB3
aGlsZSAocG9zIDwgbWF4KSB7CkBAIC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gR2V0IGRp
cmVjdGl2ZSBuYW1lLCBwYXJzZSByaWdodCBoYW5kIHNpZGUgb2YgZXF1YWwgc2lnbiwgdGhlbiBh
ZGQgdG8gbWFwCi0gICAgICAgIFN0cmluZyBkaXJlY3RpdmUgPSB0cmltVG9OZXh0U2VwYXJhdG9y
KHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dEVxdWFsU2lnblBvc2l0aW9uIC0gcG9zKSku
dG9TdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nVmlldyBkaXJlY3RpdmUgPSB0cmltVG9OZXh0U2Vw
YXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dEVxdWFsU2lnblBvc2l0aW9uIC0g
cG9zKSkudG9TdHJpbmcoKTsKICAgICAgICAgcG9zICs9IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiAt
IHBvcyArIDE7CiAKICAgICAgICAgU3RyaW5nVmlldyB2YWx1ZSA9IHNhZmVIZWFkZXIuc3Vic3Ry
aW5nKHBvcywgbWF4IC0gcG9zKTsKQEAgLTI3OCw3ICsyNzgsOCBAQCBDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzKQogCiAgICAgU3RyaW5nIGNhY2hlQ29udHJvbFZhbHVlID0gaGVhZGVycy5nZXQoSFRU
UEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCk7CiAgICAgaWYgKCFjYWNoZUNvbnRyb2xWYWx1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBkaXJlY3RpdmVzID0gcGFyc2VDYWNoZUhlYWRlcihj
YWNoZUNvbnRyb2xWYWx1ZSk7CisgICAgICAgIGF1dG8gc2FmZUhlYWRlclN0cmluZyA9IGNhY2hl
Q29udHJvbFZhbHVlLnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9sQ2hhcmFjdGVyT3JTcGFjZSk7
CisgICAgICAgIGF1dG8gZGlyZWN0aXZlcyA9IHBhcnNlQ2FjaGVIZWFkZXIoc2FmZUhlYWRlclN0
cmluZyk7CiAKICAgICAgICAgc2l6ZV90IGRpcmVjdGl2ZXNTaXplID0gZGlyZWN0aXZlcy5zaXpl
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlyZWN0aXZlc1NpemU7ICsraSkg
ewpAQCAtMjk3LDcgKzI5OCw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNv
bnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
b29sIG9rOwotICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNl
Y29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJl
Y3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZShvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gU2Vjb25kcyB7IG1heEFnZSB9Owog
ICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJl
Y3RpdmVzW2ldLmZpcnN0LCAibWF4LXN0YWxlIikpIHsKQEAgLTMxMiw3ICszMTMsNyBAQCBDYWNo
ZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWFkZXJzKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgICAgICBk
b3VibGUgbWF4U3RhbGUgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAg
ICAgICAgICAgICAgIGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91
YmxlKG9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5tYXhTdGFsZSA9IFNlY29uZHMgeyBtYXhTdGFsZSB9OwogICAgICAgICAgICAgfSBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAi
aW1tdXRhYmxlIikpIHsKQEAgLTMyMyw3ICszMjQsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVz
IHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgICAgICBkb3VibGUgc3RhbGVXaGlsZVJl
dmFsaWRhdGUgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAg
ICAgICAgIGRvdWJsZSBzdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25k
LnRvRG91YmxlKG9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5zdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IFNlY29uZHMgeyBzdGFsZVdoaWxlUmV2
YWxpZGF0ZSB9OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA5ZDUwM2I1YTkyOTkyZTdlZTFhZjMwZjA5ZTFk
ZjE4YTU2NzliODIxLi4yNjU1ODEyOTNjZDlhNGM4Y2IyYjE2NWYwOWM0MzA1MzRmNDg2ZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApA
QCAtMzMxLDcgKzMzMSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIC8vIHRoYXQgYXJpc2VzIGZyb20gcXVvdGVkLXN0cmluZywg
bm9yIGRvZXMgdGhpcyBmdW5jdGlvbiBwcm9wZXJseSB1bnF1b3RlCiAvLyBhdHRyaWJ1dGUgdmFs
dWVzLiBGdXJ0aGVyIHRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBwcm9jZXNzIHBhcmFtZXRlciBu
YW1lcwogLy8gaW4gYSBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuIChUaGVyZSBhcmUgbGlrZWx5IG90
aGVyIGJ1Z3MgYXMgd2VsbC4pCi1TdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3Np
dGlvbihTdHJpbmdWaWV3IHZhbHVlKQorU3RyaW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVu
dERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgZm9yIChhdXRvIGtleVZhbHVl
UGFpciA6IHZhbHVlLnNwbGl0KCc7JykpIHsKICAgICAgICAgc2l6ZV90IHZhbHVlU3RhcnRQb3Mg
PSBrZXlWYWx1ZVBhaXIuZmluZCgnPScpOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIFN0cmluZyBmaWxl
bmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCiAgICAgICAg
IGlmICh2YWx1ZS5sZW5ndGgoKSA+IDEgJiYgdmFsdWVbMF0gPT0gJ1wiJykKICAgICAgICAgICAg
IHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpIC0gMik7CiAKLSAgICAg
ICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9
CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggZDVjZTc4MjliNWFkMTYyM2Y2OTcxMzhmNzI5NjU4ZGMw
ZDMzNzNmZi4uYWUyNDk4NWYzZTgwZjA0OWJlZTFiYTBhYTc3NTg1NjJmYTg1NDY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtNzksNyAr
NzksNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShj
b25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKIGJv
b2wgaXNWYWxpZEhUVFBUb2tlbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENv
bnRlbnREaXNwb3NpdGlvbihTdHJpbmdWaWV3KTsKK1N0cmluZ1ZpZXcgZmlsZW5hbWVGcm9tSFRU
UENvbnRlbnREaXNwb3NpdGlvbihTdHJpbmdWaWV3KTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
eHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nVmlldyBl
eHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoU3RyaW5nVmlldyk7CiBYU1NQcm90ZWN0aW9uRGlz
cG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBT
dHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYg
cmVwb3J0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFk
ZXIuY3BwCmluZGV4IDFhOWI4M2VlZjU3NzIxZmZjNWUxMTBhMDgzNGJiMDMxMDY3NTVlMTMuLmNm
ZWZlMWViMjVjZGY5Y2ZmMjhmYjBlNTNkOTIyZmQ1ODdmN2IwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBz
dGF0aWMgS2V5VmFsdWVNYXAgcmV0cmlldmVLZXlWYWx1ZVBhaXJzKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyJiBidWZmZQogICAgICAgICAgICAgLy8gVGhpcyBpcyBub3QgYSBrZXkg
dmFsdWUgcGFpciwgaWdub3JlLgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAg
ICAgICAga2V5ID0gU3RyaW5nVmlldyhsaW5lKS5sZWZ0KHNlbWljb2xvbkluZGV4KS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBrZXkgPSBTdHJp
bmdWaWV3KGxpbmUpLmxlZnQoc2VtaWNvbG9uSW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgICAgIHZhbHVlLmFwcGVuZChTdHJpbmdWaWV3KGxp
bmUpLnN1YnN0cmluZyhzZW1pY29sb25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUg
dGhlIGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lLgpAQCAtMTIwLDkgKzEyMCw5IEBAIFJl
ZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlciYgYnVmZmVyKQogICAgIHJldHVybiBtaW1lSGVhZGVyOwogfQogCi1NSU1FSGVhZGVy
OjpFbmNvZGluZyBNSU1FSGVhZGVyOjpwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKGNvbnN0
IFN0cmluZyYgdGV4dCkKK01JTUVIZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6OnBhcnNlQ29u
dGVudFRyYW5zZmVyRW5jb2RpbmcoU3RyaW5nVmlldyB0ZXh0KQogewotICAgIFN0cmluZyBlbmNv
ZGluZyA9IHRleHQuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgYXV0byBlbmNvZGluZyA9IHRleHQu
c3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGVuY29kaW5nLCAiYmFzZTY0IikpCiAgICAgICAgIHJldHVybiBCYXNlNjQ7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuY29kaW5nLCAicXVvdGVkLXByaW50YWJsZSIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAppbmRleCAw
MDhhZWMyZTA3ZTM2OTg3NzBmMGMxMzJmNTg2MmEzNGE1YTJjYjFjLi5kYTEwNjlhNGUxNGJkOGZi
NTc5MDI5Y2IyM2UxMzIzYWEyYzhhNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVIZWFkZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIE1JTUVIZWFkZXIoKTsKIAotICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIG1fY29udGVu
dFR5cGU7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKaW5kZXggNmI5MTY1OTE0YzFm
YzEyMzIzODk3Y2E1MmQ3MzcyZDc2NjEzNTEyOC4uZmFmYTMyMTFmMTMzNWUzNjY5ZDRmNzcyOGJj
M2MzNGRkYzA2MjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFBhcnNl
ZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZShTdHJpbmcmJiBjb250ZW50UmFuZ2UsIE1vZGUg
bW9kZSkKIHsKICAgICBtX21pbWVUeXBlID0gV1RGTW92ZShjb250ZW50UmFuZ2UpOwogICAgIGlm
IChtb2RlID09IE1vZGU6Ok1pbWVTbmlmZikKLSAgICAgICAgbV9taW1lVHlwZSA9IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtX21pbWVUeXBlKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpOworICAgICAgICBtX21pbWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQ
U3BhY2VzKFN0cmluZ1ZpZXcobV9taW1lVHlwZSkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CiAgICAgZWxzZQogICAgICAgICBtX21pbWVUeXBlID0gbV9taW1lVHlwZS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggZDA2NmVhNDcyYzU0ZTY1MjA3OWRiYTQxOGFi
MjQ3YTgzZmE4MjI1Yi4uNzgzODU2YTMyZjY1ODE0NDcxODhiNTA1NDRkMTAwMTY3NjEyMmQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppc0F0dGFjaG1lbnQoKSBjb25zdAogICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CiAK
ICAgICBhdXRvIHZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudERpc3Bvc2l0aW9uKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUubGVmdCh2YWx1ZS5maW5kKCc7JykpLnN0cmlwV2hpdGVTcGFjZSgpLCAiYXR0
YWNobWVudCIpOworICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3KHZhbHVlKS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJh
dHRhY2htZW50Iik7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVu
dFdpdGhGaWxlbmFtZSgpIGNvbnN0CkBAIC03OTYsOCArNzk2LDcgQEAgYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgY29uc3QKICAgICBpZiAoIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnREaXNwb3NpdGlvblZpZXcubGVmdChj
b250ZW50RGlzcG9zaXRpb25WaWV3LmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRh
Y2htZW50IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uVmll
dyk7Ci0gICAgcmV0dXJuICFmaWxlbmFtZS5pc051bGwoKTsKKyAgICByZXR1cm4gIWZpbGVuYW1l
RnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uVmlldykuaXNOdWxs
KCk7CiB9CiAKIFJlc291cmNlUmVzcG9uc2VCYXNlOjpTb3VyY2UgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNvdXJjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAppbmRleCAyOTMxZDA1
ZDRjMjlhM2Q2OTcwYzlmN2FkN2ZjMGY5NmRjNzUyMDViLi5mNmMxMDcyY2ZlMmVjNjJhYWY3ZGMw
ZTEyN2VkNDc3OTgyODVlNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlSW5mbyhDZXJ0
aWZpY2F0ZUluZm8mJiBjZXJ0aWZpY2F0ZUluZm8pCiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsZW5h
bWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOworICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29u
dGVudERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERp
c3Bvc2l0aW9uKSkudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpzaG91
bGRSZWRpcmVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAppbmRleCA1NWMzNGM4ZGIzZDg3YjRjZDRiNDU1OTg4NDRmMDVkYTEyM2VkZTc5Li5h
Nzg3M2ExNTNmNjJlNzNhZWNlOTIxNGRkZjFhZTUxZDU5OWY4NjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBA
QCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRCdXN5SGFuZGxlcihpbnQoKmhhbmRsZXIpKHZvaWQq
LCBpbnQpKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRsZXIgc2V0IG9uIG5v
bi1vcGVuIGRhdGFiYXNlIik7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21t
YW5kU2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0
ZUNvbW1hbmRTbG93KFN0cmluZ1ZpZXcgcXVlcnkpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBw
cmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0
ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBTUUxpdGVE
YXRhYmFzZTo6Y2xlYXJBbGxUYWJsZXMoKQogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKQogICAgICAgICB0YWJsZXMuYXBwZW5kKHN0YXRlbWVudC0+Y29sdW1uVGV4
dCgwKSk7CiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IHRhYmxlcykgewotICAgICAgICBpZiAoIWV4
ZWN1dGVDb21tYW5kU2xvdygiRFJPUCBUQUJMRSAiICsgdGFibGUpKQorICAgICAgICBpZiAoIWV4
ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJEUk9QIFRBQkxFICIsIHRhYmxlKSkpCiAgICAg
ICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJVbmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsIHRhYmxl
LmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CiB9CkBAIC03MjMsNyArNzIzLDcgQEAgc3RhdGljIEV4
cGVjdGVkPHNxbGl0ZTNfc3RtdCosIGludD4gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZSYKICAgICByZXR1cm4gc3RhdGVtZW50OwogfQogCi1FeHBlY3RlZDxTUUxp
dGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNv
bnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4g
U1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVlcnlTdHJp
bmcpCiB7CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgp
LnV0ZjgoKTsKICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0
ZW1lbnQoKnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNzQ0LDcgKzc0
NCw3IEBAIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJl
cGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVu
dCB7ICp0aGlzLCBzcWxTdGF0ZW1lbnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVS
ZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0
ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxVbmlxdWVSZWY8
U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1l
bnRTbG93KFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1
ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0ZjgoKTsKICAgICBhdXRvIHNxbFN0YXRlbWVu
dCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoKnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVl
cnkubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaAppbmRleCA5MTYwMTM0ODE3NTkyMTNhYTUyZDE5OGE0N2UyZTVjNGQ2YTk4NzM0Li44NmZj
MDQ1ODhiZDhlMzg1ZmU0ODYyNTQxNWM1NGU5Nzg3NmRkNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbG9zZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29t
bWFuZFNsb3coY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRl
Q29tbWFuZFNsb3coU3RyaW5nVmlldyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRl
Q29tbWFuZChBU0NJSUxpdGVyYWwpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFi
bGVFeGlzdHMoU3RyaW5nVmlldyk7CkBAIC03NSw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIHRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0
ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVT
dGF0ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVj
dGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBx
dWVyeSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRl
bWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkp
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+
LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhTdHJpbmdWaWV3IHF1ZXJ5KTsKICAgICBX
RUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBw
cmVwYXJlSGVhcFN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAgLy8gQWJvcnRz
IHRoZSBjdXJyZW50IGRhdGFiYXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQgc2FmZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCA1NGQyZWI3MjgyYzM5NDg3
NTZiZDg1MmFhOTZiZTMxM2IxNzQ5N2Q3Li4wYTZjMDk3ZjNkNWNkYjc1NjA5M2Q0MWZhYjdiNmZh
ZmE1ZjI0Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0x
MTUsOSArMTE1LDkgQEAgaW5saW5lIFNlc3Npb25GZWF0dXJlIHNlc3Npb25GZWF0dXJlRnJvbVJl
ZmVyZW5jZVNwYWNlVHlwZShSZWZlcmVuY2VTcGFjZVR5cGUgcmUKICAgICByZXR1cm4gU2Vzc2lv
bkZlYXR1cmU6OlJlZmVyZW5jZVNwYWNlVHlwZVZpZXdlcjsKIH0KIAotaW5saW5lIHN0ZDo6b3B0
aW9uYWw8U2Vzc2lvbkZlYXR1cmU+IHBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbkZlYXR1cmU+IHBh
cnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIFN0
cmluZyBmZWF0dXJlID0gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7CisgICAgYXV0byBmZWF0dXJlID0gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKICAgICBpZiAoZmVhdHVyZSA9PSAidmlld2VyIl9z
KQogICAgICAgICByZXR1cm4gU2Vzc2lvbkZlYXR1cmU6OlJlZmVyZW5jZVNwYWNlVHlwZVZpZXdl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCBjNjky
YjQwNzQyYzM3N2Y5OWYwYzg5NGZiNjI1N2I2MmM0M2Y0M2YwLi41MzIxNDk3YWQxMGI3MDNmMzkx
MmJjYjBmZjZkMTYwZTIwNDYxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6U1ZH
QW5pbWF0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYK
IHsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBW
ZWN0b3I8ZmxvYXQ+JiByZXN1bHQsIGJvb2wgdmVyaWZ5T3JkZXIpCitzdGF0aWMgdm9pZCBwYXJz
ZUtleVRpbWVzKFN0cmluZ1ZpZXcgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2
ZXJpZnlPcmRlcikKIHsKICAgICByZXN1bHQuY2xlYXIoKTsKICAgICBib29sIGlzRmlyc3QgPSB0
cnVlOwotICAgIGZvciAoU3RyaW5nVmlldyB0aW1lU3RyaW5nIDogU3RyaW5nVmlldyhwYXJzZSku
c3BsaXQoJzsnKSkgeworICAgIGZvciAoYXV0byB0aW1lU3RyaW5nIDogcGFyc2Uuc3BsaXQoJzsn
KSkgewogICAgICAgICBib29sIG9rOwogICAgICAgICBmbG9hdCB0aW1lID0gdGltZVN0cmluZy50
b0Zsb2F0KG9rKTsKICAgICAgICAgaWYgKCFvayB8fCB0aW1lIDwgMCB8fCB0aW1lID4gMSkKQEAg
LTE1Myw5ICsxNTMsMTAgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICAgICAgLy8gUGVy
IHRoZSBTTUlMIHNwZWNpZmljYXRpb24sIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNl
LAogICAgICAgICAvLyBhbmQgd2hpdGUgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciBzZW1pY29sb24g
c2VwYXJhdG9ycywgaXMgYWxsb3dlZCBhbmQgd2lsbCBiZSBpZ25vcmVkLgogICAgICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9hbmltYXRlLmh0bWwjVmFsdWVzQXR0cmlidXRlCi0g
ICAgICAgIG1fdmFsdWVzID0gdmFsdWUuc3RyaW5nKCkuc3BsaXQoJzsnKTsKLSAgICAgICAgZm9y
IChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAgdmFsdWUu
c3RyaW5nKCkuc3BsaXQoJzsnLCBbdGhpc10oU3RyaW5nVmlldyBpbm5lclZhbHVlKSB7CisgICAg
ICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoaW5uZXJWYWx1ZS5zdHJpcFdoaXRlU3BhY2UoKS50b1N0
cmluZygpKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgdXBkYXRlQW5pbWF0aW9uTW9kZSgpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYjI5NDAzZWZjZTJiOGVjM2E0OGMyNTQ2
OGYxODk2Njc5ZjgxNTZjNS4uZWY2NGM0ZDY1MWYxNWM3OGJlNzhkMGY1OTdlNjUzZDlhMjk4Yzgy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTY0LDggKzE2NCw3IEBAIERpY3Rpb25hcnlQb3B1cEluZm8g
V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3Qg
U2ltCiAgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBlZGl0b3Iuc2V0
SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyh0cnVlKTsKIAotICAgIC8vIEZJWE1FOiBJbmVm
ZmljaWVudCB0byBjYWxsIHN0cmlwV2hpdGVTcGFjZSB0byBkZXRlY3Qgd2hldGhlciBhIHN0cmlu
ZyBoYXMgYSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gaXQuCi0gICAgaWYgKHBsYWluVGV4
dChyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4
dChyYW5nZSkuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAg
ICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDBh
ZWU3YjY5YWZkNWI0YTZmNzY4ZjIwNWY4YTAyOGMxOGVhNzg4OGMuLjM3Mjk0NmQ5ZjdkOGM3YmNk
ZDY0Y2M1OTM3ZDM3YzFlNDA3ZGYxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
QEAgLTUxNyw3ICs1MTcsNyBAQCArIChXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvKV9kaWN0
aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2U6KGNvbnN0IFdlYkNvcmU6OlNpbQogICAgIC8vIERpY3Rp
b25hcnkgQVBJIHdpbGwgYWNjZXB0IGEgd2hpdGVzcGFjZS1vbmx5IHN0cmluZyBhbmQgZGlzcGxh
eSBVSSBhcyBpZiBpdCB3ZXJlIHJlYWwgdGV4dCwKICAgICAvLyBzbyBiYWlsIG91dCBlYXJseSB0
byBhdm9pZCB0aGF0LgogICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8gcG9wdXBJbmZv
OwotICAgIGlmIChwbGFpblRleHQocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkg
eworICAgIGlmIChwbGFpblRleHQocmFuZ2UpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0g
bm90Rm91bmQpIHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm8oZmFsc2UpOwogICAgICAgICByZXR1cm4gcG9wdXBJbmZvOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457764</attachid>
            <date>2022-04-16 20:56:48 -0700</date>
            <delta_ts>2022-04-17 00:01:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220416205647.patch</filename>
            <type>text/plain</type>
            <size>53534</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLjY1OGVmYTE5NzE0YTExMjNhMWZkNmFlYzI4N2VlZWZiOGUzNDg5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTm90U3BhY2VP
ck5ld2xpbmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjb21w
bGV4IFN0cmluZzo6aW5zZXJ0KCkgd2l0aCBhIHNpbXBsaWZpZWQgbWFrZVN0cmluZ0J5SW5zZXJ0
aW5nKCkgZnJlZSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwNGY2MmJlMDNlNTJiNTQ4YzM2NmRi
NWIwZmQwNGRkYjg5MzY2MTEuLmU4YmM0NWExYTEyZDlhMWJmNDg2ZDE3YzVjMTVmNGM1NzMzZDk5
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudF0pOgor
ICAgICAgICAoYXBwZW5kU3RyaW5nVG9SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW5kZXJlckZvclZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OnNldE1l
ZGlhVHlwZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFn
bWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICog
aHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OnJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFwcGVuZCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByaW50VGV4dEZvclN1
YnRyZWUpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vRGVj
aW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0
dXJlRGVzY3JpcHRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXlUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBpZCBtYXRjaGluZyBp
biBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA0N2VkYTNlZDFkNjVhNjQ3NDBjNGE0M2E2Nzg1YzYxMjdlZWU0NDk3Li42
ZDZiZjI4YTYxM2U1M2Q5MTY2M2Q1ZjVmOGFjY2M1NWYzMWFmMWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBp
biBtb3JlIHBsYWNlcywgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgU3RyaW5nIGFsbG9jYXRpb25z
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToK
KwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBTdHJpbmcg
YWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNDMyM2NkZmY4ODY0
NWU4ZGRkMmNlNGRkZmU2M2ViMzBhMjRiOGJiLi44ZTJmOWJhYzc5YzYzYmQyMGYzNTUxY2YzMDM0
ZjkwNDk1OWYyZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUg
cGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJpbmcgYWxsb2NhdGlvbnMuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICgrW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZTppbkZyYW1lOndpdGhMb29rdXBPcHRpb25zOmluZGljYXRvck9wdGlvbnM6dHJhbnNpdGlv
bjpdKToKKwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBT
dHJpbmcgYWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDU4Yjg1
NDU2Zjg2YzVjYTg0ZWUzZTk1ZWE0YjIzYjRiNDMxNDQ1YzEuLjNjNDE3NGU1MjZhYTY2NTBkY2Rl
NWJmNWNlYWM1OWEzNmNjZDM5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAt
ODM1LDEzICs4MzUsNiBAQCBmbG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
IH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNo
RnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0KQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgbWF0Y2hGdW5jdGlvbiwg
c3RhcnQpOwotICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBt
YXRjaEZ1bmN0aW9uLCBzdGFydCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0
IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggNzM1MDhlY2ViNjU1YTVhNWRmYzNjYjU3YzFmOGJiMTg3MjIyYWZiNy4uNDNj
OTU0OWY2NTM2MDE3MGU1MWRhMDg2MTVkNjA4ZjQ1OTY5M2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTQzMCw3ICs0MzAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoTENo
YXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hh
cj4+KiA9IG51bGxwdHI+CisgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChj
b25zdCBMQ2hhciosIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCk7CkBAIC02MDAsNiArNjAxLDcgQEAgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsK
IC8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBpdCB1c2VzIHRoZSBV
bmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KIC8vIE1vc3QgV2ViS2l0IGNhbGxlcnMg
ZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNIVE1MU3BhY2UgaW5z
dGVhZC4KIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyKTsKK2Jvb2wgaXNOb3RTcGFjZU9y
TmV3bGluZShVQ2hhcjMyKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5z
aWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKik7
CiAKQEAgLTcwNCw2ICs3MDYsMTQgQEAgaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFVD
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19p
bnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgVUNoYXI+Pio+CitzaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgc3RhcnQpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBzdGFydCk7Cisg
ICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rp
b24sIHN0YXJ0KTsKK30KKwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFj
aXR5PiYgYSwgU3RyaW5nSW1wbCogYikKIHsKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxp
dHkoYS5kYXRhKCksIGEuc2l6ZSgpLCBiKTsKQEAgLTc1NCw2ICs3NjQsMTEgQEAgaW5saW5lIGJv
b2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyIGNoYXJhY3RlcikKICAgICByZXR1cm4gaXNMYXRp
bjEoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9u
KGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCitpbmxpbmUgYm9vbCBp
c05vdFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIgY2hhcmFjdGVyKQoreworICAgIHJldHVybiAhaXNT
cGFjZU9yTmV3bGluZShjaGFyYWN0ZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25z
dCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZyk7CkBAIC0xMzE0
LDMgKzEzMjksNSBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNo
YXJhY3RlcnMoY29uc3QgUHJlZGljYXRlJiBmaW5kTWF0Y2gpCiB1c2luZyBXVEY6OlN0YXRpY1N0
cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwordXNp
bmcgV1RGOjppc05vdFNwYWNlT3JOZXdsaW5lOwordXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTRkMGJiZWZlMDdjYmQ1OWE1NzM4ZTk0NTRh
MTgxZTIxYjAxZGYzZC4uMjlhMWNmNjM1OTc3OGE1NmY0OGJkNzM5Mzg0MzNkY2NjNWVlY2I3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29u
c3Q7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5j
dGlvbiwgVUNoYXI+PiogPSBudWxscHRyPgogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hG
dW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsg
fQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDog
bm90Rm91bmQ7IH0KIApAQCAtNjQzLDcgKzY0NCw2IEBAIHVzaW5nIFdURjo6bnVsbFN0cmluZzsK
IHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM7Ci11c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6
OnJldmVyc2VGaW5kOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDY4M2RmY2QwYzRl
NWQ4MzZhMzk4NGYzNWVjMjFhZDEwZmEzNjk2NGIuLmFjYWNiZjcyNzZhODVkMGI5MWM5ZTU1YmIz
MGYyNjcwYmZjNjhjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5
IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheShjb25zdCBKU09OOgogICAg
ICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6QnJvd3NlcjsKICAgICB9
CiAKLSAgICBzdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgc3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHN0cmlu
Z1ZhbHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJmdWxsc2NyZWVuIikKICAgICAgICAgcmV0dXJuIEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXk6OkZ1bGxzY3JlZW47CkBAIC0yMzAsNyArMjMwLDcgQEAg
VmVjdG9yPEFwcGxpY2F0aW9uTWFuaWZlc3Q6Okljb24+IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXI6OnBhcnNlSWNvbnMoY29uc3QgSlMKICAgICAgICAgICAgICAgICBwdXJwb3Nlcy5hZGQoQXBw
bGljYXRpb25NYW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6QW55KTsKICAgICAgICAgICAgICAgICBj
dXJyZW50SWNvbi5wdXJwb3NlcyA9IHB1cnBvc2VzOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBwdXJwb3NlU3RyaW5nVmFsdWUuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICAgICAgICAgICAg
ICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHB1cnBvc2VTdHJpbmdWYWx1ZSkuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBrZXl3b3JkcyA9IHB1cnBvc2VTdHJpbmdWYWx1ZS5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCIgIik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGtleXdvcmQgOiBrZXl3b3JkcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA0MmQwYjdj
MDk2MzA1NTRkYWRmN2U2MjRhOWNlZWVkMTI0NDRkMDQzLi40NTVhYWNlODgwZGQ5ZmNjODRhYTVl
ZWJkN2RkYjMwODMyM2M0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMTgxLDcgKzE4
MSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3RhYmxpc2hTdGF0ZW1lbnQoKQogICAgIHJl
dHVybiBjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoc3FsKTsKIH0KIAotYm9vbCBTUUxpdGVJREJDdXJz
b3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKK2Jvb2wgU1FMaXRl
SURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIkNyZWF0aW5nIGN1cnNvciB3aXRoIFNRTCBxdWVyeTogXCIlc1wiIiwg
c3FsLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggZjc4NzkzMjY2NTY0
NzA0ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YS4uNjAyMjY5NDBjNTQ2OTE0OWVlZjRhMDkwOTEy
YWZmMDcxODA2ZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKLSAgICBib29s
IGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCk7CisgICAgYm9vbCBjcmVh
dGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpOwogICAgIGJvb2wgYmluZEFyZ3VtZW50
cygpOwogCiAgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKaW5kZXggZTY3MDAyZDE3ZGNmMzQ4MzE4ZDE4NWIzNDdiMWUyNjBlMmJkOWI2My4uMDE4ZGJi
OTliMThmYjY3YjhiMGRjMDkzODgyNzgxN2FiZGIyYzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTExMiwyOSArMTEyLDI5IEBA
IHN0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGlu
dCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobWVzc2FnZSwg
IiAoIiwgc3FsaXRlRXJyb3JDb2RlLCAnICcsIHNxbGl0ZUVycm9yTWVzc2FnZSwgJyknKTsKIH0K
IAotc3RhdGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBz
ZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5nVmlldyBxdWVy
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBh
cmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0
YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcyki
LCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwgdmFsdWUpOwogCiAgICAgaWYgKHN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0
ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGVwIHN0YXRlbWVudCB0
byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQorc3RhdGljIGJvb2wg
cmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5n
VmlldyBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYi5wcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVh
ZCB0ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVl
cnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFy
aW5nIHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0
YXRlbWVudC5lcnJvcigpLCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4
dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIExPR19FUlJPUigiRXJyb3IgKCVp
KSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnku
YXNjaWkoKS5kYXRhKCkpOworICAgIExPR19FUlJPUigiRXJyb3IgKCVpKSByZWFkaW5nIHRleHQg
cmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnkudXRmOCgpLmRhdGEoKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDE5NDQ5YjNlZTVhMDQyM2MwZWFmNzM0NDlhOGJiMjY2Mzk1YWNlOTkuLmFk
MzM2NmIxOTcwZmUwNmJlZDZiOGE1MDE2YjcxNWY5MWJlY2ZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTE0LDcgKzExMTQsNyBAQCAtIChCT09MKWRl
dGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzQ5MgogICAgICAgICByZXR1cm4gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmlzS2V5Ym9hcmRGb2N1c2FibGUoKQogICAgICAgICAgICAgJiYgW3NlbGYg
YWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0gPT0gMAotICAgICAgICAgICAgJiYgc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKS5zdHJpcFdoaXRlU3BhY2Uo
KS5sZW5ndGgoKSA+IDA7CisgICAgICAgICAgICAmJiBzZWxmLmF4QmFja2luZ09iamVjdC0+ZGVz
Y3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgIT0gbm90
Rm91bmQ7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRp
YVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJz
ZXIuaAppbmRleCBlNmMxNWVjMzA2YmY0NzgzYjljN2UzNWZhNTM5NzYxNTI3YzkwM2M5Li4wMWNk
NTNlMzNjY2Y5ZTFkMzk5NDEyZWJmNDBjNmI1MjNjZWZjZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAg
ICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKICAgICAgICAgdm9pZCByZW1vdmVMYXN0
RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsgfQorICAgICAgICB2b2lkIHNldE1l
ZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUgPSBXVEZNb3ZlKG1lZGlh
VHlwZSk7IH0KIAogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlF
eHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2I0YjcxYWI5M2M2ZWQ3ZDU2ODhmNDg0NWIzMzQx
ODRlYjJjMGNiZS4uOTVkNDRlODgwODU4NWRkZjA0OTJmMjkwNzk0YTJkYjdkZGI1OWVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzIyMSw3ICszMjIxLDcgQEAgdm9pZCBFZGl0
b3I6OnRyYW5zcG9zZSgpCiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQoKnJhbmdlKTsKICAg
ICBpZiAodGV4dC5sZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIHRy
YW5zcG9zZWQgPSB0ZXh0LnJpZ2h0KDEpICsgdGV4dC5sZWZ0KDEpOworICAgIFN0cmluZyB0cmFu
c3Bvc2VkID0gbWFrZVN0cmluZyh0ZXh0WzFdLCB0ZXh0WzBdKTsKIAogICAgIC8vIFNlbGVjdCB0
aGUgdHdvIGNoYXJhY3RlcnMuCiAgICAgaWYgKG5ld1NlbGVjdGlvbiAhPSBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGNlZDMyMzVlZmI4OWZhYjc0YWYyOWM2ZDVlODIwZjQ3MThiNjZkYWYu
LjIxZTAyZWE4MGI4NjNiYzIyYmM0YWQ5Yjk5ZDRlYTQwMTMwOTE3MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xOTA0LDE1ICsxOTA0LDE1IEBAIHZv
aWQgRnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Ym9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBjYXJldCA9IHBvczsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocG9zIC0gbWlkIDwgMCkgewogICAgICAgICAgICAgICAgIC8vIHRv
byBmZXcgY2hhcmFjdGVycyB0byBsZWZ0Ci0gICAgICAgICAgICAgICAgc2hvdyA9IHRleHQubGVm
dChtYXggLSAzKSArICIuLi4iOworICAgICAgICAgICAgICAgIHNob3cgPSBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcodGV4dCkubGVmdChtYXggLSAzKSwgIi4uLiIpOwogICAgICAgICAgICAgICAgIGNh
cmV0ID0gcG9zOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBwb3Mg
KyBtaWQgPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgICAgIC8vIGVub3VnaCBjaGFyYWN0
ZXJzIG9uIGVhY2ggc2lkZQotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQuc3Vi
c3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CisgICAgICAgICAgICAgICAg
c2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHBvcyAt
IG1pZCArIDMsIG1heCAtIDYpLCAiLi4uIik7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBtaWQ7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFj
dGVycyBvbiByaWdodAotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQucmlnaHQo
bWF4IC0gMyk7CisgICAgICAgICAgICAgICAgc2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmlu
Z1ZpZXcodGV4dCkucmlnaHQobWF4IC0gMykpOwogICAgICAgICAgICAgICAgIGNhcmV0ID0gcG9z
IC0gKHRleHRMZW5ndGggLSBzaG93Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
aW5kZXggOWYzNjg2MGEyNjE0MGY0OWU4MjRkMzI2N2RlM2VhZjlhMTJkYzg5MS4uMGIyZDQzYjVj
ZTlhNDhhY2YzYjMyYjM5MmQzYWY1MDk2OWQ1ZjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC01NSwxOSArNTUsMTcgQEAgc3RhdGlj
IFN0cmluZyBjb2xsZWN0RGlnaXRzKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCYgcG9zaXQKICAgICByZXR1cm4gZGlnaXRzLnRvU3RyaW5nKCk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgY29sbGVjdEZyYWN0aW9uKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCYgcG9zaXRpb24pCitzdGF0aWMgU3RyaW5nVmlldyBjb2xsZWN0RnJh
Y3Rpb24oY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3Np
dGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGRpZ2l0czsKLQogICAgIC8vIGh0dHA6Ly93d3cu
aWV0Zi5vcmcvcmZjL3JmYzIzMjYudHh0CiAgICAgLy8gWyAiLiIgKkRJR0lUIF0KICAgICBpZiAo
aW5wdXRbcG9zaXRpb25dICE9ICcuJykKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgZGlnaXRzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7Cisg
ICAgKytwb3NpdGlvbjsgLy8gSW5jbHVkZSBpbml0aWFsIHBlcmlvZC4KICAgICB3aGlsZSAocG9z
aXRpb24gPCBsZW5ndGggJiYgaXNBU0NJSURpZ2l0KGlucHV0W3Bvc2l0aW9uXSkpCi0gICAgICAg
IGRpZ2l0cy5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwotICAgIHJldHVybiBkaWdpdHMudG9T
dHJpbmcoKTsKKyAgICAgICAgKytwb3NpdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nVmlldyB7IGlu
cHV0LCBwb3NpdGlvbiB9OwogfQogCiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyKGNvbnN0IFVSTCYgdXJsKQpAQCAtMjcwLDggKzI2OCw5IEBAIGJvb2wgTWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3RyaW5n
LCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgKHRpbWVTdHJpbmdbb2Zmc2V0XSA9PSAnLicpIHsKICAg
ICAgICAgaWYgKG9mZnNldCA9PSBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgU3RyaW5nIGRpZ2l0cyA9IGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgs
IG9mZnNldCk7Ci0gICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGRpZ2l0cy50b0RvdWJsZSgpKTsKKyAgICAgICAgYXV0byBkaWdpdHMgPSBjb2xsZWN0RnJhY3Rp
b24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBib29sIGlzVmFsaWQ7Cisg
ICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRpZ2l0cy50b0Rv
dWJsZShpc1ZhbGlkKSk7CiAgICAgICAgIHRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUodmFsdWUxKSArIGZyYWN0aW9uOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDgsOCArMzA3LDEwIEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1l
KGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgICAgIHZhbHVlMSA9
IDA7CiAgICAgfQogCi0gICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1lU3RyaW5nW29mZnNl
dF0gPT0gJy4nKQotICAgICAgICBmcmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShjb2xsZWN0RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpLnRvRG91YmxlKCkp
OworICAgIGlmIChvZmZzZXQgPCBsZW5ndGggJiYgdGltZVN0cmluZ1tvZmZzZXRdID09ICcuJykg
eworICAgICAgICBib29sIGlzVmFsaWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgsIG9mZnNl
dCkudG9Eb3VibGUoaXNWYWxpZCkpOworICAgIH0KICAgICAKICAgICB0aW1lID0gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKCh2YWx1ZTEgKiBzZWNvbmRzUGVySG91cikgKyAodmFsdWUyICog
c2Vjb25kc1Blck1pbnV0ZSkgKyB2YWx1ZTMpICsgZnJhY3Rpb247CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggYmQzNWE4NDc4MjYxYzEwMGZmMTdkMjFl
MTJjYjdhNmUwY2JiZThiNC4uN2VhODczMDExZTVmZTk1MzcwMmUxMDFkY2E4OTdlZDczNDkzMGMz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBEZWNpbWFs
IFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKICAgICBy
ZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1EZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFu
eVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3Rl
cERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCitEZWNpbWFsIFN0ZXBSYW5n
ZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBE
ZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uLCBTdHJpbmdWaWV3IHN0ZXBTdHJpbmcpCiB7CiAg
ICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RlcERlc2NyaXB0
aW9uLmRlZmF1bHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggNzNkMjNkYTlm
NTU3ODc3YTlhNTBiMTc2ZTRiOTk0MzlkNjIyZDU4YS4uNTQ4NTNkMjk3NWIzNmE5MGZiODlmYzU4
NjJlZjBlYmRkMjI4MjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGlt
dW07IH0KICAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0K
ICAgICBEZWNpbWFsIHN0ZXBTbmFwcGVkTWF4aW11bSgpIGNvbnN0OwotICAgIHN0YXRpYyBEZWNp
bWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxp
bmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIFN0cmluZ1ZpZXcpOwogICAgIERlY2ltYWwgc3Rl
cCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQogICAgIERlY2ltYWwgc3RlcEJhc2UoKSBjb25z
dCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA1YzFlYzc0
MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5Li43M2EzNTgxNDgyM2NkZWRmOThhYmU5
ZWI2Zjk5ZWQ1Y2UxNDMyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcApAQCAtOTIsOSArOTIsMTEgQEAgU3RyaW5nIHNlcmlhbGl6ZUZv
ck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobnVt
YmVyKTsKIH0KIAotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCitEZWNpbWFsIHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgRGVjaW1hbCYg
ZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1iZXJz
LicgYW5kIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlCisgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgLy8gU3RyaW5nOjp0b0Rv
dWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNo
IGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBjb25zdCBVQ2hhciBmaXJzdENoYXJhY3RlciA9IHN0
cmluZ1swXTsKQEAgLTExNiwxNCArMTE4LDE2IEBAIERlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JO
dW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFjCiAg
ICAgcmV0dXJuIHZhbHVlLmlzWmVybygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOwogfQogCi1EZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKK0Rl
Y2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewog
ICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nLCBEZWNpbWFsOjpu
YW4oKSk7CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJp
bmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCitkb3VibGUgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoU3RyaW5nVmlldyBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogewog
ICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJworICAgIGlmIChzdHJpbmcu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIC8vIFN0cmlu
Zzo6dG9Eb3VibGUoKSBhY2NlcHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJz
LCB3aGljaCBhcmUgbm90IHZhbGlkIGhlcmUuCiAgICAgVUNoYXIgZmlyc3RDaGFyYWN0ZXIgPSBz
dHJpbmdbMF07CkBAIC0xMzQsMTEgKzEzOCwxMSBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGJvb2wgdmFsaWQgPSBmYWxzZTsKLSAg
ICBkb3VibGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUoJnZhbGlkKTsKKyAgICBkb3VibGUgdmFs
dWUgPSBzdHJpbmcudG9Eb3VibGUodmFsaWQpOwogICAgIGlmICghdmFsaWQpCiAgICAgICAgIHJl
dHVybiBmYWxsYmFja1ZhbHVlOwogCi0gICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lk
ZXJlZCB2YWxpZCBieSBTdHJpbmc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUuCisgICAg
Ly8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lkZXJlZCB2YWxpZCBieSBTdHJpbmdWaWV3Ojp0
b0RvdWJsZSwgYnV0IG5vdCB2YWxpZCBoZXJlLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCkBAIC0xNTEsNyArMTU1LDcgQEAg
ZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBk
b3VibGUgZmFsbGJhY2tWYWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSA6IDA7CiB9CiAK
LWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykK
K2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsK
ICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4OTUxNmIxYjliZWU5ZTE5YzY2MTg1
MWMyMjQ3ODJiOGFmNWQ2NDkwLi43YzAzZjMyZDI0YmJhNjJlMTgxYjEzMWViZjIwYTgzMjRjYTJm
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
CkBAIC01NCwxMCArNTQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91Ymxl
KTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkZWNpbWFsL2RvdWJsZS4g
SWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsbGJhY2sgdmFs
dWUgb3IgTmFOIGlmIG5vdCBzcGVjaWZpZWQuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVn
YWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3Ry
aW5nLgogLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBz
dHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KLURlY2ltYWwg
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwotRGVjaW1hbCBwYXJz
ZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZmFs
bGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3Ry
aW5nJik7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwg
ZG91YmxlIGZhbGxiYWNrVmFsdWUpOworRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoU3RyaW5nVmlldyk7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJp
bmdWaWV3LCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKK2RvdWJsZSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShTdHJpbmdWaWV3LCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJz
aW5nLWludGVnZXJzCiBlbnVtIGNsYXNzIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yIHsgTmVnYXRp
dmVPdmVyZmxvdywgUG9zaXRpdmVPdmVyZmxvdywgT3RoZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTU1
YmM3YzE2NmY0OGFlYWQyYmRiMTUzZjRiMjkxZTkxYzAwYWY2ZC4uNWQ1YTM3NmZiZDQwYzgwZjE4
YzdkZGU0OThmYzUzY2RmM2YyZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1OCw3ICs3NTgsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmli
dXRlc0FzVGV4dChQcm90b2NvbDo6RAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGVycm9yU3RyaW5nKTsKICAgICB9CiAKLSAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUg
JiYgIW5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFmb3VuZE9y
aWdpbmFsQXR0cmlidXRlICYmIG5hbWUuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSAhPSBub3RG
b3VuZCkgewogICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5yZW1vdmVBdHRyaWJ1dGUoKmVsZW1l
bnQsIG5hbWUsIGVycm9yU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChlcnJvclN0cmluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVp
bGRlci5jcHAKaW5kZXggNTZhMDc4MmM2ZWMwYzQzNjliZTFjZmJkYTc0OWIzMjQyZmEzN2M0My4u
NGE4ZDFmYTcyNGY5YTkxOWJjYTMyYjQ4ODQxOGFhZmViODM5ZjIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCkBAIC0xNjMsMTIgKzE2MywxMiBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRBcHBlbmQoY29u
c3QgSW5saW5lVGV4dEJveCYgaQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9uKQotICAgICAg
ICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRleHRDb250ZW50LnN1YnN0cmlu
Zyhub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVw
bGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgcGFyYWdyYXBoQ29udGVu
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnN1YnN0cmluZyhub25SZXBs
YWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVwbGFjZWRDb250
ZW50U3RhcnRQb3NpdGlvbikpOwogICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5hcHBl
bmQoc3BhY2UpOwogICAgICAgICBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uID0gcG9z
aXRpb247CiAgICAgfQogICAgIGlmIChub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uIDwg
Y29udGVudExlbmd0aCkKLSAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRl
eHRDb250ZW50LnJpZ2h0KGNvbnRlbnRMZW5ndGggLSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBv
c2l0aW9uKSk7CisgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChTdHJpbmdW
aWV3KHRleHRDb250ZW50KS5yaWdodChjb250ZW50TGVuZ3RoIC0gbm9uUmVwbGFjZWRDb250ZW50
U3RhcnRQb3NpdGlvbikpOwogfQogCiBzdHJ1Y3QgQmlkaUNvbnRleHQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDIzMWQzNmJjMGEzNzFkNDk2NTU3Y2JiNTJkMGU3MzE4MTA4
YzYwYjguLjc2ZDJhYjQ2NGRmNzllZjE3ODZjYzZkNjEwZmJmNWYyYzg3ZGY2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNv
dmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHN0YXRpYyB2b2lk
IHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVuc2ln
bmVkJiBjaGFyYWN0CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRl
ck9iamVjdD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKSkgewogICAgICAgICBp
ZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KGNoaWxkKS50ZXh0KCk7Ci0gICAgICAgICAgICB0ZXh0ID0gdGV4
dC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGF1dG8gbGVuID0gc3RkOjptaW4oY2hh
cmFjdGVyc0xlZnQsIHRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgc3RyZWFtIDw8IHRleHQu
bGVmdChsZW4pOwotICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuOworICAgICAgICAg
ICAgYXV0byB0ZXh0VmlldyA9IFN0cmluZ1ZpZXcodGV4dCkuc3RyaXBXaGl0ZVNwYWNlKCk7Cisg
ICAgICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKGNoYXJhY3RlcnNMZWZ0LCB0ZXh0Vmll
dy5sZW5ndGgoKSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgdGV4dFZpZXcubGVmdChsZW5ndGgp
OworICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuZ3RoOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZShkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihjaGlsZCksIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggNDBkMDIwNTM4YzM5MmE0NTM5NTVhOTJlNGM2
MWRhZDAzODMwOWViNC4uNmFiZjY1ZmM3ZmY2ZWVlZDExM2M4MWZmYmE3YjUxYTQ3YmFkZDgwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAg
c3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUucmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlKS5maW5kKGlzTm90
U3BhY2VPck5ld2xpbmUpID09IG5vdEZvdW5kOwogfQogCiBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
SW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgRmxvYXRTaXplIG1hcmdpbiwgYm9vbCBpbmRpY2F0ZXNDdXJyZW50
U2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIx
YTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li42ZGM1NDgyMmZlYzZlOGQ0MjI3YTE5YWFh
OTBmY2U3MzM1MzgxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNp
bWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtNjkz
LDcgKzY5Myw3IEBAIERlY2ltYWwgRGVjaW1hbDo6ZnJvbURvdWJsZShkb3VibGUgZG91YmxlVmFs
dWUpCiAgICAgcmV0dXJuIG5hbigpOwogfQogCi1EZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHIpCitEZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmcoU3RyaW5nVmll
dyBzdHIpCiB7CiAgICAgaW50IGV4cG9uZW50ID0gMDsKICAgICBTaWduIGV4cG9uZW50U2lnbiA9
IFBvc2l0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCmluZGV4IDU5Y2RiMThkODIxYzZi
YzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjVhNTQwMzRkMzIzMmI2ZjZjMDNjM2ZjZjgzZTFh
Y2U4OWU0ZDU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKQEAgLTE0OSw3ICsxNDks
NyBAQCBwdWJsaWM6CiAgICAgLy8gIGV4cG9uZW50LW1hcmtlciA6Oj0gJ2UnIHwgJ0UnCiAgICAg
Ly8gIGRpZ2l0IDo6PSAnMCcgfCAnMScgfCAuLi4gfCAnOScKICAgICAvLyBOb3RlOiBmcm9tU3Ry
aW5nIGRvZXNuJ3Qgc3VwcG9ydCAiaW5maW5pdHkiIGFuZCAibmFuIi4KLSAgICBzdGF0aWMgRGVj
aW1hbCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIGZyb21T
dHJpbmcoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIERlY2ltYWwgaW5maW5pdHkoU2lnbik7CiAg
ICAgc3RhdGljIERlY2ltYWwgbmFuKCk7CiAgICAgc3RhdGljIERlY2ltYWwgemVybyhTaWduKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcAppbmRleCBjNzQzMTg5OTI4YjNmNmE5YmIzOWY2ZmY0ZmMwOTkzZmUwOTBjYjU0Li41MDJm
YzNjN2I5ZmZiMTk3OGVjYWJiMjg2NWM5NzEyOTZhNWE2ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0yMTMsMTIg
KzIxMywxMiBAQCBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcubGVmdChzdHJpbmcuZmluZChpc0NhY2hlSGVh
ZGVyU2VwYXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK3N0YXRpYyBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+PiBwYXJzZUNhY2hlSGVhZGVyKFN0
cmluZ1ZpZXcgc2FmZUhlYWRlcikKIHsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gcmVzdWx0OworICAgIEFTU0VSVChzYWZlSGVhZGVyLmZpbmQoaXNDb250cm9sQ2hhcmFj
dGVyT3JTcGFjZSkgPT0gbm90Rm91bmQpOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdW
aWV3LCBTdHJpbmdWaWV3Pj4gcmVzdWx0OwogCi0gICAgU3RyaW5nIHNhZmVIZWFkZXJTdHJpbmcg
PSBoZWFkZXIucmVtb3ZlQ2hhcmFjdGVycyhpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNlKTsKLSAg
ICBTdHJpbmdWaWV3IHNhZmVIZWFkZXIgPSBzYWZlSGVhZGVyU3RyaW5nOwogICAgIHVuc2lnbmVk
IG1heCA9IHNhZmVIZWFkZXIubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcG9zID0gMDsKICAgICB3
aGlsZSAocG9zIDwgbWF4KSB7CkBAIC0yMjYsMzAgKzIyNiwzMCBAQCBzdGF0aWMgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIpCiAgICAgICAgIHNpemVfdCBuZXh0RXF1YWxTaWduUG9zaXRpb24gPSBzYWZlSGVhZGVy
LmZpbmQoJz0nLCBwb3MpOwogICAgICAgICBpZiAobmV4dEVxdWFsU2lnblBvc2l0aW9uID09IG5v
dEZvdW5kICYmIG5leHRDb21tYVBvc2l0aW9uID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBBZGQgbGFzdCBkaXJlY3RpdmUgdG8gbWFwIHdpdGggZW1wdHkgc3RyaW5nIGFzIHZhbHVlCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVy
LnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykpLnRvU3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfSk7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVh
ZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBpZiAobmV4dENvbW1hUG9z
aXRpb24gIT0gbm90Rm91bmQgJiYgKG5leHRDb21tYVBvc2l0aW9uIDwgbmV4dEVxdWFsU2lnblBv
c2l0aW9uIHx8IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiA9PSBub3RGb3VuZCkpIHsKICAgICAgICAg
ICAgIC8vIEFkZCBkaXJlY3RpdmUgdG8gbWFwIHdpdGggZW1wdHkgc3RyaW5nIGFzIHZhbHVlCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVy
LnN1YnN0cmluZyhwb3MsIG5leHRDb21tYVBvc2l0aW9uIC0gcG9zKSkudG9TdHJpbmcoKSwgZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyB0cmltVG9OZXh0U2Vw
YXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dENvbW1hUG9zaXRpb24gLSBwb3Mp
KSwgZW1wdHlTdHJpbmcoKSB9KTsKICAgICAgICAgICAgIHBvcyArPSBuZXh0Q29tbWFQb3NpdGlv
biAtIHBvcyArIDE7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAv
LyBHZXQgZGlyZWN0aXZlIG5hbWUsIHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiBlcXVhbCBzaWdu
LCB0aGVuIGFkZCB0byBtYXAKLSAgICAgICAgU3RyaW5nIGRpcmVjdGl2ZSA9IHRyaW1Ub05leHRT
ZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1YWxTaWduUG9zaXRpb24g
LSBwb3MpKS50b1N0cmluZygpOworICAgICAgICBTdHJpbmdWaWV3IGRpcmVjdGl2ZSA9IHRyaW1U
b05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1YWxTaWduUG9z
aXRpb24gLSBwb3MpKTsKICAgICAgICAgcG9zICs9IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiAtIHBv
cyArIDE7CiAKICAgICAgICAgU3RyaW5nVmlldyB2YWx1ZSA9IHNhZmVIZWFkZXIuc3Vic3RyaW5n
KHBvcywgbWF4IC0gcG9zKTsKLSAgICAgICAgaWYgKHZhbHVlWzBdID09ICciJykgeworICAgICAg
ICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnIicpKSB7CiAgICAgICAgICAgICAvLyBUaGUgdmFsdWUg
aXMgYSBxdW90ZWQgc3RyaW5nCiAgICAgICAgICAgICBzaXplX3QgbmV4dERvdWJsZVF1b3RlUG9z
aXRpb24gPSB2YWx1ZS5maW5kKCciJywgMSk7CiAgICAgICAgICAgICBpZiAobmV4dERvdWJsZVF1
b3RlUG9zaXRpb24gPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICAvLyBQYXJzZSBlcnJv
cjsganVzdCB1c2UgdGhlIHJlc3QgYXMgdGhlIHZhbHVlCi0gICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5zdWJzdHJpbmco
MSkpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGRpcmVj
dGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5zdWJzdHJpbmcoMSkpIH0pOwogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBT
dG9yZSB0aGUgdmFsdWUgYXMgYSBxdW90ZWQgc3RyaW5nIHdpdGhvdXQgcXVvdGVzCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB2YWx1ZS5zdWJzdHJpbmcoMSwgbmV4dERv
dWJsZVF1b3RlUG9zaXRpb24gLSAxKS50b1N0cmluZygpIH0pOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdmFsdWUuc3Vic3RyaW5nKDEsIG5leHREb3VibGVRdW90ZVBv
c2l0aW9uIC0gMSkgfSk7CiAgICAgICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmluZCgnIics
IHBvcykgLSBwb3MpICsgbmV4dERvdWJsZVF1b3RlUG9zaXRpb24gKyAxOwogICAgICAgICAgICAg
Ly8gTW92ZSBwYXN0IG5leHQgY29tbWEsIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgc2l6
ZV90IG5leHRDb21tYVBvc2l0aW9uMiA9IHNhZmVIZWFkZXIuZmluZCgnLCcsIHBvcyk7CkBAIC0y
NjIsMTEgKzI2MiwxMSBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgICAgIHNpemVfdCBu
ZXh0Q29tbWFQb3NpdGlvbjIgPSB2YWx1ZS5maW5kKCcsJyk7CiAgICAgICAgIGlmIChuZXh0Q29t
bWFQb3NpdGlvbjIgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXN0IGlzIHRo
ZSB2YWx1ZTsgbm8gY2hhbmdlIHRvIHZhbHVlIG5lZWRlZAotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCh7IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZSkudG9TdHJpbmcoKSB9
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBh
cmF0b3IodmFsdWUpIH0pOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgICAgICAvLyBUaGUgdmFsdWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1hCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUu
bGVmdChuZXh0Q29tbWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOworICAgICAgICByZXN1bHQu
YXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLmxlZnQobmV4dENv
bW1hUG9zaXRpb24yKSkgfSk7CiAgICAgICAgIHBvcyArPSAoc2FmZUhlYWRlci5maW5kKCcsJywg
cG9zKSAtIHBvcykgKyAxOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjc4LDcgKzI3
OCw4IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVz
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKICAgICBTdHJpbmcgY2FjaGVDb250cm9s
VmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sKTsKICAgICBp
ZiAoIWNhY2hlQ29udHJvbFZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRpcmVjdGl2
ZXMgPSBwYXJzZUNhY2hlSGVhZGVyKGNhY2hlQ29udHJvbFZhbHVlKTsKKyAgICAgICAgYXV0byBz
YWZlSGVhZGVyU3RyaW5nID0gY2FjaGVDb250cm9sVmFsdWUucmVtb3ZlQ2hhcmFjdGVycyhpc0Nv
bnRyb2xDaGFyYWN0ZXJPclNwYWNlKTsKKyAgICAgICAgYXV0byBkaXJlY3RpdmVzID0gcGFyc2VD
YWNoZUhlYWRlcihzYWZlSGVhZGVyU3RyaW5nKTsKIAogICAgICAgICBzaXplX3QgZGlyZWN0aXZl
c1NpemUgPSBkaXJlY3RpdmVzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkaXJlY3RpdmVzU2l6ZTsgKytpKSB7CkBAIC0yOTcsNyArMjk4LDcgQEAgQ2FjaGVDb250cm9s
RGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgZG91YmxlIG1h
eEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAg
ICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9rKTsKICAg
ICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhBZ2Ug
PSBTZWNvbmRzIHsgbWF4QWdlIH07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgtc3RhbGUiKSkgewpA
QCAtMzEyLDcgKzMxMyw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRy
b2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29s
IG9rOwotICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vj
b25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIG1heFN0YWxlID0gZGly
ZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAgICAgIGlmIChvaykK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gU2Vjb25kcyB7IG1heFN0YWxl
IH07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJpbW11dGFibGUiKSkgewpAQCAtMzIzLDcgKzMyNCw3IEBA
IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAg
ICAgIGRvdWJsZSBzdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRv
RG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIHN0YWxlV2hpbGVSZXZhbGlkYXRl
ID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAgICAgIGlm
IChvaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YWxlV2hpbGVSZXZhbGlkYXRlID0g
U2Vjb25kcyB7IHN0YWxlV2hpbGVSZXZhbGlkYXRlIH07CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDlkNTAz
YjVhOTI5OTJlN2VlMWFmMzBmMDllMWRmMThhNTY3OWI4MjEuLjI2NTU4MTI5M2NkOWE0YzhjYjJi
MTY1ZjA5YzQzMDUzNGY0ODZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogLy8gdGhhdCBhcmlz
ZXMgZnJvbSBxdW90ZWQtc3RyaW5nLCBub3IgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb3Blcmx5IHVu
cXVvdGUKIC8vIGF0dHJpYnV0ZSB2YWx1ZXMuIEZ1cnRoZXIgdGhpcyBmdW5jdGlvbiBhcHBlYXJz
IHRvIHByb2Nlc3MgcGFyYW1ldGVyIG5hbWVzCiAvLyBpbiBhIGNhc2Utc2Vuc2l0aXZlIG1hbm5l
ci4gKFRoZXJlIGFyZSBsaWtlbHkgb3RoZXIgYnVncyBhcyB3ZWxsLikKLVN0cmluZyBmaWxlbmFt
ZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCitTdHJpbmdWaWV3
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oU3RyaW5nVmlldyB2YWx1ZSkKIHsK
ICAgICBmb3IgKGF1dG8ga2V5VmFsdWVQYWlyIDogdmFsdWUuc3BsaXQoJzsnKSkgewogICAgICAg
ICBzaXplX3QgdmFsdWVTdGFydFBvcyA9IGtleVZhbHVlUGFpci5maW5kKCc9Jyk7CkBAIC0zNDks
NyArMzQ5LDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oU3Ry
aW5nVmlldyB2YWx1ZSkKICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gMSAmJiB2YWx1ZVsw
XSA9PSAnXCInKQogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSwgdmFsdWUu
bGVuZ3RoKCkgLSAyKTsKIAotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBkNWNlNzgyOWI1
YWQxNjIzZjY5NzEzOGY3Mjk2NThkYzBkMzM3M2ZmLi5hZTI0OTg1ZjNlODBmMDQ5YmVlMWJhMGFh
Nzc1ODU2MmZhODU0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCkBAIC03OSw3ICs3OSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRv
a2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKFN0cmluZ1ZpZXcpOwog
c3RkOjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKLVN0
cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcpOworU3Ry
aW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7CiBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShTdHJpbmdW
aWV3KTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgdW5zaWduZWQmIGZh
aWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggMWE5YjgzZWVmNTc3MjFmZmM1ZTEx
MGEwODM0YmIwMzEwNjc1NWUxMy4uY2ZlZmUxZWIyNWNkZjljZmYyOGZiMGU1M2Q5MjJmZDU4N2Y3
YjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVh
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRyaWV2ZUtleVZhbHVl
UGFpcnMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlCiAgICAgICAgICAg
ICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUpLmxlZnQo
c2VtaWNvbG9uSW5kZXgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgICAgIGtleSA9IFN0cmluZ1ZpZXcobGluZSkubGVmdChzZW1pY29sb25JbmRleCku
c3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgdmFs
dWUuYXBwZW5kKFN0cmluZ1ZpZXcobGluZSkuc3Vic3RyaW5nKHNlbWljb2xvbkluZGV4ICsgMSkp
OwogICAgIH0KICAgICAvLyBTdG9yZSB0aGUgbGFzdCBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmUu
CkBAIC0xMjAsOSArMTIwLDkgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNl
SGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiAgICAgcmV0dXJuIG1pbWVI
ZWFkZXI7CiB9CiAKLU1JTUVIZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6OnBhcnNlQ29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3RyaW5nJiB0ZXh0KQorTUlNRUhlYWRlcjo6RW5jb2Rp
bmcgTUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhTdHJpbmdWaWV3IHRl
eHQpCiB7Ci0gICAgU3RyaW5nIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKKyAg
ICBhdXRvIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmcsICJiYXNlNjQiKSkKICAgICAgICAgcmV0
dXJuIEJhc2U2NDsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2Rp
bmcsICJxdW90ZWQtcHJpbnRhYmxlIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5oCmluZGV4IDAwOGFlYzJlMDdlMzY5ODc3MGYwYzEzMmY1ODYyYTM0YTVh
MmNiMWMuLmRhMTA2OWE0ZTE0YmQ4ZmI1NzkwMjljYjIzZTEzMjNhYTJjOGE1MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTUlNRUhlYWRlcigpOwogCi0gICAgc3RhdGljIEVu
Y29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CisgICAg
c3RhdGljIEVuY29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoU3RyaW5nVmlldyk7
CiAKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9jaGFyc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBl
LmNwcAppbmRleCA2YjkxNjU5MTRjMWZjMTIzMjM4OTdjYTUyZDczNzJkNzY2MTM1MTI4Li5mYWZh
MzIxMWYxMzM1ZTM2NjlkNGY3NzI4YmMzYzM0ZGRjMDYyNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzY5
LDcgKzM2OSw3IEBAIHZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlKFN0cmlu
ZyYmIGNvbnRlbnRSYW5nZSwgTW9kZSBtb2RlKQogewogICAgIG1fbWltZVR5cGUgPSBXVEZNb3Zl
KGNvbnRlbnRSYW5nZSk7CiAgICAgaWYgKG1vZGUgPT0gTW9kZTo6TWltZVNuaWZmKQotICAgICAg
ICBtX21pbWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG1fbWltZVR5
cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgIG1fbWltZVR5cGUgPSBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoU3RyaW5nVmlldyhtX21pbWVUeXBlKSkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBlbHNlCiAgICAgICAgIG1fbWltZVR5cGUgPSBt
X21pbWVUeXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBkMDY2
ZWE0NzJjNTRlNjUyMDc5ZGJhNDE4YWIyNDdhODNmYTgyMjViLi43ODM4NTZhMzJmNjU4MTQ0NzE4
OGI1MDU0NGQxMDAxNjc2MTIyZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNzgxLDcgKzc4MSw3
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgpIGNvbnN0CiAgICAg
bGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIGF1dG8gdmFsdWUgPSBtX2h0dHBIZWFkZXJGaWVs
ZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pOwotICAgIHJldHVybiBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSku
c3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcodmFsdWUpLmxlZnQodmFsdWUuZmluZCgnOycp
KS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgY29uc3QKQEAgLTc5Niw4ICs3
OTYsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnRXaXRoRmlsZW5h
bWUoKSBjb25zdAogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29udGVu
dERpc3Bvc2l0aW9uVmlldy5sZWZ0KGNvbnRlbnREaXNwb3NpdGlvblZpZXcuZmluZCgnOycpKS5z
dHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihjb250ZW50RGlzcG9zaXRpb25WaWV3KTsKLSAgICByZXR1cm4gIWZpbGVuYW1lLmlzTnVsbCgp
OworICAgIHJldHVybiAhZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb250ZW50
RGlzcG9zaXRpb25WaWV3KS5pc051bGwoKTsKIH0KIAogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlNv
dXJjZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c291cmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZUN1cmwuY3BwCmluZGV4IDI5MzFkMDVkNGMyOWEzZDY5NzBjOWY3YWQ3ZmMwZjk2ZGM3NTIwNWIu
LmY2YzEwNzJjZmUyZWM2MmFhZjdkYzBlMTI3ZWQ0Nzc5ODI4NWU0NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2VDdXJsLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6
c2V0Q2VydGlmaWNhdGVJbmZvKENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmljYXRlSW5mbykKIAog
U3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25z
dAogewotICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKSk7CisgICAgcmV0
dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKS50b1N0cmluZygpOwogfQogCiBib29s
IFJlc291cmNlUmVzcG9uc2U6OnNob3VsZFJlZGlyZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDU1YzM0YzhkYjNkODdiNGNkNGI0
NTU5ODg0NGYwNWRhMTIzZWRlNzkuLmE3ODczYTE1M2Y2MmU3M2FlY2U5MjE0ZGRmMWFlNTFkNTk5
Zjg2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lIYW5k
bGVyKGludCgqaGFuZGxlcikodm9pZCosIGludCkpCiAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwg
IkJ1c3kgaGFuZGxlciBzZXQgb24gbm9uLW9wZW4gZGF0YWJhc2UiKTsKIH0KIAotYm9vbCBTUUxp
dGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpCitib29s
IFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3coU3RyaW5nVmlldyBxdWVyeSkKIHsK
ICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBy
ZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKTsKQEAgLTQ2MSw3
ICs0NjEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygpCiAgICAgd2hp
bGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAgIHRhYmxlcy5hcHBl
bmQoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICBmb3IgKGF1dG8mIHRhYmxlIDogdGFi
bGVzKSB7Ci0gICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KCJEUk9QIFRBQkxFICIgKyB0
YWJsZSkpCisgICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VTdHJpbmcoIkRST1Ag
VEFCTEUgIiwgdGFibGUpKSkKICAgICAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgIlVuYWJsZSB0
byBkcm9wIHRhYmxlICVzIiwgdGFibGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KIH0KQEAgLTcy
Myw3ICs3MjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8c3FsaXRlM19zdG10KiwgaW50PiBjb25zdHJ1
Y3RBbmRQcmVwYXJlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJgogICAgIHJldHVybiBzdGF0ZW1l
bnQ7CiB9CiAKLUV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6
cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVk
PFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNs
b3coU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlT
dHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0g
Y29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5s
ZW5ndGgoKSk7CkBAIC03NDQsNyArNzQ0LDcgQEAgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBp
bnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWUKICAg
ICByZXR1cm4gU1FMaXRlU3RhdGVtZW50IHsgKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpIH07
CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURh
dGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmlu
ZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURhdGFi
YXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsK
ICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgp
OwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgq
dGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDkxNjAxMzQ4MTc1OTIxM2FhNTJkMTk4
YTQ3ZTJlNWM0ZDZhOTg3MzQuLjg2ZmMwNDU4OGJkOGUzODVmZTQ4NjI1NDE1YzU0ZTk3ODc2ZGQ2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3BlbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhTdHJpbmdWaWV3KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAgCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB0YWJsZUV4aXN0cyhTdHJpbmdWaWV3KTsKQEAgLTc1LDkgKzc1
LDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xvdyhj
b25zdCBTdHJpbmcmIHF1ZXJ5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVT
dGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVyeSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVT
dGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3Rl
ZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVwYXJlSGVhcFN0YXRlbWVudFNs
b3coY29uc3QgU3RyaW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5p
cXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KFN0
cmluZ1ZpZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxT
UUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBx
dWVyeSk7CiAKICAgICAvLyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLiBU
aGlzIGlzIHRocmVhZCBzYWZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5o
CmluZGV4IDU0ZDJlYjcyODJjMzk0ODc1NmJkODUyYWE5NmJlMzEzYjE3NDk3ZDcuLjBhNmMwOTdm
M2Q1Y2RiNzU2MDkzZDQxZmFiN2I2ZmFmYTVmMjRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmgKQEAgLTExNSw5ICsxMTUsOSBAQCBpbmxpbmUgU2Vzc2lvbkZlYXR1
cmUgc2Vzc2lvbkZlYXR1cmVGcm9tUmVmZXJlbmNlU3BhY2VUeXBlKFJlZmVyZW5jZVNwYWNlVHlw
ZSByZQogICAgIHJldHVybiBTZXNzaW9uRmVhdHVyZTo6UmVmZXJlbmNlU3BhY2VUeXBlVmlld2Vy
OwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxTZXNzaW9uRmVhdHVyZT4gcGFyc2VTZXNzaW9u
RmVhdHVyZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxTZXNzaW9uRmVhdHVyZT4gcGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoU3RyaW5n
VmlldyBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nIGZlYXR1cmUgPSBzdHJpbmcuc3RyaXBXaGl0ZVNw
YWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZlYXR1cmUgPSBzdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAogICAgIGlm
IChmZWF0dXJlID09ICJ2aWV3ZXIiX3MpCiAgICAgICAgIHJldHVybiBTZXNzaW9uRmVhdHVyZTo6
UmVmZXJlbmNlU3BhY2VUeXBlVmlld2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCmluZGV4IGM2OTJiNDA3NDJjMzc3Zjk5ZjBjODk0ZmI2MjU3YjYyYzQzZjQz
ZjAuLjUzMjE0OTdhZDEwYjcwM2YzOTEyYmNiMGZmNmQxNjBlMjA0NjE4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBT
VkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JgogewogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVz
KGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlP
cmRlcikKK3N0YXRpYyB2b2lkIHBhcnNlS2V5VGltZXMoU3RyaW5nVmlldyBwYXJzZSwgVmVjdG9y
PGZsb2F0PiYgcmVzdWx0LCBib29sIHZlcmlmeU9yZGVyKQogewogICAgIHJlc3VsdC5jbGVhcigp
OwogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgZm9yIChTdHJpbmdWaWV3IHRpbWVTdHJp
bmcgOiBTdHJpbmdWaWV3KHBhcnNlKS5zcGxpdCgnOycpKSB7CisgICAgZm9yIChhdXRvIHRpbWVT
dHJpbmcgOiBwYXJzZS5zcGxpdCgnOycpKSB7CiAgICAgICAgIGJvb2wgb2s7CiAgICAgICAgIGZs
b2F0IHRpbWUgPSB0aW1lU3RyaW5nLnRvRmxvYXQob2spOwogICAgICAgICBpZiAoIW9rIHx8IHRp
bWUgPCAwIHx8IHRpbWUgPiAxKQpAQCAtMTUzLDkgKzE1MywxMCBAQCB2b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdAogICAgICAgICAvLyBQZXIgdGhlIFNNSUwgc3BlY2lmaWNhdGlvbiwgbGVhZGluZyBh
bmQgdHJhaWxpbmcgd2hpdGUgc3BhY2UsCiAgICAgICAgIC8vIGFuZCB3aGl0ZSBzcGFjZSBiZWZv
cmUgYW5kIGFmdGVyIHNlbWljb2xvbiBzZXBhcmF0b3JzLCBpcyBhbGxvd2VkIGFuZCB3aWxsIGJl
IGlnbm9yZWQuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2FuaW1hdGUu
aHRtbCNWYWx1ZXNBdHRyaWJ1dGUKLSAgICAgICAgbV92YWx1ZXMgPSB2YWx1ZS5zdHJpbmcoKS5z
cGxpdCgnOycpOwotICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1ZXMpCi0gICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBtX3ZhbHVlcy5j
bGVhcigpOworICAgICAgICB2YWx1ZS5zdHJpbmcoKS5zcGxpdCgnOycsIFt0aGlzXShTdHJpbmdW
aWV3IGlubmVyVmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChpbm5lclZhbHVl
LnN0cmlwV2hpdGVTcGFjZSgpLnRvU3RyaW5nKCkpOworICAgICAgICB9KTsKIAogICAgICAgICB1
cGRhdGVBbmltYXRpb25Nb2RlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBi
Mjk0MDNlZmNlMmI4ZWMzYTQ4YzI1NDY4ZjE4OTY2NzlmODE1NmM1Li5lZjY0YzRkNjUxZjE1Yzc4
YmU3OGQwZjU5N2U2NTNkOWEyOThjODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsOCArMTY0LDcg
QEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLmVk
aXRvcigpOwogICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKHRydWUp
OwogCi0gICAgLy8gRklYTUU6IEluZWZmaWNpZW50IHRvIGNhbGwgc3RyaXBXaGl0ZVNwYWNlIHRv
IGRldGVjdCB3aGV0aGVyIGEgc3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBp
biBpdC4KLSAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5
KCkpIHsKKyAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5maW5kKGlzTm90U3BhY2VPck5ld2xpbmUp
ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9w
dXBJbmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0KaW5kZXggMGFlZTdiNjlhZmQ1YjRhNmY3NjhmMjA1ZjhhMDI4YzE4ZWE3
ODg4Yy4uMzcyOTQ2ZDlmN2Q4YzdiY2RkNjRjYzU5MzdkMzdjMWU0MDdkZjEyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAICsgKFdlYkNvcmU6OkRp
Y3Rpb25hcnlQb3B1cEluZm8pX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZTooY29uc3QgV2Vi
Q29yZTo6U2ltCiAgICAgLy8gRGljdGlvbmFyeSBBUEkgd2lsbCBhY2NlcHQgYSB3aGl0ZXNwYWNl
LW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlmIGl0IHdlcmUgcmVhbCB0ZXh0LAogICAg
IC8vIHNvIGJhaWwgb3V0IGVhcmx5IHRvIGF2b2lkIHRoYXQuCiAgICAgV2ViQ29yZTo6RGljdGlv
bmFyeVBvcHVwSW5mbyBwb3B1cEluZm87Ci0gICAgaWYgKHBsYWluVGV4dChyYW5nZSkuc3RyaXBX
aGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4dChyYW5nZSkuZmluZChp
c05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAgICBlZGl0b3Iuc2V0SXNH
ZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBwb3B1cElu
Zm87CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457767</attachid>
            <date>2022-04-17 00:01:17 -0700</date>
            <delta_ts>2022-04-17 15:18:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220417000116.patch</filename>
            <type>text/plain</type>
            <size>53540</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLjY1OGVmYTE5NzE0YTExMjNhMWZkNmFlYzI4N2VlZWZiOGUzNDg5
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTm90U3BhY2VP
ck5ld2xpbmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjb21w
bGV4IFN0cmluZzo6aW5zZXJ0KCkgd2l0aCBhIHNpbXBsaWZpZWQgbWFrZVN0cmluZ0J5SW5zZXJ0
aW5nKCkgZnJlZSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwNGY2MmJlMDNlNTJiNTQ4YzM2NmRi
NWIwZmQwNGRkYjg5MzY2MTEuLmU4YmM0NWExYTEyZDlhMWJmNDg2ZDE3YzVjMTVmNGM1NzMzZDk5
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9y
ZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudF0pOgor
ICAgICAgICAoYXBwZW5kU3RyaW5nVG9SZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW5kZXJlckZvclZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OnNldE1l
ZGlhVHlwZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFn
bWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICog
aHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OnJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5lQ2hhcmFjdGVyc0FuZEFwcGVuZCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnByaW50VGV4dEZvclN1
YnRyZWUpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb250YWluc09ubHlXaGl0ZVNwYWNlVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vRGVj
aW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFt
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0
dXJlRGVzY3JpcHRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXlUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjItMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBpZCBtYXRjaGluZyBp
biBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA0N2VkYTNlZDFkNjVhNjQ3NDBjNGE0M2E2Nzg1YzYxMjdlZWU0NDk3Li42
ZDZiZjI4YTYxM2U1M2Q5MTY2M2Q1ZjVmOGFjY2M1NWYzMWFmMWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBp
biBtb3JlIHBsYWNlcywgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgU3RyaW5nIGFsbG9jYXRpb25z
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToK
KwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBTdHJpbmcg
YWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNDMyM2NkZmY4ODY0
NWU4ZGRkMmNlNGRkZmU2M2ViMzBhMjRiOGJiLi44ZTJmOWJhYzc5YzYzYmQyMGYzNTUxY2YzMDM0
ZjkwNDk1OWYyZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUg
cGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJpbmcgYWxsb2NhdGlvbnMuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICgrW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZTppbkZyYW1lOndpdGhMb29rdXBPcHRpb25zOmluZGljYXRvck9wdGlvbnM6dHJhbnNpdGlv
bjpdKToKKwogMjAyMi0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBT
dHJpbmcgYWxsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDU4Yjg1
NDU2Zjg2YzVjYTg0ZWUzZTk1ZWE0YjIzYjRiNDMxNDQ1YzEuLjNjNDE3NGU1MjZhYTY2NTBkY2Rl
NWJmNWNlYWM1OWEzNmNjZDM5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAt
ODM1LDEzICs4MzUsNiBAQCBmbG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogICAg
IHJldHVybiBjaGFyYWN0ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsK
IH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNo
RnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0KQotewotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgbWF0Y2hGdW5jdGlvbiwg
c3RhcnQpOwotICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBt
YXRjaEZ1bmN0aW9uLCBzdGFydCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0
IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9y
IG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKaW5kZXggNzM1MDhlY2ViNjU1YTVhNWRmYzNjYjU3YzFmOGJiMTg3MjIyYWZiNy4uNDNj
OTU0OWY2NTM2MDE3MGU1MWRhMDg2MTVkNjA4ZjQ1OTY5M2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTQzMCw3ICs0MzAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmQoTENo
YXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hh
cj4+KiA9IG51bGxwdHI+CisgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChj
b25zdCBMQ2hhciosIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCk7CkBAIC02MDAsNiArNjAxLDcgQEAgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsK
IC8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBpdCB1c2VzIHRoZSBV
bmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KIC8vIE1vc3QgV2ViS2l0IGNhbGxlcnMg
ZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNIVE1MU3BhY2UgaW5z
dGVhZC4KIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyKTsKK2Jvb2wgaXNOb3RTcGFjZU9y
TmV3bGluZShVQ2hhcjMyKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5z
aWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKik7
CiAKQEAgLTcwNCw2ICs3MDYsMTQgQEAgaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFVD
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19p
bnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgVUNoYXI+Pio+CitzaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgc3RhcnQpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBzdGFydCk7Cisg
ICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rp
b24sIHN0YXJ0KTsKK30KKwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFj
aXR5PiYgYSwgU3RyaW5nSW1wbCogYikKIHsKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxp
dHkoYS5kYXRhKCksIGEuc2l6ZSgpLCBiKTsKQEAgLTc1NCw2ICs3NjQsMTEgQEAgaW5saW5lIGJv
b2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcjMyIGNoYXJhY3RlcikKICAgICByZXR1cm4gaXNMYXRp
bjEoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9u
KGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCitpbmxpbmUgYm9vbCBp
c05vdFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIgY2hhcmFjdGVyKQoreworICAgIHJldHVybiAhaXNT
cGFjZU9yTmV3bGluZShjaGFyYWN0ZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25z
dCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZyk7CkBAIC0xMzE0
LDMgKzEzMjksNSBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNo
YXJhY3RlcnMoY29uc3QgUHJlZGljYXRlJiBmaW5kTWF0Y2gpCiB1c2luZyBXVEY6OlN0YXRpY1N0
cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwordXNp
bmcgV1RGOjppc05vdFNwYWNlT3JOZXdsaW5lOwordXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTRkMGJiZWZlMDdjYmQ1OWE1NzM4ZTk0NTRh
MTgxZTIxYjAxZGYzZC4uMjlhMWNmNjM1OTc3OGE1NmY0OGJkNzM5Mzg0MzNkY2NjNWVlY2I3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29u
c3Q7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfcl92PGJvb2wsIENvZGVVbml0TWF0Y2hGdW5j
dGlvbiwgVUNoYXI+PiogPSBudWxscHRyPgogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hG
dW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsg
fQogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDog
bm90Rm91bmQ7IH0KIApAQCAtNjQzLDcgKzY0NCw2IEBAIHVzaW5nIFdURjo6bnVsbFN0cmluZzsK
IHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM7Ci11c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6
OnJldmVyc2VGaW5kOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDY4M2RmY2QwYzRl
NWQ4MzZhMzk4NGYzNWVjMjFhZDEwZmEzNjk2NGIuLmFjYWNiZjcyNzZhODVkMGI5MWM5ZTU1YmIz
MGYyNjcwYmZjNjhjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5
IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlRGlzcGxheShjb25zdCBKU09OOgogICAg
ICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6QnJvd3NlcjsKICAgICB9
CiAKLSAgICBzdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgc3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHN0cmlu
Z1ZhbHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJmdWxsc2NyZWVuIikKICAgICAgICAgcmV0dXJuIEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXk6OkZ1bGxzY3JlZW47CkBAIC0yMzAsNyArMjMwLDcgQEAg
VmVjdG9yPEFwcGxpY2F0aW9uTWFuaWZlc3Q6Okljb24+IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXI6OnBhcnNlSWNvbnMoY29uc3QgSlMKICAgICAgICAgICAgICAgICBwdXJwb3Nlcy5hZGQoQXBw
bGljYXRpb25NYW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6QW55KTsKICAgICAgICAgICAgICAgICBj
dXJyZW50SWNvbi5wdXJwb3NlcyA9IHB1cnBvc2VzOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBwdXJwb3NlU3RyaW5nVmFsdWUuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICAgICAgICAgICAg
ICBwdXJwb3NlU3RyaW5nVmFsdWUgPSBTdHJpbmdWaWV3KHB1cnBvc2VTdHJpbmdWYWx1ZSkuc3Ry
aXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBrZXl3b3JkcyA9IHB1cnBvc2VTdHJpbmdWYWx1ZS5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCIgIik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGtleXdvcmQgOiBrZXl3b3JkcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA0MmQwYjdj
MDk2MzA1NTRkYWRmN2U2MjRhOWNlZWVkMTI0NDRkMDQzLi40NTVhYWNlODgwZGQ5ZmNjODRhYTVl
ZWJkN2RkYjMwODMyM2M0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMTgxLDcgKzE4
MSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3RhYmxpc2hTdGF0ZW1lbnQoKQogICAgIHJl
dHVybiBjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoc3FsKTsKIH0KIAotYm9vbCBTUUxpdGVJREJDdXJz
b3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKK2Jvb2wgU1FMaXRl
SURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIkNyZWF0aW5nIGN1cnNvciB3aXRoIFNRTCBxdWVyeTogXCIlc1wiIiwg
c3FsLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggZjc4NzkzMjY2NTY0
NzA0ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YS4uNjAyMjY5NDBjNTQ2OTE0OWVlZjRhMDkwOTEy
YWZmMDcxODA2ZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKLSAgICBib29s
IGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCk7CisgICAgYm9vbCBjcmVh
dGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpOwogICAgIGJvb2wgYmluZEFyZ3VtZW50
cygpOwogCiAgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKaW5kZXggZTY3MDAyZDE3ZGNmMzQ4MzE4ZDE4NWIzNDdiMWUyNjBlMmJkOWI2My4uMDE4ZGJi
OTliMThmYjY3YjhiMGRjMDkzODgyNzgxN2FiZGIyYzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTExMiwyOSArMTEyLDI5IEBA
IHN0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGlu
dCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobWVzc2FnZSwg
IiAoIiwgc3FsaXRlRXJyb3JDb2RlLCAnICcsIHNxbGl0ZUVycm9yTWVzc2FnZSwgJyknKTsKIH0K
IAotc3RhdGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBz
ZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5nVmlldyBxdWVy
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBh
cmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0
YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcyki
LCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwgdmFsdWUpOwogCiAgICAgaWYgKHN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0
ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGVwIHN0YXRlbWVudCB0
byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQorc3RhdGljIGJvb2wg
cmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgU3RyaW5n
VmlldyBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYi5wcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVh
ZCB0ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVl
cnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFy
aW5nIHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0
YXRlbWVudC5lcnJvcigpLCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4
dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIExPR19FUlJPUigiRXJyb3IgKCVp
KSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnku
YXNjaWkoKS5kYXRhKCkpOworICAgIExPR19FUlJPUigiRXJyb3IgKCVpKSByZWFkaW5nIHRleHQg
cmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVlcnkudXRmOCgpLmRhdGEoKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDE5NDQ5YjNlZTVhMDQyM2MwZWFmNzM0NDlhOGJiMjY2Mzk1YWNlOTkuLmFk
MzM2NmIxOTcwZmUwNmJlZDZiOGE1MDE2YjcxNWY5MWJlY2ZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTE0LDcgKzExMTQsNyBAQCAtIChCT09MKWRl
dGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzQ5MgogICAgICAgICByZXR1cm4gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmlzS2V5Ym9hcmRGb2N1c2FibGUoKQogICAgICAgICAgICAgJiYgW3NlbGYg
YWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0gPT0gMAotICAgICAgICAgICAgJiYgc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKS5zdHJpcFdoaXRlU3BhY2Uo
KS5sZW5ndGgoKSA+IDA7CisgICAgICAgICAgICAmJiBzZWxmLmF4QmFja2luZ09iamVjdC0+ZGVz
Y3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgIT0gbm90
Rm91bmQ7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRp
YVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJz
ZXIuaAppbmRleCBlNmMxNWVjMzA2YmY0NzgzYjljN2UzNWZhNTM5NzYxNTI3YzkwM2M5Li4wMWNk
NTNlMzNjY2Y5ZTFkMzk5NDEyZWJmNDBjNmI1MjNjZWZjZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAg
ICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKICAgICAgICAgdm9pZCByZW1vdmVMYXN0
RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsgfQorICAgICAgICB2b2lkIHNldE1l
ZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUgPSBXVEZNb3ZlKG1lZGlh
VHlwZSk7IH0KIAogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlF
eHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2I0YjcxYWI5M2M2ZWQ3ZDU2ODhmNDg0NWIzMzQx
ODRlYjJjMGNiZS4uOTVkNDRlODgwODU4NWRkZjA0OTJmMjkwNzk0YTJkYjdkZGI1OWVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzIyMSw3ICszMjIxLDcgQEAgdm9pZCBFZGl0
b3I6OnRyYW5zcG9zZSgpCiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQoKnJhbmdlKTsKICAg
ICBpZiAodGV4dC5sZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIHRy
YW5zcG9zZWQgPSB0ZXh0LnJpZ2h0KDEpICsgdGV4dC5sZWZ0KDEpOworICAgIFN0cmluZyB0cmFu
c3Bvc2VkID0gbWFrZVN0cmluZyh0ZXh0WzFdLCB0ZXh0WzBdKTsKIAogICAgIC8vIFNlbGVjdCB0
aGUgdHdvIGNoYXJhY3RlcnMuCiAgICAgaWYgKG5ld1NlbGVjdGlvbiAhPSBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGNlZDMyMzVlZmI4OWZhYjc0YWYyOWM2ZDVlODIwZjQ3MThiNjZkYWYu
LjIxZTAyZWE4MGI4NjNiYzIyYmM0YWQ5Yjk5ZDRlYTQwMTMwOTE3MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xOTA0LDE1ICsxOTA0LDE1IEBAIHZv
aWQgRnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Ym9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBjYXJldCA9IHBvczsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocG9zIC0gbWlkIDwgMCkgewogICAgICAgICAgICAgICAgIC8vIHRv
byBmZXcgY2hhcmFjdGVycyB0byBsZWZ0Ci0gICAgICAgICAgICAgICAgc2hvdyA9IHRleHQubGVm
dChtYXggLSAzKSArICIuLi4iOworICAgICAgICAgICAgICAgIHNob3cgPSBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcodGV4dCkubGVmdChtYXggLSAzKSwgIi4uLiIpOwogICAgICAgICAgICAgICAgIGNh
cmV0ID0gcG9zOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBwb3Mg
KyBtaWQgPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgICAgIC8vIGVub3VnaCBjaGFyYWN0
ZXJzIG9uIGVhY2ggc2lkZQotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQuc3Vi
c3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CisgICAgICAgICAgICAgICAg
c2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHBvcyAt
IG1pZCArIDMsIG1heCAtIDYpLCAiLi4uIik7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBtaWQ7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFj
dGVycyBvbiByaWdodAotICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQucmlnaHQo
bWF4IC0gMyk7CisgICAgICAgICAgICAgICAgc2hvdyA9IG1ha2VTdHJpbmcoIi4uLiIsIFN0cmlu
Z1ZpZXcodGV4dCkucmlnaHQobWF4IC0gMykpOwogICAgICAgICAgICAgICAgIGNhcmV0ID0gcG9z
IC0gKHRleHRMZW5ndGggLSBzaG93Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
aW5kZXggOWYzNjg2MGEyNjE0MGY0OWU4MjRkMzI2N2RlM2VhZjlhMTJkYzg5MS4uNTQwNTJlZWIw
NjhiYTI0NjYxOWE3Y2MwOWQ5YWY2ODU5MjAzYTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC01NSwxOSArNTUsMTcgQEAgc3RhdGlj
IFN0cmluZyBjb2xsZWN0RGlnaXRzKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCYgcG9zaXQKICAgICByZXR1cm4gZGlnaXRzLnRvU3RyaW5nKCk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgY29sbGVjdEZyYWN0aW9uKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCYgcG9zaXRpb24pCitzdGF0aWMgU3RyaW5nVmlldyBjb2xsZWN0RnJh
Y3Rpb24oY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3Np
dGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGRpZ2l0czsKLQogICAgIC8vIGh0dHA6Ly93d3cu
aWV0Zi5vcmcvcmZjL3JmYzIzMjYudHh0CiAgICAgLy8gWyAiLiIgKkRJR0lUIF0KICAgICBpZiAo
aW5wdXRbcG9zaXRpb25dICE9ICcuJykKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgZGlnaXRzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7Cisg
ICAgdW5zaWduZWQgc3RhcnQgPSBwb3NpdGlvbisrOwogICAgIHdoaWxlIChwb3NpdGlvbiA8IGxl
bmd0aCAmJiBpc0FTQ0lJRGlnaXQoaW5wdXRbcG9zaXRpb25dKSkKLSAgICAgICAgZGlnaXRzLmFw
cGVuZChpbnB1dFtwb3NpdGlvbisrXSk7Ci0gICAgcmV0dXJuIGRpZ2l0cy50b1N0cmluZygpOwor
ICAgICAgICArK3Bvc2l0aW9uOworICAgIHJldHVybiBTdHJpbmdWaWV3IHsgaW5wdXQgKyBzdGFy
dCwgcG9zaXRpb24gLSBzdGFydCB9OwogfQogCiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRp
YUZyYWdtZW50VVJJUGFyc2VyKGNvbnN0IFVSTCYgdXJsKQpAQCAtMjcwLDggKzI2OCw5IEBAIGJv
b2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiB0aW1l
U3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgKHRpbWVTdHJpbmdbb2Zmc2V0XSA9PSAnLicp
IHsKICAgICAgICAgaWYgKG9mZnNldCA9PSBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgU3RyaW5nIGRpZ2l0cyA9IGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBs
ZW5ndGgsIG9mZnNldCk7Ci0gICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRo
RG91YmxlKGRpZ2l0cy50b0RvdWJsZSgpKTsKKyAgICAgICAgYXV0byBkaWdpdHMgPSBjb2xsZWN0
RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBib29sIGlzVmFs
aWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRpZ2l0
cy50b0RvdWJsZShpc1ZhbGlkKSk7CiAgICAgICAgIHRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUodmFsdWUxKSArIGZyYWN0aW9uOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0zMDgsOCArMzA3LDEwIEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VO
UFRUaW1lKGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgICAgIHZh
bHVlMSA9IDA7CiAgICAgfQogCi0gICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1lU3RyaW5n
W29mZnNldF0gPT0gJy4nKQotICAgICAgICBmcmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShjb2xsZWN0RnJhY3Rpb24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpLnRvRG91
YmxlKCkpOworICAgIGlmIChvZmZzZXQgPCBsZW5ndGggJiYgdGltZVN0cmluZ1tvZmZzZXRdID09
ICcuJykgeworICAgICAgICBib29sIGlzVmFsaWQ7CisgICAgICAgIGZyYWN0aW9uID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgs
IG9mZnNldCkudG9Eb3VibGUoaXNWYWxpZCkpOworICAgIH0KICAgICAKICAgICB0aW1lID0gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKCh2YWx1ZTEgKiBzZWNvbmRzUGVySG91cikgKyAodmFs
dWUyICogc2Vjb25kc1Blck1pbnV0ZSkgKyB2YWx1ZTMpICsgZnJhY3Rpb247CiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggYmQzNWE4NDc4MjYxYzEwMGZm
MTdkMjFlMTJjYjdhNmUwY2JiZThiNC4uN2VhODczMDExZTVmZTk1MzcwMmUxMDFkY2E4OTdlZDcz
NDkzMGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBE
ZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QK
ICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1EZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VT
dGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlv
biYgc3RlcERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCitEZWNpbWFsIFN0
ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0
IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uLCBTdHJpbmdWaWV3IHN0ZXBTdHJpbmcp
CiB7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RlcERl
c2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggNzNk
MjNkYTlmNTU3ODc3YTlhNTBiMTc2ZTRiOTk0MzlkNjIyZDU4YS4uNTQ4NTNkMjk3NWIzNmE5MGZi
ODlmYzU4NjJlZjBlYmRkMjI4MjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9T
dGVwUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC03NCw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBt
X21heGltdW07IH0KICAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmlt
dW07IH0KICAgICBEZWNpbWFsIHN0ZXBTbmFwcGVkTWF4aW11bSgpIGNvbnN0OwotICAgIHN0YXRp
YyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlv
biYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVw
SGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIFN0cmluZ1ZpZXcpOwogICAgIERlY2lt
YWwgc3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQogICAgIERlY2ltYWwgc3RlcEJhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA1
YzFlYzc0MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5Li43M2EzNTgxNDgyM2NkZWRm
OThhYmU5ZWI2Zjk5ZWQ1Y2UxNDMyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtOTIsOSArOTIsMTEgQEAgU3RyaW5nIHNlcmlh
bGl6ZUZvck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nOjpudW1i
ZXIobnVtYmVyKTsKIH0KIAotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCitEZWNpbWFs
IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgRGVj
aW1hbCYgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBu
dW1iZXJzLicgYW5kIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlCisgICAgaWYgKHN0cmluZy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgLy8gU3RyaW5n
Ojp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMs
IHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBjb25zdCBVQ2hhciBmaXJzdENoYXJhY3Rl
ciA9IHN0cmluZ1swXTsKQEAgLTExNiwxNCArMTE4LDE2IEBAIERlY2ltYWwgcGFyc2VUb0RlY2lt
YWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxs
YmFjCiAgICAgcmV0dXJuIHZhbHVlLmlzWmVybygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOwogfQog
Ci1EZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5n
KQogewogICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nLCBEZWNp
bWFsOjpuYW4oKSk7CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25z
dCBTdHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCitkb3VibGUgcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoU3RyaW5nVmlldyBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVl
KQogewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJworICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIC8v
IFN0cmluZzo6dG9Eb3VibGUoKSBhY2NlcHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVzcGFjZSBjaGFy
YWN0ZXJzLCB3aGljaCBhcmUgbm90IHZhbGlkIGhlcmUuCiAgICAgVUNoYXIgZmlyc3RDaGFyYWN0
ZXIgPSBzdHJpbmdbMF07CkBAIC0xMzQsMTEgKzEzOCwxMSBAQCBkb3VibGUgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVl
KQogICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGJvb2wgdmFsaWQgPSBmYWxz
ZTsKLSAgICBkb3VibGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUoJnZhbGlkKTsKKyAgICBkb3Vi
bGUgdmFsdWUgPSBzdHJpbmcudG9Eb3VibGUodmFsaWQpOwogICAgIGlmICghdmFsaWQpCiAgICAg
ICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCi0gICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUg
Y29uc2lkZXJlZCB2YWxpZCBieSBTdHJpbmc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUu
CisgICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29uc2lkZXJlZCB2YWxpZCBieSBTdHJpbmdW
aWV3Ojp0b0RvdWJsZSwgYnV0IG5vdCB2YWxpZCBoZXJlLgogICAgIGlmICghc3RkOjppc2Zpbml0
ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCkBAIC0xNTEsNyArMTU1
LDcgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSA6IDA7
CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZykKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4OTUxNmIxYjliZWU5ZTE5
YzY2MTg1MWMyMjQ3ODJiOGFmNWQ2NDkwLi43YzAzZjMyZDI0YmJhNjJlMTgxYjEzMWViZjIwYTgz
MjRjYTJmM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oCkBAIC01NCwxMCArNTQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUo
ZG91YmxlKTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkZWNpbWFsL2Rv
dWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsbGJh
Y2sgdmFsdWUgb3IgTmFOIGlmIG5vdCBzcGVjaWZpZWQuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5n
IGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1w
dHkgc3RyaW5nLgogLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlm
IHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KLURl
Y2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwotRGVjaW1h
bCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1h
bCYgZmFsbGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJik7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGZhbGxiYWNrVmFsdWUpOworRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51
bWJlclR5cGUoU3RyaW5nVmlldyk7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlw
ZShTdHJpbmdWaWV3LCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKK2RvdWJsZSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK2RvdWJsZSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3LCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZv
ci1wYXJzaW5nLWludGVnZXJzCiBlbnVtIGNsYXNzIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yIHsg
TmVnYXRpdmVPdmVyZmxvdywgUG9zaXRpdmVPdmVyZmxvdywgT3RoZXIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggMTU1YmM3YzE2NmY0OGFlYWQyYmRiMTUzZjRiMjkxZTkxYzAwYWY2ZC4uNWQ1YTM3NmZiZDQw
YzgwZjE4YzdkZGU0OThmYzUzY2RmM2YyZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1OCw3ICs3NTgs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2V0
QXR0cmlidXRlc0FzVGV4dChQcm90b2NvbDo6RAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGVycm9yU3RyaW5nKTsKICAgICB9CiAKLSAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRy
aWJ1dGUgJiYgIW5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFm
b3VuZE9yaWdpbmFsQXR0cmlidXRlICYmIG5hbWUuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSAh
PSBub3RGb3VuZCkgewogICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5yZW1vdmVBdHRyaWJ1dGUo
KmVsZW1lbnQsIG5hbWUsIGVycm9yU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChlcnJvclN0cmluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0
ZW1zQnVpbGRlci5jcHAKaW5kZXggNTZhMDc4MmM2ZWMwYzQzNjliZTFjZmJkYTc0OWIzMjQyZmEz
N2M0My4uNGE4ZDFmYTcyNGY5YTkxOWJjYTMyYjQ4ODQxOGFhZmViODM5ZjIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
SXRlbXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCkBAIC0xNjMsMTIgKzE2MywxMiBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRBcHBl
bmQoY29uc3QgSW5saW5lVGV4dEJveCYgaQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9uKQot
ICAgICAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHRleHRDb250ZW50LnN1
YnN0cmluZyhub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0g
bm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgcGFyYWdyYXBo
Q29udGVudEJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnN1YnN0cmluZyhu
b25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uIC0gbm9uUmVwbGFj
ZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOwogICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRl
ci5hcHBlbmQoc3BhY2UpOwogICAgICAgICBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9u
ID0gcG9zaXRpb247CiAgICAgfQogICAgIGlmIChub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0
aW9uIDwgY29udGVudExlbmd0aCkKLSAgICAgICAgcGFyYWdyYXBoQ29udGVudEJ1aWxkZXIuYXBw
ZW5kKHRleHRDb250ZW50LnJpZ2h0KGNvbnRlbnRMZW5ndGggLSBub25SZXBsYWNlZENvbnRlbnRT
dGFydFBvc2l0aW9uKSk7CisgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChT
dHJpbmdWaWV3KHRleHRDb250ZW50KS5yaWdodChjb250ZW50TGVuZ3RoIC0gbm9uUmVwbGFjZWRD
b250ZW50U3RhcnRQb3NpdGlvbikpOwogfQogCiBzdHJ1Y3QgQmlkaUNvbnRleHQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Q292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDIzMWQzNmJjMGEzNzFkNDk2NTU3Y2JiNTJkMGU3
MzE4MTA4YzYwYjguLjc2ZDJhYjQ2NGRmNzllZjE3ODZjYzZkNjEwZmJmNWYyYzg3ZGY2NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHN0YXRp
YyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IHVuc2lnbmVkJiBjaGFyYWN0CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PFJlbmRlck9iamVjdD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKSkgewogICAg
ICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGV4
dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkKS50ZXh0KCk7Ci0gICAgICAgICAgICB0ZXh0
ID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGF1dG8gbGVuID0gc3RkOjpt
aW4oY2hhcmFjdGVyc0xlZnQsIHRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgc3RyZWFtIDw8
IHRleHQubGVmdChsZW4pOwotICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuOworICAg
ICAgICAgICAgYXV0byB0ZXh0VmlldyA9IFN0cmluZ1ZpZXcodGV4dCkuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgICAgICAgICBhdXRvIGxlbmd0aCA9IHN0ZDo6bWluKGNoYXJhY3RlcnNMZWZ0LCB0
ZXh0Vmlldy5sZW5ndGgoKSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgdGV4dFZpZXcubGVmdChs
ZW5ndGgpOworICAgICAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gbGVuZ3RoOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRUZXh0Rm9yU3VidHJlZShkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIGNoYXJhY3RlcnNMZWZ0LCBzdHJlYW0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggNDBkMDIwNTM4YzM5MmE0NTM5NTVh
OTJlNGM2MWRhZDAzODMwOWViNC4uNmFiZjY1ZmM3ZmY2ZWVlZDExM2M4MWZmYmE3YjUxYTQ3YmFk
ZDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0yMjgsNyArMjI4
LDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUucmVuZGVyZXIo
KSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwbGFpblRl
eHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHko
KTsKKyAgICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlKS5maW5k
KGlzTm90U3BhY2VPck5ld2xpbmUpID09IG5vdEZvdW5kOwogfQogCiBzdGF0aWMgYm9vbCBpbml0
aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgRmxvYXRTaXplIG1hcmdpbiwgYm9vbCBpbmRpY2F0ZXND
dXJyZW50U2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMw
MTcyYTIxYTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li42ZGM1NDgyMmZlYzZlOGQ0MjI3
YTE5YWFhOTBmY2U3MzM1MzgxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApA
QCAtNjkzLDcgKzY5Myw3IEBAIERlY2ltYWwgRGVjaW1hbDo6ZnJvbURvdWJsZShkb3VibGUgZG91
YmxlVmFsdWUpCiAgICAgcmV0dXJuIG5hbigpOwogfQogCi1EZWNpbWFsIERlY2ltYWw6OmZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpCitEZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmcoU3Ry
aW5nVmlldyBzdHIpCiB7CiAgICAgaW50IGV4cG9uZW50ID0gMDsKICAgICBTaWduIGV4cG9uZW50
U2lnbiA9IFBvc2l0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCmluZGV4IDU5Y2RiMThk
ODIxYzZiYzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjVhNTQwMzRkMzIzMmI2ZjZjMDNjM2Zj
ZjgzZTFhY2U4OWU0ZDU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKQEAgLTE0OSw3
ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gIGV4cG9uZW50LW1hcmtlciA6Oj0gJ2UnIHwgJ0Un
CiAgICAgLy8gIGRpZ2l0IDo6PSAnMCcgfCAnMScgfCAuLi4gfCAnOScKICAgICAvLyBOb3RlOiBm
cm9tU3RyaW5nIGRvZXNuJ3Qgc3VwcG9ydCAiaW5maW5pdHkiIGFuZCAibmFuIi4KLSAgICBzdGF0
aWMgRGVjaW1hbCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBEZWNpbWFs
IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIERlY2ltYWwgaW5maW5pdHkoU2ln
bik7CiAgICAgc3RhdGljIERlY2ltYWwgbmFuKCk7CiAgICAgc3RhdGljIERlY2ltYWwgemVybyhT
aWduKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVW
YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmNwcAppbmRleCBjNzQzMTg5OTI4YjNmNmE5YmIzOWY2ZmY0ZmMwOTkzZmUwOTBjYjU0
Li41MDJmYzNjN2I5ZmZiMTk3OGVjYWJiMjg2NWM5NzEyOTZhNWE2ZGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0y
MTMsMTIgKzIxMywxMiBAQCBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcubGVmdChzdHJpbmcuZmluZChpc0Nh
Y2hlSGVhZGVyU2VwYXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK3N0YXRp
YyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+PiBwYXJzZUNhY2hlSGVh
ZGVyKFN0cmluZ1ZpZXcgc2FmZUhlYWRlcikKIHsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gcmVzdWx0OworICAgIEFTU0VSVChzYWZlSGVhZGVyLmZpbmQoaXNDb250cm9s
Q2hhcmFjdGVyT3JTcGFjZSkgPT0gbm90Rm91bmQpOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmdWaWV3LCBTdHJpbmdWaWV3Pj4gcmVzdWx0OwogCi0gICAgU3RyaW5nIHNhZmVIZWFkZXJT
dHJpbmcgPSBoZWFkZXIucmVtb3ZlQ2hhcmFjdGVycyhpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNl
KTsKLSAgICBTdHJpbmdWaWV3IHNhZmVIZWFkZXIgPSBzYWZlSGVhZGVyU3RyaW5nOwogICAgIHVu
c2lnbmVkIG1heCA9IHNhZmVIZWFkZXIubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcG9zID0gMDsK
ICAgICB3aGlsZSAocG9zIDwgbWF4KSB7CkBAIC0yMjYsMzAgKzIyNiwzMCBAQCBzdGF0aWMgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCiAgICAgICAgIHNpemVfdCBuZXh0RXF1YWxTaWduUG9zaXRpb24gPSBzYWZl
SGVhZGVyLmZpbmQoJz0nLCBwb3MpOwogICAgICAgICBpZiAobmV4dEVxdWFsU2lnblBvc2l0aW9u
ID09IG5vdEZvdW5kICYmIG5leHRDb21tYVBvc2l0aW9uID09IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICAvLyBBZGQgbGFzdCBkaXJlY3RpdmUgdG8gbWFwIHdpdGggZW1wdHkgc3RyaW5nIGFzIHZh
bHVlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZl
SGVhZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykpLnRvU3RyaW5nKCksIGVtcHR5U3RyaW5n
KCkgfSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihz
YWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykpLCBlbXB0eVN0cmluZygpIH0pOwog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBpZiAobmV4dENv
bW1hUG9zaXRpb24gIT0gbm90Rm91bmQgJiYgKG5leHRDb21tYVBvc2l0aW9uIDwgbmV4dEVxdWFs
U2lnblBvc2l0aW9uIHx8IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiA9PSBub3RGb3VuZCkpIHsKICAg
ICAgICAgICAgIC8vIEFkZCBkaXJlY3RpdmUgdG8gbWFwIHdpdGggZW1wdHkgc3RyaW5nIGFzIHZh
bHVlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZl
SGVhZGVyLnN1YnN0cmluZyhwb3MsIG5leHRDb21tYVBvc2l0aW9uIC0gcG9zKSkudG9TdHJpbmco
KSwgZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyB0cmltVG9O
ZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dENvbW1hUG9zaXRpb24g
LSBwb3MpKSwgZW1wdHlTdHJpbmcoKSB9KTsKICAgICAgICAgICAgIHBvcyArPSBuZXh0Q29tbWFQ
b3NpdGlvbiAtIHBvcyArIDE7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICAvLyBHZXQgZGlyZWN0aXZlIG5hbWUsIHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiBlcXVh
bCBzaWduLCB0aGVuIGFkZCB0byBtYXAKLSAgICAgICAgU3RyaW5nIGRpcmVjdGl2ZSA9IHRyaW1U
b05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1YWxTaWduUG9z
aXRpb24gLSBwb3MpKS50b1N0cmluZygpOworICAgICAgICBTdHJpbmdWaWV3IGRpcmVjdGl2ZSA9
IHRyaW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0RXF1YWxT
aWduUG9zaXRpb24gLSBwb3MpKTsKICAgICAgICAgcG9zICs9IG5leHRFcXVhbFNpZ25Qb3NpdGlv
biAtIHBvcyArIDE7CiAKICAgICAgICAgU3RyaW5nVmlldyB2YWx1ZSA9IHNhZmVIZWFkZXIuc3Vi
c3RyaW5nKHBvcywgbWF4IC0gcG9zKTsKLSAgICAgICAgaWYgKHZhbHVlWzBdID09ICciJykgewor
ICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnIicpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
dmFsdWUgaXMgYSBxdW90ZWQgc3RyaW5nCiAgICAgICAgICAgICBzaXplX3QgbmV4dERvdWJsZVF1
b3RlUG9zaXRpb24gPSB2YWx1ZS5maW5kKCciJywgMSk7CiAgICAgICAgICAgICBpZiAobmV4dERv
dWJsZVF1b3RlUG9zaXRpb24gPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICAvLyBQYXJz
ZSBlcnJvcjsganVzdCB1c2UgdGhlIHJlc3QgYXMgdGhlIHZhbHVlCi0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5zdWJz
dHJpbmcoMSkpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7
IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5zdWJzdHJpbmcoMSkpIH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBTdG9yZSB0aGUgdmFsdWUgYXMgYSBxdW90ZWQgc3RyaW5nIHdpdGhvdXQgcXVvdGVzCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB2YWx1ZS5zdWJzdHJpbmcoMSwg
bmV4dERvdWJsZVF1b3RlUG9zaXRpb24gLSAxKS50b1N0cmluZygpIH0pOworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdmFsdWUuc3Vic3RyaW5nKDEsIG5leHREb3VibGVR
dW90ZVBvc2l0aW9uIC0gMSkgfSk7CiAgICAgICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmlu
ZCgnIicsIHBvcykgLSBwb3MpICsgbmV4dERvdWJsZVF1b3RlUG9zaXRpb24gKyAxOwogICAgICAg
ICAgICAgLy8gTW92ZSBwYXN0IG5leHQgY29tbWEsIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAg
ICAgc2l6ZV90IG5leHRDb21tYVBvc2l0aW9uMiA9IHNhZmVIZWFkZXIuZmluZCgnLCcsIHBvcyk7
CkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgICAgIHNp
emVfdCBuZXh0Q29tbWFQb3NpdGlvbjIgPSB2YWx1ZS5maW5kKCcsJyk7CiAgICAgICAgIGlmIChu
ZXh0Q29tbWFQb3NpdGlvbjIgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXN0
IGlzIHRoZSB2YWx1ZTsgbm8gY2hhbmdlIHRvIHZhbHVlIG5lZWRlZAotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZSkudG9TdHJp
bmcoKSB9KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05l
eHRTZXBhcmF0b3IodmFsdWUpIH0pOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogICAgICAgICAvLyBUaGUgdmFsdWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1h
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3Io
dmFsdWUubGVmdChuZXh0Q29tbWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLmxlZnQo
bmV4dENvbW1hUG9zaXRpb24yKSkgfSk7CiAgICAgICAgIHBvcyArPSAoc2FmZUhlYWRlci5maW5k
KCcsJywgcG9zKSAtIHBvcykgKyAxOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjc4
LDcgKzI3OCw4IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKICAgICBTdHJpbmcgY2FjaGVD
b250cm9sVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sKTsK
ICAgICBpZiAoIWNhY2hlQ29udHJvbFZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRp
cmVjdGl2ZXMgPSBwYXJzZUNhY2hlSGVhZGVyKGNhY2hlQ29udHJvbFZhbHVlKTsKKyAgICAgICAg
YXV0byBzYWZlSGVhZGVyU3RyaW5nID0gY2FjaGVDb250cm9sVmFsdWUucmVtb3ZlQ2hhcmFjdGVy
cyhpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNlKTsKKyAgICAgICAgYXV0byBkaXJlY3RpdmVzID0g
cGFyc2VDYWNoZUhlYWRlcihzYWZlSGVhZGVyU3RyaW5nKTsKIAogICAgICAgICBzaXplX3QgZGly
ZWN0aXZlc1NpemUgPSBkaXJlY3RpdmVzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkaXJlY3RpdmVzU2l6ZTsgKytpKSB7CkBAIC0yOTcsNyArMjk4LDcgQEAgQ2FjaGVD
b250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgZG91
YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CisgICAgICAg
ICAgICAgICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9r
KTsKICAgICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5t
YXhBZ2UgPSBTZWNvbmRzIHsgbWF4QWdlIH07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgtc3RhbGUi
KSkgewpAQCAtMzEyLDcgKzMxMyw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNo
ZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBib29sIG9rOwotICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVjdGl2ZXNb
aV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIG1heFN0YWxl
ID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAgICAgIGlm
IChvaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gU2Vjb25kcyB7IG1h
eFN0YWxlIH07CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJpbW11dGFibGUiKSkgewpAQCAtMzIzLDcgKzMy
NCw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVz
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwotICAgICAg
ICAgICAgICAgIGRvdWJsZSBzdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNbaV0uc2Vj
b25kLnRvRG91YmxlKCZvayk7CisgICAgICAgICAgICAgICAgZG91YmxlIHN0YWxlV2hpbGVSZXZh
bGlkYXRlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAg
ICAgIGlmIChvaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YWxlV2hpbGVSZXZhbGlk
YXRlID0gU2Vjb25kcyB7IHN0YWxlV2hpbGVSZXZhbGlkYXRlIH07CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4
IDlkNTAzYjVhOTI5OTJlN2VlMWFmMzBmMDllMWRmMThhNTY3OWI4MjEuLjI2NTU4MTI5M2NkOWE0
YzhjYjJiMTY1ZjA5YzQzMDUzNGY0ODZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogLy8gdGhh
dCBhcmlzZXMgZnJvbSBxdW90ZWQtc3RyaW5nLCBub3IgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb3Bl
cmx5IHVucXVvdGUKIC8vIGF0dHJpYnV0ZSB2YWx1ZXMuIEZ1cnRoZXIgdGhpcyBmdW5jdGlvbiBh
cHBlYXJzIHRvIHByb2Nlc3MgcGFyYW1ldGVyIG5hbWVzCiAvLyBpbiBhIGNhc2Utc2Vuc2l0aXZl
IG1hbm5lci4gKFRoZXJlIGFyZSBsaWtlbHkgb3RoZXIgYnVncyBhcyB3ZWxsLikKLVN0cmluZyBm
aWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCitTdHJp
bmdWaWV3IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oU3RyaW5nVmlldyB2YWx1
ZSkKIHsKICAgICBmb3IgKGF1dG8ga2V5VmFsdWVQYWlyIDogdmFsdWUuc3BsaXQoJzsnKSkgewog
ICAgICAgICBzaXplX3QgdmFsdWVTdGFydFBvcyA9IGtleVZhbHVlUGFpci5maW5kKCc9Jyk7CkBA
IC0zNDksNyArMzQ5LDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRp
b24oU3RyaW5nVmlldyB2YWx1ZSkKICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gMSAmJiB2
YWx1ZVswXSA9PSAnXCInKQogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSwg
dmFsdWUubGVuZ3RoKCkgLSAyKTsKIAotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBkNWNl
NzgyOWI1YWQxNjIzZjY5NzEzOGY3Mjk2NThkYzBkMzM3M2ZmLi5hZTI0OTg1ZjNlODBmMDQ5YmVl
MWJhMGFhNzc1ODU2MmZhODU0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oCkBAIC03OSw3ICs3OSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlk
SFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKFN0cmluZ1Zp
ZXcpOwogc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcm
KTsKLVN0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcp
OworU3RyaW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1Zp
ZXcpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShT
dHJpbmdWaWV3KTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25I
ZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgdW5zaWdu
ZWQmIGZhaWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggMWE5YjgzZWVmNTc3MjFm
ZmM1ZTExMGEwODM0YmIwMzEwNjc1NWUxMy4uY2ZlZmUxZWIyNWNkZjljZmYyOGZiMGU1M2Q5MjJm
ZDU4N2Y3YjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRyaWV2ZUtl
eVZhbHVlUGFpcnMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlCiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUp
LmxlZnQoc2VtaWNvbG9uSW5kZXgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgICAgIGtleSA9IFN0cmluZ1ZpZXcobGluZSkubGVmdChzZW1pY29sb25J
bmRleCkuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAg
ICAgdmFsdWUuYXBwZW5kKFN0cmluZ1ZpZXcobGluZSkuc3Vic3RyaW5nKHNlbWljb2xvbkluZGV4
ICsgMSkpOwogICAgIH0KICAgICAvLyBTdG9yZSB0aGUgbGFzdCBwcm9wZXJ0eSBpZiB0aGVyZSBp
cyBvbmUuCkBAIC0xMjAsOSArMTIwLDkgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6
OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IG1pbWVIZWFkZXI7CiB9CiAKLU1JTUVIZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6OnBhcnNl
Q29udGVudFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3RyaW5nJiB0ZXh0KQorTUlNRUhlYWRlcjo6
RW5jb2RpbmcgTUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhTdHJpbmdW
aWV3IHRleHQpCiB7Ci0gICAgU3RyaW5nIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRlU3BhY2Uo
KTsKKyAgICBhdXRvIGVuY29kaW5nID0gdGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmcsICJiYXNlNjQiKSkKICAgICAg
ICAgcmV0dXJuIEJhc2U2NDsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZW5jb2RpbmcsICJxdW90ZWQtcHJpbnRhYmxlIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5oCmluZGV4IDAwOGFlYzJlMDdlMzY5ODc3MGYwYzEzMmY1ODYy
YTM0YTVhMmNiMWMuLmRhMTA2OWE0ZTE0YmQ4ZmI1NzkwMjljYjIzZTEzMjNhYTJjOGE1MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCkBAIC02OCw3
ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTUlNRUhlYWRlcigpOwogCi0gICAgc3Rh
dGljIEVuY29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIEVuY29kaW5nIHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoU3RyaW5n
Vmlldyk7CiAKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9jaGFyc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250
ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRl
bnRUeXBlLmNwcAppbmRleCA2YjkxNjU5MTRjMWZjMTIzMjM4OTdjYTUyZDczNzJkNzY2MTM1MTI4
Li5mYWZhMzIxMWYxMzM1ZTM2NjlkNGY3NzI4YmMzYzM0ZGRjMDYyNmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApA
QCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBl
KFN0cmluZyYmIGNvbnRlbnRSYW5nZSwgTW9kZSBtb2RlKQogewogICAgIG1fbWltZVR5cGUgPSBX
VEZNb3ZlKGNvbnRlbnRSYW5nZSk7CiAgICAgaWYgKG1vZGUgPT0gTW9kZTo6TWltZVNuaWZmKQot
ICAgICAgICBtX21pbWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG1f
bWltZVR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgIG1fbWltZVR5cGUg
PSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoU3RyaW5nVmlldyhtX21pbWVUeXBl
KSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBlbHNlCiAgICAgICAgIG1fbWltZVR5
cGUgPSBtX21pbWVUeXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRl
eCBkMDY2ZWE0NzJjNTRlNjUyMDc5ZGJhNDE4YWIyNDdhODNmYTgyMjViLi43ODM4NTZhMzJmNjU4
MTQ0NzE4OGI1MDU0NGQxMDAxNjc2MTIyZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNzgxLDcg
Kzc4MSw3IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgpIGNvbnN0
CiAgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIGF1dG8gdmFsdWUgPSBtX2h0dHBIZWFk
ZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pOwotICAgIHJl
dHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5sZWZ0KHZhbHVlLmZpbmQo
JzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7CisgICAgcmV0dXJuIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcodmFsdWUpLmxlZnQodmFsdWUuZmlu
ZCgnOycpKS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKTsKIH0KIAogYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgY29uc3QKQEAgLTc5
Niw4ICs3OTYsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnRXaXRo
RmlsZW5hbWUoKSBjb25zdAogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29udGVudERpc3Bvc2l0aW9uVmlldy5sZWZ0KGNvbnRlbnREaXNwb3NpdGlvblZpZXcuZmluZCgn
OycpKS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNw
b3NpdGlvbihjb250ZW50RGlzcG9zaXRpb25WaWV3KTsKLSAgICByZXR1cm4gIWZpbGVuYW1lLmlz
TnVsbCgpOworICAgIHJldHVybiAhZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihj
b250ZW50RGlzcG9zaXRpb25WaWV3KS5pc051bGwoKTsKIH0KIAogUmVzb3VyY2VSZXNwb25zZUJh
c2U6OlNvdXJjZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c291cmNlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNl
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXNwb25zZUN1cmwuY3BwCmluZGV4IDI5MzFkMDVkNGMyOWEzZDY5NzBjOWY3YWQ3ZmMwZjk2ZGM3
NTIwNWIuLmY2YzEwNzJjZmUyZWM2MmFhZjdkYzBlMTI3ZWQ0Nzc5ODI4NWU0NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNl
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZTo6c2V0Q2VydGlmaWNhdGVJbmZvKENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmljYXRlSW5m
bykKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdAogewotICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9u
KGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKSk7Cisg
ICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKS50b1N0cmluZygpOwogfQog
CiBib29sIFJlc291cmNlUmVzcG9uc2U6OnNob3VsZFJlZGlyZWN0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDU1YzM0YzhkYjNkODdi
NGNkNGI0NTU5ODg0NGYwNWRhMTIzZWRlNzkuLmE3ODczYTE1M2Y2MmU3M2FlY2U5MjE0ZGRmMWFl
NTFkNTk5Zjg2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1
c3lIYW5kbGVyKGludCgqaGFuZGxlcikodm9pZCosIGludCkpCiAgICAgICAgIExPRyhTUUxEYXRh
YmFzZSwgIkJ1c3kgaGFuZGxlciBzZXQgb24gbm9uLW9wZW4gZGF0YWJhc2UiKTsKIH0KIAotYm9v
bCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkp
Citib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3coU3RyaW5nVmlldyBxdWVy
eSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsK
ICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKTsKQEAg
LTQ2MSw3ICs0NjEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygpCiAg
ICAgd2hpbGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCiAgICAgICAgIHRhYmxl
cy5hcHBlbmQoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICBmb3IgKGF1dG8mIHRhYmxl
IDogdGFibGVzKSB7Ci0gICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KCJEUk9QIFRBQkxF
ICIgKyB0YWJsZSkpCisgICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VTdHJpbmco
IkRST1AgVEFCTEUgIiwgdGFibGUpKSkKICAgICAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgIlVu
YWJsZSB0byBkcm9wIHRhYmxlICVzIiwgdGFibGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KIH0K
QEAgLTcyMyw3ICs3MjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8c3FsaXRlM19zdG10KiwgaW50PiBj
b25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJgogICAgIHJldHVybiBz
dGF0ZW1lbnQ7CiB9CiAKLUV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRh
YmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKK0V4
cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRl
bWVudFNsb3coU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0g
cXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVt
ZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBx
dWVyeS5sZW5ndGgoKSk7CkBAIC03NDQsNyArNzQ0LDcgQEAgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVt
ZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBx
dWUKICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50IHsgKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1
ZSgpIH07CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNR
TGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVy
eVN0cmluZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNRTGl0
ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVyeVN0cmlu
ZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCku
dXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRl
bWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDkxNjAxMzQ4MTc1OTIxM2Fh
NTJkMTk4YTQ3ZTJlNWM0ZDZhOTg3MzQuLjg2ZmMwNDU4OGJkOGUzODVmZTQ4NjI1NDE1YzU0ZTk3
ODc2ZGQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3BlbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhTdHJpbmdWaWV3KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0YWJsZUV4aXN0cyhTdHJpbmdWaWV3KTsKQEAgLTc1
LDkgKzc1LDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNz
KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50
U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxT
UUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVy
eSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHBy
ZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBF
eHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVwYXJlSGVhcFN0YXRl
bWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0
ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnRT
bG93KFN0cmluZ1ZpZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1
ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KEFTQ0lJTGl0
ZXJhbCBxdWVyeSk7CiAKICAgICAvLyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0
aW9uLiBUaGlzIGlzIHRocmVhZCBzYWZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCmluZGV4IDU0ZDJlYjcyODJjMzk0ODc1NmJkODUyYWE5NmJlMzEzYjE3NDk3ZDcuLjBh
NmMwOTdmM2Q1Y2RiNzU2MDkzZDQxZmFiN2I2ZmFmYTVmMjRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTExNSw5ICsxMTUsOSBAQCBpbmxpbmUgU2Vzc2lv
bkZlYXR1cmUgc2Vzc2lvbkZlYXR1cmVGcm9tUmVmZXJlbmNlU3BhY2VUeXBlKFJlZmVyZW5jZVNw
YWNlVHlwZSByZQogICAgIHJldHVybiBTZXNzaW9uRmVhdHVyZTo6UmVmZXJlbmNlU3BhY2VUeXBl
Vmlld2VyOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxTZXNzaW9uRmVhdHVyZT4gcGFyc2VT
ZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxTZXNzaW9uRmVhdHVyZT4gcGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3Io
U3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nIGZlYXR1cmUgPSBzdHJpbmcuc3RyaXBX
aGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZlYXR1cmUg
PSBzdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAog
ICAgIGlmIChmZWF0dXJlID09ICJ2aWV3ZXIiX3MpCiAgICAgICAgIHJldHVybiBTZXNzaW9uRmVh
dHVyZTo6UmVmZXJlbmNlU3BhY2VUeXBlVmlld2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IGM2OTJiNDA3NDJjMzc3Zjk5ZjBjODk0ZmI2MjU3YjYy
YzQzZjQzZjAuLjUzMjE0OTdhZDEwYjcwM2YzOTEyYmNiMGZmNmQxNjBlMjA0NjE4NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTU2LDExICs1Niwx
MSBAQCBTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogewogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUtl
eVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2
ZXJpZnlPcmRlcikKK3N0YXRpYyB2b2lkIHBhcnNlS2V5VGltZXMoU3RyaW5nVmlldyBwYXJzZSwg
VmVjdG9yPGZsb2F0PiYgcmVzdWx0LCBib29sIHZlcmlmeU9yZGVyKQogewogICAgIHJlc3VsdC5j
bGVhcigpOwogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgZm9yIChTdHJpbmdWaWV3IHRp
bWVTdHJpbmcgOiBTdHJpbmdWaWV3KHBhcnNlKS5zcGxpdCgnOycpKSB7CisgICAgZm9yIChhdXRv
IHRpbWVTdHJpbmcgOiBwYXJzZS5zcGxpdCgnOycpKSB7CiAgICAgICAgIGJvb2wgb2s7CiAgICAg
ICAgIGZsb2F0IHRpbWUgPSB0aW1lU3RyaW5nLnRvRmxvYXQob2spOwogICAgICAgICBpZiAoIW9r
IHx8IHRpbWUgPCAwIHx8IHRpbWUgPiAxKQpAQCAtMTUzLDkgKzE1MywxMCBAQCB2b2lkIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdAogICAgICAgICAvLyBQZXIgdGhlIFNNSUwgc3BlY2lmaWNhdGlvbiwgbGVh
ZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUgc3BhY2UsCiAgICAgICAgIC8vIGFuZCB3aGl0ZSBzcGFj
ZSBiZWZvcmUgYW5kIGFmdGVyIHNlbWljb2xvbiBzZXBhcmF0b3JzLCBpcyBhbGxvd2VkIGFuZCB3
aWxsIGJlIGlnbm9yZWQuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2Fu
aW1hdGUuaHRtbCNWYWx1ZXNBdHRyaWJ1dGUKLSAgICAgICAgbV92YWx1ZXMgPSB2YWx1ZS5zdHJp
bmcoKS5zcGxpdCgnOycpOwotICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1ZXMpCi0g
ICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBtX3Zh
bHVlcy5jbGVhcigpOworICAgICAgICB2YWx1ZS5zdHJpbmcoKS5zcGxpdCgnOycsIFt0aGlzXShT
dHJpbmdWaWV3IGlubmVyVmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChpbm5l
clZhbHVlLnN0cmlwV2hpdGVTcGFjZSgpLnRvU3RyaW5nKCkpOworICAgICAgICB9KTsKIAogICAg
ICAgICB1cGRhdGVBbmltYXRpb25Nb2RlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpp
bmRleCBiMjk0MDNlZmNlMmI4ZWMzYTQ4YzI1NDY4ZjE4OTY2NzlmODE1NmM1Li5lZjY0YzRkNjUx
ZjE1Yzc4YmU3OGQwZjU5N2U2NTNkOWEyOThjODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsOCAr
MTY0LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZv
Rm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICBFZGl0b3ImIGVkaXRvciA9IGZy
YW1lLmVkaXRvcigpOwogICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZv
KHRydWUpOwogCi0gICAgLy8gRklYTUU6IEluZWZmaWNpZW50IHRvIGNhbGwgc3RyaXBXaGl0ZVNw
YWNlIHRvIGRldGVjdCB3aGV0aGVyIGEgc3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJh
Y3RlciBpbiBpdC4KLSAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5zdHJpcFdoaXRlU3BhY2UoKS5p
c0VtcHR5KCkpIHsKKyAgICBpZiAocGxhaW5UZXh0KHJhbmdlKS5maW5kKGlzTm90U3BhY2VPck5l
d2xpbmUpID09IG5vdEZvdW5kKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9u
YXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMGFlZTdiNjlhZmQ1YjRhNmY3NjhmMjA1ZjhhMDI4
YzE4ZWE3ODg4Yy4uMzcyOTQ2ZDlmN2Q4YzdiY2RkNjRjYzU5MzdkMzdjMWU0MDdkZjEyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNTE3LDcgKzUxNyw3IEBAICsgKFdlYkNv
cmU6OkRpY3Rpb25hcnlQb3B1cEluZm8pX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZTooY29u
c3QgV2ViQ29yZTo6U2ltCiAgICAgLy8gRGljdGlvbmFyeSBBUEkgd2lsbCBhY2NlcHQgYSB3aGl0
ZXNwYWNlLW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlmIGl0IHdlcmUgcmVhbCB0ZXh0
LAogICAgIC8vIHNvIGJhaWwgb3V0IGVhcmx5IHRvIGF2b2lkIHRoYXQuCiAgICAgV2ViQ29yZTo6
RGljdGlvbmFyeVBvcHVwSW5mbyBwb3B1cEluZm87Ci0gICAgaWYgKHBsYWluVGV4dChyYW5nZSku
c3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4dChyYW5nZSku
ZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAgICBlZGl0b3Iu
c2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBw
b3B1cEluZm87CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457780</attachid>
            <date>2022-04-17 15:18:43 -0700</date>
            <delta_ts>2022-04-17 16:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220417151842.patch</filename>
            <type>text/plain</type>
            <size>54469</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLmRiMDBiN2ZiODk0NmVlMjBlZjI1MGM0ZDg4ZDc2ZjMxNjQ3MzM1
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIExldmVyYWdlIFN0
cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBh
bGxvY2F0aW9ucy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6aXNOb3RTcGFjZU9yTmV3
bGluZSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjItMDQtMTYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGNvbXBsZXgg
U3RyaW5nOjppbnNlcnQoKSB3aXRoIGEgc2ltcGxpZmllZCBtYWtlU3RyaW5nQnlJbnNlcnRpbmco
KSBmcmVlIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA0ZjYyYmUwM2U1MmI1NDhjMzY2ZGI1YjBm
ZDA0ZGRiODkzNjYxMS4uODUzZWNiNTI3MjhkYTE4MDkyMjFhZjAxYjgyM2M4NGE2YzFmNWJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBs
YWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VJY29ucyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJl
c3VsdEZyb21EYXRhYmFzZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnRdKToKKyAgICAgICAg
KGFwcGVuZFN0cmluZ1RvUmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKGFjY2Vzc2libGVFbGVt
ZW50c0Zvck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAocmVuZGVyZXJGb3JWaWV3KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlEYXRhOjpzZXRNZWRpYVR5cGUp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6dHJhbnNwb3NlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sbGVjdEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQ
YXJzZXI6OnBhcnNlTlBUVGltZSk6CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOgorICAgICAgICAqIGh0bWwvU3Rl
cFJhbmdlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpz
ZXRBdHRyaWJ1dGVzQXNUZXh0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpyZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRBcHBlbmQpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpwcmludFRleHRGb3JTdWJ0cmVlKToK
KyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGFpbnNPbmx5V2hpdGVTcGFjZVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL0RlY2ltYWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6ZnJvbVN0cmluZyk6CisgICAgICAgICogcGxh
dGZvcm0vRGVjaW1hbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lRnJv
bUhUVFBDb250ZW50RGlzcG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVLZXlWYWx1ZVBhaXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVIZWFkZXI6OnBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFR5cGU6OnNldENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjppc0F0dGFjaG1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlS2V5VGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorCiAyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgaWQgbWF0Y2hpbmcgaW4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDdlZGEzZWQxZDY1YTY0NzQwYzRhNDNhNjc4NWM2MTI3ZWVlNDQ5Ny4uNjA2M2NjNDNj
YzI5NmY4NTdkM2QzNjM1MGFhYmEyYWZkNDVhY2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNl
cywgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgU3RyaW5nIGFsbG9jYXRpb25zLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAyMi0wNC0x
NSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIFN0
cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBTdHJpbmcgYWxsb2NhdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNDMyM2NkZmY4ODY0NWU4ZGRkMmNlNGRk
ZmU2M2ViMzBhMjRiOGJiLi5kN2Y1YThlZDI4MTM3NWU0M2I2ZTgyNGFjMjc3YjliMjhhYmMwYzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBT
dHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVj
ZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0
aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0cmFuc2l0aW9uOl0pOgorCiAyMDIyLTA0
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTGV2ZXJhZ2Ug
U3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9pZCBzb21lIFN0cmluZyBhbGxvY2F0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNThiODU0NTZmODZjNWNhODRlZTNl
OTVlYTRiMjNiNGI0MzE0NDVjMS4uM2M0MTc0ZTUyNmFhNjY1MGRjZGU1YmY1Y2VhYzU5YTM2Y2Nk
Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC04MzUsMTMgKzgzNSw2IEBA
IGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCogb2spCiAgICAgcmV0dXJuIGNoYXJhY3Rl
cnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWdu
ZWQgc3RhcnQpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gV1RGOjpmaW5k
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBzdGFydCk7Ci0gICAgcmV0
dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0
YXJ0KTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBDaGVjayBmb3IgbnVsbCBvciBlbXB0eSBz
dHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCA3MzUw
OGVjZWI2NTVhNWE1ZGZjM2NiNTdjMWY4YmIxODcyMjJhZmI3Li40M2M5NTQ5ZjY1MzYwMTcwZTUx
ZGEwODYxNWQ2MDhmNDU5NjkzZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDMw
LDcgKzQzMCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVu
c2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHVuc2ln
bmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25l
ZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChDb2RlVW5p
dE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW52b2Nh
YmxlX3Jfdjxib29sLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIFVDaGFyPj4qID0gbnVsbHB0cj4K
KyAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3Ry
aW5nVmlldyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0KTsKQEAgLTYwMCw2ICs2MDEsNyBAQCBpbnQgY29kZVBvaW50Q29tcGFy
ZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogLy8gRklYTUU6IFNob3Vs
ZCByZW5hbWUgdGhpcyB0byBtYWtlIGNsZWFyIGl0IHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlv
biBvZiB3aGl0ZXNwYWNlLgogLy8gTW9zdCBXZWJLaXQgY2FsbGVycyBkb24ndCB3YW50IHRoYXQg
d291bGQgdXNlIGlzQVNDSUlTcGFjZSBvciBpc0hUTUxTcGFjZSBpbnN0ZWFkLgogYm9vbCBpc1Nw
YWNlT3JOZXdsaW5lKFVDaGFyMzIpOworYm9vbCBpc05vdFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB1bnNpZ25lZCBsZW5ndGhPZk51
bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUqKTsKIApAQCAtNzA0LDYgKzcw
NiwxNCBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCkKICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xl
bmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0
TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9v
bCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+Kj4KK3NpemVfdCBTdHJpbmdJbXBsOjpm
aW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkK
K3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVy
czgoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKKyAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgbWF0Y2hGdW5jdGlvbiwgc3RhcnQpOworfQor
CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3Jp
bmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBTdHJpbmdJ
bXBsKiBiKQogewogICAgIHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmRhdGEoKSwgYS5z
aXplKCksIGIpOwpAQCAtNzU0LDYgKzc2NCwxMSBAQCBpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXds
aW5lKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHJldHVybiBpc0xhdGluMShjaGFyYWN0ZXIpID8g
aXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBV
X1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKK2lubGluZSBib29sIGlzTm90U3BhY2VPck5ld2xp
bmUoVUNoYXIzMiBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuICFpc1NwYWNlT3JOZXdsaW5lKGNo
YXJhY3Rlcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB1
bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUq
IHN0cmluZykKIHsKICAgICBBU1NFUlQoc3RyaW5nKTsKQEAgLTEzMTQsMyArMTMyOSw1IEBAIGlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBQ
cmVkaWNhdGUmIGZpbmRNYXRjaCkKIHVzaW5nIFdURjo6U3RhdGljU3RyaW5nSW1wbDsKIHVzaW5n
IFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1YWw7Cit1c2luZyBXVEY6OmlzTm90U3Bh
Y2VPck5ld2xpbmU7Cit1c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCA1NGQwYmJlZmUwN2NiZDU5YTU3MzhlOTQ1NGExODFlMjFiMDFkZjNkLi4y
OWExY2Y2MzU5Nzc4YTU2ZjQ4YmQ3MzkzODQzM2RjY2M1ZWVjYjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBzaXplX3QgZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+KiA9
IG51bGxwdHI+CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICAgc2l6ZV90IGZp
bmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCkBA
IC02NDMsNyArNjQ0LDYgQEAgdXNpbmcgV1RGOjpudWxsU3RyaW5nOwogdXNpbmcgV1RGOjplcXVh
bDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsK
LXVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNjgzZGZjZDBjNGU1ZDgzNmEzOTg0ZjM1ZWMy
MWFkMTBmYTM2OTY0Yi4uM2NjZDU1ZjE5MTAzNTc2NTQ0YzQyZDNjZmM2ODkzZWM3ZmU4ODk2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXkgQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6cGFyc2VEaXNwbGF5KGNvbnN0IEpTT046CiAgICAgICAgIHJldHVybiBBcHBs
aWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5OjpCcm93c2VyOwogICAgIH0KIAotICAgIHN0cmluZ1Zh
bHVlID0gc3RyaW5nVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKKyAgICBzdHJpbmdWYWx1ZSA9IFN0cmluZ1ZpZXcoc3RyaW5nVmFsdWUpLnN0cmlwV2hp
dGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKICAgICBpZiAoc3RyaW5nVmFs
dWUgPT0gImZ1bGxzY3JlZW4iKQogICAgICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6
RGlzcGxheTo6RnVsbHNjcmVlbjsKQEAgLTIzMCwxOSArMjMwLDE3IEBAIFZlY3RvcjxBcHBsaWNh
dGlvbk1hbmlmZXN0OjpJY29uPiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25z
KGNvbnN0IEpTCiAgICAgICAgICAgICAgICAgcHVycG9zZXMuYWRkKEFwcGxpY2F0aW9uTWFuaWZl
c3Q6Okljb246OlB1cnBvc2U6OkFueSk7CiAgICAgICAgICAgICAgICAgY3VycmVudEljb24ucHVy
cG9zZXMgPSBwdXJwb3NlczsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHVycG9zZVN0cmluZ1ZhbHVlID0gcHVycG9zZVN0cmluZ1ZhbHVlLnN0cmlwV2hpdGVTcGFjZSgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5d29yZHMgPSBwdXJwb3NlU3RyaW5nVmFsdWUuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cygiICIpOwotCi0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXl3b3JkIDoga2V5
d29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtleXdvcmQgPT0gIm1vbm9jaHJvbWUi
KQorICAgICAgICAgICAgICAgIGZvciAoYXV0byYga2V5d29yZCA6IFN0cmluZ1ZpZXcocHVycG9z
ZVN0cmluZ1ZhbHVlKS5zdHJpcFdoaXRlU3BhY2UoKS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVz
KCcgJykpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGtleXdvcmQsICJtb25vY2hyb21lIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXJwb3Nlcy5hZGQoQXBwbGljYXRpb25NYW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6TW9ub2Nocm9t
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleXdvcmQgPT0gIm1hc2thYmxlIikK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5d29yZCwgIm1hc2thYmxlIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXJwb3Nl
cy5hZGQoQXBwbGljYXRpb25NYW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6TWFza2FibGUpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXl3b3JkID09ICJhbnkiKQorICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAi
YW55IikpCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXJwb3Nlcy5hZGQoQXBwbGljYXRpb25N
YW5pZmVzdDo6SWNvbjo6UHVycG9zZTo6QW55KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRGV2ZWxvcGVyV2FybmluZyhtYWtlU3RyaW5nKCJc
IiJfcywgcHVycG9zZVN0cmluZ1ZhbHVlLCAiXCIgaXMgbm90IGEgdmFsaWQgcHVycG9zZS4iX3Mp
KTsKICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAocHVycG9zZXMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA0MmQwYjdjMDk2MzA1NTRkYWRmN2U2MjRhOWNlZWVkMTI0NDRkMDQzLi40NTVh
YWNlODgwZGQ5ZmNjODRhYTVlZWJkN2RkYjMwODMyM2M0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3RhYmxpc2hT
dGF0ZW1lbnQoKQogICAgIHJldHVybiBjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoc3FsKTsKIH0KIAot
Ym9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcm
IHNxbCkKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5n
VmlldyBzcWwpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIkNyZWF0aW5nIGN1cnNvciB3aXRoIFNR
TCBxdWVyeTogXCIlc1wiIiwgc3FsLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgK
aW5kZXggZjc4NzkzMjY2NTY0NzA0ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YS4uNjAyMjY5NDBj
NTQ2OTE0OWVlZjRhMDkwOTEyYWZmMDcxODA2ZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0
ZW1lbnQoKTsKLSAgICBib29sIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNx
bCk7CisgICAgYm9vbCBjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoU3RyaW5nVmlldyBzcWwpOwogICAg
IGJvb2wgYmluZEFyZ3VtZW50cygpOwogCiAgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggZTY3MDAyZDE3ZGNmMzQ4MzE4ZDE4NWIzNDdiMWUy
NjBlMmJkOWI2My4uMDE4ZGJiOTliMThmYjY3YjhiMGRjMDkzODgyNzgxN2FiZGIyYzYyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTExMiwyOSArMTEyLDI5IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIGludCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcobWVzc2FnZSwgIiAoIiwgc3FsaXRlRXJyb3JDb2RlLCAnICcsIHNxbGl0ZUVycm9y
TWVzc2FnZSwgJyknKTsKIH0KIAotc3RhdGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShT
UUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IFN0cmluZyYgdmFs
dWUpCitzdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBk
YiwgU3RyaW5nVmlldyBxdWVyeSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIHN0
YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRl
bWVudCkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0
byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVl
IGluIGRhdGFiYXNlICglcykiLCBxdWVyeS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwgdmFsdWUpOwogCiAg
ICAgaWYgKHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIHN0ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAo
JXMpIiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBzdGVwIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShT
UUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3Ry
aW5nKQorc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURh
dGFiYXNlJiBkYiwgU3RyaW5nVmlldyBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJpbmcpCiB7CiAg
ICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAg
aWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmlu
ZyBzdGF0ZW1lbnQgdG8gcmVhZCB0ZXh0IHJlc3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0
ZW1lbnQuZXJyb3IoKSwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1Io
IkVycm9yICglaSkgcHJlcGFyaW5nIHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20g
ZGF0YWJhc2UgKCVzKSIsIHN0YXRlbWVudC5lcnJvcigpLCBxdWVyeS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRp
YyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIs
IGNvbnN0IFN0cmluZyYgcXVlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIExP
R19FUlJPUigiRXJyb3IgKCVpKSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVz
KSIsIHJlc3VsdCwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19FUlJPUigiRXJyb3Ig
KCVpKSByZWFkaW5nIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHJlc3VsdCwgcXVl
cnkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDE5NDQ5YjNlZTVhMDQyM2MwZWFmNzM0NDlh
OGJiMjY2Mzk1YWNlOTkuLmFkMzM2NmIxOTcwZmUwNmJlZDZiOGE1MDE2YjcxNWY5MWJlY2ZjOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTE0LDcgKzEx
MTQsNyBAQCAtIChCT09MKWRldGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnQKICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzQ5MgogICAgICAg
ICByZXR1cm4gc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzS2V5Ym9hcmRGb2N1c2FibGUoKQogICAg
ICAgICAgICAgJiYgW3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0gPT0gMAotICAgICAg
ICAgICAgJiYgc2VsZi5heEJhY2tpbmdPYmplY3QtPmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUo
KS5zdHJpcFdoaXRlU3BhY2UoKS5sZW5ndGgoKSA+IDA7CisgICAgICAgICAgICAmJiBzZWxmLmF4
QmFja2luZ09iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpLmZpbmQoaXNOb3RTcGFj
ZU9yTmV3bGluZSkgIT0gbm90Rm91bmQ7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdu
b3JlZDoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBlNmMxNWVjMzA2YmY0NzgzYjljN2UzNWZhNTM5
NzYxNTI3YzkwM2M5Li4wMWNkNTNlMzNjY2Y5ZTFkMzk5NDEyZWJmNDBjNmI1MjNjZWZjZmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTMs
NyArOTMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOwogICAgICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKICAgICAg
ICAgdm9pZCByZW1vdmVMYXN0RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlw
ZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgeyBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsgfQor
ICAgICAgICB2b2lkIHNldE1lZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5
cGUgPSBXVEZNb3ZlKG1lZGlhVHlwZSk7IH0KIAogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmlj
dG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICAgICAg
VmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4
cHJlc3Npb25zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2I0YjcxYWI5M2M2
ZWQ3ZDU2ODhmNDg0NWIzMzQxODRlYjJjMGNiZS4uNWRmN2EzNTA4ZGE3OGIzMjUwMjI4NjYwZjA0
NGFiNGQ0MzVjNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzIyMSw3ICsz
MjIxLDkgQEAgdm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgU3RyaW5nIHRleHQgPSBwbGFp
blRleHQoKnJhbmdlKTsKICAgICBpZiAodGV4dC5sZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1
cm47Ci0gICAgU3RyaW5nIHRyYW5zcG9zZWQgPSB0ZXh0LnJpZ2h0KDEpICsgdGV4dC5sZWZ0KDEp
OworCisgICAgLy8gRklYTUU6IFRoaXMgbGlrZWx5IHdvbid0IHdvcmsgd2l0aCBncmFwaGVtZXMu
CisgICAgU3RyaW5nIHRyYW5zcG9zZWQgPSBtYWtlU3RyaW5nKHRleHRbMV0sIHRleHRbMF0pOwog
CiAgICAgLy8gU2VsZWN0IHRoZSB0d28gY2hhcmFjdGVycy4KICAgICBpZiAobmV3U2VsZWN0aW9u
ICE9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggY2VkMzIzNWVmYjg5ZmFiNzRhZjI5YzZk
NWU4MjBmNDcxOGI2NmRhZi4uMjFlMDJlYTgwYjg2M2JjMjJiYzRhZDliOTlkNGVhNDAxMzA5MTcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE5MDQs
MTUgKzE5MDQsMTUgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlcihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBib29sIHNlbGVjdGVkKSBjb25zdAogICAgICAgICAgICAgICAgIGNh
cmV0ID0gcG9zOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPCAwKSB7CiAgICAg
ICAgICAgICAgICAgLy8gdG9vIGZldyBjaGFyYWN0ZXJzIHRvIGxlZnQKLSAgICAgICAgICAgICAg
ICBzaG93ID0gdGV4dC5sZWZ0KG1heCAtIDMpICsgIi4uLiI7CisgICAgICAgICAgICAgICAgc2hv
dyA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyh0ZXh0KS5sZWZ0KG1heCAtIDMpLCAiLi4uIik7CiAg
ICAgICAgICAgICAgICAgY2FyZXQgPSBwb3M7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvcyAt
IG1pZCA+PSAwICYmIHBvcyArIG1pZCA8PSB0ZXh0TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAg
Ly8gZW5vdWdoIGNoYXJhY3RlcnMgb24gZWFjaCBzaWRlCi0gICAgICAgICAgICAgICAgc2hvdyA9
ICIuLi4iICsgdGV4dC5zdWJzdHJpbmcocG9zIC0gbWlkICsgMywgbWF4IC0gNikgKyAiLi4uIjsK
KyAgICAgICAgICAgICAgICBzaG93ID0gbWFrZVN0cmluZygiLi4uIiwgU3RyaW5nVmlldyh0ZXh0
KS5zdWJzdHJpbmcocG9zIC0gbWlkICsgMywgbWF4IC0gNiksICIuLi4iKTsKICAgICAgICAgICAg
ICAgICBjYXJldCA9IG1pZDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gdG9vIGZldyBjaGFyYWN0ZXJzIG9uIHJpZ2h0Ci0gICAgICAgICAgICAgICAgc2hvdyA9ICIu
Li4iICsgdGV4dC5yaWdodChtYXggLSAzKTsKKyAgICAgICAgICAgICAgICBzaG93ID0gbWFrZVN0
cmluZygiLi4uIiwgU3RyaW5nVmlldyh0ZXh0KS5yaWdodChtYXggLSAzKSk7CiAgICAgICAgICAg
ICAgICAgY2FyZXQgPSBwb3MgLSAodGV4dExlbmd0aCAtIHNob3cubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmNwcAppbmRleCA5ZjM2ODYwYTI2MTQwZjQ5ZTgyNGQzMjY3ZGUzZWFmOWEx
MmRjODkxLi41NDA1MmVlYjA2OGJhMjQ2NjE5YTdjYzA5ZDlhZjY4NTkyMDNhNDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTU1LDE5
ICs1NSwxNyBAQCBzdGF0aWMgU3RyaW5nIGNvbGxlY3REaWdpdHMoY29uc3QgTENoYXIqIGlucHV0
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3NpdAogICAgIHJldHVybiBkaWdpdHMudG9T
dHJpbmcoKTsKIH0KIAotc3RhdGljIFN0cmluZyBjb2xsZWN0RnJhY3Rpb24oY29uc3QgTENoYXIq
IGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBwb3NpdGlvbikKK3N0YXRpYyBTdHJp
bmdWaWV3IGNvbGxlY3RGcmFjdGlvbihjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQmIHBvc2l0aW9uKQogewotICAgIFN0cmluZ0J1aWxkZXIgZGlnaXRzOwotCiAg
ICAgLy8gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjMyNi50eHQKICAgICAvLyBbICIuIiAq
RElHSVQgXQogICAgIGlmIChpbnB1dFtwb3NpdGlvbl0gIT0gJy4nKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBkaWdpdHMuYXBwZW5kKGlucHV0
W3Bvc2l0aW9uKytdKTsKKyAgICB1bnNpZ25lZCBzdGFydCA9IHBvc2l0aW9uKys7CiAgICAgd2hp
bGUgKHBvc2l0aW9uIDwgbGVuZ3RoICYmIGlzQVNDSUlEaWdpdChpbnB1dFtwb3NpdGlvbl0pKQot
ICAgICAgICBkaWdpdHMuYXBwZW5kKGlucHV0W3Bvc2l0aW9uKytdKTsKLSAgICByZXR1cm4gZGln
aXRzLnRvU3RyaW5nKCk7CisgICAgICAgICsrcG9zaXRpb247CisgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcgeyBpbnB1dCArIHN0YXJ0LCBwb3NpdGlvbiAtIHN0YXJ0IH07CiB9CiAKIE1lZGlhRnJhZ21l
bnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXIoY29uc3QgVVJMJiB1cmwpCkBAIC0y
NzAsOCArMjY4LDkgQEAgYm9vbCBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZU5QVFRpbWUo
Y29uc3QgTENoYXIqIHRpbWVTdHJpbmcsIHVuc2lnbmVkIGxlbmcKICAgICBpZiAodGltZVN0cmlu
Z1tvZmZzZXRdID09ICcuJykgewogICAgICAgICBpZiAob2Zmc2V0ID09IGxlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBTdHJpbmcgZGlnaXRzID0gY29sbGVjdEZyYWN0
aW9uKHRpbWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KTsKLSAgICAgICAgZnJhY3Rpb24gPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZGlnaXRzLnRvRG91YmxlKCkpOworICAgICAgICBhdXRv
IGRpZ2l0cyA9IGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5ndGgsIG9mZnNldCk7Cisg
ICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAgZnJhY3Rpb24gPSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoZGlnaXRzLnRvRG91YmxlKGlzVmFsaWQpKTsKICAgICAgICAgdGltZSA9IE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh2YWx1ZTEpICsgZnJhY3Rpb247CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMwOCw4ICszMDcsMTAgQEAgYm9vbCBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyOjpwYXJzZU5QVFRpbWUoY29uc3QgTENoYXIqIHRpbWVTdHJpbmcsIHVuc2lnbmVk
IGxlbmcKICAgICAgICAgdmFsdWUxID0gMDsKICAgICB9CiAKLSAgICBpZiAob2Zmc2V0IDwgbGVu
Z3RoICYmIHRpbWVTdHJpbmdbb2Zmc2V0XSA9PSAnLicpCi0gICAgICAgIGZyYWN0aW9uID0gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGNvbGxlY3RGcmFjdGlvbih0aW1lU3RyaW5nLCBsZW5n
dGgsIG9mZnNldCkudG9Eb3VibGUoKSk7CisgICAgaWYgKG9mZnNldCA8IGxlbmd0aCAmJiB0aW1l
U3RyaW5nW29mZnNldF0gPT0gJy4nKSB7CisgICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAg
ZnJhY3Rpb24gPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY29sbGVjdEZyYWN0aW9uKHRp
bWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KS50b0RvdWJsZShpc1ZhbGlkKSk7CisgICAgfQogICAg
IAogICAgIHRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKHZhbHVlMSAqIHNlY29u
ZHNQZXJIb3VyKSArICh2YWx1ZTIgKiBzZWNvbmRzUGVyTWludXRlKSArIHZhbHVlMykgKyBmcmFj
dGlvbjsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBi
ZDM1YTg0NzgyNjFjMTAwZmYxN2QyMWUxMmNiN2E2ZTBjYmJlOGI0Li43ZWE4NzMwMTFlNWZlOTUz
NzAyZTEwMWRjYTg5N2VkNzM0OTMwYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIERlY2ltYWwgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IERlY2lt
YWwmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKLURlY2ltYWwg
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29u
c3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3RlcFN0
cmluZykKK0RlY2ltYWwgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0
ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIFN0cmlu
Z1ZpZXcgc3RlcFN0cmluZykKIHsKICAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaAppbmRleCA3M2QyM2RhOWY1NTc4NzdhOWE1MGIxNzZlNGI5OTQzOWQ2MjJkNThhLi41
NDg1M2QyOTc1YjM2YTkwZmI4OWZjNTg2MmVmMGViZGQyMjgyNTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3Rl
cFJhbmdlLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIERlY2ltYWwgbWF4aW11bSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIERlY2ltYWwgbWluaW11bSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWluaW11bTsgfQogICAgIERlY2ltYWwgc3RlcFNuYXBwZWRNYXhpbXVtKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIERlY2ltYWwgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29u
c3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIERlY2ltYWwg
cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgU3RyaW5n
Vmlldyk7CiAgICAgRGVjaW1hbCBzdGVwKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwOyB9CiAgICAg
RGVjaW1hbCBzdGVwQmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEJhc2U7IH0KICAgICBpbnQg
c3RlcFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwRGVzY3JpcHRpb24uc3RlcFNj
YWxlRmFjdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCmluZGV4IDVjMWVjNzQxYzIxYTQ5Nzk0YjRhODZhYmI1NzU4Njc4OWExMWNlZTku
LjczYTM1ODE0ODIzY2RlZGY5OGFiZTllYjZmOTllZDVjZTE0MzJmZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC05Miw5ICs5Miwx
MSBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcihudW1iZXIpOwogfQogCi1EZWNpbWFsIHBhcnNlVG9EZWNpbWFs
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgRGVjaW1hbCYgZmFsbGJh
Y2tWYWx1ZSkKK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcg
c3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKQogewogICAgIC8vIFNlZSBIVE1M
NSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJyBhbmQgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUK
KyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7
CiAKICAgICAvLyBTdHJpbmc6OnRvRG91YmxlKCkgYWNjZXB0cyBsZWFkaW5nICsgYW5kIHdoaXRl
c3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIG5vdCB2YWxpZCBoZXJlLgogICAgIGNvbnN0IFVD
aGFyIGZpcnN0Q2hhcmFjdGVyID0gc3RyaW5nWzBdOwpAQCAtMTE2LDE0ICsxMTgsMTYgQEAgRGVj
aW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IERlY2ltYWwmIGZhbGxiYWMKICAgICByZXR1cm4gdmFsdWUuaXNaZXJvKCkgPyBEZWNpbWFs
KDApIDogdmFsdWU7CiB9CiAKLURlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUo
U3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVy
VHlwZShzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsKIH0KIAotZG91YmxlIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkK
K2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3IHN0cmluZywgZG91
YmxlIGZhbGxiYWNrVmFsdWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1IDIuNS40LjMgYFJlYWwgbnVt
YmVycy4nCisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFj
a1ZhbHVlOwogCiAgICAgLy8gU3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFu
ZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KICAgICBV
Q2hhciBmaXJzdENoYXJhY3RlciA9IHN0cmluZ1swXTsKQEAgLTEzNCwxMSArMTM4LDExIEBAIGRv
dWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgZG91
YmxlIGZhbGxiYWNrVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAg
Ym9vbCB2YWxpZCA9IGZhbHNlOwotICAgIGRvdWJsZSB2YWx1ZSA9IHN0cmluZy50b0RvdWJsZSgm
dmFsaWQpOworICAgIGRvdWJsZSB2YWx1ZSA9IHN0cmluZy50b0RvdWJsZSh2YWxpZCk7CiAgICAg
aWYgKCF2YWxpZCkKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKLSAgICAvLyBOYU4g
YW5kIGluZmluaXR5IGFyZSBjb25zaWRlcmVkIHZhbGlkIGJ5IFN0cmluZzo6dG9Eb3VibGUsIGJ1
dCBub3QgdmFsaWQgaGVyZS4KKyAgICAvLyBOYU4gYW5kIGluZmluaXR5IGFyZSBjb25zaWRlcmVk
IHZhbGlkIGJ5IFN0cmluZ1ZpZXc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUuCiAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7
CiAKQEAgLTE1MSw3ICsxNTUsNyBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogICAgIHJldHVybiB2
YWx1ZSA/IHZhbHVlIDogMDsKIH0KIAotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShzdHJpbmcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4
IDg5NTE2YjFiOWJlZTllMTljNjYxODUxYzIyNDc4MmI4YWY1ZDY0OTAuLjdjMDNmMzJkMjRiYmE2
MmUxODFiMTMxZWJmMjBhODMyNGNhMmYzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTU0LDEwICs1NCwxMCBAQCBTdHJpbmcgc2VyaWFs
aXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmlu
ZyB0byBhIGRlY2ltYWwvZG91YmxlLiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgdGhlIHJldHVy
biB2YWx1ZSBpcyBmYWxsYmFjayB2YWx1ZSBvciBOYU4gaWYgbm90IHNwZWNpZmllZC4KIC8vIExl
YWRpbmcgb3IgdHJhaWxpbmcgaWxsZWdhbCBjaGFyYWN0ZXJzIGNhdXNlIGZhaWx1cmUsIGFzIGRv
ZXMgcGFzc2luZyBhbiBlbXB0eSBzdHJpbmcuCiAvLyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5
IGJlIDAgdG8gY2hlY2sgaWYgdGhlIHN0cmluZyBjYW4gYmUgcGFyc2VkIHdpdGhvdXQgZ2V0dGlu
ZyB0aGUgcmVzdWx0LgotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3Qg
U3RyaW5nJik7Ci1EZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKLWRvdWJsZSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CitEZWNpbWFsIHBh
cnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShTdHJpbmdWaWV3KTsKK0RlY2ltYWwgcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFs
dWUpOworZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcpOworZG91
YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcsIGRvdWJsZSBmYWxsYmFj
a1ZhbHVlKTsKIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKIGVudW0gY2xhc3MgSFRNTEludGVn
ZXJQYXJzaW5nRXJyb3IgeyBOZWdhdGl2ZU92ZXJmbG93LCBQb3NpdGl2ZU92ZXJmbG93LCBPdGhl
ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCAxNTViYzdjMTY2ZjQ4YWVhZDJiZGIxNTNmNGIyOTFlOTFjMDBh
ZjZkLi41ZDVhMzc2ZmJkNDBjODBmMThjN2RkZTQ5OGZjNTNjZGYzZjJkOTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtNzU4LDcgKzc1OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0KFByb3RvY29sOjpECiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogICAgIH0KIAotICAgIGlmICgh
Zm91bmRPcmlnaW5hbEF0dHJpYnV0ZSAmJiAhbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5
KCkpIHsKKyAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgJiYgbmFtZS5maW5kKGlzTm90
U3BhY2VPck5ld2xpbmUpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGlmICghbV9kb21FZGl0b3It
PnJlbW92ZUF0dHJpYnV0ZSgqZWxlbWVudCwgbmFtZSwgZXJyb3JTdHJpbmcpKQogICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJ
dGVtc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAppbmRleCA1NmEwNzgyYzZlYzBjNDM2OWJl
MWNmYmRhNzQ5YjMyNDJmYTM3YzQzLi40YThkMWZhNzI0ZjlhOTE5YmNhMzJiNDg4NDE4YWFmZWI4
MzlmMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKQEAg
LTE2MywxMiArMTYzLDEyIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VOb25QcmVzZXJ2ZWROZXdMaW5l
Q2hhcmFjdGVyc0FuZEFwcGVuZChjb25zdCBJbmxpbmVUZXh0Qm94JiBpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICBpZiAobm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbiA8
IHN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5hcHBl
bmQodGV4dENvbnRlbnQuc3Vic3RyaW5nKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24s
IHN0YXJ0UG9zaXRpb24gLSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBwYXJhZ3JhcGhDb250ZW50QnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyh0ZXh0Q29u
dGVudCkuc3Vic3RyaW5nKG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24sIHN0YXJ0UG9z
aXRpb24gLSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CiAgICAgICAgIHBhcmFn
cmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChzcGFjZSk7CiAgICAgICAgIG5vblJlcGxhY2VkQ29u
dGVudFN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICB9CiAgICAgaWYgKG5vblJlcGxhY2Vk
Q29udGVudFN0YXJ0UG9zaXRpb24gPCBjb250ZW50TGVuZ3RoKQotICAgICAgICBwYXJhZ3JhcGhD
b250ZW50QnVpbGRlci5hcHBlbmQodGV4dENvbnRlbnQucmlnaHQoY29udGVudExlbmd0aCAtIG5v
blJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgcGFyYWdyYXBoQ29udGVu
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLnJpZ2h0KGNvbnRlbnRMZW5n
dGggLSBub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uKSk7CiB9CiAKIHN0cnVjdCBCaWRp
Q29udGV4dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMjMxZDM2YmMwYTM3
MWQ0OTY1NTdjYmI1MmQwZTczMTgxMDhjNjBiOC4uNzZkMmFiNDY0ZGY3OWVmMTc4NmNjNmQ2MTBm
YmY1ZjJjODdkZjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtMjE5LDEw
ICsyMTksMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRUZXh0Rm9yU3VidHJlZShjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgdW5zaWduZWQmIGNoYXJhY3QKICAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0Pihkb3duY2FzdDxSZW5kZXJFbGVtZW50Pihy
ZW5kZXJlcikpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpIHsKICAgICAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGQpLnRleHQoKTsK
LSAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAg
YXV0byBsZW4gPSBzdGQ6Om1pbihjaGFyYWN0ZXJzTGVmdCwgdGV4dC5sZW5ndGgoKSk7Ci0gICAg
ICAgICAgICBzdHJlYW0gPDwgdGV4dC5sZWZ0KGxlbik7Ci0gICAgICAgICAgICBjaGFyYWN0ZXJz
TGVmdCAtPSBsZW47CisgICAgICAgICAgICBhdXRvIHRleHRWaWV3ID0gU3RyaW5nVmlldyh0ZXh0
KS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gc3RkOjptaW4o
Y2hhcmFjdGVyc0xlZnQsIHRleHRWaWV3Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHN0cmVhbSA8
PCB0ZXh0Vmlldy5sZWZ0KGxlbmd0aCk7CisgICAgICAgICAgICBjaGFyYWN0ZXJzTGVmdCAtPSBs
ZW5ndGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBwcmludFRl
eHRGb3JTdWJ0cmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSwgY2hhcmFjdGVyc0xl
ZnQsIHN0cmVhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCA0MGQw
MjA1MzhjMzkyYTQ1Mzk1NWE5MmU0YzYxZGFkMDM4MzA5ZWI0Li42YWJmNjVmYzdmZjZlZWVkMTEz
YzgxZmZiYTdiNTFhNDdiYWRkODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlXaGl0ZVNwYWNl
VGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgICAgIGlmICghaXM8UmVuZGVyVGV4
dD4obm9kZS5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgcmV0dXJuIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZSkuc3RyaXBXaGl0
ZVNwYWNlKCkuaXNFbXB0eSgpOworICAgIHJldHVybiBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UocmFuZ2UpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0gbm90Rm91bmQ7CiB9CiAK
IHN0YXRpYyBib29sIGluaXRpYWxpemVJbmRpY2F0b3IoVGV4dEluZGljYXRvckRhdGEmIGRhdGEs
IEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBGbG9hdFNpemUgbWFyZ2lu
LCBib29sIGluZGljYXRlc0N1cnJlbnRTZWxlY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2lt
YWwuY3BwCmluZGV4IDllYzAxNzJhMjFhOThkYzgwN2E0YzE2Nzc1N2U3MzVhYmUyMzU4NDguLjZk
YzU0ODIyZmVjNmU4ZDQyMjdhMTlhYWE5MGZjZTczMzUzODFiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgRGVjaW1hbCBEZWNpbWFsOjpmcm9t
RG91YmxlKGRvdWJsZSBkb3VibGVWYWx1ZSkKICAgICByZXR1cm4gbmFuKCk7CiB9CiAKLURlY2lt
YWwgRGVjaW1hbDo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikKK0RlY2ltYWwgRGVjaW1h
bDo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cikKIHsKICAgICBpbnQgZXhwb25lbnQgPSAwOwog
ICAgIFNpZ24gZXhwb25lbnRTaWduID0gUG9zaXRpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EZWNpbWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFs
LmgKaW5kZXggNTljZGIxOGQ4MjFjNmJjNjFhYjk4YmU1OGVhODdhNTBkZjBiNTMxOS4uNWE1NDAz
NGQzMjMyYjZmNmMwM2MzZmNmODNlMWFjZTg5ZTRkNTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAvLyAgZXhwb25lbnQtbWFy
a2VyIDo6PSAnZScgfCAnRScKICAgICAvLyAgZGlnaXQgOjo9ICcwJyB8ICcxJyB8IC4uLiB8ICc5
JwogICAgIC8vIE5vdGU6IGZyb21TdHJpbmcgZG9lc24ndCBzdXBwb3J0ICJpbmZpbml0eSIgYW5k
ICJuYW4iLgotICAgIHN0YXRpYyBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIERlY2ltYWwgZnJvbVN0cmluZyhTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgRGVj
aW1hbCBpbmZpbml0eShTaWduKTsKICAgICBzdGF0aWMgRGVjaW1hbCBuYW4oKTsKICAgICBzdGF0
aWMgRGVjaW1hbCB6ZXJvKFNpZ24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IGM3NDMxODk5MjhiM2Y2YTliYjM5ZjZm
ZjRmYzA5OTNmZTA5MGNiNTQuLjUwMmZjM2M3YjlmZmIxOTc4ZWNhYmIyODY1Yzk3MTI5NmE1YTZk
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFs
aWRhdGlvbi5jcHAKQEAgLTIxMywxMiArMjEzLDEyIEBAIGlubGluZSBTdHJpbmdWaWV3IHRyaW1U
b05leHRTZXBhcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5sZWZ0
KHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IpKTsKIH0KIAotc3RhdGljIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyKQorc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nVmlldywgU3RyaW5nVmll
dz4+IHBhcnNlQ2FjaGVIZWFkZXIoU3RyaW5nVmlldyBzYWZlSGVhZGVyKQogewotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiByZXN1bHQ7CisgICAgQVNTRVJUKHNhZmVIZWFk
ZXIuZmluZChpc0NvbnRyb2xDaGFyYWN0ZXJPclNwYWNlKSA9PSBub3RGb3VuZCk7CisKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+PiByZXN1bHQ7CiAKLSAgICBT
dHJpbmcgc2FmZUhlYWRlclN0cmluZyA9IGhlYWRlci5yZW1vdmVDaGFyYWN0ZXJzKGlzQ29udHJv
bENoYXJhY3Rlck9yU3BhY2UpOwotICAgIFN0cmluZ1ZpZXcgc2FmZUhlYWRlciA9IHNhZmVIZWFk
ZXJTdHJpbmc7CiAgICAgdW5zaWduZWQgbWF4ID0gc2FmZUhlYWRlci5sZW5ndGgoKTsKICAgICB1
bnNpZ25lZCBwb3MgPSAwOwogICAgIHdoaWxlIChwb3MgPCBtYXgpIHsKQEAgLTIyNiwzMCArMjI2
LDMwIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyc2VDYWNo
ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgc2l6ZV90IG5leHRFcXVhbFNp
Z25Qb3NpdGlvbiA9IHNhZmVIZWFkZXIuZmluZCgnPScsIHBvcyk7CiAgICAgICAgIGlmIChuZXh0
RXF1YWxTaWduUG9zaXRpb24gPT0gbm90Rm91bmQgJiYgbmV4dENvbW1hUG9zaXRpb24gPT0gbm90
Rm91bmQpIHsKICAgICAgICAgICAgIC8vIEFkZCBsYXN0IGRpcmVjdGl2ZSB0byBtYXAgd2l0aCBl
bXB0eSBzdHJpbmcgYXMgdmFsdWUKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyB0cmltVG9O
ZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbWF4IC0gcG9zKSkudG9TdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyB0cmlt
VG9OZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbWF4IC0gcG9zKSksIGVt
cHR5U3RyaW5nKCkgfSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAg
ICAgICAgIGlmIChuZXh0Q29tbWFQb3NpdGlvbiAhPSBub3RGb3VuZCAmJiAobmV4dENvbW1hUG9z
aXRpb24gPCBuZXh0RXF1YWxTaWduUG9zaXRpb24gfHwgbmV4dEVxdWFsU2lnblBvc2l0aW9uID09
IG5vdEZvdW5kKSkgewogICAgICAgICAgICAgLy8gQWRkIGRpcmVjdGl2ZSB0byBtYXAgd2l0aCBl
bXB0eSBzdHJpbmcgYXMgdmFsdWUKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyB0cmltVG9O
ZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dENvbW1hUG9zaXRpb24g
LSBwb3MpKS50b1N0cmluZygpLCBlbXB0eVN0cmluZygpIH0pOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh7IHRyaW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBu
ZXh0Q29tbWFQb3NpdGlvbiAtIHBvcykpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICAgICAg
cG9zICs9IG5leHRDb21tYVBvc2l0aW9uIC0gcG9zICsgMTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIC8vIEdldCBkaXJlY3RpdmUgbmFtZSwgcGFyc2UgcmlnaHQg
aGFuZCBzaWRlIG9mIGVxdWFsIHNpZ24sIHRoZW4gYWRkIHRvIG1hcAotICAgICAgICBTdHJpbmcg
ZGlyZWN0aXZlID0gdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3Ms
IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiAtIHBvcykpLnRvU3RyaW5nKCk7CisgICAgICAgIFN0cmlu
Z1ZpZXcgZGlyZWN0aXZlID0gdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmlu
Zyhwb3MsIG5leHRFcXVhbFNpZ25Qb3NpdGlvbiAtIHBvcykpOwogICAgICAgICBwb3MgKz0gbmV4
dEVxdWFsU2lnblBvc2l0aW9uIC0gcG9zICsgMTsKIAogICAgICAgICBTdHJpbmdWaWV3IHZhbHVl
ID0gc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBtYXggLSBwb3MpOwotICAgICAgICBpZiAodmFs
dWVbMF0gPT0gJyInKSB7CisgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCciJykpIHsKICAg
ICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBhIHF1b3RlZCBzdHJpbmcKICAgICAgICAgICAgIHNp
emVfdCBuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiA9IHZhbHVlLmZpbmQoJyInLCAxKTsKICAgICAg
ICAgICAgIGlmIChuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiA9PSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgICAgIC8vIFBhcnNlIGVycm9yOyBqdXN0IHVzZSB0aGUgcmVzdCBhcyB0aGUgdmFsdWUK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2Vw
YXJhdG9yKHZhbHVlLnN1YnN0cmluZygxKSkudG9TdHJpbmcoKSB9KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLnN1
YnN0cmluZygxKSkgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBhcyBhIHF1b3RlZCBzdHJpbmcg
d2l0aG91dCBxdW90ZXMKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHZh
bHVlLnN1YnN0cmluZygxLCBuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiAtIDEpLnRvU3RyaW5nKCkg
fSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB2YWx1ZS5zdWJzdHJp
bmcoMSwgbmV4dERvdWJsZVF1b3RlUG9zaXRpb24gLSAxKSB9KTsKICAgICAgICAgICAgIHBvcyAr
PSAoc2FmZUhlYWRlci5maW5kKCciJywgcG9zKSAtIHBvcykgKyBuZXh0RG91YmxlUXVvdGVQb3Np
dGlvbiArIDE7CiAgICAgICAgICAgICAvLyBNb3ZlIHBhc3QgbmV4dCBjb21tYSwgaWYgdGhlcmUg
aXMgb25lCiAgICAgICAgICAgICBzaXplX3QgbmV4dENvbW1hUG9zaXRpb24yID0gc2FmZUhlYWRl
ci5maW5kKCcsJywgcG9zKTsKQEAgLTI2MiwxMSArMjYyLDExIEBAIHN0YXRpYyBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcikKICAgICAgICAgc2l6ZV90IG5leHRDb21tYVBvc2l0aW9uMiA9IHZhbHVlLmZpbmQoJywn
KTsKICAgICAgICAgaWYgKG5leHRDb21tYVBvc2l0aW9uMiA9PSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgLy8gVGhlIHJlc3QgaXMgdGhlIHZhbHVlOyBubyBjaGFuZ2UgdG8gdmFsdWUgbmVlZGVk
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJh
dG9yKHZhbHVlKS50b1N0cmluZygpIH0pOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGRp
cmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZSkgfSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBkZWxpbWl0ZWQg
YnkgdGhlIG5leHQgY29tbWEKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdHJp
bVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5sZWZ0KG5leHRDb21tYVBvc2l0aW9uMikpLnRvU3RyaW5n
KCkgfSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBh
cmF0b3IodmFsdWUubGVmdChuZXh0Q29tbWFQb3NpdGlvbjIpKSB9KTsKICAgICAgICAgcG9zICs9
IChzYWZlSGVhZGVyLmZpbmQoJywnLCBwb3MpIC0gcG9zKSArIDE7CiAgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CkBAIC0yNzgsNyArMjc4LDggQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJz
ZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAog
ICAgIFN0cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1l
OjpDYWNoZUNvbnRyb2wpOwogICAgIGlmICghY2FjaGVDb250cm9sVmFsdWUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8gZGlyZWN0aXZlcyA9IHBhcnNlQ2FjaGVIZWFkZXIoY2FjaGVDb250cm9s
VmFsdWUpOworICAgICAgICBhdXRvIHNhZmVIZWFkZXJTdHJpbmcgPSBjYWNoZUNvbnRyb2xWYWx1
ZS5yZW1vdmVDaGFyYWN0ZXJzKGlzQ29udHJvbENoYXJhY3Rlck9yU3BhY2UpOworICAgICAgICBh
dXRvIGRpcmVjdGl2ZXMgPSBwYXJzZUNhY2hlSGVhZGVyKHNhZmVIZWFkZXJTdHJpbmcpOwogCiAg
ICAgICAgIHNpemVfdCBkaXJlY3RpdmVzU2l6ZSA9IGRpcmVjdGl2ZXMuc2l6ZSgpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpcmVjdGl2ZXNTaXplOyArK2kpIHsKQEAgLTI5Nyw3
ICsyOTgsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYm9vbCBvazsKLSAg
ICAgICAgICAgICAgICBkb3VibGUgbWF4QWdlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3Vi
bGUoJm9rKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWdlID0gZGlyZWN0aXZlc1tpXS5z
ZWNvbmQudG9Eb3VibGUob2spOwogICAgICAgICAgICAgICAgIGlmIChvaykKICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1heEFnZSA9IFNlY29uZHMgeyBtYXhBZ2UgfTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aXZlc1tpXS5m
aXJzdCwgIm1heC1zdGFsZSIpKSB7CkBAIC0zMTIsNyArMzEzLDcgQEAgQ2FjaGVDb250cm9sRGly
ZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgZG91YmxlIG1heFN0
YWxlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUoJm9rKTsKKyAgICAgICAgICAgICAg
ICBkb3VibGUgbWF4U3RhbGUgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZShvayk7CiAg
ICAgICAgICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4U3Rh
bGUgPSBTZWNvbmRzIHsgbWF4U3RhbGUgfTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgImltbXV0YWJsZSIp
KSB7CkBAIC0zMjMsNyArMzI0LDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hl
Q29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgZG91YmxlIHN0YWxlV2hpbGVSZXZhbGlkYXRlID0g
ZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUoJm9rKTsKKyAgICAgICAgICAgICAgICBkb3Vi
bGUgc3RhbGVXaGlsZVJldmFsaWRhdGUgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZShv
ayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
c3RhbGVXaGlsZVJldmFsaWRhdGUgPSBTZWNvbmRzIHsgc3RhbGVXaGlsZVJldmFsaWRhdGUgfTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggOWQ1MDNiNWE5Mjk5MmU3ZWUxYWYzMGYwOWUxZGYxOGE1Njc5Yjgy
MS4uMjY1NTgxMjkzY2Q5YTRjOGNiMmIxNjVmMDljNDMwNTM0ZjQ4NmQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMzMSw3ICsz
MzEsNyBAQCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAvLyB0aGF0IGFyaXNlcyBmcm9tIHF1b3RlZC1zdHJpbmcsIG5vciBkb2VzIHRo
aXMgZnVuY3Rpb24gcHJvcGVybHkgdW5xdW90ZQogLy8gYXR0cmlidXRlIHZhbHVlcy4gRnVydGhl
ciB0aGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gcHJvY2VzcyBwYXJhbWV0ZXIgbmFtZXMKIC8vIGlu
IGEgY2FzZS1zZW5zaXRpdmUgbWFubmVyLiAoVGhlcmUgYXJlIGxpa2VseSBvdGhlciBidWdzIGFz
IHdlbGwuKQotU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oU3RyaW5n
VmlldyB2YWx1ZSkKK1N0cmluZ1ZpZXcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIGZvciAoYXV0byBrZXlWYWx1ZVBhaXIgOiB2YWx1
ZS5zcGxpdCgnOycpKSB7CiAgICAgICAgIHNpemVfdCB2YWx1ZVN0YXJ0UG9zID0ga2V5VmFsdWVQ
YWlyLmZpbmQoJz0nKTsKQEAgLTM0OSw3ICszNDksNyBAQCBTdHJpbmcgZmlsZW5hbWVGcm9tSFRU
UENvbnRlbnREaXNwb3NpdGlvbihTdHJpbmdWaWV3IHZhbHVlKQogICAgICAgICBpZiAodmFsdWUu
bGVuZ3RoKCkgPiAxICYmIHZhbHVlWzBdID09ICdcIicpCiAgICAgICAgICAgICB2YWx1ZSA9IHZh
bHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgoKSAtIDIpOwogCi0gICAgICAgIHJldHVybiB2
YWx1ZS50b1N0cmluZygpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCiAgICAgcmV0
dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oCmluZGV4IGQ1Y2U3ODI5YjVhZDE2MjNmNjk3MTM4ZjcyOTY1OGRjMGQzMzczZmYuLmFl
MjQ5ODVmM2U4MGYwNDliZWUxYmEwYWE3NzU4NTYyZmE4NTQ2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTc5LDcgKzc5LDcgQEAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5n
Jik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRI
VFRQVG9rZW4oU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBE
YXRlKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpb24oU3RyaW5nVmlldyk7CitTdHJpbmdWaWV3IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlz
cG9zaXRpb24oU3RyaW5nVmlldyk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZ1ZpZXcgZXh0cmFjdENoYXJz
ZXRGcm9tTWVkaWFUeXBlKFN0cmluZ1ZpZXcpOwogWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBh
cnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWls
dXJlUmVhc29uLCB1bnNpZ25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAppbmRl
eCAxYTliODNlZWY1NzcyMWZmYzVlMTEwYTA4MzRiYjAzMTA2NzU1ZTEzLi5jZmVmZTFlYjI1Y2Rm
OWNmZjI4ZmIwZTUzZDkyMmZkNTg3ZjdiMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIEtleVZh
bHVlTWFwIHJldHJpZXZlS2V5VmFsdWVQYWlycyhXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciYgYnVmZmUKICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IGEga2V5IHZhbHVlIHBhaXIs
IGlnbm9yZS4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGtleSA9
IFN0cmluZ1ZpZXcobGluZSkubGVmdChzZW1pY29sb25JbmRleCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAga2V5ID0gU3RyaW5nVmlldyhsaW5l
KS5sZWZ0KHNlbWljb2xvbkluZGV4KS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogICAgICAgICB2YWx1ZS5hcHBlbmQoU3RyaW5nVmlldyhsaW5lKS5zdWJzdHJp
bmcoc2VtaWNvbG9uSW5kZXggKyAxKSk7CiAgICAgfQogICAgIC8vIFN0b3JlIHRoZSBsYXN0IHBy
b3BlcnR5IGlmIHRoZXJlIGlzIG9uZS4KQEAgLTEyMCw5ICsxMjAsOSBAQCBSZWZQdHI8TUlNRUhl
YWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gbWltZUhlYWRlcjsKIH0KIAotTUlNRUhlYWRlcjo6RW5jb2Rpbmcg
TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhjb25zdCBTdHJpbmcmIHRl
eHQpCitNSU1FSGVhZGVyOjpFbmNvZGluZyBNSU1FSGVhZGVyOjpwYXJzZUNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKFN0cmluZ1ZpZXcgdGV4dCkKIHsKLSAgICBTdHJpbmcgZW5jb2RpbmcgPSB0ZXh0
LnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGF1dG8gZW5jb2RpbmcgPSB0ZXh0LnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmNvZGluZywg
ImJhc2U2NCIpKQogICAgICAgICByZXR1cm4gQmFzZTY0OwogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShlbmNvZGluZywgInF1b3RlZC1wcmludGFibGUiKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmgKaW5kZXggMDA4YWVjMmUwN2Uz
Njk4NzcwZjBjMTMyZjU4NjJhMzRhNWEyY2IxYy4uZGExMDY5YTRlMTRiZDhmYjU3OTAyOWNiMjNl
MTMyM2FhMmM4YTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1F
SGVhZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNSU1FSGVh
ZGVyKCk7CiAKLSAgICBzdGF0aWMgRW5jb2RpbmcgcGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRW5jb2RpbmcgcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhTdHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAg
IFN0cmluZyBtX2NoYXJzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCmluZGV4IDZiOTE2NTkxNGMxZmMxMjMyMzg5N2Nh
NTJkNzM3MmQ3NjYxMzUxMjguLmZhZmEzMjExZjEzMzVlMzY2OWQ0Zjc3MjhiYzNjMzRkZGMwNjI2
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFR5cGUuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBQYXJzZWRDb250ZW50VHlw
ZTo6c2V0Q29udGVudFR5cGUoU3RyaW5nJiYgY29udGVudFJhbmdlLCBNb2RlIG1vZGUpCiB7CiAg
ICAgbV9taW1lVHlwZSA9IFdURk1vdmUoY29udGVudFJhbmdlKTsKICAgICBpZiAobW9kZSA9PSBN
b2RlOjpNaW1lU25pZmYpCi0gICAgICAgIG1fbWltZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUVFBTcGFjZXMobV9taW1lVHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAg
ICAgICAgbV9taW1lVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhTdHJp
bmdWaWV3KG1fbWltZVR5cGUpKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGVsc2UK
ICAgICAgICAgbV9taW1lVHlwZSA9IG1fbWltZVR5cGUuc3RyaXBXaGl0ZVNwYWNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCmluZGV4IGQwNjZlYTQ3MmM1NGU2NTIwNzlkYmE0MThhYjI0N2E4M2ZhODIy
NWIuLjc4Mzg1NmEzMmY2NTgxNDQ3MTg4YjUwNTQ0ZDEwMDE2NzYxMjJkOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNB
dHRhY2htZW50KCkgY29uc3QKICAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwogCiAgICAgYXV0byB2
YWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNw
b3NpdGlvbik7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVl
LmxlZnQodmFsdWUuZmluZCgnOycpKS5zdHJpcFdoaXRlU3BhY2UoKSwgImF0dGFjaG1lbnQiKTsK
KyAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyh2YWx1
ZSkubGVmdCh2YWx1ZS5maW5kKCc7JykpLnN0cmlwV2hpdGVTcGFjZSgpLCAiYXR0YWNobWVudCIp
OwogfQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnRXaXRoRmlsZW5h
bWUoKSBjb25zdApAQCAtNzk2LDggKzc5Niw3IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpIGNvbnN0CiAgICAgaWYgKCFlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb250ZW50RGlzcG9zaXRpb25WaWV3LmxlZnQoY29udGVudERpc3Bv
c2l0aW9uVmlldy5maW5kKCc7JykpLnN0cmlwV2hpdGVTcGFjZSgpLCAiYXR0YWNobWVudCIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBmaWxlbmFtZUZy
b21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnRlbnREaXNwb3NpdGlvblZpZXcpOwotICAgIHJl
dHVybiAhZmlsZW5hbWUuaXNOdWxsKCk7CisgICAgcmV0dXJuICFmaWxlbmFtZUZyb21IVFRQQ29u
dGVudERpc3Bvc2l0aW9uKGNvbnRlbnREaXNwb3NpdGlvblZpZXcpLmlzTnVsbCgpOwogfQogCiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6U291cmNlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzb3VyY2Uo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggMjkzMWQwNWQ0YzI5YTNkNjk3
MGM5ZjdhZDdmYzBmOTZkYzc1MjA1Yi4uZjZjMTA3MmNmZTJlYzYyYWFmN2RjMGUxMjdlZDQ3Nzk4
Mjg1ZTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZv
JiYgY2VydGlmaWNhdGVJbmZvKQogCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1T
dWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBD
b250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50
RGlzcG9zaXRpb24pKTsKKyAgICByZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3Np
dGlvbihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbikp
LnRvU3RyaW5nKCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6c2hvdWxkUmVkaXJlY3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5k
ZXggNTVjMzRjOGRiM2Q4N2I0Y2Q0YjQ1NTk4ODQ0ZjA1ZGExMjNlZGU3OS4uYTc4NzNhMTUzZjYy
ZTczYWVjZTkyMTRkZGYxYWU1MWQ1OTlmODY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBTUUxp
dGVEYXRhYmFzZTo6c2V0QnVzeUhhbmRsZXIoaW50KCpoYW5kbGVyKSh2b2lkKiwgaW50KSkKICAg
ICAgICAgTE9HKFNRTERhdGFiYXNlLCAiQnVzeSBoYW5kbGVyIHNldCBvbiBub24tb3BlbiBkYXRh
YmFzZSIpOwogfQogCi1ib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3coY29u
c3QgU3RyaW5nJiBxdWVyeSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xv
dyhTdHJpbmdWaWV3IHF1ZXJ5KQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudFNsb3cocXVlcnkpOwogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5leGVj
dXRlQ29tbWFuZCgpOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNs
ZWFyQWxsVGFibGVzKCkKICAgICB3aGlsZSAoc3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JP
VykKICAgICAgICAgdGFibGVzLmFwcGVuZChzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAg
IGZvciAoYXV0byYgdGFibGUgOiB0YWJsZXMpIHsKLSAgICAgICAgaWYgKCFleGVjdXRlQ29tbWFu
ZFNsb3coIkRST1AgVEFCTEUgIiArIHRhYmxlKSkKKyAgICAgICAgaWYgKCFleGVjdXRlQ29tbWFu
ZFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSAiLCB0YWJsZSkpKQogICAgICAgICAgICAgTE9H
KFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCB0YWJsZS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgfQogfQpAQCAtNzIzLDcgKzcyMyw3IEBAIHN0YXRpYyBFeHBlY3RlZDxzcWxp
dGUzX3N0bXQqLCBpbnQ+IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoU1FMaXRlRGF0YWJh
c2UmCiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KIAotRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50
LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcm
IHF1ZXJ5U3RyaW5nKQorRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFi
YXNlOjpwcmVwYXJlU3RhdGVtZW50U2xvdyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAg
IENTdHJpbmcgcXVlcnkgPSBxdWVyeVN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKS51dGY4KCk7CiAg
ICAgYXV0byBzcWxTdGF0ZW1lbnQgPSBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KCp0aGlz
LCBxdWVyeS5kYXRhKCksIHF1ZXJ5Lmxlbmd0aCgpKTsKQEAgLTc0NCw3ICs3NDQsNyBAQCBFeHBl
Y3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1l
bnQoQVNDSUlMaXRlcmFsIHF1ZQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQgeyAqdGhpcywg
c3FsU3RhdGVtZW50LnZhbHVlKCkgfTsKIH0KIAotRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0
YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhj
b25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQorRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRl
bWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhTdHJp
bmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAgIENTdHJpbmcgcXVlcnkgPSBxdWVyeVN0cmluZy5z
dHJpcFdoaXRlU3BhY2UoKS51dGY4KCk7CiAgICAgYXV0byBzcWxTdGF0ZW1lbnQgPSBjb25zdHJ1
Y3RBbmRQcmVwYXJlU3RhdGVtZW50KCp0aGlzLCBxdWVyeS5kYXRhKCksIHF1ZXJ5Lmxlbmd0aCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXgg
OTE2MDEzNDgxNzU5MjEzYWE1MmQxOThhNDdlMmU1YzRkNmE5ODczNC4uODZmYzA0NTg4YmQ4ZTM4
NWZlNDg2MjU0MTVjNTRlOTc4NzZkZDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9kYjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmRTbG93KGNv
bnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmRTbG93
KFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoQVND
SUlMaXRlcmFsKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKFN0
cmluZ1ZpZXcpOwpAQCAtNzUsOSArNzUsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCB0cmFu
c2FjdGlvbkluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
czsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+
IHByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOworICAgIFdFQkNPUkVf
RVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50U2xv
dyhTdHJpbmdWaWV3IHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVT
dGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwotICAg
IFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+
IHByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVw
YXJlSGVhcFN0YXRlbWVudFNsb3coU3RyaW5nVmlldyBxdWVyeSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBT
dGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKIAogICAgIC8vIEFib3J0cyB0aGUgY3VycmVu
dCBkYXRhYmFzZSBvcGVyYXRpb24uIFRoaXMgaXMgdGhyZWFkIHNhZmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggNTRkMmViNzI4MmMzOTQ4NzU2YmQ4NTJhYTk2
YmUzMTNiMTc0OTdkNy4uMGE2YzA5N2YzZDVjZGI3NTYwOTNkNDFmYWI3YjZmYWZhNWYyNGI3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMTE1LDkgKzExNSw5
IEBAIGlubGluZSBTZXNzaW9uRmVhdHVyZSBzZXNzaW9uRmVhdHVyZUZyb21SZWZlcmVuY2VTcGFj
ZVR5cGUoUmVmZXJlbmNlU3BhY2VUeXBlIHJlCiAgICAgcmV0dXJuIFNlc3Npb25GZWF0dXJlOjpS
ZWZlcmVuY2VTcGFjZVR5cGVWaWV3ZXI7CiB9CiAKLWlubGluZSBzdGQ6Om9wdGlvbmFsPFNlc3Np
b25GZWF0dXJlPiBwYXJzZVNlc3Npb25GZWF0dXJlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHN0
cmluZykKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNlc3Npb25GZWF0dXJlPiBwYXJzZVNlc3Npb25G
ZWF0dXJlRGVzY3JpcHRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBTdHJpbmcgZmVhdHVy
ZSA9IHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwor
ICAgIGF1dG8gZmVhdHVyZSA9IHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpOwogCiAgICAgaWYgKGZlYXR1cmUgPT0gInZpZXdlciJfcykKICAgICAgICAg
cmV0dXJuIFNlc3Npb25GZWF0dXJlOjpSZWZlcmVuY2VTcGFjZVR5cGVWaWV3ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXggYzY5MmI0MDc0MmMzNzdm
OTlmMGM4OTRmYjYyNTdiNjJjNDNmNDNmMC4uNTMyMTQ5N2FkMTBiNzAzZjM5MTJiY2IwZmY2ZDE2
MGUyMDQ2MTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cApAQCAtNTYsMTEgKzU2LDExIEBAIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiB7CiB9CiAKLXN0
YXRpYyB2b2lkIHBhcnNlS2V5VGltZXMoY29uc3QgU3RyaW5nJiBwYXJzZSwgVmVjdG9yPGZsb2F0
PiYgcmVzdWx0LCBib29sIHZlcmlmeU9yZGVyKQorc3RhdGljIHZvaWQgcGFyc2VLZXlUaW1lcyhT
dHJpbmdWaWV3IHBhcnNlLCBWZWN0b3I8ZmxvYXQ+JiByZXN1bHQsIGJvb2wgdmVyaWZ5T3JkZXIp
CiB7CiAgICAgcmVzdWx0LmNsZWFyKCk7CiAgICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKLSAgICBm
b3IgKFN0cmluZ1ZpZXcgdGltZVN0cmluZyA6IFN0cmluZ1ZpZXcocGFyc2UpLnNwbGl0KCc7Jykp
IHsKKyAgICBmb3IgKGF1dG8gdGltZVN0cmluZyA6IHBhcnNlLnNwbGl0KCc7JykpIHsKICAgICAg
ICAgYm9vbCBvazsKICAgICAgICAgZmxvYXQgdGltZSA9IHRpbWVTdHJpbmcudG9GbG9hdChvayk7
CiAgICAgICAgIGlmICghb2sgfHwgdGltZSA8IDAgfHwgdGltZSA+IDEpCkBAIC0xNTMsOSArMTUz
LDEwIEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAgICAgIC8vIFBlciB0aGUgU01JTCBz
cGVjaWZpY2F0aW9uLCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZSBzcGFjZSwKICAgICAgICAg
Ly8gYW5kIHdoaXRlIHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgc2VtaWNvbG9uIHNlcGFyYXRvcnMs
IGlzIGFsbG93ZWQgYW5kIHdpbGwgYmUgaWdub3JlZC4KICAgICAgICAgLy8gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHMTEvYW5pbWF0ZS5odG1sI1ZhbHVlc0F0dHJpYnV0ZQotICAgICAgICBtX3Zh
bHVlcyA9IHZhbHVlLnN0cmluZygpLnNwbGl0KCc7Jyk7Ci0gICAgICAgIGZvciAoYXV0byYgdmFs
dWUgOiBtX3ZhbHVlcykKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgICAgIG1fdmFsdWVzLmNsZWFyKCk7CisgICAgICAgIHZhbHVlLnN0cmluZygpLnNw
bGl0KCc7JywgW3RoaXNdKFN0cmluZ1ZpZXcgaW5uZXJWYWx1ZSkgeworICAgICAgICAgICAgbV92
YWx1ZXMuYXBwZW5kKGlubmVyVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCkudG9TdHJpbmcoKSk7Cisg
ICAgICAgIH0pOwogCiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbk1vZGUoKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCmluZGV4IGIyOTQwM2VmY2UyYjhlYzNhNDhjMjU0NjhmMTg5NjY3OWY4
MTU2YzUuLmVmNjRjNGQ2NTFmMTVjNzhiZTc4ZDBmNTk3ZTY1M2Q5YTI5OGM4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KQEAgLTE2NCw4ICsxNjQsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRp
Y3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNpbQogICAgIEVk
aXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CiAgICAgZWRpdG9yLnNldElzR2V0dGluZ0Rp
Y3Rpb25hcnlQb3B1cEluZm8odHJ1ZSk7CiAKLSAgICAvLyBGSVhNRTogSW5lZmZpY2llbnQgdG8g
Y2FsbCBzdHJpcFdoaXRlU3BhY2UgdG8gZGV0ZWN0IHdoZXRoZXIgYSBzdHJpbmcgaGFzIGEgbm9u
LXdoaXRlc3BhY2UgY2hhcmFjdGVyIGluIGl0LgotICAgIGlmIChwbGFpblRleHQocmFuZ2UpLnN0
cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkgeworICAgIGlmIChwbGFpblRleHQocmFuZ2UpLmZp
bmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0gbm90Rm91bmQpIHsKICAgICAgICAgZWRpdG9yLnNl
dElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAwYWVlN2I2OWFmZDVi
NGE2Zjc2OGYyMDVmOGEwMjhjMThlYTc4ODhjLi4zNzI5NDZkOWY3ZDhjN2JjZGQ2NGNjNTkzN2Qz
N2MxZTQwN2RmMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC01MTcsNyAr
NTE3LDcgQEAgKyAoV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbylfZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlOihjb25zdCBXZWJDb3JlOjpTaW0KICAgICAvLyBEaWN0aW9uYXJ5IEFQSSB3
aWxsIGFjY2VwdCBhIHdoaXRlc3BhY2Utb25seSBzdHJpbmcgYW5kIGRpc3BsYXkgVUkgYXMgaWYg
aXQgd2VyZSByZWFsIHRleHQsCiAgICAgLy8gc28gYmFpbCBvdXQgZWFybHkgdG8gYXZvaWQgdGhh
dC4KICAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvIHBvcHVwSW5mbzsKLSAgICBpZiAo
cGxhaW5UZXh0KHJhbmdlKS5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
cGxhaW5UZXh0KHJhbmdlKS5maW5kKGlzTm90U3BhY2VPck5ld2xpbmUpID09IG5vdEZvdW5kKSB7
CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuIHBvcHVwSW5mbzsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="486471"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457783</attachid>
            <date>2022-04-17 16:46:36 -0700</date>
            <delta_ts>2022-04-17 22:57:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239426-20220417164635.patch</filename>
            <type>text/plain</type>
            <size>54468</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkOWFkYTNmNDY0MDk3OTM5MmY1YzEy
YmU3YjkxZjNhM2NkZTk4MTEuLmRiMDBiN2ZiODk0NmVlMjBlZjI1MGM0ZDg4ZDc2ZjMxNjQ3MzM1
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIExldmVyYWdlIFN0
cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBh
bGxvY2F0aW9ucy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6aXNOb3RTcGFjZU9yTmV3
bGluZSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjItMDQtMTYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGNvbXBsZXgg
U3RyaW5nOjppbnNlcnQoKSB3aXRoIGEgc2ltcGxpZmllZCBtYWtlU3RyaW5nQnlJbnNlcnRpbmco
KSBmcmVlIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA0ZjYyYmUwM2U1MmI1NDhjMzY2ZGI1YjBm
ZDA0ZGRiODkzNjYxMS4uODUzZWNiNTI3MjhkYTE4MDkyMjFhZjAxYjgyM2M4NGE2YzFmNWJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBs
YWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBMZXZlcmFn
ZSBTdHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBTdHJp
bmcgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VJY29ucyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJl
c3VsdEZyb21EYXRhYmFzZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnRdKToKKyAgICAgICAg
KGFwcGVuZFN0cmluZ1RvUmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKGFjY2Vzc2libGVFbGVt
ZW50c0Zvck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAocmVuZGVyZXJGb3JWaWV3KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlEYXRhOjpzZXRNZWRpYVR5cGUp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6dHJhbnNwb3NlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sbGVjdEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQ
YXJzZXI6OnBhcnNlTlBUVGltZSk6CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOgorICAgICAgICAqIGh0bWwvU3Rl
cFJhbmdlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpz
ZXRBdHRyaWJ1dGVzQXNUZXh0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpyZXBsYWNlTm9uUHJlc2VydmVkTmV3TGluZUNoYXJhY3RlcnNBbmRBcHBlbmQpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpwcmludFRleHRGb3JTdWJ0cmVlKToK
KyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGFpbnNPbmx5V2hpdGVTcGFjZVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL0RlY2ltYWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6ZnJvbVN0cmluZyk6CisgICAgICAgICogcGxh
dGZvcm0vRGVjaW1hbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lRnJv
bUhUVFBDb250ZW50RGlzcG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVLZXlWYWx1ZVBhaXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVIZWFkZXI6OnBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFR5cGU6OnNldENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjppc0F0dGFjaG1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlS2V5VGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorCiAyMDIyLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgaWQgbWF0Y2hpbmcgaW4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDdlZGEzZWQxZDY1YTY0NzQwYzRhNDNhNjc4NWM2MTI3ZWVlNDQ5Ny4uNjA2M2NjNDNj
YzI5NmY4NTdkM2QzNjM1MGFhYmEyYWZkNDVhY2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMi0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCisKKyAgICAgICAgTGV2ZXJhZ2UgU3RyaW5nVmlldyBpbiBtb3JlIHBsYWNl
cywgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgU3RyaW5nIGFsbG9jYXRpb25zLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKwogMjAyMi0wNC0x
NSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIFN0
cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMgdG8gYXZvaWQgc29tZSBTdHJpbmcgYWxsb2NhdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNDMyM2NkZmY4ODY0NWU4ZGRkMmNlNGRk
ZmU2M2ViMzBhMjRiOGJiLi5kN2Y1YThlZDI4MTM3NWU0M2I2ZTgyNGFjMjc3YjliMjhhYmMwYzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSBT
dHJpbmdWaWV3IGluIG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzk0MjYKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIExldmVyYWdlIFN0cmluZ1ZpZXcgaW4gbW9yZSBwbGFjZXMsIHRvIHJlZHVj
ZSB0aGUgbnVtYmVyIG9mIFN0cmluZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0
aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9uczp0cmFuc2l0aW9uOl0pOgorCiAyMDIyLTA0
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTGV2ZXJhZ2Ug
U3RyaW5nVmlldyBpbiBtb3JlIHBsYWNlcyB0byBhdm9pZCBzb21lIFN0cmluZyBhbGxvY2F0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNThiODU0NTZmODZjNWNhODRlZTNl
OTVlYTRiMjNiNGI0MzE0NDVjMS4uM2M0MTc0ZTUyNmFhNjY1MGRjZGU1YmY1Y2VhYzU5YTM2Y2Nk
Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC04MzUsMTMgKzgzNSw2IEBA
IGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCogb2spCiAgICAgcmV0dXJuIGNoYXJhY3Rl
cnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2spOwogfQogCi1zaXplX3QgU3Ry
aW5nSW1wbDo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWdu
ZWQgc3RhcnQpCi17Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gV1RGOjpmaW5k
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBzdGFydCk7Ci0gICAgcmV0
dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0
YXJ0KTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBDaGVjayBmb3IgbnVsbCBvciBlbXB0eSBz
dHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCA3MzUw
OGVjZWI2NTVhNWE1ZGZjM2NiNTdjMWY4YmIxODcyMjJhZmI3Li40M2M5NTQ5ZjY1MzYwMTcwZTUx
ZGEwODYxNWQ2MDhmNDU5NjkzZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDMw
LDcgKzQzMCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVu
c2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHVuc2ln
bmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25l
ZCBzdGFydCA9IDApOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChDb2RlVW5p
dE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW52b2Nh
YmxlX3Jfdjxib29sLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIFVDaGFyPj4qID0gbnVsbHB0cj4K
KyAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3Ry
aW5nVmlldyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0KTsKQEAgLTYwMCw2ICs2MDEsNyBAQCBpbnQgY29kZVBvaW50Q29tcGFy
ZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogLy8gRklYTUU6IFNob3Vs
ZCByZW5hbWUgdGhpcyB0byBtYWtlIGNsZWFyIGl0IHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlv
biBvZiB3aGl0ZXNwYWNlLgogLy8gTW9zdCBXZWJLaXQgY2FsbGVycyBkb24ndCB3YW50IHRoYXQg
d291bGQgdXNlIGlzQVNDSUlTcGFjZSBvciBpc0hUTUxTcGFjZSBpbnN0ZWFkLgogYm9vbCBpc1Nw
YWNlT3JOZXdsaW5lKFVDaGFyMzIpOworYm9vbCBpc05vdFNwYWNlT3JOZXdsaW5lKFVDaGFyMzIp
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB1bnNpZ25lZCBsZW5ndGhPZk51
bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUqKTsKIApAQCAtNzA0LDYgKzcw
NiwxNCBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCkKICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xl
bmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0
TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9v
bCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+Kj4KK3NpemVfdCBTdHJpbmdJbXBsOjpm
aW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkK
K3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVy
czgoKSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKKyAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgbWF0Y2hGdW5jdGlvbiwgc3RhcnQpOworfQor
CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3Jp
bmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBTdHJpbmdJ
bXBsKiBiKQogewogICAgIHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmRhdGEoKSwgYS5z
aXplKCksIGIpOwpAQCAtNzU0LDYgKzc2NCwxMSBAQCBpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXds
aW5lKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHJldHVybiBpc0xhdGluMShjaGFyYWN0ZXIpID8g
aXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBV
X1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKK2lubGluZSBib29sIGlzTm90U3BhY2VPck5ld2xp
bmUoVUNoYXIzMiBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuICFpc1NwYWNlT3JOZXdsaW5lKGNo
YXJhY3Rlcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB1
bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUq
IHN0cmluZykKIHsKICAgICBBU1NFUlQoc3RyaW5nKTsKQEAgLTEzMTQsMyArMTMyOSw1IEBAIGlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBQ
cmVkaWNhdGUmIGZpbmRNYXRjaCkKIHVzaW5nIFdURjo6U3RhdGljU3RyaW5nSW1wbDsKIHVzaW5n
IFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1YWw7Cit1c2luZyBXVEY6OmlzTm90U3Bh
Y2VPck5ld2xpbmU7Cit1c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCA1NGQwYmJlZmUwN2NiZDU5YTU3MzhlOTQ1NGExODFlMjFiMDFkZjNkLi4y
OWExY2Y2MzU5Nzc4YTU2ZjQ4YmQ3MzkzODQzM2RjY2M1ZWVjYjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBzaXplX3QgZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBVQ2hhcj4+KiA9
IG51bGxwdHI+CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICAgc2l6ZV90IGZp
bmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCkBA
IC02NDMsNyArNjQ0LDYgQEAgdXNpbmcgV1RGOjpudWxsU3RyaW5nOwogdXNpbmcgV1RGOjplcXVh
bDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsK
LXVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNjgzZGZjZDBjNGU1ZDgzNmEzOTg0ZjM1ZWMy
MWFkMTBmYTM2OTY0Yi4uMWRlYzhmYWQyZmJhZGI2MTdlYTFkM2RmYzg2MDA5YjNiMDJjZjZmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXkgQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6cGFyc2VEaXNwbGF5KGNvbnN0IEpTT046CiAgICAgICAgIHJldHVybiBBcHBs
aWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5OjpCcm93c2VyOwogICAgIH0KIAotICAgIHN0cmluZ1Zh
bHVlID0gc3RyaW5nVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKKyAgICBzdHJpbmdWYWx1ZSA9IFN0cmluZ1ZpZXcoc3RyaW5nVmFsdWUpLnN0cmlwV2hp
dGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKICAgICBpZiAoc3RyaW5nVmFs
dWUgPT0gImZ1bGxzY3JlZW4iKQogICAgICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdDo6
RGlzcGxheTo6RnVsbHNjcmVlbjsKQEAgLTIzMCwxOSArMjMwLDE3IEBAIFZlY3RvcjxBcHBsaWNh
dGlvbk1hbmlmZXN0OjpJY29uPiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUljb25z
KGNvbnN0IEpTCiAgICAgICAgICAgICAgICAgcHVycG9zZXMuYWRkKEFwcGxpY2F0aW9uTWFuaWZl
c3Q6Okljb246OlB1cnBvc2U6OkFueSk7CiAgICAgICAgICAgICAgICAgY3VycmVudEljb24ucHVy
cG9zZXMgPSBwdXJwb3NlczsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHVycG9zZVN0cmluZ1ZhbHVlID0gcHVycG9zZVN0cmluZ1ZhbHVlLnN0cmlwV2hpdGVTcGFjZSgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5d29yZHMgPSBwdXJwb3NlU3RyaW5nVmFsdWUuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cygiICIpOwotCi0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXl3b3JkIDoga2V5
d29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtleXdvcmQgPT0gIm1vbm9jaHJvbWUi
KQorICAgICAgICAgICAgICAgIGZvciAoYXV0byBrZXl3b3JkIDogU3RyaW5nVmlldyhwdXJwb3Nl
U3RyaW5nVmFsdWUpLnN0cmlwV2hpdGVTcGFjZSgpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
JyAnKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoa2V5d29yZCwgIm1vbm9jaHJvbWUiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
cnBvc2VzLmFkZChBcHBsaWNhdGlvbk1hbmlmZXN0OjpJY29uOjpQdXJwb3NlOjpNb25vY2hyb21l
KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5d29yZCA9PSAibWFza2FibGUiKQor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShrZXl3b3JkLCAibWFza2FibGUiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHB1cnBvc2Vz
LmFkZChBcHBsaWNhdGlvbk1hbmlmZXN0OjpJY29uOjpQdXJwb3NlOjpNYXNrYWJsZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleXdvcmQgPT0gImFueSIpCisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJh
bnkiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHB1cnBvc2VzLmFkZChBcHBsaWNhdGlvbk1h
bmlmZXN0OjpJY29uOjpQdXJwb3NlOjpBbnkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dEZXZlbG9wZXJXYXJuaW5nKG1ha2VTdHJpbmcoIlwi
Il9zLCBwdXJwb3NlU3RyaW5nVmFsdWUsICJcIiBpcyBub3QgYSB2YWxpZCBwdXJwb3NlLiJfcykp
OwogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChwdXJwb3Nlcy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCmluZGV4IDQyZDBiN2MwOTYzMDU1NGRhZGY3ZTYyNGE5Y2VlZWQxMjQ0NGQwNDMuLjQ1NWFh
Y2U4ODBkZDlmY2M4NGFhNWVlYmQ3ZGRiMzA4MzIzYzQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmVzdGFibGlzaFN0
YXRlbWVudCgpCiAgICAgcmV0dXJuIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChzcWwpOwogfQogCi1i
b29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQorYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdW
aWV3IHNxbCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiQ3JlYXRpbmcgY3Vyc29yIHdpdGggU1FM
IHF1ZXJ5OiBcIiVzXCIiLCBzcWwudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApp
bmRleCBmNzg3OTMyNjY1NjQ3MDQ4OTBkMzBjMGExZjFlMmYwMTJjY2NmMzVhLi42MDIyNjk0MGM1
NDY5MTQ5ZWVmNGEwOTA5MTJhZmYwNzE4MDZlNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC04
MSw3ICs4MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGVzdGFibGlzaFN0YXRl
bWVudCgpOwotICAgIGJvb2wgY3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3Fs
KTsKKyAgICBib29sIGNyZWF0ZVNRTGl0ZVN0YXRlbWVudChTdHJpbmdWaWV3IHNxbCk7CiAgICAg
Ym9vbCBiaW5kQXJndW1lbnRzKCk7CiAKICAgICBib29sIHJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBlNjcwMDJkMTdkY2YzNDgzMThkMTg1YjM0N2IxZTI2
MGUyYmQ5YjYzLi4wMThkYmI5OWIxOGZiNjdiOGIwZGMwOTM4ODI3ODE3YWJkYjJjNjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAt
MTEyLDI5ICsxMTIsMjkgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3Qg
Y2hhciogbWVzc2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhtZXNzYWdlLCAiICgiLCBzcWxpdGVFcnJvckNvZGUsICcgJywgc3FsaXRlRXJyb3JN
ZXNzYWdlLCAnKScpOwogfQogCi1zdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNR
TGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3N0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRi
LCBTdHJpbmdWaWV3IHF1ZXJ5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gc3Rh
dGVtZW50ID0gZGIucHJlcGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIGlmICghc3RhdGVt
ZW50KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRv
IHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUg
aW4gZGF0YWJhc2UgKCVzKSIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCB2YWx1ZSk7CiAKICAg
ICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gc3RlcCBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICgl
cykiLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHN0ZXAgc3RhdGVtZW50IHRvIHNldCB2YWx1ZSBpbiBkYXRhYmFzZSAoJXMpIiwgcXVlcnkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNR
TGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgU3RyaW5nJiByZXN1bHRTdHJp
bmcpCitzdGF0aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRiLCBTdHJpbmdWaWV3IHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKIHsKICAg
ICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1lbnRTbG93KHF1ZXJ5KTsKICAgICBp
ZiAoIXN0YXRlbWVudCkgewotICAgICAgICBMT0dfRVJST1IoIkVycm9yICglaSkgcHJlcGFyaW5n
IHN0YXRlbWVudCB0byByZWFkIHRleHQgcmVzdWx0IGZyb20gZGF0YWJhc2UgKCVzKSIsIHN0YXRl
bWVudC5lcnJvcigpLCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigi
RXJyb3IgKCVpKSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4dCByZXN1bHQgZnJvbSBk
YXRhYmFzZSAoJXMpIiwgc3RhdGVtZW50LmVycm9yKCksIHF1ZXJ5LnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGlj
IGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwg
Y29uc3QgU3RyaW5nJiBxdWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgTE9H
X0VSUk9SKCJFcnJvciAoJWkpIHJlYWRpbmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMp
IiwgcmVzdWx0LCBxdWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0VSUk9SKCJFcnJvciAo
JWkpIHJlYWRpbmcgdGV4dCByZXN1bHQgZnJvbSBkYXRhYmFzZSAoJXMpIiwgcmVzdWx0LCBxdWVy
eS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggMTk0NDliM2VlNWEwNDIzYzBlYWY3MzQ0OWE4
YmIyNjYzOTVhY2U5OS4uYWQzMzY2YjE5NzBmZTA2YmVkNmI4YTUwMTZiNzE1ZjkxYmVjZmM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTQsNyArMTEx
NCw3IEBAIC0gKEJPT0wpZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudAogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDkyCiAgICAgICAg
IHJldHVybiBzZWxmLmF4QmFja2luZ09iamVjdC0+aXNLZXlib2FyZEZvY3VzYWJsZSgpCiAgICAg
ICAgICAgICAmJiBbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XSA9PSAwCi0gICAgICAg
ICAgICAmJiBzZWxmLmF4QmFja2luZ09iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgp
LnN0cmlwV2hpdGVTcGFjZSgpLmxlbmd0aCgpID4gMDsKKyAgICAgICAgICAgICYmIHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5kZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkuZmluZChpc05vdFNwYWNl
T3JOZXdsaW5lKSAhPSBub3RGb3VuZDsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25v
cmVkOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOgogICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvTWVkaWFRdWVyeVBhcnNlci5oCmluZGV4IGU2YzE1ZWMzMDZiZjQ3ODNiOWM3ZTM1ZmE1Mzk3
NjE1MjdjOTAzYzkuLjAxY2Q1M2UzM2NjZjllMWQzOTk0MTJlYmY0MGM2YjUyM2NlZmNmYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5oCkBAIC05Myw3
ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgYWRkRXhwcmVzc2lvbihDU1NQYXJzZXJU
b2tlblJhbmdlJik7CiAgICAgICAgIGJvb2wgbGFzdEV4cHJlc3Npb25WYWxpZCgpOwogICAgICAg
ICB2b2lkIHJlbW92ZUxhc3RFeHByZXNzaW9uKCk7Ci0gICAgICAgIHZvaWQgc2V0TWVkaWFUeXBl
KGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKSB7IG1fbWVkaWFUeXBlID0gbWVkaWFUeXBlOyB9Cisg
ICAgICAgIHZvaWQgc2V0TWVkaWFUeXBlKFN0cmluZyYmIG1lZGlhVHlwZSkgeyBtX21lZGlhVHlw
ZSA9IFdURk1vdmUobWVkaWFUeXBlKTsgfQogCiAgICAgICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0
b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RvcjsgfQogICAgICAgICBW
ZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIHsgcmV0dXJuIG1fZXhw
cmVzc2lvbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3YjRiNzFhYjkzYzZl
ZDdkNTY4OGY0ODQ1YjMzNDE4NGViMmMwY2JlLi41ZGY3YTM1MDhkYTc4YjMyNTAyMjg2NjBmMDQ0
YWI0ZDQzNWM1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMjIxLDcgKzMy
MjEsOSBAQCB2b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkKICAgICBTdHJpbmcgdGV4dCA9IHBsYWlu
VGV4dCgqcmFuZ2UpOwogICAgIGlmICh0ZXh0Lmxlbmd0aCgpICE9IDIpCiAgICAgICAgIHJldHVy
bjsKLSAgICBTdHJpbmcgdHJhbnNwb3NlZCA9IHRleHQucmlnaHQoMSkgKyB0ZXh0LmxlZnQoMSk7
CisKKyAgICAvLyBGSVhNRTogVGhpcyBsaWtlbHkgd29uJ3Qgd29yayB3aXRoIGdyYXBoZW1lcy4K
KyAgICBTdHJpbmcgdHJhbnNwb3NlZCA9IG1ha2VTdHJpbmcodGV4dFsxXSwgdGV4dFswXSk7CiAK
ICAgICAvLyBTZWxlY3QgdGhlIHR3byBjaGFyYWN0ZXJzLgogICAgIGlmIChuZXdTZWxlY3Rpb24g
IT0gbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBjZWQzMjM1ZWZiODlmYWI3NGFmMjljNmQ1
ZTgyMGY0NzE4YjY2ZGFmLi4yMWUwMmVhODBiODYzYmMyMmJjNGFkOWI5OWQ0ZWE0MDEzMDkxNzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTkwNCwx
NSArMTkwNCwxNSBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAgICAgICAgICAgICAgICAgY2Fy
ZXQgPSBwb3M7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvcyAtIG1pZCA8IDApIHsKICAgICAg
ICAgICAgICAgICAvLyB0b28gZmV3IGNoYXJhY3RlcnMgdG8gbGVmdAotICAgICAgICAgICAgICAg
IHNob3cgPSB0ZXh0LmxlZnQobWF4IC0gMykgKyAiLi4uIjsKKyAgICAgICAgICAgICAgICBzaG93
ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHRleHQpLmxlZnQobWF4IC0gMyksICIuLi4iKTsKICAg
ICAgICAgICAgICAgICBjYXJldCA9IHBvczsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zIC0g
bWlkID49IDAgJiYgcG9zICsgbWlkIDw9IHRleHRMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAv
LyBlbm91Z2ggY2hhcmFjdGVycyBvbiBlYWNoIHNpZGUKLSAgICAgICAgICAgICAgICBzaG93ID0g
Ii4uLiIgKyB0ZXh0LnN1YnN0cmluZyhwb3MgLSBtaWQgKyAzLCBtYXggLSA2KSArICIuLi4iOwor
ICAgICAgICAgICAgICAgIHNob3cgPSBtYWtlU3RyaW5nKCIuLi4iLCBTdHJpbmdWaWV3KHRleHQp
LnN1YnN0cmluZyhwb3MgLSBtaWQgKyAzLCBtYXggLSA2KSwgIi4uLiIpOwogICAgICAgICAgICAg
ICAgIGNhcmV0ID0gbWlkOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyB0b28gZmV3IGNoYXJhY3RlcnMgb24gcmlnaHQKLSAgICAgICAgICAgICAgICBzaG93ID0gIi4u
LiIgKyB0ZXh0LnJpZ2h0KG1heCAtIDMpOworICAgICAgICAgICAgICAgIHNob3cgPSBtYWtlU3Ry
aW5nKCIuLi4iLCBTdHJpbmdWaWV3KHRleHQpLnJpZ2h0KG1heCAtIDMpKTsKICAgICAgICAgICAg
ICAgICBjYXJldCA9IHBvcyAtICh0ZXh0TGVuZ3RoIC0gc2hvdy5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21l
bnRVUklQYXJzZXIuY3BwCmluZGV4IDlmMzY4NjBhMjYxNDBmNDllODI0ZDMyNjdkZTNlYWY5YTEy
ZGM4OTEuLjU0MDUyZWViMDY4YmEyNDY2MTlhN2NjMDlkOWFmNjg1OTIwM2E0OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAtNTUsMTkg
KzU1LDE3IEBAIHN0YXRpYyBTdHJpbmcgY29sbGVjdERpZ2l0cyhjb25zdCBMQ2hhciogaW5wdXQs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQmIHBvc2l0CiAgICAgcmV0dXJuIGRpZ2l0cy50b1N0
cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvbGxlY3RGcmFjdGlvbihjb25zdCBMQ2hhciog
aW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQmIHBvc2l0aW9uKQorc3RhdGljIFN0cmlu
Z1ZpZXcgY29sbGVjdEZyYWN0aW9uKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCYgcG9zaXRpb24pCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBkaWdpdHM7Ci0KICAg
ICAvLyBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzI2LnR4dAogICAgIC8vIFsgIi4iICpE
SUdJVCBdCiAgICAgaWYgKGlucHV0W3Bvc2l0aW9uXSAhPSAnLicpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGRpZ2l0cy5hcHBlbmQoaW5wdXRb
cG9zaXRpb24rK10pOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gcG9zaXRpb24rKzsKICAgICB3aGls
ZSAocG9zaXRpb24gPCBsZW5ndGggJiYgaXNBU0NJSURpZ2l0KGlucHV0W3Bvc2l0aW9uXSkpCi0g
ICAgICAgIGRpZ2l0cy5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwotICAgIHJldHVybiBkaWdp
dHMudG9TdHJpbmcoKTsKKyAgICAgICAgKytwb3NpdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nVmll
dyB7IGlucHV0ICsgc3RhcnQsIHBvc2l0aW9uIC0gc3RhcnQgfTsKIH0KIAogTWVkaWFGcmFnbWVu
dFVSSVBhcnNlcjo6TWVkaWFGcmFnbWVudFVSSVBhcnNlcihjb25zdCBVUkwmIHVybCkKQEAgLTI3
MCw4ICsyNjgsOSBAQCBib29sIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlTlBUVGltZShj
b25zdCBMQ2hhciogdGltZVN0cmluZywgdW5zaWduZWQgbGVuZwogICAgIGlmICh0aW1lU3RyaW5n
W29mZnNldF0gPT0gJy4nKSB7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gbGVuZ3RoKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIFN0cmluZyBkaWdpdHMgPSBjb2xsZWN0RnJhY3Rp
b24odGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOwotICAgICAgICBmcmFjdGlvbiA9IE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShkaWdpdHMudG9Eb3VibGUoKSk7CisgICAgICAgIGF1dG8g
ZGlnaXRzID0gY29sbGVjdEZyYWN0aW9uKHRpbWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KTsKKyAg
ICAgICAgYm9vbCBpc1ZhbGlkOworICAgICAgICBmcmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShkaWdpdHMudG9Eb3VibGUoaXNWYWxpZCkpOwogICAgICAgICB0aW1lID0gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHZhbHVlMSkgKyBmcmFjdGlvbjsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMzA4LDggKzMwNywxMCBAQCBib29sIE1lZGlhRnJhZ21lbnRV
UklQYXJzZXI6OnBhcnNlTlBUVGltZShjb25zdCBMQ2hhciogdGltZVN0cmluZywgdW5zaWduZWQg
bGVuZwogICAgICAgICB2YWx1ZTEgPSAwOwogICAgIH0KIAotICAgIGlmIChvZmZzZXQgPCBsZW5n
dGggJiYgdGltZVN0cmluZ1tvZmZzZXRdID09ICcuJykKLSAgICAgICAgZnJhY3Rpb24gPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY29sbGVjdEZyYWN0aW9uKHRpbWVTdHJpbmcsIGxlbmd0
aCwgb2Zmc2V0KS50b0RvdWJsZSgpKTsKKyAgICBpZiAob2Zmc2V0IDwgbGVuZ3RoICYmIHRpbWVT
dHJpbmdbb2Zmc2V0XSA9PSAnLicpIHsKKyAgICAgICAgYm9vbCBpc1ZhbGlkOworICAgICAgICBm
cmFjdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShjb2xsZWN0RnJhY3Rpb24odGlt
ZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpLnRvRG91YmxlKGlzVmFsaWQpKTsKKyAgICB9CiAgICAg
CiAgICAgdGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgodmFsdWUxICogc2Vjb25k
c1BlckhvdXIpICsgKHZhbHVlMiAqIHNlY29uZHNQZXJNaW51dGUpICsgdmFsdWUzKSArIGZyYWN0
aW9uOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9T
dGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4IGJk
MzVhODQ3ODI2MWMxMDBmZjE3ZDIxZTEyY2I3YTZlMGNiYmU4YjQuLjdlYTg3MzAxMWU1ZmU5NTM3
MDJlMTAxZGNhODk3ZWQ3MzQ5MzBjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVjaW1h
bCYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKIH0KIAotRGVjaW1hbCBT
dGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25z
dCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3Ry
aW5nKQorRGVjaW1hbCBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3Rl
cEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgU3RyaW5n
VmlldyBzdGVwU3RyaW5nKQogewogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBS
YW5nZS5oCmluZGV4IDczZDIzZGE5ZjU1Nzg3N2E5YTUwYjE3NmU0Yjk5NDM5ZDYyMmQ1OGEuLjU0
ODUzZDI5NzViMzZhOTBmYjg5ZmM1ODYyZWYwZWJkZDIyODI1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgRGVjaW1hbCBtYXhpbXVtKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CiAgICAgRGVjaW1hbCBtaW5pbXVtKCkgY29uc3Qg
eyByZXR1cm4gbV9taW5pbXVtOyB9CiAgICAgRGVjaW1hbCBzdGVwU25hcHBlZE1heGltdW0oKSBj
b25zdDsKLSAgICBzdGF0aWMgRGVjaW1hbCBwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBjb25z
dCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBw
YXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mLCBTdHJpbmdW
aWV3KTsKICAgICBEZWNpbWFsIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KICAgICBE
ZWNpbWFsIHN0ZXBCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBz
dGVwU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2Nh
bGVGYWN0b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKaW5kZXggNWMxZWM3NDFjMjFhNDk3OTRiNGE4NmFiYjU3NTg2Nzg5YTExY2VlOS4u
NzNhMzU4MTQ4MjNjZGVkZjk4YWJlOWViNmY5OWVkNWNlMTQzMmZkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTkyLDkgKzkyLDEx
IEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKG51bWJlcik7CiB9CiAKLURlY2ltYWwgcGFyc2VUb0RlY2ltYWxG
b3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFj
a1ZhbHVlKQorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoU3RyaW5nVmlldyBz
dHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1
IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nIGFuZCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZQor
ICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsK
IAogICAgIC8vIFN0cmluZzo6dG9Eb3VibGUoKSBhY2NlcHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVz
cGFjZSBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgbm90IHZhbGlkIGhlcmUuCiAgICAgY29uc3QgVUNo
YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdHJpbmdbMF07CkBAIC0xMTYsMTQgKzExOCwxNiBAQCBEZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgRGVjaW1hbCYgZmFsbGJhYwogICAgIHJldHVybiB2YWx1ZS5pc1plcm8oKSA/IERlY2ltYWwo
MCkgOiB2YWx1ZTsKIH0KIAotRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShT
dHJpbmdWaWV3IHN0cmluZykKIHsKICAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOwogfQogCi1kb3VibGUgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQor
ZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1i
ZXJzLicKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNr
VmFsdWU7CiAKICAgICAvLyBTdHJpbmc6OnRvRG91YmxlKCkgYWNjZXB0cyBsZWFkaW5nICsgYW5k
IHdoaXRlc3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIG5vdCB2YWxpZCBoZXJlLgogICAgIFVD
aGFyIGZpcnN0Q2hhcmFjdGVyID0gc3RyaW5nWzBdOwpAQCAtMTM0LDExICsxMzgsMTEgQEAgZG91
YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKICAgICBi
b29sIHZhbGlkID0gZmFsc2U7Ci0gICAgZG91YmxlIHZhbHVlID0gc3RyaW5nLnRvRG91YmxlKCZ2
YWxpZCk7CisgICAgZG91YmxlIHZhbHVlID0gc3RyaW5nLnRvRG91YmxlKHZhbGlkKTsKICAgICBp
ZiAoIXZhbGlkKQogICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAotICAgIC8vIE5hTiBh
bmQgaW5maW5pdHkgYXJlIGNvbnNpZGVyZWQgdmFsaWQgYnkgU3RyaW5nOjp0b0RvdWJsZSwgYnV0
IG5vdCB2YWxpZCBoZXJlLgorICAgIC8vIE5hTiBhbmQgaW5maW5pdHkgYXJlIGNvbnNpZGVyZWQg
dmFsaWQgYnkgU3RyaW5nVmlldzo6dG9Eb3VibGUsIGJ1dCBub3QgdmFsaWQgaGVyZS4KICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsK
IApAQCAtMTUxLDcgKzE1NSw3IEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCiAgICAgcmV0dXJuIHZh
bHVlID8gdmFsdWUgOiAwOwogfQogCi1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCitkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
U3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXgg
ODk1MTZiMWI5YmVlOWUxOWM2NjE4NTFjMjI0NzgyYjhhZjVkNjQ5MC4uN2MwM2YzMmQyNGJiYTYy
ZTE4MWIxMzFlYmYyMGE4MzI0Y2EyZjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtNTQsMTAgKzU0LDEwIEBAIFN0cmluZyBzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7CiAvLyBDb252ZXJ0IHRoZSBzcGVjaWZpZWQgc3RyaW5n
IHRvIGEgZGVjaW1hbC9kb3VibGUuIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCB0aGUgcmV0dXJu
IHZhbHVlIGlzIGZhbGxiYWNrIHZhbHVlIG9yIE5hTiBpZiBub3Qgc3BlY2lmaWVkLgogLy8gTGVh
ZGluZyBvciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJhY3RlcnMgY2F1c2UgZmFpbHVyZSwgYXMgZG9l
cyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZy4KIC8vIFRoZSBkb3VibGUqIHBhcmFtZXRlciBtYXkg
YmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBwYXJzZWQgd2l0aG91dCBnZXR0aW5n
IHRoZSByZXN1bHQuCi1EZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmKTsKLURlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpOwotZG91YmxlIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKTsKK0RlY2ltYWwgcGFy
c2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKFN0cmluZ1ZpZXcpOworRGVjaW1hbCBwYXJzZVRvRGVj
aW1hbEZvck51bWJlclR5cGUoU3RyaW5nVmlldywgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1
ZSk7Citkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoU3RyaW5nVmlldyk7Citkb3Vi
bGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoU3RyaW5nVmlldywgZG91YmxlIGZhbGxiYWNr
VmFsdWUpOwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogZW51bSBjbGFzcyBIVE1MSW50ZWdl
clBhcnNpbmdFcnJvciB7IE5lZ2F0aXZlT3ZlcmZsb3csIFBvc2l0aXZlT3ZlcmZsb3csIE90aGVy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDE1NWJjN2MxNjZmNDhhZWFkMmJkYjE1M2Y0YjI5MWU5MWMwMGFm
NmQuLjVkNWEzNzZmYmQ0MGM4MGYxOGM3ZGRlNDk4ZmM1M2NkZjNmMmQ5MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC03NTgsNyArNzU4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoUHJvdG9jb2w6OkQKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAgICAgfQogCi0gICAgaWYgKCFm
b3VuZE9yaWdpbmFsQXR0cmlidXRlICYmICFuYW1lLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHko
KSkgeworICAgIGlmICghZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSAmJiBuYW1lLmZpbmQoaXNOb3RT
cGFjZU9yTmV3bGluZSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgaWYgKCFtX2RvbUVkaXRvci0+
cmVtb3ZlQXR0cmlidXRlKCplbGVtZW50LCBuYW1lLCBlcnJvclN0cmluZykpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0
ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDU2YTA3ODJjNmVjMGM0MzY5YmUx
Y2ZiZGE3NDliMzI0MmZhMzdjNDMuLjRhOGQxZmE3MjRmOWE5MTliY2EzMmI0ODg0MThhYWZlYjgz
OWYyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcApAQCAt
MTYzLDEyICsxNjMsMTIgQEAgc3RhdGljIHZvaWQgcmVwbGFjZU5vblByZXNlcnZlZE5ld0xpbmVD
aGFyYWN0ZXJzQW5kQXBwZW5kKGNvbnN0IElubGluZVRleHRCb3gmIGkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIGlmIChub25SZXBsYWNlZENvbnRlbnRTdGFydFBvc2l0aW9uIDwg
c3RhcnRQb3NpdGlvbikKLSAgICAgICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVu
ZCh0ZXh0Q29udGVudC5zdWJzdHJpbmcobm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbiwg
c3RhcnRQb3NpdGlvbiAtIG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24pKTsKKyAgICAg
ICAgICAgIHBhcmFncmFwaENvbnRlbnRCdWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHRleHRDb250
ZW50KS5zdWJzdHJpbmcobm9uUmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbiwgc3RhcnRQb3Np
dGlvbiAtIG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24pKTsKICAgICAgICAgcGFyYWdy
YXBoQ29udGVudEJ1aWxkZXIuYXBwZW5kKHNwYWNlKTsKICAgICAgICAgbm9uUmVwbGFjZWRDb250
ZW50U3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIH0KICAgICBpZiAobm9uUmVwbGFjZWRD
b250ZW50U3RhcnRQb3NpdGlvbiA8IGNvbnRlbnRMZW5ndGgpCi0gICAgICAgIHBhcmFncmFwaENv
bnRlbnRCdWlsZGVyLmFwcGVuZCh0ZXh0Q29udGVudC5yaWdodChjb250ZW50TGVuZ3RoIC0gbm9u
UmVwbGFjZWRDb250ZW50U3RhcnRQb3NpdGlvbikpOworICAgICAgICBwYXJhZ3JhcGhDb250ZW50
QnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyh0ZXh0Q29udGVudCkucmlnaHQoY29udGVudExlbmd0
aCAtIG5vblJlcGxhY2VkQ29udGVudFN0YXJ0UG9zaXRpb24pKTsKIH0KIAogc3RydWN0IEJpZGlD
b250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCAyMzFkMzZiYzBhMzcx
ZDQ5NjU1N2NiYjUyZDBlNzMxODEwOGM2MGI4Li43NmQyYWI0NjRkZjc5ZWYxNzg2Y2M2ZDYxMGZi
ZjVmMmM4N2RmNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC0yMTksMTAg
KzIxOSwxMCBAQCBzdGF0aWMgdm9pZCBwcmludFRleHRGb3JTdWJ0cmVlKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCB1bnNpZ25lZCYgY2hhcmFjdAogICAgIGZvciAoYXV0byYgY2hpbGQg
OiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJl
bmRlcmVyKSkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkKSkgewogICAgICAg
ICAgICAgU3RyaW5nIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZCkudGV4dCgpOwot
ICAgICAgICAgICAgdGV4dCA9IHRleHQuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBh
dXRvIGxlbiA9IHN0ZDo6bWluKGNoYXJhY3RlcnNMZWZ0LCB0ZXh0Lmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIHN0cmVhbSA8PCB0ZXh0LmxlZnQobGVuKTsKLSAgICAgICAgICAgIGNoYXJhY3RlcnNM
ZWZ0IC09IGxlbjsKKyAgICAgICAgICAgIGF1dG8gdGV4dFZpZXcgPSBTdHJpbmdWaWV3KHRleHQp
LnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAgICAgYXV0byBsZW5ndGggPSBzdGQ6Om1pbihj
aGFyYWN0ZXJzTGVmdCwgdGV4dFZpZXcubGVuZ3RoKCkpOworICAgICAgICAgICAgc3RyZWFtIDw8
IHRleHRWaWV3LmxlZnQobGVuZ3RoKTsKKyAgICAgICAgICAgIGNoYXJhY3RlcnNMZWZ0IC09IGxl
bmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHByaW50VGV4
dEZvclN1YnRyZWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpLCBjaGFyYWN0ZXJzTGVm
dCwgc3RyZWFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4IDQwZDAy
MDUzOGMzOTJhNDUzOTU1YTkyZTRjNjFkYWQwMzgzMDllYjQuLjZhYmY2NWZjN2ZmNmVlZWQxMTNj
ODFmZmJhN2I1MWE0N2JhZGQ4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNw
cApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zT25seVdoaXRlU3BhY2VU
ZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICAgICAgaWYgKCFpczxSZW5kZXJUZXh0
Pihub2RlLnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlKS5zdHJpcFdoaXRl
U3BhY2UoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShyYW5nZSkuZmluZChpc05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZDsKIH0KIAog
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGljYXRvcihUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwg
RnJhbWUmIGZyYW1lLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEZsb2F0U2l6ZSBtYXJnaW4s
IGJvb2wgaW5kaWNhdGVzQ3VycmVudFNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1h
bC5jcHAKaW5kZXggOWVjMDE3MmEyMWE5OGRjODA3YTRjMTY3NzU3ZTczNWFiZTIzNTg0OC4uNmRj
NTQ4MjJmZWM2ZThkNDIyN2ExOWFhYTkwZmNlNzMzNTM4MWI2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGVjaW1hbC5jcHAKQEAgLTY5Myw3ICs2OTMsNyBAQCBEZWNpbWFsIERlY2ltYWw6OmZyb21E
b3VibGUoZG91YmxlIGRvdWJsZVZhbHVlKQogICAgIHJldHVybiBuYW4oKTsKIH0KIAotRGVjaW1h
bCBEZWNpbWFsOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKQorRGVjaW1hbCBEZWNpbWFs
Ojpmcm9tU3RyaW5nKFN0cmluZ1ZpZXcgc3RyKQogewogICAgIGludCBleHBvbmVudCA9IDA7CiAg
ICAgU2lnbiBleHBvbmVudFNpZ24gPSBQb3NpdGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
aAppbmRleCA1OWNkYjE4ZDgyMWM2YmM2MWFiOThiZTU4ZWE4N2E1MGRmMGI1MzE5Li41YTU0MDM0
ZDMyMzJiNmY2YzAzYzNmY2Y4M2UxYWNlODllNGQ1NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIC8vICBleHBvbmVudC1tYXJr
ZXIgOjo9ICdlJyB8ICdFJwogICAgIC8vICBkaWdpdCA6Oj0gJzAnIHwgJzEnIHwgLi4uIHwgJzkn
CiAgICAgLy8gTm90ZTogZnJvbVN0cmluZyBkb2Vzbid0IHN1cHBvcnQgImluZmluaXR5IiBhbmQg
Im5hbiIuCi0gICAgc3RhdGljIERlY2ltYWwgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgRGVjaW1hbCBmcm9tU3RyaW5nKFN0cmluZ1ZpZXcpOwogICAgIHN0YXRpYyBEZWNp
bWFsIGluZmluaXR5KFNpZ24pOwogICAgIHN0YXRpYyBEZWNpbWFsIG5hbigpOwogICAgIHN0YXRp
YyBEZWNpbWFsIHplcm8oU2lnbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggYzc0MzE4OTkyOGIzZjZhOWJiMzlmNmZm
NGZjMDk5M2ZlMDkwY2I1NC4uNTAyZmMzYzdiOWZmYjE5NzhlY2FiYjI4NjVjOTcxMjk2YTVhNmRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlk
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmNwcApAQCAtMjEzLDEyICsyMTMsMTIgQEAgaW5saW5lIFN0cmluZ1ZpZXcgdHJpbVRv
TmV4dFNlcGFyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nLmxlZnQo
c3RyaW5nLmZpbmQoaXNDYWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCi1zdGF0aWMgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCitzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBTdHJpbmdWaWV3
Pj4gcGFyc2VDYWNoZUhlYWRlcihTdHJpbmdWaWV3IHNhZmVIZWFkZXIpCiB7Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHJlc3VsdDsKKyAgICBBU1NFUlQoc2FmZUhlYWRl
ci5maW5kKGlzQ29udHJvbENoYXJhY3Rlck9yU3BhY2UpID09IG5vdEZvdW5kKTsKKworICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nVmlldywgU3RyaW5nVmlldz4+IHJlc3VsdDsKIAotICAgIFN0
cmluZyBzYWZlSGVhZGVyU3RyaW5nID0gaGVhZGVyLnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9s
Q2hhcmFjdGVyT3JTcGFjZSk7Ci0gICAgU3RyaW5nVmlldyBzYWZlSGVhZGVyID0gc2FmZUhlYWRl
clN0cmluZzsKICAgICB1bnNpZ25lZCBtYXggPSBzYWZlSGVhZGVyLmxlbmd0aCgpOwogICAgIHVu
c2lnbmVkIHBvcyA9IDA7CiAgICAgd2hpbGUgKHBvcyA8IG1heCkgewpAQCAtMjI2LDMwICsyMjYs
MzAgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hl
SGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAgICBzaXplX3QgbmV4dEVxdWFsU2ln
blBvc2l0aW9uID0gc2FmZUhlYWRlci5maW5kKCc9JywgcG9zKTsKICAgICAgICAgaWYgKG5leHRF
cXVhbFNpZ25Qb3NpdGlvbiA9PSBub3RGb3VuZCAmJiBuZXh0Q29tbWFQb3NpdGlvbiA9PSBub3RG
b3VuZCkgewogICAgICAgICAgICAgLy8gQWRkIGxhc3QgZGlyZWN0aXZlIHRvIG1hcCB3aXRoIGVt
cHR5IHN0cmluZyBhcyB2YWx1ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHRyaW1Ub05l
eHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBtYXggLSBwb3MpKS50b1N0cmlu
ZygpLCBlbXB0eVN0cmluZygpIH0pOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHRyaW1U
b05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBtYXggLSBwb3MpKSwgZW1w
dHlTdHJpbmcoKSB9KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG5leHRDb21tYVBvc2l0aW9uICE9IG5vdEZvdW5kICYmIChuZXh0Q29tbWFQb3Np
dGlvbiA8IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiB8fCBuZXh0RXF1YWxTaWduUG9zaXRpb24gPT0g
bm90Rm91bmQpKSB7CiAgICAgICAgICAgICAvLyBBZGQgZGlyZWN0aXZlIHRvIG1hcCB3aXRoIGVt
cHR5IHN0cmluZyBhcyB2YWx1ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHRyaW1Ub05l
eHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBuZXh0Q29tbWFQb3NpdGlvbiAt
IHBvcykpLnRvU3RyaW5nKCksIGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHsgdHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG5l
eHRDb21tYVBvc2l0aW9uIC0gcG9zKSksIGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgICAgICBw
b3MgKz0gbmV4dENvbW1hUG9zaXRpb24gLSBwb3MgKyAxOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgLy8gR2V0IGRpcmVjdGl2ZSBuYW1lLCBwYXJzZSByaWdodCBo
YW5kIHNpZGUgb2YgZXF1YWwgc2lnbiwgdGhlbiBhZGQgdG8gbWFwCi0gICAgICAgIFN0cmluZyBk
aXJlY3RpdmUgPSB0cmltVG9OZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywg
bmV4dEVxdWFsU2lnblBvc2l0aW9uIC0gcG9zKSkudG9TdHJpbmcoKTsKKyAgICAgICAgU3RyaW5n
VmlldyBkaXJlY3RpdmUgPSB0cmltVG9OZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5n
KHBvcywgbmV4dEVxdWFsU2lnblBvc2l0aW9uIC0gcG9zKSk7CiAgICAgICAgIHBvcyArPSBuZXh0
RXF1YWxTaWduUG9zaXRpb24gLSBwb3MgKyAxOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgdmFsdWUg
PSBzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcyk7Ci0gICAgICAgIGlmICh2YWx1
ZVswXSA9PSAnIicpIHsKKyAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyInKSkgewogICAg
ICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGEgcXVvdGVkIHN0cmluZwogICAgICAgICAgICAgc2l6
ZV90IG5leHREb3VibGVRdW90ZVBvc2l0aW9uID0gdmFsdWUuZmluZCgnIicsIDEpOwogICAgICAg
ICAgICAgaWYgKG5leHREb3VibGVRdW90ZVBvc2l0aW9uID09IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICAgICAgLy8gUGFyc2UgZXJyb3I7IGp1c3QgdXNlIHRoZSByZXN0IGFzIHRoZSB2YWx1ZQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBh
cmF0b3IodmFsdWUuc3Vic3RyaW5nKDEpKS50b1N0cmluZygpIH0pOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vi
c3RyaW5nKDEpKSB9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHZhbHVlIGFzIGEgcXVvdGVkIHN0cmluZyB3
aXRob3V0IHF1b3RlcwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdmFs
dWUuc3Vic3RyaW5nKDEsIG5leHREb3VibGVRdW90ZVBvc2l0aW9uIC0gMSkudG9TdHJpbmcoKSB9
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHZhbHVlLnN1YnN0cmlu
ZygxLCBuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiAtIDEpIH0pOwogICAgICAgICAgICAgcG9zICs9
IChzYWZlSGVhZGVyLmZpbmQoJyInLCBwb3MpIC0gcG9zKSArIG5leHREb3VibGVRdW90ZVBvc2l0
aW9uICsgMTsKICAgICAgICAgICAgIC8vIE1vdmUgcGFzdCBuZXh0IGNvbW1hLCBpZiB0aGVyZSBp
cyBvbmUKICAgICAgICAgICAgIHNpemVfdCBuZXh0Q29tbWFQb3NpdGlvbjIgPSBzYWZlSGVhZGVy
LmZpbmQoJywnLCBwb3MpOwpAQCAtMjYyLDExICsyNjIsMTEgQEAgc3RhdGljIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyKQogICAgICAgICBzaXplX3QgbmV4dENvbW1hUG9zaXRpb24yID0gdmFsdWUuZmluZCgnLCcp
OwogICAgICAgICBpZiAobmV4dENvbW1hUG9zaXRpb24yID09IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICAvLyBUaGUgcmVzdCBpcyB0aGUgdmFsdWU7IG5vIGNoYW5nZSB0byB2YWx1ZSBuZWVkZWQK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0
b3IodmFsdWUpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGly
ZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlKSB9KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGRlbGltaXRlZCBi
eSB0aGUgbmV4dCBjb21tYQotICAgICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmlt
VG9OZXh0U2VwYXJhdG9yKHZhbHVlLmxlZnQobmV4dENvbW1hUG9zaXRpb24yKSkudG9TdHJpbmco
KSB9KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFy
YXRvcih2YWx1ZS5sZWZ0KG5leHRDb21tYVBvc2l0aW9uMikpIH0pOwogICAgICAgICBwb3MgKz0g
KHNhZmVIZWFkZXIuZmluZCgnLCcsIHBvcykgLSBwb3MpICsgMTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTI3OCw3ICsyNzgsOCBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNl
Q2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiAg
ICAgU3RyaW5nIGNhY2hlQ29udHJvbFZhbHVlID0gaGVhZGVycy5nZXQoSFRUUEhlYWRlck5hbWU6
OkNhY2hlQ29udHJvbCk7CiAgICAgaWYgKCFjYWNoZUNvbnRyb2xWYWx1ZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYXV0byBkaXJlY3RpdmVzID0gcGFyc2VDYWNoZUhlYWRlcihjYWNoZUNvbnRyb2xW
YWx1ZSk7CisgICAgICAgIGF1dG8gc2FmZUhlYWRlclN0cmluZyA9IGNhY2hlQ29udHJvbFZhbHVl
LnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9sQ2hhcmFjdGVyT3JTcGFjZSk7CisgICAgICAgIGF1
dG8gZGlyZWN0aXZlcyA9IHBhcnNlQ2FjaGVIZWFkZXIoc2FmZUhlYWRlclN0cmluZyk7CiAKICAg
ICAgICAgc2l6ZV90IGRpcmVjdGl2ZXNTaXplID0gZGlyZWN0aXZlcy5zaXplKCk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlyZWN0aXZlc1NpemU7ICsraSkgewpAQCAtMjk3LDcg
KzI5OCw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3Rp
dmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwotICAg
ICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJs
ZSgmb2spOworICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNl
Y29uZC50b0RvdWJsZShvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQubWF4QWdlID0gU2Vjb25kcyB7IG1heEFnZSB9OwogICAgICAgICAgICAg
fSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3RpdmVzW2ldLmZp
cnN0LCAibWF4LXN0YWxlIikpIHsKQEAgLTMxMiw3ICszMTMsNyBAQCBDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgICAgICBkb3VibGUgbWF4U3Rh
bGUgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAg
IGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9rKTsKICAg
ICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFs
ZSA9IFNlY29uZHMgeyBtYXhTdGFsZSB9OwogICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAiaW1tdXRhYmxlIikp
IHsKQEAgLTMyMyw3ICszMjQsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVD
b250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Ym9vbCBvazsKLSAgICAgICAgICAgICAgICBkb3VibGUgc3RhbGVXaGlsZVJldmFsaWRhdGUgPSBk
aXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAgIGRvdWJs
ZSBzdGFsZVdoaWxlUmV2YWxpZGF0ZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKG9r
KTsKICAgICAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5z
dGFsZVdoaWxlUmV2YWxpZGF0ZSA9IFNlY29uZHMgeyBzdGFsZVdoaWxlUmV2YWxpZGF0ZSB9Owog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAppbmRleCA5ZDUwM2I1YTkyOTkyZTdlZTFhZjMwZjA5ZTFkZjE4YTU2NzliODIx
Li4yNjU1ODEyOTNjZDlhNGM4Y2IyYjE2NWYwOWM0MzA1MzRmNDg2ZDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzMxLDcgKzMz
MSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIC8vIHRoYXQgYXJpc2VzIGZyb20gcXVvdGVkLXN0cmluZywgbm9yIGRvZXMgdGhp
cyBmdW5jdGlvbiBwcm9wZXJseSB1bnF1b3RlCiAvLyBhdHRyaWJ1dGUgdmFsdWVzLiBGdXJ0aGVy
IHRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBwcm9jZXNzIHBhcmFtZXRlciBuYW1lcwogLy8gaW4g
YSBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuIChUaGVyZSBhcmUgbGlrZWx5IG90aGVyIGJ1Z3MgYXMg
d2VsbC4pCi1TdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihTdHJpbmdW
aWV3IHZhbHVlKQorU3RyaW5nVmlldyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9u
KFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgZm9yIChhdXRvIGtleVZhbHVlUGFpciA6IHZhbHVl
LnNwbGl0KCc7JykpIHsKICAgICAgICAgc2l6ZV90IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBh
aXIuZmluZCgnPScpOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIFN0cmluZyBmaWxlbmFtZUZyb21IVFRQ
Q29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcgdmFsdWUpCiAgICAgICAgIGlmICh2YWx1ZS5s
ZW5ndGgoKSA+IDEgJiYgdmFsdWVbMF0gPT0gJ1wiJykKICAgICAgICAgICAgIHZhbHVlID0gdmFs
dWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpIC0gMik7CiAKLSAgICAgICAgcmV0dXJuIHZh
bHVlLnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICByZXR1
cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmgKaW5kZXggZDVjZTc4MjliNWFkMTYyM2Y2OTcxMzhmNzI5NjU4ZGMwZDMzNzNmZi4uYWUy
NDk4NWYzZTgwZjA0OWJlZTFiYTBhYTc3NTg1NjJmYTg1NDY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtNzksNyArNzksNyBAQCBXRUJD
T1JFX0VYUE9SVCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcm
KTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhU
VFBUb2tlbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERh
dGUoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3Np
dGlvbihTdHJpbmdWaWV3KTsKK1N0cmluZ1ZpZXcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNw
b3NpdGlvbihTdHJpbmdWaWV3KTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBleHRyYWN0TUlNRVR5
cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nVmlldyBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoU3RyaW5nVmlldyk7CiBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFy
c2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1
cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4
IDFhOWI4M2VlZjU3NzIxZmZjNWUxMTBhMDgzNGJiMDMxMDY3NTVlMTMuLmNmZWZlMWViMjVjZGY5
Y2ZmMjhmYjBlNTNkOTIyZmQ1ODdmN2IwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgS2V5VmFs
dWVNYXAgcmV0cmlldmVLZXlWYWx1ZVBhaXJzKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyJiBidWZmZQogICAgICAgICAgICAgLy8gVGhpcyBpcyBub3QgYSBrZXkgdmFsdWUgcGFpciwg
aWdub3JlLgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAga2V5ID0g
U3RyaW5nVmlldyhsaW5lKS5sZWZ0KHNlbWljb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUp
LmxlZnQoc2VtaWNvbG9uSW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7CiAgICAgICAgIHZhbHVlLmFwcGVuZChTdHJpbmdWaWV3KGxpbmUpLnN1YnN0cmlu
ZyhzZW1pY29sb25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhlIGxhc3QgcHJv
cGVydHkgaWYgdGhlcmUgaXMgb25lLgpAQCAtMTIwLDkgKzEyMCw5IEBAIFJlZlB0cjxNSU1FSGVh
ZGVyPiBNSU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVm
ZmVyKQogICAgIHJldHVybiBtaW1lSGVhZGVyOwogfQogCi1NSU1FSGVhZGVyOjpFbmNvZGluZyBN
SU1FSGVhZGVyOjpwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKGNvbnN0IFN0cmluZyYgdGV4
dCkKK01JTUVIZWFkZXI6OkVuY29kaW5nIE1JTUVIZWFkZXI6OnBhcnNlQ29udGVudFRyYW5zZmVy
RW5jb2RpbmcoU3RyaW5nVmlldyB0ZXh0KQogewotICAgIFN0cmluZyBlbmNvZGluZyA9IHRleHQu
c3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgYXV0byBlbmNvZGluZyA9IHRleHQuc3RyaXBXaGl0ZVNw
YWNlKCk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuY29kaW5nLCAi
YmFzZTY0IikpCiAgICAgICAgIHJldHVybiBCYXNlNjQ7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGVuY29kaW5nLCAicXVvdGVkLXByaW50YWJsZSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAppbmRleCAwMDhhZWMyZTA3ZTM2
OTg3NzBmMGMxMzJmNTg2MmEzNGE1YTJjYjFjLi5kYTEwNjlhNGUxNGJkOGZiNTc5MDI5Y2IyM2Ux
MzIzYWEyYzhhNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1JTUVIZWFk
ZXIoKTsKIAotICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBFbmNvZGluZyBwYXJzZUNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CiAgICAg
U3RyaW5nIG1fY2hhcnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKaW5kZXggNmI5MTY1OTE0YzFmYzEyMzIzODk3Y2E1
MmQ3MzcyZDc2NjEzNTEyOC4uZmFmYTMyMTFmMTMzNWUzNjY5ZDRmNzcyOGJjM2MzNGRkYzA2MjZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250
ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRD
b250ZW50VHlwZS5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFBhcnNlZENvbnRlbnRUeXBl
OjpzZXRDb250ZW50VHlwZShTdHJpbmcmJiBjb250ZW50UmFuZ2UsIE1vZGUgbW9kZSkKIHsKICAg
ICBtX21pbWVUeXBlID0gV1RGTW92ZShjb250ZW50UmFuZ2UpOwogICAgIGlmIChtb2RlID09IE1v
ZGU6Ok1pbWVTbmlmZikKLSAgICAgICAgbV9taW1lVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRUUFNwYWNlcyhtX21pbWVUeXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAg
ICAgICBtX21pbWVUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKFN0cmlu
Z1ZpZXcobV9taW1lVHlwZSkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgZWxzZQog
ICAgICAgICBtX21pbWVUeXBlID0gbV9taW1lVHlwZS5zdHJpcFdoaXRlU3BhY2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKaW5kZXggZDA2NmVhNDcyYzU0ZTY1MjA3OWRiYTQxOGFiMjQ3YTgzZmE4MjI1
Yi4uNzgzODU2YTMyZjY1ODE0NDcxODhiNTA1NDRkMTAwMTY3NjEyMmQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAKQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0
dGFjaG1lbnQoKSBjb25zdAogICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CiAKICAgICBhdXRvIHZh
bHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bv
c2l0aW9uKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUu
bGVmdCh2YWx1ZS5maW5kKCc7JykpLnN0cmlwV2hpdGVTcGFjZSgpLCAiYXR0YWNobWVudCIpOwor
ICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHZhbHVl
KS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7
CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudFdpdGhGaWxlbmFt
ZSgpIGNvbnN0CkBAIC03OTYsOCArNzk2LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
aXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgY29uc3QKICAgICBpZiAoIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnRlbnREaXNwb3NpdGlvblZpZXcubGVmdChjb250ZW50RGlzcG9z
aXRpb25WaWV3LmZpbmQoJzsnKSkuc3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50IikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IGZpbGVuYW1lRnJv
bUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uVmlldyk7Ci0gICAgcmV0
dXJuICFmaWxlbmFtZS5pc051bGwoKTsKKyAgICByZXR1cm4gIWZpbGVuYW1lRnJvbUhUVFBDb250
ZW50RGlzcG9zaXRpb24oY29udGVudERpc3Bvc2l0aW9uVmlldykuaXNOdWxsKCk7CiB9CiAKIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpTb3VyY2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNvdXJjZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAppbmRleCAyOTMxZDA1ZDRjMjlhM2Q2OTcw
YzlmN2FkN2ZjMGY5NmRjNzUyMDViLi5mNmMxMDcyY2ZlMmVjNjJhYWY3ZGMwZTEyN2VkNDc3OTgy
ODVlNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlSW5mbyhDZXJ0aWZpY2F0ZUluZm8m
JiBjZXJ0aWZpY2F0ZUluZm8pCiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1
Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENv
bnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRE
aXNwb3NpdGlvbikpOworICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0
aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKSku
dG9TdHJpbmcoKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpzaG91bGRSZWRpcmVjdCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCA1NWMzNGM4ZGIzZDg3YjRjZDRiNDU1OTg4NDRmMDVkYTEyM2VkZTc5Li5hNzg3M2ExNTNmNjJl
NzNhZWNlOTIxNGRkZjFhZTUxZDU5OWY4NjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFNRTGl0
ZURhdGFiYXNlOjpzZXRCdXN5SGFuZGxlcihpbnQoKmhhbmRsZXIpKHZvaWQqLCBpbnQpKQogICAg
ICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRsZXIgc2V0IG9uIG5vbi1vcGVuIGRhdGFi
YXNlIik7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xvdyhjb25z
dCBTdHJpbmcmIHF1ZXJ5KQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmRTbG93
KFN0cmluZ1ZpZXcgcXVlcnkpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVt
ZW50U2xvdyhxdWVyeSk7CiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1
dGVDb21tYW5kKCk7CkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xl
YXJBbGxUYWJsZXMoKQogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQogICAgICAgICB0YWJsZXMuYXBwZW5kKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAg
Zm9yIChhdXRvJiB0YWJsZSA6IHRhYmxlcykgewotICAgICAgICBpZiAoIWV4ZWN1dGVDb21tYW5k
U2xvdygiRFJPUCBUQUJMRSAiICsgdGFibGUpKQorICAgICAgICBpZiAoIWV4ZWN1dGVDb21tYW5k
U2xvdyhtYWtlU3RyaW5nKCJEUk9QIFRBQkxFICIsIHRhYmxlKSkpCiAgICAgICAgICAgICBMT0co
U1FMRGF0YWJhc2UsICJVbmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsIHRhYmxlLmFzY2lpKCkuZGF0
YSgpKTsKICAgICB9CiB9CkBAIC03MjMsNyArNzIzLDcgQEAgc3RhdGljIEV4cGVjdGVkPHNxbGl0
ZTNfc3RtdCosIGludD4gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudChTUUxpdGVEYXRhYmFz
ZSYKICAgICByZXR1cm4gc3RhdGVtZW50OwogfQogCi1FeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQs
IGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYg
cXVlcnlTdHJpbmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJh
c2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAg
Q1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0ZjgoKTsKICAg
ICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoKnRoaXMs
IHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIEV4cGVj
dGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVu
dChBU0NJSUxpdGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudCB7ICp0aGlzLCBz
cWxTdGF0ZW1lbnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3Rh
dGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNv
bnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVt
ZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KFN0cmlu
Z1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0
cmlwV2hpdGVTcGFjZSgpLnV0ZjgoKTsKICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVj
dEFuZFByZXBhcmVTdGF0ZW1lbnQoKnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA5
MTYwMTM0ODE3NTkyMTNhYTUyZDE5OGE0N2UyZTVjNGQ2YTk4NzM0Li44NmZjMDQ1ODhiZDhlMzg1
ZmU0ODYyNTQxNWM1NGU5Nzg3NmRkNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bG9zZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29u
c3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3co
U3RyaW5nVmlldyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJ
SUxpdGVyYWwpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoU3Ry
aW5nVmlldyk7CkBAIC03NSw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHRyYW5z
YWN0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNz
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4g
cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVTdGF0ZW1lbnRTbG93
KFN0cmluZ1ZpZXcgcXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0
YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4g
cHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOworICAgIFdFQkNP
UkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBh
cmVIZWFwU3RhdGVtZW50U2xvdyhTdHJpbmdWaWV3IHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBwcmVwYXJlSGVhcFN0
YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAgLy8gQWJvcnRzIHRoZSBjdXJyZW50
IGRhdGFiYXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQgc2FmZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCA1NGQyZWI3MjgyYzM5NDg3NTZiZDg1MmFhOTZi
ZTMxM2IxNzQ5N2Q3Li4wYTZjMDk3ZjNkNWNkYjc1NjA5M2Q0MWZhYjdiNmZhZmE1ZjI0Yjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xMTUsOSArMTE1LDkg
QEAgaW5saW5lIFNlc3Npb25GZWF0dXJlIHNlc3Npb25GZWF0dXJlRnJvbVJlZmVyZW5jZVNwYWNl
VHlwZShSZWZlcmVuY2VTcGFjZVR5cGUgcmUKICAgICByZXR1cm4gU2Vzc2lvbkZlYXR1cmU6OlJl
ZmVyZW5jZVNwYWNlVHlwZVZpZXdlcjsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8U2Vzc2lv
bkZlYXR1cmU+IHBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbkZlYXR1cmU+IHBhcnNlU2Vzc2lvbkZl
YXR1cmVEZXNjcmlwdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIFN0cmluZyBmZWF0dXJl
ID0gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cisg
ICAgYXV0byBmZWF0dXJlID0gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiAKICAgICBpZiAoZmVhdHVyZSA9PSAidmlld2VyIl9zKQogICAgICAgICBy
ZXR1cm4gU2Vzc2lvbkZlYXR1cmU6OlJlZmVyZW5jZVNwYWNlVHlwZVZpZXdlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCBjNjkyYjQwNzQyYzM3N2Y5
OWYwYzg5NGZiNjI1N2I2MmM0M2Y0M2YwLi41MzIxNDk3YWQxMGI3MDNmMzkxMmJjYjBmZjZkMTYw
ZTIwNDYxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3Bw
CkBAIC01NiwxMSArNTYsMTEgQEAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6U1ZHQW5pbWF0aW9uRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKIHsKIH0KIAotc3Rh
dGljIHZvaWQgcGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBWZWN0b3I8ZmxvYXQ+
JiByZXN1bHQsIGJvb2wgdmVyaWZ5T3JkZXIpCitzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKFN0
cmluZ1ZpZXcgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikK
IHsKICAgICByZXN1bHQuY2xlYXIoKTsKICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIGZv
ciAoU3RyaW5nVmlldyB0aW1lU3RyaW5nIDogU3RyaW5nVmlldyhwYXJzZSkuc3BsaXQoJzsnKSkg
eworICAgIGZvciAoYXV0byB0aW1lU3RyaW5nIDogcGFyc2Uuc3BsaXQoJzsnKSkgewogICAgICAg
ICBib29sIG9rOwogICAgICAgICBmbG9hdCB0aW1lID0gdGltZVN0cmluZy50b0Zsb2F0KG9rKTsK
ICAgICAgICAgaWYgKCFvayB8fCB0aW1lIDwgMCB8fCB0aW1lID4gMSkKQEAgLTE1Myw5ICsxNTMs
MTAgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICAgICAgLy8gUGVyIHRoZSBTTUlMIHNw
ZWNpZmljYXRpb24sIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlLAogICAgICAgICAv
LyBhbmQgd2hpdGUgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciBzZW1pY29sb24gc2VwYXJhdG9ycywg
aXMgYWxsb3dlZCBhbmQgd2lsbCBiZSBpZ25vcmVkLgogICAgICAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9TVkcxMS9hbmltYXRlLmh0bWwjVmFsdWVzQXR0cmlidXRlCi0gICAgICAgIG1fdmFs
dWVzID0gdmFsdWUuc3RyaW5nKCkuc3BsaXQoJzsnKTsKLSAgICAgICAgZm9yIChhdXRvJiB2YWx1
ZSA6IG1fdmFsdWVzKQotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcFdoaXRlU3BhY2Uo
KTsKKyAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKKyAgICAgICAgdmFsdWUuc3RyaW5nKCkuc3Bs
aXQoJzsnLCBbdGhpc10oU3RyaW5nVmlldyBpbm5lclZhbHVlKSB7CisgICAgICAgICAgICBtX3Zh
bHVlcy5hcHBlbmQoaW5uZXJWYWx1ZS5zdHJpcFdoaXRlU3BhY2UoKS50b1N0cmluZygpKTsKKyAg
ICAgICAgfSk7CiAKICAgICAgICAgdXBkYXRlQW5pbWF0aW9uTW9kZSgpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0KaW5kZXggYjI5NDAzZWZjZTJiOGVjM2E0OGMyNTQ2OGYxODk2Njc5Zjgx
NTZjNS4uZWY2NGM0ZDY1MWYxNWM3OGJlNzhkMGY1OTdlNjUzZDlhMjk4YzgyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQpAQCAtMTY0LDggKzE2NCw3IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGlj
dGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltCiAgICAgRWRp
dG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGlj
dGlvbmFyeVBvcHVwSW5mbyh0cnVlKTsKIAotICAgIC8vIEZJWE1FOiBJbmVmZmljaWVudCB0byBj
YWxsIHN0cmlwV2hpdGVTcGFjZSB0byBkZXRlY3Qgd2hldGhlciBhIHN0cmluZyBoYXMgYSBub24t
d2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gaXQuCi0gICAgaWYgKHBsYWluVGV4dChyYW5nZSkuc3Ry
aXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKHBsYWluVGV4dChyYW5nZSkuZmlu
ZChpc05vdFNwYWNlT3JOZXdsaW5lKSA9PSBub3RGb3VuZCkgewogICAgICAgICBlZGl0b3Iuc2V0
SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDBhZWU3YjY5YWZkNWI0
YTZmNzY4ZjIwNWY4YTAyOGMxOGVhNzg4OGMuLjM3Mjk0NmQ5ZjdkOGM3YmNkZDY0Y2M1OTM3ZDM3
YzFlNDA3ZGYxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTUxNyw3ICs1
MTcsNyBAQCArIChXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvKV9kaWN0aW9uYXJ5UG9wdXBJ
bmZvRm9yUmFuZ2U6KGNvbnN0IFdlYkNvcmU6OlNpbQogICAgIC8vIERpY3Rpb25hcnkgQVBJIHdp
bGwgYWNjZXB0IGEgd2hpdGVzcGFjZS1vbmx5IHN0cmluZyBhbmQgZGlzcGxheSBVSSBhcyBpZiBp
dCB3ZXJlIHJlYWwgdGV4dCwKICAgICAvLyBzbyBiYWlsIG91dCBlYXJseSB0byBhdm9pZCB0aGF0
LgogICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8gcG9wdXBJbmZvOwotICAgIGlmIChw
bGFpblRleHQocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkgeworICAgIGlmIChw
bGFpblRleHQocmFuZ2UpLmZpbmQoaXNOb3RTcGFjZU9yTmV3bGluZSkgPT0gbm90Rm91bmQpIHsK
ICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwog
ICAgICAgICByZXR1cm4gcG9wdXBJbmZvOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>