<?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>177336</bug_id>
          
          <creation_ts>2017-09-21 18:01:29 -0700</creation_ts>
          <short_desc>Non-prevalent resources should be allowed access to existing cookies in a third-party context</short_desc>
          <delta_ts>2017-09-22 11:53:37 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=177337</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351493</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-21 18:01:29 -0700</bug_when>
    <thetext>Non-prevalent resources should be allowed access to existing cookies in a third-party context. This is to fix a regression introduced in https://bugs.webkit.org/show_bug.cgi?id=175232.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351494</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-21 18:01:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/34578257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351499</commentid>
    <comment_count>2</comment_count>
      <attachid>321502</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-21 18:17:35 -0700</bug_when>
    <thetext>Created attachment 321502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351500</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-21 18:18:49 -0700</bug_when>
    <thetext>Attachment 321502 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351667</commentid>
    <comment_count>4</comment_count>
      <attachid>321502</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-09-22 08:56:22 -0700</bug_when>
    <thetext>Comment on attachment 321502
Patch

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

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:89
&gt; +    bool isMarkedForCookieBlocking { false };

It might be more logical to use an OptionSet or an enum, since what we really have here is a tri-state condition -- either we are blocking, or we are partitioning, or we are allowing cookies. That might simplify some of the conditionals later on, where you have to test for three states.

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:104
&gt; +static bool cookiesInBlockedForURL(const NetworkStorageSession&amp; session, const URL&amp; firstParty, const URL&amp; url)

This name is weird. Should it be &quot;cookiesAreBlockedForURL&quot; ? What does &quot;InBlocked&quot; mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351715</commentid>
    <comment_count>5</comment_count>
      <attachid>321502</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-09-22 10:52:26 -0700</bug_when>
    <thetext>Comment on attachment 321502
Patch

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

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.h:89
&gt;&gt; +    bool isMarkedForCookieBlocking { false };
&gt; 
&gt; It might be more logical to use an OptionSet or an enum, since what we really have here is a tri-state condition -- either we are blocking, or we are partitioning, or we are allowing cookies. That might simplify some of the conditionals later on, where you have to test for three states.

We should make that change as a separate patch, to speed things along.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351720</commentid>
    <comment_count>6</comment_count>
      <attachid>321502</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-09-22 11:01:45 -0700</bug_when>
    <thetext>Comment on attachment 321502
Patch

r=me, but please fix the typo. Let&apos;s do a bit of clean-up in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351723</commentid>
    <comment_count>7</comment_count>
      <attachid>321566</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-22 11:14:28 -0700</bug_when>
    <thetext>Created attachment 321566
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351725</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-22 11:14:57 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; Comment on attachment 321502 [details]
&gt; Patch
&gt; 
&gt; r=me, but please fix the typo. Let&apos;s do a bit of clean-up in a follow-up
&gt; patch.

Thanks! Typo fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351753</commentid>
    <comment_count>9</comment_count>
      <attachid>321566</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-22 11:53:36 -0700</bug_when>
    <thetext>Comment on attachment 321566
Patch for landing

Clearing flags on attachment: 321566

Committed r222396: &lt;http://trac.webkit.org/changeset/222396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351754</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-22 11:53:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321502</attachid>
            <date>2017-09-21 18:17:35 -0700</date>
            <delta_ts>2017-09-22 11:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177336-20170921181734.patch</filename>
            <type>text/plain</type>
            <size>43789</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTIxICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE5vbi1wcmV2YWxlbnQgcmVz
b3VyY2VzIHNob3VsZCBiZSBhbGxvd2VkIGFjY2VzcyB0byBleGlzdGluZyBjb29raWVzIGluIGEg
dGhpcmQtcGFydHkgY29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3MzM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU3ODI1Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIEkgd2lsbCB1cGRhdGUgZXhpc3RpbmcgdGVzdHMgYW5kIGFkZCBhdCBsZWFzdAorICAgICAg
ICBvbmUgbmV3IHRlc3QgaW4gYSBmb2xsb3ctdXAgcGF0Y2gsCisgICAgICAgIHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MzM3LiBOZWVkIHRvCisgICAgICAg
IGxhbmQgdGhpcyB0byBtZWV0IHN1Ym1pc3Npb24gZGVhZGxpbmUgYW5kIGZpeCB0aGUgcmVncmVz
c2lvbi4KKworICAgICAgICBUaGlzIHBhdGNoIHJlc3RydWN0dXJlcyB3aGF0IGlzIGNvbW11bmlj
YXRlZCB0byB0aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBmcm9tIHR3byB2ZWN0b3JzIC0g
d2l0aCB1c2VyIGludGVyYWN0aW9uIGFuZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gLQorICAg
ICAgICB0byB0aHJlZSB2ZWN0b3JzIC0gdG8gcGFydGl0aW9uLCB0byBibG9jaywgdG8gbmVpdGhl
ciBwYXJ0aXRpb24gbm9yIGJsb2NrLgorICAgICAgICBUaGUgcHJldmlvdXMgdHdvIHZlY3RvcnMg
ZGlkIG5vdCBhbGxvdyBwcm9wZXIgY2F0ZWdvcml6YXRpb24gaW50byB3aGljaAorICAgICAgICBk
b21haW5zIHNob3VsZCBiZSBwYXJ0aXRpb25lZCwgYmxvY2tlZCwgb3IgbGVmdCBhbG9uZS4gVGhh
dCB3YXMgdGhlIGNhdXNlCisgICAgICAgIG9mIHRoZSByZWdyZXNzaW9uIHdoZXJlIG5vbi1wcmV2
YWxlbnQgdGhpcmQtcGFydHkgZG9tYWlucyBlcnJvbmVvdXNseSBoYWQKKyAgICAgICAgdGhlaXIg
Y29va2llcyBibG9ja2VkIHdoZW4gdGhleSBzaG91bGQgZmFsbCBiYWNrIHRvIHRoZSBvbGQgYmVo
YXZpb3Igb2YKKyAgICAgICAgYWNjZXNzIGJ1dCBubyBuZXcgY29va2llcyBhbGxvd2VkIHRvIGJl
IHNldC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKToKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZFBhcnRpdGlvbkNvb2tpZXMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQ
cmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQWxsb3dUaGlyZFBhcnR5Q29va2llcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNXaXRo
QW5kV2l0aG91dEludGVyYWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzSW5CbG9j
a2VkRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZXNGb3JVUkwpOgorCiAyMDE3LTA5
LTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGtleWJvYXJkIHNob3J0Y3V0IGZvciAiUmVsb2FkIHBhZ2UgZnJvbSBvcmlnaW4iIGRvZXNu
J3QgbWF0Y2ggU2FmYXJpLCBhbmQgZG9lc24ndCB3b3JrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAyMjIzNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjksNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6dG9TdHJpbmcoCiAKICAgICAvLyBJbi1tZW1vcnkgb25seQogICAgIGFwcGVuZEJvb2xl
YW4oYnVpbGRlciwgImlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nIiwgaXNNYXJrZWRGb3JD
b29raWVQYXJ0aXRpb25pbmcpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzTWFya2Vk
Rm9yQ29va2llQmxvY2tpbmciLCBpc01hcmtlZEZvckNvb2tpZUJsb2NraW5nKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpAQCAtMjg3LDYg
KzI4OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UoY29uc3QKICAgICAK
ICAgICAvLyBJbi1tZW1vcnkgb25seQogICAgIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5n
IHw9IG90aGVyLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nOworICAgIGlzTWFya2VkRm9y
Q29va2llQmxvY2tpbmcgfD0gb3RoZXIuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZzsKIH0KIAog
U3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1
cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLmgJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogCiAgICAgLy8gSW4tbWVtb3J5IG9ubHkKICAgICBi
b29sIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGlz
TWFya2VkRm9yQ29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw4ICs5MSw5IEBAIHB1YmxpYzoKICNpZiBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llU3RvcmFn
ZVBhcnRpdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKKyAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlKSBjb25zdDsKICAgICBTdHJpbmcgY29va2llU3Rv
cmFnZVBhcnRpdGlvbihjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwm
IHJlc291cmNlKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERv
bWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zV2l0aEludGVyYWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhvdXRJ
bnRlcmFjdGlvbiwgYm9vbCBjbGVhckZpcnN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jaywgYm9vbCBjbGVhckZpcnN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlm
CiAjZWxpZiBVU0UoU09VUCkKQEAgLTE0OCw5ICsxNDksOSBAQCBwcml2YXRlOgogCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRp
b25Db29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRBbGxvd1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFN0cmluZyYg
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikgY29uc3Q7Ci0gICAgSGFzaFNldDxTdHJpbmc+
IG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRob3V0SW50ZXJhY3Rp
b247Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbnNXaXRoSW50ZXJhY3Rpb247CisgICAgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikgY29uc3Q7
CisgICAgSGFzaFNldDxTdHJpbmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1Bh
cnRpdGlvbjsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluc1RvQmxvY2s7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMTUgKzIwNSwxNSBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkUGFydGl0CiAgICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9wcmV2
YWxlbnRUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbi5jb250
YWlucyh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKKyAgICByZXR1cm4gbV90b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFydGl0aW9uLmNvbnRhaW5zKHRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
QWxsb3dUaGlyZFBhcnR5Q29va2llcyhjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4pIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4pIGNvbnN0CiB7CiAgICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9wcmV2YWxlbnRUb3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhJbnRlcmFjdGlvbi5jb250YWlucyh0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKTsKKyAgICByZXR1cm4gbV90b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1RvQmxvY2suY29udGFpbnModG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbik7
CiB9CiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdApAQCAtMjIxLDQ4ICsyMjEsNjAgQEAg
Ym9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQwogICAgIGlmICghY29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gZmlyc3RQYXJ0eURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCkpOworICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVx
dWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpKTsKK30KKyAgICAKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSkgY29uc3QKK3sKKyAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgYXV0byBmaXJzdFBhcnR5RG9tYWluID0gZ2V0UGFydGl0aW9uaW5nRG9t
YWluKGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICBpZiAoZmlyc3RQYXJ0eURvbWFpbi5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcmVzb3VyY2VEb21haW4g
PSBnZXRQYXJ0aXRpb25pbmdEb21haW4ocmVxdWVzdC51cmwoKSk7CisgICAgYXV0byByZXNvdXJj
ZURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXNvdXJjZSk7CiAgICAgaWYgKHJlc291
cmNlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGZp
cnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VEb21haW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlRG9tYWluKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICFzaG91bGRBbGxvd1RoaXJkUGFydHlDb29r
aWVzKHJlc291cmNlRG9tYWluKTsKKyAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llcyhyZXNvdXJjZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIGJvb2wgY2xlYXJGaXJzdCkKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgY2xlYXJGaXJzdCkKIHsKICAgICBpZiAoY2xl
YXJGaXJzdCkgewotICAgICAgICBtX3ByZXZhbGVudFRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zV2l0aG91dEludGVyYWN0aW9uLmNsZWFyKCk7Ci0gICAgICAgIG1fcHJldmFsZW50VG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoSW50ZXJhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAg
bV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFydGl0aW9uLmNsZWFyKCk7CisgICAg
ICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLmNsZWFyKCk7CiAgICAg
fQogCi0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zV2l0aEludGVyYWN0aW9uKSB7Cisg
ICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9QYXJ0aXRpb24pIHsKKyAgICAgICAgbV90
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFydGl0aW9uLmFkZChkb21haW4pOwogICAg
ICAgICBpZiAoIWNsZWFyRmlyc3QpCi0gICAgICAgICAgICBtX3ByZXZhbGVudFRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW5zV2l0aG91dEludGVyYWN0aW9uLnJlbW92ZShkb21haW4pOwotICAg
ICAgICBtX3ByZXZhbGVudFRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aEludGVyYWN0
aW9uLmFkZChkb21haW4pOworICAgICAgICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluc1RvQmxvY2sucmVtb3ZlKGRvbWFpbik7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zV2l0aG91dEludGVyYWN0aW9uKSB7Ci0gICAgICAgIG1fcHJldmFsZW50VG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24uYWRkKGRvbWFpbik7
CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9CbG9jaykgeworICAgICAgICBtX3Rv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5hZGQoZG9tYWluKTsKICAgICAgICAg
aWYgKCFjbGVhckZpcnN0KQotICAgICAgICAgICAgbV9wcmV2YWxlbnRUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluc1dpdGhJbnRlcmFjdGlvbi5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgICAg
IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1BhcnRpdGlvbi5yZW1vdmUoZG9tYWlu
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjbGVhckZpcnN0KSB7CisgICAgICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKSB7CisgICAgICAg
ICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9QYXJ0aXRpb24ucmVtb3ZlKGRv
bWFpbik7CisgICAgICAgICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9j
ay5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKSB7Ci0gICAgICAg
IG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRob3V0SW50ZXJhY3Rp
b24ucmVtb3ZlKGRvbWFpbik7Ci0gICAgICAgIG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNXaXRoSW50ZXJhY3Rpb24ucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIG1fdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1BhcnRpdGlvbi5yZW1vdmUoZG9tYWluKTsKKyAg
ICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvQmxvY2sucmVtb3ZlKGRvbWFp
bik7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwMSw2ICsxMDEsMTEgQEAgc3RhdGljIE5TQXJyYXkgKmFwcGx5UGFydGl0aW9uVG9D
b29raWVzKAogICAgIHJldHVybiBwYXJ0aXRpb25lZENvb2tpZXM7CiB9CiAKK3N0YXRpYyBib29s
IGNvb2tpZXNJbkJsb2NrZWRGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVy
biBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwpOworfQorCiBzdGF0
aWMgTlNBcnJheSAqY29va2llc0luUGFydGl0aW9uRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBTdHJpbmcgcGFydGl0aW9uID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlUGFydGl0aW9u
KGZpcnN0UGFydHksIHVybCk7CkBAIC0xMzAsNiArMTM1LDkgQEAgc3RhdGljIE5TQXJyYXkgKmNv
b2tpZXNJblBhcnRpdGlvbkZvclVSTAogc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQorICAgIGlmIChjb29raWVzSW5CbG9ja2VkRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCiAgICAgaWYgKE5TQXJyYXkgKmNvb2tp
ZXMgPSBjb29raWVzSW5QYXJ0aXRpb25Gb3JVUkwoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKSkK
ICAgICAgICAgcmV0dXJuIGNvb2tpZXM7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjIzNzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ1IEBACisyMDE3LTA5LTIxICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE5vbi1wcmV2YWxlbnQgcmVzb3VyY2VzIHNob3VsZCBiZSBhbGxvd2VkIGFj
Y2VzcyB0byBleGlzdGluZyBjb29raWVzIGluIGEgdGhpcmQtcGFydHkgY29udGV4dAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MzM2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDU3ODI1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlc3RydWN0dXJlcyB3aGF0IGlzIGNvbW11
bmljYXRlZCB0byB0aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBmcm9tIHR3byB2ZWN0b3Jz
IC0gd2l0aCB1c2VyIGludGVyYWN0aW9uIGFuZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gLQor
ICAgICAgICB0byB0aHJlZSB2ZWN0b3JzIC0gdG8gcGFydGl0aW9uLCB0byBibG9jaywgdG8gbmVp
dGhlciBwYXJ0aXRpb24gbm9yIGJsb2NrLgorICAgICAgICBUaGUgcHJldmlvdXMgdHdvIHZlY3Rv
cnMgZGlkIG5vdCBhbGxvdyBwcm9wZXIgY2F0ZWdvcml6YXRpb24gaW50byB3aGljaAorICAgICAg
ICBkb21haW5zIHNob3VsZCBiZSBwYXJ0aXRpb25lZCwgYmxvY2tlZCwgb3IgbGVmdCBhbG9uZS4g
VGhhdCB3YXMgdGhlIGNhdXNlCisgICAgICAgIG9mIHRoZSByZWdyZXNzaW9uIHdoZXJlIG5vbi1w
cmV2YWxlbnQgdGhpcmQtcGFydHkgZG9tYWlucyBlcnJvbmVvdXNseSBoYWQKKyAgICAgICAgdGhl
aXIgY29va2llcyBibG9ja2VkIHdoZW4gdGhleSBzaG91bGQgZmFsbCBiYWNrIHRvIHRoZSBvbGQg
YmVoYXZpb3Igb2YKKyAgICAgICAgYWNjZXNzIGJ1dCBubyBuZXcgY29va2llcyBhbGxvd2VkIHRv
IGJlIHNldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzOmZvckhvc3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUGFydGl0
aW9uQ29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNl
dENvb2tpZVBhcnRpdGlvbmluZ1N0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKwogMjAxNy0wOS0yMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeSB0byBmaXggQXBwbGUgaW50ZXJuYWwgYnVpbGRzIHdpdGggdGhlIGlPUyAxMS4wIFNE
Sy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDEwICszMjEsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZQogfQogCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRh
dGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zV2l0aEludGVyYWN0aW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgYm9vbCBz
aG91bGRDbGVhckZpcnN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0
aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkKIHsKICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNl
dFByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKGRvbWFpbnNXaXRoSW50
ZXJhY3Rpb24sIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIHNob3VsZENsZWFyRmlyc3QpOwor
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIy
MjM0NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIGJvb2wgc2hvdWxkQ2xl
YXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAg
RGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRf
dCByZXF1ZXN0SUQpCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykK
LSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIGJvb2wgc2hvdWxk
Q2xlYXJGaXJzdCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNU
b1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0
KQogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0aW9uKTsKICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1dpdGhBbmRX
aXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1dpdGhBbmRX
aXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYm
IHJlbW92ZURvbWFpbnNIYW5kbGVyKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0
aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlciwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5z
SGFuZGxlcikKICAgICA6IG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVl
OjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1fcGVyc2lz
dGVudFN0b3JhZ2UoKnRoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCi0gICAg
LCBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxl
cihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9u
SGFuZGxlcikpCisgICAgLCBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlv
bk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAgLCBtX3JlbW92ZURvbWFpbnNIYW5kbGVyKFdU
Rk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJm
b3JtRGFpbHlUYXNrcykKICAgICAsIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZNb3Zl
KHRlc3RpbmdDYWxsYmFjaykpCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmxvZwogICAgICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFj
dGlvbiA9IHRydWU7CiAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWlucyh7IHByaW1hcnlEb21haW4gfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpO
byk7CisgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0s
IHsgcHJpbWFyeURvbWFpbiB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ2MCwxMiArNDYwLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzY2gKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVh
ckZpcnN0KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVt
LiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9BZGQpLCBzaG91bGRDbGVhckZpcnN0XSB7Ci0gICAgICAgIHVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQs
IHNob3VsZENsZWFyRmlyc3QpOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
KSwgc2hvdWxkQ2xlYXJGaXJzdF0geworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSk7CiB9CiAK
QEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y2xlCiAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBtX29wZXJhdGlu
Z0RhdGVzLmNsZWFyKCk7CiAKLSAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
KHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOworICAgIHVwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGlj
cyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQpAQCAtNjQ2LDU1
ICs2NDYsNzQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcgogICAg
IH0KIH0KIAotaW5saW5lIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91
bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3Rp
YykgY29uc3QKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0
aXRpb25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgKCFzdGF0
aXN0aWMuaGFkVXNlckludGVyYWN0aW9uIHx8IFdhbGxUaW1lOjpub3coKSA+IHN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fcGFyYW1ldGVycy50aW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZSk7CisgICAgcmV0dXJuIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291
cmNlICYmIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgV2FsbFRpbWU6Om5vdygpID4g
c3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV9wYXJhbWV0ZXJzLnRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOworfQorCitib29sIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpYykgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFs
ZW50UmVzb3VyY2UgJiYgIXN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb247CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbjsKLSAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5z
V2l0aEludGVyYWN0aW9uOworICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbjsK
KyAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jazsKKyAgICBWZWN0b3I8U3RyaW5nPiBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2s7CiAgICAgZm9yIChhdXRvJiByZXNvdXJj
ZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CisKICAgICAg
ICAgYm9vbCBzaG91bGRQYXJ0aXRpb24gPSBzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNl
U3RhdGlzdGljKTsKLSAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29v
a2llUGFydGl0aW9uaW5nICYmICFzaG91bGRQYXJ0aXRpb24pIHsKLSAgICAgICAgICAgIHJlc291
cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7Ci0gICAg
ICAgICAgICBkb21haW5zV2l0aEludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5o
aWdoTGV2ZWxEb21haW4pOwotICAgICAgICB9IGVsc2UgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5p
c01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyAmJiBzaG91bGRQYXJ0aXRpb24pIHsKKyAgICAg
ICAgYm9vbCBzaG91bGRCbG9jayA9IHNob3VsZEJsb2NrQ29va2llcyhyZXNvdXJjZVN0YXRpc3Rp
Yyk7CisKKyAgICAgICAgaWYgKHNob3VsZFBhcnRpdGlvbiAmJiAhcmVzb3VyY2VTdGF0aXN0aWMu
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcpIHsKKyAgICAgICAgICAgIGRvbWFpbnNUb1Bh
cnRpdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKICAgICAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24uYXBwZW5kKHJlc291
cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxk
QmxvY2sgJiYgIXJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcpIHsK
KyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdo
TGV2ZWxEb21haW4pOworICAgICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JD
b29raWVCbG9ja2luZyA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZFBhcnRpdGlv
biAmJiAhc2hvdWxkQmxvY2sgJiYgcmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJj
ZSkgeworICAgICAgICAgICAgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLmFwcGVu
ZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICAgICAgcmVzb3Vy
Y2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcgPSBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkb21haW5zV2l0aEludGVyYWN0aW9uLmlz
RW1wdHkoKSAmJiBkb21haW5zV2l0aG91dEludGVyYWN0aW9uLmlzRW1wdHkoKSkKKyAgICBpZiAo
ZG9tYWluc1RvUGFydGl0aW9uLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9jay5pc0VtcHR5KCkg
JiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24gPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1dpdGhJbnRlcmFjdGlvbiksIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24g
PSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbildICgpIHsKLSAgICAg
ICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbkhhbmRs
ZXIoZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgU2hv
dWxkQ2xlYXJGaXJzdDo6Tm8pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0g
KCkgeworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRo
SW50ZXJhY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zV2l0aG91dEludGVyYWN0
aW9uLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0
aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoZG9tYWluc1dpdGhJ
bnRlcmFjdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbi5pc0VtcHR5
KCkpCisgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxv
Y2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21h
aW5zV2l0aEludGVyYWN0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24pLCBkb21haW5zV2l0aG91dEludGVyYWN0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNX
aXRob3V0SW50ZXJhY3Rpb24pXSAoKSB7Ci0gICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWlu
c1dpdGhBbmRXaXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyKGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24s
IGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIHNob3VsZENsZWFyRmlyc3QpOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHko
ZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0gKCkgeworICAgICAg
ICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
cihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwogICAgIH0pOwogCiAgICAgaWYgKHNo
b3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKQogICAgICAgICByZXNldENv
b2tpZVBhcnRpdGlvbmluZ1N0YXRlKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byYg
ZG9tYWluIDogZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKLSAgICAgICAgICAgIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaykgeworICAgICAgICAgICAgYXV0byYgc3RhdGlzdGlj
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21haW4pOworICAg
ICAgICAgICAgc3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7
CisgICAgICAgICAgICBzdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IGZhbHNl
OworICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zV2l0
aG91dEludGVyYWN0aW9uKQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUGFydGl0
aW9uKQogICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRv
bWFpbikuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSB0cnVlOworCisgICAgZm9yIChh
dXRvJiBkb21haW4gOiBkb21haW5zVG9CbG9jaykKKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21haW4pLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcg
PSB0cnVlOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQ
YXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMp
CkBAIC03MDcsMTUgKzcyNiwyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2xlCiAgICAgICAgIG1fcmVtb3ZlRG9tYWluc0hhbmRsZXIoZG9tYWlucyk7CiAgICAgfSk7
CiAKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAgICAgIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgewor
ICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgICAgICBzdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVC
bG9ja2luZyA9IGZhbHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlc291cmNl
U3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsK
KyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IGZh
bHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBy
b2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpPiYgcHJvY2Vzc0Z1bmN0aW9uKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMSArNTks
MTEgQEAgZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmlyc3Qp
PjsKKyAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBT
aG91bGRDbGVhckZpcnN0KT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0
YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRo
QW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyID0gW10oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hh
bmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYg
cmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5n
Q2FsbGJhY2spLCBXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZN
b3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
cmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwogICAgIHZvaWQgc2No
ZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGUoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ29va2ll
UGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVh
ckZpcnN0KTsKKyAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQg
c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3Ry
aW5nJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBV
cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbkhhbmRsZXImJiwg
UmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYp
PiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOwog
CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkBAIC0xNDQsMTIgKzE0NCwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCk7CiAKICAg
ICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKICAgICBib29sIGhhc1N0YXRp
c3RpY3NFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25z
dDsKICAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlB
c09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwogICAgIHZvaWQg
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRp
b25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOworICAg
IHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdTdGF0
ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgbWVy
Z2VTdGF0aXN0aWNzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOwpAQCAtMTgzLDcgKzE4NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIG1f
cGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1fb3BlcmF0aW5n
RGF0ZXM7CiAKLSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbkhhbmRsZXIgbV91cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbkhhbmRsZXI7CisgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyOwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fcmVt
b3ZlRG9tYWluc0hhbmRsZXI7CiAKICAgICBXYWxsVGltZSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdU
aW1lc3RhbXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
c3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IH0sIHsg
aG9zdCB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgc3RvcmUtPnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwgeyB9LCB7
IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIGVsc2UKICAgICAgICAgc3Rv
cmUtPnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoeyBob3N0IH0pOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTE0LDEwICsxMTE0LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YUZvclRvcFAKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdp
dGhvdXRJbnRlcmFjdGlvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFj
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNo
b3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNz
UG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpV
cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihtX3Nlc3Npb25J
RCwgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgc2hv
dWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpKTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9u
SUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZ
ZXMpKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVQcmV2YWxlbnREb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQpAQCAtMTMxMSw4ICsxMzExLDggQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgIH0KIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
W3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFy
Rmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgewotICAgICAgICB1cGRhdGVQcmV2YWxlbnREb21haW5z
V2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihkb21haW5zV2l0aEludGVyYWN0aW9uLCBkb21haW5z
V2l0aG91dEludGVyYWN0aW9uLCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2Nv
bmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxs
YmFjayksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNo
b3VsZENsZWFyRmlyc3QpIHsKKyAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9
LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUpIHsKICAgICAg
ICAgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zVG9SZW1vdmUpOwogICAgIH0pOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWlucywgRnVuY3Rpb248dm9pZChIYXNoU2V0PFN0cmluZz4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpCi0gICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmly
c3QpOworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KTsKICAgICB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwog
I2VuZGlmCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjIzNDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyOSBAQAorMjAxNy0wOS0yMSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBOb24tcHJldmFsZW50IHJlc291cmNlcyBzaG91bGQgYmUgYWxsb3dl
ZCBhY2Nlc3MgdG8gZXhpc3RpbmcgY29va2llcyBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMzNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzQ1NzgyNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0cnVjdHVyZXMgd2hhdCBpcyBj
b21tdW5pY2F0ZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcywKKyAgICAgICAgZnJvbSB0d28gdmVj
dG9ycyAtIHdpdGggdXNlciBpbnRlcmFjdGlvbiBhbmQgd2l0aG91dCB1c2VyIGludGVyYWN0aW9u
IC0KKyAgICAgICAgdG8gdGhyZWUgdmVjdG9ycyAtIHRvIHBhcnRpdGlvbiwgdG8gYmxvY2ssIHRv
IG5laXRoZXIgcGFydGl0aW9uIG5vciBibG9jay4KKyAgICAgICAgVGhlIHByZXZpb3VzIHR3byB2
ZWN0b3JzIGRpZCBub3QgYWxsb3cgcHJvcGVyIGNhdGVnb3JpemF0aW9uIGludG8gd2hpY2gKKyAg
ICAgICAgZG9tYWlucyBzaG91bGQgYmUgcGFydGl0aW9uZWQsIGJsb2NrZWQsIG9yIGxlZnQgYWxv
bmUuIFRoYXQgd2FzIHRoZSBjYXVzZQorICAgICAgICBvZiB0aGUgcmVncmVzc2lvbiB3aGVyZSBu
b24tcHJldmFsZW50IHRoaXJkLXBhcnR5IGRvbWFpbnMgZXJyb25lb3VzbHkgaGFkCisgICAgICAg
IHRoZWlyIGNvb2tpZXMgYmxvY2tlZCB3aGVuIHRoZXkgc2hvdWxkIGZhbGwgYmFjayB0byB0aGUg
b2xkIGJlaGF2aW9yIG9mCisgICAgICAgIGFjY2VzcyBidXQgbm8gbmV3IGNvb2tpZXMgYWxsb3dl
ZCB0byBiZSBzZXQuCisKKyAgICAgICAgU2VlIGZvbGxvdy11cCBidWcgdG8gYXNzZXNzIHRoZXNl
IHRlc3RzOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc3MzM3CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1uZXR3b3JrLXBy
b2Nlc3MtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAgICAgTWFya2VkIHR3byBuZXcgZmFpbHVyZXMgc2luY2UgdGhlIG5lZWQg
dG8gYmUgcmV3b3JrZWQgaW46CisgICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3MzM3CisKIDIwMTctMDktMjEgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL3NlY3VyaXR5L2VtYmVkZGVkLWNyZWRlbnRpYWxzLnRlbnRhdGl2ZS5zdWIu
aHRtbCBhcyBmbGFreS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13
aXRoLW5ldHdvcmstcHJvY2Vzcy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFu
ZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLW5ldHdvcmstcHJvY2Vzcy1jcmFzaC5odG1sCShy
ZXZpc2lvbiAyMjIzNDQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0
aC1uZXR3b3JrLXByb2Nlc3MtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcs
NyBAQAogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIpKQogICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IHdhcyBubyBsb25nZXIgcHJldmFsZW50
IHJlc291cmNlLiIpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIiNzdGVwNyI6CiAgICAgICAgICAgICAgICAgLy8g
U2V0IGZpcnN0LXBhcnR5IGNvb2tpZSBmb3IgcHJldmFsZW50IHJlc291cmNlLgpAQCAtOTcsNyAr
OTcsNyBAQAogCiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgPT09IHBhcnRpdGlvbkhv
c3QgJiYgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIgJiYgd2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmludGVybmFscykgewogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0Zp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbigibG9jYWxob3N0Iiwg
dHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JIb3N0KCJsb2NhbGhvc3QiLCB0cnVlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlKTsKICAg
ICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRw
Oi8vbG9jYWxob3N0IikpCiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtd2l0
aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFy
dHktY29va2llLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCShyZXZpc2lv
biAyMjIzNDQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiA8aHRtbCBsYW5nPSJl
biI+CiA8aGVhZD4KICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci0gICAgPHRpdGxlPlRlc3Qg
Zm9yIFBhcnRpdGlvbmVkIENvb2tpZXMgV2l0aCBhbmQgV2l0aG91dCBVc2VyIEludGVyYWN0aW9u
PC90aXRsZT4KKyAgICA8dGl0bGU+VGVzdCB0byBlbnN1cmUgbm9uLXByZXZhbGVudCByZXNvdXJj
ZXMgY2FuIGFjY2VzcyB0aGVpciBjb29raWVzIGluIGEgdGhpcmQgcGFydHkgY29udGV4dDwvdGl0
bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIyMzQ0KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC03OTQs
OCArNzk0LDggQEAgd2Via2l0Lm9yZy9iLzE3NjEyMiBtZWRpYS92aWRlby1jb250cm9scwogWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWNvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwg
WyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUtb25lLWhvdXIu
aHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxl
dGlvbi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9sb2FkaW5nL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2ll
LXdpdGgtcGFydGl0aW9uaW5nLXRpbWVvdXQuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNv
b2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQorWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1l
b3V0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbG9h
ZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13
aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzMzNTU1NzU5PgogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMtY3VycmVudFRpbWUuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321566</attachid>
            <date>2017-09-22 11:14:28 -0700</date>
            <delta_ts>2017-09-22 11:53:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177336-20170922111413.patch</filename>
            <type>text/plain</type>
            <size>43788</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA5LTIyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIE5vbi1wcmV2YWxlbnQgcmVz
b3VyY2VzIHNob3VsZCBiZSBhbGxvd2VkIGFjY2VzcyB0byBleGlzdGluZyBjb29raWVzIGluIGEg
dGhpcmQtcGFydHkgY29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3MzM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU3ODI1Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gSSB3aWxsIHVwZGF0ZSBleGlzdGluZyB0ZXN0cyBhbmQgYWRkIGF0IGxlYXN0CisgICAgICAg
IG9uZSBuZXcgdGVzdCBpbiBhIGZvbGxvdy11cCBwYXRjaCwKKyAgICAgICAgc2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzczMzcuIE5lZWQgdG8KKyAgICAgICAg
bGFuZCB0aGlzIHRvIG1lZXQgc3VibWlzc2lvbiBkZWFkbGluZSBhbmQgZml4IHRoZSByZWdyZXNz
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVzdHJ1Y3R1cmVzIHdoYXQgaXMgY29tbXVuaWNh
dGVkIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MsCisgICAgICAgIGZyb20gdHdvIHZlY3RvcnMgLSB3
aXRoIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbiAtCisgICAg
ICAgIHRvIHRocmVlIHZlY3RvcnMgLSB0byBwYXJ0aXRpb24sIHRvIGJsb2NrLCB0byBuZWl0aGVy
IHBhcnRpdGlvbiBub3IgYmxvY2suCisgICAgICAgIFRoZSBwcmV2aW91cyB0d28gdmVjdG9ycyBk
aWQgbm90IGFsbG93IHByb3BlciBjYXRlZ29yaXphdGlvbiBpbnRvIHdoaWNoCisgICAgICAgIGRv
bWFpbnMgc2hvdWxkIGJlIHBhcnRpdGlvbmVkLCBibG9ja2VkLCBvciBsZWZ0IGFsb25lLiBUaGF0
IHdhcyB0aGUgY2F1c2UKKyAgICAgICAgb2YgdGhlIHJlZ3Jlc3Npb24gd2hlcmUgbm9uLXByZXZh
bGVudCB0aGlyZC1wYXJ0eSBkb21haW5zIGVycm9uZW91c2x5IGhhZAorICAgICAgICB0aGVpciBj
b29raWVzIGJsb2NrZWQgd2hlbiB0aGV5IHNob3VsZCBmYWxsIGJhY2sgdG8gdGhlIG9sZCBiZWhh
dmlvciBvZgorICAgICAgICBhY2Nlc3MgYnV0IG5vIG5ldyBjb29raWVzIGFsbG93ZWQgdG8gYmUg
c2V0LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkUGFydGl0aW9uQ29va2llcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVBy
ZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzaG91bGRBbGxvd1RoaXJkUGFydHlDb29raWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1dpdGhB
bmRXaXRob3V0SW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL0Nvb2tpZUphck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZXNJbkJsb2Nr
ZWRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclVSTCk6CisKIDIwMTctMDkt
MjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjoga2V5Ym9hcmQgc2hvcnRjdXQgZm9yICJSZWxvYWQgcGFnZSBmcm9tIG9yaWdpbiIgZG9lc24n
dCBtYXRjaCBTYWZhcmksIGFuZCBkb2Vzbid0IHdvcmsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIyMjM0NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjp0b1N0cmluZygKIAogICAgIC8vIEluLW1lbW9yeSBvbmx5CiAgICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmciLCBpc01hcmtlZEZvckNv
b2tpZVBhcnRpdGlvbmluZyk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNNYXJrZWRG
b3JDb29raWVCbG9ja2luZyIsIGlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOwogCiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CkBAIC0yODcsNiAr
Mjg4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjptZXJnZShjb25zdAogICAgIAog
ICAgIC8vIEluLW1lbW9yeSBvbmx5CiAgICAgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcg
fD0gb3RoZXIuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmc7CisgICAgaXNNYXJrZWRGb3JD
b29raWVCbG9ja2luZyB8PSBvdGhlci5pc01hcmtlZEZvckNvb2tpZUJsb2NraW5nOwogfQogCiBT
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURvbWFpbihjb25zdCBVUkwmIHVy
bCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAKICAgICAvLyBJbi1tZW1vcnkgb25seQogICAgIGJv
b2wgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaXNN
YXJrZWRGb3JDb29raWVCbG9ja2luZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDggKzkxLDkgQEAgcHVibGljOgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb29raWVTdG9yYWdl
UGFydGl0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0
OworICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UpIGNvbnN0OwogICAgIFN0cmluZyBjb29raWVTdG9y
YWdlUGFydGl0aW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2UpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9t
YWluc1dpdGhBbmRXaXRob3V0SW50ZXJhY3Rpb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNXaXRoSW50ZXJhY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zV2l0aG91dElu
dGVyYWN0aW9uLCBib29sIGNsZWFyRmlyc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBib29sIGNsZWFyRmlyc3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
UHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAjZW5kaWYK
ICNlbGlmIFVTRShTT1VQKQpAQCAtMTQ4LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBib29sIHNob3VsZFBhcnRpdGlv
bkNvb2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25z
dDsKLSAgICBib29sIHNob3VsZEFsbG93VGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgU3RyaW5nJiB0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsKLSAgICBIYXNoU2V0PFN0cmluZz4g
bV9wcmV2YWxlbnRUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhvdXRJbnRlcmFjdGlv
bjsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9wcmV2YWxlbnRUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc1dpdGhJbnRlcmFjdGlvbjsKKyAgICBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsK
KyAgICBIYXNoU2V0PFN0cmluZz4gbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFy
dGl0aW9uOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zVG9CbG9jazsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNSwxNSArMjA1LDE1IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRQYXJ0aXQKICAgICBpZiAodG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3ByZXZh
bGVudFRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aG91dEludGVyYWN0aW9uLmNvbnRh
aW5zKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOworICAgIHJldHVybiBtX3RvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW5zVG9QYXJ0aXRpb24uY29udGFpbnModG9wUHJpdmF0ZWx5Q29u
dHJvbGxlZERvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRB
bGxvd1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbikgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bikgY29uc3QKIHsKICAgICBpZiAodG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbi5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3ByZXZhbGVudFRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aEludGVyYWN0aW9uLmNvbnRhaW5zKHRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW4pOworICAgIHJldHVybiBtX3RvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zVG9CbG9jay5jb250YWlucyh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsK
IH0KIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CkBAIC0yMjEsNDggKzIyMSw2MCBAQCBi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDCiAgICAgaWYgKCFjb29raWVT
dG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBmaXJzdFBhcnR5RG9tYWluID0gZ2V0UGFydGl0aW9uaW5nRG9tYWluKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCkpOworfQorICAgIAorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlKSBjb25zdAoreworICAgIGlm
ICghY29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBhdXRvIGZpcnN0UGFydHlEb21haW4gPSBnZXRQYXJ0aXRpb25pbmdEb21h
aW4oZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByZXNvdXJjZURvbWFpbiA9
IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvIHJlc291cmNl
RG9tYWluID0gZ2V0UGFydGl0aW9uaW5nRG9tYWluKHJlc291cmNlKTsKICAgICBpZiAocmVzb3Vy
Y2VEb21haW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZmly
c3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKHNob3VsZFBhcnRpdGlvbkNvb2tpZXMocmVzb3VyY2VEb21haW4pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gIXNob3VsZEFsbG93VGhpcmRQYXJ0eUNvb2tp
ZXMocmVzb3VyY2VEb21haW4pOworICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKHJlc291cmNlRG9tYWluKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dFByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zV2l0aEludGVyYWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgYm9vbCBjbGVhckZpcnN0KQordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBjbGVhckZpcnN0KQogewogICAgIGlmIChjbGVh
ckZpcnN0KSB7Ci0gICAgICAgIG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bnNXaXRob3V0SW50ZXJhY3Rpb24uY2xlYXIoKTsKLSAgICAgICAgbV9wcmV2YWxlbnRUb3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhJbnRlcmFjdGlvbi5jbGVhcigpOworICAgICAgICBt
X3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9QYXJ0aXRpb24uY2xlYXIoKTsKKyAgICAg
ICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvQmxvY2suY2xlYXIoKTsKICAgICB9
CiAKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24pIHsKKyAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1BhcnRpdGlvbikgeworICAgICAgICBtX3Rv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9QYXJ0aXRpb24uYWRkKGRvbWFpbik7CiAgICAg
ICAgIGlmICghY2xlYXJGaXJzdCkKLSAgICAgICAgICAgIG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24ucmVtb3ZlKGRvbWFpbik7Ci0gICAg
ICAgIG1fcHJldmFsZW50VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoSW50ZXJhY3Rp
b24uYWRkKGRvbWFpbik7CisgICAgICAgICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zVG9CbG9jay5yZW1vdmUoZG9tYWluKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGRvbWFp
biA6IGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24pIHsKLSAgICAgICAgbV9wcmV2YWxlbnRUb3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbi5hZGQoZG9tYWluKTsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0Jsb2NrKSB7CisgICAgICAgIG1fdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLmFkZChkb21haW4pOwogICAgICAgICBp
ZiAoIWNsZWFyRmlyc3QpCi0gICAgICAgICAgICBtX3ByZXZhbGVudFRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zV2l0aEludGVyYWN0aW9uLnJlbW92ZShkb21haW4pOworICAgICAgICAgICAg
bV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFydGl0aW9uLnJlbW92ZShkb21haW4p
OworICAgIH0KKyAgICAKKyAgICBpZiAoIWNsZWFyRmlyc3QpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBkb21haW4gOiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spIHsKKyAgICAgICAg
ICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1BhcnRpdGlvbi5yZW1vdmUoZG9t
YWluKTsKKyAgICAgICAgICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2Nr
LnJlbW92ZShkb21haW4pOworICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWlucykKIHsKICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKLSAgICAgICAg
bV9wcmV2YWxlbnRUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhvdXRJbnRlcmFjdGlv
bi5yZW1vdmUoZG9tYWluKTsKLSAgICAgICAgbV9wcmV2YWxlbnRUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhJbnRlcmFjdGlvbi5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgbV90b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUGFydGl0aW9uLnJlbW92ZShkb21haW4pOworICAg
ICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5yZW1vdmUoZG9tYWlu
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDYgKzEwMSwxMSBAQCBzdGF0aWMgTlNBcnJheSAqYXBwbHlQYXJ0aXRpb25Ub0Nv
b2tpZXMoCiAgICAgcmV0dXJuIHBhcnRpdGlvbmVkQ29va2llczsKIH0KIAorc3RhdGljIGJvb2wg
Y29va2llc0FyZUJsb2NrZWRGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVy
biBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwpOworfQorCiBzdGF0
aWMgTlNBcnJheSAqY29va2llc0luUGFydGl0aW9uRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBTdHJpbmcgcGFydGl0aW9uID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlUGFydGl0aW9u
KGZpcnN0UGFydHksIHVybCk7CkBAIC0xMzAsNiArMTM1LDkgQEAgc3RhdGljIE5TQXJyYXkgKmNv
b2tpZXNJblBhcnRpdGlvbkZvclVSTAogc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQorICAgIGlmIChjb29raWVzQXJlQmxvY2tlZEZvclVSTChzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAogICAgIGlmIChOU0FycmF5ICpjb29r
aWVzID0gY29va2llc0luUGFydGl0aW9uRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCkp
CiAgICAgICAgIHJldHVybiBjb29raWVzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjIyMzc0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAxNy0wOS0yMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBOb24tcHJldmFsZW50IHJlc291cmNlcyBzaG91bGQgYmUgYWxsb3dlZCBh
Y2Nlc3MgdG8gZXhpc3RpbmcgY29va2llcyBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMzNgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzQ1NzgyNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQg
RnVsZ2hhbS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlc3RydWN0dXJlcyB3aGF0IGlzIGNvbW11
bmljYXRlZCB0byB0aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBmcm9tIHR3byB2ZWN0b3Jz
IC0gd2l0aCB1c2VyIGludGVyYWN0aW9uIGFuZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gLQor
ICAgICAgICB0byB0aHJlZSB2ZWN0b3JzIC0gdG8gcGFydGl0aW9uLCB0byBibG9jaywgdG8gbmVp
dGhlciBwYXJ0aXRpb24gbm9yIGJsb2NrLgorICAgICAgICBUaGUgcHJldmlvdXMgdHdvIHZlY3Rv
cnMgZGlkIG5vdCBhbGxvdyBwcm9wZXIgY2F0ZWdvcml6YXRpb24gaW50byB3aGljaAorICAgICAg
ICBkb21haW5zIHNob3VsZCBiZSBwYXJ0aXRpb25lZCwgYmxvY2tlZCwgb3IgbGVmdCBhbG9uZS4g
VGhhdCB3YXMgdGhlIGNhdXNlCisgICAgICAgIG9mIHRoZSByZWdyZXNzaW9uIHdoZXJlIG5vbi1w
cmV2YWxlbnQgdGhpcmQtcGFydHkgZG9tYWlucyBlcnJvbmVvdXNseSBoYWQKKyAgICAgICAgdGhl
aXIgY29va2llcyBibG9ja2VkIHdoZW4gdGhleSBzaG91bGQgZmFsbCBiYWNrIHRvIHRoZSBvbGQg
YmVoYXZpb3Igb2YKKyAgICAgICAgYWNjZXNzIGJ1dCBubyBuZXcgY29va2llcyBhbGxvd2VkIHRv
IGJlIHNldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzOmZvckhvc3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkUGFydGl0
aW9uQ29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUGFydGl0aW9uaW5nU3RhdGVGb3JEb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNl
dENvb2tpZVBhcnRpdGlvbmluZ1N0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKwogMjAxNy0wOS0yMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeSB0byBmaXggQXBwbGUgaW50ZXJuYWwgYnVpbGRzIHdpdGggdGhlIGlPUyAxMS4wIFNE
Sy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDEwICszMjEsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZQogfQogCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRh
dGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zV2l0aEludGVyYWN0aW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgYm9vbCBz
aG91bGRDbGVhckZpcnN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0
aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkKIHsKICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNl
dFByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKGRvbWFpbnNXaXRoSW50
ZXJhY3Rpb24sIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIHNob3VsZENsZWFyRmlyc3QpOwor
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIy
MjM0NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIGJvb2wgc2hvdWxkQ2xl
YXJGaXJzdCk7CisgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNo
b3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAg
RGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRf
dCByZXF1ZXN0SUQpCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykK
LSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIGJvb2wgc2hvdWxk
Q2xlYXJGaXJzdCkKKyAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNU
b1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0
KQogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0aW9uKTsKICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMjIzNDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1dpdGhBbmRX
aXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1dpdGhBbmRX
aXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYm
IHJlbW92ZURvbWFpbnNIYW5kbGVyKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0
aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29r
aWVzSGFuZGxlciwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5z
SGFuZGxlcikKICAgICA6IG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVl
OjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1fcGVyc2lz
dGVudFN0b3JhZ2UoKnRoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCi0gICAg
LCBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxl
cihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9u
SGFuZGxlcikpCisgICAgLCBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlv
bk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAgLCBtX3JlbW92ZURvbWFpbnNIYW5kbGVyKFdU
Rk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJm
b3JtRGFpbHlUYXNrcykKICAgICAsIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZNb3Zl
KHRlc3RpbmdDYWxsYmFjaykpCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmxvZwogICAgICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFj
dGlvbiA9IHRydWU7CiAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWlucyh7IHByaW1hcnlEb21haW4gfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpO
byk7CisgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0s
IHsgcHJpbWFyeURvbWFpbiB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ2MCwxMiArNDYwLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzY2gKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVh
ckZpcnN0KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVt
LiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zVG9BZGQpLCBzaG91bGRDbGVhckZpcnN0XSB7Ci0gICAgICAgIHVwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQs
IHNob3VsZENsZWFyRmlyc3QpOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBj
cm9zc1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
KSwgc2hvdWxkQ2xlYXJGaXJzdF0geworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSk7CiB9CiAK
QEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y2xlCiAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBtX29wZXJhdGlu
Z0RhdGVzLmNsZWFyKCk7CiAKLSAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
KHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOworICAgIHVwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIHsgfSwgU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGlj
cyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQpAQCAtNjQ2LDU1
ICs2NDYsNzQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcgogICAg
IH0KIH0KIAotaW5saW5lIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91
bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3Rp
YykgY29uc3QKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0
aXRpb25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgKCFzdGF0
aXN0aWMuaGFkVXNlckludGVyYWN0aW9uIHx8IFdhbGxUaW1lOjpub3coKSA+IHN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fcGFyYW1ldGVycy50aW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZSk7CisgICAgcmV0dXJuIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291
cmNlICYmIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgV2FsbFRpbWU6Om5vdygpID4g
c3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV9wYXJhbWV0ZXJzLnRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOworfQorCitib29sIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpYykgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFs
ZW50UmVzb3VyY2UgJiYgIXN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb247CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbjsKLSAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5z
V2l0aEludGVyYWN0aW9uOworICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbjsK
KyAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jazsKKyAgICBWZWN0b3I8U3RyaW5nPiBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2s7CiAgICAgZm9yIChhdXRvJiByZXNvdXJj
ZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CisKICAgICAg
ICAgYm9vbCBzaG91bGRQYXJ0aXRpb24gPSBzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNl
U3RhdGlzdGljKTsKLSAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29v
a2llUGFydGl0aW9uaW5nICYmICFzaG91bGRQYXJ0aXRpb24pIHsKLSAgICAgICAgICAgIHJlc291
cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7Ci0gICAg
ICAgICAgICBkb21haW5zV2l0aEludGVyYWN0aW9uLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5o
aWdoTGV2ZWxEb21haW4pOwotICAgICAgICB9IGVsc2UgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5p
c01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyAmJiBzaG91bGRQYXJ0aXRpb24pIHsKKyAgICAg
ICAgYm9vbCBzaG91bGRCbG9jayA9IHNob3VsZEJsb2NrQ29va2llcyhyZXNvdXJjZVN0YXRpc3Rp
Yyk7CisKKyAgICAgICAgaWYgKHNob3VsZFBhcnRpdGlvbiAmJiAhcmVzb3VyY2VTdGF0aXN0aWMu
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcpIHsKKyAgICAgICAgICAgIGRvbWFpbnNUb1Bh
cnRpdGlvbi5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKICAgICAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24uYXBwZW5kKHJlc291
cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxk
QmxvY2sgJiYgIXJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcpIHsK
KyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdo
TGV2ZWxEb21haW4pOworICAgICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JD
b29raWVCbG9ja2luZyA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZFBhcnRpdGlv
biAmJiAhc2hvdWxkQmxvY2sgJiYgcmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJj
ZSkgeworICAgICAgICAgICAgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLmFwcGVu
ZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICAgICAgcmVzb3Vy
Y2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcgPSBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkb21haW5zV2l0aEludGVyYWN0aW9uLmlz
RW1wdHkoKSAmJiBkb21haW5zV2l0aG91dEludGVyYWN0aW9uLmlzRW1wdHkoKSkKKyAgICBpZiAo
ZG9tYWluc1RvUGFydGl0aW9uLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9jay5pc0VtcHR5KCkg
JiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24gPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1dpdGhJbnRlcmFjdGlvbiksIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24g
PSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbildICgpIHsKLSAgICAg
ICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbkhhbmRs
ZXIoZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgU2hv
dWxkQ2xlYXJGaXJzdDo6Tm8pOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9z
c1RocmVhZENvcHkoZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0g
KCkgeworICAgICAgICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRo
SW50ZXJhY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zV2l0aG91dEludGVyYWN0
aW9uLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0
aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoZG9tYWluc1dpdGhJ
bnRlcmFjdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbi5pc0VtcHR5
KCkpCisgICAgaWYgKGRvbWFpbnNUb1BhcnRpdGlvbi5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxv
Y2suaXNFbXB0eSgpICYmIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jay5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21h
aW5zV2l0aEludGVyYWN0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoSW50ZXJhY3Rp
b24pLCBkb21haW5zV2l0aG91dEludGVyYWN0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNX
aXRob3V0SW50ZXJhY3Rpb24pXSAoKSB7Ci0gICAgICAgIG1fdXBkYXRlUHJldmFsZW50RG9tYWlu
c1dpdGhBbmRXaXRob3V0SW50ZXJhY3Rpb25IYW5kbGVyKGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24s
IGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIHNob3VsZENsZWFyRmlyc3QpOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9QYXJ0aXRpb24gPSBjcm9zc1RocmVhZENvcHko
ZG9tYWluc1RvUGFydGl0aW9uKSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvQmxvY2spLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2sgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrKV0gKCkgeworICAgICAg
ICBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
cihkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwogICAgIH0pOwogCiAgICAgaWYgKHNo
b3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xlYXJGaXJzdDo6WWVzKQogICAgICAgICByZXNldENv
b2tpZVBhcnRpdGlvbmluZ1N0YXRlKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byYg
ZG9tYWluIDogZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKLSAgICAgICAgICAgIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNU
b05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaykgeworICAgICAgICAgICAgYXV0byYgc3RhdGlzdGlj
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21haW4pOworICAg
ICAgICAgICAgc3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7
CisgICAgICAgICAgICBzdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IGZhbHNl
OworICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zV2l0
aG91dEludGVyYWN0aW9uKQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUGFydGl0
aW9uKQogICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRv
bWFpbikuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSB0cnVlOworCisgICAgZm9yIChh
dXRvJiBkb21haW4gOiBkb21haW5zVG9CbG9jaykKKyAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21haW4pLmlzTWFya2VkRm9yQ29va2llQmxvY2tpbmcg
PSB0cnVlOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQ
YXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMp
CkBAIC03MDcsMTUgKzcyNiwyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2xlCiAgICAgICAgIG1fcmVtb3ZlRG9tYWluc0hhbmRsZXIoZG9tYWlucyk7CiAgICAgfSk7
CiAKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCi0gICAgICAgIGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgewor
ICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyA9IGZhbHNlOworICAgICAgICBzdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVC
bG9ja2luZyA9IGZhbHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlc291cmNl
U3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsK
KyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVCbG9ja2luZyA9IGZh
bHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBy
b2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpPiYgcHJvY2Vzc0Z1bmN0aW9uKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMSArNTks
MTEgQEAgZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNXaXRoQW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmlyc3Qp
PjsKKyAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBT
aG91bGRDbGVhckZpcnN0KT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0
YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNXaXRo
QW5kV2l0aG91dEludGVyYWN0aW9uSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnNIYW5kbGVyID0gW10oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hh
bmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYg
cmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5n
Q2FsbGJhY2spLCBXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZN
b3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
cmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwogICAgIHZvaWQgc2No
ZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGUoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ29va2ll
UGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVh
ckZpcnN0KTsKKyAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQg
c2NoZWR1bGVDbGVhclBhcnRpdGlvbmluZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3Ry
aW5nJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBV
cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbkhhbmRsZXImJiwg
UmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYp
PiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOwog
CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkBAIC0xNDQsMTIgKzE0NCwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCk7CiAKICAg
ICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKICAgICBib29sIGhhc1N0YXRp
c3RpY3NFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25z
dDsKICAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlB
c09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwogICAgIHZvaWQg
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRp
b25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOworICAg
IHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgY2xlYXJQYXJ0aXRpb25pbmdTdGF0
ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgbWVy
Z2VTdGF0aXN0aWNzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOwpAQCAtMTgzLDcgKzE4NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIG1f
cGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1fb3BlcmF0aW5n
RGF0ZXM7CiAKLSAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbkhhbmRsZXIgbV91cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbkhhbmRsZXI7CisgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyOwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fcmVt
b3ZlRG9tYWluc0hhbmRsZXI7CiAKICAgICBXYWxsVGltZSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdU
aW1lc3RhbXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0U2hvdWxkCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
c3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IH0sIHsg
aG9zdCB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgc3RvcmUtPnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwgeyB9LCB7
IH0sIFdlYktpdDo6U2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIGVsc2UKICAgICAgICAgc3Rv
cmUtPnNjaGVkdWxlQ2xlYXJQYXJ0aXRpb25pbmdTdGF0ZUZvckRvbWFpbnMoeyBob3N0IH0pOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyMjM0NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTE0LDEwICsxMTE0LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YUZvclRvcFAKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdp
dGhvdXRJbnRlcmFjdGlvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFj
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNo
b3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpCiB7CiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNz
UG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpV
cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihtX3Nlc3Npb25J
RCwgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgZG9tYWluc1dpdGhvdXRJbnRlcmFjdGlvbiwgc2hv
dWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMpKTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9u
SUQsIGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZ
ZXMpKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVQcmV2YWxlbnREb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQpAQCAtMTMxMSw4ICsxMzExLDggQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgIH0KIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
W3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFy
Rmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgewotICAgICAgICB1cGRhdGVQcmV2YWxlbnREb21haW5z
V2l0aEFuZFdpdGhvdXRJbnRlcmFjdGlvbihkb21haW5zV2l0aEludGVyYWN0aW9uLCBkb21haW5z
V2l0aG91dEludGVyYWN0aW9uLCBzaG91bGRDbGVhckZpcnN0KTsKKyAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2Nv
bmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxs
YmFjayksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNo
b3VsZENsZWFyRmlyc3QpIHsKKyAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9
LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUpIHsKICAgICAg
ICAgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zVG9SZW1vdmUpOwogICAgIH0pOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjIyMzQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWlucywgRnVuY3Rpb248dm9pZChIYXNoU2V0PFN0cmluZz4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpCi0gICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zV2l0aEFuZFdpdGhvdXRJbnRlcmFj
dGlvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1dpdGhJbnRlcmFjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNXaXRob3V0SW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmly
c3QpOworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KTsKICAgICB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwog
I2VuZGlmCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjIzNDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyOSBAQAorMjAxNy0wOS0yMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBOb24tcHJldmFsZW50IHJlc291cmNlcyBzaG91bGQgYmUgYWxsb3dl
ZCBhY2Nlc3MgdG8gZXhpc3RpbmcgY29va2llcyBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMzNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzQ1NzgyNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJl
bnQgRnVsZ2hhbS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlc3RydWN0dXJlcyB3aGF0IGlzIGNv
bW11bmljYXRlZCB0byB0aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBmcm9tIHR3byB2ZWN0
b3JzIC0gd2l0aCB1c2VyIGludGVyYWN0aW9uIGFuZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24g
LQorICAgICAgICB0byB0aHJlZSB2ZWN0b3JzIC0gdG8gcGFydGl0aW9uLCB0byBibG9jaywgdG8g
bmVpdGhlciBwYXJ0aXRpb24gbm9yIGJsb2NrLgorICAgICAgICBUaGUgcHJldmlvdXMgdHdvIHZl
Y3RvcnMgZGlkIG5vdCBhbGxvdyBwcm9wZXIgY2F0ZWdvcml6YXRpb24gaW50byB3aGljaAorICAg
ICAgICBkb21haW5zIHNob3VsZCBiZSBwYXJ0aXRpb25lZCwgYmxvY2tlZCwgb3IgbGVmdCBhbG9u
ZS4gVGhhdCB3YXMgdGhlIGNhdXNlCisgICAgICAgIG9mIHRoZSByZWdyZXNzaW9uIHdoZXJlIG5v
bi1wcmV2YWxlbnQgdGhpcmQtcGFydHkgZG9tYWlucyBlcnJvbmVvdXNseSBoYWQKKyAgICAgICAg
dGhlaXIgY29va2llcyBibG9ja2VkIHdoZW4gdGhleSBzaG91bGQgZmFsbCBiYWNrIHRvIHRoZSBv
bGQgYmVoYXZpb3Igb2YKKyAgICAgICAgYWNjZXNzIGJ1dCBubyBuZXcgY29va2llcyBhbGxvd2Vk
IHRvIGJlIHNldC4KKworICAgICAgICBTZWUgZm9sbG93LXVwIGJ1ZyB0byBhc3Nlc3MgdGhlc2Ug
dGVzdHM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzczMzcKKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLW5ldHdvcmstcHJv
Y2Vzcy1jcmFzaC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50
ZXJhY3Rpb24uaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICAgICBNYXJrZWQgdHdvIG5ldyBmYWlsdXJlcyBzaW5jZSB0aGUgbmVlZCB0
byBiZSByZXdvcmtlZCBpbjoKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzczMzcKKwogMjAxNy0wOS0yMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvc2VjdXJpdHkvZW1iZWRkZWQtY3JlZGVudGlhbHMudGVudGF0aXZlLnN1Yi5o
dG1sIGFzIGZsYWt5LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdp
dGgtbmV0d29yay1wcm9jZXNzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5k
LXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtbmV0d29yay1wcm9jZXNzLWNyYXNoLmh0bWwJKHJl
dmlzaW9uIDIyMjM0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRo
LW5ldHdvcmstcHJvY2Vzcy1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBACiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCiAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgd2FzIG5vIGxvbmdlciBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiI3N0ZXA3IjoKICAgICAgICAgICAgICAgICAvLyBT
ZXQgZmlyc3QtcGFydHkgY29va2llIGZvciBwcmV2YWxlbnQgcmVzb3VyY2UuCkBAIC05Nyw3ICs5
Nyw3IEBACiAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gcGFydGl0aW9uSG9z
dCAmJiBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIiAmJiB3aW5kb3cudGVzdFJ1bm5lciAm
JiB3aW5kb3cuaW50ZXJuYWxzKSB7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKCJsb2NhbGhvc3QiLCB0
cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29v
a2llc0Zvckhvc3QoImxvY2FsaG9zdCIsIHRydWUpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUpOwogICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6
Ly9sb2NhbGhvc3QiKSkKICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQg
c2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRo
LWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0
eS1jb29raWUtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHJldmlzaW9u
IDIyMjM0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9ImVu
Ij4KIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLSAgICA8dGl0bGU+VGVzdCBm
b3IgUGFydGl0aW9uZWQgQ29va2llcyBXaXRoIGFuZCBXaXRob3V0IFVzZXIgSW50ZXJhY3Rpb248
L3RpdGxlPgorICAgIDx0aXRsZT5UZXN0IHRvIGVuc3VyZSBub24tcHJldmFsZW50IHJlc291cmNl
cyBjYW4gYWNjZXNzIHRoZWlyIGNvb2tpZXMgaW4gYSB0aGlyZCBwYXJ0eSBjb250ZXh0PC90aXRs
ZT4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjIzNDQpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTc5NCw4
ICs3OTQsOCBAQCB3ZWJraXQub3JnL2IvMTc2MTIyIG1lZGlhL3ZpZGVvLWNvbnRyb2xzCiBbIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFy
dGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBb
IFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5o
dG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0
aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL2xvYWRpbmcvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUt
d2l0aC1wYXJ0aXRpb25pbmctdGltZW91dC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29v
a2llLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCitbIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFy
dGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLXdpdGgtcGFydGl0aW9uaW5nLXRpbWVv
dXQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9sb2Fk
aW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLXdpdGgtYW5kLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjov
L3Byb2JsZW0vMzM1NTU3NTk+CiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9tZWRpYS92aWRl
by1idWZmZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGltZS5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>