<?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>144791</bug_id>
          
          <creation_ts>2015-05-08 01:32:25 -0700</creation_ts>
          <short_desc>Rename Length::isPercent() and Length::isPercentNotCalculated()</short_desc>
          <delta_ts>2015-05-10 17:54:05 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sungmann Cho">sungmann.cho</reporter>
          <assigned_to name="Sungmann Cho">sungmann.cho</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1093116</commentid>
    <comment_count>0</comment_count>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 01:32:25 -0700</bug_when>
    <thetext>Fix the wrong condition check at the first line of SVGLengthContext::valueForLength().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093123</commentid>
    <comment_count>1</comment_count>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 01:57:24 -0700</bug_when>
    <thetext>We can replace &quot;length.isPercent() &amp;&amp; !length.isCalculated()&quot; with &quot;length.isPercentNotCalculated()&quot; for simplicity and clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093124</commentid>
    <comment_count>2</comment_count>
      <attachid>252703</attachid>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 01:57:44 -0700</bug_when>
    <thetext>Created attachment 252703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093212</commentid>
    <comment_count>3</comment_count>
      <attachid>252703</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-08 09:59:17 -0700</bug_when>
    <thetext>Comment on attachment 252703
Patch

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

&gt; Source/WebCore/svg/SVGLengthContext.cpp:92
&gt; +    if (length.isPercentNotCalculated())

It will be beneficial if we can rename:

Length::isPercentNotCalculated() =&gt; Length::isPercent()
Length::isPercent() =&gt; Length::isPercentOrCalculated()  // Or something similar

Then we can remove the following FIXME from Length.h

    bool isPercentNotCalculated() const; // FIXME: Rename to isPercent.

And the above condition will be simpler and clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093287</commentid>
    <comment_count>4</comment_count>
      <attachid>252744</attachid>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 13:38:38 -0700</bug_when>
    <thetext>Created attachment 252744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093288</commentid>
    <comment_count>5</comment_count>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 13:39:58 -0700</bug_when>
    <thetext>Addressed Said Abou-Hallawa&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093295</commentid>
    <comment_count>6</comment_count>
      <attachid>252746</attachid>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-08 13:58:25 -0700</bug_when>
    <thetext>Created attachment 252746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093576</commentid>
    <comment_count>7</comment_count>
      <attachid>252746</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-10 14:12:28 -0700</bug_when>
    <thetext>Comment on attachment 252746
Patch

It’s dangerous to do this all in one pass. If we missed any call site, the behavior will become wrong and the compiler won’t catch it for us.

The safe way to do this is to do the rename of isPercent to isPercentOrCalculated in a first patch, then do the rest in a second patch after we know all platforms compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093587</commentid>
    <comment_count>8</comment_count>
      <attachid>252746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-10 14:44:52 -0700</bug_when>
    <thetext>Comment on attachment 252746
Patch

Clearing flags on attachment: 252746

Committed r184055: &lt;http://trac.webkit.org/changeset/184055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093588</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-10 14:44:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093622</commentid>
    <comment_count>10</comment_count>
    <who name="Sungmann Cho">sungmann.cho</who>
    <bug_when>2015-05-10 17:54:05 -0700</bug_when>
    <thetext>@Darin Adler: Oops, but the patch has already been committed. Next time, I will be sure to follow your advice. Thank you for your thoughtful review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252703</attachid>
            <date>2015-05-08 01:57:44 -0700</date>
            <delta_ts>2015-05-08 13:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144791-20150508175626.patch</filename>
            <type>text/plain</type>
            <size>1589</size>
            <attacher name="Sungmann Cho">sungmann.cho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI0ZDE3ZjgxNzEzYmU5
MjA5ZTE3YTNkYTYxMDUwNzIwMjdkZjE0OS4uNWRiNmJmNmM3ODU2ZTViMGI5ZDVkNjM5ODBhMjM1
MjUxNDU1MzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA1LTA4ICBTdW5n
bWFubiBDaG8gIDxzdW5nbWFubi5jaG9AbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBTaW1wbGlm
eSB0aGUgY29uZGl0aW9uIGNoZWNrIG9mIGxlbmd0aCB0eXBlIGluIFNWR0xlbmd0aENvbnRleHQ6
OnZhbHVlRm9yTGVuZ3RoKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ3OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBjYW4gcmVwbGFjZSAibGVuZ3RoLmlzUGVyY2VudCgpICYmICFsZW5ndGgu
aXNDYWxjdWxhdGVkKCkiIHdpdGgKKyAgICAgICAgImxlbmd0aC5pc1BlcmNlbnROb3RDYWxjdWxh
dGVkKCkiIGZvciBzaW1wbGljaXR5IGFuZCBjbGFyaXR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgp
OgorCiAyMDE1LTA1LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5j
cHAKaW5kZXggYjlhNjkwMTMzNzkxNmQzNmQ1MTA2ZDM4MGM3NmRjNGIxNDU5Njc1OC4uY2I3MmI1
OGU3NWM2MWI3ZWJmNDlkN2ExMTE5MzJiY2MzNGUzM2FhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGhDb250ZXh0LmNwcApAQCAtODksNyArODksNyBAQCBmbG9hdCBTVkdMZW5ndGhDb250
ZXh0OjpyZXNvbHZlTGVuZ3RoKGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIFNWR1VuaXRUeXBl
czo6UwogCiBmbG9hdCBTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewotICAgIGlmIChsZW5ndGguaXNQZXJj
ZW50KCkgJiYgIWxlbmd0aC5pc0NhbGN1bGF0ZWQoKSkKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2Vu
dE5vdENhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50
YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUsIElHTk9SRV9FWENFUFRJ
T04pOwogICAgIGlmIChsZW5ndGguaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252744</attachid>
            <date>2015-05-08 13:38:38 -0700</date>
            <delta_ts>2015-05-08 13:58:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144791-20150509053721.patch</filename>
            <type>text/plain</type>
            <size>65139</size>
            <attacher name="Sungmann Cho">sungmann.cho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2OGFiNzljNjU1YTEx
NWUzYjBkMzFjNmUwMjAzYWEzNTIzYzM2OS4uZjFlNDAxMjNkOGQzMjk0NzJkNzQzNzNiN2RmMTdj
NjU3NDgyOTQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAxNS0wNS0wOCAgU3Vu
Z21hbm4gQ2hvICA8c3VuZ21hbm4uY2hvQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgUmVuYW1l
IExlbmd0aDo6aXNQZXJjZW50KCkgYW5kIExlbmd0aDo6aXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0Nzkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gUmVu
YW1lIHRoZXNlIG1ldGhvZHMgYXMgYmVsb3cgZm9yIGNvbnNpc3RlbmN5IGFuZCBjbGFyaXR5Lgor
CisgICAgICAgIExlbmd0aDo6aXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID0+IExlbmd0aDo6aXNQ
ZXJjZW50KCkKKyAgICAgICAgTGVuZ3RoOjppc1BlcmNlbnQoKSA9PiBMZW5ndGg6OmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpCisKKyAgICAgICAgMi4gU2ltcGxpZnkgdGhlIGNvbmRpdGlvbiBjaGVj
ayBvZiBsZW5ndGggdHlwZSBpbiBTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxlbmd0aCgpLgor
CisgICAgICAgICJsZW5ndGguaXNQZXJjZW50KCkgJiYgIWxlbmd0aC5pc0NhbGN1bGF0ZWQoKSIg
PT4gImxlbmd0aC5pc1BlcmNlbnQoKSIKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JJbWFnZVNsaWNlU2lkZSk6CisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cGVyY2Vu
dGFnZU9yWm9vbUFkanVzdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bGluZUhlaWdodEZy
b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXMxMDBQZXJjZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmNv
bXB1dGVUcmFuc2Zvcm1lZEV4dGVudFZpYVRyYW5zZm9ybUxpc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpwZXJjZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6aXNQZXJjZW50T3JDYWxjdWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNT
cGVjaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnROb3RDYWxjdWxh
dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGND
b2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpmdWxsUmVjYWxjKToK
KyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFNjYWxlQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRvVGFibGVMYXlvdXQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJs
ZUxheW91dDo6YXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhRdWlya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Rml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxh
cHNpbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dGV4dEluZGVudE9m
ZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFn
ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2YWJs
ZUZyb21CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc1Vuc3BsaXR0YWJs
ZVNjcm9sbGluZ092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0
T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6aGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRl
SW1hZ2VJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFyTGluZUNsYW1wKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0UmVw
YWludEZpbGxMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhp
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxp
c3Q6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9iamVjdElzUmVsYXlvdXRCb3Vu
ZGFyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXI6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvR3JpZExlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZExlbmd0aDo6aXNQZXJj
ZW50YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6ZTo6aXNQZXJjZW50YWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc1JlbGF0
aXZlRGltZW5zaW9ucyk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6aGFzUmVsYXRpdmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6aGFzUmVs
YXRpdmVIZWlnaHQpOgorCiAyMDE1LTA1LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGluIHN1YmZyYW1l
cyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkODlhYzQyOGRmZTNlYjFm
NzE1OWM3NzljOWYxOTlmMDRiYWIzNzFhLi5lN2IzOGE0Yzg0N2RmZDgxN2JiN2RlMjliNmIwOGVk
M2Y2NmQyNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGljZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiB7
CiAgICAgLy8gVGhlc2UgdmFsdWVzIGNhbiBiZSBwZXJjZW50YWdlcywgbnVtYmVycywgb3Igd2hp
bGUgYW4gYW5pbWF0aW9uIG9mIG1peGVkIHR5cGVzIGlzIGluIHByb2dyZXNzLAogICAgIC8vIGEg
Y2FsY3VsYXRpb24gdGhhdCBjb21iaW5lcyBhIHBlcmNlbnRhZ2UgYW5kIGEgbnVtYmVyLgotICAg
IGlmIChsZW5ndGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKQorICAgIGlmIChsZW5ndGguaXNQ
ZXJjZW50KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsZW5n
dGgucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGlm
IChsZW5ndGguaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUobGVuZ3RoLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKQEAg
LTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24o
Y29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAKICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldDsKLSAgICBpZiAocmVmbGVjdGlvbi0+
b2Zmc2V0KCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHJlZmxlY3Rpb24tPm9mZnNldCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICBvZmZzZXQgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShyZWZsZWN0aW9uLT5vZmZzZXQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgZWxzZQogICAgICAgICBvZmZzZXQgPSB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCksIHN0eWxlKTsKQEAgLTcz
Niw3ICs3MzYsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUgogCiBzdGF0aWMgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShMZW5ndGggbGVuZ3Ro
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnRO
b3RDYWxjdWxhdGVkKCkpCisgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgCiAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwpAQCAtMTU1OSw3
ICsxNTU5LDcgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgTGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5saW5l
SGVpZ2h0KCk7CiAgICAgaWYgKGxlbmd0aC5pc05lZ2F0aXZlKCkpIC8vIElmIHRydWUsIGxpbmUt
aGVpZ2h0IG5vdCBzZXQ7IHVzZSB0aGUgZm9udCdzIGxpbmUgc3BhY2luZy4KICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnRNZXRyaWNzKCkuZmxvYXRMaW5l
U3BhY2luZygpLCBzdHlsZSk7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVk
KCkpIHsKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMg
aW1wZXJmZWN0LCBiZWNhdXNlIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IgYW5k
IHRoZSByZWFsIGNvbXB1dGF0aW9uCiAgICAgICAgIC8vIGZvciBob3cgaGlnaCB0byBiZSBpbiBw
aXhlbHMgZG9lcyBpbmNsdWRlIHRoaW5ncyBsaWtlIG1pbmltdW0gZm9udCBzaXplIGFuZCB0aGUg
em9vbSBmYWN0b3IuCiAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNp
emUgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCkBA
IC0yNDI5LDcgKzI0MjksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAg
aWYgKG1hcmdpblJpZ2h0LmlzRml4ZWQoKSB8fCAhaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgobWFy
Z2luUmlnaHQsIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwotICAgICAg
ICAgICAgaWYgKG1hcmdpblJpZ2h0LmlzUGVyY2VudCgpKSB7CisgICAgICAgICAgICBpZiAobWFy
Z2luUmlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBS
ZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8vIGFu
ZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBC
TE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8vIHZh
bHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxMTkwNTEzYTlmZGU0MzE3NmE1Y2Zh
NGEzNmY0ODIyMTliMTMwYWU1Li4yMmE2NzcxNjIxNDA0MGM0ODc0ZDNmMzgwZWRkNjE5NDE3YjY5
NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNr
U2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBl
cmNlbnQoTGVuZ3RoIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbGVuZ3RoLmlzUGVyY2VudE5vdENh
bGN1bGF0ZWQoKSAmJiBsZW5ndGgucGVyY2VudCgpID09IDEwMDsKKyAgICByZXR1cm4gbGVuZ3Ro
LmlzUGVyY2VudCgpICYmIGxlbmd0aC5wZXJjZW50KCkgPT0gMTAwOwogfQogICAgIAogc3RhdGlj
IGlubGluZSBib29sIGlzU21hbGxlclRoYW5UaW55U2l6aW5nVGhyZXNob2xkKGNvbnN0IFJlbmRl
ckVtYmVkZGVkT2JqZWN0JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggNTIwYzc3MTFkOTQ4ODhiM2ZhMmFhOWIyMTJi
ZDA5MmQ3NTVmZjVjNy4uZjc5ZTdjNTg2Mzg2MWUzNzMzYTU5NmQ3NTJlMGNlODMzOGVjMjE1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
QEAgLTc3OCw4ICs3NzgsOCBAQCBib29sIEFuaW1hdGlvbkJhc2U6OmNvbXB1dGVUcmFuc2Zvcm1l
ZEV4dGVudFZpYVRyYW5zZm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByZQogICAgIAogICAgIGJv
b2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSBjb250YWluc1JvdGF0aW9uKHN0eWxlLnRyYW5zZm9y
bSgpLm9wZXJhdGlvbnMoKSkgfHwgc3R5bGUudHJhbnNmb3JtKCkuYWZmZWN0ZWRCeVRyYW5zZm9y
bU9yaWdpbigpOwogICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICBmbG9h
dCBvZmZzZXRYID0gc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLmlzUGVyY2VudE5vdENhbGN1bGF0
ZWQoKSA/IHJlbmRlcmVyQm94LngoKSA6IDA7Ci0gICAgICAgIGZsb2F0IG9mZnNldFkgPSBzdHls
ZS50cmFuc2Zvcm1PcmlnaW5ZKCkuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID8gcmVuZGVyZXJC
b3gueSgpIDogMDsKKyAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IHN0eWxlLnRyYW5zZm9ybU9yaWdp
blgoKS5pc1BlcmNlbnQoKSA/IHJlbmRlcmVyQm94LngoKSA6IDA7CisgICAgICAgIGZsb2F0IG9m
ZnNldFkgPSBzdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkuaXNQZXJjZW50KCkgPyByZW5kZXJlckJv
eC55KCkgOiAwOwogCiAgICAgICAgIHRyYW5zZm9ybU9yaWdpbi5zZXRYKGZsb2F0VmFsdWVGb3JM
ZW5ndGgoc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLCByZW5kZXJlckJveC53aWR0aCgpKSArIG9m
ZnNldFgpOwogICAgICAgICB0cmFuc2Zvcm1PcmlnaW4uc2V0WShmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKSwgcmVuZGVyZXJCb3guaGVpZ2h0KCkpICsgb2Zmc2V0
WSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDNhOTQ2Y2I2MGFhMDNjZGQ0OTY3Yjgz
NDRjZTg5NWRjYTUxODU2YjEuLjljOGQwOGE0ZjdkNmJhN2IxMzkxYjgyMGRjOTY0MGVlOGY1NGE0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzRml4ZWQoKSBjb25zdDsKICAgICBib29sIGlzTWF4Q29udGVudCgpIGNvbnN0
OwogICAgIGJvb2wgaXNNaW5Db250ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1BlcmNlbnROb3RD
YWxjdWxhdGVkKCkgY29uc3Q7IC8vIEZJWE1FOiBSZW5hbWUgdG8gaXNQZXJjZW50LgorICAgIGJv
b2wgaXNQZXJjZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OwogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUG9zaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdDsK
IAotICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBmb3IgYm90aCBQ
ZXJjZW50IGFuZCBDYWxjdWxhdGVkLiBGSVhNRTogRmluZCBhIGJldHRlciBuYW1lIGZvciB0aGlz
LgorICAgIGJvb2wgaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1
ZSBmb3IgYm90aCBQZXJjZW50IGFuZCBDYWxjdWxhdGVkLgogCiAgICAgYm9vbCBpc0ludHJpbnNp
YygpIGNvbnN0OwogICAgIGJvb2wgaXNJbnRyaW5zaWNPckF1dG8oKSBjb25zdDsKQEAgLTI2MCw3
ICsyNjAsNyBAQCBpbmxpbmUgaW50IExlbmd0aDo6aW50VmFsdWUoKSBjb25zdAogCiBpbmxpbmUg
ZmxvYXQgTGVuZ3RoOjpwZXJjZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNQZXJjZW50Tm90
Q2FsY3VsYXRlZCgpKTsKKyAgICBBU1NFUlQoaXNQZXJjZW50KCkpOwogICAgIHJldHVybiB2YWx1
ZSgpOwogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAgaW5saW5lIGJvb2wgTGVuZ3RoOjppc05lZ2F0
aXZlKCkgY29uc3QKICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gKG1fZmxvYXRWYWx1ZSA8IDApIDog
KG1faW50VmFsdWUgPCAwKTsKIH0KIAotaW5saW5lIGJvb2wgTGVuZ3RoOjppc1BlcmNlbnROb3RD
YWxjdWxhdGVkKCkgY29uc3QKK2lubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50KCkgY29uc3QK
IHsKICAgICByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQ7CiB9CkBAIC0zNDgsOSArMzQ4LDkgQEAg
aW5saW5lIGJvb2wgTGVuZ3RoOjppc1VuZGVmaW5lZCgpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGUo
KSA9PSBVbmRlZmluZWQ7CiB9CiAKLWlubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50KCkgY29u
c3QKK2lubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGlzQ2FsY3VsYXRlZCgpOwor
ICAgIHJldHVybiBpc1BlcmNlbnQoKSB8fCBpc0NhbGN1bGF0ZWQoKTsKIH0KIAogaW5saW5lIGJv
b2wgTGVuZ3RoOjppc1Bvc2l0aXZlKCkgY29uc3QKQEAgLTM5Miw3ICszOTIsNyBAQCBpbmxpbmUg
Ym9vbCBMZW5ndGg6OmlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QKIAogaW5saW5lIGJvb2wgTGVu
Z3RoOjppc1NwZWNpZmllZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzRml4ZWQoKSB8fCBpc1Bl
cmNlbnQoKTsKKyAgICByZXR1cm4gaXNGaXhlZCgpIHx8IGlzUGVyY2VudE9yQ2FsY3VsYXRlZCgp
OwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXgg
MzI5MGZhNDhmOTRkYzNmMDI5ZDJlNmI2YmZjZWQ3ZGE4NGYwZmRlMi4uMGU1MjlmOTQxZjc2NzJj
MDg2MGQxMGI0MDY2ZWUzNThkNzU2YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUzZCh4KGJvcmRlckJveFNpemUpLCB5KGJvcmRlckJveFNpemUpLCB6
KGJvcmRlckJveFNpemUpKTsKLSAgICAgICAgcmV0dXJuIG1feC5pc1BlcmNlbnROb3RDYWxjdWxh
dGVkKCkgfHwgbV95LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKTsKKyAgICAgICAgcmV0dXJuIG1f
eC5pc1BlcmNlbnQoKSB8fCBtX3kuaXNQZXJjZW50KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJs
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cAppbmRleCA0ZDg4MzYyMzNhYWVkOWFmMzZjNmU0MmNiOTRiYjg5MjliMjVjNGI4Li4xYWVhZGVk
NWE5MzMzODVkYjczOWI1YzA2ZjNkMjU3MjdiYWY2ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEZpeGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRo
PTAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRp
dmUoKSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJv
cmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdp
ZHRoLmlzRml4ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXYv
SUUgd2VpcmRuZXNzCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OnJl
Y2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQZXJjZW50OgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
ZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAoIWNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgucGVyY2VudCgp
ID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5wZXJjZW50KCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5
b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQo
KSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgucGVyY2VudCgpKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0
aDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIFJlbGF0aXZlOgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpm
dWxsUmVjYWxjKCkKICAgICAgICAgICAgIExlbmd0aCBjb2xMb2dpY2FsV2lkdGggPSBjb2x1bW4t
PnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoY29sTG9naWNhbFdpZHRo
LmlzQXV0bygpKQogICAgICAgICAgICAgICAgIGNvbExvZ2ljYWxXaWR0aCA9IGdyb3VwTG9naWNh
bFdpZHRoOwotICAgICAgICAgICAgaWYgKChjb2xMb2dpY2FsV2lkdGguaXNGaXhlZCgpIHx8IGNv
bExvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgJiYgY29sTG9naWNhbFdpZHRoLmlzWmVybygpKQor
ICAgICAgICAgICAgaWYgKChjb2xMb2dpY2FsV2lkdGguaXNGaXhlZCgpIHx8IGNvbExvZ2ljYWxX
aWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgY29sTG9naWNhbFdpZHRoLmlzWmVybygp
KQogICAgICAgICAgICAgICAgIGNvbExvZ2ljYWxXaWR0aCA9IExlbmd0aCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZWZmQ29sID0gbV90YWJsZS0+Y29sVG9FZmZDb2woY3VycmVudENvbHVtbik7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuID0gY29sdW1uLT5zcGFuKCk7CkBAIC0xODgsNyAr
MTg4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkU2NhbGVDb2x1bW5zKFJlbmRlclRhYmxlKiB0YWJs
ZSkKICAgICBib29sIHNjYWxlID0gdHJ1ZTsKICAgICB3aGlsZSAodGFibGUpIHsKICAgICAgICAg
TGVuZ3RoIHRhYmxlV2lkdGggPSB0YWJsZS0+c3R5bGUoKS53aWR0aCgpOwotICAgICAgICBpZiAo
KHRhYmxlV2lkdGguaXNBdXRvKCkgfHwgdGFibGVXaWR0aC5pc1BlcmNlbnQoKSkgJiYgIXRhYmxl
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBpZiAoKHRhYmxlV2lkdGguaXNB
dXRvKCkgfHwgdGFibGVXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgIXRhYmxlLT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRh
aW5pbmdCbG9jayA9IHRhYmxlLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxl
IChjb250YWluaW5nQmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpjb250YWluaW5nQmxvY2spICYm
ICFpczxSZW5kZXJUYWJsZUNlbGw+KCpjb250YWluaW5nQmxvY2spCiAgICAgICAgICAgICAgICAg
JiYgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLndpZHRoKCkuaXNBdXRvKCkgJiYgIWNvbnRhaW5p
bmdCbG9jay0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCkBAIC0xOTYsNyArMTk2LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkU2NhbGVDb2x1bW5zKFJlbmRlclRhYmxlKiB0YWJsZSkKIAogICAgICAg
ICAgICAgdGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlQ2Vs
bD4oY29udGFpbmluZ0Jsb2NrKQotICAgICAgICAgICAgICAgICYmIChjb250YWluaW5nQmxvY2st
PnN0eWxlKCkud2lkdGgoKS5pc0F1dG8oKSB8fCBjb250YWluaW5nQmxvY2stPnN0eWxlKCkud2lk
dGgoKS5pc1BlcmNlbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAmJiAoY29udGFpbmluZ0Jsb2Nr
LT5zdHlsZSgpLndpZHRoKCkuaXNBdXRvKCkgfHwgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLndp
ZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVy
VGFibGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqY29udGFpbmluZ0Js
b2NrKTsKICAgICAgICAgICAgICAgICBpZiAoY2VsbC5jb2xTcGFuKCkgPiAxIHx8IGNlbGwudGFi
bGUoKS0+c3R5bGUoKS53aWR0aCgpLmlzQXV0bygpKQogICAgICAgICAgICAgICAgICAgICBzY2Fs
ZSA9IGZhbHNlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0CiAg
ICAgICAgIG1pbldpZHRoICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxX
aWR0aDsKICAgICAgICAgbWF4V2lkdGggKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4
TG9naWNhbFdpZHRoOwogICAgICAgICBpZiAoc2NhbGVDb2x1bW5zKSB7Ci0gICAgICAgICAgICBp
ZiAobV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENh
bGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2
ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IHBlcmNl
bnQgPSBzdGQ6Om1pbihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgucGVy
Y2VudCgpLCByZW1haW5pbmdQZXJjZW50KTsKICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY2Fs
V2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4
TG9naWNhbFdpZHRoKSAqIDEwMCAvIHN0ZDo6bWF4KHBlcmNlbnQsIGVwc2lsb24pOwogICAgICAg
ICAgICAgICAgIG1heFBlcmNlbnQgPSBzdGQ6Om1heChsb2dpY2FsV2lkdGgsICBtYXhQZXJjZW50
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZl
TG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAvLyAgIDx0cj48dGQ+MTwvdGQ+PHRkIGNv
bHNwYW49Mj4yLTM8L3RyPgogICAgICAgICAgICAgICAgIC8vICAgPHRyPjx0ZD4xPC90ZD48dGQg
Y29sc3Bhbj0yIHdpZHRoPTEwMCU+Mi0zPC90ZD48L3RyPgogICAgICAgICAgICAgICAgIC8vIDwv
dGFibGU+Ci0gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNh
bFdpZHRoLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGlmICgh
Y29sdW1uTGF5b3V0LmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3Ro
KCk7CiAgICAgICAgICAgICAgICAgICAgIGFsbENvbHNBcmVQZXJjZW50ID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlCkBAIC0zNDEsNyArMzQxLDcgQEAgaW50IEF1dG9UYWJsZUxheW91
dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBh
ZGp1c3QgdGFibGUgbWF4IHdpZHRoIGlmIG5lZWRlZAotICAgICAgICBpZiAoY2VsbExvZ2ljYWxX
aWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgaWYgKGNlbGxMb2dpY2Fs
V2lkdGguaXNQZXJjZW50KCkpIHsKICAgICAgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiBjZWxs
TG9naWNhbFdpZHRoLnBlcmNlbnQoKSB8fCBhbGxDb2xzQXJlUGVyY2VudCkgewogICAgICAgICAg
ICAgICAgIC8vIGNhbid0IHNhdGlmeSB0aGlzIGNvbmRpdGlvbiwgdHJlYXQgYXMgdmFyaWFibGUK
ICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7CkBAIC0zNTIsMTIg
KzM1MiwxMiBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRo
KCkKICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50TWlzc2luZyA9IGNlbGxMb2dpY2FsV2lk
dGgucGVyY2VudCgpIC0gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIGludCB0b3RhbFdp
ZHRoID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcG9z
IDwgbGFzdENvbDsgKytwb3MpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2xheW91dFN0
cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lk
dGggKz0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBlZmZD
b2w7IHBvcyA8IGxhc3RDb2wgJiYgdG90YWxXaWR0aCA+IDA7ICsrcG9zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgu
aXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2xheW91dFN0cnVjdFtw
b3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGVyY2VudCA9IHBlcmNlbnRNaXNzaW5nICogc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdp
ZHRoKSAvIHRvdGFsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZHRoIC09
IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcGVyY2VudE1pc3NpbmcgLT0gcGVyY2VudDsKQEAgLTM4NCw5ICszODQs
OSBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAg
ICAgICAgICAgICAgICBpbnQgYWxsb2NhdGVkTWluTG9naWNhbFdpZHRoID0gMDsKICAgICAgICAg
ICAgICAgICBpbnQgYWxsb2NhdGVkTWF4TG9naWNhbFdpZHRoID0gMDsKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcG9zIDwgbGFzdENvbDsgKytwb3MpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fbGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdpZHRo
LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSB8fCBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2
ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkg
fHwgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJjZW50KCkp
OwogICAgICAgICAgICAgICAgICAgICAvLyB8YWxsQ29sc0FyZVBlcmNlbnR8IG1lYW5zIHRoYXQg
ZWl0aGVyIHRoZSBsb2dpY2FsV2lkdGggKm9yKiB0aGUgZWZmZWN0aXZlTG9naWNhbFdpZHRoIGFy
ZSBwZXJjZW50cywgaGFuZGxlIGJvdGggb2YgdGhlbSBoZXJlLgotICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJj
ZW50Tm90Q2FsY3VsYXRlZCgpID8gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGgucGVy
Y2VudCgpIDogbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgucGVyY2Vu
dCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3Rb
cG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgPyBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2lj
YWxXaWR0aC5wZXJjZW50KCkgOiBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxX
aWR0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW5NaW5Mb2dpY2Fs
V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnQgKiBjZWxsTWluTG9naWNhbFdpZHRoIC8g
dG90YWxQZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk1heExvZ2ljYWxX
aWR0aCA9IHN0YXRpY19jYXN0PGludD4ocGVyY2VudCAqIGNlbGxNYXhMb2dpY2FsV2lkdGggLyB0
b3RhbFBlcmNlbnQpOwogICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3NdLmVm
ZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZm
ZWN0aXZlTWluTG9naWNhbFdpZHRoLCBjb2x1bW5NaW5Mb2dpY2FsV2lkdGgpOwpAQCAtNDI2LDcg
KzQyNiw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgo
KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBp
ZiAoIWNlbGxMb2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKKyAgICAgICAgaWYgKCFjZWxsTG9n
aWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICBpZiAoY2Vs
bE1heExvZ2ljYWxXaWR0aCA+IHNwYW5NYXhMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgc3Bhbk1heExvZ2ljYWxXaWR0aCA+PSAwICYm
IHBvcyA8IGxhc3RDb2w7ICsrcG9zKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2xNYXhM
b2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1heExv
Z2ljYWxXaWR0aCwgc3RhdGljX2Nhc3Q8aW50PihzcGFuTWF4TG9naWNhbFdpZHRoID8gY2VsbE1h
eExvZ2ljYWxXaWR0aCAqIHN0YXRpY19jYXN0PGZsb2F0PihtX2xheW91dFN0cnVjdFtwb3NdLmVm
ZmVjdGl2ZU1heExvZ2ljYWxXaWR0aCkgLyBzcGFuTWF4TG9naWNhbFdpZHRoIDogY2VsbE1heExv
Z2ljYWxXaWR0aCkpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojps
YXlvdXQoKQogICAgIGlmIChhdmFpbGFibGUgPiAwICYmIGhhdmVQZXJjZW50KSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVmZkNvbHM7ICsraSkgewogICAgICAgICAgICAgTGVu
Z3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lk
dGg7Ci0gICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7CisgICAgICAg
ICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAg
ICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBzdGQ6Om1heDxpbnQ+KG1fbGF5b3V0U3Ry
dWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxXaWR0aCwgdGFibGVMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgICAgICAgICBhdmFpbGFi
bGUgKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggLSBjZWxsTG9naWNh
bFdpZHRoOwogICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNh
bFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgIGludCBleGNlc3MgPSB0YWJsZUxvZ2lj
YWxXaWR0aCAqICh0b3RhbFBlcmNlbnQgLSAxMDApIC8gMTAwOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbkVmZkNvbHM7IGk7ICkgewogICAgICAgICAgICAgICAgIC0taTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlz
UGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVk
TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpbnQgcmVkdWN0aW9uID0gc3RkOjpt
aW4oY2VsbExvZ2ljYWxXaWR0aCwgIGV4Y2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIHRo
ZSBsaW5lcyBiZWxvdyBtaWdodCBsb29rIGluY29uc2lzdGVudCwgYnV0IHRoYXQncyB0aGUgd2F5
IGl0J3MgaGFuZGxlZCBpbiBtb3ppbGxhCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBBdXRvVGFi
bGVMYXlvdXQ6OmxheW91dCgpCiAgICAgaWYgKGF2YWlsYWJsZSA+IDAgJiYgbV9oYXNQZXJjZW50
ICYmIHRvdGFsUGVyY2VudCA8IDEwMCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5FZmZDb2xzOyArK2kpIHsKICAgICAgICAgICAgIExlbmd0aCYgbG9naWNhbFdpZHRoID0gbV9s
YXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgaWYgKGxv
Z2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChs
b2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKICAgICAgICAgICAgICAgICBpbnQgY2VsbExvZ2lj
YWxXaWR0aCA9IGF2YWlsYWJsZSAqIGxvZ2ljYWxXaWR0aC5wZXJjZW50KCkgLyB0b3RhbFBlcmNl
bnQ7CiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIC09IGNlbGxMb2dpY2FsV2lkdGg7CiAgICAg
ICAgICAgICAgICAgdG90YWxQZXJjZW50IC09IGxvZ2ljYWxXaWR0aC5wZXJjZW50KCk7CkBAIC03
MzMsMTQgKzczMywxNCBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG5FZmZDb2xzOyBpOyApIHsKICAgICAgICAgICAgICAgICAt
LWk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVj
dFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxX
aWR0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhCZXlv
bmRNaW4gKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggLSBtX2xheW91
dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5FZmZDb2xzOyBpICYmIGxv
Z2ljYWxXaWR0aEJleW9uZE1pbiA+IDA7ICkgewogICAgICAgICAgICAgICAgIC0taTsKICAgICAg
ICAgICAgICAgICBMZW5ndGgmIGxvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgbWluTWF4RGlmZiA9IG1fbGF5
b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoIC0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZm
ZWN0aXZlTWluTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpbnQgcmVkdWNlID0g
YXZhaWxhYmxlICogbWluTWF4RGlmZiAvIGxvZ2ljYWxXaWR0aEJleW9uZE1pbjsKICAgICAgICAg
ICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggKz0gcmVk
dWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmlu
ZGV4IGYwOGQyOWFkNTQ5YjNhMmNlZTlkYzZiYTM3YzBiNzUxMjU3NWNhNDEuLjRiNTRhM2U1OGVk
M2ZlNDg3Njk2N2MzNGJkMWRjZGJmZTA2NjU2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBpbnQgRml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+c3Bhbk9mRWZm
Q29sKGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKChjb2xTdHlsZUxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29sU3R5bGVMb2dpY2FsV2lk
dGguaXNQZXJjZW50KCkpICYmIGNvbFN0eWxlTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKChjb2xTdHlsZUxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29sU3R5
bGVMb2dpY2FsV2lkdGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpICYmIGNvbFN0eWxlTG9naWNh
bFdpZHRoLmlzUG9zaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVm
ZmVjdGl2ZUNvbHVtbl0gPSBjb2xTdHlsZUxvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICBt
X3dpZHRoW2N1cnJlbnRFZmZlY3RpdmVDb2x1bW5dICo9IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVD
b2x1bW47CiAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZmVjdGl2ZUNvbFdpZHRoICog
c3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEZp
eGVkVGFibGVMYXlvdXQ6OmFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVu
aXQmIG1pbldpZHRoLCBMYQogICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgdGhlIHR3byBpbm5lciB0
YWJsZXMgc2hvdWxkIGJlIGFzIGxhcmdlIGFzIHRoZSBvdXRlciB0YWJsZS4gCiAgICAgLy8gV2Ug
Y2FuIGFjaGlldmUgdGhpcyBlZmZlY3QgYnkgbWFraW5nIHRoZSBtYXh3aWR0aCBvZiBmaXhlZCB0
YWJsZXMgd2l0aCBwZXJjZW50YWdlCiAgICAgLy8gd2lkdGhzIGJlIGluZmluaXRlLgotICAgIGlm
IChtX3RhYmxlLT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpICYmIG1heFdpZHRo
IDwgdGFibGVNYXhXaWR0aCkKKyAgICBpZiAobV90YWJsZS0+c3R5bGUoKS5sb2dpY2FsV2lkdGgo
KS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSAmJiBtYXhXaWR0aCA8IHRhYmxlTWF4V2lkdGgpCiAg
ICAgICAgIG1heFdpZHRoID0gdGFibGVNYXhXaWR0aDsKIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgRml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgaWYgKG1fd2lkdGhbaV0u
aXNGaXhlZCgpKSB7CiAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLnZhbHVl
KCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVkV2lkdGggKz0gY2FsY1dpZHRoW2ldOwotICAgICAg
ICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAobV93aWR0aFtpXS5pc1BlcmNlbnQoKSkgewogICAgICAgICAgICAgY2Fs
Y1dpZHRoW2ldID0gdmFsdWVGb3JMZW5ndGgobV93aWR0aFtpXSwgdGFibGVMb2dpY2FsV2lkdGgp
OwogICAgICAgICAgICAgdG90YWxQZXJjZW50V2lkdGggKz0gY2FsY1dpZHRoW2ldOwogICAgICAg
ICAgICAgdG90YWxQZXJjZW50ICs9IG1fd2lkdGhbaV0ucGVyY2VudCgpOwpAQCAtMjU0LDcgKzI1
NCw3IEBAIHZvaWQgRml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgIGlmICh0
b3RhbFBlcmNlbnQpIHsKICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnRXaWR0aCA9IDA7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5FZmZDb2xzOyBpKyspIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50Tm90Q2FsY3VsYXRl
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoW2ldLmlzUGVyY2VudCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLnBlcmNl
bnQoKSAqICh0YWJsZUxvZ2ljYWxXaWR0aCAtIHRvdGFsRml4ZWRXaWR0aCkgLyB0b3RhbFBlcmNl
bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnRXaWR0aCArPSBjYWxjV2lk
dGhbaV07CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IGQyZGRhNGRjYzkyNTZmMWY5MWNmMGMxNTY2MzM2NzE0ZGNmMjky
ZTAuLjE4Zjk0NjlhZDNiNTI1M2U0YWY0YmZjZmZhMmIyNDVjMjFiZjY1NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wg
UmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0CiAKICAgICBMZW5ndGgg
bG9naWNhbEhlaWdodExlbmd0aCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpOwogICAgIGJvb2wg
aGFzQXV0b0hlaWdodCA9IGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCk7Ci0gICAgaWYgKGxv
Z2ljYWxIZWlnaHRMZW5ndGguaXNQZXJjZW50KCkgJiYgIWRvY3VtZW50KCkuaW5RdWlya3NNb2Rl
KCkpIHsKKyAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KSAmJiAhZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkgewogICAgICAgICBoYXNBdXRvSGVpZ2h0
ID0gdHJ1ZTsKICAgICAgICAgZm9yIChSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2so
KTsgIWNiLT5pc1JlbmRlclZpZXcoKTsgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAg
ICAgICAgICAgIGlmIChjYi0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpIHx8IGNi
LT5pc1RhYmxlQ2VsbCgpKQpAQCAtODIxLDcgKzgyMSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omlz
U2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0CiAKICAgICAvLyBJZiB0aGUgaGVpZ2h0IGlzIDAg
b3IgYXV0bywgdGhlbiB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSBzZWxmLWNvbGxhcHNpbmcgYmxv
Y2sgZGVwZW5kcwogICAgIC8vIG9uIHdoZXRoZXIgd2UgaGF2ZSBjb250ZW50IHRoYXQgaXMgYWxs
IHNlbGYtY29sbGFwc2luZyBvciBub3QuCi0gICAgaWYgKGhhc0F1dG9IZWlnaHQgfHwgKChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmlzRml4ZWQoKSB8fCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzUGVyY2Vu
dCgpKSAmJiBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzWmVybygpKSkgeworICAgIGlmIChoYXNBdXRv
SGVpZ2h0IHx8ICgobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpeGVkKCkgfHwgbG9naWNhbEhlaWdo
dExlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgbG9naWNhbEhlaWdodExlbmd0aC5p
c1plcm8oKSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGhhcyBpbmxpbmUgY2hpbGRyZW4s
IHNlZSBpZiB3ZSBnZW5lcmF0ZWQgYW55IGxpbmUgYm94ZXMuICBJZiB3ZSBoYXZlIGFueQogICAg
ICAgICAvLyBsaW5lIGJveGVzLCB0aGVuIHdlIGNhbid0IGJlIHNlbGYtY29sbGFwc2luZywgc2lu
Y2Ugd2UgaGF2ZSBjb250ZW50LgogICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKQEAgLTIy
NTYsNyArMjI1Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyUGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzRnJvbShSZW5kZXJCb3gmIHBhcmVudCkKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OnRl
eHRJbmRlbnRPZmZzZXQoKSBjb25zdAogewogICAgIExheW91dFVuaXQgY3cgPSAwOwotICAgIGlm
IChzdHlsZSgpLnRleHRJbmRlbnQoKS5pc1BlcmNlbnQoKSkKKyAgICBpZiAoc3R5bGUoKS50ZXh0
SW5kZW50KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIGN3ID0gY29udGFpbmlu
Z0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS50ZXh0SW5kZW50KCksIGN3KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzQyZTQ5NDJiNDYwZDFiOGIzZTE4Y2ExYzQ1ZTMz
NTc1MzRhN2FmYS4uODE1YzQzYjQ2ZWY0YzQyZWQ3NzVjMmVlMjMzMjUzNmM2NTFjNjQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTk3OCw3ICs5NzgsNyBAQCBi
b29sIFJlbmRlckJveDo6aGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSBj
b25zdAogCiBib29sIFJlbmRlckJveDo6bmVlZHNQcmVmZXJyZWRXaWR0aHNSZWNhbGN1bGF0aW9u
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5wYWRkaW5nU3RhcnQoKS5pc1BlcmNlbnQo
KSB8fCBzdHlsZSgpLnBhZGRpbmdFbmQoKS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4gc3R5bGUo
KS5wYWRkaW5nU3RhcnQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8fCBzdHlsZSgpLnBhZGRp
bmdFbmQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIH0KIAogSW50U2l6ZSBSZW5kZXJCb3g6
OnNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0CkBAIC0yNzgyLDggKzI3ODIsOCBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIC8vIGlzIHNwZWNpZmllZC4gV2hlbiB3ZSdyZSBwcmlu
dGluZywgd2UgYWxzbyBuZWVkIHRoaXMgcXVpcmsgaWYgdGhlIGJvZHkgb3Igcm9vdCBoYXMgYSBw
ZXJjZW50YWdlIAogICAgIC8vIGhlaWdodCBzaW5jZSB3ZSBkb24ndCBzZXQgYSBoZWlnaHQgaW4g
UmVuZGVyVmlldyB3aGVuIHdlJ3JlIHByaW50aW5nLiBTbyB3aXRob3V0IHRoaXMgcXVpcmssIHRo
ZSAKICAgICAvLyBoZWlnaHQgaGFzIG5vdGhpbmcgdG8gYmUgYSBwZXJjZW50YWdlIG9mLCBhbmQg
aXQgZW5kcyB1cCBiZWluZyAwLiBUaGF0IGlzIGJhZC4KLSAgICBib29sIHBhZ2luYXRlZENvbnRl
bnROZWVkc0Jhc2VIZWlnaHQgPSBkb2N1bWVudCgpLnByaW50aW5nKCkgJiYgaC5pc1BlcmNlbnQo
KQotICAgICAgICAmJiAoaXNSb290KCkgfHwgKGlzQm9keSgpICYmIGRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzUGVyY2Vu
dCgpKSkgJiYgIWlzSW5saW5lKCk7CisgICAgYm9vbCBwYWdpbmF0ZWRDb250ZW50TmVlZHNCYXNl
SGVpZ2h0ID0gZG9jdW1lbnQoKS5wcmludGluZygpICYmIGguaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkKKyAgICAgICAgJiYgKGlzUm9vdCgpIHx8IChpc0JvZHkoKSAmJiBkb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSkpICYmICFpc0lubGluZSgpOwogICAgIGlmIChzdHJldGNoZXNUb1Zp
ZXdwb3J0KCkgfHwgcGFnaW5hdGVkQ29udGVudE5lZWRzQmFzZUhlaWdodCkgewogICAgICAgICBM
YXlvdXRVbml0IG1hcmdpbnMgPSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSArIGNvbGxhcHNlZE1h
cmdpbkFmdGVyKCk7CiAgICAgICAgIExheW91dFVuaXQgdmlzaWJsZUhlaWdodCA9IHZpZXcoKS5w
YWdlT3JWaWV3TG9naWNhbEhlaWdodCgpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KGNvbnN0IExlbmd0aCYKIHsKICAgICBpZiAoaGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgcmV0
dXJuIGhlaWdodC52YWx1ZSgpOwotICAgIGlmIChoZWlnaHQuaXNQZXJjZW50KCkpCisgICAgaWYg
KGhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVQ
ZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTI4
OTEsNyArMjg5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNvbnN0CiAgICAgfSBlbHNlIGlmIChj
YnN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50Qm94SGVpZ2h0ID0gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94
U2l6aW5nKGNic3R5bGUubG9naWNhbEhlaWdodCgpLnZhbHVlKCkpOwogICAgICAgICBhdmFpbGFi
bGVIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjYi0+Y29uc3RyYWluQ29udGVudEJv
eExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gY2ItPnNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKSkpOwotICAgIH0gZWxzZSBpZiAoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCku
aXNQZXJjZW50KCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQp
IHsKKyAgICB9IGVsc2UgaWYgKGNic3R5bGUubG9naWNhbEhlaWdodCgpLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjdXIgYW5kIGNvbXB1dGUgdGhlIHBlcmNlbnRhZ2Ug
aGVpZ2h0IGZvciBvdXIgY29udGFpbmluZyBibG9jay4KICAgICAgICAgTGF5b3V0VW5pdCBoZWln
aHRXaXRoU2Nyb2xsYmFyID0gY2ItPmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjYnN0
eWxlLmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIGlmIChoZWlnaHRXaXRoU2Nyb2xsYmFyICE9
IC0xKSB7CkBAIC0yOTM2LDggKzI5MzYsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWxkQwogCiBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGlu
Z01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBTaG91bGRDb21wdXRlUHJlZmVy
cmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBtaW5M
b2dpY2FsV2lkdGggPSAoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9PSBDb21wdXRlUHJlZmVycmVk
ICYmIHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCkuaXNQZXJjZW50KCkpIHx8IHN0eWxlKCkubG9n
aWNhbE1pbldpZHRoKCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCkpOwotICAgIExh
eW91dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gKHNob3VsZENvbXB1dGVQcmVmZXJyZWQgPT0gQ29t
cHV0ZVByZWZlcnJlZCAmJiBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgpKSB8
fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkgPyBsb2dpY2FsV2lkdGgg
OiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0
aCgpKTsKKyAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aCA9IChzaG91bGRDb21wdXRlUHJl
ZmVycmVkID09IENvbXB1dGVQcmVmZXJyZWQgJiYgc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgfHwgc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKS5pc1Vu
ZGVmaW5lZCgpID8gbG9naWNhbFdpZHRoIDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNp
bmcoc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKSk7CisgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2Fs
V2lkdGggPSAoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9PSBDb21wdXRlUHJlZmVycmVkICYmIHN0
eWxlKCkubG9naWNhbE1heFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHx8IHN0eWxl
KCkubG9naWNhbE1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCkubG9naWNhbE1heFdpZHRoKCkpOwog
ICAgIHJldHVybiBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIHN0ZDo6bWluKGxvZ2ljYWxXaWR0
aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9CiAKQEAgLTI5NjUsNyArMjk2NSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9n
aWNhbFdpZHRoKSBjb25zCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTEwNzEKICAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNJbnRy
aW5zaWMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY3csIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgo
KSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBpZiAoY3cg
PiAwIHx8ICghY3cgJiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFp
bmVyTG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSkpCisgICAgICAgICAgICBpZiAoY3cgPiAwIHx8
ICghY3cgJiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFpbmVyTG9n
aWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluaW11bVZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY3cpKTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKQEAgLTMwMzIsNyArMzAzMiw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvCiAgICAg
ICAgICAgICAgICAgLy8gdGFibGUgY2VsbHMgdXNpbmcgcGVyY2VudGFnZSBoZWlnaHRzLgogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1hZGUgYmxvY2stZmxvdy1h
d2FyZS4gIElmIHRoZSBjZWxsIGFuZCBpbWFnZSBhcmUgcGVycGVuZGljdWxhciBibG9jay1mbG93
cywgdGhpcyBpc24ndCByaWdodC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5OTcKLSAgICAgICAgICAgICAgICB3aGlsZSAoY2Ig
JiYgIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
QXV0bygpIHx8IGNiLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnQoKSkpIHsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAoY2ItPnN0
eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8IGNiLT5zdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGNiLT5pc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBs
ZXQgdGFibGUgY2VsbHMgc3F1ZWV6ZSBwZXJjZW50LWhlaWdodCByZXBsYWNlZCBlbGVtZW50cwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzU5PgpAQCAtMzA2MCwxMyArMzA2MCwxMyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxh
YmxlTG9naQogICAgIC8vIFdlIG5lZWQgdG8gc3RvcCBoZXJlLCBzaW5jZSB3ZSBkb24ndCB3YW50
IHRvIGluY3JlYXNlIHRoZSBoZWlnaHQgb2YgdGhlIHRhYmxlCiAgICAgLy8gYXJ0aWZpY2lhbGx5
LiAgV2UncmUgZ29pbmcgdG8gcmVseSBvbiB0aGlzIGNlbGwgZ2V0dGluZyBleHBhbmRlZCB0byBz
b21lIG5ldwogICAgIC8vIGhlaWdodCwgYW5kIHRoZW4gd2hlbiB3ZSBsYXkgb3V0IGFnYWluIHdl
J2xsIHVzZSB0aGUgY2FsY3VsYXRpb24gYmVsb3cuCi0gICAgaWYgKGlzVGFibGVDZWxsKCkgJiYg
KGguaXNBdXRvKCkgfHwgaC5pc1BlcmNlbnQoKSkpIHsKKyAgICBpZiAoaXNUYWJsZUNlbGwoKSAm
JiAoaC5pc0F1dG8oKSB8fCBoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkgewogICAgICAgICBp
ZiAoaGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJu
IG92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxI
ZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfQogCi0gICAg
aWYgKGguaXNQZXJjZW50KCkgJiYgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWlzUmVuZGVy
Rmxvd1RocmVhZCgpKSB7CisgICAgaWYgKGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgJiYgaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGlmIHRoZSBjb250YWluaW5nQmxvY2sgaGFzIGEgcGVy
cGVuZGljdWxhciB3cml0aW5nIG1vZGUuCiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVp
Z2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29udGFpbmlu
Z0Jsb2NrKCkpOwogICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgoaCwgYXZhaWxhYmxlSGVpZ2h0KSk7CkBAIC00NDk4
LDcgKzQ0OTgsNyBAQCBzdGF0aWMgYm9vbCBsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUoY29uc3Qg
UmVuZGVyQm94JiByZW5kZXJCb3gpCiAgICAgaWYgKGJveC0+aGFzT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGJveC0+b3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgIT0gLTE7CiAjZW5kaWYKLSAgICBpZiAoYm94
LT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpKQorICAgIGlmIChib3gtPnN0eWxl
KCkubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUoKmJveC0+Y29udGFpbmluZ0Jsb2NrKCkpOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU1MCw3ICs0NTUwLDcgQEAgYm9vbCBSZW5kZXJCb3g6OnBl
cmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlRnJvbUJsb2NrKGNvbnN0IFJlbmRlckJs
b2NrKgogICAgIC8vIGhlaWdodC4KICAgICBpZiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzRml4ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNiLT5zdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKS5pc1BlcmNlbnQoKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNw
ZWNpZmllZEhlaWdodCkKKyAgICBpZiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVk
SGVpZ2h0KQogICAgICAgICByZXR1cm4gcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFi
bGVGcm9tQmxvY2soY2ItPmNvbnRhaW5pbmdCbG9jaygpLCBjYi0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpOwogICAgIGlmIChjYi0+aXNSZW5kZXJWaWV3KCkgfHwgaW5RdWlya3NNb2RlIHx8IGlz
T3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDU5NSw4ICs0NTk1LDggQEAgYm9vbCBSZW5kZXJCb3g6Omhhc1Vuc3BsaXR0YWJs
ZVNjcm9sbGluZ092ZXJmbG93KCkgY29uc3QKICAgICAvLyBjb25kaXRpb25zLCBidXQgaXQgc2hv
dWxkIHdvcmsgb3V0IHRvIGJlIGdvb2QgZW5vdWdoIGZvciBjb21tb24gY2FzZXMuIFBhZ2luYXRp
bmcgb3ZlcmZsb3cKICAgICAvLyB3aXRoIHNjcm9sbGJhcnMgcHJlc2VudCBpcyBub3QgdGhlIGVu
ZCBvZiB0aGUgd29ybGQgYW5kIGlzIHdoYXQgd2UgdXNlZCB0byBkbyBpbiB0aGUgb2xkIG1vZGVs
IGFueXdheS4KICAgICByZXR1cm4gIXN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzSW50cmluc2lj
T3JBdXRvKCkKLSAgICAgICAgfHwgKCFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc0ludHJp
bnNpY09yQXV0bygpICYmICFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgp
ICYmICghc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgcGVyY2VudGFn
ZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykpKQotICAgICAgICB8fCAoIXN0eWxlKCku
bG9naWNhbE1pbkhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgc3R5bGUoKS5sb2dpY2Fs
TWluSGVpZ2h0KCkuaXNQb3NpdGl2ZSgpICYmICghc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCku
aXNQZXJjZW50KCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykp
KTsKKyAgICAgICAgfHwgKCFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc0ludHJpbnNpY09y
QXV0bygpICYmICFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpICYmICgh
c3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgcGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykpKQorICAgICAgICB8fCAoIXN0
eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgc3R5bGUoKS5s
b2dpY2FsTWluSGVpZ2h0KCkuaXNQb3NpdGl2ZSgpICYmICghc3R5bGUoKS5sb2dpY2FsTWluSGVp
Z2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJ
c1Jlc29sdmFibGUodGhpcykpKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OmlzVW5zcGxpdHRhYmxl
Rm9yUGFnaW5hdGlvbigpIGNvbnN0CkBAIC00ODY5LDIzICs0ODY5LDIzIEBAIHZvaWQgUmVuZGVy
Qm94OjphcHBseVRvcExlZnRMb2NhdGlvbk9mZnNldFdpdGhGbGlwcGluZyhMYXlvdXRQb2ludCYg
cG9pbnQpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNSZWxhdGl2ZURpbWVuc2lvbnMoKSBj
b25zdAogewotICAgIHJldHVybiBzdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudCgpIHx8IHN0eWxl
KCkud2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICAgICAgfHwgc3R5bGUoKS5tYXhIZWlnaHQo
KS5pc1BlcmNlbnQoKSB8fCBzdHlsZSgpLm1heFdpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAg
ICAgIHx8IHN0eWxlKCkubWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS5taW5XaWR0
aCgpLmlzUGVyY2VudCgpOworICAgIHJldHVybiBzdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpIHx8IHN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQor
ICAgICAgICB8fCBzdHlsZSgpLm1heEhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8
IHN0eWxlKCkubWF4V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQorICAgICAgICB8fCBz
dHlsZSgpLm1pbkhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IHN0eWxlKCkubWlu
V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6Omhh
c1JlbGF0aXZlTG9naWNhbEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlKCkubG9n
aWNhbEhlaWdodCgpLmlzUGVyY2VudCgpCi0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxN
aW5IZWlnaHQoKS5pc1BlcmNlbnQoKQotICAgICAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4
SGVpZ2h0KCkuaXNQZXJjZW50KCk7CisgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1pbkhl
aWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNh
bE1heEhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwogfQogCiBib29sIFJlbmRlckJv
eDo6aGFzUmVsYXRpdmVMb2dpY2FsV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBzdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpCi0gICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1p
bldpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgo
KS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1heFdpZHRo
KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcmtCb3hGb3JS
ZWxheW91dEFmdGVyU3BsaXQoUmVuZGVyQm94JiBib3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBkYjk4MmY4YjVhMGFlOTFh
ZjIwZDI0YTIzZmE4Zjg4NDU3NmJjYzI0Li5hMzNiY2VkZmE2YTAwMGVmODI2YmFiNTc4NGRhMjI2
YmM1ZThmNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpIGNvbnN0
CiAgICAgLy8gRm9yIHBlcmNlbnRhZ2UgaGVpZ2h0czogVGhlIHBlcmNlbnRhZ2UgaXMgY2FsY3Vs
YXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIGJveCdzCiAg
ICAgLy8gY29udGFpbmluZyBibG9jay4gSWYgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBi
bG9jayBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRlcGVuZHMKICAgICAv
LyBvbiBjb250ZW50IGhlaWdodCksIGFuZCB0aGlzIGVsZW1lbnQgaXMgbm90IGFic29sdXRlbHkg
cG9zaXRpb25lZCwgdGhlIHZhbHVlIGNvbXB1dGVzIHRvICdhdXRvJy4KLSAgICBpZiAoIWxvZ2lj
YWxIZWlnaHRMZW5ndGguaXNQZXJjZW50KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwg
ZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAoIWxvZ2ljYWxIZWlnaHRMZW5ndGgu
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgZG9j
dW1lbnQoKS5pblF1aXJrc01vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
QW5vbnltb3VzIGJsb2NrIGJveGVzIGFyZSBpZ25vcmVkIHdoZW4gcmVzb2x2aW5nIHBlcmNlbnRh
Z2UgdmFsdWVzIHRoYXQgd291bGQgcmVmZXIgdG8gaXQ6CkBAIC0yOTksMTMgKzI5OSwxMyBAQCBM
YXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkg
Y29uc3QKICAgICAvLyBjYWxjdWxhdGUgdGhlIHBlcmNlbnQgb2Zmc2V0IGJhc2VkIG9uIHRoaXMg
aGVpZ2h0LgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI2Mzk2Pi4KICAgICBpZiAoIXN0eWxlKCkudG9wKCkuaXNBdXRvKCkKLSAgICAgICAgJiYg
KCFzdHlsZSgpLnRvcCgpLmlzUGVyY2VudCgpCisgICAgICAgICYmICghc3R5bGUoKS50b3AoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKQogICAgICAgICAgICAgfHwgIWNvbnRhaW5pbmdCbG9jaygp
LT5oYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpCiAgICAgICAg
ICAgICB8fCBjb250YWluaW5nQmxvY2soKS0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKSkKICAgICAg
ICAgb2Zmc2V0LmV4cGFuZCgwLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLnRvcCgpLCAhc3R5bGUo
KS50b3AoKS5pc0ZpeGVkKCkgPyBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkg
OiBMYXlvdXRVbml0KCkpKTsKIAogICAgIGVsc2UgaWYgKCFzdHlsZSgpLmJvdHRvbSgpLmlzQXV0
bygpCi0gICAgICAgICYmICghc3R5bGUoKS5ib3R0b20oKS5pc1BlcmNlbnQoKQorICAgICAgICAm
JiAoIXN0eWxlKCkuYm90dG9tKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkKICAgICAgICAgICAg
IHx8ICFjb250YWluaW5nQmxvY2soKS0+aGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0
aEF1dG9IZWlnaHQoKQogICAgICAgICAgICAgfHwgY29udGFpbmluZ0Jsb2NrKCktPnN0cmV0Y2hl
c1RvVmlld3BvcnQoKSkpCiAgICAgICAgIG9mZnNldC5leHBhbmQoMCwgLXZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCkuYm90dG9tKCksICFzdHlsZSgpLmJvdHRvbSgpLmlzRml4ZWQoKSA/IGNvbnRhaW5p
bmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSA6IExheW91dFVuaXQoKSkpOwpAQCAtNTE5LDcg
KzUxOSw3IEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwcGVkT2Zmc2V0SGVp
Z2h0KCkgY29uc3QKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NT
UGFkZGluZyhjb25zdCBMZW5ndGgmIHBhZGRpbmcpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCB3
ID0gMDsKLSAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKKyAgICBpZiAocGFkZGluZy5pc1Bl
cmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKTsKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRp
bmcsIHcpOwogfQpAQCAtOTMyLDggKzkzMiw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyhTdHlsZUltYWdlKiBpCiAg
ICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIGltYWdlLT5jb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyh0aGlzLCBpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5z
aWNSYXRpbyk7CiAKLSAgICBBU1NFUlQoIWludHJpbnNpY1dpZHRoLmlzUGVyY2VudCgpKTsKLSAg
ICBBU1NFUlQoIWludHJpbnNpY0hlaWdodC5pc1BlcmNlbnQoKSk7CisgICAgQVNTRVJUKCFpbnRy
aW5zaWNXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSk7CisgICAgQVNTRVJUKCFpbnRyaW5z
aWNIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpOwogCiAgICAgTGF5b3V0U2l6ZSByZXNv
bHZlZFNpemUoaW50cmluc2ljV2lkdGgudmFsdWUoKSwgaW50cmluc2ljSGVpZ2h0LnZhbHVlKCkp
OwogICAgIExheW91dFNpemUgbWluaW11bVNpemUocmVzb2x2ZWRTaXplLndpZHRoKCkgPiAwID8g
MSA6IDAsIHJlc29sdmVkU2l6ZS5oZWlnaHQoKSA+IDAgPyAxIDogMCk7CkBAIC05ODMsMTIgKzk4
MywxMiBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGls
ZVNpemUoY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZQogCiAgICAgICAgICAgICBpZiAobGF5ZXJX
aWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgobGF5ZXJX
aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyV2lkdGguaXNQZXJjZW50
KCkpCisgICAgICAgICAgICBlbHNlIGlmIChsYXllcldpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRl
ZCgpKQogICAgICAgICAgICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxh
eWVyV2lkdGgsIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobGF5ZXJIZWlnaHQuaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHRp
bGVTaXplLnNldEhlaWdodChsYXllckhlaWdodC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGxheWVySGVpZ2h0LmlzUGVyY2VudCgpKQorICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJI
ZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUu
c2V0SGVpZ2h0KHZhbHVlRm9yTGVuZ3RoKGxheWVySGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXpl
LmhlaWdodCgpKSk7CiAKICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgdmFsdWVzIGlzIGF1
dG8gd2UgaGF2ZSB0byB1c2UgdGhlIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDUy
YjRhM2Y1NTYyN2IxYmNjZWYyMWQ1MWUyMTMyNmQ0Y2E5MmUyZDMuLmRiNmUwOTk0ZGU0NjBlNDA2
ZjBmZjVhZDAyMmE1NDkyOWI4ZmZlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC05MzQsNyArOTM0
LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZs
ZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOwotICAgICAgICBpZiAocmVsYXlvdXRD
aGlsZHJlbiB8fCAoY2hpbGQtPmlzUmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgo
KS5pc1BlcmNlbnQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpCisg
ICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZCgpICYmIChj
aGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IGNoaWxkLT5z
dHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkKICAgICAgICAgICAgIHx8
IChjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBpczxSZW5kZXJCbG9ja0Zsb3c+
KCpjaGlsZCkpKSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwogCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6Y2xlYXJMaW5lQ2xhbXAoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGVTaXplKCk7Ci0gICAgICAgIGlmICgoY2hpbGQtPmlz
UmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBjaGls
ZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpCisgICAgICAgIGlmICgoY2hpbGQtPmlz
UmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0
ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkp
CiAgICAgICAgICAgICB8fCAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8
UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldENoaWxk
TmVlZHNMYXlvdXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGQzNjc5ZDZhMTM4MGNkZDQ0YzZkMWRhNWMxYjQ2YTQ5YTc0MGY3N2YuLjljN2I4
ODI0NmQ1MWUxMjQ0ZDZkODRkODY2NmZmNzFlMmEwMTgzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBi
b29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmlsbExheWVyCiAKICAgICBpZiAoc2l6ZVR5cGUgPT0gU2l6ZUxlbmd0aCkgewogICAg
ICAgICBMZW5ndGhTaXplIHNpemUgPSBsYXllci0+c2l6ZUxlbmd0aCgpOwotICAgICAgICBpZiAo
c2l6ZS53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHNpemUuaGVpZ2h0KCkuaXNQZXJjZW50KCkpCisg
ICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgc2l6ZS5o
ZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRoZXIgYW4gaW50cmluc2ljIHdpZHRo
IG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBpcyBkZXRlcm1pbmVkIGFzIGZvciAn
Y29udGFpbicuCiAgICAgICAgIGlmICgoc2l6ZS53aWR0aCgpLmlzQXV0bygpIHx8IHNpemUuaGVp
Z2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRlZEltYWdlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCBkN2I3NWQ4ZWE1NTlmODM0ZTRlMDRlOWJlZDc1MzljODkzNGMzNDdkLi5lMTg3YWUxMzM5YmE0
ZWM3Zjg3Y2RhYmU2MzQyODVjNmQxNTNlNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpYwogICAgICAgICAgICAgZGVmYXVsdExhYmVsV2lkdGgg
Kz0gYnV0dG9uUmVuZGVyZXItPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgYWZ0ZXJCdXR0
b25TcGFjaW5nOwogICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYo
c3RkOjptYXgobWluRGVmYXVsdExhYmVsV2lkdGgsIGRlZmF1bHRMYWJlbFdpZHRoKSkpOwogCi0g
ICAgaWYgKCFzdHlsZSgpLndpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKCFzdHlsZSgpLndp
ZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IG1heExvZ2ljYWxXaWR0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHAKaW5kZXggYzI5MGRiZTI5NmJiZGY0NmYzY2UyMWViM2M3N2RiNDU3YWZkMjli
NS4uMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3QgTGVu
Z3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgCiAgICAgICAgIC8vIENvdW50IHRoZSB0
b3RhbCBwZXJjZW50YWdlIG9mIGFsbCBvZiB0aGUgcGVyY2VudGFnZSBjb2x1bW5zL3Jvd3MgLT4g
dG90YWxQZXJjZW50CiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dz
IHdoaWNoIGFyZSBwZXJjZW50YWdlcyAtPiBjb3VudFBlcmNlbnQKLSAgICAgICAgaWYgKGdyaWRb
aV0uaXNQZXJjZW50KCkpIHsKKyAgICAgICAgaWYgKGdyaWRbaV0uaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpIHsKICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBzdGQ6Om1heChpbnRWYWx1ZUZv
ckxlbmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKICAgICAgICAgICAgIHRvdGFsUGVy
Y2VudCArPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRQZXJjZW50Kys7CkBAIC0y
NDQsNyArMjQ0LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYg
YXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgaW50IHJlbWFp
bmluZ1BlcmNlbnQgPSByZW1haW5pbmdMZW47CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBncmlkTGVuOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7
CisgICAgICAgICAgICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAoZ3JpZExheW91dFtpXSAqIHJlbWFpbmluZ1Bl
cmNlbnQpIC8gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xlbiAtPSBn
cmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgfQpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3Jp
ZCwgaW50IGF2YWlsYWJsCiAgICAgICAgICAgICBpbnQgY2hhbmdlUGVyY2VudCA9IDA7CiAKICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JpZExlbjsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGdyaWRbaV0uaXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ3Jp
ZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VQZXJjZW50ID0gKHJlbWFpbmluZ1BlcmNlbnQgKiBncmlkTGF5b3V0W2ldKSAvIHRvdGFsUGVy
Y2VudDsKICAgICAgICAgICAgICAgICAgICAgZ3JpZExheW91dFtpXSArPSBjaGFuZ2VQZXJjZW50
OwogICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdMZW4gLT0gY2hhbmdlUGVyY2VudDsKQEAg
LTMyMCw3ICszMjAsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlz
JiBheGlzLCBjb25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibAogICAgICAgICBpbnQgY2hh
bmdlUGVyY2VudCA9IDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAg
ICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAg
IGNoYW5nZVBlcmNlbnQgPSByZW1haW5pbmdQZXJjZW50IC8gY291bnRQZXJjZW50OwogICAgICAg
ICAgICAgICAgIGdyaWRMYXlvdXRbaV0gKz0gY2hhbmdlUGVyY2VudDsKICAgICAgICAgICAgICAg
ICByZW1haW5pbmdMZW4gLT0gY2hhbmdlUGVyY2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCmluZGV4IGQ2MWQxOTBjMmYxNjYzMjQyMjQzODQ2NDc5YjQ4OTY3Yzhl
YWM4NzUuLmI5NmJjNTU5YTliMzVjZWYxMjM4YTA0OWY3ZTA1N2FlY2IxMDczZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzE1LDkgKzMxNSw5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdlVHlw
ZSBpbWFnZVNpemVDaGFuZ2UsIGNvCiAgICAgLy8gaWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBz
aXplIGRlcGVuZHMgb24gdGhlIGltYWdlJ3Mgc2l6ZSAoaS5lLiwgdGhlIGNvbnRhaW5lciB1c2Vz
IHNocmluay10by1maXQgc2l6aW5nKS4KICAgICAvLyBUaGVyZSdzIG5vIGVhc3kgd2F5IHRvIGRl
dGVjdCB0aGF0IHNocmluay10by1maXQgaXMgbmVlZGVkLCBhbHdheXMgZm9yY2UgYSBsYXlvdXQu
CiAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJlZmVycmVkU2l6ZSA9
Ci0gICAgICAgIHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAgfHwg
c3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICB8fCBzdHlsZSgp
LmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOworICAgICAgICBzdHlsZSgpLmxvZ2ljYWxX
aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNh
bE1heFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkKKyAgICAgICAgfHwgc3R5bGUoKS5s
b2dpY2FsTWluV2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIAogICAgIGJvb2wgbGF5
b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgpLmFzcGVjdFJhdGlvVHlwZSgp
ID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCAwYjJiNTEzODE2NTcyYTUxNDE3N2RmYmFlYzU5OWE1MWFl
OWM1YmFjLi42NmYyZGM2MThlYmEzZTNhOTNmNDhlM2E3YTk4Njc5ZGZmYzg4MmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBA
IHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVNYXJnaW4oY29uc3QgUmVuZGVySW5saW5lKiByZW5k
ZXJlciwgY29uc3QgTGVuZ3RoJiBtYXJnCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtYXJn
aW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7Ci0gICAgaWYgKG1h
cmdpbi5pc1BlcmNlbnQoKSkKKyAgICBpZiAobWFyZ2luLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgp
KQogICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgc3RkOjptYXg8
TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dp
Y2FsV2lkdGgoKSkpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDI3YzVlZDU5MTlmZWVkOGNkNWJlYjllZGNiYjA1YWUy
NGU0ZWJiN2MuLjE2MzMxYWI1YjgzMGVmMjU5MGZlMzI3NDFiOThiOWIwY2NlMGIzM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE5Myw3ICsxOTMs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTAogICAgIG1heExvZ2ljYWxXaWR0aCA9IG1fb3B0
aW9uc1dpZHRoICsgMiAqIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRhbDsKICAgICBpZiAobV92QmFy
KQogICAgICAgICBtYXhMb2dpY2FsV2lkdGggKz0gbV92QmFyLT53aWR0aCgpOwotICAgIGlmICgh
c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudCgpKQorICAgIGlmICghc3R5bGUoKS53aWR0aCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dp
Y2FsV2lkdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IGRiZTdiMWJhYjQzN2QzZmY0NzEzMzBhMjg1ZWU3ZTZkMzRjYmRhOTIuLjk4YTRm
MDliMmM2MWM5NmE4OWIwZjE1MjZkZTc5Mzg3OTc2ZmFhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIExheW91dFJl
Y3QgUmVuZGVyTWVudUxpc3Q6OmNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRk
aXRpb25hbE9mZnNldCkKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdAogewogICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fb3B0
aW9uc1dpZHRoLCB0aGVtZSgpLm1pbmltdW1NZW51TGlzdFNpemUoc3R5bGUoKSkpICsgbV9pbm5l
ckJsb2NrLT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nUmlnaHQoKTsKLSAg
ICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkKKyAgICBpZiAoIXN0eWxlKCkud2lk
dGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgbWluTG9naWNhbFdpZHRoID0g
bWF4TG9naWNhbFdpZHRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGY1NzZlYzU4MmM0MzY5ZDhiMWMwY2IyZmYxNDEyZWMwOTU0ZTUxYTYuLjhl
ZjkxZmU3N2FhZmM4NTc2NGQ5MmVjYjg0ZWY4ZWJjYTY2YTBjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIG9iamVjdElzUmVsYXlvdXRCb3VuZGFyeShjb25zdCBSZW5kZXJFbGVtZW50KiBv
YmplY3QpCiAgICAgaWYgKCFvYmplY3QtPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAob2JqZWN0LT5zdHlsZSgpLndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSB8fCBvYmplY3QtPnN0eWxlKCkuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSB8
fCBvYmplY3QtPnN0eWxlKCkuaGVpZ2h0KCkuaXNQZXJjZW50KCkpCisgICAgaWYgKG9iamVjdC0+
c3R5bGUoKS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgb2JqZWN0LT5zdHlsZSgpLmhl
aWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgb2JqZWN0LT5zdHlsZSgpLmhlaWdodCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBU
YWJsZSBwYXJ0cyBjYW4ndCBiZSByZWxheW91dCByb290cyBzaW5jZSB0aGUgdGFibGUgaXMgcmVz
cG9uc2libGUgZm9yIGxheW91dGluZyBhbGwgdGhlIHBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNWI5MGY3YTViNWYzMzY2YjcwMjAzZmFj
MzkyOWFhMGY1ZjY5MDk0ZS4uZmIxNmMwZGM1MGFhNWQyMDA4ZmI4N2Y3MWQyZWEwYzg0MzFlMzZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00
ODYsMTMgKzQ4NiwxMyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCiAKICAgICAvLyBXZSBjYW5ub3QgcmVzb2x2ZSBhbnkgcGVyY2VudCBsb2dp
Y2FsIHdpZHRoIGhlcmUgYXMgdGhlIGF2YWlsYWJsZSBsb2dpY2FsCiAgICAgLy8gd2lkdGggbWF5
IG5vdCBiZSBzZXQgb24gb3VyIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgaWYgKHN0eWxlKCkubG9n
aWNhbFdpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHN0eWxlKCkubG9naWNhbFdpZHRoKCku
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
V2lkdGhzKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCk7CiAgICAgZWxzZQogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1f
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKENv
bXB1dGVQcmVmZXJyZWQpOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBz
dHlsZSgpOwotICAgIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpIHx8
IHN0eWxlVG9Vc2UubG9naWNhbE1heFdpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHN0eWxl
VG9Vc2UubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgc3R5bGVUb1Vz
ZS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSAwOwogCiAgICAgaWYgKHN0eWxlVG9Vc2UubG9naWNh
bE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UubG9naWNhbE1pbldpZHRoKCkudmFs
dWUoKSA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5k
ZXggOGI2ZDQ2N2Q3N2JiMjQ2MWViMjZiNjUyNDkxNmZkZTU4YzUwNmRiMy4uMDIxYjY0YTYwNTBh
YWFhY2FmYzE3OTFjZTVjOTU5NjhkN2EyZGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgaW50IFJlbmRlclNsaWRlcjo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVj
dGkKIHZvaWQgUmVuZGVyU2xpZGVyOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QKIHsKICAgICBtYXhMb2dpY2FsV2lkdGggPSBkZWZhdWx0VHJhY2tMZW5ndGggKiBzdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKTsKLSAgICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkK
KyAgICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBiODhlNjkzNmQ1MWU0ODk3MGFiOTRmNTQz
ZjVhMDgyNWZmYjZlNTgxLi4wMDc3MmU0YTdlYzRmZTQ2OTFkYmI2NTAxMmU5N2EzMDYwOWZkOTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM2OCw3ICsz
NjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0
VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgICAgICBib3JkZXJzID0gYm9y
ZGVyQW5kUGFkZGluZ0JlZm9yZSArIGJvcmRlckFuZFBhZGRpbmdBZnRlcjsKICAgICAgICAgfQog
ICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBzdHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUo
KSAtIGJvcmRlcnM7Ci0gICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50
KCkpCisgICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpCiAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCmluZGV4IGIzMDkzMzBlYjg1YTIzYWNmMDkyNTc1OWU0ZjRkMWFjNzA2
ODA5ZTAuLmZjNWMwMmExNmM4OGRhODFjNjYzOGY0ODUyZjA2Y2Y3OTI5ZWJjN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC01Njgs
NyArNTY4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoKQogICAgICAg
ICAgICAgICAgIHx8ICghdGFibGUoKS0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkg
JiYgckhlaWdodCAhPSBjZWxsLT5sb2dpY2FsSGVpZ2h0KCkpOwogCiAgICAgICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjZWxsLT5maXJzdENoaWxkKCk7IHJlbmRlcmVyOyBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKS5pc1BlcmNlbnQoKSAmJiAoZmxleEFsbENoaWxkcmVuIHx8ICgocmVuZGVyZXItPmlz
UmVwbGFjZWQoKSB8fCAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRl
ckJveD4oKnJlbmRlcmVyKS5zY3JvbGxzT3ZlcmZsb3coKSkpICYmICFpczxSZW5kZXJUZXh0Q29u
dHJvbD4oKnJlbmRlcmVyKSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJUZXh0
PigqcmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSAmJiAoZmxleEFsbENoaWxkcmVuIHx8ICgocmVuZGVyZXItPmlzUmVw
bGFjZWQoKSB8fCAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJv
eD4oKnJlbmRlcmVyKS5zY3JvbGxzT3ZlcmZsb3coKSkpICYmICFpczxSZW5kZXJUZXh0Q29udHJv
bD4oKnJlbmRlcmVyKSkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRhYmxlcyB3aXRoIG5v
IHNlY3Rpb25zIGRvIG5vdCBmbGV4LgogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRl
clRhYmxlPigqcmVuZGVyZXIpIHx8IGRvd25jYXN0PFJlbmRlclRhYmxlPigqcmVuZGVyZXIpLmhh
c1NlY3Rpb25zKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggNWQ3OGViM2Q5OTBhNjVhY2IxZTA2ZjE3OTUzY2JmOTU3
NTVlZGZhMC4uN2RmMzgzYzQ0NDdkOTVlNDI5ZjRmOGE2M2E1NzgyMmI2ZWExMWIyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xOTgs
NyArMTk4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKICAgICBtYXhMb2dpY2FsV2lkdGgg
PSBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dENvbnRy
b2wqPih0aGlzKS0+Z2V0QXZlcmFnZUNoYXJXaWR0aCgpKTsKICAgICBpZiAoUmVuZGVyQm94KiBp
bm5lclRleHRSZW5kZXJCb3ggPSBpbm5lclRleHRFbGVtZW50KCktPnJlbmRlckJveCgpKQogICAg
ICAgICBtYXhMb2dpY2FsV2lkdGggKz0gaW5uZXJUZXh0UmVuZGVyQm94LT5wYWRkaW5nU3RhcnQo
KSArIGlubmVyVGV4dFJlbmRlckJveC0+cGFkZGluZ0VuZCgpOwotICAgIGlmICghc3R5bGUoKS5s
b2dpY2FsV2lkdGgoKS5pc1BlcmNlbnQoKSkKKyAgICBpZiAoIXN0eWxlKCkubG9naWNhbFdpZHRo
KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1h
eExvZ2ljYWxXaWR0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CmluZGV4IGFhYmQ0Yzc1MGEwMWE2M2ZkZTRhNmJlZmQzNWM3Y2E2OWQ3N2M2NDUuLjI0Yzc5MzQw
OWZiMDFmMDI4YWIxZGIzZDg4NGEyNzExNjBjOTdlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTMzMyw5ICszMzMsOSBAQCB2b2lkIFJlbmRlclZpZXc6Omxh
eW91dCgpCiAKICAgICAgICAgZm9yIChhdXRvJiBib3ggOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJC
b3g+KCp0aGlzKSkgewogICAgICAgICAgICAgaWYgKGJveC5oYXNSZWxhdGl2ZUxvZ2ljYWxIZWln
aHQoKQotICAgICAgICAgICAgICAgIHx8IGJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1Bl
cmNlbnQoKQotICAgICAgICAgICAgICAgIHx8IGJveC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQo
KS5pc1BlcmNlbnQoKQotICAgICAgICAgICAgICAgIHx8IGJveC5zdHlsZSgpLmxvZ2ljYWxNYXhI
ZWlnaHQoKS5pc1BlcmNlbnQoKQorICAgICAgICAgICAgICAgIHx8IGJveC5zdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQorICAgICAgICAgICAgICAgIHx8IGJv
eC5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQorICAg
ICAgICAgICAgICAgIHx8IGJveC5zdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKQogICAgICAgICAgICAgICAgIHx8IGJveC5pc1NWR1Jvb3QoKQogICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgICAgICBib3guc2V0Q2hpbGROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmlu
ZGV4IDdiZWZhMzU5YjI2MWU1ZGZhYWQ4ZTlmODAzZDQ4ZTNhOTI3YTkxOGUuLjE5Y2VlYzJmMjA3
YjA5ZTNlZTk1N2FlOWY5YjZlNTkxMDk5NmVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIExheW91dFVuaXQgUm9v
dElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwgVmVydGlj
YWxQb3NpdGlvCiAgICAgICAgIGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gTEVOR1RIKSB7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQ7CiAgICAgICAgICAgICAvL1BlciBodHRw
Oi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjcHJvcGRlZi12ZXJ0aWNhbC1hbGln
bjogJ1BlcmNlbnRhZ2VzOiByZWZlciB0byB0aGUgJ2xpbmUtaGVpZ2h0JyBvZiB0aGUgZWxlbWVu
dCBpdHNlbGYnLgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZlcnRpY2FsQWxp
Z25MZW5ndGgoKS5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUo
KS52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAg
ICAgICAgICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdo
dCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSByZW5k
ZXJlci0+bGluZUhlaWdodChmaXJzdExpbmUsIGxpbmVEaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKaW5kZXggZTIzMDAxOTIxM2E5NDdhMmFj
MjQwYzQ3NzRkOTZlODVkNDhhM2JkYy4uMjc0NzAwN2JiZThiOWNhOTkwOTE4ZTE1MWM4NGU3ODg1
MjNlYWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRM
ZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5o
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBmbGV4KCkgY29uc3QgeyBB
U1NFUlQoaXNGbGV4KCkpOyByZXR1cm4gbV9mbGV4OyB9CiAKLSAgICBib29sIGlzUGVyY2VudGFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYmIG1fbGVuZ3RoLmlzUGVy
Y2VudCgpOyB9CisgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gTGVuZ3RoVHlwZSAmJiBtX2xlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsgfQogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRMZW5ndGgmIG8pIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgKaW5kZXggMjg0
YTc4ZDQ2OWE3M2I4OWUzMDRiODZjZmYyM2QwMTFmMGNmYThmZS4uZDJjMmRlYmJlMmQxYzY0Zjll
NTk1ZGI1ZDM3MDc2YWY2YzJhMzI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNDb250ZW50U2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX21pblRyYWNrQnJlYWR0aC5pc0Nv
bnRlbnRTaXplZCgpIHx8IG1fbWF4VHJhY2tCcmVhZHRoLmlzQ29udGVudFNpemVkKCk7IH0KIAot
ICAgIGJvb2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExlbmd0aFRy
YWNrU2l6aW5nICYmIGxlbmd0aCgpLmlzTGVuZ3RoKCkgJiYgbGVuZ3RoKCkubGVuZ3RoKCkuaXNQ
ZXJjZW50KCk7IH0KKyAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBMZW5ndGhUcmFja1NpemluZyAmJiBsZW5ndGgoKS5pc0xlbmd0aCgpICYmIGxlbmd0aCgp
Lmxlbmd0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOyB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgR3JpZFRyYWNrU2l6ZSYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMjIzYWUzZjA4NjBi
OWU4NWQ1YTYwYjBlNmQ1ZTI2NTFlZTE3NTc2Mi4uZmFkNTY0OGJhZTA2YjU4OTA4MjlkZDZhYzIy
MWFkZmJjYTRkMjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1
dGVkTGluZUhlaWdodCgpIGNvbnN0CiAgICAgaWYgKGxoLmlzTmVnYXRpdmUoKSkKICAgICAgICAg
cmV0dXJuIGZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKIAotICAgIGlmIChsaC5pc1BlcmNl
bnQoKSkKKyAgICBpZiAobGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVy
biBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGgsIGZvbnRTaXplKCkpOwogCiAgICAgcmV0dXJuIGNs
YW1wVG88aW50PihsaC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDE2ZTUyZDI4MzE2NjhlYTg5YzlhM2Q4NGJhODg1ZjIx
ZTVjNjc0NWYuLjJjMjNlMWYxMTZkMzQ4OGVmZTUwZDgxMTU5NmQzYjExOTI0Y2QwMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDM2
LDcgKzQzNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAKIGJvb2wgUmVuZGVyU1ZHUm9v
dDo6aGFzUmVsYXRpdmVEaW1lbnNpb25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3ZnU1ZHRWxl
bWVudCgpLmludHJpbnNpY0hlaWdodCgpLmlzUGVyY2VudCgpIHx8IHN2Z1NWR0VsZW1lbnQoKS5p
bnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudCgpOworICAgIHJldHVybiBzdmdTVkdFbGVtZW50KCku
aW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgc3ZnU1ZHRWxlbWVu
dCgpLmludHJpbnNpY1dpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7CiB9CiAKIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6YWRkUmVzb3VyY2VGb3JDbGllbnRJbnZhbGlkYXRpb24oUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENv
bnRleHQuY3BwCmluZGV4IGI5YTY5MDEzMzc5MTZkMzZkNTEwNmQzODBjNzZkYzRiMTQ1OTY3NTgu
LmZlNGI2Njk5NGYyYTYwZTI4ZDAzMGU5ZDY3MzY1NDkyZWRjYTBmMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgZmxvYXQgU1ZHTGVu
Z3RoQ29udGV4dDo6cmVzb2x2ZUxlbmd0aChjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBTVkdV
bml0VHlwZXM6OlMKIAogZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKIHsKLSAgICBpZiAobGVuZ3Ro
LmlzUGVyY2VudCgpICYmICFsZW5ndGguaXNDYWxjdWxhdGVkKCkpCisgICAgaWYgKGxlbmd0aC5p
c1BlcmNlbnQoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9V
c2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUsIElHTk9SRV9FWENFUFRJT04pOwog
ICAgIGlmIChsZW5ndGguaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNWEyZWQzNDM2NTg5NjYzOGNkNzViNmQ0
NzQ4NjczYmJhNTQxNzg3YS4uNDUxNjRmZjQ0MTY4NGNiMjQ0MjNmY2Q2Nzc5ZjQyNWQ0YjFkMjhl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yODYsNyAr
Mjg2LDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0CiAgICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICgh
cm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcm9vdEVsZW1l
bnQtPmludHJpbnNpY1dpZHRoKCkuaXNQZXJjZW50KCk7CisgICAgcmV0dXJuIHJvb3RFbGVtZW50
LT5pbnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwogfQogCiBib29sIFNW
R0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9v
bCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIFNWR1NWR0VsZW1lbnQq
IHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJvb3RFbGVtZW50LT5pbnRyaW5z
aWNIZWlnaHQoKS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNp
Y0hlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwogfQogCiB2b2lkIFNWR0ltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgm
IGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252746</attachid>
            <date>2015-05-08 13:58:25 -0700</date>
            <delta_ts>2015-05-10 14:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144791-20150509055705.patch</filename>
            <type>text/plain</type>
            <size>67497</size>
            <attacher name="Sungmann Cho">sungmann.cho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2OGFiNzljNjU1YTEx
NWUzYjBkMzFjNmUwMjAzYWEzNTIzYzM2OS4uZjFlNDAxMjNkOGQzMjk0NzJkNzQzNzNiN2RmMTdj
NjU3NDgyOTQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAxNS0wNS0wOCAgU3Vu
Z21hbm4gQ2hvICA8c3VuZ21hbm4uY2hvQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgUmVuYW1l
IExlbmd0aDo6aXNQZXJjZW50KCkgYW5kIExlbmd0aDo6aXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0Nzkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gUmVu
YW1lIHRoZXNlIG1ldGhvZHMgYXMgYmVsb3cgZm9yIGNvbnNpc3RlbmN5IGFuZCBjbGFyaXR5Lgor
CisgICAgICAgIExlbmd0aDo6aXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID0+IExlbmd0aDo6aXNQ
ZXJjZW50KCkKKyAgICAgICAgTGVuZ3RoOjppc1BlcmNlbnQoKSA9PiBMZW5ndGg6OmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpCisKKyAgICAgICAgMi4gU2ltcGxpZnkgdGhlIGNvbmRpdGlvbiBjaGVj
ayBvZiBsZW5ndGggdHlwZSBpbiBTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxlbmd0aCgpLgor
CisgICAgICAgICJsZW5ndGguaXNQZXJjZW50KCkgJiYgIWxlbmd0aC5pc0NhbGN1bGF0ZWQoKSIg
PT4gImxlbmd0aC5pc1BlcmNlbnQoKSIKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JJbWFnZVNsaWNlU2lkZSk6CisgICAgICAg
IChXZWJDb3JlOjp2YWx1ZUZvclJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cGVyY2Vu
dGFnZU9yWm9vbUFkanVzdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bGluZUhlaWdodEZy
b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXMxMDBQZXJjZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmNv
bXB1dGVUcmFuc2Zvcm1lZEV4dGVudFZpYVRyYW5zZm9ybUxpc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpwZXJjZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6aXNQZXJjZW50T3JDYWxjdWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNT
cGVjaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnROb3RDYWxjdWxh
dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpyZWNhbGND
b2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpmdWxsUmVjYWxjKToK
KyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFNjYWxlQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRvVGFibGVMYXlvdXQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJs
ZUxheW91dDo6YXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhRdWlya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Rml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxh
cHNpbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dGV4dEluZGVudE9m
ZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFn
ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2YWJs
ZUZyb21CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc1Vuc3BsaXR0YWJs
ZVNjcm9sbGluZ092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0
T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6aGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRl
SW1hZ2VJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFyTGluZUNsYW1wKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0UmVw
YWludEZpbGxMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhp
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxp
c3Q6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9iamVjdElzUmVsYXlvdXRCb3Vu
ZGFyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXI6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvR3JpZExlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZExlbmd0aDo6aXNQZXJj
ZW50YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6ZTo6aXNQZXJjZW50YWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc1JlbGF0
aXZlRGltZW5zaW9ucyk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6aGFzUmVsYXRpdmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6aGFzUmVs
YXRpdmVIZWlnaHQpOgorCiAyMDE1LTA1LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGluIHN1YmZyYW1l
cyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkODlhYzQyOGRmZTNlYjFm
NzE1OWM3NzljOWYxOTlmMDRiYWIzNzFhLi5lN2IzOGE0Yzg0N2RmZDgxN2JiN2RlMjliNmIwOGVk
M2Y2NmQyNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGljZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiB7
CiAgICAgLy8gVGhlc2UgdmFsdWVzIGNhbiBiZSBwZXJjZW50YWdlcywgbnVtYmVycywgb3Igd2hp
bGUgYW4gYW5pbWF0aW9uIG9mIG1peGVkIHR5cGVzIGlzIGluIHByb2dyZXNzLAogICAgIC8vIGEg
Y2FsY3VsYXRpb24gdGhhdCBjb21iaW5lcyBhIHBlcmNlbnRhZ2UgYW5kIGEgbnVtYmVyLgotICAg
IGlmIChsZW5ndGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKQorICAgIGlmIChsZW5ndGguaXNQ
ZXJjZW50KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsZW5n
dGgucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGlm
IChsZW5ndGguaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUobGVuZ3RoLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKQEAg
LTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24o
Y29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAKICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldDsKLSAgICBpZiAocmVmbGVjdGlvbi0+
b2Zmc2V0KCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHJlZmxlY3Rpb24tPm9mZnNldCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICBvZmZzZXQgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShyZWZsZWN0aW9uLT5vZmZzZXQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgZWxzZQogICAgICAgICBvZmZzZXQgPSB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHJlZmxlY3Rpb24tPm9mZnNldCgpLnZhbHVlKCksIHN0eWxlKTsKQEAgLTcz
Niw3ICs3MzYsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUgogCiBzdGF0aWMgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShMZW5ndGggbGVuZ3Ro
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnRO
b3RDYWxjdWxhdGVkKCkpCisgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgCiAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwpAQCAtMTU1OSw3
ICsxNTU5LDcgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgTGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5saW5l
SGVpZ2h0KCk7CiAgICAgaWYgKGxlbmd0aC5pc05lZ2F0aXZlKCkpIC8vIElmIHRydWUsIGxpbmUt
aGVpZ2h0IG5vdCBzZXQ7IHVzZSB0aGUgZm9udCdzIGxpbmUgc3BhY2luZy4KICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnRNZXRyaWNzKCkuZmxvYXRMaW5l
U3BhY2luZygpLCBzdHlsZSk7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVk
KCkpIHsKKyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMg
aW1wZXJmZWN0LCBiZWNhdXNlIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IgYW5k
IHRoZSByZWFsIGNvbXB1dGF0aW9uCiAgICAgICAgIC8vIGZvciBob3cgaGlnaCB0byBiZSBpbiBw
aXhlbHMgZG9lcyBpbmNsdWRlIHRoaW5ncyBsaWtlIG1pbmltdW0gZm9udCBzaXplIGFuZCB0aGUg
em9vbSBmYWN0b3IuCiAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNp
emUgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCkBA
IC0yNDI5LDcgKzI0MjksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAg
aWYgKG1hcmdpblJpZ2h0LmlzRml4ZWQoKSB8fCAhaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgobWFy
Z2luUmlnaHQsIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwotICAgICAg
ICAgICAgaWYgKG1hcmdpblJpZ2h0LmlzUGVyY2VudCgpKSB7CisgICAgICAgICAgICBpZiAobWFy
Z2luUmlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBS
ZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8vIGFu
ZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBC
TE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8vIHZh
bHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxMTkwNTEzYTlmZGU0MzE3NmE1Y2Zh
NGEzNmY0ODIyMTliMTMwYWU1Li4yMmE2NzcxNjIxNDA0MGM0ODc0ZDNmMzgwZWRkNjE5NDE3YjY5
NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNr
U2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBl
cmNlbnQoTGVuZ3RoIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbGVuZ3RoLmlzUGVyY2VudE5vdENh
bGN1bGF0ZWQoKSAmJiBsZW5ndGgucGVyY2VudCgpID09IDEwMDsKKyAgICByZXR1cm4gbGVuZ3Ro
LmlzUGVyY2VudCgpICYmIGxlbmd0aC5wZXJjZW50KCkgPT0gMTAwOwogfQogICAgIAogc3RhdGlj
IGlubGluZSBib29sIGlzU21hbGxlclRoYW5UaW55U2l6aW5nVGhyZXNob2xkKGNvbnN0IFJlbmRl
ckVtYmVkZGVkT2JqZWN0JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggNTIwYzc3MTFkOTQ4ODhiM2ZhMmFhOWIyMTJi
ZDA5MmQ3NTVmZjVjNy4uZjc5ZTdjNTg2Mzg2MWUzNzMzYTU5NmQ3NTJlMGNlODMzOGVjMjE1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
QEAgLTc3OCw4ICs3NzgsOCBAQCBib29sIEFuaW1hdGlvbkJhc2U6OmNvbXB1dGVUcmFuc2Zvcm1l
ZEV4dGVudFZpYVRyYW5zZm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByZQogICAgIAogICAgIGJv
b2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSBjb250YWluc1JvdGF0aW9uKHN0eWxlLnRyYW5zZm9y
bSgpLm9wZXJhdGlvbnMoKSkgfHwgc3R5bGUudHJhbnNmb3JtKCkuYWZmZWN0ZWRCeVRyYW5zZm9y
bU9yaWdpbigpOwogICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICBmbG9h
dCBvZmZzZXRYID0gc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLmlzUGVyY2VudE5vdENhbGN1bGF0
ZWQoKSA/IHJlbmRlcmVyQm94LngoKSA6IDA7Ci0gICAgICAgIGZsb2F0IG9mZnNldFkgPSBzdHls
ZS50cmFuc2Zvcm1PcmlnaW5ZKCkuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID8gcmVuZGVyZXJC
b3gueSgpIDogMDsKKyAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IHN0eWxlLnRyYW5zZm9ybU9yaWdp
blgoKS5pc1BlcmNlbnQoKSA/IHJlbmRlcmVyQm94LngoKSA6IDA7CisgICAgICAgIGZsb2F0IG9m
ZnNldFkgPSBzdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkuaXNQZXJjZW50KCkgPyByZW5kZXJlckJv
eC55KCkgOiAwOwogCiAgICAgICAgIHRyYW5zZm9ybU9yaWdpbi5zZXRYKGZsb2F0VmFsdWVGb3JM
ZW5ndGgoc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLCByZW5kZXJlckJveC53aWR0aCgpKSArIG9m
ZnNldFgpOwogICAgICAgICB0cmFuc2Zvcm1PcmlnaW4uc2V0WShmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKSwgcmVuZGVyZXJCb3guaGVpZ2h0KCkpICsgb2Zmc2V0
WSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDNhOTQ2Y2I2MGFhMDNjZGQ0OTY3Yjgz
NDRjZTg5NWRjYTUxODU2YjEuLjljOGQwOGE0ZjdkNmJhN2IxMzkxYjgyMGRjOTY0MGVlOGY1NGE0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzRml4ZWQoKSBjb25zdDsKICAgICBib29sIGlzTWF4Q29udGVudCgpIGNvbnN0
OwogICAgIGJvb2wgaXNNaW5Db250ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1BlcmNlbnROb3RD
YWxjdWxhdGVkKCkgY29uc3Q7IC8vIEZJWE1FOiBSZW5hbWUgdG8gaXNQZXJjZW50LgorICAgIGJv
b2wgaXNQZXJjZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OwogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUG9zaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdDsK
IAotICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBmb3IgYm90aCBQ
ZXJjZW50IGFuZCBDYWxjdWxhdGVkLiBGSVhNRTogRmluZCBhIGJldHRlciBuYW1lIGZvciB0aGlz
LgorICAgIGJvb2wgaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1
ZSBmb3IgYm90aCBQZXJjZW50IGFuZCBDYWxjdWxhdGVkLgogCiAgICAgYm9vbCBpc0ludHJpbnNp
YygpIGNvbnN0OwogICAgIGJvb2wgaXNJbnRyaW5zaWNPckF1dG8oKSBjb25zdDsKQEAgLTI2MCw3
ICsyNjAsNyBAQCBpbmxpbmUgaW50IExlbmd0aDo6aW50VmFsdWUoKSBjb25zdAogCiBpbmxpbmUg
ZmxvYXQgTGVuZ3RoOjpwZXJjZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNQZXJjZW50Tm90
Q2FsY3VsYXRlZCgpKTsKKyAgICBBU1NFUlQoaXNQZXJjZW50KCkpOwogICAgIHJldHVybiB2YWx1
ZSgpOwogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAgaW5saW5lIGJvb2wgTGVuZ3RoOjppc05lZ2F0
aXZlKCkgY29uc3QKICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gKG1fZmxvYXRWYWx1ZSA8IDApIDog
KG1faW50VmFsdWUgPCAwKTsKIH0KIAotaW5saW5lIGJvb2wgTGVuZ3RoOjppc1BlcmNlbnROb3RD
YWxjdWxhdGVkKCkgY29uc3QKK2lubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50KCkgY29uc3QK
IHsKICAgICByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQ7CiB9CkBAIC0zNDgsOSArMzQ4LDkgQEAg
aW5saW5lIGJvb2wgTGVuZ3RoOjppc1VuZGVmaW5lZCgpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGUo
KSA9PSBVbmRlZmluZWQ7CiB9CiAKLWlubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50KCkgY29u
c3QKK2lubGluZSBib29sIExlbmd0aDo6aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGlzQ2FsY3VsYXRlZCgpOwor
ICAgIHJldHVybiBpc1BlcmNlbnQoKSB8fCBpc0NhbGN1bGF0ZWQoKTsKIH0KIAogaW5saW5lIGJv
b2wgTGVuZ3RoOjppc1Bvc2l0aXZlKCkgY29uc3QKQEAgLTM5Miw3ICszOTIsNyBAQCBpbmxpbmUg
Ym9vbCBMZW5ndGg6OmlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QKIAogaW5saW5lIGJvb2wgTGVu
Z3RoOjppc1NwZWNpZmllZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzRml4ZWQoKSB8fCBpc1Bl
cmNlbnQoKTsKKyAgICByZXR1cm4gaXNGaXhlZCgpIHx8IGlzUGVyY2VudE9yQ2FsY3VsYXRlZCgp
OwogfQogCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXgg
MzI5MGZhNDhmOTRkYzNmMDI5ZDJlNmI2YmZjZWQ3ZGE4NGYwZmRlMi4uMGU1MjlmOTQxZjc2NzJj
MDg2MGQxMGI0MDY2ZWUzNThkNzU2YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUzZCh4KGJvcmRlckJveFNpemUpLCB5KGJvcmRlckJveFNpemUpLCB6
KGJvcmRlckJveFNpemUpKTsKLSAgICAgICAgcmV0dXJuIG1feC5pc1BlcmNlbnROb3RDYWxjdWxh
dGVkKCkgfHwgbV95LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKTsKKyAgICAgICAgcmV0dXJuIG1f
eC5pc1BlcmNlbnQoKSB8fCBtX3kuaXNQZXJjZW50KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJs
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cAppbmRleCA0ZDg4MzYyMzNhYWVkOWFmMzZjNmU0MmNiOTRiYjg5MjliMjVjNGI4Li4xYWVhZGVk
NWE5MzMzODVkYjczOWI1YzA2ZjNkMjU3MjdiYWY2ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2lnbmVkIGVmZkNvbCkKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChjZWxsTG9naWNhbFdpZHRoLnR5cGUoKSkgewogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEZpeGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdpZHRo
PTAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRp
dmUoKSAmJiAhY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICFj
b2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxXaWR0aCA9IGNlbGwtPmFkanVzdEJv
cmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5MYXlvdXQubG9naWNhbFdp
ZHRoLmlzRml4ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXYv
SUUgd2VpcmRuZXNzCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OnJl
Y2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQZXJjZW50OgogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
ZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAoIWNvbHVtbkxheW91dC5sb2dpY2FsV2lk
dGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgucGVyY2VudCgp
ID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5wZXJjZW50KCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5
b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSB8fCBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQo
KSA+IGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGgucGVyY2VudCgpKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0
aDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIFJlbGF0aXZlOgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpm
dWxsUmVjYWxjKCkKICAgICAgICAgICAgIExlbmd0aCBjb2xMb2dpY2FsV2lkdGggPSBjb2x1bW4t
PnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoY29sTG9naWNhbFdpZHRo
LmlzQXV0bygpKQogICAgICAgICAgICAgICAgIGNvbExvZ2ljYWxXaWR0aCA9IGdyb3VwTG9naWNh
bFdpZHRoOwotICAgICAgICAgICAgaWYgKChjb2xMb2dpY2FsV2lkdGguaXNGaXhlZCgpIHx8IGNv
bExvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgJiYgY29sTG9naWNhbFdpZHRoLmlzWmVybygpKQor
ICAgICAgICAgICAgaWYgKChjb2xMb2dpY2FsV2lkdGguaXNGaXhlZCgpIHx8IGNvbExvZ2ljYWxX
aWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgY29sTG9naWNhbFdpZHRoLmlzWmVybygp
KQogICAgICAgICAgICAgICAgIGNvbExvZ2ljYWxXaWR0aCA9IExlbmd0aCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZWZmQ29sID0gbV90YWJsZS0+Y29sVG9FZmZDb2woY3VycmVudENvbHVtbik7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuID0gY29sdW1uLT5zcGFuKCk7CkBAIC0xODgsNyAr
MTg4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkU2NhbGVDb2x1bW5zKFJlbmRlclRhYmxlKiB0YWJs
ZSkKICAgICBib29sIHNjYWxlID0gdHJ1ZTsKICAgICB3aGlsZSAodGFibGUpIHsKICAgICAgICAg
TGVuZ3RoIHRhYmxlV2lkdGggPSB0YWJsZS0+c3R5bGUoKS53aWR0aCgpOwotICAgICAgICBpZiAo
KHRhYmxlV2lkdGguaXNBdXRvKCkgfHwgdGFibGVXaWR0aC5pc1BlcmNlbnQoKSkgJiYgIXRhYmxl
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBpZiAoKHRhYmxlV2lkdGguaXNB
dXRvKCkgfHwgdGFibGVXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgIXRhYmxlLT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRh
aW5pbmdCbG9jayA9IHRhYmxlLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxl
IChjb250YWluaW5nQmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpjb250YWluaW5nQmxvY2spICYm
ICFpczxSZW5kZXJUYWJsZUNlbGw+KCpjb250YWluaW5nQmxvY2spCiAgICAgICAgICAgICAgICAg
JiYgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLndpZHRoKCkuaXNBdXRvKCkgJiYgIWNvbnRhaW5p
bmdCbG9jay0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCkBAIC0xOTYsNyArMTk2LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkU2NhbGVDb2x1bW5zKFJlbmRlclRhYmxlKiB0YWJsZSkKIAogICAgICAg
ICAgICAgdGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlQ2Vs
bD4oY29udGFpbmluZ0Jsb2NrKQotICAgICAgICAgICAgICAgICYmIChjb250YWluaW5nQmxvY2st
PnN0eWxlKCkud2lkdGgoKS5pc0F1dG8oKSB8fCBjb250YWluaW5nQmxvY2stPnN0eWxlKCkud2lk
dGgoKS5pc1BlcmNlbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAmJiAoY29udGFpbmluZ0Jsb2Nr
LT5zdHlsZSgpLndpZHRoKCkuaXNBdXRvKCkgfHwgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLndp
ZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVy
VGFibGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqY29udGFpbmluZ0Js
b2NrKTsKICAgICAgICAgICAgICAgICBpZiAoY2VsbC5jb2xTcGFuKCkgPiAxIHx8IGNlbGwudGFi
bGUoKS0+c3R5bGUoKS53aWR0aCgpLmlzQXV0bygpKQogICAgICAgICAgICAgICAgICAgICBzY2Fs
ZSA9IGZhbHNlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojpjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0CiAg
ICAgICAgIG1pbldpZHRoICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxX
aWR0aDsKICAgICAgICAgbWF4V2lkdGggKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4
TG9naWNhbFdpZHRoOwogICAgICAgICBpZiAoc2NhbGVDb2x1bW5zKSB7Ci0gICAgICAgICAgICBp
ZiAobV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENh
bGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2
ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IHBlcmNl
bnQgPSBzdGQ6Om1pbihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgucGVy
Y2VudCgpLCByZW1haW5pbmdQZXJjZW50KTsKICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY2Fs
V2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4
TG9naWNhbFdpZHRoKSAqIDEwMCAvIHN0ZDo6bWF4KHBlcmNlbnQsIGVwc2lsb24pOwogICAgICAg
ICAgICAgICAgIG1heFBlcmNlbnQgPSBzdGQ6Om1heChsb2dpY2FsV2lkdGgsICBtYXhQZXJjZW50
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZl
TG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAvLyAgIDx0cj48dGQ+MTwvdGQ+PHRkIGNv
bHNwYW49Mj4yLTM8L3RyPgogICAgICAgICAgICAgICAgIC8vICAgPHRyPjx0ZD4xPC90ZD48dGQg
Y29sc3Bhbj0yIHdpZHRoPTEwMCU+Mi0zPC90ZD48L3RyPgogICAgICAgICAgICAgICAgIC8vIDwv
dGFibGU+Ci0gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNh
bFdpZHRoLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGlmICgh
Y29sdW1uTGF5b3V0LmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNhbFdpZHRoID0gTGVuZ3Ro
KCk7CiAgICAgICAgICAgICAgICAgICAgIGFsbENvbHNBcmVQZXJjZW50ID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlCkBAIC0zNDEsNyArMzQxLDcgQEAgaW50IEF1dG9UYWJsZUxheW91
dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBh
ZGp1c3QgdGFibGUgbWF4IHdpZHRoIGlmIG5lZWRlZAotICAgICAgICBpZiAoY2VsbExvZ2ljYWxX
aWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgaWYgKGNlbGxMb2dpY2Fs
V2lkdGguaXNQZXJjZW50KCkpIHsKICAgICAgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiBjZWxs
TG9naWNhbFdpZHRoLnBlcmNlbnQoKSB8fCBhbGxDb2xzQXJlUGVyY2VudCkgewogICAgICAgICAg
ICAgICAgIC8vIGNhbid0IHNhdGlmeSB0aGlzIGNvbmRpdGlvbiwgdHJlYXQgYXMgdmFyaWFibGUK
ICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoID0gTGVuZ3RoKCk7CkBAIC0zNTIsMTIg
KzM1MiwxMiBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRo
KCkKICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50TWlzc2luZyA9IGNlbGxMb2dpY2FsV2lk
dGgucGVyY2VudCgpIC0gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIGludCB0b3RhbFdp
ZHRoID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcG9z
IDwgbGFzdENvbDsgKytwb3MpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2xheW91dFN0
cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lk
dGggKz0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBlZmZD
b2w7IHBvcyA8IGxhc3RDb2wgJiYgdG90YWxXaWR0aCA+IDA7ICsrcG9zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgu
aXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2xheW91dFN0cnVjdFtw
b3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGVyY2VudCA9IHBlcmNlbnRNaXNzaW5nICogc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdp
ZHRoKSAvIHRvdGFsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZHRoIC09
IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcGVyY2VudE1pc3NpbmcgLT0gcGVyY2VudDsKQEAgLTM4NCw5ICszODQs
OSBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAg
ICAgICAgICAgICAgICBpbnQgYWxsb2NhdGVkTWluTG9naWNhbFdpZHRoID0gMDsKICAgICAgICAg
ICAgICAgICBpbnQgYWxsb2NhdGVkTWF4TG9naWNhbFdpZHRoID0gMDsKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcG9zIDwgbGFzdENvbDsgKytwb3MpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fbGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdpZHRo
LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSB8fCBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2
ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkg
fHwgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJjZW50KCkp
OwogICAgICAgICAgICAgICAgICAgICAvLyB8YWxsQ29sc0FyZVBlcmNlbnR8IG1lYW5zIHRoYXQg
ZWl0aGVyIHRoZSBsb2dpY2FsV2lkdGggKm9yKiB0aGUgZWZmZWN0aXZlTG9naWNhbFdpZHRoIGFy
ZSBwZXJjZW50cywgaGFuZGxlIGJvdGggb2YgdGhlbSBoZXJlLgotICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJj
ZW50Tm90Q2FsY3VsYXRlZCgpID8gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGgucGVy
Y2VudCgpIDogbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgucGVyY2Vu
dCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3Rb
cG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgPyBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2lj
YWxXaWR0aC5wZXJjZW50KCkgOiBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxX
aWR0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW5NaW5Mb2dpY2Fs
V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnQgKiBjZWxsTWluTG9naWNhbFdpZHRoIC8g
dG90YWxQZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk1heExvZ2ljYWxX
aWR0aCA9IHN0YXRpY19jYXN0PGludD4ocGVyY2VudCAqIGNlbGxNYXhMb2dpY2FsV2lkdGggLyB0
b3RhbFBlcmNlbnQpOwogICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3NdLmVm
ZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZm
ZWN0aXZlTWluTG9naWNhbFdpZHRoLCBjb2x1bW5NaW5Mb2dpY2FsV2lkdGgpOwpAQCAtNDI2LDcg
KzQyNiw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgo
KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBp
ZiAoIWNlbGxMb2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKKyAgICAgICAgaWYgKCFjZWxsTG9n
aWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICBpZiAoY2Vs
bE1heExvZ2ljYWxXaWR0aCA+IHNwYW5NYXhMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgc3Bhbk1heExvZ2ljYWxXaWR0aCA+PSAwICYm
IHBvcyA8IGxhc3RDb2w7ICsrcG9zKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2xNYXhM
b2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1heExv
Z2ljYWxXaWR0aCwgc3RhdGljX2Nhc3Q8aW50PihzcGFuTWF4TG9naWNhbFdpZHRoID8gY2VsbE1h
eExvZ2ljYWxXaWR0aCAqIHN0YXRpY19jYXN0PGZsb2F0PihtX2xheW91dFN0cnVjdFtwb3NdLmVm
ZmVjdGl2ZU1heExvZ2ljYWxXaWR0aCkgLyBzcGFuTWF4TG9naWNhbFdpZHRoIDogY2VsbE1heExv
Z2ljYWxXaWR0aCkpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0Ojps
YXlvdXQoKQogICAgIGlmIChhdmFpbGFibGUgPiAwICYmIGhhdmVQZXJjZW50KSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVmZkNvbHM7ICsraSkgewogICAgICAgICAgICAgTGVu
Z3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lk
dGg7Ci0gICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7CisgICAgICAg
ICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAg
ICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBzdGQ6Om1heDxpbnQ+KG1fbGF5b3V0U3Ry
dWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxXaWR0aCwgdGFibGVMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgICAgICAgICBhdmFpbGFi
bGUgKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggLSBjZWxsTG9naWNh
bFdpZHRoOwogICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNh
bFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgIGludCBleGNlc3MgPSB0YWJsZUxvZ2lj
YWxXaWR0aCAqICh0b3RhbFBlcmNlbnQgLSAxMDApIC8gMTAwOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbkVmZkNvbHM7IGk7ICkgewogICAgICAgICAgICAgICAgIC0taTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlz
UGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVk
TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpbnQgcmVkdWN0aW9uID0gc3RkOjpt
aW4oY2VsbExvZ2ljYWxXaWR0aCwgIGV4Y2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIHRo
ZSBsaW5lcyBiZWxvdyBtaWdodCBsb29rIGluY29uc2lzdGVudCwgYnV0IHRoYXQncyB0aGUgd2F5
IGl0J3MgaGFuZGxlZCBpbiBtb3ppbGxhCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBBdXRvVGFi
bGVMYXlvdXQ6OmxheW91dCgpCiAgICAgaWYgKGF2YWlsYWJsZSA+IDAgJiYgbV9oYXNQZXJjZW50
ICYmIHRvdGFsUGVyY2VudCA8IDEwMCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5FZmZDb2xzOyArK2kpIHsKICAgICAgICAgICAgIExlbmd0aCYgbG9naWNhbFdpZHRoID0gbV9s
YXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgaWYgKGxv
Z2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChs
b2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKICAgICAgICAgICAgICAgICBpbnQgY2VsbExvZ2lj
YWxXaWR0aCA9IGF2YWlsYWJsZSAqIGxvZ2ljYWxXaWR0aC5wZXJjZW50KCkgLyB0b3RhbFBlcmNl
bnQ7CiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIC09IGNlbGxMb2dpY2FsV2lkdGg7CiAgICAg
ICAgICAgICAgICAgdG90YWxQZXJjZW50IC09IGxvZ2ljYWxXaWR0aC5wZXJjZW50KCk7CkBAIC03
MzMsMTQgKzczMywxNCBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG5FZmZDb2xzOyBpOyApIHsKICAgICAgICAgICAgICAgICAt
LWk7CiAgICAgICAgICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVj
dFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxX
aWR0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhCZXlv
bmRNaW4gKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggLSBtX2xheW91
dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5FZmZDb2xzOyBpICYmIGxv
Z2ljYWxXaWR0aEJleW9uZE1pbiA+IDA7ICkgewogICAgICAgICAgICAgICAgIC0taTsKICAgICAg
ICAgICAgICAgICBMZW5ndGgmIGxvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgbWluTWF4RGlmZiA9IG1fbGF5
b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoIC0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZm
ZWN0aXZlTWluTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpbnQgcmVkdWNlID0g
YXZhaWxhYmxlICogbWluTWF4RGlmZiAvIGxvZ2ljYWxXaWR0aEJleW9uZE1pbjsKICAgICAgICAg
ICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggKz0gcmVk
dWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCmlu
ZGV4IGYwOGQyOWFkNTQ5YjNhMmNlZTlkYzZiYTM3YzBiNzUxMjU3NWNhNDEuLjRiNTRhM2U1OGVk
M2ZlNDg3Njk2N2MzNGJkMWRjZGJmZTA2NjU2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBpbnQgRml4ZWRU
YWJsZUxheW91dDo6Y2FsY1dpZHRoQXJyYXkoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBzcGFuSW5DdXJyZW50RWZmZWN0aXZlQ29sdW1uID0gbV90YWJsZS0+c3Bhbk9mRWZm
Q29sKGN1cnJlbnRFZmZlY3RpdmVDb2x1bW4pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKChjb2xTdHlsZUxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29sU3R5bGVMb2dpY2FsV2lk
dGguaXNQZXJjZW50KCkpICYmIGNvbFN0eWxlTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKChjb2xTdHlsZUxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29sU3R5
bGVMb2dpY2FsV2lkdGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpICYmIGNvbFN0eWxlTG9naWNh
bFdpZHRoLmlzUG9zaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIG1fd2lkdGhbY3VycmVudEVm
ZmVjdGl2ZUNvbHVtbl0gPSBjb2xTdHlsZUxvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICBt
X3dpZHRoW2N1cnJlbnRFZmZlY3RpdmVDb2x1bW5dICo9IHNwYW5JbkN1cnJlbnRFZmZlY3RpdmVD
b2x1bW47CiAgICAgICAgICAgICAgICAgdXNlZFdpZHRoICs9IGVmZmVjdGl2ZUNvbFdpZHRoICog
c3BhbkluQ3VycmVudEVmZmVjdGl2ZUNvbHVtbjsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEZp
eGVkVGFibGVMYXlvdXQ6OmFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVu
aXQmIG1pbldpZHRoLCBMYQogICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgdGhlIHR3byBpbm5lciB0
YWJsZXMgc2hvdWxkIGJlIGFzIGxhcmdlIGFzIHRoZSBvdXRlciB0YWJsZS4gCiAgICAgLy8gV2Ug
Y2FuIGFjaGlldmUgdGhpcyBlZmZlY3QgYnkgbWFraW5nIHRoZSBtYXh3aWR0aCBvZiBmaXhlZCB0
YWJsZXMgd2l0aCBwZXJjZW50YWdlCiAgICAgLy8gd2lkdGhzIGJlIGluZmluaXRlLgotICAgIGlm
IChtX3RhYmxlLT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpICYmIG1heFdpZHRo
IDwgdGFibGVNYXhXaWR0aCkKKyAgICBpZiAobV90YWJsZS0+c3R5bGUoKS5sb2dpY2FsV2lkdGgo
KS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSAmJiBtYXhXaWR0aCA8IHRhYmxlTWF4V2lkdGgpCiAg
ICAgICAgIG1heFdpZHRoID0gdGFibGVNYXhXaWR0aDsKIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgRml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgaWYgKG1fd2lkdGhbaV0u
aXNGaXhlZCgpKSB7CiAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLnZhbHVl
KCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVkV2lkdGggKz0gY2FsY1dpZHRoW2ldOwotICAgICAg
ICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAobV93aWR0aFtpXS5pc1BlcmNlbnQoKSkgewogICAgICAgICAgICAgY2Fs
Y1dpZHRoW2ldID0gdmFsdWVGb3JMZW5ndGgobV93aWR0aFtpXSwgdGFibGVMb2dpY2FsV2lkdGgp
OwogICAgICAgICAgICAgdG90YWxQZXJjZW50V2lkdGggKz0gY2FsY1dpZHRoW2ldOwogICAgICAg
ICAgICAgdG90YWxQZXJjZW50ICs9IG1fd2lkdGhbaV0ucGVyY2VudCgpOwpAQCAtMjU0LDcgKzI1
NCw3IEBAIHZvaWQgRml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgIGlmICh0
b3RhbFBlcmNlbnQpIHsKICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnRXaWR0aCA9IDA7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5FZmZDb2xzOyBpKyspIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50Tm90Q2FsY3VsYXRl
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoW2ldLmlzUGVyY2VudCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLnBlcmNl
bnQoKSAqICh0YWJsZUxvZ2ljYWxXaWR0aCAtIHRvdGFsRml4ZWRXaWR0aCkgLyB0b3RhbFBlcmNl
bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFBlcmNlbnRXaWR0aCArPSBjYWxjV2lk
dGhbaV07CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IGQyZGRhNGRjYzkyNTZmMWY5MWNmMGMxNTY2MzM2NzE0ZGNmMjky
ZTAuLjE4Zjk0NjlhZDNiNTI1M2U0YWY0YmZjZmZhMmIyNDVjMjFiZjY1NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wg
UmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0CiAKICAgICBMZW5ndGgg
bG9naWNhbEhlaWdodExlbmd0aCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpOwogICAgIGJvb2wg
aGFzQXV0b0hlaWdodCA9IGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCk7Ci0gICAgaWYgKGxv
Z2ljYWxIZWlnaHRMZW5ndGguaXNQZXJjZW50KCkgJiYgIWRvY3VtZW50KCkuaW5RdWlya3NNb2Rl
KCkpIHsKKyAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KSAmJiAhZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkgewogICAgICAgICBoYXNBdXRvSGVpZ2h0
ID0gdHJ1ZTsKICAgICAgICAgZm9yIChSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2so
KTsgIWNiLT5pc1JlbmRlclZpZXcoKTsgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAg
ICAgICAgICAgIGlmIChjYi0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpIHx8IGNi
LT5pc1RhYmxlQ2VsbCgpKQpAQCAtODIxLDcgKzgyMSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omlz
U2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0CiAKICAgICAvLyBJZiB0aGUgaGVpZ2h0IGlzIDAg
b3IgYXV0bywgdGhlbiB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSBzZWxmLWNvbGxhcHNpbmcgYmxv
Y2sgZGVwZW5kcwogICAgIC8vIG9uIHdoZXRoZXIgd2UgaGF2ZSBjb250ZW50IHRoYXQgaXMgYWxs
IHNlbGYtY29sbGFwc2luZyBvciBub3QuCi0gICAgaWYgKGhhc0F1dG9IZWlnaHQgfHwgKChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmlzRml4ZWQoKSB8fCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzUGVyY2Vu
dCgpKSAmJiBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzWmVybygpKSkgeworICAgIGlmIChoYXNBdXRv
SGVpZ2h0IHx8ICgobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpeGVkKCkgfHwgbG9naWNhbEhlaWdo
dExlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgJiYgbG9naWNhbEhlaWdodExlbmd0aC5p
c1plcm8oKSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGhhcyBpbmxpbmUgY2hpbGRyZW4s
IHNlZSBpZiB3ZSBnZW5lcmF0ZWQgYW55IGxpbmUgYm94ZXMuICBJZiB3ZSBoYXZlIGFueQogICAg
ICAgICAvLyBsaW5lIGJveGVzLCB0aGVuIHdlIGNhbid0IGJlIHNlbGYtY29sbGFwc2luZywgc2lu
Y2Ugd2UgaGF2ZSBjb250ZW50LgogICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKQEAgLTIy
NTYsNyArMjI1Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyUGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzRnJvbShSZW5kZXJCb3gmIHBhcmVudCkKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OnRl
eHRJbmRlbnRPZmZzZXQoKSBjb25zdAogewogICAgIExheW91dFVuaXQgY3cgPSAwOwotICAgIGlm
IChzdHlsZSgpLnRleHRJbmRlbnQoKS5pc1BlcmNlbnQoKSkKKyAgICBpZiAoc3R5bGUoKS50ZXh0
SW5kZW50KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIGN3ID0gY29udGFpbmlu
Z0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS50ZXh0SW5kZW50KCksIGN3KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzQyZTQ5NDJiNDYwZDFiOGIzZTE4Y2ExYzQ1ZTMz
NTc1MzRhN2FmYS4uODE1YzQzYjQ2ZWY0YzQyZWQ3NzVjMmVlMjMzMjUzNmM2NTFjNjQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTk3OCw3ICs5NzgsNyBAQCBi
b29sIFJlbmRlckJveDo6aGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSBj
b25zdAogCiBib29sIFJlbmRlckJveDo6bmVlZHNQcmVmZXJyZWRXaWR0aHNSZWNhbGN1bGF0aW9u
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5wYWRkaW5nU3RhcnQoKS5pc1BlcmNlbnQo
KSB8fCBzdHlsZSgpLnBhZGRpbmdFbmQoKS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4gc3R5bGUo
KS5wYWRkaW5nU3RhcnQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8fCBzdHlsZSgpLnBhZGRp
bmdFbmQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIH0KIAogSW50U2l6ZSBSZW5kZXJCb3g6
OnNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0CkBAIC0yNzgyLDggKzI3ODIsOCBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIC8vIGlzIHNwZWNpZmllZC4gV2hlbiB3ZSdyZSBwcmlu
dGluZywgd2UgYWxzbyBuZWVkIHRoaXMgcXVpcmsgaWYgdGhlIGJvZHkgb3Igcm9vdCBoYXMgYSBw
ZXJjZW50YWdlIAogICAgIC8vIGhlaWdodCBzaW5jZSB3ZSBkb24ndCBzZXQgYSBoZWlnaHQgaW4g
UmVuZGVyVmlldyB3aGVuIHdlJ3JlIHByaW50aW5nLiBTbyB3aXRob3V0IHRoaXMgcXVpcmssIHRo
ZSAKICAgICAvLyBoZWlnaHQgaGFzIG5vdGhpbmcgdG8gYmUgYSBwZXJjZW50YWdlIG9mLCBhbmQg
aXQgZW5kcyB1cCBiZWluZyAwLiBUaGF0IGlzIGJhZC4KLSAgICBib29sIHBhZ2luYXRlZENvbnRl
bnROZWVkc0Jhc2VIZWlnaHQgPSBkb2N1bWVudCgpLnByaW50aW5nKCkgJiYgaC5pc1BlcmNlbnQo
KQotICAgICAgICAmJiAoaXNSb290KCkgfHwgKGlzQm9keSgpICYmIGRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzUGVyY2Vu
dCgpKSkgJiYgIWlzSW5saW5lKCk7CisgICAgYm9vbCBwYWdpbmF0ZWRDb250ZW50TmVlZHNCYXNl
SGVpZ2h0ID0gZG9jdW1lbnQoKS5wcmludGluZygpICYmIGguaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkKKyAgICAgICAgJiYgKGlzUm9vdCgpIHx8IChpc0JvZHkoKSAmJiBkb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSkpICYmICFpc0lubGluZSgpOwogICAgIGlmIChzdHJldGNoZXNUb1Zp
ZXdwb3J0KCkgfHwgcGFnaW5hdGVkQ29udGVudE5lZWRzQmFzZUhlaWdodCkgewogICAgICAgICBM
YXlvdXRVbml0IG1hcmdpbnMgPSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSArIGNvbGxhcHNlZE1h
cmdpbkFmdGVyKCk7CiAgICAgICAgIExheW91dFVuaXQgdmlzaWJsZUhlaWdodCA9IHZpZXcoKS5w
YWdlT3JWaWV3TG9naWNhbEhlaWdodCgpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KGNvbnN0IExlbmd0aCYKIHsKICAgICBpZiAoaGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgcmV0
dXJuIGhlaWdodC52YWx1ZSgpOwotICAgIGlmIChoZWlnaHQuaXNQZXJjZW50KCkpCisgICAgaWYg
KGhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVQ
ZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTI4
OTEsNyArMjg5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNvbnN0CiAgICAgfSBlbHNlIGlmIChj
YnN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50Qm94SGVpZ2h0ID0gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94
U2l6aW5nKGNic3R5bGUubG9naWNhbEhlaWdodCgpLnZhbHVlKCkpOwogICAgICAgICBhdmFpbGFi
bGVIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjYi0+Y29uc3RyYWluQ29udGVudEJv
eExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gY2ItPnNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKSkpOwotICAgIH0gZWxzZSBpZiAoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCku
aXNQZXJjZW50KCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQp
IHsKKyAgICB9IGVsc2UgaWYgKGNic3R5bGUubG9naWNhbEhlaWdodCgpLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjdXIgYW5kIGNvbXB1dGUgdGhlIHBlcmNlbnRhZ2Ug
aGVpZ2h0IGZvciBvdXIgY29udGFpbmluZyBibG9jay4KICAgICAgICAgTGF5b3V0VW5pdCBoZWln
aHRXaXRoU2Nyb2xsYmFyID0gY2ItPmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjYnN0
eWxlLmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIGlmIChoZWlnaHRXaXRoU2Nyb2xsYmFyICE9
IC0xKSB7CkBAIC0yOTM2LDggKzI5MzYsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWxkQwogCiBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGlu
Z01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBTaG91bGRDb21wdXRlUHJlZmVy
cmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBtaW5M
b2dpY2FsV2lkdGggPSAoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9PSBDb21wdXRlUHJlZmVycmVk
ICYmIHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCkuaXNQZXJjZW50KCkpIHx8IHN0eWxlKCkubG9n
aWNhbE1pbldpZHRoKCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCkpOwotICAgIExh
eW91dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gKHNob3VsZENvbXB1dGVQcmVmZXJyZWQgPT0gQ29t
cHV0ZVByZWZlcnJlZCAmJiBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgpKSB8
fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkgPyBsb2dpY2FsV2lkdGgg
OiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0
aCgpKTsKKyAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aCA9IChzaG91bGRDb21wdXRlUHJl
ZmVycmVkID09IENvbXB1dGVQcmVmZXJyZWQgJiYgc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgfHwgc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKS5pc1Vu
ZGVmaW5lZCgpID8gbG9naWNhbFdpZHRoIDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNp
bmcoc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKSk7CisgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2Fs
V2lkdGggPSAoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9PSBDb21wdXRlUHJlZmVycmVkICYmIHN0
eWxlKCkubG9naWNhbE1heFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHx8IHN0eWxl
KCkubG9naWNhbE1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCkubG9naWNhbE1heFdpZHRoKCkpOwog
ICAgIHJldHVybiBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIHN0ZDo6bWluKGxvZ2ljYWxXaWR0
aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9CiAKQEAgLTI5NjUsNyArMjk2NSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9n
aWNhbFdpZHRoKSBjb25zCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTEwNzEKICAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNJbnRy
aW5zaWMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aFVzaW5nKGxvZ2ljYWxXaWR0aCwgY3csIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgo
KSkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBpZiAoY3cg
PiAwIHx8ICghY3cgJiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFp
bmVyTG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSkpCisgICAgICAgICAgICBpZiAoY3cgPiAwIHx8
ICghY3cgJiYgKGNvbnRhaW5lckxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgfHwgY29udGFpbmVyTG9n
aWNhbFdpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluaW11bVZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY3cpKTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKQEAgLTMwMzIsNyArMzAzMiw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvCiAgICAg
ICAgICAgICAgICAgLy8gdGFibGUgY2VsbHMgdXNpbmcgcGVyY2VudGFnZSBoZWlnaHRzLgogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIG1hZGUgYmxvY2stZmxvdy1h
d2FyZS4gIElmIHRoZSBjZWxsIGFuZCBpbWFnZSBhcmUgcGVycGVuZGljdWxhciBibG9jay1mbG93
cywgdGhpcyBpc24ndCByaWdodC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5OTcKLSAgICAgICAgICAgICAgICB3aGlsZSAoY2Ig
JiYgIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlz
QXV0bygpIHx8IGNiLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnQoKSkpIHsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAoY2ItPnN0
eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8IGNiLT5zdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGNiLT5pc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBs
ZXQgdGFibGUgY2VsbHMgc3F1ZWV6ZSBwZXJjZW50LWhlaWdodCByZXBsYWNlZCBlbGVtZW50cwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzU5PgpAQCAtMzA2MCwxMyArMzA2MCwxMyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxh
YmxlTG9naQogICAgIC8vIFdlIG5lZWQgdG8gc3RvcCBoZXJlLCBzaW5jZSB3ZSBkb24ndCB3YW50
IHRvIGluY3JlYXNlIHRoZSBoZWlnaHQgb2YgdGhlIHRhYmxlCiAgICAgLy8gYXJ0aWZpY2lhbGx5
LiAgV2UncmUgZ29pbmcgdG8gcmVseSBvbiB0aGlzIGNlbGwgZ2V0dGluZyBleHBhbmRlZCB0byBz
b21lIG5ldwogICAgIC8vIGhlaWdodCwgYW5kIHRoZW4gd2hlbiB3ZSBsYXkgb3V0IGFnYWluIHdl
J2xsIHVzZSB0aGUgY2FsY3VsYXRpb24gYmVsb3cuCi0gICAgaWYgKGlzVGFibGVDZWxsKCkgJiYg
KGguaXNBdXRvKCkgfHwgaC5pc1BlcmNlbnQoKSkpIHsKKyAgICBpZiAoaXNUYWJsZUNlbGwoKSAm
JiAoaC5pc0F1dG8oKSB8fCBoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkgewogICAgICAgICBp
ZiAoaGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJu
IG92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxI
ZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfQogCi0gICAg
aWYgKGguaXNQZXJjZW50KCkgJiYgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWlzUmVuZGVy
Rmxvd1RocmVhZCgpKSB7CisgICAgaWYgKGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgJiYgaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGlmIHRoZSBjb250YWluaW5nQmxvY2sgaGFzIGEgcGVy
cGVuZGljdWxhciB3cml0aW5nIG1vZGUuCiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVp
Z2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29udGFpbmlu
Z0Jsb2NrKCkpOwogICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgoaCwgYXZhaWxhYmxlSGVpZ2h0KSk7CkBAIC00NDk4
LDcgKzQ0OTgsNyBAQCBzdGF0aWMgYm9vbCBsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUoY29uc3Qg
UmVuZGVyQm94JiByZW5kZXJCb3gpCiAgICAgaWYgKGJveC0+aGFzT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGJveC0+b3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgIT0gLTE7CiAjZW5kaWYKLSAgICBpZiAoYm94
LT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpKQorICAgIGlmIChib3gtPnN0eWxl
KCkubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGhJc1Jlc29sdmFibGUoKmJveC0+Y29udGFpbmluZ0Jsb2NrKCkpOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU1MCw3ICs0NTUwLDcgQEAgYm9vbCBSZW5kZXJCb3g6OnBl
cmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlRnJvbUJsb2NrKGNvbnN0IFJlbmRlckJs
b2NrKgogICAgIC8vIGhlaWdodC4KICAgICBpZiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzRml4ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNiLT5zdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKS5pc1BlcmNlbnQoKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNw
ZWNpZmllZEhlaWdodCkKKyAgICBpZiAoY2ItPnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVk
SGVpZ2h0KQogICAgICAgICByZXR1cm4gcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFi
bGVGcm9tQmxvY2soY2ItPmNvbnRhaW5pbmdCbG9jaygpLCBjYi0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpOwogICAgIGlmIChjYi0+aXNSZW5kZXJWaWV3KCkgfHwgaW5RdWlya3NNb2RlIHx8IGlz
T3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDU5NSw4ICs0NTk1LDggQEAgYm9vbCBSZW5kZXJCb3g6Omhhc1Vuc3BsaXR0YWJs
ZVNjcm9sbGluZ092ZXJmbG93KCkgY29uc3QKICAgICAvLyBjb25kaXRpb25zLCBidXQgaXQgc2hv
dWxkIHdvcmsgb3V0IHRvIGJlIGdvb2QgZW5vdWdoIGZvciBjb21tb24gY2FzZXMuIFBhZ2luYXRp
bmcgb3ZlcmZsb3cKICAgICAvLyB3aXRoIHNjcm9sbGJhcnMgcHJlc2VudCBpcyBub3QgdGhlIGVu
ZCBvZiB0aGUgd29ybGQgYW5kIGlzIHdoYXQgd2UgdXNlZCB0byBkbyBpbiB0aGUgb2xkIG1vZGVs
IGFueXdheS4KICAgICByZXR1cm4gIXN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzSW50cmluc2lj
T3JBdXRvKCkKLSAgICAgICAgfHwgKCFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc0ludHJp
bnNpY09yQXV0bygpICYmICFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgp
ICYmICghc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgcGVyY2VudGFn
ZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykpKQotICAgICAgICB8fCAoIXN0eWxlKCku
bG9naWNhbE1pbkhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgc3R5bGUoKS5sb2dpY2Fs
TWluSGVpZ2h0KCkuaXNQb3NpdGl2ZSgpICYmICghc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCku
aXNQZXJjZW50KCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykp
KTsKKyAgICAgICAgfHwgKCFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc0ludHJpbnNpY09y
QXV0bygpICYmICFzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpICYmICgh
c3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgcGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUodGhpcykpKQorICAgICAgICB8fCAoIXN0
eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgc3R5bGUoKS5s
b2dpY2FsTWluSGVpZ2h0KCkuaXNQb3NpdGl2ZSgpICYmICghc3R5bGUoKS5sb2dpY2FsTWluSGVp
Z2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJ
c1Jlc29sdmFibGUodGhpcykpKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OmlzVW5zcGxpdHRhYmxl
Rm9yUGFnaW5hdGlvbigpIGNvbnN0CkBAIC00ODY5LDIzICs0ODY5LDIzIEBAIHZvaWQgUmVuZGVy
Qm94OjphcHBseVRvcExlZnRMb2NhdGlvbk9mZnNldFdpdGhGbGlwcGluZyhMYXlvdXRQb2ludCYg
cG9pbnQpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNSZWxhdGl2ZURpbWVuc2lvbnMoKSBj
b25zdAogewotICAgIHJldHVybiBzdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudCgpIHx8IHN0eWxl
KCkud2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICAgICAgfHwgc3R5bGUoKS5tYXhIZWlnaHQo
KS5pc1BlcmNlbnQoKSB8fCBzdHlsZSgpLm1heFdpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAg
ICAgIHx8IHN0eWxlKCkubWluSGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS5taW5XaWR0
aCgpLmlzUGVyY2VudCgpOworICAgIHJldHVybiBzdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpIHx8IHN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQor
ICAgICAgICB8fCBzdHlsZSgpLm1heEhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8
IHN0eWxlKCkubWF4V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQorICAgICAgICB8fCBz
dHlsZSgpLm1pbkhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IHN0eWxlKCkubWlu
V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6Omhh
c1JlbGF0aXZlTG9naWNhbEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlKCkubG9n
aWNhbEhlaWdodCgpLmlzUGVyY2VudCgpCi0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxN
aW5IZWlnaHQoKS5pc1BlcmNlbnQoKQotICAgICAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4
SGVpZ2h0KCkuaXNQZXJjZW50KCk7CisgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1pbkhl
aWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNh
bE1heEhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwogfQogCiBib29sIFJlbmRlckJv
eDo6aGFzUmVsYXRpdmVMb2dpY2FsV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBzdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpCi0gICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1p
bldpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgo
KS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1heFdpZHRo
KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcmtCb3hGb3JS
ZWxheW91dEFmdGVyU3BsaXQoUmVuZGVyQm94JiBib3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBkYjk4MmY4YjVhMGFlOTFh
ZjIwZDI0YTIzZmE4Zjg4NDU3NmJjYzI0Li5hMzNiY2VkZmE2YTAwMGVmODI2YmFiNTc4NGRhMjI2
YmM1ZThmNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpIGNvbnN0
CiAgICAgLy8gRm9yIHBlcmNlbnRhZ2UgaGVpZ2h0czogVGhlIHBlcmNlbnRhZ2UgaXMgY2FsY3Vs
YXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIGJveCdzCiAg
ICAgLy8gY29udGFpbmluZyBibG9jay4gSWYgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBi
bG9jayBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRlcGVuZHMKICAgICAv
LyBvbiBjb250ZW50IGhlaWdodCksIGFuZCB0aGlzIGVsZW1lbnQgaXMgbm90IGFic29sdXRlbHkg
cG9zaXRpb25lZCwgdGhlIHZhbHVlIGNvbXB1dGVzIHRvICdhdXRvJy4KLSAgICBpZiAoIWxvZ2lj
YWxIZWlnaHRMZW5ndGguaXNQZXJjZW50KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwg
ZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAoIWxvZ2ljYWxIZWlnaHRMZW5ndGgu
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgZG9j
dW1lbnQoKS5pblF1aXJrc01vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
QW5vbnltb3VzIGJsb2NrIGJveGVzIGFyZSBpZ25vcmVkIHdoZW4gcmVzb2x2aW5nIHBlcmNlbnRh
Z2UgdmFsdWVzIHRoYXQgd291bGQgcmVmZXIgdG8gaXQ6CkBAIC0yOTksMTMgKzI5OSwxMyBAQCBM
YXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkg
Y29uc3QKICAgICAvLyBjYWxjdWxhdGUgdGhlIHBlcmNlbnQgb2Zmc2V0IGJhc2VkIG9uIHRoaXMg
aGVpZ2h0LgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI2Mzk2Pi4KICAgICBpZiAoIXN0eWxlKCkudG9wKCkuaXNBdXRvKCkKLSAgICAgICAgJiYg
KCFzdHlsZSgpLnRvcCgpLmlzUGVyY2VudCgpCisgICAgICAgICYmICghc3R5bGUoKS50b3AoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKQogICAgICAgICAgICAgfHwgIWNvbnRhaW5pbmdCbG9jaygp
LT5oYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpCiAgICAgICAg
ICAgICB8fCBjb250YWluaW5nQmxvY2soKS0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKSkKICAgICAg
ICAgb2Zmc2V0LmV4cGFuZCgwLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLnRvcCgpLCAhc3R5bGUo
KS50b3AoKS5pc0ZpeGVkKCkgPyBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkg
OiBMYXlvdXRVbml0KCkpKTsKIAogICAgIGVsc2UgaWYgKCFzdHlsZSgpLmJvdHRvbSgpLmlzQXV0
bygpCi0gICAgICAgICYmICghc3R5bGUoKS5ib3R0b20oKS5pc1BlcmNlbnQoKQorICAgICAgICAm
JiAoIXN0eWxlKCkuYm90dG9tKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkKICAgICAgICAgICAg
IHx8ICFjb250YWluaW5nQmxvY2soKS0+aGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0
aEF1dG9IZWlnaHQoKQogICAgICAgICAgICAgfHwgY29udGFpbmluZ0Jsb2NrKCktPnN0cmV0Y2hl
c1RvVmlld3BvcnQoKSkpCiAgICAgICAgIG9mZnNldC5leHBhbmQoMCwgLXZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCkuYm90dG9tKCksICFzdHlsZSgpLmJvdHRvbSgpLmlzRml4ZWQoKSA/IGNvbnRhaW5p
bmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSA6IExheW91dFVuaXQoKSkpOwpAQCAtNTE5LDcg
KzUxOSw3IEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwcGVkT2Zmc2V0SGVp
Z2h0KCkgY29uc3QKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NT
UGFkZGluZyhjb25zdCBMZW5ndGgmIHBhZGRpbmcpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCB3
ID0gMDsKLSAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKKyAgICBpZiAocGFkZGluZy5pc1Bl
cmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKTsKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRp
bmcsIHcpOwogfQpAQCAtOTMyLDggKzkzMiw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyhTdHlsZUltYWdlKiBpCiAg
ICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIGltYWdlLT5jb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyh0aGlzLCBpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5z
aWNSYXRpbyk7CiAKLSAgICBBU1NFUlQoIWludHJpbnNpY1dpZHRoLmlzUGVyY2VudCgpKTsKLSAg
ICBBU1NFUlQoIWludHJpbnNpY0hlaWdodC5pc1BlcmNlbnQoKSk7CisgICAgQVNTRVJUKCFpbnRy
aW5zaWNXaWR0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSk7CisgICAgQVNTRVJUKCFpbnRyaW5z
aWNIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpOwogCiAgICAgTGF5b3V0U2l6ZSByZXNv
bHZlZFNpemUoaW50cmluc2ljV2lkdGgudmFsdWUoKSwgaW50cmluc2ljSGVpZ2h0LnZhbHVlKCkp
OwogICAgIExheW91dFNpemUgbWluaW11bVNpemUocmVzb2x2ZWRTaXplLndpZHRoKCkgPiAwID8g
MSA6IDAsIHJlc29sdmVkU2l6ZS5oZWlnaHQoKSA+IDAgPyAxIDogMCk7CkBAIC05ODMsMTIgKzk4
MywxMiBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGls
ZVNpemUoY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZQogCiAgICAgICAgICAgICBpZiAobGF5ZXJX
aWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgobGF5ZXJX
aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyV2lkdGguaXNQZXJjZW50
KCkpCisgICAgICAgICAgICBlbHNlIGlmIChsYXllcldpZHRoLmlzUGVyY2VudE9yQ2FsY3VsYXRl
ZCgpKQogICAgICAgICAgICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxh
eWVyV2lkdGgsIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobGF5ZXJIZWlnaHQuaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHRp
bGVTaXplLnNldEhlaWdodChsYXllckhlaWdodC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGxheWVySGVpZ2h0LmlzUGVyY2VudCgpKQorICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJI
ZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUu
c2V0SGVpZ2h0KHZhbHVlRm9yTGVuZ3RoKGxheWVySGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXpl
LmhlaWdodCgpKSk7CiAKICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgdmFsdWVzIGlzIGF1
dG8gd2UgaGF2ZSB0byB1c2UgdGhlIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDUy
YjRhM2Y1NTYyN2IxYmNjZWYyMWQ1MWUyMTMyNmQ0Y2E5MmUyZDMuLmRiNmUwOTk0ZGU0NjBlNDA2
ZjBmZjVhZDAyMmE1NDkyOWI4ZmZlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC05MzQsNyArOTM0
LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZs
ZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOwotICAgICAgICBpZiAocmVsYXlvdXRD
aGlsZHJlbiB8fCAoY2hpbGQtPmlzUmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgo
KS5pc1BlcmNlbnQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpCisg
ICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZCgpICYmIChj
aGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IGNoaWxkLT5z
dHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkKICAgICAgICAgICAgIHx8
IChjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBpczxSZW5kZXJCbG9ja0Zsb3c+
KCpjaGlsZCkpKSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwogCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6Y2xlYXJMaW5lQ2xhbXAoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGVTaXplKCk7Ci0gICAgICAgIGlmICgoY2hpbGQtPmlz
UmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBjaGls
ZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpCisgICAgICAgIGlmICgoY2hpbGQtPmlz
UmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0
ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkp
CiAgICAgICAgICAgICB8fCAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8
UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldENoaWxk
TmVlZHNMYXlvdXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGQzNjc5ZDZhMTM4MGNkZDQ0YzZkMWRhNWMxYjQ2YTQ5YTc0MGY3N2YuLjljN2I4
ODI0NmQ1MWUxMjQ0ZDZkODRkODY2NmZmNzFlMmEwMTgzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBi
b29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmlsbExheWVyCiAKICAgICBpZiAoc2l6ZVR5cGUgPT0gU2l6ZUxlbmd0aCkgewogICAg
ICAgICBMZW5ndGhTaXplIHNpemUgPSBsYXllci0+c2l6ZUxlbmd0aCgpOwotICAgICAgICBpZiAo
c2l6ZS53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHNpemUuaGVpZ2h0KCkuaXNQZXJjZW50KCkpCisg
ICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgc2l6ZS5o
ZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRoZXIgYW4gaW50cmluc2ljIHdpZHRo
IG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBpcyBkZXRlcm1pbmVkIGFzIGZvciAn
Y29udGFpbicuCiAgICAgICAgIGlmICgoc2l6ZS53aWR0aCgpLmlzQXV0bygpIHx8IHNpemUuaGVp
Z2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRlZEltYWdlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRl
eCBkN2I3NWQ4ZWE1NTlmODM0ZTRlMDRlOWJlZDc1MzljODkzNGMzNDdkLi5lMTg3YWUxMzM5YmE0
ZWM3Zjg3Y2RhYmU2MzQyODVjNmQxNTNlNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpYwogICAgICAgICAgICAgZGVmYXVsdExhYmVsV2lkdGgg
Kz0gYnV0dG9uUmVuZGVyZXItPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgYWZ0ZXJCdXR0
b25TcGFjaW5nOwogICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYo
c3RkOjptYXgobWluRGVmYXVsdExhYmVsV2lkdGgsIGRlZmF1bHRMYWJlbFdpZHRoKSkpOwogCi0g
ICAgaWYgKCFzdHlsZSgpLndpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKCFzdHlsZSgpLndp
ZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IG1heExvZ2ljYWxXaWR0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHAKaW5kZXggYzI5MGRiZTI5NmJiZGY0NmYzY2UyMWViM2M3N2RiNDU3YWZkMjli
NS4uMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3QgTGVu
Z3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgCiAgICAgICAgIC8vIENvdW50IHRoZSB0
b3RhbCBwZXJjZW50YWdlIG9mIGFsbCBvZiB0aGUgcGVyY2VudGFnZSBjb2x1bW5zL3Jvd3MgLT4g
dG90YWxQZXJjZW50CiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dz
IHdoaWNoIGFyZSBwZXJjZW50YWdlcyAtPiBjb3VudFBlcmNlbnQKLSAgICAgICAgaWYgKGdyaWRb
aV0uaXNQZXJjZW50KCkpIHsKKyAgICAgICAgaWYgKGdyaWRbaV0uaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpIHsKICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBzdGQ6Om1heChpbnRWYWx1ZUZv
ckxlbmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKICAgICAgICAgICAgIHRvdGFsUGVy
Y2VudCArPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRQZXJjZW50Kys7CkBAIC0y
NDQsNyArMjQ0LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYg
YXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgaW50IHJlbWFp
bmluZ1BlcmNlbnQgPSByZW1haW5pbmdMZW47CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBncmlkTGVuOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7
CisgICAgICAgICAgICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAg
ICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAoZ3JpZExheW91dFtpXSAqIHJlbWFpbmluZ1Bl
cmNlbnQpIC8gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xlbiAtPSBn
cmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgfQpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3Jp
ZCwgaW50IGF2YWlsYWJsCiAgICAgICAgICAgICBpbnQgY2hhbmdlUGVyY2VudCA9IDA7CiAKICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JpZExlbjsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGdyaWRbaV0uaXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ3Jp
ZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VQZXJjZW50ID0gKHJlbWFpbmluZ1BlcmNlbnQgKiBncmlkTGF5b3V0W2ldKSAvIHRvdGFsUGVy
Y2VudDsKICAgICAgICAgICAgICAgICAgICAgZ3JpZExheW91dFtpXSArPSBjaGFuZ2VQZXJjZW50
OwogICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdMZW4gLT0gY2hhbmdlUGVyY2VudDsKQEAg
LTMyMCw3ICszMjAsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlz
JiBheGlzLCBjb25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibAogICAgICAgICBpbnQgY2hh
bmdlUGVyY2VudCA9IDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAg
ICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAg
IGNoYW5nZVBlcmNlbnQgPSByZW1haW5pbmdQZXJjZW50IC8gY291bnRQZXJjZW50OwogICAgICAg
ICAgICAgICAgIGdyaWRMYXlvdXRbaV0gKz0gY2hhbmdlUGVyY2VudDsKICAgICAgICAgICAgICAg
ICByZW1haW5pbmdMZW4gLT0gY2hhbmdlUGVyY2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCmluZGV4IGQ2MWQxOTBjMmYxNjYzMjQyMjQzODQ2NDc5YjQ4OTY3Yzhl
YWM4NzUuLmI5NmJjNTU5YTliMzVjZWYxMjM4YTA0OWY3ZTA1N2FlY2IxMDczZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzE1LDkgKzMxNSw5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdlVHlw
ZSBpbWFnZVNpemVDaGFuZ2UsIGNvCiAgICAgLy8gaWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBz
aXplIGRlcGVuZHMgb24gdGhlIGltYWdlJ3Mgc2l6ZSAoaS5lLiwgdGhlIGNvbnRhaW5lciB1c2Vz
IHNocmluay10by1maXQgc2l6aW5nKS4KICAgICAvLyBUaGVyZSdzIG5vIGVhc3kgd2F5IHRvIGRl
dGVjdCB0aGF0IHNocmluay10by1maXQgaXMgbmVlZGVkLCBhbHdheXMgZm9yY2UgYSBsYXlvdXQu
CiAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJlZmVycmVkU2l6ZSA9
Ci0gICAgICAgIHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50KCkKLSAgICAgICAgfHwg
c3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICB8fCBzdHlsZSgp
LmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOworICAgICAgICBzdHlsZSgpLmxvZ2ljYWxX
aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNh
bE1heFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkKKyAgICAgICAgfHwgc3R5bGUoKS5s
b2dpY2FsTWluV2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsKIAogICAgIGJvb2wgbGF5
b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgpLmFzcGVjdFJhdGlvVHlwZSgp
ID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCAwYjJiNTEzODE2NTcyYTUxNDE3N2RmYmFlYzU5OWE1MWFl
OWM1YmFjLi42NmYyZGM2MThlYmEzZTNhOTNmNDhlM2E3YTk4Njc5ZGZmYzg4MmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBA
IHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVNYXJnaW4oY29uc3QgUmVuZGVySW5saW5lKiByZW5k
ZXJlciwgY29uc3QgTGVuZ3RoJiBtYXJnCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtYXJn
aW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7Ci0gICAgaWYgKG1h
cmdpbi5pc1BlcmNlbnQoKSkKKyAgICBpZiAobWFyZ2luLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgp
KQogICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgc3RkOjptYXg8
TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dp
Y2FsV2lkdGgoKSkpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDI3YzVlZDU5MTlmZWVkOGNkNWJlYjllZGNiYjA1YWUy
NGU0ZWJiN2MuLjE2MzMxYWI1YjgzMGVmMjU5MGZlMzI3NDFiOThiOWIwY2NlMGIzM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE5Myw3ICsxOTMs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTAogICAgIG1heExvZ2ljYWxXaWR0aCA9IG1fb3B0
aW9uc1dpZHRoICsgMiAqIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRhbDsKICAgICBpZiAobV92QmFy
KQogICAgICAgICBtYXhMb2dpY2FsV2lkdGggKz0gbV92QmFyLT53aWR0aCgpOwotICAgIGlmICgh
c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudCgpKQorICAgIGlmICghc3R5bGUoKS53aWR0aCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dp
Y2FsV2lkdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IGRiZTdiMWJhYjQzN2QzZmY0NzEzMzBhMjg1ZWU3ZTZkMzRjYmRhOTIuLjk4YTRm
MDliMmM2MWM5NmE4OWIwZjE1MjZkZTc5Mzg3OTc2ZmFhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIExheW91dFJl
Y3QgUmVuZGVyTWVudUxpc3Q6OmNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRk
aXRpb25hbE9mZnNldCkKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdAogewogICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fb3B0
aW9uc1dpZHRoLCB0aGVtZSgpLm1pbmltdW1NZW51TGlzdFNpemUoc3R5bGUoKSkpICsgbV9pbm5l
ckJsb2NrLT5wYWRkaW5nTGVmdCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nUmlnaHQoKTsKLSAg
ICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkKKyAgICBpZiAoIXN0eWxlKCkud2lk
dGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgbWluTG9naWNhbFdpZHRoID0g
bWF4TG9naWNhbFdpZHRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGY1NzZlYzU4MmM0MzY5ZDhiMWMwY2IyZmYxNDEyZWMwOTU0ZTUxYTYuLjhl
ZjkxZmU3N2FhZmM4NTc2NGQ5MmVjYjg0ZWY4ZWJjYTY2YTBjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIG9iamVjdElzUmVsYXlvdXRCb3VuZGFyeShjb25zdCBSZW5kZXJFbGVtZW50KiBv
YmplY3QpCiAgICAgaWYgKCFvYmplY3QtPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAob2JqZWN0LT5zdHlsZSgpLndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSB8fCBvYmplY3QtPnN0eWxlKCkuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSB8
fCBvYmplY3QtPnN0eWxlKCkuaGVpZ2h0KCkuaXNQZXJjZW50KCkpCisgICAgaWYgKG9iamVjdC0+
c3R5bGUoKS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgb2JqZWN0LT5zdHlsZSgpLmhl
aWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgb2JqZWN0LT5zdHlsZSgpLmhlaWdodCgpLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBU
YWJsZSBwYXJ0cyBjYW4ndCBiZSByZWxheW91dCByb290cyBzaW5jZSB0aGUgdGFibGUgaXMgcmVz
cG9uc2libGUgZm9yIGxheW91dGluZyBhbGwgdGhlIHBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNWI5MGY3YTViNWYzMzY2YjcwMjAzZmFj
MzkyOWFhMGY1ZjY5MDk0ZS4uZmIxNmMwZGM1MGFhNWQyMDA4ZmI4N2Y3MWQyZWEwYzg0MzFlMzZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00
ODYsMTMgKzQ4NiwxMyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCiAKICAgICAvLyBXZSBjYW5ub3QgcmVzb2x2ZSBhbnkgcGVyY2VudCBsb2dp
Y2FsIHdpZHRoIGhlcmUgYXMgdGhlIGF2YWlsYWJsZSBsb2dpY2FsCiAgICAgLy8gd2lkdGggbWF5
IG5vdCBiZSBzZXQgb24gb3VyIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgaWYgKHN0eWxlKCkubG9n
aWNhbFdpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHN0eWxlKCkubG9naWNhbFdpZHRoKCku
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
V2lkdGhzKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCk7CiAgICAgZWxzZQogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1f
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKENv
bXB1dGVQcmVmZXJyZWQpOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBz
dHlsZSgpOwotICAgIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgpIHx8
IHN0eWxlVG9Vc2UubG9naWNhbE1heFdpZHRoKCkuaXNQZXJjZW50KCkpCisgICAgaWYgKHN0eWxl
VG9Vc2UubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgc3R5bGVUb1Vz
ZS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSAwOwogCiAgICAgaWYgKHN0eWxlVG9Vc2UubG9naWNh
bE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UubG9naWNhbE1pbldpZHRoKCkudmFs
dWUoKSA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5k
ZXggOGI2ZDQ2N2Q3N2JiMjQ2MWViMjZiNjUyNDkxNmZkZTU4YzUwNmRiMy4uMDIxYjY0YTYwNTBh
YWFhY2FmYzE3OTFjZTVjOTU5NjhkN2EyZGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgaW50IFJlbmRlclNsaWRlcjo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVj
dGkKIHZvaWQgUmVuZGVyU2xpZGVyOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QKIHsKICAgICBtYXhMb2dpY2FsV2lkdGggPSBkZWZhdWx0VHJhY2tMZW5ndGggKiBzdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKTsKLSAgICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnQoKSkK
KyAgICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBiODhlNjkzNmQ1MWU0ODk3MGFiOTRmNTQz
ZjVhMDgyNWZmYjZlNTgxLi4wMDc3MmU0YTdlYzRmZTQ2OTFkYmI2NTAxMmU5N2EzMDYwOWZkOTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM2OCw3ICsz
NjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0
VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgICAgICBib3JkZXJzID0gYm9y
ZGVyQW5kUGFkZGluZ0JlZm9yZSArIGJvcmRlckFuZFBhZGRpbmdBZnRlcjsKICAgICAgICAgfQog
ICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBzdHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUo
KSAtIGJvcmRlcnM7Ci0gICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50
KCkpCisgICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpCiAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCmluZGV4IGIzMDkzMzBlYjg1YTIzYWNmMDkyNTc1OWU0ZjRkMWFjNzA2
ODA5ZTAuLjNmZDY5ZWY0YmRiZjljNGM1ZWE5ZWIxZWE1ODJlOTE2ZGUyMzM2MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0Rm9yQ2VsbChS
ZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93CiAgICAgICAgIExlbmd0aCBjUm93TG9n
aWNhbEhlaWdodCA9IHJvdy5sb2dpY2FsSGVpZ2h0OwogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxI
ZWlnaHQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAgIGlmICgh
Y1Jvd0xvZ2ljYWxIZWlnaHQuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGNSb3dMb2dpY2Fs
SGVpZ2h0LnBlcmNlbnQoKSA8IGxvZ2ljYWxIZWlnaHQucGVyY2VudCgpKQorICAgICAgICAgICAg
aWYgKCFjUm93TG9naWNhbEhlaWdodC5pc1BlcmNlbnQoKSB8fCBjUm93TG9naWNhbEhlaWdodC5w
ZXJjZW50KCkgPCBsb2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSkKICAgICAgICAgICAgICAgICByb3cu
bG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBGaXhlZDoKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6ZGlzdHJpYnV0ZUV4dHJhTG9naWNhbEhlaWdodFRvUGVyY2VudFJvd3MoaW50JiBleHRyYUxv
ZwogICAgIHRvdGFsUGVyY2VudCA9IHN0ZDo6bWluKHRvdGFsUGVyY2VudCwgMTAwKTsKICAgICBp
bnQgcm93SGVpZ2h0ID0gbV9yb3dQb3NbMV0gLSBtX3Jvd1Bvc1swXTsKICAgICBmb3IgKHVuc2ln
bmVkIHIgPSAwOyByIDwgdG90YWxSb3dzOyArK3IpIHsKLSAgICAgICAgaWYgKHRvdGFsUGVyY2Vu
dCA+IDAgJiYgbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgp
KSB7CisgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiAwICYmIG1fZ3JpZFtyXS5sb2dpY2FsSGVp
Z2h0LmlzUGVyY2VudCgpKSB7CiAgICAgICAgICAgICBpbnQgdG9BZGQgPSBzdGQ6Om1pbjxpbnQ+
KGV4dHJhTG9naWNhbEhlaWdodCwgKHRvdGFsSGVpZ2h0ICogbV9ncmlkW3JdLmxvZ2ljYWxIZWln
aHQucGVyY2VudCgpIC8gMTAwKSAtIHJvd0hlaWdodCk7CiAgICAgICAgICAgICAvLyBJZiB0b0Fk
ZCBpcyBuZWdhdGl2ZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIHNocmluayB0aGUgcm93ICh0aGlz
IGJ1ZwogICAgICAgICAgICAgLy8gYWZmZWN0ZWQgT3V0bG9vayBXZWIgQWNjZXNzKS4KQEAgLTQ5
Nyw3ICs0OTcsNyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpkaXN0cmlidXRlRXh0cmFMb2dp
Y2FsSGVpZ2h0VG9Sb3dzKGludCBleHRyYUxvZ2ljYWxIZWlnaAogICAgIGZvciAodW5zaWduZWQg
ciA9IDA7IHIgPCB0b3RhbFJvd3M7IHIrKykgewogICAgICAgICBpZiAobV9ncmlkW3JdLmxvZ2lj
YWxIZWlnaHQuaXNBdXRvKCkpCiAgICAgICAgICAgICArK2F1dG9Sb3dzQ291bnQ7Ci0gICAgICAg
IGVsc2UgaWYgKG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQo
KSkKKyAgICAgICAgZWxzZSBpZiAobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50KCkp
CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQucGVy
Y2VudCgpOwogICAgIH0KIApAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0
aW9uOjpsYXlvdXRSb3dzKCkKICAgICAgICAgICAgICAgICB8fCAoIXRhYmxlKCktPnN0eWxlKCku
bG9naWNhbEhlaWdodCgpLmlzQXV0bygpICYmIHJIZWlnaHQgIT0gY2VsbC0+bG9naWNhbEhlaWdo
dCgpKTsKIAogICAgICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2VsbC0+
Zmlyc3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICAgICAgICAgIGlmICghaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSAmJiBy
ZW5kZXJlci0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50KCkgJiYgKGZsZXhBbGxD
aGlsZHJlbiB8fCAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkgfHwgKGlzPFJlbmRlckJveD4oKnJl
bmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuc2Nyb2xsc092ZXJmbG93
KCkpKSAmJiAhaXM8UmVuZGVyVGV4dENvbnRyb2w+KCpyZW5kZXJlcikpKSkgeworICAgICAgICAg
ICAgICAgIGlmICghaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSAmJiByZW5kZXJlci0+c3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgJiYgKGZsZXhBbGxDaGls
ZHJlbiB8fCAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkgfHwgKGlzPFJlbmRlckJveD4oKnJlbmRl
cmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuc2Nyb2xsc092ZXJmbG93KCkp
KSAmJiAhaXM8UmVuZGVyVGV4dENvbnRyb2w+KCpyZW5kZXJlcikpKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBUYWJsZXMgd2l0aCBubyBzZWN0aW9ucyBkbyBub3QgZmxleC4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJUYWJsZT4oKnJlbmRlcmVyKSB8fCBkb3duY2FzdDxS
ZW5kZXJUYWJsZT4oKnJlbmRlcmVyKS5oYXNTZWN0aW9ucygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDVkNzhlYjNk
OTkwYTY1YWNiMWUwNmYxNzk1M2NiZjk1NzU1ZWRmYTAuLjdkZjM4M2M0NDQ3ZDk1ZTQyOWY0Zjhh
NjNhNTc4MjJiNmVhMTFiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRy
b2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0CiAgICAgbWF4TG9naWNhbFdpZHRoID0gcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChj
b25zdF9jYXN0PFJlbmRlclRleHRDb250cm9sKj4odGhpcyktPmdldEF2ZXJhZ2VDaGFyV2lkdGgo
KSk7CiAgICAgaWYgKFJlbmRlckJveCogaW5uZXJUZXh0UmVuZGVyQm94ID0gaW5uZXJUZXh0RWxl
bWVudCgpLT5yZW5kZXJCb3goKSkKICAgICAgICAgbWF4TG9naWNhbFdpZHRoICs9IGlubmVyVGV4
dFJlbmRlckJveC0+cGFkZGluZ1N0YXJ0KCkgKyBpbm5lclRleHRSZW5kZXJCb3gtPnBhZGRpbmdF
bmQoKTsKLSAgICBpZiAoIXN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNQZXJjZW50KCkpCisgICAg
aWYgKCFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAg
ICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dpY2FsV2lkdGg7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBhYWJkNGM3NTBhMDFhNjNmZGU0YTZiZWZk
MzVjN2NhNjlkNzdjNjQ1Li4yNGM3OTM0MDlmYjAxZjAyOGFiMWRiM2Q4ODRhMjcxMTYwYzk3ZWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0zMzMsOSArMzMz
LDkgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogCiAgICAgICAgIGZvciAoYXV0byYgYm94
IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyQm94PigqdGhpcykpIHsKICAgICAgICAgICAgIGlmIChi
b3guaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCkKLSAgICAgICAgICAgICAgICB8fCBib3guc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50KCkKLSAgICAgICAgICAgICAgICB8fCBib3gu
c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQZXJjZW50KCkKLSAgICAgICAgICAgICAgICB8
fCBib3guc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50KCkKKyAgICAgICAgICAg
ICAgICB8fCBib3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkKKyAgICAgICAgICAgICAgICB8fCBib3guc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCkuaXNQ
ZXJjZW50T3JDYWxjdWxhdGVkKCkKKyAgICAgICAgICAgICAgICB8fCBib3guc3R5bGUoKS5sb2dp
Y2FsTWF4SGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkKICAgICAgICAgICAgICAgICB8
fCBib3guaXNTVkdSb290KCkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgYm94
LnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCA3YmVmYTM1OWIyNjFlNWRmYWFkOGU5ZjgwM2Q0
OGUzYTkyN2E5MThlLi4xOWNlZWMyZjIwN2IwOWUzZWU5NTdhZTlmOWI2ZTU5MTA5OTZlZWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMDUwLDcg
KzEwNTAsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3goSW5saW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpbwogICAgICAgICBlbHNlIGlmICh2ZXJ0
aWNhbEFsaWduID09IExFTkdUSCkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0
OwogICAgICAgICAgICAgLy9QZXIgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5o
dG1sI3Byb3BkZWYtdmVydGljYWwtYWxpZ246ICdQZXJjZW50YWdlczogcmVmZXIgdG8gdGhlICds
aW5lLWhlaWdodCcgb2YgdGhlIGVsZW1lbnQgaXRzZWxmJy4KLSAgICAgICAgICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkuaXNQZXJjZW50KCkpCisgICAgICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmVydGljYWxBbGlnbkxlbmd0aCgpLmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSByZW5kZXJlci0+
c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBsaW5lSGVpZ2h0ID0gcmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5l
RGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5o
CmluZGV4IGUyMzAwMTkyMTNhOTQ3YTJhYzI0MGM0Nzc0ZDk2ZTg1ZDQ4YTNiZGMuLjI3NDcwMDdi
YmU4YjljYTk5MDkxOGUxNTFjODRlNzg4NTIzZWFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAg
ICBkb3VibGUgZmxleCgpIGNvbnN0IHsgQVNTRVJUKGlzRmxleCgpKTsgcmV0dXJuIG1fZmxleDsg
fQogCi0gICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVu
Z3RoVHlwZSAmJiBtX2xlbmd0aC5pc1BlcmNlbnQoKTsgfQorICAgIGJvb2wgaXNQZXJjZW50YWdl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExlbmd0aFR5cGUgJiYgbV9sZW5ndGguaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkTGVu
Z3RoJiBvKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkVHJhY2tTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFRyYWNrU2l6ZS5oCmluZGV4IDI4NGE3OGQ0NjlhNzNiODllMzA0Yjg2Y2ZmMjNkMDExZjBj
ZmE4ZmUuLmQyYzJkZWJiZTJkMWM2NGY5ZTU5NWRiNWQzNzA3NmFmNmMyYTMyOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaApAQCAtOTIsNyAr
OTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ29udGVudFNpemVkKCkgY29uc3QgeyByZXR1
cm4gbV9taW5UcmFja0JyZWFkdGguaXNDb250ZW50U2l6ZWQoKSB8fCBtX21heFRyYWNrQnJlYWR0
aC5pc0NvbnRlbnRTaXplZCgpOyB9CiAKLSAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUcmFja1NpemluZyAmJiBsZW5ndGgoKS5pc0xlbmd0aCgp
ICYmIGxlbmd0aCgpLmxlbmd0aCgpLmlzUGVyY2VudCgpOyB9CisgICAgYm9vbCBpc1BlcmNlbnRh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVuZ3RoVHJhY2tTaXppbmcgJiYgbGVuZ3Ro
KCkuaXNMZW5ndGgoKSAmJiBsZW5ndGgoKS5sZW5ndGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRUcmFja1NpemUmIG90aGVyKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCmluZGV4IDIyM2FlM2YwODYwYjllODVkNWE2MGIwZTZkNWUyNjUxZWUxNzU3NjIuLjI3
MGNmYmE0YWU5ZDcxNDk3ODU5ZjE0NDBlN2U3ODZmN2FhNDZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA3Nyw4ICsxMDc3LDgg
QEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWMKICAgICBhdXRvJiBvcGVyYXRpb25zID0gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpOwog
ICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKG9w
ZXJhdGlvbnMsIGFwcGx5T3JpZ2luKTsKIAotICAgIGZsb2F0IG9mZnNldFggPSB0cmFuc2Zvcm1P
cmlnaW5YKCkuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID8gYm91bmRpbmdCb3gueCgpIDogMDsK
LSAgICBmbG9hdCBvZmZzZXRZID0gdHJhbnNmb3JtT3JpZ2luWSgpLmlzUGVyY2VudE5vdENhbGN1
bGF0ZWQoKSA/IGJvdW5kaW5nQm94LnkoKSA6IDA7CisgICAgZmxvYXQgb2Zmc2V0WCA9IHRyYW5z
Zm9ybU9yaWdpblgoKS5pc1BlcmNlbnQoKSA/IGJvdW5kaW5nQm94LngoKSA6IDA7CisgICAgZmxv
YXQgb2Zmc2V0WSA9IHRyYW5zZm9ybU9yaWdpblkoKS5pc1BlcmNlbnQoKSA/IGJvdW5kaW5nQm94
LnkoKSA6IDA7CiAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKICAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZTNkKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWCgp
LCBib3VuZGluZ0JveC53aWR0aCgpKSArIG9mZnNldFgsCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBp
bnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCgpIGNvbnN0CiAgICAgaWYgKGxoLmlz
TmVnYXRpdmUoKSkKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsK
IAotICAgIGlmIChsaC5pc1BlcmNlbnQoKSkKKyAgICBpZiAobGguaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpCiAgICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGgsIGZvbnRTaXpl
KCkpOwogCiAgICAgcmV0dXJuIGNsYW1wVG88aW50PihsaC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDE2ZTUyZDI4MzE2
NjhlYTg5YzlhM2Q4NGJhODg1ZjIxZTVjNjc0NWYuLjJjMjNlMWYxMTZkMzQ4OGVmZTUwZDgxMTU5
NmQzYjExOTI0Y2QwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzUmVsYXRpdmVEaW1lbnNpb25zKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpLmlzUGVyY2VudCgp
IHx8IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudCgpOworICAgIHJl
dHVybiBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkgfHwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCkuaXNQZXJjZW50T3JDYWxj
dWxhdGVkKCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6YWRkUmVzb3VyY2VGb3JDbGllbnRJ
bnZhbGlkYXRpb24oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHJlc291cmNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IGI5YTY5MDEzMzc5MTZkMzZkNTEw
NmQzODBjNzZkYzRiMTQ1OTY3NTguLmZlNGI2Njk5NGYyYTYwZTI4ZDAzMGU5ZDY3MzY1NDkyZWRj
YTBmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZUxlbmd0aChjb25zdCBTVkdF
bGVtZW50KiBjb250ZXh0LCBTVkdVbml0VHlwZXM6OlMKIAogZmxvYXQgU1ZHTGVuZ3RoQ29udGV4
dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9k
ZSkKIHsKLSAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpICYmICFsZW5ndGguaXNDYWxjdWxhdGVk
KCkpCisgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRW
YWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUs
IElHTk9SRV9FWENFUFRJT04pOwogICAgIGlmIChsZW5ndGguaXNBdXRvKCkpCiAgICAgICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNWEy
ZWQzNDM2NTg5NjYzOGNkNzViNmQ0NzQ4NjczYmJhNTQxNzg3YS4uNDUxNjRmZjQ0MTY4NGNiMjQ0
MjNmY2Q2Nzc5ZjQyNWQ0YjFkMjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0CiAgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290
RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gcm9vdEVsZW1lbnQtPmludHJpbnNpY1dpZHRoKCkuaXNQZXJjZW50KCk7Cisg
ICAgcmV0dXJuIHJvb3RFbGVtZW50LT5pbnRyaW5zaWNXaWR0aCgpLmlzUGVyY2VudE9yQ2FsY3Vs
YXRlZCgpOwogfQogCiBib29sIFNWR0ltYWdlOjpoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CkBA
IC0yOTQsNyArMjk0LDcgQEAgYm9vbCBTVkdJbWFnZTo6aGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dAogICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsK
ICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHJvb3RFbGVtZW50LT5pbnRyaW5zaWNIZWlnaHQoKS5pc1BlcmNlbnQoKTsKKyAgICByZXR1cm4g
cm9vdEVsZW1lbnQtPmludHJpbnNpY0hlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOwog
fQogCiB2b2lkIFNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGlu
dHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5z
aWNSYXRpbykK
</data>

          </attachment>
      

    </bug>

</bugzilla>