<?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>176496</bug_id>
          
          <creation_ts>2017-09-07 00:00:19 -0700</creation_ts>
          <short_desc>Modernize Geolocation code</short_desc>
          <delta_ts>2017-09-27 12:38:28 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346236</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 00:00:19 -0700</bug_when>
    <thetext>Modernize Geolocation code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346237</commentid>
    <comment_count>1</comment_count>
      <attachid>320098</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 00:02:16 -0700</bug_when>
    <thetext>Created attachment 320098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346239</commentid>
    <comment_count>2</comment_count>
      <attachid>320099</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 00:17:04 -0700</bug_when>
    <thetext>Created attachment 320099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346244</commentid>
    <comment_count>3</comment_count>
      <attachid>320102</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 01:15:17 -0700</bug_when>
    <thetext>Created attachment 320102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346357</commentid>
    <comment_count>4</comment_count>
      <attachid>320102</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-07 09:44:10 -0700</bug_when>
    <thetext>Comment on attachment 320102
Patch

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

&gt; Source/WebCore/Modules/geolocation/GeolocationController.cpp:-114
&gt; -    copyToVector(m_observers, observersVector);

Seems like we should have an overload of copyToVector that looks like:

    template&lt;typename T, typename U, typename V&gt;
    inline Vector&lt;T&gt; copyToVector(const HashSet&lt;T, U, V&gt;&amp; collection)
    {
        Vector&lt;T&gt; result;
        result.reserveInitialCapacity(collection.size());
        for (auto&amp; value : collection)
            result.uncheckedAppend(WTFCopy(value));
    }

Where  WTFCopy is a new function that usually just assigns, but is overloaded for Ref&lt;&gt; to call copyRef().

Maybe a big enough bit of infrastructure that you don&apos;t want to do it here.

&gt; Source/WebKit/ChangeLog:10
&gt; +        * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
&gt; +        (WebKit::LegacyCustomProtocolManager::LegacyCustomProtocolManager):
&gt; +        (WebKit::LegacyCustomProtocolManager::startLoading):

ChangeLog could use some additional information.  Much of this looks un-Geolocation related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346359</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-07 09:46:36 -0700</bug_when>
    <thetext>The biggest cleanup / improvement in this code that you could do would be to find a way to ensure that GeoNotifier::runSuccessCallback() always took a reference. Largely this revolves around figuring out what to do with Geolocation::lastPosition().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346404</commentid>
    <comment_count>6</comment_count>
      <attachid>320134</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 10:45:58 -0700</bug_when>
    <thetext>Created attachment 320134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346417</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 10:53:44 -0700</bug_when>
    <thetext>I&apos;m trying to make this have no change in behavior and that would be a change.  We can also do the vector cleanup later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346462</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 12:02:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221743</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353557</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:38:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693666&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320098</attachid>
            <date>2017-09-07 00:02:16 -0700</date>
            <delta_ts>2017-09-07 00:17:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176496-20170907000215.patch</filename>
            <type>text/plain</type>
            <size>60545</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSByZWZlcmVuY2VzIGlu
c3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BVcGRhdGlu
Zyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9u
VG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
Lmg6CisKIDIwMTctMDktMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ2MS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCShyZXZp
c2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDEwIEBAIHN0YXRpYyBSZWZQ
dHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2kKICAgICByZXR1cm4gR2VvcG9zaXRpb246OmNy
ZWF0ZShXVEZNb3ZlKGNvb3JkaW5hdGVzKSwgY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChw
b3NpdGlvbi0+dGltZXN0YW1wKCkpKTsKIH0KIAotc3RhdGljIFJlZjxQb3NpdGlvbkVycm9yPiBj
cmVhdGVQb3NpdGlvbkVycm9yKEdlb2xvY2F0aW9uRXJyb3IqIGVycm9yKQorc3RhdGljIFJlZjxQ
b3NpdGlvbkVycm9yPiBjcmVhdGVQb3NpdGlvbkVycm9yKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9y
KQogewogICAgIFBvc2l0aW9uRXJyb3I6OkVycm9yQ29kZSBjb2RlID0gUG9zaXRpb25FcnJvcjo6
UE9TSVRJT05fVU5BVkFJTEFCTEU7Ci0gICAgc3dpdGNoIChlcnJvci0+Y29kZSgpKSB7CisgICAg
c3dpdGNoIChlcnJvci5jb2RlKCkpIHsKICAgICBjYXNlIEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1p
c3Npb25EZW5pZWQ6CiAgICAgICAgIGNvZGUgPSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RF
TklFRDsKICAgICAgICAgYnJlYWs7CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBSZWY8UG9zaXRp
b25FcnJvcj4gY3JlYXRlUG9zaXRpb24KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0
dXJuIFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShjb2RlLCBlcnJvci0+bWVzc2FnZSgpKTsKKyAgICBy
ZXR1cm4gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yLm1lc3NhZ2UoKSk7CiB9CiAK
IGJvb2wgR2VvbG9jYXRpb246OldhdGNoZXJzOjphZGQoaW50IGlkLCBSZWZQdHI8R2VvTm90aWZp
ZXI+JiYgbm90aWZpZXIpCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVz
ZXRBbGxHZW9sb2NhdGlvblBlcgogICAgIGlmIChtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9n
cmVzcykgewogICAgICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgICAgICBpZiAo
cGFnZSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QodGhpcyk7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzKTsKIAogICAg
ICAgICAvLyBUaGlzIHJldHVybiBpcyBub3QgdGVjaG5pY2FsbHkgY29ycmVjdCBhcyBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KCkgc2hvdWxkIGhhdmUgY2xl
YXJlZCB0aGUgYWN0aXZlIHJlcXVlc3QuCiAgICAgICAgIC8vIE5laXRoZXIgaU9TIG5vciBPUyBY
IHN1cHBvcnRzIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KCkgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTUyNCksIHNvIHdlIHdvcmthcm91bmQgdGhhdCBhbmQgbGV0
IG9uZ29pbmcgcmVxdWVzdHMgY29tcGxldGUuIDooCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbjo6c3RvcCgpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAg
ICBpZiAocGFnZSAmJiBtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9ncmVzcykKLSAgICAgICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVz
dCh0aGlzKTsKKyAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jYW5j
ZWxQZXJtaXNzaW9uUmVxdWVzdCgqdGhpcyk7CiAgICAgLy8gVGhlIGZyYW1lIG1heSBiZSBtb3Zp
bmcgdG8gYSBuZXcgcGFnZSBhbmQgd2Ugd2FudCB0byBnZXQgdGhlIHBlcm1pc3Npb25zIGZyb20g
dGhlIG5ldyBwYWdlJ3MgY2xpZW50LgogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IFVua25vd247
CiAgICAgY2FuY2VsQWxsUmVxdWVzdHMoKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbigpCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gSW5Q
cm9ncmVzczsKIAogICAgIC8vIEFzayB0aGUgZW1iZWRkZXI6IGl0IG1haW50YWlucyB0aGUgZ2Vv
bG9jYXRpb24gY2hhbGxlbmdlIHBvbGljeSBpdHNlbGYuCi0gICAgR2VvbG9jYXRpb25Db250cm9s
bGVyOjpmcm9tKHBhZ2UpLT5yZXF1ZXN0UGVybWlzc2lvbih0aGlzKTsKKyAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPnJlcXVlc3RQZXJtaXNzaW9uKCp0aGlzKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvbjo6bWFrZVN1Y2Nlc3NDYWxsYmFja3MoR2VvcG9zaXRpb24mIHBvc2l0
aW9uKQpAQCAtNjkwLDcgKzY5MCw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdl
ZCgpCiAgICAgbWFrZVN1Y2Nlc3NDYWxsYmFja3MoKnBvc2l0aW9uKTsKIH0KIAotdm9pZCBHZW9s
b2NhdGlvbjo6c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCit2b2lkIEdlb2xvY2F0
aW9uOjpzZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKIHsKICAgICBpZiAobV9pc1N1
c3BlbmRlZCkgewogICAgICAgICBtX2Vycm9yV2FpdGluZ0ZvclJlc3VtZSA9IGNyZWF0ZVBvc2l0
aW9uRXJyb3IoZXJyb3IpOwpAQCAtNzA3LDcgKzcwNyw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcoR2VvTm90aWYKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+YWRkT2JzZXJ2ZXIo
dGhpcywgbm90aWZpZXItPm9wdGlvbnMoKS5lbmFibGVIaWdoQWNjdXJhY3kpOworICAgIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+YWRkT2JzZXJ2ZXIoKnRoaXMsIG5vdGlmaWVy
LT5vcHRpb25zKCkuZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnN0b3BVcGRhdGluZygpCiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPnJlbW92ZU9ic2VydmVyKHRoaXMpOworICAgIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZnJvbShwYWdlKS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIEdlb2xv
Y2F0aW9uOjpoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCShyZXZpc2lv
biAyMjE3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0dlb2xvY2F0aW9uID09IFllczsgfQog
CiAgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoKTsKLSAgICB2b2lkIHNldEVycm9yKEdlb2xvY2F0
aW9uRXJyb3IqKTsKKyAgICB2b2lkIHNldEVycm9yKEdlb2xvY2F0aW9uRXJyb3ImKTsKICAgICBi
b29sIHNob3VsZEJsb2NrR2VvbG9jYXRpb25SZXF1ZXN0cygpOwogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25DbGllbnQuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNSAr
NDQsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgR2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9u
KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9u
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2Nh
dGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRp
b24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xv
Y2F0aW9uJikgPSAwOwogCi0gICAgdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdlKiwgR2Vv
bG9jYXRpb25DbGllbnQqKTsKKyAgICB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBH
ZW9sb2NhdGlvbkNsaWVudCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRp
b25DbGllbnQoKSB7IH0KIH07CiAKLVdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZUdlb2xvY2F0
aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9uQ2xpZW50Kik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHBy
b3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBHZW9sb2NhdGlvbkNsaWVudCYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MjE3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgR2VvbG9jYXRp
b25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cgogICAgIG1fY2xpZW50Lmdlb2xvY2F0aW9u
RGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZl
cihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIsIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQordm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlciwg
Ym9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCiB7CiAgICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZl
cigpCiAgICAgLy8gaXMgY2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcigKICAgICAgICAgbV9j
bGllbnQuc3RhcnRVcGRhdGluZygpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyKQordm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uJiBvYnNlcnZlcikKIHsKICAgICBp
ZiAoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODEsMTkgKzgxLDE5IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnYK
ICAgICAgICAgbV9jbGllbnQuc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGZhbHNlKTsKIH0KIAotdm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBn
ZW9sb2NhdGlvbikKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2UuaXNWaXNpYmxl
KCkpIHsKLSAgICAgICAgbV9wZW5kZWRQZXJtaXNzaW9uUmVxdWVzdC5hZGQoZ2VvbG9jYXRpb24p
OworICAgICAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdC5hZGQoZ2VvbG9jYXRpb24pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1pc3Npb24o
Z2VvbG9jYXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJiBnZW9sb2Nh
dGlvbikKIHsKLSAgICBpZiAobV9wZW5kZWRQZXJtaXNzaW9uUmVxdWVzdC5yZW1vdmUoZ2VvbG9j
YXRpb24pKQorICAgIGlmIChtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdC5yZW1vdmUoZ2VvbG9j
YXRpb24pKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5jYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChnZW9sb2NhdGlvbik7CkBAIC0xMDIsMTYgKzEwMiwyMCBAQCB2b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewogICAgIG1f
bGFzdFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZlB0cjxHZW9sb2NhdGlvbj4+
IG9ic2VydmVyc1ZlY3RvcjsKLSAgICBjb3B5VG9WZWN0b3IobV9vYnNlcnZlcnMsIG9ic2VydmVy
c1ZlY3Rvcik7CisgICAgVmVjdG9yPFJlZjxHZW9sb2NhdGlvbj4+IG9ic2VydmVyc1ZlY3RvcjsK
KyAgICBvYnNlcnZlcnNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX29ic2VydmVycy5z
aXplKCkpOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAg
b2JzZXJ2ZXJzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChvYnNlcnZlci5jb3B5UmVmKCkpOwogICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnNWZWN0b3IpCiAgICAgICAgIG9ic2VydmVy
LT5wb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVy
cm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwotICAgIGNvcHlUb1Zl
Y3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKKyAgICBWZWN0b3I8UmVmPEdlb2xv
Y2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOworICAgIG9ic2VydmVyc1ZlY3Rvci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG1fb2JzZXJ2ZXJzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlcnNWZWN0b3IudW5jaGVja2VkQXBwZW5k
KG9ic2VydmVyLmNvcHlSZWYoKSk7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVy
c1ZlY3RvcikKICAgICAgICAgb2JzZXJ2ZXItPnNldEVycm9yKGVycm9yKTsKIH0KQEAgLTEzOCw3
ICsxNDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0CiAgICAg
aWYgKCFtX3BhZ2UuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hTZXQ8
UmVmUHRyPEdlb2xvY2F0aW9uPj4gcGVuZGVkUGVybWlzc2lvblJlcXVlc3RzID0gV1RGTW92ZSht
X3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBhdXRvIHBlbmRlZFBlcm1pc3Npb25SZXF1
ZXN0cyA9IFdURk1vdmUobV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3QpOwogICAgIGZvciAoYXV0
byYgcGVybWlzc2lvblJlcXVlc3QgOiBwZW5kZWRQZXJtaXNzaW9uUmVxdWVzdHMpCiAgICAgICAg
IG1fY2xpZW50LnJlcXVlc3RQZXJtaXNzaW9uKHBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKTsKIH0K
QEAgLTE0OCwxMSArMTUyLDEwIEBAIGNvbnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGwKICAgICByZXR1cm4gIkdlb2xvY2F0aW9uQ29udHJvbGxlciI7CiB9CiAKLXZvaWQgcHJv
dmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQqIGNsaWVudCkK
K3ZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQm
IGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAgQVNTRVJUKGNsaWVudCk7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+
KCpwYWdlLCAqY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2Us
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjIx
NzAxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBAIHB1YmxpYzoKICAg
ICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIoUGFnZSYsIEdlb2xvY2F0aW9uQ2xpZW50Jik7CiAgICAg
fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpOwogCi0gICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2Nh
dGlvbiosIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlvbiYsIGJvb2wg
ZW5hYmxlSGlnaEFjY3VyYWN5KTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9u
Jik7CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKik7Ci0gICAgdm9p
ZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopOworICAgIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oR2VvbG9jYXRpb24mKTsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KEdlb2xvY2F0aW9uJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlcnJv
ck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3IqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVy
cm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYpOwogCiAgICAgR2VvbG9jYXRpb25Qb3NpdGlv
biogbGFzdFBvc2l0aW9uKCk7CiAKQEAgLTcxLDEzICs3MSwxMyBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogCi0gICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKKyAgICB0eXBlZGVm
IEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNl
cnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9zZSBub3Qu
CiAgICAgT2JzZXJ2ZXJzU2V0IG1fb2JzZXJ2ZXJzOwogICAgIE9ic2VydmVyc1NldCBtX2hpZ2hB
Y2N1cmFjeU9ic2VydmVyczsKIAogICAgIC8vIFdoaWxlIHRoZSBwYWdlIGlzIG5vdCB2aXNpYmxl
LCB3ZSBwZW5kIHBlcm1pc3Npb24gcmVxdWVzdHMuCi0gICAgSGFzaFNldDxSZWZQdHI8R2VvbG9j
YXRpb24+PiBtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0OworICAgIEhhc2hTZXQ8UmVmPEdlb2xv
Y2F0aW9uPj4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NiBAQAorMjAxNy0wOS0wNyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1v
ZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY0OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdG9wTG9hZGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpBdXRoZW50aWNhdGlvbk1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0Rm9y
R2VvbG9jYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNh
Y2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlcjo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6V2ViR2VvbG9jYXRpb25DbGllbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9jcHVMaW1p
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKwogMjAxNy0wOS0wNiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBX
S1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBwYWdlRGlk
U2Nyb2xsCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAg
ICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPFQ+KHRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3Vw
cGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAg
IHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIGNvbnN0IGNoYXIqIExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjoKICAgICByZXR1cm4gIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlciI7CiB9CiAKLUxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNzKQorTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoQ2hpbGRQcm9j
ZXNzJiBjaGlsZFByb2Nlc3MpCiAgICAgOiBtX2NoaWxkUHJvY2VzcyhjaGlsZFByb2Nlc3MpCiB7
Ci0gICAgbV9jaGlsZFByb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKKyAg
ICBtX2NoaWxkUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIHZv
aWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNzcsMTIgKzc3LDEyIEBA
IHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZW1vdmUKIAogdm9pZCBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9j
aGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5OjpTdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpOworICAgIG1fY2hp
bGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjpTdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpOwogfQogCiB2b2lkIExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0b3BMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpLCAw
KTsKKyAgICBtX2NoaWxkUHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIg
OiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KENoaWxkUHJvY2VzcyopOworICAgIGV4cGxpY2l0IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cihDaGlsZFByb2Nlc3MmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFt
ZSgpOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJQ
cm90b2NvbENsYXNzKCk7CiAKLSAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNzOworICAg
IENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIEN1c3RvbVByb3RvY29sPiBDdXN0b21Qcm90b2NvbE1hcDsKICAgICBDdXN0b21Qcm90
b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCAr
NjIsMTAgQEAgY29uc3QgY2hhciogQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzdXBwbAogICAgIHJl
dHVybiAiQXV0aGVudGljYXRpb25NYW5hZ2VyIjsKIH0KIAotQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQorQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9jZXNzJiBwcm9jZXNz
KQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
IH0KIAogdWludDY0X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxs
ZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFsbGVuZ2UpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIGlmIChzaG91bGRDb2FsZXNj
ZUNoYWxsZW5nZShwYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGZyYW1lLT5mcmFt
ZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCksIGZyYW1lLT5wYWdl
KCktPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZnJhbWUtPmZyYW1lSUQoKSwgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwgZnJhbWUtPnBhZ2UoKS0+cGFnZUlE
KCkpOwogfQogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgaWYgKHNob3VsZENv
YWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHBhZ2VJRCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7
CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYg
cGVuZGluZ0Rvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIGlmIChzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShwYWdl
SUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOworICAgIG1fcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxl
bmdlSUQpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNp
b24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdXNpbmcg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbAogY2xhc3MgQXV0aGVudGljYXRpb25N
YW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKENoaWxkUHJvY2VzcyopOworICAgIGV4cGxpY2l0IEF1
dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nlc3MmKTsKIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3Qg
Y2hhbGxlbmdlSUQpIGNvbnN0OwogCi0gICAgQ2hpbGRQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAg
Q2hpbGRQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDaGFsbGVu
Z2U+IG1fY2hhbGxlbmdlczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMTcwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MDksMTMgKzU4MDksMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIE1FU1NBR0VfQ0hF
Q0soZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9iYWJseSBi
ZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5zdGVhZCBv
ZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4g
b3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4o
KSk7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVz
dCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdChn
ZW9sb2NhdGlvbklEKTsKKyAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRl
bnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gcmVxdWVzdCA9IG1fZ2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdChnZW9sb2NhdGlvbklE
KTsKIAotICAgIGlmIChtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KHRoaXMsIGZyYW1lLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQor
ICAgIGlmIChtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqZnJhbWUsICpvcmlnaW4sICpyZXF1ZXN0KSkKKyAgICBp
ZiAobV9wYWdlQ2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoKmZyYW1lLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICByZXF1ZXN0LT5kZW55KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6OldlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBX
ZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBT
ZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBTZWN1
cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFNlY3VyaXR5T3JpZ2lu
KiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCopIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlz
aW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NTMsMTIgKzE5NTMsMTIgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAotICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBl
cm1pc3Npb25SZXF1ZXN0KSBmaW5hbAorICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJ
KHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKHBlcm1pc3Npb25SZXF1
ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0
b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoJnBlcm1pc3Npb25SZXF1ZXN0KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNp
b24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBw
bGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPih0aGlz
KSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6
bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29u
bmVjdGlvbi5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgY2hhciogV2ViQ29va2llTWFuYWdl
cjo6c3VwcGxlbWVudAogICAgIHJldHVybiAiV2ViQ29va2llTWFuYWdlciI7CiB9CiAKLVdlYkNv
b2tpZU1hbmFnZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQorV2Vi
Q29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MmIHByb2Nlc3MpCiAg
ICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aEMKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0
bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNrSUQpLCAwKTsKKyAg
ICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAog
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtODQsNyArODQsNyBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShQQUw6CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKGNvb2tpZSk7
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lE
KSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTQogICAgIGlmIChh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoKnN0b3JhZ2VTZXNzaW9uLCB0aW1lKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6
Z2V0QWxsQ29va2llcyhQQUwKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tp
ZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2ll
cywgY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwog
fQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMTEwLDcg
KzExMCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlMKICAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0
Q29va2llcyh1cmwpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworICAg
IG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENv
b2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OnNldENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29v
a2llLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoUEFMOjpTZQogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMjYsMTMgKzEyNiwxMyBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTCiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1
cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAg
bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29v
a2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6bm90aWZ5
Q29va2llc0RpZENoYW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZShzZXNzaW9uSUQpLCAwKTsKKyAgICBt
X3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpDb29raWVzRGlk
Q2hhbmdlKHNlc3Npb25JRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTUs
MTIgKzE1NSwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlCiAg
ICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CiAKICAgICBpZiAo
Y2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRC5jYWxs
YmFja0lEKCkpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lELmNh
bGxiYWNrSUQoKSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBjYWxsYmFja0lE
KSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwbGF0Zm9ybUdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQs
NyBAQCBjbGFzcyBDaGlsZFByb2Nlc3M7CiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGlj
IFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
YkNvb2tpZU1hbmFnZXIpOwogcHVibGljOgotICAgIFdlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9j
ZXNzKik7CisgICAgV2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MmKTsKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCkBAIC04OSw3ICs4OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQp
OwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQpOwog
Ci0gICAgQ2hpbGRQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgQ2hpbGRQcm9jZXNzJiBtX3Byb2Nl
c3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMzcgKzQ5LDM3IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUdlb2xvY2F0aW9uSUQoKQogICAgIHJldHVybiB1bmlx
dWVHZW9sb2NhdGlvbklEKys7CiB9CiAKLUdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlKiBwYWdlKQor
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Okdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKIHsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0
Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2Vv
bG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9u
LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZyYW1lLCAiSXQgaXMgbm90IHdlbGwgdW5kZXJzdG9vZCBp
biB3aGljaCBjYXNlcyB0aGUgR2VvbG9jYXRpb24gaXMgYWxpdmUgYWZ0ZXIgaXRzIGZyYW1lIGdv
ZXMgYXdheS4gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiwgcGxlYXNlIGFkZCBhIHRlc3QgY292
ZXJpbmcgdGhpcyBjYXNlLiIpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgZ2VvbG9jYXRp
b24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdlb2xvY2F0aW9uLnNldElzQWxsb3dl
ZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB1aW50NjRfdCBnZW9sb2Nh
dGlvbklEID0gZ2VuZXJhdGVHZW9sb2NhdGlvbklEKCk7CiAKLSAgICBtX2dlb2xvY2F0aW9uVG9J
RE1hcC5zZXQoZ2VvbG9jYXRpb24sIGdlb2xvY2F0aW9uSUQpOwotICAgIG1faWRUb0dlb2xvY2F0
aW9uTWFwLnNldChnZW9sb2NhdGlvbklELCBnZW9sb2NhdGlvbik7CisgICAgbV9nZW9sb2NhdGlv
blRvSURNYXAuc2V0KCZnZW9sb2NhdGlvbiwgZ2VvbG9jYXRpb25JRCk7CisgICAgbV9pZFRvR2Vv
bG9jYXRpb25NYXAuc2V0KGdlb2xvY2F0aW9uSUQsICZnZW9sb2NhdGlvbik7CiAKICAgICBXZWJG
cmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogICAgIEFT
U0VSVCh3ZWJGcmFtZSk7CiAKICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xv
Y2F0aW9uSUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkp
OwogfQogCi12b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxS
ZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0
aW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKIHsKLSAgICB1aW50NjRfdCBnZW9sb2NhdGlv
bklEID0gbV9nZW9sb2NhdGlvblRvSURNYXAudGFrZShnZW9sb2NhdGlvbik7CisgICAgdWludDY0
X3QgZ2VvbG9jYXRpb25JRCA9IG1fZ2VvbG9jYXRpb25Ub0lETWFwLnRha2UoJmdlb2xvY2F0aW9u
KTsKICAgICBpZiAoIWdlb2xvY2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2lkVG9H
ZW9sb2NhdGlvbk1hcC5yZW1vdmUoZ2VvbG9jYXRpb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM5LDEwICszOCwxMCBAQCBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
V2ViUGFnZSopOworICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlv
bihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZvaWQgc3RhcnRSZXF1ZXN0Rm9yR2VvbG9j
YXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKKyAgICB2b2lkIGNhbmNlbFJlcXVlc3RGb3JH
ZW9sb2NhdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
R2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9v
bCBhbGxvd2VkKTsKIApAQCAtNTIsOSArNTEsNyBAQCBwcml2YXRlOgogICAgIElEVG9HZW9sb2Nh
dGlvbk1hcCBtX2lkVG9HZW9sb2NhdGlvbk1hcDsKICAgICBHZW9sb2NhdGlvblRvSURNYXAgbV9n
ZW9sb2NhdGlvblRvSURNYXA7CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgV2ViUGFnZSYg
bV9wYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDUwICs0NSw1MCBAQCBjb25zdCBjaGFyKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnN1cHBsCiAg
ICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwogfQogCi1XZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQorV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2Vz
cykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7
CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFn
ZSogcGFnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSYgcGFnZSkKIHsKICAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGluZygpOwogCi0g
ICAgbV9wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBtX3BhZ2VTZXQuYWRkKCZwYWdlKTsKIAogICAg
IGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlN0YXJ0
VXBkYXRpbmcoKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRh
dGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKICAgICBib29sIGhpZ2hBY2N1cmFjeVdhc0Vu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKIAotICAgIG1fcGFnZVNldC5yZW1vdmUo
cGFnZSk7Ci0gICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICBtX3Bh
Z2VTZXQucmVtb3ZlKCZwYWdlKTsKKyAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKCZw
YWdlKTsKIAogICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb2Nlc3MtPnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6U3RvcFVwZGF0aW5nKCksIDApOwogICAgIGVsc2UgewogICAgICAgICBib29sIGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogICAgICAgICBp
ZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJh
Y3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAgICBtX3Byb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpLCAwKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpz
ZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkK
K3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdl
KFdlYlBhZ2UmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBib29sIGhpZ2hBY2N1cmFjeVdh
c0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKIAogICAgIGlmIChlbmFibGVkKQot
ICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgICAgICBtX2hpZ2hB
Y2N1cmFjeVBhZ2VTZXQuYWRkKCZwYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1faGlnaEFjY3Vy
YWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5y
ZW1vdmUoJnBhZ2UpOwogCiAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQgPSBp
c0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAh
PSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQp
LCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNjdXJh
Y3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKIHZvaWQgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpEYXRhJiBkYXRhKQpAQCAtOTgsOCArOTgsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6ZGlkQ2hhbmdlUG9zCiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdl
Q29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB3ZWJQYWdlQ29weS5zaXplKCk7ICsraSkgewotICAgICAgICBX
ZWJQYWdlKiBwYWdlID0gd2ViUGFnZUNvcHlbaV0uZ2V0KCk7CisgICAgZm9yIChhdXRvJiBwYWdl
IDogd2ViUGFnZUNvcHkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCiAgICAgICAg
ICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0
aW9uQ2hhbmdlZChwb3NpdGlvbi5nZXQoKSk7CiAgICAgfQpAQCAtMTEyLDEyICsxMTEsMTEgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldAogewogI2lmIEVOQUJMRShH
RU9MT0NBVElPTikKICAgICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCi0g
ICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3Jl
YXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7
CisgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwogCiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJQYWdlPj4gd2ViUGFnZUNvcHk7CiAgICAgY29weVRvVmVjdG9yKG1fcGFnZVNldCwg
d2ViUGFnZUNvcHkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUGFnZUNvcHkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViUGFnZSogcGFnZSA9IHdlYlBhZ2VDb3B5W2ldLmdldCgp
OworICAgIGZvciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CiAgICAgICAgIGlmIChwYWdl
LT5jb3JlUGFnZSgpKQogICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBh
Z2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKICAgICB9CkBAIC0x
MjksNyArMTI3LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldAog
I2lmIFBMQVRGT1JNKElPUykKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZXNldFBlcm1p
c3Npb25zKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
cygpOworICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKTsKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgJ
KHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyX2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25NYW5hZ2VyX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oIgpAQCAtNDYsMTUgKzQ1LDE1IEBAIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzJik7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsKLSAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeUZvclBhZ2UoV2ViUGFnZSosIGJvb2wpOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdl
YlBhZ2UmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmKTsKKyAgICB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYsIGJvb2wpOwogCi0gICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZvaWQgcmVx
dWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKIAogcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjksMTEgKzY4LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKLSAgICBX
ZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogICAgIEhh
c2hTZXQ8V2ViUGFnZSo+IG1fcGFnZVNldDsKICAgICBIYXNoU2V0PFdlYlBhZ2UqPiBtX2hpZ2hB
Y2N1cmFjeVBhZ2VTZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IFdlYkdlb2xvY2F0aW9uTWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlcl9oCi0jZGVmaW5lIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDAsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xh
c3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9j
ZXNzKikgeyB9CisgICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9j
ZXNzJikgeyB9CiAgICAgdmlydHVhbCB+V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcigpIHsgfQog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CkBAIC02MSw1ICs2MCwz
IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MSwxMSArNjEsMTEgQEAgY29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6c3VwcAogICAgIHJldHVybiAiV2ViTm90aWZpY2F0aW9uTWFuYWdlciI7CiB9CiAKLVdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyogcHJv
Y2VzcykKK1dlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2Vi
UHJvY2VzcyYgcHJvY2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKICNlbmRpZgogfQog
CkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5v
dGlmaQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNh
dGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJh
dG9yOwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgbV9wcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24t
PmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+dGFn
KCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRpcigpLCBub3RpZmljYXRp
b24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd05v
dGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9keSgpLCBu
b3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWcoKSwgbm90aWZp
Y2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3RpZmlj
YXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aQogICAgIGlmICghbm90aWZpY2F0aW9uSUQp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2FuY2VsTm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5v
dGlmaWNhdGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAt
MTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURz
ID0gaXQtPnZhbHVlOwotICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0
aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9u
cyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdlSUQoKSk7CiAgICAgc2l6ZV90IGNvdW50ID0g
bm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9u
b3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95TgogCiAgICAgbV9u
b3RpZmljYXRpb25JRE1hcC5yZW1vdmUobm90aWZpY2F0aW9uSUQpOwogICAgIHJlbW92ZU5vdGlm
aWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAg
IG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgV2ViTm90aWZpY2F0aW9uTWFuYWdlcl9oCi0jZGVmaW5lIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtNDgsNyArNDcsNyBAQCBj
bGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBX
ZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqKTsKKyAgICBleHBs
aWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7CkBAIC04NCw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVOb3RpZmljYXRp
b25Gcm9tQ29udGV4dE1hcCh1aW50NjRfdCBub3RpZmljYXRpb25JRCwgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uKik7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBXZWJQ
cm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4sIHVpbnQ2NF90PiBOb3Rp
ZmljYXRpb25NYXA7CkBAIC0xMDEsNSArMTAwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmNwcAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAs
MTQgKzcwLDE0IEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW4KICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIG1f
cGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFydFJlcXVlc3RG
b3JHZW9sb2NhdGlvbihnZW9sb2NhdGlvbik7CisgICAgbV9wYWdlLmdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oZ2VvbG9jYXRp
b24pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiB7Ci0g
ICAgbV9wYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmNhbmNlbFJl
cXVlc3RGb3JHZW9sb2NhdGlvbihnZW9sb2NhdGlvbik7CisgICAgbV9wYWdlLmdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0aW9uKGdl
b2xvY2F0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKLSNkZWZpbmUgV2ViR2VvbG9j
YXRpb25DbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0
aW9uQ2xpZW50Lmg+CiAKQEAgLTM0LDcgKzMzLDcgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQg
ewogcHVibGljOgotICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCisgICAg
V2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFn
ZSkKICAgICB7CiAgICAgfQpAQCAtNTAsMTMgKzQ5LDEwIEBAIHByaXZhdGU6CiAKICAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlv
biYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6
R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIAotCi0gICAgV2ViUGFnZSogbV9wYWdlOworICAgIFdl
YlBhZ2UmIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
V2ViR2VvbG9jYXRpb25DbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyAr
MzM0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgICwg
bV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0aGlzKSkKICAg
ICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0
T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxF
KEdFT0xPQ0FUSU9OKQotICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPih0aGlz
KSkKKyAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1
ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQogI2VuZGlm
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyIHsgc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI+KCp0aGlzKSB9CkBAIC00MjcsNyArNDI3LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVu
Y2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIFdl
YkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYkdlb2xvY2F0
aW9uQ2xpZW50KHRoaXMpKTsKKyAgICBXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25UbyhtX3Bh
Z2UuZ2V0KCksICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoKnRoaXMpKTsKICNlbmRpZgogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFdlYkNvcmU6OnByb3ZpZGVOb3RpZmljYXRpb24o
bV9wYWdlLmdldCgpLCBuZXcgV2ViTm90aWZpY2F0aW9uQ2xpZW50KHRoaXMpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUyLDggKzE1Miw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8QXBwbHlDb25zdHJhaW50c0Nh
bGxiYWNrPiBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzOwogfTsKIAotVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MqIHBy
b2Nlc3MpCi0gICAgOiBtX3Byb2Nlc3MoKnByb2Nlc3MpCitVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1f
cHJvY2Vzcyhwcm9jZXNzKQogewogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkgewogcHVibGljOgotICAgIGV4cGxpY2l0IFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MqKTsKKyAgICBleHBsaWNpdCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
KCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6
CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhHZW9sb2Nh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBpbml0V2l0
aEdlb2xvY2F0aW9uOmZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJv
dmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGluaXRXaXRoR2VvbG9jYXRpb246XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpdKToKKwogMjAxNy0wOS0wNSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1
bnVzZWQgYml0cyBvZiBjb2RlIGFuZCByZXNvdXJjZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
OCArNDksOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBs
YXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgcmVx
dWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGUg
eyB9OwogCiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIgCiB7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRpb247CiB9Ci0tIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247CistIChpZClp
bml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2VvbG9jYXRpb247CiBAZW5kCiAjZWxz
ZQogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdl
YkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgpAQCAtNTgsNyArNTgsNyBAQCBAaW50ZXJmYWNlIFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgCiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2Vv
bG9jYXRpb247CiAgICAgUmV0YWluUHRyPFdlYlZpZXcgKj4gX3dlYlZpZXc7CiB9Ci0tIChpZClp
bml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb24gZm9yV2ViVmlldzoo
V2ViVmlldyopd2ViVmlldzsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9u
JilnZW9sb2NhdGlvbiBmb3JXZWJWaWV3OihXZWJWaWV3Kil3ZWJWaWV3OwogQGVuZAogI2VuZGlm
CiAKQEAgLTY3LDcgKzY3LDcgQEAgQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5p
dGlhbAogQHByaXZhdGUKICAgICBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CiB9
Ci0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247Cist
IChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2VvbG9jYXRpb247CiBAZW5k
CiAjZW5kaWYKIApAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6c2V0RW5hYmxlSGlnaAogfQogI2VuZGlmCiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6
OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3ZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlv
bikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKICAgICBTRUwgc2VsZWN0
b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOik7CiAgICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVn
YXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9u
LT5zZXRJc0FsbG93ZWQoZmFsc2UpOworICAgICAgICBnZW9sb2NhdGlvbi5zZXRJc0FsbG93ZWQo
ZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBGcmFtZSAqZnJhbWUgPSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKKyAgICBGcmFtZSAqZnJhbWUg
PSBnZW9sb2NhdGlvbi5mcmFtZSgpOwogCiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBnZW9s
b2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRpb24uc2V0SXNB
bGxvd2VkKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQwLDExICsxNDAs
MTEgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbgogI2lmICFQTEFU
Rk9STShJT1MpCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcgog
Ci0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb24KKy0g
KGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uJilnZW9sb2NhdGlvbgogewogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9n
ZW9sb2NhdGlvbiA9IGdlb2xvY2F0aW9uOworICAgIF9nZW9sb2NhdGlvbiA9ICZnZW9sb2NhdGlv
bjsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTYyLDEyICsxNjIsMTIgQEAgLSAodm9pZClk
ZW55CiAKICNlbHNlCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
cgotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uIGZv
cldlYlZpZXc6KFdlYlZpZXcqKXdlYlZpZXcKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdl
b2xvY2F0aW9uJilnZW9sb2NhdGlvbiBmb3JXZWJWaWV3OihXZWJWaWV3Kil3ZWJWaWV3CiB7CiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247CisgICAgX2dlb2xvY2F0aW9uID0g
Jmdlb2xvY2F0aW9uOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICByZXR1cm4gc2VsZjsK
IH0KQEAgLTIwNiwxMSArMjA2LDExIEBAIC0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlz
dGVuZXIKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlv
bgorLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24mKWdlb2xvY2F0aW9uCiB7
CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikKLSAgICAgICAgbV9nZW9s
b2NhdGlvbiA9IGdlb2xvY2F0aW9uOworICAgICAgICBtX2dlb2xvY2F0aW9uID0gJmdlb2xvY2F0
aW9uOwogICAgIHJldHVybiBzZWxmOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsNyAr
MTQ1NCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7CiAKICNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCi0gICAgV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8oX3ByaXZhdGUtPnBh
Z2UsIG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudChzZWxmKSk7CisgICAgV2ViQ29yZTo6cHJvdmlk
ZUdlb2xvY2F0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQo
c2VsZikpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6
cHJvdmlkZU5vdGlmaWNhdGlvbihfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYk5vdGlmaWNhdGlvbkNs
aWVudChzZWxmKSk7CkBAIC05OTg0LDcgKzk5ODQsNyBAQCAtICh2b2lkKV9nZW9sb2NhdGlvbkRp
ZEZhaWxXaXRoTWVzc2FnZTooCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIGlmIChf
cHJpdmF0ZSAmJiBfcHJpdmF0ZS0+cGFnZSkgewotICAgICAgICBSZWZQdHI8R2VvbG9jYXRpb25F
cnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIGF1
dG8gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9u
RXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShfcHJpdmF0ZS0+cGFnZSktPmVycm9yT2Nj
dXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEdF
T0xPQ0FUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320099</attachid>
            <date>2017-09-07 00:17:04 -0700</date>
            <delta_ts>2017-09-07 01:15:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176496-20170907001706.patch</filename>
            <type>text/plain</type>
            <size>63235</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSByZWZlcmVuY2VzIGlu
c3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BVcGRhdGlu
Zyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9u
VG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
Lmg6CisKIDIwMTctMDktMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRlbXBvcmFyeSBkaXNhYmxlIHRoZSBjaGFuZ2Vz
IGludHJvZHVjZWQgaW4gcjIyMTY3MCBmb3IgV1BFLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIyMTcx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsMTAgQEAgc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaQogICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1v
dmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50
aW1lc3RhbXAoKSkpOwogfQogCi1zdGF0aWMgUmVmPFBvc2l0aW9uRXJyb3I+IGNyZWF0ZVBvc2l0
aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCitzdGF0aWMgUmVmPFBvc2l0aW9uRXJy
b3I+IGNyZWF0ZVBvc2l0aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiB7CiAgICAg
UG9zaXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9V
TkFWQUlMQUJMRTsKLSAgICBzd2l0Y2ggKGVycm9yLT5jb2RlKCkpIHsKKyAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUoKSkgewogICAgIGNhc2UgR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmll
ZDoKICAgICAgICAgY29kZSA9IFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOwogICAg
ICAgICBicmVhazsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIFJlZjxQb3NpdGlvbkVycm9yPiBj
cmVhdGVQb3NpdGlvbgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yLT5tZXNzYWdlKCkpOworICAgIHJldHVybiBQb3Np
dGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJyb3IubWVzc2FnZSgpKTsKIH0KIAogYm9vbCBHZW9s
b2NhdGlvbjo6V2F0Y2hlcnM6OmFkZChpbnQgaWQsIFJlZlB0cjxHZW9Ob3RpZmllcj4mJiBub3Rp
ZmllcikKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xv
Y2F0aW9uUGVyCiAgICAgaWYgKG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKSB7CiAg
ICAgICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlKQotICAg
ICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdCh0aGlzKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJv
bShwYWdlKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKnRoaXMpOwogCiAgICAgICAgIC8vIFRo
aXMgcmV0dXJuIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0IGFzIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSBzaG91bGQgaGF2ZSBjbGVhcmVkIHRoZSBh
Y3RpdmUgcmVxdWVzdC4KICAgICAgICAgLy8gTmVpdGhlciBpT1Mgbm9yIE9TIFggc3VwcG9ydHMg
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5NTI0KSwgc28gd2Ugd29ya2Fyb3VuZCB0aGF0IGFuZCBsZXQgb25nb2luZyBy
ZXF1ZXN0cyBjb21wbGV0ZS4gOigKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wKCkKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmIChwYWdl
ICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKQotICAgICAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOwor
ICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KCp0aGlzKTsKICAgICAvLyBUaGUgZnJhbWUgbWF5IGJlIG1vdmluZyB0byBhIG5l
dyBwYWdlIGFuZCB3ZSB3YW50IHRvIGdldCB0aGUgcGVybWlzc2lvbnMgZnJvbSB0aGUgbmV3IHBh
Z2UncyBjbGllbnQuCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gVW5rbm93bjsKICAgICBjYW5j
ZWxBbGxSZXF1ZXN0cygpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnJl
cXVlc3RQZXJtaXNzaW9uKCkKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBJblByb2dyZXNzOwog
CiAgICAgLy8gQXNrIHRoZSBlbWJlZGRlcjogaXQgbWFpbnRhaW5zIHRoZSBnZW9sb2NhdGlvbiBj
aGFsbGVuZ2UgcG9saWN5IGl0c2VsZi4KLSAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPnJlcXVlc3RQZXJtaXNzaW9uKHRoaXMpOworICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+cmVxdWVzdFBlcm1pc3Npb24oKnRoaXMpOwogfQogCiB2b2lkIEdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyhHZW9wb3NpdGlvbiYgcG9zaXRpb24pCkBAIC02
OTAsNyArNjkwLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkKCkKICAgICBt
YWtlU3VjY2Vzc0NhbGxiYWNrcygqcG9zaXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpz
ZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb246OnNldEVy
cm9yKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewogICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7
CiAgICAgICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gY3JlYXRlUG9zaXRpb25FcnJvcihl
cnJvcik7CkBAIC03MDcsNyArNzA3LDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGlu
ZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcih0aGlzLCBub3Rp
Zmllci0+b3B0aW9ucygpLmVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcigqdGhpcywgbm90aWZpZXItPm9wdGlvbnMo
KS5lbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03MTcsNyAr
NzE3LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdl
KS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KHBhZ2UpLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246Omhh
bmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDIyMTcxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWQo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93R2VvbG9jYXRpb24gPT0gWWVzOyB9CiAKICAgICB2b2lk
IHBvc2l0aW9uQ2hhbmdlZCgpOwotICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciop
OworICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciYpOwogICAgIGJvb2wgc2hvdWxk
QmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
CShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSA9
IDA7CiAKLSAgICB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBHZW9sb2NhdGlvbkNs
aWVudCopOworICAgIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9u
Q2xpZW50Jik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbkNsaWVudCgp
IHsgfQogfTsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdl
KiwgR2VvbG9jYXRpb25DbGllbnQqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZUdlb2xv
Y2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9uQ2xpZW50Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0
aW9uKiBvYnNlcnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCit2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJlbW92ZU9ic2VydmVyKCkKICAgICAv
LyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKAogICAgICAgICBtX2NsaWVudC5zdGFy
dFVwZGF0aW5nKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNl
cnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQogewogICAgIGlmICghbV9vYnNl
cnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CkBAIC04MSwxOSArODEs
MTkgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydgogICAgICAgICBt
X2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCi12b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uJiBnZW9sb2NhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkgewotICAg
ICAgICBtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CisgICAgICAg
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2NsaWVudC5yZXF1ZXN0UGVybWlzc2lvbihnZW9sb2NhdGlv
bik7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewot
ICAgIGlmIChtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCisg
ICAgaWYgKG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGdl
b2xvY2F0aW9uKTsKQEAgLTEwMiwxNiArMTAyLDIwIEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyOjpjYW5jZWxQZXJtaXMKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNo
YW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRp
b24gPSBwb3NpdGlvbjsKLSAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJz
VmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsK
KyAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOworICAgIG9ic2Vy
dmVyc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fb2JzZXJ2ZXJzLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlcnNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKG9ic2VydmVyLmNvcHlSZWYoKSk7CiAgICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG9ic2VydmVyc1ZlY3RvcikKICAgICAgICAgb2JzZXJ2ZXItPnBvc2l0aW9u
Q2hhbmdlZCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpl
cnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8R2VvbG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7Ci0gICAgY29weVRvVmVjdG9yKG1fb2Jz
ZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOworICAgIFZlY3RvcjxSZWY8R2VvbG9jYXRpb24+PiBv
YnNlcnZlcnNWZWN0b3I7CisgICAgb2JzZXJ2ZXJzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9vYnNlcnZlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCisgICAgICAgIG9ic2VydmVyc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQob2JzZXJ2ZXIu
Y29weVJlZigpKTsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzVmVjdG9yKQog
ICAgICAgICBvYnNlcnZlci0+c2V0RXJyb3IoZXJyb3IpOwogfQpAQCAtMTM4LDcgKzE0Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXQKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxSZWZQdHI8R2Vv
bG9jYXRpb24+PiBwZW5kZWRQZXJtaXNzaW9uUmVxdWVzdHMgPSBXVEZNb3ZlKG1fcGVuZGVkUGVy
bWlzc2lvblJlcXVlc3QpOworICAgIGF1dG8gcGVuZGVkUGVybWlzc2lvblJlcXVlc3RzID0gV1RG
TW92ZShtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdCk7CiAgICAgZm9yIChhdXRvJiBwZXJtaXNz
aW9uUmVxdWVzdCA6IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgbV9jbGllbnQu
cmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQpAQCAtMTQ4LDEx
ICsxNTIsMTAgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbAogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKIH0KIAotdm9pZCBwcm92aWRlR2VvbG9j
YXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KQordm9pZCBwcm92
aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBTdXBwbGVtZW50
PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsICpj
bGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0
aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcihQYWdlJiwgR2VvbG9jYXRpb25DbGllbnQmKTsKICAgICB+R2VvbG9jYXRp
b25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpOwotICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRp
b24qKTsKKyAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mKTsKIAotICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKLSAgICB2b2lkIGNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xv
Y2F0aW9uUG9zaXRpb24qKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVycm9yT2NjdXJyZWQo
R2VvbG9jYXRpb25FcnJvciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yJik7CiAKICAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9z
aXRpb24oKTsKIApAQCAtNzEsMTMgKzcxLDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWY8R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90
aCB0aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNl
cnZlcnNTZXQgbV9vYnNlcnZlcnM7CiAgICAgT2JzZXJ2ZXJzU2V0IG1faGlnaEFjY3VyYWN5T2Jz
ZXJ2ZXJzOwogCiAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQg
cGVybWlzc2lvbiByZXF1ZXN0cy4KLSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IG1f
cGVuZGVkUGVybWlzc2lvblJlcXVlc3Q7CisgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsMTcgKzg3LDE3IEBAIGludCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Om51bWJlck9mUGVuZGkK
ICAgICByZXR1cm4gbV9wZW5kaW5nUGVybWlzc2lvbi5zaXplKCk7CiB9CiAKLXZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uYWRkKGdlb2xv
Y2F0aW9uKTsKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmFkZCgmZ2VvbG9jYXRpb24pOwogICAg
IGlmIChtX3Blcm1pc3Npb25TdGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCkKICAgICAgICAg
YXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRp
b24mIGdlb2xvY2F0aW9uKQogewogICAgIC8vIENhbGxlZCBmcm9tIEdlb2xvY2F0aW9uOjpkaXNj
b25uZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0cnVjdGlvbi4KLSAgICBtX3Bl
bmRpbmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7CisgICAgbV9wZW5kaW5nUGVybWlz
c2lvbi5yZW1vdmUoJmdlb2xvY2F0aW9uKTsKICAgICBpZiAobV9wZW5kaW5nUGVybWlzc2lvbi5p
c0VtcHR5KCkgJiYgbV9wZXJtaXNzaW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9wZXJt
aXNzaW9uVGltZXIuc3RvcCgpOwogfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGkKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsK
ICAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0
KCkpOwogICAgIH0gZWxzZSBpZiAobV9oYXNFcnJvcikgewotICAgICAgICBSZWZQdHI8R2VvbG9j
YXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdl
b2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIG1fZXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAg
ICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsK
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDggKzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2tfaAotI2RlZmluZSBHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCkBAIC02NCw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwog
ICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNh
bmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwpAQCAtOTQsNSArOTMsMyBAQCBwcml2YXRl
OgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisy
MDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN0b3BM
b2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFN1cHBsZW1l
bnQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlcjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Om5v
dGlmeUNvb2tpZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNl
bFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeUZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OmRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3Rp
ZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX2NwdUxpbWl0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorCiAyMDE3
LTA5LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVu
dCdzIHBhZ2VEaWRTY3JvbGwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBw
bGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4odGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRz
LmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CiAg
ICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgY29u
c3QgY2hhciogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOgogICAgIHJldHVybiAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIjsKIH0KIAotTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBjaGlsZFByb2Nlc3Mp
CitMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cihDaGlsZFByb2Nlc3MmIGNoaWxkUHJvY2VzcykKICAgICA6IG1fY2hpbGRQcm9jZXNzKGNoaWxk
UHJvY2VzcykKIHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOworICAgIG1fY2hpbGRQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKIH0KIAogdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03Nywx
MiArNzcsMTIgQEAgdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZQogCiB2
b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSk7
CisgICAgbV9jaGlsZFByb2Nlc3Muc2VuZChNZXNzYWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSk7CiB9
CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdG9wTG9hZGluZyh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoY3VzdG9tUHJv
dG9jb2xJRCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwg
MCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7CisgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCByZWdpc3RlclByb3RvY29sQ2xhc3MoKTsKIAotICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFBy
b2Nlc3M7CisgICAgQ2hpbGRQcm9jZXNzJiBtX2NoaWxkUHJvY2VzczsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFwOwogICAg
IEN1c3RvbVByb3RvY29sTWFwIG1fY3VzdG9tUHJvdG9jb2xNYXA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDEwICs2MiwxMCBAQCBjb25zdCBjaGFyKiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnN1
cHBsCiAgICAgcmV0dXJuICJBdXRoZW50aWNhdGlvbk1hbmFnZXIiOwogfQogCi1BdXRoZW50aWNh
dGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3Mp
CitBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nl
c3MmIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgKnRoaXMpOwogfQogCiB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmFkZENoYWxs
ZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZSkKQEAgLTEyNiw3ICsxMjYs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgaWYgKHNo
b3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
ZnJhbWUtPmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwg
ZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShmcmFtZS0+ZnJh
bWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpLCBmcmFtZS0+cGFn
ZSgpLT5wYWdlSUQoKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBp
ZiAoc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UocGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hh
bGxlbmdlSUQpKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwgZnJhbWVJRCwg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGlu
Z0Rvd25sb2FkJiBwZW5kaW5nRG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hh
bGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwg
ZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CisgICAgbV9w
cm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7CisgICAg
ZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGlu
Zyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29uc3Q7CiAKLSAgICBDaGlsZFByb2Nlc3MqIG1fcHJv
Y2VzczsKKyAgICBDaGlsZFByb2Nlc3MmIG1fcHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIENoYWxsZW5nZT4gbV9jaGFsbGVuZ2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwOSwxMyAr
NTgwOSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICAvLyBGSVhNRTogR2VvbG9jYXRpb24gc2hvdWxk
IHByb2JhYmx5IGJlIHVzaW5nIHRvU3RyaW5nKCkgYXMgaXRzIHN0cmluZyByZXByZXNlbnRhdGlv
biBpbnN0ZWFkIG9mIGRhdGFiYXNlSWRlbnRpZmllcigpLgotICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1
cml0eU9yaWdpbigpKTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5PiByZXF1ZXN0ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVh
dGVSZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOworICAgIGF1dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihvcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byByZXF1ZXN0
ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KGdl
b2xvY2F0aW9uSUQpOwogCi0gICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVz
dC5nZXQoKSkpCisgICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFtZSwgb3JpZ2luLmdldCgpLCByZXF1ZXN0Lmdl
dCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZUNsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgKm9yaWdpbiwgKnJlcXVl
c3QpKQorICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCgqZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBTZWN1cml0
eU9yaWdpbiosIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5KikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9y
aWdpbiYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2Vj
dXJpdHlPcmlnaW4qLCBXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyBy
ZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1MywxMiArMTk1MywxMiBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSogcGVybWlzc2lvblJlcXVlc3QpIGZpbmFsCisgICAgICAgIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkocGVy
bWlzc2lvblJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQSSgmcGVybWlzc2lv
blJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAg
ICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5h
bWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIx
NzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMCBAQCBjb25zdCBjaGFyKiBXZWJD
b29raWVNYW5hZ2VyOjpzdXBwbGVtZW50CiAgICAgcmV0dXJuICJXZWJDb29raWVNYW5hZ2VyIjsK
IH0KIAotV2ViQ29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MqIHBy
b2Nlc3MpCitXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyYg
cHJvY2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewotICAgIG1fcHJvY2Vzcy0+YWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTYzLDcgKzYzLDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogICAgIFZlY3RvcjxT
dHJpbmc+IGhvc3RuYW1lTGlzdDsKICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVzLCBob3N0bmFt
ZUxpc3QpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lTGlzdCwgY2FsbGJhY2tJ
RCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lTGlzdCwgY2FsbGJhY2tJRCks
IDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC04
NCw3ICs4NCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFBBTDoKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29r
aWUoY29va2llKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nl
c3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVz
KGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNN
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFBBTAogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAg
ICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRBbGxDb29raWVzKCk7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29v
a2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKFBB
TDo6UwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgY29va2llcyA9IHN0b3JhZ2VT
ZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lE
KSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6c2V0Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
Q29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTExOCw3ICsxMTgsNyBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShQQUw6OlNlCiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlk
U2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9
CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTEyNiwx
MyArMTI2LDEzIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlMKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVz
KGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpub3RpZnlDb29raWVzRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpDb29raWVzRGlkQ2hhbmdlKHNlc3Npb25JRCks
IDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkNvb2tpZXNEaWRDaGFuZ2Uoc2Vzc2lvbklEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFu
YWdlcjo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKQEAgLTE1NSwxMiArMTU1LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENv
b2tpZUFjY2UKICAgICBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsK
IAogICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxs
YmFja0lELmNhbGxiYWNrSUQoKSksIDApOworICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNh
bGxiYWNrSUQuY2FsbGJhY2tJRCgpKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6
Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCks
IGNhbGxiYWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBsYXRmb3JtR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSgpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIENoaWxkUHJvY2VzczsKIGNsYXNzIFdlYkNvb2tpZU1hbmFn
ZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1
cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV2ViQ29va2llTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgV2ViQ29va2llTWFuYWdl
cihDaGlsZFByb2Nlc3MqKTsKKyAgICBXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTg5LDcgKzg5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNl
c3Npb25JRCk7CiAKLSAgICBDaGlsZFByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBDaGlsZFByb2Nl
c3MmIG1fcHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lv
biAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwz
NyArNDksMzcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlR2VvbG9jYXRpb25JRCgpCiAgICAg
cmV0dXJuIHVuaXF1ZUdlb2xvY2F0aW9uSUQrKzsKIH0KIAotR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBh
Z2UqIHBhZ2UpCitHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShw
YWdlKQogewogfQogCi12b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpz
dGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lk
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9s
b2NhdGlvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0g
Z2VvbG9jYXRpb24tPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZ2VvbG9jYXRpb24uZnJh
bWUoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZnJhbWUsICJJdCBpcyBub3Qgd2VsbCB1
bmRlcnN0b29kIGluIHdoaWNoIGNhc2VzIHRoZSBHZW9sb2NhdGlvbiBpcyBhbGl2ZSBhZnRlciBp
dHMgZnJhbWUgZ29lcyBhd2F5LiBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uLCBwbGVhc2UgYWRk
IGEgdGVzdCBjb3ZlcmluZyB0aGlzIGNhc2UuIik7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAg
ICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRpb24u
c2V0SXNBbGxvd2VkKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHVpbnQ2
NF90IGdlb2xvY2F0aW9uSUQgPSBnZW5lcmF0ZUdlb2xvY2F0aW9uSUQoKTsKIAotICAgIG1fZ2Vv
bG9jYXRpb25Ub0lETWFwLnNldChnZW9sb2NhdGlvbiwgZ2VvbG9jYXRpb25JRCk7Ci0gICAgbV9p
ZFRvR2VvbG9jYXRpb25NYXAuc2V0KGdlb2xvY2F0aW9uSUQsIGdlb2xvY2F0aW9uKTsKKyAgICBt
X2dlb2xvY2F0aW9uVG9JRE1hcC5zZXQoJmdlb2xvY2F0aW9uLCBnZW9sb2NhdGlvbklEKTsKKyAg
ICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5zZXQoZ2VvbG9jYXRpb25JRCwgJmdlb2xvY2F0aW9uKTsK
IAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFt
ZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4g
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwor
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRl
bnRpZmllcigpKSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24p
Cit2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0
Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIHVpbnQ2NF90
IGdlb2xvY2F0aW9uSUQgPSBtX2dlb2xvY2F0aW9uVG9JRE1hcC50YWtlKGdlb2xvY2F0aW9uKTsK
KyAgICB1aW50NjRfdCBnZW9sb2NhdGlvbklEID0gbV9nZW9sb2NhdGlvblRvSURNYXAudGFrZSgm
Z2VvbG9jYXRpb24pOwogICAgIGlmICghZ2VvbG9jYXRpb25JRCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1faWRUb0dlb2xvY2F0aW9uTWFwLnJlbW92ZShnZW9sb2NhdGlvbklEKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lv
biAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzksMTAgKzM4LDEw
IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcihXZWJQYWdlKik7CisgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCi0gICAgdm9pZCBzdGFydFJlcXVlc3RGb3JHZW9s
b2NhdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwotICAgIHZvaWQgY2FuY2VsUmVxdWVzdEZv
ckdlb2xvY2F0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBzdGFydFJlcXVl
c3RGb3JHZW9sb2NhdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOworICAgIHZvaWQgY2FuY2Vs
UmVxdWVzdEZvckdlb2xvY2F0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJik7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBnZW9sb2Nh
dGlvbklELCBib29sIGFsbG93ZWQpOwogCkBAIC01Miw5ICs1MSw3IEBAIHByaXZhdGU6CiAgICAg
SURUb0dlb2xvY2F0aW9uTWFwIG1faWRUb0dlb2xvY2F0aW9uTWFwOwogICAgIEdlb2xvY2F0aW9u
VG9JRE1hcCBtX2dlb2xvY2F0aW9uVG9JRE1hcDsKIAotICAgIFdlYlBhZ2UqIG1fcGFnZTsKKyAg
ICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNTAgKzQ1LDUwIEBAIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6c3VwcGwKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlciI7CiB9CiAKLVdlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nl
c3MpCitXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9j
ZXNzJiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlKiBwYWdlKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlJiBwYWdlKQogewogICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0
aW5nKCk7CiAKLSAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVNldC5hZGQoJnBh
Z2UpOwogCiAgICAgaWYgKCF3YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6U3RhcnRVcGRhdGluZygpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpTdGFydFVwZGF0aW5nKCksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSogcGFnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBwYWdlKQogewogICAgIGJvb2wgaGlnaEFj
Y3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogCi0gICAgbV9wYWdl
U2V0LnJlbW92ZShwYWdlKTsKLSAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2Up
OworICAgIG1fcGFnZVNldC5yZW1vdmUoJnBhZ2UpOworICAgIG1faGlnaEFjY3VyYWN5UGFnZVNl
dC5yZW1vdmUoJnBhZ2UpOwogCiAgICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJv
b2wgaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7
CiAgICAgICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAg
ICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1
cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogICAgIH0KIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSogcGFnZSwgYm9v
bCBlbmFibGVkKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1
cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewogICAgIGJvb2wgaGln
aEFjY3VyYWN5V2FzRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogCiAgICAgaWYg
KGVuYWJsZWQpCi0gICAgICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAg
ICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQoJnBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAg
bV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsKKyAgICAgICAgbV9oaWdoQWNjdXJh
Y3lQYWdlU2V0LnJlbW92ZSgmcGFnZSk7CiAKICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJl
RW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogICAgIGlmIChoaWdoQWNjdXJhY3lX
YXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3Vs
ZEJlRW5hYmxlZCksIDApOworICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OkRhdGEmIGRhdGEpCkBAIC05OCw4ICs5OCw3IEBAIHZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3MKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFn
ZT4+IHdlYlBhZ2VDb3B5OwogICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBhZ2VDb3B5
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlBhZ2VDb3B5LnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSB3ZWJQYWdlQ29weVtpXS5nZXQoKTsKKyAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiB3ZWJQYWdlQ29weSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2Uo
KSkKICAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFn
ZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uLmdldCgpKTsKICAgICB9CkBAIC0xMTIsMTIg
KzExMSwxMSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiB7CiAj
aWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9y
IHN0cmluZy4KLSAgICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IgPSBHZW9sb2NhdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJy
b3JNZXNzYWdlKTsKKyAgICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdl
b2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3Io
bV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJQ
YWdlQ29weS5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJQYWdlKiBwYWdlID0gd2ViUGFnZUNv
cHlbaV0uZ2V0KCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsKICAgICAg
ICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCiAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOwog
ICAgIH0KQEAgLTEyOSw3ICsxMjcsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlk
RmFpbFRvRGV0CiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnJlc2V0UGVybWlzc2lvbnMoKQogewotICAgIG1fcHJvY2Vzcy0+cmVzZXRBbGxHZW9sb2NhdGlv
blBlcm1pc3Npb25zKCk7CisgICAgbV9wcm9jZXNzLnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNz
aW9ucygpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCkBAIC00NiwxNSArNDUsMTUgQEAgY2xh
c3MgV2ViUGFnZTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9j
ZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAgZXhwbGljaXQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSop
OwotICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSopOwotICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlKiwgYm9vbCk7CisgICAgdm9pZCByZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZSYpOworICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYp
OworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiwgYm9vbCk7
CiAKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7Cisg
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwogCiBwcml2
YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC02OSwxMSArNjgsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAotICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nl
c3M7CiAgICAgSGFzaFNldDxXZWJQYWdlKj4gbV9wYWdlU2V0OwogICAgIEhhc2hTZXQ8V2ViUGFn
ZSo+IG1faGlnaEFjY3VyYWN5UGFnZVNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25NYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00MSw3ICs0MCw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3M7CiBjbGFzcyBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nl
c3NTdXBwbGVtZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyKFdlYlByb2Nlc3MqKSB7IH0KKyAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyKFdlYlByb2Nlc3MmKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyKCkgeyB9CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKQEAg
LTYxLDUgKzYwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDExICs2MSwxMSBAQCBjb25zdCBjaGFyKiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpzdXBwCiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyIjsK
IH0KIAotV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQ
cm9jZXNzKiBwcm9jZXNzKQorV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwog
I2VuZGlmCiB9CiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OnNob3coTm90aWZpCiAgICAgYXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5h
ZGQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRf
dD4oKSkuaXRlcmF0b3I7CiAgICAgaXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAK
LSAgICBtX3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5v
dGlmaWNhdGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZp
Y2F0aW9uLT50YWcoKSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCks
IG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9u
LT5ib2R5KCksIG5vdGlmaWNhdGlvbi0+aWNvbigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRh
ZygpLCBub3RpZmljYXRpb24tPmxhbmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0
aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCksIG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpCiAgICAgaWYgKCFub3Rp
ZmljYXRpb25JRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+cGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpj
bGVhck5vdGlmaQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8dWludDY0X3Q+JiBub3Rp
ZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9u
cyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xlYXJO
b3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICBzaXpl
X3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmlj
YXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSURzW2ldKTsKQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lO
CiAKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92ZShub3RpZmljYXRpb25JRCk7CiAgICAg
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNh
dGlvbik7Ci0gICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
SUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNhdGlv
bihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyX2gKLSNkZWZpbmUg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCkBAIC00OCw3
ICs0Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIpOwog
cHVibGljOgotICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2Vzcyop
OworICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAg
IH5XZWJOb3RpZmljYXRpb25NYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3Vw
cGxlbWVudE5hbWUoKTsKQEAgLTg0LDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92
ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJD
b3JlOjpOb3RpZmljYXRpb24qKTsKICNlbmRpZgogCi0gICAgV2ViUHJvY2VzcyogbV9wcm9jZXNz
OworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgdWlu
dDY0X3Q+IE5vdGlmaWNhdGlvbk1hcDsKQEAgLTEwMSw1ICsxMDAsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCwxNCArNzAsMTQgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRp
b25DbGllbgogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpy
ZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24p
CiB7Ci0gICAgbV9wYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0
YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKGdlb2xvY2F0aW9uKTsKKyAgICBtX3BhZ2UuZ2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlv
bihnZW9sb2NhdGlvbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3ZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJiBnZW9sb2Nh
dGlvbikKIHsKLSAgICBtX3BhZ2UtPmdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCkuY2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0aW9uKGdlb2xvY2F0aW9uKTsKKyAgICBtX3BhZ2Uu
Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0Rm9yR2Vv
bG9jYXRpb24oZ2VvbG9jYXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViR2VvbG9jYXRpb25DbGllbnRfaAotI2RlZmlu
ZSBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNv
cmUvR2VvbG9jYXRpb25DbGllbnQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSog
cGFnZSkKKyAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6
IG1fcGFnZShwYWdlKQogICAgIHsKICAgICB9CkBAIC01MCwxMyArNDksMTAgQEAgcHJpdmF0ZToK
IAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiop
IG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2Vv
bG9jYXRpb24qKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6
Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVz
dChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogCi0KLSAgICBXZWJQYWdlKiBtX3Bh
Z2U7CisgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNCw3ICszMzQsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+
KHRoaXMpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkK
ICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI+KHRoaXMpKQorICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhp
cykpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgeyBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpIH0KQEAgLTQyNyw3ICs0MjcsNyBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnCiAgICAgbV9kcmF3aW5nQXJlYS0+dXBk
YXRlUHJlZmVyZW5jZXMocGFyYW1ldGVycy5zdG9yZSk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJ
T04pCi0gICAgV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLmdldCgpLCBuZXcg
V2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOworICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2Nh
dGlvblRvKG1fcGFnZS5nZXQoKSwgKm5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCgqdGhpcykpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZU5v
dGlmaWNhdGlvbihtX3BhZ2UuZ2V0KCksIG5ldyBXZWJOb3RpZmljYXRpb25DbGllbnQodGhpcykp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxBcHBseUNv
bnN0cmFpbnRzQ2FsbGJhY2s+IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3M7CiB9
OwogCi1Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2Vi
UHJvY2VzcyogcHJvY2VzcykKLSAgICA6IG1fcHJvY2VzcygqcHJvY2VzcykKK1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNz
KQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiAgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7
CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIGV4cGxpY2l0
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzE5KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTctMDktMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDk2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBpbml0
V2l0aEdlb2xvY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyIGluaXRXaXRoR2VvbG9jYXRpb246Zm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXIgaW5pdFdpdGhHZW9sb2NhdGlv
bjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOl0pOgorCiAyMDE3LTA5
LTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBzb21lIHVudXNlZCBiaXRzIG9mIGNvZGUgYW5kIHJlc291cmNlcwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZSB7IH07Cisg
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24m
KSBvdmVycmlkZSB7IH07CiAKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciAKIHsKICAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlv
bjsKIH0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlv
bjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uJilnZW9sb2NhdGlvbjsK
IEBlbmQKICNlbHNlCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBO
U09iamVjdCA8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+CkBAIC01OCw3ICs1OCw3IEBAIEBp
bnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciAKICAgICBSZWZQdHI8R2VvbG9j
YXRpb24+IF9nZW9sb2NhdGlvbjsKICAgICBSZXRhaW5QdHI8V2ViVmlldyAqPiBfd2ViVmlldzsK
IH0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbiBm
b3JXZWJWaWV3OihXZWJWaWV3Kil3ZWJWaWV3OworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjoo
R2VvbG9jYXRpb24mKWdlb2xvY2F0aW9uIGZvcldlYlZpZXc6KFdlYlZpZXcqKXdlYlZpZXc7CiBA
ZW5kCiAjZW5kaWYKIApAQCAtNjcsNyArNjcsNyBAQCBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9u
UHJvdmlkZXJJbml0aWFsCiBAcHJpdmF0ZQogICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gbV9nZW9s
b2NhdGlvbjsKIH0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9s
b2NhdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uJilnZW9sb2Nh
dGlvbjsKIEBlbmQKICNlbmRpZgogCkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQor
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24m
IGdlb2xvY2F0aW9uKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAg
IFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKICAgICBpZiAoIVtbbV93ZWJW
aWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKLSAgICAgICAg
Z2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdlb2xvY2F0aW9uLnNl
dElzQWxsb3dlZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiAhUExBVEZP
Uk0oSU9TKQotICAgIEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOworICAgIEZy
YW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAKICAgICBpZiAoIWZyYW1lKSB7Ci0g
ICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworICAgICAgICBnZW9sb2Nh
dGlvbi5zZXRJc0FsbG93ZWQoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NDAsMTEgKzE0MCwxMSBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVu
CiAjaWYgIVBMQVRGT1JNKElPUykKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyCiAKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9s
b2NhdGlvbgorLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24mKWdlb2xvY2F0
aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247CisgICAgX2dlb2xvY2F0aW9uID0g
Jmdlb2xvY2F0aW9uOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0xNjIsMTIgKzE2MiwxMiBA
QCAtICh2b2lkKWRlbnkKIAogI2Vsc2UKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2Vv
bG9jYXRpb24gZm9yV2ViVmlldzooV2ViVmlldyopd2ViVmlldworLSAoaWQpaW5pdFdpdGhHZW9s
b2NhdGlvbjooR2VvbG9jYXRpb24mKWdlb2xvY2F0aW9uIGZvcldlYlZpZXc6KFdlYlZpZXcqKXdl
YlZpZXcKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb24gPSBnZW9sb2NhdGlvbjsKKyAgICBfZ2Vv
bG9jYXRpb24gPSAmZ2VvbG9jYXRpb247CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtMjA2LDExICsyMDYsMTEgQEAgLSAoQk9PTClzaG91bGRDbGVhckNh
Y2hlCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySW5pdGlh
bGl6YXRpb25MaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24q
KWdlb2xvY2F0aW9uCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2Vv
bG9jYXRpb24KIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmIChzZWxmKQotICAg
ICAgICBtX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247CisgICAgICAgIG1fZ2VvbG9jYXRpb24g
PSAmZ2VvbG9jYXRpb247CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIyMTcxOSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ1NCw3ICsxNDU0LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJh
bWVOYQogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKIAogI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25Ubyhf
cHJpdmF0ZS0+cGFnZSwgbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHNlbGYpKTsKKyAgICBXZWJD
b3JlOjpwcm92aWRlR2VvbG9jYXRpb25UbyhfcHJpdmF0ZS0+cGFnZSwgKm5ldyBXZWJHZW9sb2Nh
dGlvbkNsaWVudChzZWxmKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAg
ICBXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKF9wcml2YXRlLT5wYWdlLCBuZXcgV2ViTm90
aWZpY2F0aW9uQ2xpZW50KHNlbGYpKTsKQEAgLTk5ODQsNyArOTk4NCw3IEBAIC0gKHZvaWQpX2dl
b2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOigKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04p
CiAgICAgaWYgKF9wcml2YXRlICYmIF9wcml2YXRlLT5wYWdlKSB7Ci0gICAgICAgIFJlZlB0cjxH
ZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVh
dGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUo
R2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKICAg
ICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKF9wcml2YXRlLT5wYWdl
KS0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOwogICAgIH0KICNlbmRpZiAv
LyBFTkFCTEUoR0VPTE9DQVRJT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320102</attachid>
            <date>2017-09-07 01:15:17 -0700</date>
            <delta_ts>2017-09-07 10:45:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176496-20170907011519.patch</filename>
            <type>text/plain</type>
            <size>68389</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSByZWZlcmVuY2VzIGlu
c3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BVcGRhdGlu
Zyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9u
VG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
Lmg6CisKIDIwMTctMDktMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRlbXBvcmFyeSBkaXNhYmxlIHRoZSBjaGFuZ2Vz
IGludHJvZHVjZWQgaW4gcjIyMTY3MCBmb3IgV1BFLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIyMTcx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsMTAgQEAgc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaQogICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1v
dmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50
aW1lc3RhbXAoKSkpOwogfQogCi1zdGF0aWMgUmVmPFBvc2l0aW9uRXJyb3I+IGNyZWF0ZVBvc2l0
aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCitzdGF0aWMgUmVmPFBvc2l0aW9uRXJy
b3I+IGNyZWF0ZVBvc2l0aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiB7CiAgICAg
UG9zaXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9V
TkFWQUlMQUJMRTsKLSAgICBzd2l0Y2ggKGVycm9yLT5jb2RlKCkpIHsKKyAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUoKSkgewogICAgIGNhc2UgR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmll
ZDoKICAgICAgICAgY29kZSA9IFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOwogICAg
ICAgICBicmVhazsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIFJlZjxQb3NpdGlvbkVycm9yPiBj
cmVhdGVQb3NpdGlvbgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yLT5tZXNzYWdlKCkpOworICAgIHJldHVybiBQb3Np
dGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJyb3IubWVzc2FnZSgpKTsKIH0KIAogYm9vbCBHZW9s
b2NhdGlvbjo6V2F0Y2hlcnM6OmFkZChpbnQgaWQsIFJlZlB0cjxHZW9Ob3RpZmllcj4mJiBub3Rp
ZmllcikKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xv
Y2F0aW9uUGVyCiAgICAgaWYgKG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKSB7CiAg
ICAgICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlKQotICAg
ICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdCh0aGlzKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJv
bShwYWdlKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKnRoaXMpOwogCiAgICAgICAgIC8vIFRo
aXMgcmV0dXJuIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0IGFzIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSBzaG91bGQgaGF2ZSBjbGVhcmVkIHRoZSBh
Y3RpdmUgcmVxdWVzdC4KICAgICAgICAgLy8gTmVpdGhlciBpT1Mgbm9yIE9TIFggc3VwcG9ydHMg
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5NTI0KSwgc28gd2Ugd29ya2Fyb3VuZCB0aGF0IGFuZCBsZXQgb25nb2luZyBy
ZXF1ZXN0cyBjb21wbGV0ZS4gOigKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wKCkKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmIChwYWdl
ICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKQotICAgICAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOwor
ICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KCp0aGlzKTsKICAgICAvLyBUaGUgZnJhbWUgbWF5IGJlIG1vdmluZyB0byBhIG5l
dyBwYWdlIGFuZCB3ZSB3YW50IHRvIGdldCB0aGUgcGVybWlzc2lvbnMgZnJvbSB0aGUgbmV3IHBh
Z2UncyBjbGllbnQuCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gVW5rbm93bjsKICAgICBjYW5j
ZWxBbGxSZXF1ZXN0cygpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnJl
cXVlc3RQZXJtaXNzaW9uKCkKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBJblByb2dyZXNzOwog
CiAgICAgLy8gQXNrIHRoZSBlbWJlZGRlcjogaXQgbWFpbnRhaW5zIHRoZSBnZW9sb2NhdGlvbiBj
aGFsbGVuZ2UgcG9saWN5IGl0c2VsZi4KLSAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPnJlcXVlc3RQZXJtaXNzaW9uKHRoaXMpOworICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+cmVxdWVzdFBlcm1pc3Npb24oKnRoaXMpOwogfQogCiB2b2lkIEdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyhHZW9wb3NpdGlvbiYgcG9zaXRpb24pCkBAIC02
OTAsNyArNjkwLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkKCkKICAgICBt
YWtlU3VjY2Vzc0NhbGxiYWNrcygqcG9zaXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpz
ZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb246OnNldEVy
cm9yKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewogICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7
CiAgICAgICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gY3JlYXRlUG9zaXRpb25FcnJvcihl
cnJvcik7CkBAIC03MDcsNyArNzA3LDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGlu
ZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcih0aGlzLCBub3Rp
Zmllci0+b3B0aW9ucygpLmVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcigqdGhpcywgbm90aWZpZXItPm9wdGlvbnMo
KS5lbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03MTcsNyAr
NzE3LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdl
KS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KHBhZ2UpLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246Omhh
bmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDIyMTcxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWQo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93R2VvbG9jYXRpb24gPT0gWWVzOyB9CiAKICAgICB2b2lk
IHBvc2l0aW9uQ2hhbmdlZCgpOwotICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciop
OworICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciYpOwogICAgIGJvb2wgc2hvdWxk
QmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
CShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSA9
IDA7CiAKLSAgICB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBHZW9sb2NhdGlvbkNs
aWVudCopOworICAgIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9u
Q2xpZW50Jik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbkNsaWVudCgp
IHsgfQogfTsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdl
KiwgR2VvbG9jYXRpb25DbGllbnQqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZUdlb2xv
Y2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9uQ2xpZW50Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0
aW9uKiBvYnNlcnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCit2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJlbW92ZU9ic2VydmVyKCkKICAgICAv
LyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKAogICAgICAgICBtX2NsaWVudC5zdGFy
dFVwZGF0aW5nKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNl
cnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQogewogICAgIGlmICghbV9vYnNl
cnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CkBAIC04MSwxOSArODEs
MTkgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydgogICAgICAgICBt
X2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCi12b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uJiBnZW9sb2NhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkgewotICAg
ICAgICBtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CisgICAgICAg
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2NsaWVudC5yZXF1ZXN0UGVybWlzc2lvbihnZW9sb2NhdGlv
bik7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewot
ICAgIGlmIChtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCisg
ICAgaWYgKG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGdl
b2xvY2F0aW9uKTsKQEAgLTEwMiwxNiArMTAyLDIwIEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyOjpjYW5jZWxQZXJtaXMKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNo
YW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRp
b24gPSBwb3NpdGlvbjsKLSAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJz
VmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsK
KyAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOworICAgIG9ic2Vy
dmVyc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fb2JzZXJ2ZXJzLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlcnNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKG9ic2VydmVyLmNvcHlSZWYoKSk7CiAgICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG9ic2VydmVyc1ZlY3RvcikKICAgICAgICAgb2JzZXJ2ZXItPnBvc2l0aW9u
Q2hhbmdlZCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpl
cnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8R2VvbG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7Ci0gICAgY29weVRvVmVjdG9yKG1fb2Jz
ZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOworICAgIFZlY3RvcjxSZWY8R2VvbG9jYXRpb24+PiBv
YnNlcnZlcnNWZWN0b3I7CisgICAgb2JzZXJ2ZXJzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9vYnNlcnZlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCisgICAgICAgIG9ic2VydmVyc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQob2JzZXJ2ZXIu
Y29weVJlZigpKTsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzVmVjdG9yKQog
ICAgICAgICBvYnNlcnZlci0+c2V0RXJyb3IoZXJyb3IpOwogfQpAQCAtMTM4LDcgKzE0Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXQKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxSZWZQdHI8R2Vv
bG9jYXRpb24+PiBwZW5kZWRQZXJtaXNzaW9uUmVxdWVzdHMgPSBXVEZNb3ZlKG1fcGVuZGVkUGVy
bWlzc2lvblJlcXVlc3QpOworICAgIGF1dG8gcGVuZGVkUGVybWlzc2lvblJlcXVlc3RzID0gV1RG
TW92ZShtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdCk7CiAgICAgZm9yIChhdXRvJiBwZXJtaXNz
aW9uUmVxdWVzdCA6IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgbV9jbGllbnQu
cmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQpAQCAtMTQ4LDEx
ICsxNTIsMTAgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbAogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKIH0KIAotdm9pZCBwcm92aWRlR2VvbG9j
YXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KQordm9pZCBwcm92
aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBTdXBwbGVtZW50
PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsICpj
bGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0
aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcihQYWdlJiwgR2VvbG9jYXRpb25DbGllbnQmKTsKICAgICB+R2VvbG9jYXRp
b25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpOwotICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRp
b24qKTsKKyAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mKTsKIAotICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKLSAgICB2b2lkIGNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xv
Y2F0aW9uUG9zaXRpb24qKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVycm9yT2NjdXJyZWQo
R2VvbG9jYXRpb25FcnJvciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yJik7CiAKICAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9z
aXRpb24oKTsKIApAQCAtNzEsMTMgKzcxLDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWY8R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90
aCB0aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNl
cnZlcnNTZXQgbV9vYnNlcnZlcnM7CiAgICAgT2JzZXJ2ZXJzU2V0IG1faGlnaEFjY3VyYWN5T2Jz
ZXJ2ZXJzOwogCiAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQg
cGVybWlzc2lvbiByZXF1ZXN0cy4KLSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IG1f
cGVuZGVkUGVybWlzc2lvblJlcXVlc3Q7CisgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsMTcgKzg3LDE3IEBAIGludCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Om51bWJlck9mUGVuZGkK
ICAgICByZXR1cm4gbV9wZW5kaW5nUGVybWlzc2lvbi5zaXplKCk7CiB9CiAKLXZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uYWRkKGdlb2xv
Y2F0aW9uKTsKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmFkZCgmZ2VvbG9jYXRpb24pOwogICAg
IGlmIChtX3Blcm1pc3Npb25TdGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCkKICAgICAgICAg
YXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRp
b24mIGdlb2xvY2F0aW9uKQogewogICAgIC8vIENhbGxlZCBmcm9tIEdlb2xvY2F0aW9uOjpkaXNj
b25uZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0cnVjdGlvbi4KLSAgICBtX3Bl
bmRpbmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7CisgICAgbV9wZW5kaW5nUGVybWlz
c2lvbi5yZW1vdmUoJmdlb2xvY2F0aW9uKTsKICAgICBpZiAobV9wZW5kaW5nUGVybWlzc2lvbi5p
c0VtcHR5KCkgJiYgbV9wZXJtaXNzaW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9wZXJt
aXNzaW9uVGltZXIuc3RvcCgpOwogfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGkKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsK
ICAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0
KCkpOwogICAgIH0gZWxzZSBpZiAobV9oYXNFcnJvcikgewotICAgICAgICBSZWZQdHI8R2VvbG9j
YXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdl
b2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIG1fZXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAg
ICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsK
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDggKzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2tfaAotI2RlZmluZSBHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCkBAIC02NCw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwog
ICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNh
bmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwpAQCAtOTQsNSArOTMsMyBAQCBwcml2YXRl
OgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisy
MDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN0b3BM
b2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFN1cHBsZW1l
bnQpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlcjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Om5v
dGlmeUNvb2tpZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNl
bFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeUZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OmRpZENoYW5nZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyOjpkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6cmVzZXRQZXJtaXNzaW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3Rp
ZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX2NwdUxpbWl0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorCiAyMDE3
LTA5LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVu
dCdzIHBhZ2VEaWRTY3JvbGwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBw
bGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4odGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRz
LmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CiAg
ICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsMTAgQEAgY29u
c3QgY2hhciogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOgogICAgIHJldHVybiAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIjsKIH0KIAotTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBjaGlsZFByb2Nlc3Mp
CitMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cihDaGlsZFByb2Nlc3MmIGNoaWxkUHJvY2VzcykKICAgICA6IG1fY2hpbGRQcm9jZXNzKGNoaWxk
UHJvY2VzcykKIHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOworICAgIG1fY2hpbGRQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKIH0KIAogdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03Nywx
MiArNzcsMTIgQEAgdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZQogCiB2
b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSk7
CisgICAgbV9jaGlsZFByb2Nlc3Muc2VuZChNZXNzYWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSk7CiB9
CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdG9wTG9hZGluZyh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoY3VzdG9tUHJv
dG9jb2xJRCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwg
MCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7CisgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCByZWdpc3RlclByb3RvY29sQ2xhc3MoKTsKIAotICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFBy
b2Nlc3M7CisgICAgQ2hpbGRQcm9jZXNzJiBtX2NoaWxkUHJvY2VzczsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFwOwogICAg
IEN1c3RvbVByb3RvY29sTWFwIG1fY3VzdG9tUHJvdG9jb2xNYXA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDEwICs2MiwxMCBAQCBjb25zdCBjaGFyKiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnN1
cHBsCiAgICAgcmV0dXJuICJBdXRoZW50aWNhdGlvbk1hbmFnZXIiOwogfQogCi1BdXRoZW50aWNh
dGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3Mp
CitBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nl
c3MmIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgKnRoaXMpOwogfQogCiB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmFkZENoYWxs
ZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZSkKQEAgLTEyNiw3ICsxMjYs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgaWYgKHNo
b3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
ZnJhbWUtPmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwg
ZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShmcmFtZS0+ZnJh
bWVJRCgpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpLCBmcmFtZS0+cGFn
ZSgpLT5wYWdlSUQoKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBp
ZiAoc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UocGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hh
bGxlbmdlSUQpKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwgZnJhbWVJRCwg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGlu
Z0Rvd25sb2FkJiBwZW5kaW5nRG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hh
bGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwg
ZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CisgICAgbV9w
cm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7CisgICAg
ZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGlu
Zyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29uc3Q7CiAKLSAgICBDaGlsZFByb2Nlc3MqIG1fcHJv
Y2VzczsKKyAgICBDaGlsZFByb2Nlc3MmIG1fcHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIENoYWxsZW5nZT4gbV9jaGFsbGVuZ2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwOSwxMyAr
NTgwOSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICAvLyBGSVhNRTogR2VvbG9jYXRpb24gc2hvdWxk
IHByb2JhYmx5IGJlIHVzaW5nIHRvU3RyaW5nKCkgYXMgaXRzIHN0cmluZyByZXByZXNlbnRhdGlv
biBpbnN0ZWFkIG9mIGRhdGFiYXNlSWRlbnRpZmllcigpLgotICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1
cml0eU9yaWdpbigpKTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5PiByZXF1ZXN0ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVh
dGVSZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOworICAgIGF1dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihvcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byByZXF1ZXN0
ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KGdl
b2xvY2F0aW9uSUQpOwogCi0gICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVz
dC5nZXQoKSkpCisgICAgaWYgKG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFtZSwgb3JpZ2luLmdldCgpLCByZXF1ZXN0Lmdl
dCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZUNsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgKm9yaWdpbiwgKnJlcXVl
c3QpKQorICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCgqZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBTZWN1cml0
eU9yaWdpbiosIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5KikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4m
LCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9y
aWdpbiYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2Vj
dXJpdHlPcmlnaW4qLCBXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyBy
ZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1MywxMiArMTk1MywxMiBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSogcGVybWlzc2lvblJlcXVlc3QpIGZpbmFsCisgICAgICAgIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkocGVy
bWlzc2lvblJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQSSgmcGVybWlzc2lv
blJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
KiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5KiBwZXJtaXNzaW9uUmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4q
LCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KSBm
aW5hbAogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocGVybWlzc2lvblJlcXVlc3QpKTsKICAg
ICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZpZXcsIFdFQktJ
VF9QRVJNSVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjE3
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRz
LmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHRoaXMpKTsKKyAg
ICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3Vu
aXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyog
d2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9u
LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDEwICs0OCwxMCBAQCBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyOjpzdXBw
bGVtZW50CiAgICAgcmV0dXJuICJXZWJDb29raWVNYW5hZ2VyIjsKIH0KIAotV2ViQ29va2llTWFu
YWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3MpCitXZWJDb29raWVN
YW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyYgcHJvY2VzcykKICAgICA6IG1f
cHJvY2Vzcyhwcm9jZXNzKQogewotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
KyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAogdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lTGlz
dDsKICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVzLCBob3N0bmFtZUxpc3QpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGhvc3RuYW1lTGlzdCwgY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1l
c1dpdGhDb29raWVzKGhvc3RuYW1lTGlzdCwgY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFBBTDoKICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxl
dGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNCiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgq
c3RvcmFnZVNlc3Npb24sIHRpbWUpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwor
ICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERl
bGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxD
b29raWVzKFBBTAogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgY29va2llcyA9IHN0
b3JhZ2VTZXNzaW9uLT5nZXRBbGxDb29raWVzKCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxs
YmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZv
aWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMTAsNyArMTEwLDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKFBBTDo6UwogICAgIGlmIChhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVz
KHVybCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhj
b29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0
Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnNldENvb2tpZShQQUw6OlNlCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTEyNiwxMyArMTI2LDEzIEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhQQUw6OlMKICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVzKGNvb2tpZXMsIHVybCwgbWFp
bkRvY3VtZW50VVJMKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nl
c3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVz
RGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpDb29raWVzRGlkQ2hhbmdlKHNlc3Npb25JRCksIDApOworICAgIG1fcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkNvb2tpZXNEaWRDaGFuZ2Uo
c2Vzc2lvbklEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RhcnRPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTE1NSwxMiArMTU1
LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2UKICAgICBwbGF0
Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKIAogICAgIGlmIChjYWxsYmFj
a0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lELmNhbGxiYWNrSUQo
KSksIDApOworICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQuY2FsbGJhY2tJ
RCgpKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSgpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIENoaWxkUHJvY2VzczsKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29va2ll
TWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgV2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MqKTsK
KyAgICBXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyYpOwogCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCk7CiAgICAg
dm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCk7CiAKLSAgICBD
aGlsZFByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBDaGlsZFByb2Nlc3MmIG1fcHJvY2VzczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwzNyArNDksMzcgQEAgc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlR2VvbG9jYXRpb25JRCgpCiAgICAgcmV0dXJuIHVuaXF1ZUdlb2xv
Y2F0aW9uSUQrKzsKIH0KIAotR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Okdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCitHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoV2ViUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogewogfQogCi12b2lk
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9s
b2NhdGlvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlv
biYgZ2VvbG9jYXRpb24pCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gZ2VvbG9jYXRpb24tPmZyYW1l
KCk7CisgICAgRnJhbWUqIGZyYW1lID0gZ2VvbG9jYXRpb24uZnJhbWUoKTsKIAogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZnJhbWUsICJJdCBpcyBub3Qgd2VsbCB1bmRlcnN0b29kIGluIHdoaWNo
IGNhc2VzIHRoZSBHZW9sb2NhdGlvbiBpcyBhbGl2ZSBhZnRlciBpdHMgZnJhbWUgZ29lcyBhd2F5
LiBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uLCBwbGVhc2UgYWRkIGEgdGVzdCBjb3ZlcmluZyB0
aGlzIGNhc2UuIik7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0
SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRpb24uc2V0SXNBbGxvd2VkKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQg
PSBnZW5lcmF0ZUdlb2xvY2F0aW9uSUQoKTsKIAotICAgIG1fZ2VvbG9jYXRpb25Ub0lETWFwLnNl
dChnZW9sb2NhdGlvbiwgZ2VvbG9jYXRpb25JRCk7Ci0gICAgbV9pZFRvR2VvbG9jYXRpb25NYXAu
c2V0KGdlb2xvY2F0aW9uSUQsIGdlb2xvY2F0aW9uKTsKKyAgICBtX2dlb2xvY2F0aW9uVG9JRE1h
cC5zZXQoJmdlb2xvY2F0aW9uLCBnZW9sb2NhdGlvbklEKTsKKyAgICBtX2lkVG9HZW9sb2NhdGlv
bk1hcC5zZXQoZ2VvbG9jYXRpb25JRCwgJmdlb2xvY2F0aW9uKTsKIAogICAgIFdlYkZyYW1lKiB3
ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CiAgICAgQVNTRVJUKHdl
YkZyYW1lKTsKIAogICAgIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25J
RCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CiAK
LXZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RG
b3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2Vv
bG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQgPSBt
X2dlb2xvY2F0aW9uVG9JRE1hcC50YWtlKGdlb2xvY2F0aW9uKTsKKyAgICB1aW50NjRfdCBnZW9s
b2NhdGlvbklEID0gbV9nZW9sb2NhdGlvblRvSURNYXAudGFrZSgmZ2VvbG9jYXRpb24pOwogICAg
IGlmICghZ2VvbG9jYXRpb25JRCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faWRUb0dlb2xvY2F0
aW9uTWFwLnJlbW92ZShnZW9sb2NhdGlvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzksMTAgKzM4LDEwIEBAIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdl
Kik7CisgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2Vi
UGFnZSYpOwogCi0gICAgdm9pZCBzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiopOwotICAgIHZvaWQgY2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0aW9uKFdlYkNv
cmU6Okdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihX
ZWJDb3JlOjpHZW9sb2NhdGlvbiYpOworICAgIHZvaWQgY2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0
aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVHZW9sb2Nh
dGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBnZW9sb2NhdGlvbklELCBib29sIGFsbG93
ZWQpOwogCkBAIC01Miw5ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgSURUb0dlb2xvY2F0aW9uTWFw
IG1faWRUb0dlb2xvY2F0aW9uTWFwOwogICAgIEdlb2xvY2F0aW9uVG9JRE1hcCBtX2dlb2xvY2F0
aW9uVG9JRE1hcDsKIAotICAgIFdlYlBhZ2UqIG1fcGFnZTsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNTAgKzQ1
LDUwIEBAIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c3VwcGwKICAgICByZXR1
cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlciI7CiB9CiAKLVdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCitXZWJHZW9sb2NhdGlv
bk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQogICAg
IDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAot
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlKiBwYWdl
KQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlJiBw
YWdlKQogewogICAgIGJvb2wgd2FzVXBkYXRpbmcgPSBpc1VwZGF0aW5nKCk7CiAKLSAgICBtX3Bh
Z2VTZXQuYWRkKHBhZ2UpOworICAgIG1fcGFnZVNldC5hZGQoJnBhZ2UpOwogCiAgICAgaWYgKCF3
YXNVcGRhdGluZykKLSAgICAgICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U3RhcnRVcGRhdGlu
ZygpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdGFydFVwZGF0aW5nKCks
IDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6dW5yZWdpc3RlcldlYlBhZ2Uo
V2ViUGFnZSogcGFnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjp1bnJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlJiBwYWdlKQogewogICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCA9
IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogCi0gICAgbV9wYWdlU2V0LnJlbW92ZShwYWdlKTsK
LSAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQucmVtb3ZlKHBhZ2UpOworICAgIG1fcGFnZVNldC5y
ZW1vdmUoJnBhZ2UpOworICAgIG1faGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUoJnBhZ2UpOwog
CiAgICAgaWYgKCFpc1VwZGF0aW5nKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OlN0b3BVcGRhdGluZygpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTdG9w
VXBkYXRpbmcoKSwgMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgaGlnaEFjY3VyYWN5U2hv
dWxkQmVFbmFibGVkID0gaXNIaWdoQWNjdXJhY3lFbmFibGVkKCk7CiAgICAgICAgIGlmIChoaWdo
QWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAg
ICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxl
ZCksIDApOwogICAgIH0KIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQordm9pZCBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFn
ZSYgcGFnZSwgYm9vbCBlbmFibGVkKQogewogICAgIGJvb2wgaGlnaEFjY3VyYWN5V2FzRW5hYmxl
ZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwogCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAg
IG1faGlnaEFjY3VyYWN5UGFnZVNldC5hZGQocGFnZSk7CisgICAgICAgIG1faGlnaEFjY3VyYWN5
UGFnZVNldC5hZGQoJnBhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdl
U2V0LnJlbW92ZShwYWdlKTsKKyAgICAgICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZSgm
cGFnZSk7CiAKICAgICBib29sIGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFj
Y3VyYWN5RW5hYmxlZCgpOwogICAgIGlmIChoaWdoQWNjdXJhY3lXYXNFbmFibGVkICE9IGhpZ2hB
Y2N1cmFjeVNob3VsZEJlRW5hYmxlZCkKLSAgICAgICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwor
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRh
dGEmIGRhdGEpCkBAIC05OCw4ICs5OCw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpk
aWRDaGFuZ2VQb3MKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5Owog
ICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdlYlBhZ2VDb3B5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdlYlBhZ2Uq
IHBhZ2UgPSB3ZWJQYWdlQ29weVtpXS5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiB3ZWJQ
YWdlQ29weSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKICAgICAgICAgICAgIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFu
Z2VkKHBvc2l0aW9uLmdldCgpKTsKICAgICB9CkBAIC0xMTIsMTIgKzExMSwxMSBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FU
SU9OKQogICAgIC8vIEZJWE1FOiBBZGQgbG9jYWxpemVkIGVycm9yIHN0cmluZy4KLSAgICBSZWZQ
dHI8R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKKyAgICBh
dXRvIGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBv
c2l0aW9uVW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YlBhZ2U+PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdl
Q29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJQYWdlQ29weS5zaXplKCk7ICsr
aSkgewotICAgICAgICBXZWJQYWdlKiBwYWdlID0gd2ViUGFnZUNvcHlbaV0uZ2V0KCk7CisgICAg
Zm9yIChhdXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQ
YWdlKCkpCiAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29y
ZVBhZ2UoKSktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOwogICAgIH0KQEAgLTEyOSw3ICsx
MjcsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiAjaWYgUExB
VEZPUk0oSU9TKQogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMo
KQogewotICAgIG1fcHJvY2Vzcy0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7Cisg
ICAgbV9wcm9jZXNzLnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwogfQogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAkocmV2aXNp
b24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvbk1hbmFnZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgiCkBAIC00NiwxNSArNDUsMTUgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNz
IFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJH
ZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
KFdlYlByb2Nlc3MmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSopOwotICAgIHZvaWQgdW5yZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZSopOwotICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9y
UGFnZShXZWJQYWdlKiwgYm9vbCk7CisgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYp
OworICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYpOworICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiwgYm9vbCk7CiAKLSAgICB2b2lkIHJlcXVl
c3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCkBAIC02OSwxMSArNjgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRQZXJtaXNzaW9ucygpOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAotICAgIFdlYlByb2Nl
c3MqIG1fcHJvY2VzczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAgICAgSGFzaFNldDxX
ZWJQYWdlKj4gbV9wYWdlU2V0OwogICAgIEhhc2hTZXQ8V2ViUGFnZSo+IG1faGlnaEFjY3VyYWN5
UGFnZVNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNh
Y2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgJKHJl
dmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyX2gKLSNkZWZpbmUgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC00MSw3ICs0MCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiBjbGFzcyBXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKTsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKFdlYlByb2Nlc3MqKSB7
IH0KKyAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKFdlYlByb2Nlc3MmKSB7
IH0KICAgICB2aXJ0dWFsIH5XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKCkgeyB9CiAKICAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKQEAgLTYxLDUgKzYwLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDExICs2MSwxMSBAQCBjb25zdCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzdXBw
CiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyIjsKIH0KIAotV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQor
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNz
JiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworICAg
IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpCiAg
ICAgYXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9uLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0b3I7CiAg
ICAgaXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAKLSAgICBtX3Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hv
d05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9keSgp
LCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWcoKSwgbm90
aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlvbi0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3Rp
ZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNh
dGlvbi0+aWNvbigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmljYXRpb24t
PmxhbmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklE
KSwgcGFnZS0+cGFnZUlEKCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpCiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2FuY2VsTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0xODUsNyAr
MTg1LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaQogICAgICAg
ICByZXR1cm47CiAKICAgICBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+
dmFsdWU7Ci0gICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMp
LCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlm
aWNhdGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICBzaXplX3QgY291bnQgPSBub3RpZmlj
YXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewogICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSURzW2ldKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOCiAKICAgICBtX25vdGlmaWNh
dGlvbklETWFwLnJlbW92ZShub3RpZmljYXRpb25JRCk7CiAgICAgcmVtb3ZlTm90aWZpY2F0aW9u
RnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCks
IHBhZ2UtPnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyX2gKLSNkZWZpbmUgV2ViTm90aWZpY2F0aW9uTWFu
YWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCkBAIC00OCw3ICs0Nyw3IEBAIGNsYXNzIFdl
YlByb2Nlc3M7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIGV4cGxpY2l0IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5XZWJOb3RpZmljYXRpb25N
YW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKQEAg
LTg0LDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21D
b250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJDb3JlOjpOb3RpZmljYXRpb24q
KTsKICNlbmRpZgogCi0gICAgV2ViUHJvY2VzcyogbV9wcm9jZXNzOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgdWludDY0X3Q+IE5vdGlmaWNhdGlv
bk1hcDsKQEAgLTEwMSw1ICsxMDAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCShy
ZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxNCArNzAs
MTQgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbgogICAgIHJldHVy
biAwOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1
ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiB7Ci0gICAgbV9wYWdlLT5n
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0YXJ0UmVxdWVzdEZvckdlb2xv
Y2F0aW9uKGdlb2xvY2F0aW9uKTsKKyAgICBtX3BhZ2UuZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKS5zdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihnZW9sb2NhdGlvbik7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdl
b2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNl
bFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKIHsKLSAgICBtX3Bh
Z2UtPmdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdEZv
ckdlb2xvY2F0aW9uKGdlb2xvY2F0aW9uKTsKKyAgICBtX3BhZ2UuZ2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oZ2VvbG9jYXRp
b24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViR2VvbG9jYXRpb25DbGllbnRfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvbkNs
aWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25DbGll
bnQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9s
b2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSogcGFnZSkKKyAgICBXZWJHZW9s
b2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQogICAg
IHsKICAgICB9CkBAIC01MCwxMyArNDksMTAgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopIG92ZXJyaWRlOwotICAgIHZv
aWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2Nh
dGlvbiYpIG92ZXJyaWRlOwogCi0KLSAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgV2ViUGFnZSYg
bV9wYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJHZW9s
b2NhdGlvbkNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnCiAgICAgLCBtX2ZpbmRD
b250cm9sbGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0
ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKICNpZiBFTkFCTEUoR0VPTE9D
QVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKG1ha2VV
bmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+KHRoaXMpKQorICAg
ICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCiAjZW5kaWYKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgeyBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cj4oKnRoaXMpIH0KQEAgLTQyNyw3ICs0MjcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgV2ViUGFnCiAgICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMocGFy
YW1ldGVycy5zdG9yZSk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgV2ViQ29yZTo6
cHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLmdldCgpLCBuZXcgV2ViR2VvbG9jYXRpb25DbGll
bnQodGhpcykpOworICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFnZS5nZXQo
KSwgKm5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCgqdGhpcykpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZU5vdGlmaWNhdGlvbihtX3BhZ2Uu
Z2V0KCksIG5ldyBXZWJOb3RpZmljYXRpb25DbGllbnQodGhpcykpOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
OCArMTUyLDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2s+
IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3M7CiB9OwogCi1Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyogcHJvY2VzcykK
LSAgICA6IG1fcHJvY2VzcygqcHJvY2VzcykKK1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNz
KHByb2Nlc3MpCiB7CiAgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW9DYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDkt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAg
ICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBpbml0V2l0aEdlb2xvY2F0aW9uOl0p
OgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGluaXRXaXRoR2VvbG9j
YXRpb246Zm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklu
aXRpYWxpemF0aW9uTGlzdGVuZXIgaW5pdFdpdGhHZW9sb2NhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2dlb2xv
Y2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOl0pOgorCiAyMDE3LTA5LTA1ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCBi
aXRzIG9mIGNvZGUgYW5kIHJlc291cmNlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4
IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3Np
dGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
V2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZSB7IH07CiAK
IHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW0JKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciAK
IHsKICAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKIH0KLS0gKGlkKWluaXRX
aXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbjsKKy0gKGlkKWluaXRXaXRo
R2VvbG9jYXRpb246KEdlb2xvY2F0aW9uJilnZW9sb2NhdGlvbjsKIEBlbmQKICNlbHNlCiBAaW50
ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXI+CkBAIC02Nyw3ICs2Nyw3IEBAIEBpbnRlcmZhY2UgV2ViR2VvbG9j
YXRpb25Qcm92aWRlckluaXRpYWwKIEBwcml2YXRlCiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBt
X2dlb2xvY2F0aW9uOwogfQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24q
KWdlb2xvY2F0aW9uOworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24mKWdl
b2xvY2F0aW9uOwogQGVuZAogI2VuZGlmCiAKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgV2Vi
R2VvbG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2gKIH0KICNlbmRpZgogCi12b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYgZ2VvbG9jYXRpb24pCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjopOwogICAgIGlmICghW1tt
X3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewotICAg
ICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRp
b24uc2V0SXNBbGxvd2VkKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmICFQ
TEFURk9STShJT1MpCi0gICAgRnJhbWUgKmZyYW1lID0gZ2VvbG9jYXRpb24tPmZyYW1lKCk7Cisg
ICAgRnJhbWUgKmZyYW1lID0gZ2VvbG9jYXRpb24uZnJhbWUoKTsKIAogICAgIGlmICghZnJhbWUp
IHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdl
b2xvY2F0aW9uLnNldElzQWxsb3dlZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE0MCwxMSArMTQwLDExIEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9u
Q2xpZW4KICNpZiAhUExBVEZPUk0oSU9TKQogQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIKIAotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24q
KWdlb2xvY2F0aW9uCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2Vv
bG9jYXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb24gPSBnZW9sb2NhdGlvbjsKKyAgICBfZ2VvbG9jYXRp
b24gPSAmZ2VvbG9jYXRpb247CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTIwNiwxMSArMjA2
LDExIEBAIC0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0aW9uTGlzdGVuZXIKLS0gKGlkKWluaXRX
aXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbgorLSAoaWQpaW5pdFdpdGhH
ZW9sb2NhdGlvbjooR2VvbG9jYXRpb24mKWdlb2xvY2F0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKICAgICBpZiAoc2VsZikKLSAgICAgICAgbV9nZW9sb2NhdGlvbiA9IGdlb2xvY2F0
aW9uOworICAgICAgICBtX2dlb2xvY2F0aW9uID0gJmdlb2xvY2F0aW9uOwogICAgIHJldHVybiBz
ZWxmOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIC0gKHZvaWQp
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0
R3JvdXBOYW1lKGdyb3VwTmFtZSk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgV2Vi
Q29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJHZW9sb2Nh
dGlvbkNsaWVudChzZWxmKSk7CisgICAgV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8oX3By
aXZhdGUtPnBhZ2UsICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZikpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZU5vdGlmaWNhdGlv
bihfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYk5vdGlmaWNhdGlvbkNsaWVudChzZWxmKSk7CkBAIC05
OTg0LDcgKzk5ODQsNyBAQCAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZToo
CiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIGlmIChfcHJpdmF0ZSAmJiBfcHJpdmF0
ZS0+cGFnZSkgewotICAgICAgICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vy
cm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9u
VW5hdmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIGF1dG8gZ2VvbG9jYXRpb0Vycm9y
ID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5h
dmFpbGFibGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShfcHJpdmF0ZS0+cGFnZSktPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vy
cm9yLmdldCgpKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXJfaAotI2RlZmluZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01Q
dHIuaD4KQEAgLTU0LDUgKzUzLDMgQEAgcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKIH07
Ci0KLSNlbmRpZiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyMSw3ICszMTIxLDcg
QEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogICAgIGNvbmZpZ3Vy
YXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0gJldlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xl
dG9uKCk7CiAKICAgICBtX3BhZ2UgPSBuZXcgUGFnZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
LSAgICBwcm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2UsIG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCh0aGlzKSk7CisgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCAqbmV3IFdlYkdlb2xv
Y2F0aW9uQ2xpZW50KCp0aGlzKSk7CiAKICAgICB1bnNpZ25lZCBsYXlvdXRNaWxlc3RvbmVzID0g
RGlkRmlyc3RMYXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CiAgICAgbV9w
YWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxh
eW91dE1pbGVzdG9uZXMpKTsKQEAgLTcyNDQsNyArNzI0NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
Z2VvbG9jYXRpb25EaWRGYWlsV2l0aEUKICAgICBpZiAoRkFJTEVEKGVycm9yLT5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigmZGVzY3JpcHRpb24pKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvbkVycm9yID0gR2VvbG9jYXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIHRvU3Ry
aW5nKGRlc2NyaXB0aW9uKSk7CisgICAgYXV0byBnZW9sb2NhdGlvbkVycm9yID0gR2VvbG9jYXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIHRv
U3RyaW5nKGRlc2NyaXB0aW9uKSk7CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKG1f
cGFnZSktPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb25FcnJvci5nZXQoKSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAy
MjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDI2ICs3NSwyNiBAQCBHZW9s
b2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVuCiAgICAgcmV0dXJuIGNvcmUocG9z
aXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVy
bWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiB7CiAgICAg
Q09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlOwogICAgIGlmIChGQUlMRUQobV93ZWJW
aWV3LT51aURlbGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNl
dElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdlb2xvY2F0aW9uLnNldElzQWxsb3dlZChmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQ
cml2YXRlMj4gdWlEZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5LCB1aURlbGVnYXRlKTsKICAgICBpZiAo
IXVpRGVsZWdhdGVQcml2YXRlMikgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2Vk
KGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRpb24uc2V0SXNBbGxvd2VkKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAgICAgQ09NUHRy
PFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVJbnN0YW5jZSgmZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAg
ICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gbGlzdGVuZXIgPSBXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShnZW9sb2NhdGlvbik7CisgICAg
Q09NUHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoJmdlb2xvY2F0aW9uKTsKICAgICBI
UkVTVUxUIGhyID0gdWlEZWxlZ2F0ZVByaXZhdGUyLT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blJlcXVlc3QobV93ZWJWaWV3LmdldCgpLCBraXQoZnJhbWUpLCBvcmlnaW4uZ2V0KCksIGxpc3Rl
bmVyLmdldCgpKTsKICAgICBpZiAoaHIgIT0gRV9OT1RJTVBMKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICBnZW9sb2NhdGlvbi5z
ZXRJc0FsbG93ZWQoZmFsc2UpOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCShy
ZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJH
ZW9sb2NhdGlvbkNsaWVudF9oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dlb2xvY2F0aW9uQ2xpZW50Lmg+CkBAIC00MCwxNyArMzksMTUgQEAgY2xhc3MgV2ViR2VvbG9j
YXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50KFdlYlZpZXcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BVcGRhdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9v
bCkgeyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9z
aXRpb24oKTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgZmluYWw7CisgICAgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsK
KyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KKyAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKIAotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwotICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlv
biopIHsgfQorICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24m
KSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uJikgZmluYWwgeyB9CiAKIHByaXZhdGU6CiAgICAgQ09NUHRyPFdlYlZpZXc+IG1fd2Vi
VmlldzsKIH07Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320134</attachid>
            <date>2017-09-07 10:45:58 -0700</date>
            <delta_ts>2017-09-07 11:57:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176496-20170907104556.patch</filename>
            <type>text/plain</type>
            <size>68746</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSByZWZlcmVuY2VzIGlu
c3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BVcGRhdGlu
Zyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZUdlb2xvY2F0aW9u
VG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
Lmg6CisKIDIwMTctMDktMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRlbXBvcmFyeSBkaXNhYmxlIHRoZSBjaGFuZ2Vz
IGludHJvZHVjZWQgaW4gcjIyMTY3MCBmb3IgV1BFLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIyMTcx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsMTAgQEAgc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaQogICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1v
dmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50
aW1lc3RhbXAoKSkpOwogfQogCi1zdGF0aWMgUmVmPFBvc2l0aW9uRXJyb3I+IGNyZWF0ZVBvc2l0
aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCitzdGF0aWMgUmVmPFBvc2l0aW9uRXJy
b3I+IGNyZWF0ZVBvc2l0aW9uRXJyb3IoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiB7CiAgICAg
UG9zaXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9V
TkFWQUlMQUJMRTsKLSAgICBzd2l0Y2ggKGVycm9yLT5jb2RlKCkpIHsKKyAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUoKSkgewogICAgIGNhc2UgR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmll
ZDoKICAgICAgICAgY29kZSA9IFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOwogICAg
ICAgICBicmVhazsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIFJlZjxQb3NpdGlvbkVycm9yPiBj
cmVhdGVQb3NpdGlvbgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yLT5tZXNzYWdlKCkpOworICAgIHJldHVybiBQb3Np
dGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJyb3IubWVzc2FnZSgpKTsKIH0KIAogYm9vbCBHZW9s
b2NhdGlvbjo6V2F0Y2hlcnM6OmFkZChpbnQgaWQsIFJlZlB0cjxHZW9Ob3RpZmllcj4mJiBub3Rp
ZmllcikKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xv
Y2F0aW9uUGVyCiAgICAgaWYgKG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKSB7CiAg
ICAgICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlKQotICAg
ICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdCh0aGlzKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJv
bShwYWdlKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKnRoaXMpOwogCiAgICAgICAgIC8vIFRo
aXMgcmV0dXJuIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0IGFzIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSBzaG91bGQgaGF2ZSBjbGVhcmVkIHRoZSBh
Y3RpdmUgcmVxdWVzdC4KICAgICAgICAgLy8gTmVpdGhlciBpT1Mgbm9yIE9TIFggc3VwcG9ydHMg
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5NTI0KSwgc28gd2Ugd29ya2Fyb3VuZCB0aGF0IGFuZCBsZXQgb25nb2luZyBy
ZXF1ZXN0cyBjb21wbGV0ZS4gOigKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wKCkKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmIChwYWdl
ICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKQotICAgICAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOwor
ICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KCp0aGlzKTsKICAgICAvLyBUaGUgZnJhbWUgbWF5IGJlIG1vdmluZyB0byBhIG5l
dyBwYWdlIGFuZCB3ZSB3YW50IHRvIGdldCB0aGUgcGVybWlzc2lvbnMgZnJvbSB0aGUgbmV3IHBh
Z2UncyBjbGllbnQuCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gVW5rbm93bjsKICAgICBjYW5j
ZWxBbGxSZXF1ZXN0cygpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnJl
cXVlc3RQZXJtaXNzaW9uKCkKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBJblByb2dyZXNzOwog
CiAgICAgLy8gQXNrIHRoZSBlbWJlZGRlcjogaXQgbWFpbnRhaW5zIHRoZSBnZW9sb2NhdGlvbiBj
aGFsbGVuZ2UgcG9saWN5IGl0c2VsZi4KLSAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPnJlcXVlc3RQZXJtaXNzaW9uKHRoaXMpOworICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+cmVxdWVzdFBlcm1pc3Npb24oKnRoaXMpOwogfQogCiB2b2lkIEdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyhHZW9wb3NpdGlvbiYgcG9zaXRpb24pCkBAIC02
OTAsNyArNjkwLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkKCkKICAgICBt
YWtlU3VjY2Vzc0NhbGxiYWNrcygqcG9zaXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpz
ZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb246OnNldEVy
cm9yKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewogICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7
CiAgICAgICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gY3JlYXRlUG9zaXRpb25FcnJvcihl
cnJvcik7CkBAIC03MDcsNyArNzA3LDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGlu
ZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcih0aGlzLCBub3Rp
Zmllci0+b3B0aW9ucygpLmVuYWJsZUhpZ2hBY2N1cmFjeSk7CisgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UpLT5hZGRPYnNlcnZlcigqdGhpcywgbm90aWZpZXItPm9wdGlvbnMo
KS5lbmFibGVIaWdoQWNjdXJhY3kpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03MTcsNyAr
NzE3LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nKCkKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdl
KS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KHBhZ2UpLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246Omhh
bmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDIyMTcxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWQo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93R2VvbG9jYXRpb24gPT0gWWVzOyB9CiAKICAgICB2b2lk
IHBvc2l0aW9uQ2hhbmdlZCgpOwotICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciop
OworICAgIHZvaWQgc2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciYpOwogICAgIGJvb2wgc2hvdWxk
QmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5o
CShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSA9
IDA7CiAKLSAgICB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqLCBHZW9sb2NhdGlvbkNs
aWVudCopOworICAgIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9u
Q2xpZW50Jik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbkNsaWVudCgp
IHsgfQogfTsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdl
KiwgR2VvbG9jYXRpb25DbGllbnQqKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZUdlb2xv
Y2F0aW9uVG8oUGFnZSosIEdlb2xvY2F0aW9uQ2xpZW50Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAgICAgbV9jbGllbnQuZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0
aW9uKiBvYnNlcnZlciwgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3kpCit2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyLCBib29sIGVuYWJs
ZUhpZ2hBY2N1cmFjeSkKIHsKICAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhvdWdoIHJlbW92ZU9ic2VydmVyKCkKICAgICAv
LyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFjaC4KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKAogICAgICAgICBtX2NsaWVudC5zdGFy
dFVwZGF0aW5nKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNl
cnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mIG9ic2VydmVyKQogewogICAgIGlmICghbV9vYnNl
cnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CkBAIC04MSwxOSArODEs
MTkgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydgogICAgICAgICBt
X2NsaWVudC5zZXRFbmFibGVIaWdoQWNjdXJhY3koZmFsc2UpOwogfQogCi12b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uJiBnZW9sb2NhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZS5pc1Zpc2libGUoKSkgewotICAg
ICAgICBtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CisgICAgICAg
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LmFkZChnZW9sb2NhdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2NsaWVudC5yZXF1ZXN0UGVybWlzc2lvbihnZW9sb2NhdGlv
bik7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewot
ICAgIGlmIChtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCisg
ICAgaWYgKG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0LnJlbW92ZShnZW9sb2NhdGlvbikpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGdl
b2xvY2F0aW9uKTsKQEAgLTEwMiwxNiArMTAyLDIwIEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyOjpjYW5jZWxQZXJtaXMKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNo
YW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRp
b24gPSBwb3NpdGlvbjsKLSAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJz
VmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsK
KyAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOworICAgIG9ic2Vy
dmVyc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fb2JzZXJ2ZXJzLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlcnNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKG9ic2VydmVyLmNvcHlSZWYoKSk7CiAgICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG9ic2VydmVyc1ZlY3RvcikKICAgICAgICAgb2JzZXJ2ZXItPnBvc2l0aW9u
Q2hhbmdlZCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yKiBlcnJvcikKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpl
cnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImIGVycm9yKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8R2VvbG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7Ci0gICAgY29weVRvVmVjdG9yKG1fb2Jz
ZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOworICAgIFZlY3RvcjxSZWY8R2VvbG9jYXRpb24+PiBv
YnNlcnZlcnNWZWN0b3I7CisgICAgb2JzZXJ2ZXJzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9vYnNlcnZlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCisgICAgICAgIG9ic2VydmVyc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQob2JzZXJ2ZXIu
Y29weVJlZigpKTsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzVmVjdG9yKQog
ICAgICAgICBvYnNlcnZlci0+c2V0RXJyb3IoZXJyb3IpOwogfQpAQCAtMTM4LDcgKzE0Miw3IEBA
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphY3Rpdml0eVN0YXQKICAgICBpZiAoIW1fcGFn
ZS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxSZWZQdHI8R2Vv
bG9jYXRpb24+PiBwZW5kZWRQZXJtaXNzaW9uUmVxdWVzdHMgPSBXVEZNb3ZlKG1fcGVuZGVkUGVy
bWlzc2lvblJlcXVlc3QpOworICAgIGF1dG8gcGVuZGVkUGVybWlzc2lvblJlcXVlc3RzID0gV1RG
TW92ZShtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdCk7CiAgICAgZm9yIChhdXRvJiBwZXJtaXNz
aW9uUmVxdWVzdCA6IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgbV9jbGllbnQu
cmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQpAQCAtMTQ4LDEx
ICsxNTIsMTAgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbAogICAg
IHJldHVybiAiR2VvbG9jYXRpb25Db250cm9sbGVyIjsKIH0KIAotdm9pZCBwcm92aWRlR2VvbG9j
YXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCogY2xpZW50KQordm9pZCBwcm92
aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBTdXBwbGVtZW50
PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsICpj
bGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0
aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcihQYWdlJiwgR2VvbG9jYXRpb25DbGllbnQmKTsKICAgICB+R2VvbG9jYXRp
b25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiwgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3kpOwotICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRp
b24qKTsKKyAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uJiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24mKTsKIAotICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKLSAgICB2b2lkIGNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xv
Y2F0aW9uUG9zaXRpb24qKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVycm9yT2NjdXJyZWQo
R2VvbG9jYXRpb25FcnJvciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXJyb3JPY2N1cnJl
ZChHZW9sb2NhdGlvbkVycm9yJik7CiAKICAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9z
aXRpb24oKTsKIApAQCAtNzEsMTMgKzcxLDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWY8R2VvbG9jYXRpb24+PiBPYnNlcnZlcnNTZXQ7CiAgICAgLy8gQWxsIG9ic2VydmVyczsgYm90
aCB0aG9zZSByZXF1ZXN0aW5nIGhpZ2ggYWNjdXJhY3kgYW5kIHRob3NlIG5vdC4KICAgICBPYnNl
cnZlcnNTZXQgbV9vYnNlcnZlcnM7CiAgICAgT2JzZXJ2ZXJzU2V0IG1faGlnaEFjY3VyYWN5T2Jz
ZXJ2ZXJzOwogCiAgICAgLy8gV2hpbGUgdGhlIHBhZ2UgaXMgbm90IHZpc2libGUsIHdlIHBlbmQg
cGVybWlzc2lvbiByZXF1ZXN0cy4KLSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IG1f
cGVuZGVkUGVybWlzc2lvblJlcXVlc3Q7CisgICAgSGFzaFNldDxSZWY8R2VvbG9jYXRpb24+PiBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsMTcgKzg3LDE3IEBAIGludCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Om51bWJlck9mUGVuZGkK
ICAgICByZXR1cm4gbV9wZW5kaW5nUGVybWlzc2lvbi5zaXplKCk7CiB9CiAKLXZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uYWRkKGdlb2xv
Y2F0aW9uKTsKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmFkZCgmZ2VvbG9jYXRpb24pOwogICAg
IGlmIChtX3Blcm1pc3Npb25TdGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCkKICAgICAgICAg
YXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRp
b24mIGdlb2xvY2F0aW9uKQogewogICAgIC8vIENhbGxlZCBmcm9tIEdlb2xvY2F0aW9uOjpkaXNj
b25uZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0cnVjdGlvbi4KLSAgICBtX3Bl
bmRpbmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7CisgICAgbV9wZW5kaW5nUGVybWlz
c2lvbi5yZW1vdmUoJmdlb2xvY2F0aW9uKTsKICAgICBpZiAobV9wZW5kaW5nUGVybWlzc2lvbi5p
c0VtcHR5KCkgJiYgbV9wZXJtaXNzaW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9wZXJt
aXNzaW9uVGltZXIuc3RvcCgpOwogfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGkKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsK
ICAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0
KCkpOwogICAgIH0gZWxzZSBpZiAobV9oYXNFcnJvcikgewotICAgICAgICBSZWZQdHI8R2VvbG9j
YXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdl
b2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIG1fZXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAg
ICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsK
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDggKzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2tfaAotI2RlZmluZSBHZW9sb2NhdGlvbkNsaWVudE1vY2tfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCkBAIC02NCw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwog
ICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNh
bmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwpAQCAtOTQsNSArOTMsMyBAQCBwcml2YXRl
OgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisy
MDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyB0aGUgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIgdGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgor
ICAgICAgICBzcGlsbGVkIGludG8gbWFraW5nIHRoZSBvdGhlciBzdXBwbGVtZW50IGNvbnN0cnVj
dG9ycyBkbyB0aGUgc2FtZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RhcnRMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdG9w
TG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVt
ZW50KToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpBdXRoZW50
aWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpu
b3RpZnlDb29raWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5j
ZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRp
b24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdo
QWNjdXJhY3lGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpkaWRDaGFuZ2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlcjo6ZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OnJlc2V0UGVybWlzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlcjo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNh
bmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90
aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZERlc3Ryb3lOb3RpZmljYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudDo6V2ViR2VvbG9jYXRpb25DbGllbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bV9jcHVMaW1pdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKwogMjAx
Ny0wOS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGll
bnQncyBwYWdlRGlkU2Nyb2xsCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3Vw
cGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50
TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50
cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOwog
ICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIGNv
bnN0IGNoYXIqIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjoKICAgICByZXR1cm4gIkxlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlciI7CiB9CiAKLUxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cjo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNz
KQorTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIoQ2hpbGRQcm9jZXNzJiBjaGlsZFByb2Nlc3MpCiAgICAgOiBtX2NoaWxkUHJvY2VzcyhjaGls
ZFByb2Nlc3MpCiB7Ci0gICAgbV9jaGlsZFByb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICp0aGlzKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhp
cyk7CiB9CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNzcs
MTIgKzc3LDEyIEBAIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZW1vdmUKIAog
dm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjpTdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkp
OworICAgIG1fY2hpbGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OkxlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpTdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpOwog
fQogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3RvcExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0b3BMb2FkaW5nKGN1c3RvbVBy
b3RvY29sSUQpLCAwKTsKKyAgICBtX2NoaWxkUHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCks
IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyopOworICAgIGV4cGxpY2l0IExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcihDaGlsZFByb2Nlc3MmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVnaXN0ZXJQcm90b2NvbENsYXNzKCk7CiAKLSAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQ
cm9jZXNzOworICAgIENoaWxkUHJvY2VzcyYgbV9jaGlsZFByb2Nlc3M7CiAKICAgICB0eXBlZGVm
IEhhc2hNYXA8dWludDY0X3QsIEN1c3RvbVByb3RvY29sPiBDdXN0b21Qcm90b2NvbE1hcDsKICAg
ICBDdXN0b21Qcm90b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MiwxMCArNjIsMTAgQEAgY29uc3QgY2hhciogQXV0aGVudGljYXRpb25NYW5hZ2VyOjpz
dXBwbAogICAgIHJldHVybiAiQXV0aGVudGljYXRpb25NYW5hZ2VyIjsKIH0KIAotQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNz
KQorQXV0aGVudGljYXRpb25NYW5hZ2VyOjpBdXRoZW50aWNhdGlvbk1hbmFnZXIoQ2hpbGRQcm9j
ZXNzJiBwcm9jZXNzKQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKIH0KIAogdWludDY0X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFs
bGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFsbGVuZ2UpCkBAIC0xMjYsNyArMTI2
LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIGlmIChz
aG91bGRDb2FsZXNjZUNoYWxsZW5nZShwYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCks
IGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZnJhbWUtPmZy
YW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwgZnJhbWUtPnBh
Z2UoKS0+cGFnZUlEKCkpOwogfQogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAg
aWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHBhZ2VJRCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNo
YWxsZW5nZUlEKSk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCiB2b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRp
bmdEb3dubG9hZCYgcGVuZGluZ0Rvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIGlmIChzaG91bGRDb2FsZXNjZUNo
YWxsZW5nZShwYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQs
IGZyYW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOworICAgIG1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5
LDcgQEAgdXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbAogY2xhc3MgQXV0
aGVudGljYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKENoaWxkUHJvY2VzcyopOworICAg
IGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uTWFuYWdlcihDaGlsZFByb2Nlc3MmKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hp
bmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCi0gICAgQ2hpbGRQcm9jZXNzKiBtX3By
b2Nlc3M7CisgICAgQ2hpbGRQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBDaGFsbGVuZ2U+IG1fY2hhbGxlbmdlczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MDksMTMg
KzU4MDksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3Vs
ZCBwcm9iYWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRp
b24gaW5zdGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KLSAgICBSZWZQdHI8QVBJOjpTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKS0+c2Vj
dXJpdHlPcmlnaW4oKSk7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4gcmVxdWVzdCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Jl
YXRlUmVxdWVzdChnZW9sb2NhdGlvbklEKTsKKyAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gcmVxdWVz
dCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdChn
ZW9sb2NhdGlvbklEKTsKIAotICAgIGlmIChtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRoaXMsIGZyYW1lLCBvcmlnaW4uZ2V0KCksIHJlcXVl
c3QuZ2V0KCkpKQorICAgIGlmIChtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgcmVxdWVzdC5n
ZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqZnJhbWUsICpvcmlnaW4sICpyZXF1
ZXN0KSkKKyAgICBpZiAobV9wYWdlQ2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoKmZyYW1lLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5kZW55KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1bk9wZW5Q
YW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJp
dHlPcmlnaW4qLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5T3JpZ2lu
JiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2lu
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlP
cmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lG
b3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFNl
Y3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCopIHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTMsMTIgKzE5NTMsMTIgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAorICAgICAgICBib29sIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKHBl
cm1pc3Npb25SZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoJnBlcm1pc3Np
b25SZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVJQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDkgKzE4Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdp
biosIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSogcGVybWlzc2lvblJlcXVlc3Qp
IG92ZXJyaWRlCisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkg
ZmluYWwKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKHBlcm1pc3Npb25SZXF1ZXN0KSk7Cisg
ICAgICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gZ2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Q3JlYXRlKCZwZXJtaXNzaW9uUmVxdWVzdCkpOwogICAgICAgICB3ZWJraXRX
ZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KG1fd2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05f
UkVRVUVTVChnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAg
ICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxUPih0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgY2hhciogV2ViQ29v
a2llTWFuYWdlcjo6c3VwcGxlbWVudAogICAgIHJldHVybiAiV2ViQ29va2llTWFuYWdlciI7CiB9
CiAKLVdlYkNvb2tpZU1hbmFnZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9j
ZXNzKQorV2ViQ29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MmIHBy
b2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aEMKICAgICBWZWN0b3I8U3Ry
aW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywgaG9zdG5hbWVM
aXN0KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNrSUQp
LCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZUxpc3QsIGNhbGxiYWNrSUQpLCAw
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtODQs
NyArODQsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShQQUw6CiAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2ll
KGNvb2tpZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhj
YWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTQog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9uLCB0aW1lKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNh
bGxiYWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0QWxsQ29va2llcyhQQUwKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAg
ICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tp
ZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJ
RCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpA
QCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6
OlMKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vz
c2lvbi0+Z2V0Q29va2llcyh1cmwpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCks
IDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OnNldENvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENv
b2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUoUEFMOjpTZQogICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQog
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xMjYsMTMg
KzEyNiwxMyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTCiAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhj
b29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwg
MCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
cjo6bm90aWZ5Q29va2llc0RpZENoYW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Q29va2llc0RpZENoYW5nZShzZXNzaW9uSUQpLCAw
KTsKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpD
b29raWVzRGlkQ2hhbmdlKHNlc3Npb25JRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CkBAIC0xNTUsMTIgKzE1NSwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29r
aWVBY2NlCiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CiAK
ICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJh
Y2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxs
YmFja0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBj
YWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwbGF0Zm9ybUdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNyArNTQsNyBAQCBjbGFzcyBDaGlsZFByb2Nlc3M7CiBjbGFzcyBXZWJDb29raWVNYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIpOwogcHVibGljOgotICAgIFdlYkNvb2tpZU1hbmFnZXIo
Q2hpbGRQcm9jZXNzKik7CisgICAgV2ViQ29va2llTWFuYWdlcihDaGlsZFByb2Nlc3MmKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCkBAIC04OSw3ICs4OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpT
ZXNzaW9uSUQpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNz
aW9uSUQpOwogCi0gICAgQ2hpbGRQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgQ2hpbGRQcm9jZXNz
JiBtX3Byb2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMzcg
KzQ5LDM3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUdlb2xvY2F0aW9uSUQoKQogICAgIHJl
dHVybiB1bmlxdWVHZW9sb2NhdGlvbklEKys7CiB9CiAKLUdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdl
KiBwYWdlKQorR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFn
ZSkKIHsKIH0KIAotdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3Rh
cnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9j
YXRpb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGdl
b2xvY2F0aW9uLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1l
KCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZyYW1lLCAiSXQgaXMgbm90IHdlbGwgdW5k
ZXJzdG9vZCBpbiB3aGljaCBjYXNlcyB0aGUgR2VvbG9jYXRpb24gaXMgYWxpdmUgYWZ0ZXIgaXRz
IGZyYW1lIGdvZXMgYXdheS4gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiwgcGxlYXNlIGFkZCBh
IHRlc3QgY292ZXJpbmcgdGhpcyBjYXNlLiIpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAg
Z2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdlb2xvY2F0aW9uLnNl
dElzQWxsb3dlZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB1aW50NjRf
dCBnZW9sb2NhdGlvbklEID0gZ2VuZXJhdGVHZW9sb2NhdGlvbklEKCk7CiAKLSAgICBtX2dlb2xv
Y2F0aW9uVG9JRE1hcC5zZXQoZ2VvbG9jYXRpb24sIGdlb2xvY2F0aW9uSUQpOwotICAgIG1faWRU
b0dlb2xvY2F0aW9uTWFwLnNldChnZW9sb2NhdGlvbklELCBnZW9sb2NhdGlvbik7CisgICAgbV9n
ZW9sb2NhdGlvblRvSURNYXAuc2V0KCZnZW9sb2NhdGlvbiwgZ2VvbG9jYXRpb25JRCk7CisgICAg
bV9pZFRvR2VvbG9jYXRpb25NYXAuc2V0KGdlb2xvY2F0aW9uSUQsICZnZW9sb2NhdGlvbik7CiAK
ICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUp
OwogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0g
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lKGdlb2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSkpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpjYW5jZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQor
dm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdEZv
ckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKIHsKLSAgICB1aW50NjRfdCBn
ZW9sb2NhdGlvbklEID0gbV9nZW9sb2NhdGlvblRvSURNYXAudGFrZShnZW9sb2NhdGlvbik7Cisg
ICAgdWludDY0X3QgZ2VvbG9jYXRpb25JRCA9IG1fZ2VvbG9jYXRpb25Ub0lETWFwLnRha2UoJmdl
b2xvY2F0aW9uKTsKICAgICBpZiAoIWdlb2xvY2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5yZW1vdmUoZ2VvbG9jYXRpb25JRCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24g
MjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM5LDEwICszOCwxMCBA
QCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoV2ViUGFnZSopOworICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc3RhcnRSZXF1ZXN0Rm9yR2VvbG9j
YXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3RGb3JH
ZW9sb2NhdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZvaWQgc3RhcnRSZXF1ZXN0
Rm9yR2VvbG9jYXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKKyAgICB2b2lkIGNhbmNlbFJl
cXVlc3RGb3JHZW9sb2NhdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgYm9vbCBhbGxvd2VkKTsKIApAQCAtNTIsOSArNTEsNyBAQCBwcml2YXRlOgogICAgIElE
VG9HZW9sb2NhdGlvbk1hcCBtX2lkVG9HZW9sb2NhdGlvbk1hcDsKICAgICBHZW9sb2NhdGlvblRv
SURNYXAgbV9nZW9sb2NhdGlvblRvSURNYXA7CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAg
V2ViUGFnZSYgbV9wYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDUwICs0NSw1MCBAQCBjb25zdCBjaGFyKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OnN1cHBsCiAgICAgcmV0dXJuICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIiOwogfQogCi1XZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OldlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNz
KQorV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2Vz
cyYgcHJvY2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewotICAgIG1fcHJvY2Vzcy0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3RlcldlYlBh
Z2UoV2ViUGFnZSogcGFnZSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpyZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKICAgICBib29sIHdhc1VwZGF0aW5nID0gaXNVcGRhdGlu
ZygpOwogCi0gICAgbV9wYWdlU2V0LmFkZChwYWdlKTsKKyAgICBtX3BhZ2VTZXQuYWRkKCZwYWdl
KTsKIAogICAgIGlmICghd2FzVXBkYXRpbmcpCi0gICAgICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OlN0YXJ0VXBkYXRpbmcoKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
U3RhcnRVcGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnVu
cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSYgcGFnZSkKIHsKICAgICBib29sIGhpZ2hBY2N1
cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKIAotICAgIG1fcGFnZVNl
dC5yZW1vdmUocGFnZSk7Ci0gICAgbV9oaWdoQWNjdXJhY3lQYWdlU2V0LnJlbW92ZShwYWdlKTsK
KyAgICBtX3BhZ2VTZXQucmVtb3ZlKCZwYWdlKTsKKyAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQu
cmVtb3ZlKCZwYWdlKTsKIAogICAgIGlmICghaXNVcGRhdGluZygpKQotICAgICAgICBtX3Byb2Nl
c3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7CisgICAgICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOwogICAgIGVsc2UgewogICAgICAgICBib29s
IGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCA9IGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpOwog
ICAgICAgICBpZiAoaGlnaEFjY3VyYWN5V2FzRW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpCi0gICAgICAgICAgICBtX3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVI
aWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CisgICAgICAgICAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJh
Y3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UqIHBhZ2UsIGJvb2wg
ZW5hYmxlZCkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJh
Y3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBib29sIGhpZ2hB
Y2N1cmFjeVdhc0VuYWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKIAogICAgIGlmIChl
bmFibGVkKQotICAgICAgICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKHBhZ2UpOworICAgICAg
ICBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuYWRkKCZwYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1f
aGlnaEFjY3VyYWN5UGFnZVNldC5yZW1vdmUocGFnZSk7CisgICAgICAgIG1faGlnaEFjY3VyYWN5
UGFnZVNldC5yZW1vdmUoJnBhZ2UpOwogCiAgICAgYm9vbCBoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQgPSBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKTsKICAgICBpZiAoaGlnaEFjY3VyYWN5V2Fz
RW5hYmxlZCAhPSBoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpCi0gICAgICAgIG1fcHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRC
ZUVuYWJsZWQpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVI
aWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpEYXRhJiBkYXRhKQpAQCAtOTgsOCArOTgsNyBAQCB2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zCiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+
PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJQYWdlQ29weS5zaXplKCk7ICsraSkgewot
ICAgICAgICBXZWJQYWdlKiBwYWdlID0gd2ViUGFnZUNvcHlbaV0uZ2V0KCk7CisgICAgZm9yIChh
dXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkp
CiAgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2Uo
KSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbi5nZXQoKSk7CiAgICAgfQpAQCAtMTEyLDEyICsx
MTEsMTEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldAogewogI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKICAgICAvLyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBz
dHJpbmcuCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yID0gR2VvbG9jYXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIGVycm9y
TWVzc2FnZSk7CisgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9s
b2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4gd2ViUGFnZUNvcHk7CiAgICAgY29weVRvVmVjdG9yKG1f
cGFnZVNldCwgd2ViUGFnZUNvcHkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUGFn
ZUNvcHkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViUGFnZSogcGFnZSA9IHdlYlBhZ2VDb3B5
W2ldLmdldCgpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CiAgICAgICAg
IGlmIChwYWdlLT5jb3JlUGFnZSgpKQogICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVy
Ojpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJvck9jY3VycmVkKGVycm9yLmdldCgpKTsKICAg
ICB9CkBAIC0xMjksNyArMTI3LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZh
aWxUb0RldAogI2lmIFBMQVRGT1JNKElPUykKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpy
ZXNldFBlcm1pc3Npb25zKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnJlc2V0QWxsR2VvbG9jYXRpb25Q
ZXJtaXNzaW9ucygpOworICAgIG1fcHJvY2Vzcy5yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMoKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
OCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViR2VvbG9jYXRpb25NYW5hZ2VyX2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25NYW5h
Z2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgpAQCAtNDYsMTUgKzQ1LDE1IEBAIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIGV4cGxpY2l0IFdlYkdl
b2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsKLSAgICB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSosIGJvb2wpOworICAgIHZvaWQgcmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2UmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UmKTsK
KyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYsIGJvb2wpOwog
Ci0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKTsKIAogcHJpdmF0
ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjksMTEgKzY4LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CiAKLSAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OwogICAgIEhhc2hTZXQ8V2ViUGFnZSo+IG1fcGFnZVNldDsKICAgICBIYXNoU2V0PFdlYlBhZ2Uq
PiBtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uTWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlcl9oCi0jZGVmaW5lIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXJf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNyArNDAsNyBAQCBjbGFzcyBXZWJQcm9j
ZXNzOwogY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNz
U3VwcGxlbWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cihXZWJQcm9jZXNzKikgeyB9CisgICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cihXZWJQcm9jZXNzJikgeyB9CiAgICAgdmlydHVhbCB+V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cigpIHsgfQogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CkBAIC02
MSw1ICs2MCwzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTEgQEAgY29uc3QgY2hhciogV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6c3VwcAogICAgIHJldHVybiAiV2ViTm90aWZpY2F0aW9uTWFuYWdlciI7CiB9
CiAKLVdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJv
Y2VzcyogcHJvY2VzcykKK1dlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKICNl
bmRpZgogfQogCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpzaG93KE5vdGlmaQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRk
KG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+
KCkpLml0ZXJhdG9yOwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0g
ICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3Rp
ZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5vdGlmaWNh
dGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRpcigpLCBu
b3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+
Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWco
KSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNzAsNyArMTcwLDcgQEAg
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aQogICAgIGlmICghbm90aWZp
Y2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2FuY2VsTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xl
YXJOb3RpZmkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZp
Y2F0aW9uSURzID0gaXQtPnZhbHVlOwotICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMo
bm90aWZpY2F0aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90
aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdlSUQoKSk7CiAgICAgc2l6ZV90
IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tgog
CiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5yZW1vdmUobm90aWZpY2F0aW9uSUQpOwogICAgIHJl
bW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24pOwotICAgIG1fcHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklE
KSwgcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViTm90aWZpY2F0aW9uTWFuYWdlcl9oCi0jZGVmaW5lIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtNDgsNyAr
NDcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6
IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5hZ2VyKTsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MqKTsK
KyAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+
V2ViTm90aWZpY2F0aW9uTWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBs
ZW1lbnROYW1lKCk7CkBAIC04NCw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVO
b3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcCh1aW50NjRfdCBub3RpZmljYXRpb25JRCwgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKik7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsK
KyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4sIHVpbnQ2
NF90PiBOb3RpZmljYXRpb25NYXA7CkBAIC0xMDEsNSArMTAwLDMgQEAgcHJpdmF0ZToKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzAsMTQgKzcwLDE0IEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9u
Q2xpZW4KICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQog
ewotICAgIG1fcGFnZS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFy
dFJlcXVlc3RGb3JHZW9sb2NhdGlvbihnZW9sb2NhdGlvbik7CisgICAgbV9wYWdlLmdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24o
Z2VvbG9jYXRpb24pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJt
aXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYgZ2VvbG9jYXRp
b24pCiB7Ci0gICAgbV9wYWdlLT5nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
LmNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlvbihnZW9sb2NhdGlvbik7CisgICAgbV9wYWdlLmdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdEZvckdlb2xv
Y2F0aW9uKGdlb2xvY2F0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkdlb2xvY2F0aW9uQ2xpZW50X2gKLSNkZWZpbmUg
V2ViR2VvbG9jYXRpb25DbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKQEAgLTM0LDcgKzMzLDcgQEAgY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnQgewogcHVibGljOgotICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UqIHBh
Z2UpCisgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICB7CiAgICAgfQpAQCAtNTAsMTMgKzQ5LDEwIEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
V2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIAotCi0gICAgV2ViUGFnZSogbV9wYWdl
OworICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25DbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzQsNyArMzM0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBh
ZwogICAgICwgbV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0
aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCiAj
aWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyPih0aGlzKSkKKyAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
bWFrZVVuaXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMp
KQogI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyIHsgc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI+KCp0aGlzKSB9CkBAIC00MjcsNyArNDI3LDcgQEAgV2ViUGFnZTo6
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0
ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQotICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFnZS5nZXQoKSwgbmV3IFdl
Ykdlb2xvY2F0aW9uQ2xpZW50KHRoaXMpKTsKKyAgICBXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRp
b25UbyhtX3BhZ2UuZ2V0KCksICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoKnRoaXMpKTsKICNl
bmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFdlYkNvcmU6OnByb3ZpZGVOb3Rp
ZmljYXRpb24obV9wYWdlLmdldCgpLCBuZXcgV2ViTm90aWZpY2F0aW9uQ2xpZW50KHRoaXMpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8QXBwbHlDb25z
dHJhaW50c0NhbGxiYWNrPiBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzOwogfTsK
IAotVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlBy
b2Nlc3MqIHByb2Nlc3MpCi0gICAgOiBtX3Byb2Nlc3MoKnByb2Nlc3MpCitVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykK
KyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogewogICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCShyZXZpc2lvbiAyMjE3MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwog
CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MqKTsKKyAgICBleHBsaWNpdCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJik7CiAgICAgflVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdp
dGhHZW9sb2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciBpbml0V2l0aEdlb2xvY2F0aW9uOmZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3RlbmVyIGluaXRXaXRoR2VvbG9jYXRpb246
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpdKToKKwogMjAxNy0wOS0w
NSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgc29tZSB1bnVzZWQgYml0cyBvZiBjb2RlIGFuZCByZXNvdXJjZXMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgb3ZlcnJpZGUgeyB9OworICAg
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikg
b3ZlcnJpZGUgeyB9OwogCiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIgCiB7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRpb247
CiB9Ci0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247
CistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiYpZ2VvbG9jYXRpb247CiBA
ZW5kCiAjZWxzZQogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIDogTlNP
YmplY3QgPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgpAQCAtNjcsNyArNjcsNyBAQCBAaW50
ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsCiBAcHJpdmF0ZQogICAgIFJlZlB0
cjxHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKIH0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRp
b246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246
KEdlb2xvY2F0aW9uJilnZW9sb2NhdGlvbjsKIEBlbmQKICNlbmRpZgogCkBAIC0xMDAsMjEgKzEw
MCwyMSBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9j
YXRpb24qIGdlb2xvY2F0aW9uKQordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBl
cm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6
KTsKICAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3Rvcjpz
ZWxlY3Rvcl0pIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Cisg
ICAgICAgIGdlb2xvY2F0aW9uLnNldElzQWxsb3dlZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0
aW9uLT5mcmFtZSgpOworICAgIEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1lKCk7CiAK
ICAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFs
c2UpOworICAgICAgICBnZW9sb2NhdGlvbi5zZXRJc0FsbG93ZWQoZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBHZW9sb2NhdGlvblBvc2l0aW9u
KiBXZWJHZW9sb2NhdGlvbkNsaWVuCiAjaWYgIVBMQVRGT1JNKElPUykKIEBpbXBsZW1lbnRhdGlv
biBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyCiAKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRp
b246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbgorLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjoo
R2VvbG9jYXRpb24mKWdlb2xvY2F0aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247
CisgICAgX2dlb2xvY2F0aW9uID0gJmdlb2xvY2F0aW9uOwogICAgIHJldHVybiBzZWxmOwogfQog
CkBAIC0yMDYsMTEgKzIwNiwxMSBAQCAtIChCT09MKXNob3VsZENsZWFyQ2FjaGUKIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0aWFsaXphdGlvbkxpc3Rl
bmVyCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb24K
Ky0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uJilnZW9sb2NhdGlvbgogewog
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYpCi0gICAgICAgIG1fZ2VvbG9j
YXRpb24gPSBnZW9sb2NhdGlvbjsKKyAgICAgICAgbV9nZW9sb2NhdGlvbiA9ICZnZW9sb2NhdGlv
bjsKICAgICByZXR1cm4gc2VsZjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjIxNzE5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU0LDcgKzE0
NTQsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOwogCiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQotICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKF9wcml2YXRlLT5wYWdl
LCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZikpOworICAgIFdlYkNvcmU6OnByb3ZpZGVH
ZW9sb2NhdGlvblRvKF9wcml2YXRlLT5wYWdlLCAqbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHNl
bGYpKTsKICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFdlYkNvcmU6OnBy
b3ZpZGVOb3RpZmljYXRpb24oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJOb3RpZmljYXRpb25DbGll
bnQoc2VsZikpOwpAQCAtOTk4NCw3ICs5OTg0LDcgQEAgLSAodm9pZClfZ2VvbG9jYXRpb25EaWRG
YWlsV2l0aE1lc3NhZ2U6KAogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAoX3By
aXZhdGUgJiYgX3ByaXZhdGUtPnBhZ2UpIHsKLSAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJy
b3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlv
bkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBhdXRv
IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oX3ByaXZhdGUtPnBhZ2UpLT5lcnJvck9jY3Vy
cmVkKGdlb2xvY2F0aW9FcnJvci5nZXQoKSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShHRU9M
T0NBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgJKHJldmlzaW9uIDIyMTcxOSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyX2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CkBAIC01NCw1ICs1MywzIEBAIHByaXZhdGU6CiAgICAgVUxP
TkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+IG1f
Z2VvbG9jYXRpb247CiB9OwotCi0jZW5kaWYgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcl9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjIxNzE5KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMjEsNyArMzEyMSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZy
YW0KICAgICBjb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZv
UHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7Ci0gICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCBuZXcgV2Vi
R2VvbG9jYXRpb25DbGllbnQodGhpcykpOworICAgIHByb3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFn
ZSwgKm5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCh0aGlzKSk7CiAKICAgICB1bnNpZ25lZCBsYXlv
dXRNaWxlc3RvbmVzID0gRGlkRmlyc3RMYXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQ7CiAgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91
dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKQEAgLTcyNDQsNyArNzI0NCw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Z2VvbG9jYXRpb25EaWRGYWlsV2l0aEUKICAgICBpZiAoRkFJTEVEKGVy
cm9yLT5sb2NhbGl6ZWREZXNjcmlwdGlvbigmZGVzY3JpcHRpb24pKSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvbkVycm9y
ID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5h
dmFpbGFibGUsIHRvU3RyaW5nKGRlc2NyaXB0aW9uKSk7CisgICAgYXV0byBnZW9sb2NhdGlvbkVy
cm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9u
VW5hdmFpbGFibGUsIHRvU3RyaW5nKGRlc2NyaXB0aW9uKSk7CiAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKG1fcGFnZSktPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb25FcnJvci5nZXQo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDI2
ICs3NSwyNiBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVuCiAgICAg
cmV0dXJuIGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9j
YXRpb24pCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlOwogICAgIGlm
IChGQUlMRUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKLSAgICAgICAg
Z2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIGdlb2xvY2F0aW9uLnNl
dElzQWxsb3dlZChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBDT01QdHI8
SVdlYlVJRGVsZWdhdGVQcml2YXRlMj4gdWlEZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5LCB1aURlbGVn
YXRlKTsKICAgICBpZiAoIXVpRGVsZWdhdGVQcml2YXRlMikgewotICAgICAgICBnZW9sb2NhdGlv
bi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgZ2VvbG9jYXRpb24uc2V0SXNBbGxvd2Vk
KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZyYW1lKiBmcmFtZSA9IGdl
b2xvY2F0aW9uLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLmZyYW1l
KCk7CiAgICAgQ09NUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZSgmZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkpKTsKLSAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gbGlz
dGVuZXIgPSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShnZW9s
b2NhdGlvbik7CisgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3Rl
bmVyID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoJmdlb2xv
Y2F0aW9uKTsKICAgICBIUkVTVUxUIGhyID0gdWlEZWxlZ2F0ZVByaXZhdGUyLT5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3QobV93ZWJWaWV3LmdldCgpLCBraXQoZnJhbWUpLCBvcmln
aW4uZ2V0KCksIGxpc3RlbmVyLmdldCgpKTsKICAgICBpZiAoaHIgIT0gRV9OT1RJTVBMKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAg
ICBnZW9sb2NhdGlvbi5zZXRJc0FsbG93ZWQoZmFsc2UpOwogfQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCShyZXZpc2lvbiAyMjE3MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNsaWVudF9oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9u
Q2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CkBAIC00MCwxNyArMzksMTUgQEAg
Y2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQwogcHVibGljOgogICAgIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZW9sb2Nh
dGlvbkRlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkg
ZmluYWw7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCBzdG9wVXBk
YXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5h
bCB7IH0KKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBm
aW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9s
b2NhdGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJD
b3JlOjpHZW9sb2NhdGlvbiopIHsgfQorICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29y
ZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWwgeyB9CiAKIHByaXZhdGU6CiAgICAgQ09NUHRy
PFdlYlZpZXc+IG1fd2ViVmlldzsKIH07Ci0KLSNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvbkNsaWVu
dF9oCg==
</data>
<flag name="review"
          id="340281"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>