<?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>169836</bug_id>
          
          <creation_ts>2017-03-17 16:03:48 -0700</creation_ts>
          <short_desc>Implement incoming webrtc data based on tracks</short_desc>
          <delta_ts>2017-03-17 19:36:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289187</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 16:03:48 -0700</bug_when>
    <thetext>Currently we are media stream based.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289188</commentid>
    <comment_count>1</comment_count>
      <attachid>304833</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 16:13:22 -0700</bug_when>
    <thetext>Created attachment 304833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289198</commentid>
    <comment_count>2</comment_count>
      <attachid>304833</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 16:38:39 -0700</bug_when>
    <thetext>Comment on attachment 304833
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:245
&gt; +    for (size_t cptr = 0; cptr &lt; m_pendingReceivers.size(); ++cptr) {
&gt; +        if (m_pendingReceivers[cptr]-&gt;track()-&gt;source().type() == RealtimeMediaSource::Type::Video) {
&gt; +            Ref&lt;RTCRtpReceiver&gt; receiver = m_pendingReceivers[cptr].copyRef();
&gt; +            m_pendingReceivers.remove(cptr);
&gt; +            Ref&lt;RealtimeIncomingVideoSource&gt; source = static_cast&lt;RealtimeIncomingVideoSource&amp;&gt;(receiver-&gt;track()-&gt;source());
&gt; +            return { WTFMove(receiver), WTFMove(source) };
&gt; +        }
&gt; +    }

It is worth adding a comment about why &quot;trackId&quot; isn&apos;t used in this case and filing a bug to fix it when possible.

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:261
&gt; +    for (size_t cptr = 0; cptr &lt; m_pendingReceivers.size(); ++cptr) {
&gt; +        if (m_pendingReceivers[cptr]-&gt;track()-&gt;source().type() == RealtimeMediaSource::Type::Audio) {
&gt; +            Ref&lt;RTCRtpReceiver&gt; receiver = m_pendingReceivers[cptr].copyRef();
&gt; +            m_pendingReceivers.remove(cptr);
&gt; +            Ref&lt;RealtimeIncomingAudioSource&gt; source = static_cast&lt;RealtimeIncomingAudioSource&amp;&gt;(receiver-&gt;track()-&gt;source());
&gt; +            return { WTFMove(receiver), WTFMove(source) };
&gt; +        }
&gt; +    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289206</commentid>
    <comment_count>3</comment_count>
      <attachid>304838</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 17:02:12 -0700</bug_when>
    <thetext>Created attachment 304838
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289207</commentid>
    <comment_count>4</comment_count>
      <attachid>304838</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 17:04:08 -0700</bug_when>
    <thetext>Comment on attachment 304838
Patch for landing

Rejecting attachment 304838 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 304838, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
file Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSource.h
patching file LayoutTests/ChangeLog
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/ChangeLog.rej
patching file LayoutTests/webrtc/video-with-receiver-expected.txt
patching file LayoutTests/webrtc/video-with-receiver.html
patching file LayoutTests/webrtc/video.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/3352837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289219</commentid>
    <comment_count>5</comment_count>
      <attachid>304841</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 17:40:57 -0700</bug_when>
    <thetext>Created attachment 304841
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289223</commentid>
    <comment_count>6</comment_count>
      <attachid>304843</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 18:55:50 -0700</bug_when>
    <thetext>Created attachment 304843
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289230</commentid>
    <comment_count>7</comment_count>
      <attachid>304843</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 19:36:27 -0700</bug_when>
    <thetext>Comment on attachment 304843
Patch for landing

Clearing flags on attachment: 304843

Committed r214132: &lt;http://trac.webkit.org/changeset/214132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289231</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 19:36:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304833</attachid>
            <date>2017-03-17 16:13:22 -0700</date>
            <delta_ts>2017-03-17 17:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169836-20170317161321.patch</filename>
            <type>text/plain</type>
            <size>30760</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiNzU0YmU5ZGM1NDll
ZTIzMTZlNjBkOGYzNDdmZTJmZTM2ZTEwMS4uMmMzZGMwMzg3MDY2ZTMzNmQ2NzBjMTIyZjM4MmIz
NzMzYmI4ZjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDE3LTAzLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgaW5jb21p
bmcgd2VicnRjIGRhdGEgYmFzZWQgb24gdHJhY2tzQ3VycgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2
ZXIuaHRtbAorCisgICAgICAgIENvbnN0cnVjdGluZyBpbmNvbWluZyB0cmFja3MgYmFzZWQgb24g
bGlid2VicnRjIE9uQWRkVHJhY2suCisgICAgICAgIENvbnN0cnVjdGluZyBpbmNvbWluZyBtZWRp
YSBzdHJlYW1zIGJhc2VkIG9uIGxpYndlYnJ0YyBPbkFkZFN0cmVhbS4KKyAgICAgICAgRmlyaW5n
IG9ubHkgYWRkc3RyZWFtIGlmIGxlZ2FjeSBBUEkgZmxhZyBpcyBvbi4KKworICAgICAgICBFbnN1
cmluZyB0aGF0IG1lZGlhIHN0cmVhbSBhbmQgbWVkaWEgc3RyZWFtIHRyYWNrcyByZWxhdGlvbnNo
aXAgaXMgc3RpbGwgY29ycmVjdGx5IGltcGxlbWVudGVkLgorICAgICAgICBGb3IgdGhhdCwgd2Ug
a2VlcCBhIG1hcCB0aGF0IHJlbGF0ZXMgbGlid2VicnRjIG1lZGlhIHN0cmVhbXMgd2l0aCBXZWJD
b3JlIG1lZGlhIHN0cmVhbXMuCisgICAgICAgIEFkZGluZyB0aGUgYWJpbGl0eSB0byBnZXQgYSBy
ZWNlaXZlciByZWxhdGVkIHRvIHRoZSB0cmFjayBvbiB0aGUgdHJhY2sgZXZlbnQuCisKKyAgICAg
ICAgSW1wbGVtZW50aW5nIHRoZSBwb3NzaWJpbGl0eSB0byBjcmVhdGUgYSB0cmFuc2NlaXZlciBh
aGVhZCBvZiB0cmFjayBhcnJpdmFsIHRpbWUuCisgICAgICAgIENyZWF0ZWQgdHJhbnNjZWl2ZXJz
IHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIGFueSByZWFsIHNvdXJjZSBhcmUga2VwdCBpbiB0aGUg
cGVlciBjb25uZWN0aW9uIGJhY2sgZW5kLgorICAgICAgICBXaGVuIGEgbGlid2VicnRjIHRyYWNr
IGlzIGFwcGVhcmluZywgaXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFjayBzb3VyY2Ugb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNjZWl2ZXIgYmFzZWQgb24gdHJhY2sgdHlwZS4KKworICAg
ICAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZW1wdHkgcmVhbCB0aW1lIHNvdXJjZXMg
YW5kIHNldCB0aGVpciBkYXRhIGxpYndlYnJ0YyB0cmFjayB3aGVuIGJlaW5nIGF2YWlsYWJsZS4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrRnJvbVBsYXRmb3JtKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjptZWRpYVN0cmVhbUZyb21SVENTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3Rl
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJl
bW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnJl
bW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpPbkFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpPblJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpPbkFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVkaWFTdHJlYW1UcmFjayk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRT
dHJlYW0pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1N0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRW1wdHlTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpZGVvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdWRpb1JlY2VpdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVtb3ZlUmVtb3Rl
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZTo6c2V0U291cmNlVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDoKKworMjAxNy0wMy0xNyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCBzZW5kaW5n
IG1lZGlhIGRhdGEgYXMgc29vbiBhcyBwZWVyIGNvbm5lY3Rpb24gaXMgY2xvc2VkCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MTMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRl
eCBlNDQ4ODZjZDI1NTg1NjAyYjRkM2E2NzQzYzA3NzY2MjU4OWNjZjE1Li4xZGM2MzUwZjhiNDZj
MTgyZjBlYmVmZjRkMmVkM2UxZjI1N2NlM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMjA3LDYgKzIwNywxMiBAQCB2
b2lkIE1lZGlhU3RyZWFtOjpkaWRSZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYg
dHJhY2tQcml2YXRlKQogICAgIGludGVybmFsUmVtb3ZlVHJhY2sodHJhY2tQcml2YXRlLmlkKCks
IFN0cmVhbU1vZGlmaWVyOjpQbGF0Zm9ybSk7CiB9CiAKK3ZvaWQgTWVkaWFTdHJlYW06OmFkZFRy
YWNrRnJvbVBsYXRmb3JtKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQoreworICAgIG1f
cHJpdmF0ZS0+YWRkVHJhY2soJnRyYWNrLT5wcml2YXRlVHJhY2soKSwgTWVkaWFTdHJlYW1Qcml2
YXRlOjpOb3RpZnlDbGllbnRPcHRpb246Ok5vdGlmeSk7CisgICAgaW50ZXJuYWxBZGRUcmFjayhX
VEZNb3ZlKHRyYWNrKSwgU3RyZWFtTW9kaWZpZXI6OlBsYXRmb3JtKTsKK30KKwogYm9vbCBNZWRp
YVN0cmVhbTo6aW50ZXJuYWxBZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFja1Rv
QWRkLCBTdHJlYW1Nb2RpZmllciBzdHJlYW1Nb2RpZmllcikKIHsKICAgICBhdXRvIHJlc3VsdCA9
IG1fdHJhY2tTZXQuYWRkKHRyYWNrVG9BZGQtPmlkKCksIFdURk1vdmUodHJhY2tUb0FkZCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmlu
ZGV4IDgxNmQ3MDZhM2NmNGRmZWJmYTBiYjdlZmFiYzRlNDRjYzM1ZTZhNjkuLmQxYzhmYzBmYzU5
ZTdlMWIxZjI5OWU4ZjQ2MmQ4OTM4YjcxMzVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTEwMiw2ICsxMDIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOwogICAgIHZvaWQgcmVtb3ZlT2Jz
ZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAorICAgIHZvaWQgYWRkVHJhY2tGcm9tUGxhdGZvcm0oUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYpOworCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBN
ZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmlu
ZGV4IDI2YTVmYTljMTNiNDk4MjYyNzI1MjdhOWYwZDNmZmM3ZTI4MDNhMjEuLmNkNzRmNjcwNjEx
YmI5YWM3NGExNTk5OTBjYWY1YzU2ZTg2OTkzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUlRDVHJh
Y2tFdmVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgogI2lu
Y2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3ZWJydGMvYmFzZS9waHlzaWNhbHNvY2tldHNl
cnZlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3Rv
cnkuaD4KICNpbmNsdWRlIDx3ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4K
QEAgLTM4MiwzNSArMzgzLDcxIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRyYWNrSWQod2VicnRj
OjpNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlJiB2aWRlb1RyYWNrKQogICAgIHJldHVybiBTdHJp
bmcodmlkZW9UcmFjay5pZCgpLmRhdGEoKSwgdmlkZW9UcmFjay5pZCgpLnNpemUoKSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZU1lZGlhU3RyZWFtVHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYgcmVtb3RlU291cmNlKQorTWVkaWFTdHJlYW0mIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
Om1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlKiBy
dGNTdHJlYW0pCiB7Ci0gICAgU3RyaW5nIHRyYWNrSWQgPSByZW1vdGVTb3VyY2UtPmlkKCk7Ci0g
ICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3RlU291cmNlKSwgV1RGTW92ZSh0cmFja0lk
KSkpOworICAgIGF1dG8gbWVkaWFTdHJlYW0gPSBtX3N0cmVhbXMuZW5zdXJlKHJ0Y1N0cmVhbSwg
W3RoaXNdIHsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgYXV0byBzdHJlYW1Qb2ludGVyID0gc3RyZWFtLnB0cigpOworICAgICAgICBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC5hZGRSZW1vdGVTdHJlYW0oV1RGTW92ZShzdHJlYW0pKTsK
KyAgICAgICAgcmV0dXJuIHN0cmVhbVBvaW50ZXI7CisgICAgfSk7CisgICAgcmV0dXJuICptZWRp
YVN0cmVhbS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6YWRkU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmIHN0cmVhbSkKK3ZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2UmIHJ0Y1N0cmVhbSkKIHsKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRy
YWNrczsKLSAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzdHJlYW0uR2V0VmlkZW9UcmFja3Mo
KSkgewotICAgICAgICBBU1NFUlQodmlkZW9UcmFjayk7Ci0gICAgICAgIFN0cmluZyBpZCA9IHRy
YWNrSWQoKnZpZGVvVHJhY2spOwotICAgICAgICBhdXRvIHJlbW90ZVNvdXJjZSA9IFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUodmlkZW9UcmFjayksIFdURk1vdmUo
aWQpKTsKLSAgICAgICAgdHJhY2tzLmFwcGVuZChjcmVhdGVNZWRpYVN0cmVhbVRyYWNrKCptX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKHJlbW90ZVNvdXJjZSkpKTsKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDTGVnYWN5QVBJRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBtZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVh
bSgmcnRjU3RyZWFtKTsKKyAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCku
ZmlyZUV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFt
RXZlbnQsIGZhbHNlLCBmYWxzZSwgJm1lZGlhU3RyZWFtKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2soY29uc3Qgd2VicnRjOjpSdHBSZWNlaXZlcklu
dGVyZmFjZSYgcnRjUmVjZWl2ZXIsIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPj4mIHJ0Y1N0cmVhbXMpCit7CisgICAgUmVm
UHRyPFJUQ1J0cFJlY2VpdmVyPiByZWNlaXZlcjsKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gcmVtb3RlU291cmNlOworCisgICAgYXV0byogcnRjVHJhY2sgPSBydGNSZWNlaXZlci50
cmFjaygpLmdldCgpOworCisgICAgc3dpdGNoIChydGNSZWNlaXZlci5tZWRpYV90eXBlKCkpIHsK
KyAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzogeworICAgICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBhdWRpb1RyYWNrID0gc3RhdGljX2Nh
c3Q8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlKj4ocnRjVHJhY2spOworICAgICAgICBhdXRv
IGF1ZGlvUmVjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5hdWRpb1JlY2VpdmVyKHRy
YWNrSWQoKnJ0Y1RyYWNrKSk7CisKKyAgICAgICAgcmVjZWl2ZXIgPSBXVEZNb3ZlKGF1ZGlvUmVj
ZWl2ZXIucmVjZWl2ZXIpOworICAgICAgICBhdWRpb1JlY2VpdmVyLnNvdXJjZS0+c2V0U291cmNl
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86IHsKKyAgICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4gdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0
PHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrKTsKKyAgICAgICAgYXV0byB2
aWRlb1JlY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQudmlkZW9SZWNlaXZlcih0cmFj
a0lkKCpydGNUcmFjaykpOworCisgICAgICAgIHJlY2VpdmVyID0gV1RGTW92ZSh2aWRlb1JlY2Vp
dmVyLnJlY2VpdmVyKTsKKyAgICAgICAgdmlkZW9SZWNlaXZlci5zb3VyY2UtPnNldFNvdXJjZVRy
YWNrKFdURk1vdmUodmlkZW9UcmFjaykpOworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZm9y
IChhdXRvJiBhdWRpb1RyYWNrIDogc3RyZWFtLkdldEF1ZGlvVHJhY2tzKCkpIHsKLSAgICAgICAg
QVNTRVJUKGF1ZGlvVHJhY2spOwotICAgICAgICBTdHJpbmcgaWQgPSB0cmFja0lkKCphdWRpb1Ry
YWNrKTsKLSAgICAgICAgYXV0byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGlkKSk7Ci0gICAgICAg
IHRyYWNrcy5hcHBlbmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1v
dGVTb3VyY2UpKSk7CiAgICAgfQogCi0gICAgYXV0byBuZXdTdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHRyYWNrcykpOwotICAgIG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBuZXdTdHJlYW0uY29weVJlZigp
KSk7CisgICAgYXV0byogdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKKyAgICBBU1NFUlQodHJh
Y2spOwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IHN0cmVhbXM7Ci0gICAgc3Ry
ZWFtcy5hcHBlbmQobmV3U3RyZWFtLmNvcHlSZWYoKSk7Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6
IG5ld1N0cmVhbS0+Z2V0VHJhY2tzKCkpCi0gICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS50cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIG51bGxwdHIsIHRyYWNrLmdldCgpLCBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtPj4oc3RyZWFtcyksIG51bGxwdHIpKTsKKyAgICBmb3IgKGF1dG8m
IHJ0Y1N0cmVhbSA6IHJ0Y1N0cmVhbXMpIHsKKyAgICAgICAgYXV0byYgbWVkaWFTdHJlYW0gPSBt
ZWRpYVN0cmVhbUZyb21SVENTdHJlYW0ocnRjU3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFt
cy5hcHBlbmQoJm1lZGlhU3RyZWFtKTsKKyAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2tGcm9t
UGxhdGZvcm0oKnRyYWNrKTsKKyAgICB9CisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29u
bmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnRy
YWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgV1RGTW92ZShyZWNlaXZlciksIHRyYWNrLCBXVEZNb3Zl
KHN0cmVhbXMpLCBudWxscHRyKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
cmVtb3ZlUmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmIHJ0Y1N0cmVh
bSkKK3sKKyAgICBhdXRvKiBtZWRpYVN0cmVhbSA9IG1fc3RyZWFtcy50YWtlKCZydGNTdHJlYW0p
OworICAgIGlmIChtZWRpYVN0cmVhbSkKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
cmVtb3ZlUmVtb3RlU3RyZWFtKG1lZGlhU3RyZWFtKTsKIH0KIAogdm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpPbkFkZFN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0
cmVhbUludGVyZmFjZT4gc3RyZWFtKQpAQCAtNDE5LDEzICs0NTYsMjggQEAgdm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpPbkFkZFN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpN
ZWRpYVN0cmVhbUkKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQoc3RyZWFtKTsKLSAgICAgICAgcHJvdGVj
dGVkVGhpcy0+YWRkU3RyZWFtKCpzdHJlYW0uZ2V0KCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5hZGRSZW1vdGVTdHJlYW0oKnN0cmVhbS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+KQordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpPblJlbW92ZVN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUlu
dGVyZmFjZT4gc3RyZWFtKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdHJlYW0gPSBXVEZNb3Zl
KHN0cmVhbSldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoc3RyZWFtKTsKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+cmVtb3ZlUmVtb3RlU3RyZWFtKCpzdHJlYW0uZ2V0KCkpOworICAgIH0pOworfQor
Cit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkVHJhY2socnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IHJlY2VpdmVyLCBjb25zdCBzdGQ6OnZl
Y3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4+JiBz
dHJlYW1zKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVjZWl2ZXIgPSBXVEZNb3ZlKHJlY2VpdmVyKSwgc3RyZWFtc10geworICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIEFTU0VSVChyZWNlaXZlcik7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlbW90
ZVRyYWNrKCpyZWNlaXZlciwgc3RyZWFtcyk7CisgICAgfSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURh
dGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYg
b3B0aW9ucykKQEAgLTQ4NSw2ICs1MzcsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OnN0b3AoKQogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+Q2xvc2UoKTsK
ICAgICBtX2JhY2tlbmQgPSBudWxscHRyOworICAgIG1fc3RyZWFtcy5jbGVhcigpOwogfQogCiB2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVuZWdvdGlhdGlvbk5lZWRlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKaW5kZXggNmU2Yzc2NThjZjk1Njli
NDMzMTc0ZWE1ZmMxYzM5MjgwYzM0MzhjMy4uNDM1NTkyNGEyZDE1OWEwNzIzZTNiODlmODRiNzE2
ZjJmODI3ZjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApA
QCAtODksNiArODksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgT25BZGRTdHJlYW0ocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+KSBmaW5hbDsKICAgICB2b2lk
IE9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlPikgZmluYWw7CiAgICAgdm9pZCBPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPikgZmluYWw7CisgICAgdm9pZCBPbkFkZFRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiwgY29u
c3Qgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRl
cmZhY2U+PiYpIGZpbmFsOwogICAgIHZvaWQgT25SZW5lZ290aWF0aW9uTmVlZGVkKCkgZmluYWw7
CiAgICAgdm9pZCBPbkljZUNvbm5lY3Rpb25DaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlKSBmaW5hbDsKICAgICB2b2lkIE9uSWNlR2F0aGVy
aW5nQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0
YXRlKSBmaW5hbDsKQEAgLTEwMSw5ICsxMDIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExv
Y2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKTsKICAgICB2b2lkIHNldFJl
bW90ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZyYpOwotICAgIHZv
aWQgYWRkU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKTsKKyAgICB2b2lkIGFk
ZFJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJik7CisgICAgdm9pZCBh
ZGRSZW1vdGVUcmFjayhjb25zdCB3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlJiwgY29uc3Qg
c3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZh
Y2U+PiYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1J
bnRlcmZhY2UmKTsKICAgICB2b2lkIGFkZERhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiYmKTsKIAorICAgIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbUZyb21SVENTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSopOworCiAg
ICAgaW50IEFkZFJlZigpIGNvbnN0IHsgcmVmKCk7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJl
ZkNvdW50KCkpOyB9CiAgICAgaW50IFJlbGVhc2UoKSBjb25zdCB7IGRlcmVmKCk7IHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJlZkNvdW50KCkpOyB9CiAKQEAgLTE2OSw2ICsxNzQsNyBAQCBwcml2
YXRlOgogICAgIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIG1fY3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CiAgICAgU2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNl
cnZlciBtX3NldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7CiAgICAgU2V0UmVtb3Rl
U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgbV9zZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25P
YnNlcnZlcjsKKyAgICBIYXNoTWFwPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UqLCBNZWRp
YVN0cmVhbSo+IG1fc3RyZWFtczsKIAogICAgIGJvb2wgbV9pc0luaXRpYXRvciB7IGZhbHNlIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAKaW5kZXggYjE4ZDQzZGQxYzkyMTZjOTJlYjBmODg4YTRkNzY0MmUyYzg4YmQwMS4u
MzljMjg1YzZjMGY0NmE2YWEwMjQ3YTE2M2U4MmVhMzE0ZDMwZWJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0xNzAs
NiArMTcwLDkgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU3RvcCgp
CiAgICAgICAgIHNvdXJjZS0+c3RvcCgpOwogCiAgICAgbV9lbmRwb2ludC0+c3RvcCgpOworCisg
ICAgbV9yZW1vdGVTdHJlYW1zLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nUmVjZWl2ZXJzLmNsZWFy
KCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0FkZEljZUNh
bmRpZGF0ZShSVENJY2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKQEAgLTIwNSwxNiArMjA4LDYyIEBA
IHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRWaWRlb1NvdXJjZShSZWY8
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291CiAgICAgbV92aWRlb1NvdXJjZXMuYXBwZW5kKFdURk1v
dmUoc291cmNlKSk7CiB9CiAKLVJlZjxSVENSdHBSZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKQorc3RhdGljIGlubGluZSBSZWY8UlRD
UnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKLSAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBjcmVhdGUgYSBzb3VyY2UgdGhhdCB3aWxsIGdldCBmdWVsZWQg
b25jZSB3ZSB3aWxsIHJlY2VpdmUgT25BZGRTdHJlYW0uCi0gICAgLy8gRm9yIHRoZSBtb21lbnQs
IHdlIGNyZWF0ZSBhbiBlbXB0eSBvbmUuCi0gICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSAo
dHJhY2tLaW5kID09ICJhdWRpbyIpID8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBTdHJpbmcodHJhY2tJ
ZCkpKSA6IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgU3RyaW5nKHRyYWNrSWQpKSk7Ci0gICAgYXV0byBy
ZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7Cisg
ICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3Jl
YXRlKFdURk1vdmUoc291cmNlKSk7CisgICAgYXV0byByZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFt
VHJhY2s6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHJlbW90ZVRyYWNrUHJpdmF0ZSkpOwogCiAg
ICAgcmV0dXJuIFJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShyZW1vdGVUcmFjaykpOwog
fQogCitzdGF0aWMgaW5saW5lIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVFbXB0eVNv
dXJjZShjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgU3RyaW5nJiYgdHJhY2tJZCkKK3sKKyAgICAv
LyBGSVhNRTogdHJhY2tLaW5kIHNob3VsZCBiZSBhbiBlbnVtZXJhdGlvbgorICAgIGlmICh0cmFj
a0tpbmQgPT0gImF1ZGlvIikKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOworICAgIEFTU0VSVCh0cmFj
a0tpbmQgPT0gInZpZGVvIik7CisgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOworfQorCitSZWY8UlRDUnRwUmVj
ZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCkKK3sKKyAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVl
ckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjcmVhdGVFbXB0eVNvdXJjZSh0
cmFja0tpbmQsIFN0cmluZyh0cmFja0lkKSkpOworICAgIG1fcGVuZGluZ1JlY2VpdmVycy5hcHBl
bmQocmVjZWl2ZXIuY29weVJlZigpKTsKKyAgICByZXR1cm4gcmVjZWl2ZXI7Cit9CisKK0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnZpZGVvUmVjZWl2ZXIoU3RyaW5nJiYgdHJhY2tJZCkKK3sKKyAgICAv
LyBGSVhNRTogQWRkIHRvIFZlY3RvciBhIHV0aWxpdHkgcm91dGluZSBmb3IgdGhhdCB0YWtlLW9y
LWNyZWF0ZSBwYXR0ZXJuLgorICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgbV9wZW5k
aW5nUmVjZWl2ZXJzLnNpemUoKTsgKytjcHRyKSB7CisgICAgICAgIGlmIChtX3BlbmRpbmdSZWNl
aXZlcnNbY3B0cl0tPnRyYWNrKCktPnNvdXJjZSgpLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbykgeworICAgICAgICAgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiByZWNl
aXZlciA9IG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRyXS5jb3B5UmVmKCk7CisgICAgICAgICAgICBt
X3BlbmRpbmdSZWNlaXZlcnMucmVtb3ZlKGNwdHIpOworICAgICAgICAgICAgUmVmPFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZT4gc291cmNlID0gc3RhdGljX2Nhc3Q8UmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlJj4ocmVjZWl2ZXItPnRyYWNrKCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6
Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBj
cmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOworICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2
ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKK30KKworTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9S
ZWNlaXZlcihTdHJpbmcmJiB0cmFja0lkKQoreworICAgIC8vIEZJWE1FOiBBZGQgdG8gVmVjdG9y
IGEgdXRpbGl0eSByb3V0aW5lIGZvciB0aGF0IHRha2Utb3ItY3JlYXRlIHBhdHRlcm4uCisgICAg
Zm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBtX3BlbmRpbmdSZWNlaXZlcnMuc2l6ZSgpOyAr
K2NwdHIpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRyXS0+dHJhY2soKS0+
c291cmNlKCkudHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKSB7Cisg
ICAgICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyID0gbV9wZW5kaW5nUmVjZWl2
ZXJzW2NwdHJdLmNvcHlSZWYoKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1JlY2VpdmVycy5yZW1v
dmUoY3B0cik7CisgICAgICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBz
b3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UmPihyZWNlaXZl
ci0+dHJhY2soKS0+c291cmNlKCkpOworICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZWNl
aXZlciksIFdURk1vdmUoc291cmNlKSB9OworICAgICAgICB9CisgICAgfQorICAgIGF1dG8gc291
cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92
ZSh0cmFja0lkKSk7CisgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNl
KCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc291cmNlLmNvcHlS
ZWYoKSk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUoc291cmNlKSB9
OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMpCiB7CiAgICAgcmV0
dXJuIG1fZW5kcG9pbnQtPmNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLCBvcHRpb25zKTsKQEAgLTI1
Niw2ICszMDUsMTggQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlm
eUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCiAgICAgbV9lbmRwb2ludC0+YWRkVHJh
Y2soKnNlbmRlci50cmFjaygpLCBzZW5kZXIubWVkaWFTdHJlYW1JZHMoKSk7CiB9CiAKK3ZvaWQg
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFT
dHJlYW0qIG1lZGlhU3RyZWFtKQoreworICAgIG1fcmVtb3RlU3RyZWFtcy5yZW1vdmVGaXJzdE1h
dGNoaW5nKFttZWRpYVN0cmVhbV0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICByZXR1cm4g
aXRlbS5nZXQoKSA9PSBtZWRpYVN0cmVhbTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFJlbW90ZVN0cmVhbShSZWY8TWVkaWFTdHJlYW0+JiYg
bWVkaWFTdHJlYW0pCit7CisgICAgbV9yZW1vdGVTdHJlYW1zLmFwcGVuZChXVEZNb3ZlKG1lZGlh
U3RyZWFtKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShM
SUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCmluZGV4IDg1NjAwNTNkZDQyNjYxMDEzNzZhNzI1ZDU1OTBkZDFmMTYwYWNiYjEu
LjI1OTg2MzkwMDY3MzIyMTU2MzBiZmQxMjUyOWI3NjY2NzY5ZjM5YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC0zOSw2ICsz
OSw4IEBAIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CiBjbGFzcyBSVENSdHBSZWNlaXZl
cjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVwb3J0Owor
Y2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOworY2xhc3MgUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3Mg
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOwogCkBAIC02Nyw5ICs2OSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudFJlbW90ZURlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVu
ZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeUFk
ZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgZmluYWw7CiAgICAgLy8gRklYTUU6IEFQSSB0byBpbXBs
ZW1lbnQgZm9yIHJlYWwKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3Rl
U3RyZWFtcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIHZvaWQgcmVwbGFjZVRy
YWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZv
aWQ+JiYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBT
dHJpbmcmKSBmaW5hbCB7IH0KQEAgLTgyLDE1ICs4MiwzNSBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2V0U3RhdHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQcm9taXNlJiwgUmVmPFJUQ1N0YXRzUmVw
b3J0PiYmKTsKICAgICB2b2lkIGdldFN0YXRzRmFpbGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYs
IEV4Y2VwdGlvbiYmKTsKIAorICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1v
dGVTdHJlYW1zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVTdHJlYW1zOyB9CisgICAg
dm9pZCByZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW0qKTsKKyAgICB2b2lkIGFkZFJlbW90
ZVN0cmVhbShSZWY8TWVkaWFTdHJlYW0+JiYpOworCisgICAgdm9pZCBub3RpZnlBZGRlZFRyYWNr
KFJUQ1J0cFNlbmRlciYpIGZpbmFsOworCisgICAgc3RydWN0IFZpZGVvUmVjZWl2ZXIgeworICAg
ICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOworICAgICAgICBSZWY8UmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7CisgICAgfTsKKyAgICBzdHJ1Y3QgQXVkaW9SZWNl
aXZlciB7CisgICAgICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gcmVjZWl2ZXI7CisgICAgICAgIFJl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IHNvdXJjZTsKKyAgICB9OworICAgIFZpZGVv
UmVjZWl2ZXIgdmlkZW9SZWNlaXZlcihTdHJpbmcmJiB0cmFja0lkKTsKKyAgICBBdWRpb1JlY2Vp
dmVyIGF1ZGlvUmVjZWl2ZXIoU3RyaW5nJiYgdHJhY2tJZCk7CisKIHByaXZhdGU6CiAgICAgUmVm
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxE
ZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25T
ZXQgeyBmYWxzZSB9OwogCisgICAgLy8gRklYTUU6IE1ha2UgbV9yZW1vdGVTdHJlYW1zIGEgVmVj
dG9yIG9mIFJlZi4KKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gbV9yZW1vdGVTdHJl
YW1zOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRl
cmZhY2U+PiBtX3BlbmRpbmdDYW5kaWRhdGVzOwogICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlPj4gbV9hdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZjxSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2U+PiBtX3ZpZGVvU291cmNlczsKICAgICBIYXNoTWFwPGNvbnN0
IERlZmVycmVkUHJvbWlzZSosIFJlZjxEZWZlcnJlZFByb21pc2U+PiBtX3N0YXRzUHJvbWlzZXM7
CisgICAgVmVjdG9yPFJlZjxSVENSdHBSZWNlaXZlcj4+IG1fcGVuZGluZ1JlY2VpdmVyczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKaW5kZXggN2RmMWE2MjMxNDk3YWZjYmY0ZmY5YTIwYzI1OGEyMDFmNDA0
Y2I2My4uZWNmZDc4ZTQzYTUzMmYyZGM2YTM2NzRmOTM3MTI3MTBjM2Q4NTRmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTEzMCw2ICsxMzAsMTUg
QEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
ICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOwogfQogCit2b2lkIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0cmFjaykKK3sKKyAgICBBU1NFUlQoIW1f
YXVkaW9UcmFjayk7CisgICAgQVNTRVJUKHRyYWNrKTsKKworICAgIG1fYXVkaW9UcmFjayA9IFdU
Rk1vdmUodHJhY2spOworICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgbV9hdWRp
b1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQogCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCmluZGV4IGM3
YWE1OGJlMzdiNzc0ZjRhNjY1NjM5NTQ0YzAyOTIxY2MwOTBiMzguLjdkZGJmMjIyMzAwZDZiOWZl
MjNjOTY5MThmNGVhNzI3NWQ2YzEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2UKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gY3JlYXRl
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmlu
ZyYmKTsKIAorICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7CisKIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDkyZWUx
OWVkNTJlYWY0NDY5OWFmZjgyZmI5NWM4NDZkNjlhMWFmM2UuLmViNTI2ZDE0NWIzZmU4MDg0MzI2
ZjIzYzA1MDYwMGJlZTZlZjMwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuY3BwCkBAIC04Miw2ICs4MiwxNyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICAgICAgICAgbV92aWRlb1RyYWNrLT5BZGRP
clVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKIH0KIAordm9pZCBSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYgdHJhY2spCit7CisgICAgQVNTRVJUKCFt
X3ZpZGVvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisKKyAgICBtX211dGVkID0gZmFsc2U7
CisgICAgbV92aWRlb1RyYWNrID0gdHJhY2s7CisgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQor
ICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZpZGVvU2lu
a1dhbnRzKCkpOworfQorCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEoKQogewogICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKaW5kZXggZWU1ZTgyYjdkY2Y1OTBlZDFmY2Yw
YzM0NDE0MmY1MGEwYjg5OWVkMi4uMjlkNzA3NjVjYjE5NDAzY2NiNDVhOWE3NTc2ODc0MzZlYWE0
OThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaApAQCAtNDks
NiArNDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CiAgICAgflJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZSgpIHsg
c3RvcFByb2R1Y2luZ0RhdGEoKTsgfQogCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmKTsKKwogcHJpdmF0ZToK
ICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYsIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzk4N2JiYTI3ZDkwZDNmYTFkNjMyOTA2NDk1YmRhYTgwNmU3Yjc0My4u
MjM4NTNjOGNjMTJkMmY4NjU0ODhhMzg5OWRlMzhmYTFlYjk2ZTQzMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE3LTAzLTE3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgaW5jb21pbmcgd2VicnRjIGRhdGEgYmFzZWQgb24gdHJhY2tzQ3Vy
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJy
dGMvdmlkZW8td2l0aC1yZWNlaXZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
YnJ0Yy92aWRlby13aXRoLXJlY2VpdmVyLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3dl
YnJ0Yy92aWRlby5odG1sLgorICAgICAgICAqIHdlYnJ0Yy92aWRlby5odG1sOgorCiAyMDE3LTAz
LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UgaXMgbm90IHN0b3BwaW5nIHByb3Blcmx5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2UzMWUxOTUxOTBkZTJmYzVjODg0ODNiZmRiZjA1ZmJmZmQ0ZDljYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIEJhc2ljIHZpZGVvIGV4Y2hhbmdlIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci5odG1sIGIv
TGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2ZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
Y2RkZTA0YWU1NjdiMDM0ZjExYzFjMjlkZTEwYjEwM2U4M2QzNTU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2ZXIuaHRtbApAQCAtMCwwICsx
LDY5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5UZXN0aW5nIGJhc2ljIHZpZGVvIGV4
Y2hhbmdlIGZyb20gb2ZmZXJlciB0byByZWNlaXZlcjwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5
PSIiPjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIgaGVp
Z2h0PSI0ODAiPjwvY2FudmFzPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CitjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
CisKK2Z1bmN0aW9uIHRlc3RJbWFnZSgpCit7CisgICAgY2FudmFzLndpZHRoID0gdmlkZW8udmlk
ZW9XaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisgICAgY2Fu
dmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgs
IGNhbnZhcy5oZWlnaHQpOworCisgICAgaW1hZ2VEYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJk
JykuZ2V0SW1hZ2VEYXRhKDEwLCAzMjUsIDI1MCwgMSk7CisgICAgZGF0YSA9IGltYWdlRGF0YS5k
YXRhOworCisgICAgdmFyIGluZGV4ID0gMjA7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleF0g
PCAxMDApOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5kZXggKyAxXSA8IDEwMCk7CisgICAgYXNz
ZXJ0X3RydWUoZGF0YVtpbmRleCArIDJdIDwgMTAwKTsKKworICAgIGluZGV4ID0gODA7CisgICAg
YXNzZXJ0X3RydWUoZGF0YVtpbmRleF0gPiAyMDApOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5k
ZXggKyAxXSA+IDIwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDJdID4gMjAwKTsK
KworICAgIGluZGV4ICs9IDgwOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5kZXhdID4gMjAwKTsK
KyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsgMV0gPiAyMDApOworICAgIGFzc2VydF90cnVl
KGRhdGFbaW5kZXggKyAyXSA8IDEwMCk7Cit9CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4gewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVk
aWFQZXJtaXNzaW9uKHRydWUpOworCisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHsgdmlkZW86IHRydWV9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy51c2VNb2NrUlRD
UGVlckNvbm5lY3Rpb25GYWN0b3J5KCJUd29SZWFsUGVlckNvbm5lY3Rpb25zIik7CisKKyAgICAg
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAg
ICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkU3RyZWFtKHN0cmVhbSk7CisgICAgICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgIHJlc29sdmUoc2Vjb25k
Q29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigidmlkZW8iKS5yZWNlaXZlci50cmFjayk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRp
bWVkIG91dCIpLCA1MDAwKTsKKyAgICAgICAgfSk7CisgICAgfSkudGhlbigodHJhY2spID0+IHsK
KyAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbmV3IE1lZGlhU3RyZWFtKFt0cmFja10pOworICAg
ICAgICByZXR1cm4gd2FpdEZvcig1MDApOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICBy
ZXR1cm4gdmlkZW8ucGxheSgpOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICB0ZXN0SW1h
Z2UoKTsKKyAgICB9KTsKK30sICJCYXNpYyB2aWRlbyBleGNoYW5nZSIpOworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sCmluZGV4IDVhYWQ1
ZGQ2MzliOWZjNzIyZjAwZmYzODk1NjYwZGM4YmI5YTUzODYuLjMzMTExZTc2OGM4MTBkOTM1NjM1
MTE2OGVlNmJlZTc3OTMxYmQ0ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sCkBAIC0xMyw3ICsxMyw2
IEBACiAgICAgICAgIDxzY3JpcHQ+CiB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
aWRlbyIpOwogY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotLy8g
RklYTUU6IFdlIHNob3VsZCB1c2UgdHJhY2tzCiAKIGZ1bmN0aW9uIHRlc3RJbWFnZSgpCiB7CkBA
IC01Miw3ICs1MSwxMyBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgICAgIGNy
ZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKICAgICAgICAgICAgICAgICBm
aXJzdENvbm5lY3Rpb24uYWRkU3RyZWFtKHN0cmVhbSk7CiAgICAgICAgICAgICB9LCAoc2Vjb25k
Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub25hZGRz
dHJlYW0gPSAoc3RyZWFtRXZlbnQpID0+IHsgcmVzb2x2ZShzdHJlYW1FdmVudC5zdHJlYW0pOyB9
OworICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRyYWNrRXZlbnQudHJhY2sg
aW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUodHJhY2tFdmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheSh0cmFja0V2ZW50LnN0
cmVhbXMpLCAiQXJyYXkuaXNBcnJheSgpIHNob3VsZCByZXR1cm4gdHJ1ZSIpCisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKE9iamVjdC5pc0Zyb3plbih0cmFja0V2ZW50LnN0cmVhbXMp
LCAiT2JqZWN0LmlzRnJvemVuKCkgc2hvdWxkIHJldHVybiB0cnVlIikKKyAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJU
ZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304838</attachid>
            <date>2017-03-17 17:02:12 -0700</date>
            <delta_ts>2017-03-17 17:40:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169836-20170317170211.patch</filename>
            <type>text/plain</type>
            <size>31683</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiNzU0YmU5ZGM1NDll
ZTIzMTZlNjBkOGYzNDdmZTJmZTM2ZTEwMS4uNDFlNDM3YmRhMzZkYjMyMWYwZDkwMzMxNmQ5YmQy
MmY4NTAxYmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDY0IEBACiAyMDE3LTAzLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgaW5jb21p
bmcgd2VicnRjIGRhdGEgYmFzZWQgb24gdHJhY2tzQ3VycgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVy
Lmh0bWwKKworICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgdHJhY2tzIGJhc2VkIG9uIGxp
YndlYnJ0YyBPbkFkZFRyYWNrLgorICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgbWVkaWEg
c3RyZWFtcyBiYXNlZCBvbiBsaWJ3ZWJydGMgT25BZGRTdHJlYW0uCisgICAgICAgIEZpcmluZyBv
bmx5IGFkZHN0cmVhbSBpZiBsZWdhY3kgQVBJIGZsYWcgaXMgb24uCisKKyAgICAgICAgRW5zdXJp
bmcgdGhhdCBtZWRpYSBzdHJlYW0gYW5kIG1lZGlhIHN0cmVhbSB0cmFja3MgcmVsYXRpb25zaGlw
IGlzIHN0aWxsIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4KKyAgICAgICAgRm9yIHRoYXQsIHdlIGtl
ZXAgYSBtYXAgdGhhdCByZWxhdGVzIGxpYndlYnJ0YyBtZWRpYSBzdHJlYW1zIHdpdGggV2ViQ29y
ZSBtZWRpYSBzdHJlYW1zLgorICAgICAgICBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gZ2V0IGEgcmVj
ZWl2ZXIgcmVsYXRlZCB0byB0aGUgdHJhY2sgb24gdGhlIHRyYWNrIGV2ZW50LgorCisgICAgICAg
IEltcGxlbWVudGluZyB0aGUgcG9zc2liaWxpdHkgdG8gY3JlYXRlIGEgdHJhbnNjZWl2ZXIgYWhl
YWQgb2YgdHJhY2sgYXJyaXZhbCB0aW1lLgorICAgICAgICBDcmVhdGVkIHRyYW5zY2VpdmVycyB0
aGF0IGFyZSBub3QgcmVsYXRlZCB0byBhbnkgcmVhbCBzb3VyY2UgYXJlIGtlcHQgaW4gdGhlIHBl
ZXIgY29ubmVjdGlvbiBiYWNrIGVuZC4KKyAgICAgICAgV2hlbiBhIGxpYndlYnJ0YyB0cmFjayBp
cyBhcHBlYXJpbmcsIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhY2sgc291cmNlIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIHRyYW5zY2VpdmVyIGJhc2VkIG9uIHRyYWNrIHR5cGUuCisKKyAgICAg
ICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGVtcHR5IHJlYWwgdGltZSBzb3VyY2VzIGFu
ZCBzZXQgdGhlaXIgZGF0YSBsaWJ3ZWJydGMgdHJhY2sgd2hlbiBiZWluZyBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFja0Zyb21QbGF0Zm9ybSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1v
dGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpyZW1v
dmVSZW1vdGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25BZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6T25BZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtVHJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkU3Ry
ZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUVtcHR5U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlbW92ZVJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFJlbW90ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg6CisKKzIwMTctMDMtMTcgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3Agc2VuZGluZyBt
ZWRpYSBkYXRhIGFzIHNvb24gYXMgcGVlciBjb25uZWN0aW9uIGlzIGNsb3NlZAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODEzCiAKLSAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KIAogICAgICAgICBTdG9wcGluZyBzZW5kaW5nIG9mIG1lZGlhIGRhdGEgYXMgc29vbiBh
cyB0aGUgcGVlciBjb25uZWN0aW9uIGlzIGNsb3NlZC4KICAgICAgICAgQnkgc3RvcHBpbmcgc2Vu
ZGluZyBhdCBzb3VyY2UgbGV2ZWwsIHRoaXMgbWF5IHN0b3AgYnkgYSBmZXcgZnJhbWVzL2NodW5r
cyBlYXJsaWVyIHRoYW4gYmVmb3JlLgpAQCAtMjMsNyArNzgsNyBAQAogICAgICAgICBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UgaXMgbm90IHN0b3BwaW5nIHByb3Blcmx5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MDcKIAotICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJs
c29uLgogCiAgICAgICAgIFRlc3Q6IHdlYnJ0Yy9yZWxlYXNlLWFmdGVyLWdldHRpbmctdHJhY2su
aHRtbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwCmluZGV4IGU0NDg4NmNkMjU1ODU2MDJiNGQzYTY3NDNjMDc3NjYyNTg5Y2NmMTUu
LjFkYzYzNTBmOGI0NmMxODJmMGViZWZmNGQyZWQzZTFmMjU3Y2UzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0yMDcs
NiArMjA3LDEyIEBAIHZvaWQgTWVkaWFTdHJlYW06OmRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgaW50ZXJuYWxSZW1vdmVUcmFjayh0cmFj
a1ByaXZhdGUuaWQoKSwgU3RyZWFtTW9kaWZpZXI6OlBsYXRmb3JtKTsKIH0KIAordm9pZCBNZWRp
YVN0cmVhbTo6YWRkVHJhY2tGcm9tUGxhdGZvcm0oUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2spCit7CisgICAgbV9wcml2YXRlLT5hZGRUcmFjaygmdHJhY2stPnByaXZhdGVUcmFjaygpLCBN
ZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KTsKKyAgICBpbnRl
cm5hbEFkZFRyYWNrKFdURk1vdmUodHJhY2spLCBTdHJlYW1Nb2RpZmllcjo6UGxhdGZvcm0pOwor
fQorCiBib29sIE1lZGlhU3RyZWFtOjppbnRlcm5hbEFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrVG9BZGQsIFN0cmVhbU1vZGlmaWVyIHN0cmVhbU1vZGlmaWVyKQogewogICAg
IGF1dG8gcmVzdWx0ID0gbV90cmFja1NldC5hZGQodHJhY2tUb0FkZC0+aWQoKSwgV1RGTW92ZSh0
cmFja1RvQWRkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmgKaW5kZXggODE2ZDcwNmEzY2Y0ZGZlYmZhMGJiN2VmYWJjNGU0NGNjMzVlNmE2
OS4uZDFjOGZjMGZjNTllN2UxYjFmMjk5ZThmNDYyZDg5MzhiNzEzNWEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMTAyLDYg
KzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAg
dm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCisgICAgdm9pZCBhZGRUcmFja0Zyb21Q
bGF0Zm9ybShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisKIHByb3RlY3RlZDoKICAgICBNZWRp
YVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1Zl
Y3RvciYpOwogICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
TWVkaWFTdHJlYW1Qcml2YXRlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggMjZhNWZhOWMxM2I0OTgyNjI3MjUyN2E5ZjBkM2ZmYzdlMjgwM2Ey
MS4uY2Q3NGY2NzA2MTFiYjlhYzc0YTE1OTk5MGNhZjVjNTZlODY5OTM4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJSVENUcmFja0V2ZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3Bo
eXNpY2Fsc29ja2V0c2VydmVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3AycC9iYXNlL2Jhc2ljcGFj
a2V0c29ja2V0ZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvci5oPgpAQCAtMzgyLDM1ICszODMsNzEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
dHJhY2tJZCh3ZWJydGM6Ok1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UmIHZpZGVvVHJhY2spCiAg
ICAgcmV0dXJuIFN0cmluZyh2aWRlb1RyYWNrLmlkKCkuZGF0YSgpLCB2aWRlb1RyYWNrLmlkKCku
c2l6ZSgpKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRl
TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJiByZW1vdGVTb3VyY2UpCitNZWRpYVN0cmVhbSYgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2UqIHJ0Y1N0cmVhbSkKIHsKLSAgICBTdHJpbmcgdHJhY2tJZCA9IHJlbW90ZVNv
dXJjZS0+aWQoKTsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQs
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShyZW1vdGVTb3VyY2UpLCBX
VEZNb3ZlKHRyYWNrSWQpKSk7CisgICAgYXV0byBtZWRpYVN0cmVhbSA9IG1fc3RyZWFtcy5lbnN1
cmUocnRjU3RyZWFtLCBbdGhpc10geworICAgICAgICBhdXRvIHN0cmVhbSA9IE1lZGlhU3RyZWFt
OjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgICAgICBhdXRvIHN0cmVhbVBvaW50ZXIgPSBzdHJlYW0ucHRy
KCk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFkZFJlbW90ZVN0cmVhbShXVEZN
b3ZlKHN0cmVhbSkpOworICAgICAgICByZXR1cm4gc3RyZWFtUG9pbnRlcjsKKyAgICB9KTsKKyAg
ICByZXR1cm4gKm1lZGlhU3RyZWFtLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjphZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYg
c3RyZWFtKQordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVTdHJlYW0od2Vi
cnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYgcnRjU3RyZWFtKQogewotICAgIE1lZGlhU3RyZWFt
VHJhY2tWZWN0b3IgdHJhY2tzOwotICAgIGZvciAoYXV0byYgdmlkZW9UcmFjayA6IHN0cmVhbS5H
ZXRWaWRlb1RyYWNrcygpKSB7Ci0gICAgICAgIEFTU0VSVCh2aWRlb1RyYWNrKTsKLSAgICAgICAg
U3RyaW5nIGlkID0gdHJhY2tJZCgqdmlkZW9UcmFjayk7Ci0gICAgICAgIGF1dG8gcmVtb3RlU291
cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1Ry
YWNrKSwgV1RGTW92ZShpZCkpOwotICAgICAgICB0cmFja3MuYXBwZW5kKGNyZWF0ZU1lZGlhU3Ry
ZWFtVHJhY2soKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlU291cmNlKSkpOworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENMZWdhY3lBUElFbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG1lZGlhU3RyZWFtID0gbWVkaWFTdHJl
YW1Gcm9tUlRDU3RyZWFtKCZydGNTdHJlYW0pOworICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCAmbWVkaWFTdHJlYW0pKTsKK30KKwor
dm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhjb25zdCB3ZWJydGM6
OlJ0cFJlY2VpdmVySW50ZXJmYWNlJiBydGNSZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0b3I8cnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgcnRjU3RyZWFt
cykKK3sKKyAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiByZW1vdGVTb3VyY2U7CisKKyAgICBhdXRvKiBydGNUcmFjayA9
IHJ0Y1JlY2VpdmVyLnRyYWNrKCkuZ2V0KCk7CisKKyAgICBzd2l0Y2ggKHJ0Y1JlY2VpdmVyLm1l
ZGlhX3R5cGUoKSkgeworICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgorICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOiB7CisgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IGF1ZGlvVHJh
Y2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2UqPihydGNUcmFjayk7
CisgICAgICAgIGF1dG8gYXVkaW9SZWNlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmF1
ZGlvUmVjZWl2ZXIodHJhY2tJZCgqcnRjVHJhY2spKTsKKworICAgICAgICByZWNlaXZlciA9IFdU
Rk1vdmUoYXVkaW9SZWNlaXZlci5yZWNlaXZlcik7CisgICAgICAgIGF1ZGlvUmVjZWl2ZXIuc291
cmNlLT5zZXRTb3VyY2VUcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzogeworICAgICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiB2aWRlb1RyYWNr
ID0gc3RhdGljX2Nhc3Q8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlKj4ocnRjVHJhY2spOwor
ICAgICAgICBhdXRvIHZpZGVvUmVjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC52aWRl
b1JlY2VpdmVyKHRyYWNrSWQoKnJ0Y1RyYWNrKSk7CisKKyAgICAgICAgcmVjZWl2ZXIgPSBXVEZN
b3ZlKHZpZGVvUmVjZWl2ZXIucmVjZWl2ZXIpOworICAgICAgICB2aWRlb1JlY2VpdmVyLnNvdXJj
ZS0+c2V0U291cmNlVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2sgOiBzdHJlYW0uR2V0QXVkaW9UcmFja3Mo
KSkgewotICAgICAgICBBU1NFUlQoYXVkaW9UcmFjayk7Ci0gICAgICAgIFN0cmluZyBpZCA9IHRy
YWNrSWQoKmF1ZGlvVHJhY2spOwotICAgICAgICBhdXRvIHJlbW90ZVNvdXJjZSA9IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUo
aWQpKTsKLSAgICAgICAgdHJhY2tzLmFwcGVuZChjcmVhdGVNZWRpYVN0cmVhbVRyYWNrKCptX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKHJlbW90ZVNvdXJjZSkpKTsKICAgICB9CiAKLSAgICBhdXRvIG5ld1N0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24o
KS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUodHJhY2tzKSk7Ci0gICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChNZWRpYVN0cmVhbUV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIG5ld1N0
cmVhbS5jb3B5UmVmKCkpKTsKKyAgICBhdXRvKiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwor
ICAgIEFTU0VSVCh0cmFjayk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gc3Ry
ZWFtczsKLSAgICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsKLSAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKLSAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwgdHJhY2su
Z2V0KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVsbHB0cikpOwor
ICAgIGZvciAoYXV0byYgcnRjU3RyZWFtIDogcnRjU3RyZWFtcykgeworICAgICAgICBhdXRvJiBt
ZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbShydGNTdHJlYW0uZ2V0KCkpOwor
ICAgICAgICBzdHJlYW1zLmFwcGVuZCgmbWVkaWFTdHJlYW0pOworICAgICAgICBtZWRpYVN0cmVh
bS5hZGRUcmFja0Zyb21QbGF0Zm9ybSgqdHJhY2spOworICAgIH0KKyAgICBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkudHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKHJlY2VpdmVyKSwg
dHJhY2ssIFdURk1vdmUoc3RyZWFtcyksIG51bGxwdHIpKTsKK30KKwordm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpyZW1vdmVSZW1vdGVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVy
ZmFjZSYgcnRjU3RyZWFtKQoreworICAgIGF1dG8qIG1lZGlhU3RyZWFtID0gbV9zdHJlYW1zLnRh
a2UoJnJ0Y1N0cmVhbSk7CisgICAgaWYgKG1lZGlhU3RyZWFtKQorICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5yZW1vdmVSZW1vdGVTdHJlYW0obWVkaWFTdHJlYW0pOwogfQogCiB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCkBAIC00MTksMTMgKzQ1NiwyOCBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSQogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVChzdHJlYW0pOwot
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRTdHJlYW0oKnN0cmVhbS5nZXQoKSk7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPmFkZFJlbW90ZVN0cmVhbSgqc3RyZWFtLmdldCgpKTsKICAgICB9KTsK
IH0KIAotdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbW92ZVN0cmVhbShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pCit2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0
cmVhbSA9IFdURk1vdmUoc3RyZWFtKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChzdHJlYW0pOwor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZW1vdmVSZW1vdGVTdHJlYW0oKnN0cmVhbS5nZXQoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25BZGRUcmFjayhy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gcmVjZWl2ZXIs
IGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFt
SW50ZXJmYWNlPj4mIHN0cmVhbXMpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZWNlaXZlciA9IFdURk1vdmUocmVjZWl2ZXIpLCBzdHJl
YW1zXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKHJlY2VpdmVyKTsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+YWRkUmVtb3RlVHJhY2soKnJlY2VpdmVyLCBzdHJlYW1zKTsKKyAgICB9KTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgUlRDRGF0
YUNoYW5uZWxJbml0JiBvcHRpb25zKQpAQCAtNDg1LDYgKzUzNyw3IEBAIHZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6c3RvcCgpCiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgbV9iYWNr
ZW5kLT5DbG9zZSgpOwogICAgIG1fYmFja2VuZCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1zLmNs
ZWFyKCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW5lZ290aWF0aW9u
TmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAppbmRleCA2
ZTZjNzY1OGNmOTU2OWI0MzMxNzRlYTVmYzFjMzkyODBjMzQzOGMzLi40MzU1OTI0YTJkMTU5YTA3
MjNlM2I4OWY4NGI3MTZmMmY4MjdmNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBPbkFkZFN0
cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZp
bmFsOwogICAgIHZvaWQgT25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
TWVkaWFTdHJlYW1JbnRlcmZhY2U+KSBmaW5hbDsKICAgICB2b2lkIE9uRGF0YUNoYW5uZWwocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsKKyAg
ICB2b2lkIE9uQWRkVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJ
bnRlcmZhY2U+LCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpN
ZWRpYVN0cmVhbUludGVyZmFjZT4+JikgZmluYWw7CiAgICAgdm9pZCBPblJlbmVnb3RpYXRpb25O
ZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSh3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpIGZpbmFsOwogICAgIHZv
aWQgT25JY2VHYXRoZXJpbmdDaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlR2F0aGVyaW5nU3RhdGUpIGZpbmFsOwpAQCAtMTAxLDkgKzEwMiwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJp
bmcmKTsKICAgICB2b2lkIHNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOwog
ICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3Ry
aW5nJik7Ci0gICAgdm9pZCBhZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYp
OworICAgIHZvaWQgYWRkUmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2Um
KTsKKyAgICB2b2lkIGFkZFJlbW90ZVRyYWNrKGNvbnN0IHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRl
cmZhY2UmLCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRp
YVN0cmVhbUludGVyZmFjZT4+Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVTdHJlYW0od2VicnRj
OjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOwogICAgIHZvaWQgYWRkRGF0YUNoYW5uZWwocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYpOwogCisgICAgTWVk
aWFTdHJlYW0mIG1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlKik7CisKICAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IHsgZGVy
ZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KIApAQCAtMTY5LDYg
KzE3NCw3IEBAIHByaXZhdGU6CiAgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIg
bV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKICAgICBTZXRMb2NhbFNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsK
ICAgICBTZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Np
b25EZXNjcmlwdGlvbk9ic2VydmVyOworICAgIEhhc2hNYXA8d2VicnRjOjpNZWRpYVN0cmVhbUlu
dGVyZmFjZSosIE1lZGlhU3RyZWFtKj4gbV9zdHJlYW1zOwogCiAgICAgYm9vbCBtX2lzSW5pdGlh
dG9yIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCBiMThkNDNkZDFjOTIxNmM5MmViMGY4ODhhNGQ3
NjQyZTJjODhiZDAxLi44YjVkZTllZGY2MDQ3NWU2NjEyMDNlNmZiZWFhNzZlMWIyZmVkOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKQEAgLTE3MCw2ICsxNzAsOSBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9TdG9wKCkKICAgICAgICAgc291cmNlLT5zdG9wKCk7CiAKICAgICBtX2VuZHBvaW50
LT5zdG9wKCk7CisKKyAgICBtX3JlbW90ZVN0cmVhbXMuY2xlYXIoKTsKKyAgICBtX3BlbmRpbmdS
ZWNlaXZlcnMuY2xlYXIoKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlKQpAQCAtMjA1
LDE2ICsyMDgsNjQgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFZp
ZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3UKICAgICBtX3ZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZShzb3VyY2UpKTsKIH0KIAotUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpCitzdGF0aWMg
aW5saW5lIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291
cmNlKQogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNyZWF0ZSBhIHNvdXJjZSB0aGF0IHdp
bGwgZ2V0IGZ1ZWxlZCBvbmNlIHdlIHdpbGwgcmVjZWl2ZSBPbkFkZFN0cmVhbS4KLSAgICAvLyBG
b3IgdGhlIG1vbWVudCwgd2UgY3JlYXRlIGFuIGVtcHR5IG9uZS4KLSAgICBhdXRvIHJlbW90ZVRy
YWNrUHJpdmF0ZSA9ICh0cmFja0tpbmQgPT0gImF1ZGlvIikgPyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIs
IFN0cmluZyh0cmFja0lkKSkpIDogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBTdHJpbmcodHJhY2tJZCkp
KTsKLSAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCptX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1vdGVUcmFj
a1ByaXZhdGUpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNrUHJpdmF0ZSA9IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShzb3VyY2UpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNr
ID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUocmVtb3RlVHJhY2tQ
cml2YXRlKSk7CiAKICAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
bW90ZVRyYWNrKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IGNyZWF0ZUVtcHR5U291cmNlKGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBTdHJpbmcmJiB0cmFj
a0lkKQoreworICAgIC8vIEZJWE1FOiB0cmFja0tpbmQgc2hvdWxkIGJlIGFuIGVudW1lcmF0aW9u
CisgICAgaWYgKHRyYWNrS2luZCA9PSAiYXVkaW8iKQorICAgICAgICByZXR1cm4gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7Cisg
ICAgQVNTRVJUKHRyYWNrS2luZCA9PSAidmlkZW8iKTsKKyAgICByZXR1cm4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7Cit9CisK
K1JlZjxSVENSdHBSZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVSZWNlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0lkKQoreworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZv
clNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNyZWF0
ZUVtcHR5U291cmNlKHRyYWNrS2luZCwgU3RyaW5nKHRyYWNrSWQpKSk7CisgICAgbV9wZW5kaW5n
UmVjZWl2ZXJzLmFwcGVuZChyZWNlaXZlci5jb3B5UmVmKCkpOworICAgIHJldHVybiByZWNlaXZl
cjsKK30KKworTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcihTdHJpbmcmJiB0cmFj
a0lkKQoreworICAgIC8vIEZJWE1FOiBBZGQgdG8gVmVjdG9yIGEgdXRpbGl0eSByb3V0aW5lIGZv
ciB0aGF0IHRha2Utb3ItY3JlYXRlIHBhdHRlcm4uCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBi
ZSBzZWxlY3RpbmcgdGhlIHJlY2VpdmVyIGJhc2VkIG9uIHRyYWNrIGlkLgorICAgIGZvciAoc2l6
ZV90IGNwdHIgPSAwOyBjcHRyIDwgbV9wZW5kaW5nUmVjZWl2ZXJzLnNpemUoKTsgKytjcHRyKSB7
CisgICAgICAgIGlmIChtX3BlbmRpbmdSZWNlaXZlcnNbY3B0cl0tPnRyYWNrKCktPnNvdXJjZSgp
LnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbykgeworICAgICAgICAg
ICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiByZWNlaXZlciA9IG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRy
XS5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3BlbmRpbmdSZWNlaXZlcnMucmVtb3ZlKGNwdHIp
OworICAgICAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZT4gc291cmNlID0g
c3RhdGljX2Nhc3Q8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlJj4ocmVjZWl2ZXItPnRyYWNr
KCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBX
VEZNb3ZlKHNvdXJjZSkgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIHNvdXJjZSA9IFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJ
ZCkpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOwor
ICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKK30KKwor
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcihTdHJpbmcmJiB0cmFja0lkKQorewor
ICAgIC8vIEZJWE1FOiBBZGQgdG8gVmVjdG9yIGEgdXRpbGl0eSByb3V0aW5lIGZvciB0aGF0IHRh
a2Utb3ItY3JlYXRlIHBhdHRlcm4uCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBzZWxlY3Rp
bmcgdGhlIHJlY2VpdmVyIGJhc2VkIG9uIHRyYWNrIGlkLgorICAgIGZvciAoc2l6ZV90IGNwdHIg
PSAwOyBjcHRyIDwgbV9wZW5kaW5nUmVjZWl2ZXJzLnNpemUoKTsgKytjcHRyKSB7CisgICAgICAg
IGlmIChtX3BlbmRpbmdSZWNlaXZlcnNbY3B0cl0tPnRyYWNrKCktPnNvdXJjZSgpLnR5cGUoKSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbykgeworICAgICAgICAgICAgUmVmPFJU
Q1J0cFJlY2VpdmVyPiByZWNlaXZlciA9IG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRyXS5jb3B5UmVm
KCk7CisgICAgICAgICAgICBtX3BlbmRpbmdSZWNlaXZlcnMucmVtb3ZlKGNwdHIpOworICAgICAg
ICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gc291cmNlID0gc3RhdGljX2Nh
c3Q8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlJj4ocmVjZWl2ZXItPnRyYWNrKCktPnNvdXJj
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNv
dXJjZSkgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOworICAg
IGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlv
bi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOworICAgIHJldHVy
biB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
UlRDRGF0YUNoYW5uZWxJbml0JiBvcHRpb25zKQogewogICAgIHJldHVybiBtX2VuZHBvaW50LT5j
cmVhdGVEYXRhQ2hhbm5lbChsYWJlbCwgb3B0aW9ucyk7CkBAIC0yNTYsNiArMzA3LDE4IEBAIHZv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpub3RpZnlBZGRlZFRyYWNrKFJUQ1J0
cFNlbmRlciYgc2VuZGVyKQogICAgIG1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIudHJhY2so
KSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOwogfQogCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6cmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtKiBtZWRpYVN0cmVh
bSkKK3sKKyAgICBtX3JlbW90ZVN0cmVhbXMucmVtb3ZlRmlyc3RNYXRjaGluZyhbbWVkaWFTdHJl
YW1dKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0gbWVk
aWFTdHJlYW07CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlhU3RyZWFtPiYmIG1lZGlhU3RyZWFtKQorewor
ICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQoV1RGTW92ZShtZWRpYVN0cmVhbSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA4
NTYwMDUzZGQ0MjY2MTAxMzc2YTcyNWQ1NTkwZGQxZjE2MGFjYmIxLi4yNTk4NjM5MDA2NzMyMjE1
NjMwYmZkMTI1MjliNzY2Njc2OWYzOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMzksNiArMzksOCBAQCBjbGFzcyBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENTZXNz
aW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKK2NsYXNzIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTsKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTsKIGNs
YXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTsKIGNsYXNzIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTsKIApAQCAtNjcsOSArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFs
OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlw
dGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNl
bmRlciYpIGZpbmFsOwogICAgIC8vIEZJWE1FOiBBUEkgdG8gaW1wbGVtZW50IGZvciByZWFsCi0g
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB7IH07IH0KICAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbCB7IH0K
IAogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9
CkBAIC04MiwxNSArODIsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVk
KGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAgICAgdm9p
ZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlU3RyZWFtczsgfQorICAgIHZvaWQgcmVtb3ZlUmVtb3Rl
U3RyZWFtKE1lZGlhU3RyZWFtKik7CisgICAgdm9pZCBhZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlh
U3RyZWFtPiYmKTsKKworICAgIHZvaWQgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBTZW5kZXImKSBm
aW5hbDsKKworICAgIHN0cnVjdCBWaWRlb1JlY2VpdmVyIHsKKyAgICAgICAgUmVmPFJUQ1J0cFJl
Y2VpdmVyPiByZWNlaXZlcjsKKyAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZT4gc291cmNlOworICAgIH07CisgICAgc3RydWN0IEF1ZGlvUmVjZWl2ZXIgeworICAgICAgICBS
ZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOworICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlPiBzb3VyY2U7CisgICAgfTsKKyAgICBWaWRlb1JlY2VpdmVyIHZpZGVvUmVj
ZWl2ZXIoU3RyaW5nJiYgdHJhY2tJZCk7CisgICAgQXVkaW9SZWNlaXZlciBhdWRpb1JlY2VpdmVy
KFN0cmluZyYmIHRyYWNrSWQpOworCiBwcml2YXRlOgogICAgIFJlZjxMaWJXZWJSVENNZWRpYUVu
ZHBvaW50PiBtX2VuZHBvaW50OwogICAgIGJvb2wgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKIAor
ICAgIC8vIEZJWE1FOiBNYWtlIG1fcmVtb3RlU3RyZWFtcyBhIFZlY3RvciBvZiBSZWYuCisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IG1fcmVtb3RlU3RyZWFtczsKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPj4gbV9wZW5kaW5n
Q2FuZGlkYXRlczsKICAgICBWZWN0b3I8UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4+
IG1fYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlPj4gbV92aWRlb1NvdXJjZXM7CiAgICAgSGFzaE1hcDxjb25zdCBEZWZlcnJlZFByb21pc2Uq
LCBSZWY8RGVmZXJyZWRQcm9taXNlPj4gbV9zdGF0c1Byb21pc2VzOworICAgIFZlY3RvcjxSZWY8
UlRDUnRwUmVjZWl2ZXI+PiBtX3BlbmRpbmdSZWNlaXZlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCmlu
ZGV4IDdkZjFhNjIzMTQ5N2FmY2JmNGZmOWEyMGMyNThhMjAxZjQwNGNiNjMuLmVjZmQ3OGU0M2E1
MzJmMmRjNmEzNjc0ZjkzNzEyNzEwYzNkODU0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0xMzAsNiArMTMwLDE1IEBAIHZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAgICAgICAgIG1fYXVkaW9U
cmFjay0+UmVtb3ZlU2luayh0aGlzKTsKIH0KIAordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgdHJhY2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAg
IEFTU0VSVCh0cmFjayk7CisKKyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAg
ICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0
aGlzKTsKK30KIAogUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCBjN2FhNThiZTM3Yjc3NGY0YTY2
NTYzOTU0NGMwMjkyMWNjMDkwYjM4Li43ZGRiZjIyMjMwMGQ2YjlmZTIzYzk2OTE4ZjRlYTcyNzVk
NmMxMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC00
OCw2ICs0OCw4IEBAIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlLCBwcml2YXRlIHdlCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAKKyAgICB2b2lk
IHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYpOworCiBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAppbmRleCA5MmVlMTllZDUyZWFmNDQ2OTlhZmY4
MmZiOTVjODQ2ZDY5YTFhZjNlLi5lYjUyNmQxNDViM2ZlODA4NDMyNmYyM2MwNTA2MDBiZWU2ZWYz
MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAt
ODIsNiArODIsMTcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCiAgICAgICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMs
IHJ0Yzo6VmlkZW9TaW5rV2FudHMoKSk7CiB9CiAKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1Ry
YWNrSW50ZXJmYWNlPiYmIHRyYWNrKQoreworICAgIEFTU0VSVCghbV92aWRlb1RyYWNrKTsKKyAg
ICBBU1NFUlQodHJhY2spOworCisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fdmlkZW9UcmFj
ayA9IHRyYWNrOworICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgbV92aWRlb1Ry
YWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKK30KKwog
dm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
ICAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5oCmluZGV4IGVlNWU4MmI3ZGNmNTkwZWQxZmNmMGMzNDQxNDJmNTBhMGI4OTll
ZDIuLjI5ZDcwNzY1Y2IxOTQwM2NjYjQ1YTlhNzU3Njg3NDM2ZWFhNDk4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OwogICAgIH5SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UoKSB7IHN0b3BQcm9kdWNpbmdEYXRh
KCk7IH0KIAorICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJik7CisKIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmLCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM5
ODdiYmEyN2Q5MGQzZmExZDYzMjkwNjQ5NWJkYWE4MDZlN2I3NDMuLmVjYTY0ZWQzYzhlNWE0OGNh
ODcwMGNjZmYxNDRmYmVlNWQxMTFiMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsOSArMSwyMCBAQAorMjAxNy0wMy0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGluY29taW5nIHdlYnJ0YyBkYXRhIGJhc2VkIG9uIHRyYWNrc0N1cnIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTgzNgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHdlYnJ0Yy92aWRlby13aXRoLXJlY2Vp
dmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3ZpZGVvLXdpdGgtcmVj
ZWl2ZXIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwuCisg
ICAgICAgICogd2VicnRjL3ZpZGVvLmh0bWw6CisKIDIwMTctMDMtMTYgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZSBpcyBub3Qgc3RvcHBpbmcgcHJvcGVybHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTgwNwogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCiAKICAgICAgICAgKiB3
ZWJydGMvcmVsZWFzZS1hZnRlci1nZXR0aW5nLXRyYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAg
ICAgICAgICogd2VicnRjL3JlbGVhc2UtYWZ0ZXItZ2V0dGluZy10cmFjay5odG1sOiBBZGRlZC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZTMxZTE5NTE5MGRlMmZjNWM4ODQ4M2JmZGJmMDVmYmZmZDRkOWNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgQmFzaWMgdmlkZW8gZXhj
aGFuZ2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2Vp
dmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRjZGRlMDRhZTU2N2IwMzRmMTFjMWMyOWRlMTBiMTAzZTgzZDM1NTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci5odG1s
CkBAIC0wLDAgKzEsNjkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPlRlc3RpbmcgYmFz
aWMgdmlkZW8gZXhjaGFuZ2UgZnJvbSBvZmZlcmVyIHRvIHJlY2VpdmVyPC90aXRsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRl
byIgYXV0b3BsYXk9IiI+PC92aWRlbz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0
aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91
dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgordmlkZW8gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKK2NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKKworZnVuY3Rpb24gdGVzdEltYWdlKCkKK3sKKyAgICBjYW52YXMud2lkdGgg
PSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdo
dDsKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0
Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMTAsIDMyNSwgMjUwLCAxKTsKKyAgICBkYXRhID0g
aW1hZ2VEYXRhLmRhdGE7CisKKyAgICB2YXIgaW5kZXggPSAyMDsKKyAgICBhc3NlcnRfdHJ1ZShk
YXRhW2luZGV4XSA8IDEwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDFdIDwgMTAw
KTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsgMl0gPCAxMDApOworCisgICAgaW5kZXgg
PSA4MDsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4XSA+IDIwMCk7CisgICAgYXNzZXJ0X3Ry
dWUoZGF0YVtpbmRleCArIDFdID4gMjAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsg
Ml0gPiAyMDApOworCisgICAgaW5kZXggKz0gODA7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRl
eF0gPiAyMDApOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5kZXggKyAxXSA+IDIwMCk7CisgICAg
YXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDJdIDwgMTAwKTsKK30KKworcHJvbWlzZV90ZXN0KCh0
ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICByZXR1cm4gbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZX0pLnRoZW4oKHN0cmVhbSkgPT4g
eworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgaW50ZXJuYWxz
LnVzZU1vY2tSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkoIlR3b1JlYWxQZWVyQ29ubmVjdGlvbnMi
KTsKKworICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRTdHJlYW0oc3RyZWFtKTsKKyAg
ICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZShzZWNvbmRDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpLnJlY2VpdmVyLnRy
YWNrKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgICAgICB9KTsKKyAgICB9KS50aGVuKCh0
cmFjaykgPT4geworICAgICAgICB2aWRlby5zcmNPYmplY3QgPSBuZXcgTWVkaWFTdHJlYW0oW3Ry
YWNrXSk7CisgICAgICAgIHJldHVybiB3YWl0Rm9yKDUwMCk7CisgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgIHRlc3RJbWFnZSgpOworICAgIH0pOworfSwgIkJhc2ljIHZpZGVvIGV4Y2hhbmdlIik7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwK
aW5kZXggNWFhZDVkZDYzOWI5ZmM3MjJmMDBmZjM4OTU2NjBkYzhiYjlhNTM4Ni4uMzMxMTFlNzY4
YzgxMGQ5MzU2MzUxMTY4ZWU2YmVlNzc5MzFiZDRkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2VicnRjL3ZpZGVvLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwKQEAg
LTEzLDcgKzEzLDYgQEAKICAgICAgICAgPHNjcmlwdD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Ci0vLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSB0cmFja3MKIAogZnVuY3Rpb24gdGVzdElt
YWdlKCkKIHsKQEAgLTUyLDcgKzUxLDEzIEBAIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAg
ICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewogICAgICAg
ICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAg
IH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbmFkZHN0cmVhbSA9IChzdHJlYW1FdmVudCkgPT4geyByZXNvbHZlKHN0cmVhbUV2ZW50
LnN0cmVhbSk7IH07CisgICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0g
KHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJhY2tF
dmVudC50cmFjayBpbnN0YW5jZW9mIE1lZGlhU3RyZWFtVHJhY2spOworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnJlY2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwUmVj
ZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRy
YWNrRXZlbnQuc3RyZWFtcyksICJBcnJheS5pc0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIikK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZl
bnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96ZW4oKSBzaG91bGQgcmV0dXJuIHRydWUiKQorICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9
PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304841</attachid>
            <date>2017-03-17 17:40:57 -0700</date>
            <delta_ts>2017-03-17 18:55:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169836-20170317174056.patch</filename>
            <type>text/plain</type>
            <size>31425</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhkMjJjOTZkYjAyNjlh
YjhkZDNlYmQyYmZmYWMwMmUxOGViYTA5MS4uNzE4Mjc0MDE5NGQyMGNhNjc1MGU5NTk1NjFlOWZk
MGVhNjc0NjVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDY0IEBACiAyMDE3LTAzLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgaW5jb21p
bmcgd2VicnRjIGRhdGEgYmFzZWQgb24gdHJhY2tzQ3VycgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVy
Lmh0bWwKKworICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgdHJhY2tzIGJhc2VkIG9uIGxp
YndlYnJ0YyBPbkFkZFRyYWNrLgorICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgbWVkaWEg
c3RyZWFtcyBiYXNlZCBvbiBsaWJ3ZWJydGMgT25BZGRTdHJlYW0uCisgICAgICAgIEZpcmluZyBv
bmx5IGFkZHN0cmVhbSBpZiBsZWdhY3kgQVBJIGZsYWcgaXMgb24uCisKKyAgICAgICAgRW5zdXJp
bmcgdGhhdCBtZWRpYSBzdHJlYW0gYW5kIG1lZGlhIHN0cmVhbSB0cmFja3MgcmVsYXRpb25zaGlw
IGlzIHN0aWxsIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4KKyAgICAgICAgRm9yIHRoYXQsIHdlIGtl
ZXAgYSBtYXAgdGhhdCByZWxhdGVzIGxpYndlYnJ0YyBtZWRpYSBzdHJlYW1zIHdpdGggV2ViQ29y
ZSBtZWRpYSBzdHJlYW1zLgorICAgICAgICBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gZ2V0IGEgcmVj
ZWl2ZXIgcmVsYXRlZCB0byB0aGUgdHJhY2sgb24gdGhlIHRyYWNrIGV2ZW50LgorCisgICAgICAg
IEltcGxlbWVudGluZyB0aGUgcG9zc2liaWxpdHkgdG8gY3JlYXRlIGEgdHJhbnNjZWl2ZXIgYWhl
YWQgb2YgdHJhY2sgYXJyaXZhbCB0aW1lLgorICAgICAgICBDcmVhdGVkIHRyYW5zY2VpdmVycyB0
aGF0IGFyZSBub3QgcmVsYXRlZCB0byBhbnkgcmVhbCBzb3VyY2UgYXJlIGtlcHQgaW4gdGhlIHBl
ZXIgY29ubmVjdGlvbiBiYWNrIGVuZC4KKyAgICAgICAgV2hlbiBhIGxpYndlYnJ0YyB0cmFjayBp
cyBhcHBlYXJpbmcsIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhY2sgc291cmNlIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIHRyYW5zY2VpdmVyIGJhc2VkIG9uIHRyYWNrIHR5cGUuCisKKyAgICAg
ICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGVtcHR5IHJlYWwgdGltZSBzb3VyY2VzIGFu
ZCBzZXQgdGhlaXIgZGF0YSBsaWJ3ZWJydGMgdHJhY2sgd2hlbiBiZWluZyBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFja0Zyb21QbGF0Zm9ybSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1v
dGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpyZW1v
dmVSZW1vdGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25BZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6T25BZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtVHJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkU3Ry
ZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUVtcHR5U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlbW92ZVJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFJlbW90ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg6CisKKzIwMTctMDMtMTcgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3Agc2VuZGluZyBt
ZWRpYSBkYXRhIGFzIHNvb24gYXMgcGVlciBjb25uZWN0aW9uIGlzIGNsb3NlZAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODEzCiAKLSAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KIAogICAgICAgICBTdG9wcGluZyBzZW5kaW5nIG9mIG1lZGlhIGRhdGEgYXMgc29vbiBh
cyB0aGUgcGVlciBjb25uZWN0aW9uIGlzIGNsb3NlZC4KICAgICAgICAgQnkgc3RvcHBpbmcgc2Vu
ZGluZyBhdCBzb3VyY2UgbGV2ZWwsIHRoaXMgbWF5IHN0b3AgYnkgYSBmZXcgZnJhbWVzL2NodW5r
cyBlYXJsaWVyIHRoYW4gYmVmb3JlLgpAQCAtMjMsNyArNzgsNyBAQAogICAgICAgICBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UgaXMgbm90IHN0b3BwaW5nIHByb3Blcmx5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MDcKIAotICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJs
c29uLgogCiAgICAgICAgIFRlc3Q6IHdlYnJ0Yy9yZWxlYXNlLWFmdGVyLWdldHRpbmctdHJhY2su
aHRtbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwCmluZGV4IGU0NDg4NmNkMjU1ODU2MDJiNGQzYTY3NDNjMDc3NjYyNTg5Y2NmMTUu
LjFkYzYzNTBmOGI0NmMxODJmMGViZWZmNGQyZWQzZTFmMjU3Y2UzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0yMDcs
NiArMjA3LDEyIEBAIHZvaWQgTWVkaWFTdHJlYW06OmRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgaW50ZXJuYWxSZW1vdmVUcmFjayh0cmFj
a1ByaXZhdGUuaWQoKSwgU3RyZWFtTW9kaWZpZXI6OlBsYXRmb3JtKTsKIH0KIAordm9pZCBNZWRp
YVN0cmVhbTo6YWRkVHJhY2tGcm9tUGxhdGZvcm0oUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2spCit7CisgICAgbV9wcml2YXRlLT5hZGRUcmFjaygmdHJhY2stPnByaXZhdGVUcmFjaygpLCBN
ZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KTsKKyAgICBpbnRl
cm5hbEFkZFRyYWNrKFdURk1vdmUodHJhY2spLCBTdHJlYW1Nb2RpZmllcjo6UGxhdGZvcm0pOwor
fQorCiBib29sIE1lZGlhU3RyZWFtOjppbnRlcm5hbEFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrVG9BZGQsIFN0cmVhbU1vZGlmaWVyIHN0cmVhbU1vZGlmaWVyKQogewogICAg
IGF1dG8gcmVzdWx0ID0gbV90cmFja1NldC5hZGQodHJhY2tUb0FkZC0+aWQoKSwgV1RGTW92ZSh0
cmFja1RvQWRkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmgKaW5kZXggODE2ZDcwNmEzY2Y0ZGZlYmZhMGJiN2VmYWJjNGU0NGNjMzVlNmE2
OS4uZDFjOGZjMGZjNTllN2UxYjFmMjk5ZThmNDYyZDg5MzhiNzEzNWEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMTAyLDYg
KzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAg
dm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCisgICAgdm9pZCBhZGRUcmFja0Zyb21Q
bGF0Zm9ybShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisKIHByb3RlY3RlZDoKICAgICBNZWRp
YVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1Zl
Y3RvciYpOwogICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
TWVkaWFTdHJlYW1Qcml2YXRlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggMjZhNWZhOWMxM2I0OTgyNjI3MjUyN2E5ZjBkM2ZmYzdlMjgwM2Ey
MS4uY2Q3NGY2NzA2MTFiYjlhYzc0YTE1OTk5MGNhZjVjNTZlODY5OTM4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJSVENUcmFja0V2ZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL3Bo
eXNpY2Fsc29ja2V0c2VydmVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3AycC9iYXNlL2Jhc2ljcGFj
a2V0c29ja2V0ZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvci5oPgpAQCAtMzgyLDM1ICszODMsNzEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
dHJhY2tJZCh3ZWJydGM6Ok1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UmIHZpZGVvVHJhY2spCiAg
ICAgcmV0dXJuIFN0cmluZyh2aWRlb1RyYWNrLmlkKCkuZGF0YSgpLCB2aWRlb1RyYWNrLmlkKCku
c2l6ZSgpKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRl
TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJiByZW1vdGVTb3VyY2UpCitNZWRpYVN0cmVhbSYgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2UqIHJ0Y1N0cmVhbSkKIHsKLSAgICBTdHJpbmcgdHJhY2tJZCA9IHJlbW90ZVNv
dXJjZS0+aWQoKTsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQs
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShyZW1vdGVTb3VyY2UpLCBX
VEZNb3ZlKHRyYWNrSWQpKSk7CisgICAgYXV0byBtZWRpYVN0cmVhbSA9IG1fc3RyZWFtcy5lbnN1
cmUocnRjU3RyZWFtLCBbdGhpc10geworICAgICAgICBhdXRvIHN0cmVhbSA9IE1lZGlhU3RyZWFt
OjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgICAgICBhdXRvIHN0cmVhbVBvaW50ZXIgPSBzdHJlYW0ucHRy
KCk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFkZFJlbW90ZVN0cmVhbShXVEZN
b3ZlKHN0cmVhbSkpOworICAgICAgICByZXR1cm4gc3RyZWFtUG9pbnRlcjsKKyAgICB9KTsKKyAg
ICByZXR1cm4gKm1lZGlhU3RyZWFtLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjphZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYg
c3RyZWFtKQordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVTdHJlYW0od2Vi
cnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYgcnRjU3RyZWFtKQogewotICAgIE1lZGlhU3RyZWFt
VHJhY2tWZWN0b3IgdHJhY2tzOwotICAgIGZvciAoYXV0byYgdmlkZW9UcmFjayA6IHN0cmVhbS5H
ZXRWaWRlb1RyYWNrcygpKSB7Ci0gICAgICAgIEFTU0VSVCh2aWRlb1RyYWNrKTsKLSAgICAgICAg
U3RyaW5nIGlkID0gdHJhY2tJZCgqdmlkZW9UcmFjayk7Ci0gICAgICAgIGF1dG8gcmVtb3RlU291
cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZSh2aWRlb1Ry
YWNrKSwgV1RGTW92ZShpZCkpOwotICAgICAgICB0cmFja3MuYXBwZW5kKGNyZWF0ZU1lZGlhU3Ry
ZWFtVHJhY2soKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlU291cmNlKSkpOworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENMZWdhY3lBUElFbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG1lZGlhU3RyZWFtID0gbWVkaWFTdHJl
YW1Gcm9tUlRDU3RyZWFtKCZydGNTdHJlYW0pOworICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hZGRzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCAmbWVkaWFTdHJlYW0pKTsKK30KKwor
dm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhjb25zdCB3ZWJydGM6
OlJ0cFJlY2VpdmVySW50ZXJmYWNlJiBydGNSZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0b3I8cnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgcnRjU3RyZWFt
cykKK3sKKyAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiByZW1vdGVTb3VyY2U7CisKKyAgICBhdXRvKiBydGNUcmFjayA9
IHJ0Y1JlY2VpdmVyLnRyYWNrKCkuZ2V0KCk7CisKKyAgICBzd2l0Y2ggKHJ0Y1JlY2VpdmVyLm1l
ZGlhX3R5cGUoKSkgeworICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgorICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOiB7CisgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IGF1ZGlvVHJh
Y2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2UqPihydGNUcmFjayk7
CisgICAgICAgIGF1dG8gYXVkaW9SZWNlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmF1
ZGlvUmVjZWl2ZXIodHJhY2tJZCgqcnRjVHJhY2spKTsKKworICAgICAgICByZWNlaXZlciA9IFdU
Rk1vdmUoYXVkaW9SZWNlaXZlci5yZWNlaXZlcik7CisgICAgICAgIGF1ZGlvUmVjZWl2ZXIuc291
cmNlLT5zZXRTb3VyY2VUcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzogeworICAgICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiB2aWRlb1RyYWNr
ID0gc3RhdGljX2Nhc3Q8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlKj4ocnRjVHJhY2spOwor
ICAgICAgICBhdXRvIHZpZGVvUmVjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC52aWRl
b1JlY2VpdmVyKHRyYWNrSWQoKnJ0Y1RyYWNrKSk7CisKKyAgICAgICAgcmVjZWl2ZXIgPSBXVEZN
b3ZlKHZpZGVvUmVjZWl2ZXIucmVjZWl2ZXIpOworICAgICAgICB2aWRlb1JlY2VpdmVyLnNvdXJj
ZS0+c2V0U291cmNlVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2sgOiBzdHJlYW0uR2V0QXVkaW9UcmFja3Mo
KSkgewotICAgICAgICBBU1NFUlQoYXVkaW9UcmFjayk7Ci0gICAgICAgIFN0cmluZyBpZCA9IHRy
YWNrSWQoKmF1ZGlvVHJhY2spOwotICAgICAgICBhdXRvIHJlbW90ZVNvdXJjZSA9IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUo
aWQpKTsKLSAgICAgICAgdHJhY2tzLmFwcGVuZChjcmVhdGVNZWRpYVN0cmVhbVRyYWNrKCptX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKHJlbW90ZVNvdXJjZSkpKTsKICAgICB9CiAKLSAgICBhdXRvIG5ld1N0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24o
KS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUodHJhY2tzKSk7Ci0gICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChNZWRpYVN0cmVhbUV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIG5ld1N0
cmVhbS5jb3B5UmVmKCkpKTsKKyAgICBhdXRvKiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwor
ICAgIEFTU0VSVCh0cmFjayk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gc3Ry
ZWFtczsKLSAgICBzdHJlYW1zLmFwcGVuZChuZXdTdHJlYW0uY29weVJlZigpKTsKLSAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbmV3U3RyZWFtLT5nZXRUcmFja3MoKSkKLSAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENUcmFja0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciwgdHJhY2su
Z2V0KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PihzdHJlYW1zKSwgbnVsbHB0cikpOwor
ICAgIGZvciAoYXV0byYgcnRjU3RyZWFtIDogcnRjU3RyZWFtcykgeworICAgICAgICBhdXRvJiBt
ZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbShydGNTdHJlYW0uZ2V0KCkpOwor
ICAgICAgICBzdHJlYW1zLmFwcGVuZCgmbWVkaWFTdHJlYW0pOworICAgICAgICBtZWRpYVN0cmVh
bS5hZGRUcmFja0Zyb21QbGF0Zm9ybSgqdHJhY2spOworICAgIH0KKyAgICBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkudHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKHJlY2VpdmVyKSwg
dHJhY2ssIFdURk1vdmUoc3RyZWFtcyksIG51bGxwdHIpKTsKK30KKwordm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpyZW1vdmVSZW1vdGVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVy
ZmFjZSYgcnRjU3RyZWFtKQoreworICAgIGF1dG8qIG1lZGlhU3RyZWFtID0gbV9zdHJlYW1zLnRh
a2UoJnJ0Y1N0cmVhbSk7CisgICAgaWYgKG1lZGlhU3RyZWFtKQorICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5yZW1vdmVSZW1vdGVTdHJlYW0obWVkaWFTdHJlYW0pOwogfQogCiB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCkBAIC00MTksMTMgKzQ1NiwyOCBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSQogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVChzdHJlYW0pOwot
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRTdHJlYW0oKnN0cmVhbS5nZXQoKSk7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPmFkZFJlbW90ZVN0cmVhbSgqc3RyZWFtLmdldCgpKTsKICAgICB9KTsK
IH0KIAotdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbW92ZVN0cmVhbShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pCit2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBzdHJlYW0pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0
cmVhbSA9IFdURk1vdmUoc3RyZWFtKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChzdHJlYW0pOwor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZW1vdmVSZW1vdGVTdHJlYW0oKnN0cmVhbS5nZXQoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25BZGRUcmFjayhy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gcmVjZWl2ZXIs
IGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFt
SW50ZXJmYWNlPj4mIHN0cmVhbXMpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZWNlaXZlciA9IFdURk1vdmUocmVjZWl2ZXIpLCBzdHJl
YW1zXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKHJlY2VpdmVyKTsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+YWRkUmVtb3RlVHJhY2soKnJlY2VpdmVyLCBzdHJlYW1zKTsKKyAgICB9KTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgUlRDRGF0
YUNoYW5uZWxJbml0JiBvcHRpb25zKQpAQCAtNDg1LDYgKzUzNyw3IEBAIHZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6c3RvcCgpCiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgbV9iYWNr
ZW5kLT5DbG9zZSgpOwogICAgIG1fYmFja2VuZCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1zLmNs
ZWFyKCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW5lZ290aWF0aW9u
TmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAppbmRleCA2
ZTZjNzY1OGNmOTU2OWI0MzMxNzRlYTVmYzFjMzkyODBjMzQzOGMzLi40MzU1OTI0YTJkMTU5YTA3
MjNlM2I4OWY4NGI3MTZmMmY4MjdmNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBPbkFkZFN0
cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4pIGZp
bmFsOwogICAgIHZvaWQgT25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
TWVkaWFTdHJlYW1JbnRlcmZhY2U+KSBmaW5hbDsKICAgICB2b2lkIE9uRGF0YUNoYW5uZWwocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+KSBmaW5hbDsKKyAg
ICB2b2lkIE9uQWRkVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJ
bnRlcmZhY2U+LCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpN
ZWRpYVN0cmVhbUludGVyZmFjZT4+JikgZmluYWw7CiAgICAgdm9pZCBPblJlbmVnb3RpYXRpb25O
ZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSh3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpIGZpbmFsOwogICAgIHZv
aWQgT25JY2VHYXRoZXJpbmdDaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlR2F0aGVyaW5nU3RhdGUpIGZpbmFsOwpAQCAtMTAxLDkgKzEwMiwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJp
bmcmKTsKICAgICB2b2lkIHNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCgpOwog
ICAgIHZvaWQgc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3Ry
aW5nJik7Ci0gICAgdm9pZCBhZGRTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYp
OworICAgIHZvaWQgYWRkUmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2Um
KTsKKyAgICB2b2lkIGFkZFJlbW90ZVRyYWNrKGNvbnN0IHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRl
cmZhY2UmLCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRp
YVN0cmVhbUludGVyZmFjZT4+Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVTdHJlYW0od2VicnRj
OjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOwogICAgIHZvaWQgYWRkRGF0YUNoYW5uZWwocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYpOwogCisgICAgTWVk
aWFTdHJlYW0mIG1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlKik7CisKICAgICBpbnQgQWRkUmVmKCkgY29uc3QgeyByZWYoKTsgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IHsgZGVy
ZWYoKTsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVmQ291bnQoKSk7IH0KIApAQCAtMTY5LDYg
KzE3NCw3IEBAIHByaXZhdGU6CiAgICAgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIg
bV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsKICAgICBTZXRMb2NhbFNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyIG1fc2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjsK
ICAgICBTZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX3NldFJlbW90ZVNlc3Np
b25EZXNjcmlwdGlvbk9ic2VydmVyOworICAgIEhhc2hNYXA8d2VicnRjOjpNZWRpYVN0cmVhbUlu
dGVyZmFjZSosIE1lZGlhU3RyZWFtKj4gbV9zdHJlYW1zOwogCiAgICAgYm9vbCBtX2lzSW5pdGlh
dG9yIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCBiMThkNDNkZDFjOTIxNmM5MmViMGY4ODhhNGQ3
NjQyZTJjODhiZDAxLi44YjVkZTllZGY2MDQ3NWU2NjEyMDNlNmZiZWFhNzZlMWIyZmVkOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKQEAgLTE3MCw2ICsxNzAsOSBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9TdG9wKCkKICAgICAgICAgc291cmNlLT5zdG9wKCk7CiAKICAgICBtX2VuZHBvaW50
LT5zdG9wKCk7CisKKyAgICBtX3JlbW90ZVN0cmVhbXMuY2xlYXIoKTsKKyAgICBtX3BlbmRpbmdS
ZWNlaXZlcnMuY2xlYXIoKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmRvQWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlKQpAQCAtMjA1
LDE2ICsyMDgsNjQgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFZp
ZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3UKICAgICBtX3ZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZShzb3VyY2UpKTsKIH0KIAotUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpCitzdGF0aWMg
aW5saW5lIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291
cmNlKQogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNyZWF0ZSBhIHNvdXJjZSB0aGF0IHdp
bGwgZ2V0IGZ1ZWxlZCBvbmNlIHdlIHdpbGwgcmVjZWl2ZSBPbkFkZFN0cmVhbS4KLSAgICAvLyBG
b3IgdGhlIG1vbWVudCwgd2UgY3JlYXRlIGFuIGVtcHR5IG9uZS4KLSAgICBhdXRvIHJlbW90ZVRy
YWNrUHJpdmF0ZSA9ICh0cmFja0tpbmQgPT0gImF1ZGlvIikgPyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIs
IFN0cmluZyh0cmFja0lkKSkpIDogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBTdHJpbmcodHJhY2tJZCkp
KTsKLSAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCptX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1vdGVUcmFj
a1ByaXZhdGUpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNrUHJpdmF0ZSA9IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShzb3VyY2UpKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNr
ID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUocmVtb3RlVHJhY2tQ
cml2YXRlKSk7CiAKICAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
bW90ZVRyYWNrKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IGNyZWF0ZUVtcHR5U291cmNlKGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBTdHJpbmcmJiB0cmFj
a0lkKQoreworICAgIC8vIEZJWE1FOiB0cmFja0tpbmQgc2hvdWxkIGJlIGFuIGVudW1lcmF0aW9u
CisgICAgaWYgKHRyYWNrS2luZCA9PSAiYXVkaW8iKQorICAgICAgICByZXR1cm4gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7Cisg
ICAgQVNTRVJUKHRyYWNrS2luZCA9PSAidmlkZW8iKTsKKyAgICByZXR1cm4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7Cit9CisK
K1JlZjxSVENSdHBSZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVSZWNlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0lkKQoreworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZv
clNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNyZWF0
ZUVtcHR5U291cmNlKHRyYWNrS2luZCwgU3RyaW5nKHRyYWNrSWQpKSk7CisgICAgbV9wZW5kaW5n
UmVjZWl2ZXJzLmFwcGVuZChyZWNlaXZlci5jb3B5UmVmKCkpOworICAgIHJldHVybiByZWNlaXZl
cjsKK30KKworTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcihTdHJpbmcmJiB0cmFj
a0lkKQoreworICAgIC8vIEZJWE1FOiBBZGQgdG8gVmVjdG9yIGEgdXRpbGl0eSByb3V0aW5lIGZv
ciB0aGF0IHRha2Utb3ItY3JlYXRlIHBhdHRlcm4uCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBi
ZSBzZWxlY3RpbmcgdGhlIHJlY2VpdmVyIGJhc2VkIG9uIHRyYWNrIGlkLgorICAgIGZvciAoc2l6
ZV90IGNwdHIgPSAwOyBjcHRyIDwgbV9wZW5kaW5nUmVjZWl2ZXJzLnNpemUoKTsgKytjcHRyKSB7
CisgICAgICAgIGlmIChtX3BlbmRpbmdSZWNlaXZlcnNbY3B0cl0tPnRyYWNrKCktPnNvdXJjZSgp
LnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbykgeworICAgICAgICAg
ICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiByZWNlaXZlciA9IG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRy
XS5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3BlbmRpbmdSZWNlaXZlcnMucmVtb3ZlKGNwdHIp
OworICAgICAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZT4gc291cmNlID0g
c3RhdGljX2Nhc3Q8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlJj4ocmVjZWl2ZXItPnRyYWNr
KCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBX
VEZNb3ZlKHNvdXJjZSkgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIHNvdXJjZSA9IFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJ
ZCkpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOwor
ICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKK30KKwor
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcihTdHJpbmcmJiB0cmFja0lkKQorewor
ICAgIC8vIEZJWE1FOiBBZGQgdG8gVmVjdG9yIGEgdXRpbGl0eSByb3V0aW5lIGZvciB0aGF0IHRh
a2Utb3ItY3JlYXRlIHBhdHRlcm4uCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBzZWxlY3Rp
bmcgdGhlIHJlY2VpdmVyIGJhc2VkIG9uIHRyYWNrIGlkLgorICAgIGZvciAoc2l6ZV90IGNwdHIg
PSAwOyBjcHRyIDwgbV9wZW5kaW5nUmVjZWl2ZXJzLnNpemUoKTsgKytjcHRyKSB7CisgICAgICAg
IGlmIChtX3BlbmRpbmdSZWNlaXZlcnNbY3B0cl0tPnRyYWNrKCktPnNvdXJjZSgpLnR5cGUoKSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbykgeworICAgICAgICAgICAgUmVmPFJU
Q1J0cFJlY2VpdmVyPiByZWNlaXZlciA9IG1fcGVuZGluZ1JlY2VpdmVyc1tjcHRyXS5jb3B5UmVm
KCk7CisgICAgICAgICAgICBtX3BlbmRpbmdSZWNlaXZlcnMucmVtb3ZlKGNwdHIpOworICAgICAg
ICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gc291cmNlID0gc3RhdGljX2Nh
c3Q8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlJj4ocmVjZWl2ZXItPnRyYWNrKCktPnNvdXJj
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNv
dXJjZSkgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOworICAg
IGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlv
bi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOworICAgIHJldHVy
biB7IFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHNvdXJjZSkgfTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
UlRDRGF0YUNoYW5uZWxJbml0JiBvcHRpb25zKQogewogICAgIHJldHVybiBtX2VuZHBvaW50LT5j
cmVhdGVEYXRhQ2hhbm5lbChsYWJlbCwgb3B0aW9ucyk7CkBAIC0yNTYsNiArMzA3LDE4IEBAIHZv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpub3RpZnlBZGRlZFRyYWNrKFJUQ1J0
cFNlbmRlciYgc2VuZGVyKQogICAgIG1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIudHJhY2so
KSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOwogfQogCit2b2lkIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6cmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtKiBtZWRpYVN0cmVh
bSkKK3sKKyAgICBtX3JlbW90ZVN0cmVhbXMucmVtb3ZlRmlyc3RNYXRjaGluZyhbbWVkaWFTdHJl
YW1dKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0gbWVk
aWFTdHJlYW07CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlhU3RyZWFtPiYmIG1lZGlhU3RyZWFtKQorewor
ICAgIG1fcmVtb3RlU3RyZWFtcy5hcHBlbmQoV1RGTW92ZShtZWRpYVN0cmVhbSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA4
NTYwMDUzZGQ0MjY2MTAxMzc2YTcyNWQ1NTkwZGQxZjE2MGFjYmIxLi4yNTk4NjM5MDA2NzMyMjE1
NjMwYmZkMTI1MjliNzY2Njc2OWYzOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMzksNiArMzksOCBAQCBjbGFzcyBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENTZXNz
aW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKK2NsYXNzIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTsKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTsKIGNs
YXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTsKIGNsYXNzIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTsKIApAQCAtNjcsOSArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFs
OwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlw
dGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNl
bmRlciYpIGZpbmFsOwogICAgIC8vIEZJWE1FOiBBUEkgdG8gaW1wbGVtZW50IGZvciByZWFsCi0g
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB7IH07IH0KICAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbCB7IH0K
IAogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9
CkBAIC04MiwxNSArODIsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVk
KGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAgICAgdm9p
ZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlU3RyZWFtczsgfQorICAgIHZvaWQgcmVtb3ZlUmVtb3Rl
U3RyZWFtKE1lZGlhU3RyZWFtKik7CisgICAgdm9pZCBhZGRSZW1vdGVTdHJlYW0oUmVmPE1lZGlh
U3RyZWFtPiYmKTsKKworICAgIHZvaWQgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBTZW5kZXImKSBm
aW5hbDsKKworICAgIHN0cnVjdCBWaWRlb1JlY2VpdmVyIHsKKyAgICAgICAgUmVmPFJUQ1J0cFJl
Y2VpdmVyPiByZWNlaXZlcjsKKyAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZT4gc291cmNlOworICAgIH07CisgICAgc3RydWN0IEF1ZGlvUmVjZWl2ZXIgeworICAgICAgICBS
ZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOworICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlPiBzb3VyY2U7CisgICAgfTsKKyAgICBWaWRlb1JlY2VpdmVyIHZpZGVvUmVj
ZWl2ZXIoU3RyaW5nJiYgdHJhY2tJZCk7CisgICAgQXVkaW9SZWNlaXZlciBhdWRpb1JlY2VpdmVy
KFN0cmluZyYmIHRyYWNrSWQpOworCiBwcml2YXRlOgogICAgIFJlZjxMaWJXZWJSVENNZWRpYUVu
ZHBvaW50PiBtX2VuZHBvaW50OwogICAgIGJvb2wgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKIAor
ICAgIC8vIEZJWE1FOiBNYWtlIG1fcmVtb3RlU3RyZWFtcyBhIFZlY3RvciBvZiBSZWYuCisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IG1fcmVtb3RlU3RyZWFtczsKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPj4gbV9wZW5kaW5n
Q2FuZGlkYXRlczsKICAgICBWZWN0b3I8UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4+
IG1fYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlPj4gbV92aWRlb1NvdXJjZXM7CiAgICAgSGFzaE1hcDxjb25zdCBEZWZlcnJlZFByb21pc2Uq
LCBSZWY8RGVmZXJyZWRQcm9taXNlPj4gbV9zdGF0c1Byb21pc2VzOworICAgIFZlY3RvcjxSZWY8
UlRDUnRwUmVjZWl2ZXI+PiBtX3BlbmRpbmdSZWNlaXZlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCmlu
ZGV4IDdkZjFhNjIzMTQ5N2FmY2JmNGZmOWEyMGMyNThhMjAxZjQwNGNiNjMuLmVjZmQ3OGU0M2E1
MzJmMmRjNmEzNjc0ZjkzNzEyNzEwYzNkODU0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0xMzAsNiArMTMwLDE1IEBAIHZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAgICAgICAgIG1fYXVkaW9U
cmFjay0+UmVtb3ZlU2luayh0aGlzKTsKIH0KIAordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgdHJhY2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAg
IEFTU0VSVCh0cmFjayk7CisKKyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAg
ICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0
aGlzKTsKK30KIAogUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCBjN2FhNThiZTM3Yjc3NGY0YTY2
NTYzOTU0NGMwMjkyMWNjMDkwYjM4Li43ZGRiZjIyMjMwMGQ2YjlmZTIzYzk2OTE4ZjRlYTcyNzVk
NmMxMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC00
OCw2ICs0OCw4IEBAIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlLCBwcml2YXRlIHdlCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAKKyAgICB2b2lk
IHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYpOworCiBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAppbmRleCA5MmVlMTllZDUyZWFmNDQ2OTlhZmY4
MmZiOTVjODQ2ZDY5YTFhZjNlLi5lYjUyNmQxNDViM2ZlODA4NDMyNmYyM2MwNTA2MDBiZWU2ZWYz
MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAt
ODIsNiArODIsMTcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCiAgICAgICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMs
IHJ0Yzo6VmlkZW9TaW5rV2FudHMoKSk7CiB9CiAKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1Ry
YWNrSW50ZXJmYWNlPiYmIHRyYWNrKQoreworICAgIEFTU0VSVCghbV92aWRlb1RyYWNrKTsKKyAg
ICBBU1NFUlQodHJhY2spOworCisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fdmlkZW9UcmFj
ayA9IHRyYWNrOworICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgbV92aWRlb1Ry
YWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKK30KKwog
dm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
ICAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5oCmluZGV4IGVlNWU4MmI3ZGNmNTkwZWQxZmNmMGMzNDQxNDJmNTBhMGI4OTll
ZDIuLjI5ZDcwNzY1Y2IxOTQwM2NjYjQ1YTlhNzU3Njg3NDM2ZWFhNDk4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OwogICAgIH5SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UoKSB7IHN0b3BQcm9kdWNpbmdEYXRh
KCk7IH0KIAorICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJik7CisKIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmLCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE5
NTEwMmY0NTRlN2ZhNjE2ODU0YzYzNTNhY2Q1OGY0MDQyNTk0MDguLmIwY2NhOGRhYWFiMjc3ZDI5
NzM0MmIyMmUwMWNhYmU4MmM1MzBhZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGluY29taW5nIHdlYnJ0YyBkYXRhIGJhc2VkIG9uIHRyYWNrc0N1cnIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTgzNgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHdlYnJ0Yy92aWRlby13aXRoLXJlY2Vp
dmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3ZpZGVvLXdpdGgtcmVj
ZWl2ZXIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwuCisg
ICAgICAgICogd2VicnRjL3ZpZGVvLmh0bWw6CisKIDIwMTctMDMtMTYgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZSBpcyBub3Qgc3RvcHBpbmcgcHJvcGVybHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0
Yy92aWRlby13aXRoLXJlY2VpdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92
aWRlby13aXRoLXJlY2VpdmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTMxZTE5NTE5MGRl
MmZjNWM4ODQ4M2JmZGJmMDVmYmZmZDRkOWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCisKK1BBU1MgQmFzaWMgdmlkZW8gZXhjaGFuZ2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8td2l0aC1yZWNlaXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZGRlMDRhZTU2N2IwMzRmMTFj
MWMyOWRlMTBiMTAzZTgzZDM1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8td2l0aC1yZWNlaXZlci5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KyAgICAgICAgPHRpdGxlPlRlc3RpbmcgYmFzaWMgdmlkZW8gZXhjaGFuZ2UgZnJvbSBvZmZlcmVy
IHRvIHJlY2VpdmVyPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgYXV0b3BsYXk9IiI+PC92aWRlbz4KKyAgICAg
ICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+
CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgordmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKK2NhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKworZnVuY3Rpb24gdGVzdElt
YWdlKCkKK3sKKyAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZh
cy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQn
KS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisK
KyAgICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMTAs
IDMyNSwgMjUwLCAxKTsKKyAgICBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CisKKyAgICB2YXIgaW5k
ZXggPSAyMDsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4XSA8IDEwMCk7CisgICAgYXNzZXJ0
X3RydWUoZGF0YVtpbmRleCArIDFdIDwgMTAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4
ICsgMl0gPCAxMDApOworCisgICAgaW5kZXggPSA4MDsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2lu
ZGV4XSA+IDIwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDFdID4gMjAwKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsgMl0gPiAyMDApOworCisgICAgaW5kZXggKz0gODA7
CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleF0gPiAyMDApOworICAgIGFzc2VydF90cnVlKGRh
dGFbaW5kZXggKyAxXSA+IDIwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDJdIDwg
MTAwKTsKK30KKworcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7
CisKKyAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRl
bzogdHJ1ZX0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnVzZU1vY2tSVENQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoIlR3b1JlYWxQZWVyQ29ubmVjdGlvbnMiKTsKKworICAgICAgICAgICAgY3JlYXRlQ29ubmVj
dGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgIGZpcnN0Q29ubmVj
dGlvbi5hZGRTdHJlYW0oc3RyZWFtKTsKKyAgICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9u
KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShzZWNvbmRDb25uZWN0aW9uLmFkZFRyYW5z
Y2VpdmVyKCJ2aWRlbyIpLnJlY2VpdmVyLnRyYWNrKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwor
ICAgICAgICB9KTsKKyAgICB9KS50aGVuKCh0cmFjaykgPT4geworICAgICAgICB2aWRlby5zcmNP
YmplY3QgPSBuZXcgTWVkaWFTdHJlYW0oW3RyYWNrXSk7CisgICAgICAgIHJldHVybiB3YWl0Rm9y
KDUwMCk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7
CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIHRlc3RJbWFnZSgpOworICAgIH0pOworfSwg
IkJhc2ljIHZpZGVvIGV4Y2hhbmdlIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby5odG1sIGIvTGF5
b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwKaW5kZXggNWFhZDVkZDYzOWI5ZmM3MjJmMDBmZjM4
OTU2NjBkYzhiYjlhNTM4Ni4uMzMxMTFlNzY4YzgxMGQ5MzU2MzUxMTY4ZWU2YmVlNzc5MzFiZDRk
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwKQEAgLTEzLDcgKzEzLDYgQEAKICAgICAgICAgPHNjcmlw
dD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7CiBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0vLyBGSVhNRTogV2Ugc2hvdWxkIHVz
ZSB0cmFja3MKIAogZnVuY3Rpb24gdGVzdEltYWdlKCkKIHsKQEAgLTUyLDcgKzUxLDEzIEBAIHBy
b21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZp
cnN0Q29ubmVjdGlvbikgPT4gewogICAgICAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRT
dHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbmFkZHN0cmVhbSA9IChzdHJlYW1FdmVu
dCkgPT4geyByZXNvbHZlKHN0cmVhbUV2ZW50LnN0cmVhbSk7IH07CisgICAgICAgICAgICAgICAg
c2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X3RydWUodHJhY2tFdmVudC50cmFjayBpbnN0YW5jZW9mIE1lZGlhU3Ry
ZWFtVHJhY2spOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnJl
Y2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwUmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJheS5pc0Fy
cmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIikKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96ZW4o
KSBzaG91bGQgcmV0dXJuIHRydWUiKQorICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUw
MDApOwogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304843</attachid>
            <date>2017-03-17 18:55:50 -0700</date>
            <delta_ts>2017-03-17 19:36:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169836-20170317185549.patch</filename>
            <type>text/plain</type>
            <size>30896</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhkMjJjOTZkYjAyNjlh
YjhkZDNlYmQyYmZmYWMwMmUxOGViYTA5MS4uNWIxNTU3ZGY2NjdkZjFjOTc2ZTQxYWRlMzIxMTNi
ZWZlMjM5ZWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDE3LTAzLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgaW5jb21p
bmcgd2VicnRjIGRhdGEgYmFzZWQgb24gdHJhY2tzQ3VycgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy92aWRlby13aXRoLXJlY2VpdmVy
Lmh0bWwKKworICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgdHJhY2tzIGJhc2VkIG9uIGxp
YndlYnJ0YyBPbkFkZFRyYWNrLgorICAgICAgICBDb25zdHJ1Y3RpbmcgaW5jb21pbmcgbWVkaWEg
c3RyZWFtcyBiYXNlZCBvbiBsaWJ3ZWJydGMgT25BZGRTdHJlYW0uCisgICAgICAgIEZpcmluZyBv
bmx5IGFkZHN0cmVhbSBpZiBsZWdhY3kgQVBJIGZsYWcgaXMgb24uCisKKyAgICAgICAgRW5zdXJp
bmcgdGhhdCBtZWRpYSBzdHJlYW0gYW5kIG1lZGlhIHN0cmVhbSB0cmFja3MgcmVsYXRpb25zaGlw
IGlzIHN0aWxsIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4KKyAgICAgICAgRm9yIHRoYXQsIHdlIGtl
ZXAgYSBtYXAgdGhhdCByZWxhdGVzIGxpYndlYnJ0YyBtZWRpYSBzdHJlYW1zIHdpdGggV2ViQ29y
ZSBtZWRpYSBzdHJlYW1zLgorICAgICAgICBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gZ2V0IGEgcmVj
ZWl2ZXIgcmVsYXRlZCB0byB0aGUgdHJhY2sgb24gdGhlIHRyYWNrIGV2ZW50LgorCisgICAgICAg
IEltcGxlbWVudGluZyB0aGUgcG9zc2liaWxpdHkgdG8gY3JlYXRlIGEgdHJhbnNjZWl2ZXIgYWhl
YWQgb2YgdHJhY2sgYXJyaXZhbCB0aW1lLgorICAgICAgICBDcmVhdGVkIHRyYW5zY2VpdmVycyB0
aGF0IGFyZSBub3QgcmVsYXRlZCB0byBhbnkgcmVhbCBzb3VyY2UgYXJlIGtlcHQgaW4gdGhlIHBl
ZXIgY29ubmVjdGlvbiBiYWNrIGVuZC4KKyAgICAgICAgV2hlbiBhIGxpYndlYnJ0YyB0cmFjayBp
cyBhcHBlYXJpbmcsIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhY2sgc291cmNlIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIHRyYW5zY2VpdmVyIGJhc2VkIG9uIHRyYWNrIHR5cGUuCisKKyAgICAg
ICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGVtcHR5IHJlYWwgdGltZSBzb3VyY2VzIGFu
ZCBzZXQgdGhlaXIgZGF0YSBsaWJ3ZWJydGMgdHJhY2sgd2hlbiBiZWluZyBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFja0Zyb21QbGF0Zm9ybSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1v
dGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpyZW1v
dmVSZW1vdGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25BZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6T25BZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhU3RyZWFtVHJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkU3Ry
ZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUVtcHR5U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlbW92ZVJlbW90ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFJlbW90ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg6CisKKzIwMTctMDMtMTcgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3Agc2VuZGluZyBt
ZWRpYSBkYXRhIGFzIHNvb24gYXMgcGVlciBjb25uZWN0aW9uIGlzIGNsb3NlZAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODEzCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXgg
ZTQ0ODg2Y2QyNTU4NTYwMmI0ZDNhNjc0M2MwNzc2NjI1ODljY2YxNS4uMWRjNjM1MGY4YjQ2YzE4
MmYwZWJlZmY0ZDJlZDNlMWYyNTdjZTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTIwNyw2ICsyMDcsMTIgQEAgdm9p
ZCBNZWRpYVN0cmVhbTo6ZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBpbnRlcm5hbFJlbW92ZVRyYWNrKHRyYWNrUHJpdmF0ZS5pZCgpLCBT
dHJlYW1Nb2RpZmllcjo6UGxhdGZvcm0pOwogfQogCit2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFj
a0Zyb21QbGF0Zm9ybShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKK3sKKyAgICBtX3By
aXZhdGUtPmFkZFRyYWNrKCZ0cmFjay0+cHJpdmF0ZVRyYWNrKCksIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpOb3RpZnkpOworICAgIGludGVybmFsQWRkVHJhY2soV1RG
TW92ZSh0cmFjayksIFN0cmVhbU1vZGlmaWVyOjpQbGF0Zm9ybSk7Cit9CisKIGJvb2wgTWVkaWFT
dHJlYW06OmludGVybmFsQWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2tUb0Fk
ZCwgU3RyZWFtTW9kaWZpZXIgc3RyZWFtTW9kaWZpZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBt
X3RyYWNrU2V0LmFkZCh0cmFja1RvQWRkLT5pZCgpLCBXVEZNb3ZlKHRyYWNrVG9BZGQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRl
eCA4MTZkNzA2YTNjZjRkZmViZmEwYmI3ZWZhYmM0ZTQ0Y2MzNWU2YTY5Li5kMWM4ZmMwZmM1OWU3
ZTFiMWYyOTllOGY0NjJkODkzOGI3MTM1YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0xMDIsNiArMTAyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9ic2Vy
dmVyKE9ic2VydmVyKik7CiAKKyAgICB2b2lkIGFkZFRyYWNrRnJvbVBsYXRmb3JtKFJlZjxNZWRp
YVN0cmVhbVRyYWNrPiYmKTsKKwogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJik7CiAgICAgTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZh
dGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRl
eCAyNmE1ZmE5YzEzYjQ5ODI2MjcyNTI3YTlmMGQzZmZjN2UyODAzYTIxLi5jZDc0ZjY3MDYxMWJi
OWFjNzRhMTU5OTkwY2FmNWM1NmU4Njk5MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJUQ1RyYWNr
RXZlbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKICNpbmNs
dWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2
ZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvcDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5
Lmg+CiAjaW5jbHVkZSA8d2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmg+CkBA
IC0zODIsMzUgKzM4Myw3MSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyB0cmFja0lkKHdlYnJ0Yzo6
TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSYgdmlkZW9UcmFjaykKICAgICByZXR1cm4gU3RyaW5n
KHZpZGVvVHJhY2suaWQoKS5kYXRhKCksIHZpZGVvVHJhY2suaWQoKS5zaXplKCkpOwogfQogCi1z
dGF0aWMgaW5saW5lIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGVNZWRpYVN0cmVhbVRyYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHJlbW90ZVNvdXJjZSkKK01lZGlhU3RyZWFtJiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpt
ZWRpYVN0cmVhbUZyb21SVENTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSogcnRj
U3RyZWFtKQogewotICAgIFN0cmluZyB0cmFja0lkID0gcmVtb3RlU291cmNlLT5pZCgpOwotICAg
IHJldHVybiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVNvdXJjZSksIFdURk1vdmUodHJhY2tJZCkp
KTsKKyAgICBhdXRvIG1lZGlhU3RyZWFtID0gbV9zdHJlYW1zLmVuc3VyZShydGNTdHJlYW0sIFt0
aGlzXSB7CisgICAgICAgIGF1dG8gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CisgICAgICAgIGF1dG8gc3RyZWFtUG9pbnRlciA9IHN0cmVhbS5wdHIoKTsKKyAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuYWRkUmVtb3RlU3RyZWFtKFdURk1vdmUoc3RyZWFtKSk7Cisg
ICAgICAgIHJldHVybiBzdHJlYW1Qb2ludGVyOworICAgIH0pOworICAgIHJldHVybiAqbWVkaWFT
dHJlYW0uaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmFkZFN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJiBzdHJlYW0pCit2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFt
SW50ZXJmYWNlJiBydGNTdHJlYW0pCiB7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFj
a3M7Ci0gICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogc3RyZWFtLkdldFZpZGVvVHJhY2tzKCkp
IHsKLSAgICAgICAgQVNTRVJUKHZpZGVvVHJhY2spOwotICAgICAgICBTdHJpbmcgaWQgPSB0cmFj
a0lkKCp2aWRlb1RyYWNrKTsKLSAgICAgICAgYXV0byByZW1vdGVTb3VyY2UgPSBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHZpZGVvVHJhY2spLCBXVEZNb3ZlKGlk
KSk7Ci0gICAgICAgIHRyYWNrcy5hcHBlbmQoY3JlYXRlTWVkaWFTdHJlYW1UcmFjaygqbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
V1RGTW92ZShyZW1vdGVTb3VyY2UpKSk7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgbWVkaWFTdHJlYW0gPSBtZWRpYVN0cmVhbUZyb21SVENTdHJlYW0o
JnJ0Y1N0cmVhbSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZp
cmVFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHN0cmVhbUV2
ZW50LCBmYWxzZSwgZmFsc2UsICZtZWRpYVN0cmVhbSkpOworfQorCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKGNvbnN0IHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRl
cmZhY2UmIHJ0Y1JlY2VpdmVyLCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4+JiBydGNTdHJlYW1zKQoreworICAgIFJlZlB0
cjxSVENSdHBSZWNlaXZlcj4gcmVjZWl2ZXI7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IHJlbW90ZVNvdXJjZTsKKworICAgIGF1dG8qIHJ0Y1RyYWNrID0gcnRjUmVjZWl2ZXIudHJh
Y2soKS5nZXQoKTsKKworICAgIHN3aXRjaCAocnRjUmVjZWl2ZXIubWVkaWFfdHlwZSgpKSB7Cisg
ICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKKyAgICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0
PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrKTsKKyAgICAgICAgYXV0byBh
dWRpb1JlY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuYXVkaW9SZWNlaXZlcih0cmFj
a0lkKCpydGNUcmFjaykpOworCisgICAgICAgIHJlY2VpdmVyID0gV1RGTW92ZShhdWRpb1JlY2Vp
dmVyLnJlY2VpdmVyKTsKKyAgICAgICAgYXVkaW9SZWNlaXZlci5zb3VyY2UtPnNldFNvdXJjZVRy
YWNrKFdURk1vdmUoYXVkaW9UcmFjaykpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOiB7CisgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3
ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2UqPihydGNUcmFjayk7CisgICAgICAgIGF1dG8gdmlk
ZW9SZWNlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnZpZGVvUmVjZWl2ZXIodHJhY2tJ
ZCgqcnRjVHJhY2spKTsKKworICAgICAgICByZWNlaXZlciA9IFdURk1vdmUodmlkZW9SZWNlaXZl
ci5yZWNlaXZlcik7CisgICAgICAgIHZpZGVvUmVjZWl2ZXIuc291cmNlLT5zZXRTb3VyY2VUcmFj
ayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGZvciAo
YXV0byYgYXVkaW9UcmFjayA6IHN0cmVhbS5HZXRBdWRpb1RyYWNrcygpKSB7Ci0gICAgICAgIEFT
U0VSVChhdWRpb1RyYWNrKTsKLSAgICAgICAgU3RyaW5nIGlkID0gdHJhY2tJZCgqYXVkaW9UcmFj
ayk7Ci0gICAgICAgIGF1dG8gcmVtb3RlU291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlOjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShpZCkpOwotICAgICAgICB0
cmFja3MuYXBwZW5kKGNyZWF0ZU1lZGlhU3RyZWFtVHJhY2soKm1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3Rl
U291cmNlKSkpOwogICAgIH0KIAotICAgIGF1dG8gbmV3U3RyZWFtID0gTWVkaWFTdHJlYW06OmNy
ZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgV1RGTW92ZSh0cmFja3MpKTsKLSAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgbmV3U3RyZWFtLmNvcHlSZWYoKSkp
OworICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNrKCk7CisgICAgQVNTRVJUKHRyYWNr
KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBzdHJlYW1zOwotICAgIHN0cmVh
bXMuYXBwZW5kKG5ld1N0cmVhbS5jb3B5UmVmKCkpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBu
ZXdTdHJlYW0tPmdldFRyYWNrcygpKQotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5j
b25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
dHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCBudWxscHRyLCB0cmFjay5nZXQoKSwgVmVjdG9yPFJl
ZlB0cjxNZWRpYVN0cmVhbT4+KHN0cmVhbXMpLCBudWxscHRyKSk7CisgICAgZm9yIChhdXRvJiBy
dGNTdHJlYW0gOiBydGNTdHJlYW1zKSB7CisgICAgICAgIGF1dG8mIG1lZGlhU3RyZWFtID0gbWVk
aWFTdHJlYW1Gcm9tUlRDU3RyZWFtKHJ0Y1N0cmVhbS5nZXQoKSk7CisgICAgICAgIHN0cmVhbXMu
YXBwZW5kKCZtZWRpYVN0cmVhbSk7CisgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrRnJvbVBs
YXRmb3JtKCp0cmFjayk7CisgICAgfQorICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5l
Y3Rpb24oKS5maXJlRXZlbnQoUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFj
a0V2ZW50LCBmYWxzZSwgZmFsc2UsIFdURk1vdmUocmVjZWl2ZXIpLCB0cmFjaywgV1RGTW92ZShz
dHJlYW1zKSwgbnVsbHB0cikpOworfQorCit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnJl
bW92ZVJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJiBydGNTdHJlYW0p
Cit7CisgICAgYXV0byogbWVkaWFTdHJlYW0gPSBtX3N0cmVhbXMudGFrZSgmcnRjU3RyZWFtKTsK
KyAgICBpZiAobWVkaWFTdHJlYW0pCisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnJl
bW92ZVJlbW90ZVN0cmVhbShtZWRpYVN0cmVhbSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6T25BZGRTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2U+IHN0cmVhbSkKQEAgLTQxOSwxMyArNDU2LDI4IEBAIHZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6T25BZGRTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVk
aWFTdHJlYW1JCiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgQVNTRVJUKHN0cmVhbSk7Ci0gICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmFkZFN0cmVhbSgqc3RyZWFtLmdldCgpKTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+
YWRkUmVtb3RlU3RyZWFtKCpzdHJlYW0uZ2V0KCkpOwogICAgIH0pOwogfQogCi12b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPikKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
T25SZW1vdmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRl
cmZhY2U+IHN0cmVhbSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RyZWFtID0gV1RGTW92ZShz
dHJlYW0pXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKHN0cmVhbSk7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnJlbW92ZVJlbW90ZVN0cmVhbSgqc3RyZWFtLmdldCgpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkFkZFRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiByZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0
b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgc3Ry
ZWFtcykKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlY2VpdmVyID0gV1RGTW92ZShyZWNlaXZlciksIHN0cmVhbXNdIHsKKyAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBBU1NFUlQocmVjZWl2ZXIpOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZW1vdGVU
cmFjaygqcmVjZWl2ZXIsIHN0cmVhbXMpOworICAgIH0pOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVEYXRh
Q2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9w
dGlvbnMpCkBAIC00ODUsNiArNTM3LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
dG9wKCkKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBtX2JhY2tlbmQtPkNsb3NlKCk7CiAg
ICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKKyAgICBtX3N0cmVhbXMuY2xlYXIoKTsKIH0KIAogdm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPblJlbmVnb3RpYXRpb25OZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IDZlNmM3NjU4Y2Y5NTY5YjQz
MzE3NGVhNWZjMWMzOTI4MGMzNDM4YzMuLjQzNTU5MjRhMmQxNTlhMDcyM2UzYjg5Zjg0YjcxNmYy
ZjgyN2Y0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKQEAg
LTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIE9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPikgZmluYWw7CiAgICAgdm9pZCBP
blJlbW92ZVN0cmVhbShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVy
ZmFjZT4pIGZpbmFsOwogICAgIHZvaWQgT25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4pIGZpbmFsOworICAgIHZvaWQgT25BZGRUcmFj
ayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4sIGNvbnN0
IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJm
YWNlPj4mKSBmaW5hbDsKICAgICB2b2lkIE9uUmVuZWdvdGlhdGlvbk5lZWRlZCgpIGZpbmFsOwog
ICAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBPbkljZUdhdGhlcmlu
Z0NoYW5nZSh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0
ZSkgZmluYWw7CkBAIC0xMDEsOSArMTAyLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMb2Nh
bFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQg
c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBzZXRSZW1v
dGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcmKTsKLSAgICB2b2lk
IGFkZFN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJik7CisgICAgdm9pZCBhZGRS
ZW1vdGVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSYpOworICAgIHZvaWQgYWRk
UmVtb3RlVHJhY2soY29uc3Qgd2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSYsIGNvbnN0IHN0
ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNl
Pj4mKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlJik7CiAgICAgdm9pZCBhZGREYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJik7CiAKKyAgICBNZWRpYVN0cmVhbSYgbWVkaWFT
dHJlYW1Gcm9tUlRDU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UqKTsKKwogICAg
IGludCBBZGRSZWYoKSBjb25zdCB7IHJlZigpOyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZWZD
b3VudCgpKTsgfQogICAgIGludCBSZWxlYXNlKCkgY29uc3QgeyBkZXJlZigpOyByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZWZDb3VudCgpKTsgfQogCkBAIC0xNjksNiArMTc0LDcgQEAgcHJpdmF0
ZToKICAgICBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBtX2NyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyOwogICAgIFNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2
ZXIgbV9zZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOwogICAgIFNldFJlbW90ZVNl
c3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIG1fc2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uT2Jz
ZXJ2ZXI7CisgICAgSGFzaE1hcDx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlKiwgTWVkaWFT
dHJlYW0qPiBtX3N0cmVhbXM7CiAKICAgICBib29sIG1faXNJbml0aWF0b3IgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCmluZGV4IGIxOGQ0M2RkMWM5MjE2YzkyZWIwZjg4OGE0ZDc2NDJlMmM4OGJkMDEuLjhi
NWRlOWVkZjYwNDc1ZTY2MTIwM2U2ZmJlYWE3NmUxYjJmZWQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTcwLDYg
KzE3MCw5IEBAIHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1N0b3AoKQog
ICAgICAgICBzb3VyY2UtPnN0b3AoKTsKIAogICAgIG1fZW5kcG9pbnQtPnN0b3AoKTsKKworICAg
IG1fcmVtb3RlU3RyZWFtcy5jbGVhcigpOworICAgIG1fcGVuZGluZ1JlY2VpdmVycy5jbGVhcigp
OwogfQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9BZGRJY2VDYW5k
aWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCkBAIC0yMDUsMTYgKzIwOCw2NCBAQCB2
b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVmlkZW9Tb3VyY2UoUmVmPFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdQogICAgIG1fdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KHNvdXJjZSkpOwogfQogCi1SZWY8UlRDUnRwUmVjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0
cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3N0YXRpYyBpbmxpbmUgUmVmPFJUQ1J0
cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiB7Ci0gICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gY3JlYXRlIGEgc291cmNlIHRoYXQgd2lsbCBnZXQgZnVlbGVkIG9u
Y2Ugd2Ugd2lsbCByZWNlaXZlIE9uQWRkU3RyZWFtLgotICAgIC8vIEZvciB0aGUgbW9tZW50LCB3
ZSBjcmVhdGUgYW4gZW1wdHkgb25lLgotICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gKHRy
YWNrS2luZCA9PSAiYXVkaW8iKSA/IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgU3RyaW5nKHRyYWNrSWQp
KSkgOiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFN0cmluZyh0cmFja0lkKSkpOwotICAgIGF1dG8gcmVt
b3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb24uc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJlbW90ZVRyYWNrUHJpdmF0ZSkpOworICAg
IGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0
ZShXVEZNb3ZlKHNvdXJjZSkpOworICAgIGF1dG8gcmVtb3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRy
YWNrOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShyZW1vdGVUcmFja1ByaXZhdGUpKTsKIAogICAg
IHJldHVybiBSVENSdHBSZWNlaXZlcjo6Y3JlYXRlKFdURk1vdmUocmVtb3RlVHJhY2spKTsKIH0K
IAorc3RhdGljIGlubGluZSBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlRW1wdHlTb3Vy
Y2UoY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIFN0cmluZyYmIHRyYWNrSWQpCit7CisgICAgLy8g
RklYTUU6IHRyYWNrS2luZCBzaG91bGQgYmUgYW4gZW51bWVyYXRpb24KKyAgICBpZiAodHJhY2tL
aW5kID09ICJhdWRpbyIpCisgICAgICAgIHJldHVybiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKKyAgICBBU1NFUlQodHJhY2tL
aW5kID09ICJ2aWRlbyIpOworICAgIHJldHVybiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6
OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKK30KKworUmVmPFJUQ1J0cFJlY2Vp
dmVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQp
Cit7CisgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJD
b25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3JlYXRlRW1wdHlTb3VyY2UodHJh
Y2tLaW5kLCBTdHJpbmcodHJhY2tJZCkpKTsKKyAgICBtX3BlbmRpbmdSZWNlaXZlcnMuYXBwZW5k
KHJlY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHJlY2VpdmVyOworfQorCitMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKFN0cmluZyYmIHRyYWNrSWQpCit7CisgICAgLy8g
RklYTUU6IEFkZCB0byBWZWN0b3IgYSB1dGlsaXR5IHJvdXRpbmUgZm9yIHRoYXQgdGFrZS1vci1j
cmVhdGUgcGF0dGVybi4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHNlbGVjdGluZyB0aGUg
cmVjZWl2ZXIgYmFzZWQgb24gdHJhY2sgaWQuCisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNw
dHIgPCBtX3BlbmRpbmdSZWNlaXZlcnMuc2l6ZSgpOyArK2NwdHIpIHsKKyAgICAgICAgaWYgKG1f
cGVuZGluZ1JlY2VpdmVyc1tjcHRyXS0+dHJhY2soKS0+c291cmNlKCkudHlwZSgpID09IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKSB7CisgICAgICAgICAgICBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IHJlY2VpdmVyID0gbV9wZW5kaW5nUmVjZWl2ZXJzW2NwdHJdLmNvcHlSZWYoKTsKKyAg
ICAgICAgICAgIG1fcGVuZGluZ1JlY2VpdmVycy5yZW1vdmUoY3B0cik7CisgICAgICAgICAgICBS
ZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UmPihyZWNlaXZlci0+dHJhY2soKS0+c291cmNlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUoc291cmNlKSB9
OworICAgICAgICB9CisgICAgfQorICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CisgICAgYXV0byBy
ZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc291cmNlLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHsgV1RG
TW92ZShyZWNlaXZlciksIFdURk1vdmUoc291cmNlKSB9OworfQorCitMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphdWRpb1JlY2VpdmVyKFN0cmluZyYmIHRyYWNrSWQpCit7CisgICAgLy8gRklYTUU6IEFk
ZCB0byBWZWN0b3IgYSB1dGlsaXR5IHJvdXRpbmUgZm9yIHRoYXQgdGFrZS1vci1jcmVhdGUgcGF0
dGVybi4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHNlbGVjdGluZyB0aGUgcmVjZWl2ZXIg
YmFzZWQgb24gdHJhY2sgaWQuCisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBtX3Bl
bmRpbmdSZWNlaXZlcnMuc2l6ZSgpOyArK2NwdHIpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1Jl
Y2VpdmVyc1tjcHRyXS0+dHJhY2soKS0+c291cmNlKCkudHlwZSgpID09IFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OkF1ZGlvKSB7CisgICAgICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJl
Y2VpdmVyID0gbV9wZW5kaW5nUmVjZWl2ZXJzW2NwdHJdLmNvcHlSZWYoKTsKKyAgICAgICAgICAg
IG1fcGVuZGluZ1JlY2VpdmVycy5yZW1vdmUoY3B0cik7CisgICAgICAgICAgICBSZWY8UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlPiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UmPihyZWNlaXZlci0+dHJhY2soKS0+c291cmNlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHsgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUoc291cmNlKSB9OworICAgICAg
ICB9CisgICAgfQorICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CisgICAgYXV0byByZWNlaXZlciA9
IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgc291cmNlLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZWNl
aXZlciksIFdURk1vdmUoc291cmNlKSB9OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNo
YW5uZWxIYW5kbGVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFD
aGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbElu
aXQmIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIG1fZW5kcG9pbnQtPmNyZWF0ZURhdGFDaGFubmVs
KGxhYmVsLCBvcHRpb25zKTsKQEAgLTI1Niw2ICszMDcsMTggQEAgdm9pZCBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIp
CiAgICAgbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlci50cmFjaygpLCBzZW5kZXIubWVkaWFT
dHJlYW1JZHMoKSk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpy
ZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtKQoreworICAgIG1fcmVt
b3RlU3RyZWFtcy5yZW1vdmVGaXJzdE1hdGNoaW5nKFttZWRpYVN0cmVhbV0oY29uc3QgYXV0byYg
aXRlbSkgeworICAgICAgICByZXR1cm4gaXRlbS5nZXQoKSA9PSBtZWRpYVN0cmVhbTsKKyAgICB9
KTsKK30KKwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFJlbW90ZVN0
cmVhbShSZWY8TWVkaWFTdHJlYW0+JiYgbWVkaWFTdHJlYW0pCit7CisgICAgbV9yZW1vdGVTdHJl
YW1zLmFwcGVuZChXVEZNb3ZlKG1lZGlhU3RyZWFtKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDg1NjAwNTNkZDQyNjYxMDEz
NzZhNzI1ZDU1OTBkZDFmMTYwYWNiYjEuLjI1OTg2MzkwMDY3MzIyMTU2MzBiZmQxMjUyOWI3NjY2
NzY5ZjM5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ7CiBjbGFzcyBSVENSdHBSZWNlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsK
IGNsYXNzIFJUQ1N0YXRzUmVwb3J0OworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOwogCkBA
IC02Nyw5ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgZmluYWw7CiAg
ICAgLy8gRklYTUU6IEFQSSB0byBpbXBsZW1lbnQgZm9yIHJlYWwKLSAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsg
fTsgfQogICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBlbXVs
YXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KQEAgLTgyLDE1ICs4Miwz
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U3RhdHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQ
cm9taXNlJiwgUmVmPFJUQ1N0YXRzUmVwb3J0PiYmKTsKICAgICB2b2lkIGdldFN0YXRzRmFpbGVk
KGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIEV4Y2VwdGlvbiYmKTsKIAorICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVTdHJlYW1zKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9yZW1vdGVTdHJlYW1zOyB9CisgICAgdm9pZCByZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJl
YW0qKTsKKyAgICB2b2lkIGFkZFJlbW90ZVN0cmVhbShSZWY8TWVkaWFTdHJlYW0+JiYpOworCisg
ICAgdm9pZCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOworCisgICAgc3Ry
dWN0IFZpZGVvUmVjZWl2ZXIgeworICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVy
OworICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7CisgICAg
fTsKKyAgICBzdHJ1Y3QgQXVkaW9SZWNlaXZlciB7CisgICAgICAgIFJlZjxSVENSdHBSZWNlaXZl
cj4gcmVjZWl2ZXI7CisgICAgICAgIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IHNv
dXJjZTsKKyAgICB9OworICAgIFZpZGVvUmVjZWl2ZXIgdmlkZW9SZWNlaXZlcihTdHJpbmcmJiB0
cmFja0lkKTsKKyAgICBBdWRpb1JlY2VpdmVyIGF1ZGlvUmVjZWl2ZXIoU3RyaW5nJiYgdHJhY2tJ
ZCk7CisKIHByaXZhdGU6CiAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1fZW5kcG9p
bnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwogCisgICAgLy8gRklYTUU6IE1h
a2UgbV9yZW1vdGVTdHJlYW1zIGEgVmVjdG9yIG9mIFJlZi4KKyAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtPj4gbV9yZW1vdGVTdHJlYW1zOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3BlbmRpbmdDYW5kaWRhdGVzOwogICAg
IFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPj4gbV9hdWRpb1NvdXJjZXM7
CiAgICAgVmVjdG9yPFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+PiBtX3ZpZGVvU291
cmNlczsKICAgICBIYXNoTWFwPGNvbnN0IERlZmVycmVkUHJvbWlzZSosIFJlZjxEZWZlcnJlZFBy
b21pc2U+PiBtX3N0YXRzUHJvbWlzZXM7CisgICAgVmVjdG9yPFJlZjxSVENSdHBSZWNlaXZlcj4+
IG1fcGVuZGluZ1JlY2VpdmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggN2RmMWE2MjMxNDk3
YWZjYmY0ZmY5YTIwYzI1OGEyMDFmNDA0Y2I2My4uZWNmZDc4ZTQzYTUzMmYyZGM2YTM2NzRmOTM3
MTI3MTBjM2Q4NTRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5jcHAKQEAgLTEzMCw2ICsxMzAsMTUgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwogfQogCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0
cmFjaykKK3sKKyAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7CisgICAgQVNTRVJUKHRyYWNrKTsK
KworICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOworICAgIGlmIChtX2lzUHJvZHVj
aW5nRGF0YSkKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQogCiBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oCmluZGV4IGM3YWE1OGJlMzdiNzc0ZjRhNjY1NjM5NTQ0YzAyOTIxY2Mw
OTBiMzguLjdkZGJmMjIyMzAwZDZiOWZlMjNjOTY5MThmNGVhNzI3NWQ2YzEyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgY2xh
c3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVk
aWFTb3VyY2UsIHByaXZhdGUgd2UKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
VHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKIAorICAgIHZvaWQgc2V0U291cmNlVHJhY2so
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7CisKIHBy
aXZhdGU6CiAgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuY3BwCmluZGV4IDkyZWUxOWVkNTJlYWY0NDY5OWFmZjgyZmI5NWM4NDZkNjlhMWFm
M2UuLmViNTI2ZDE0NWIzZmU4MDg0MzI2ZjIzYzA1MDYwMGJlZTZlZjMwMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC04Miw2ICs4MiwxNyBAQCB2
b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICAg
ICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtX
YW50cygpKTsKIH0KIAordm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJj
ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYg
dHJhY2spCit7CisgICAgQVNTRVJUKCFtX3ZpZGVvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7
CisKKyAgICBtX211dGVkID0gZmFsc2U7CisgICAgbV92aWRlb1RyYWNrID0gdHJhY2s7CisgICAg
aWYgKG1faXNQcm9kdWNpbmdEYXRhKQorICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRl
U2luayh0aGlzLCBydGM6OlZpZGVvU2lua1dhbnRzKCkpOworfQorCiB2b2lkIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewogICAgIGlmICghbV9pc1By
b2R1Y2luZ0RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKaW5k
ZXggZWU1ZTgyYjdkY2Y1OTBlZDFmY2YwYzM0NDE0MmY1MGEwYjg5OWVkMi4uMjlkNzA3NjVjYjE5
NDAzY2NiNDVhOWE3NTc2ODc0MzZlYWE0OThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAgflJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZSgpIHsgc3RvcFByb2R1Y2luZ0RhdGEoKTsgfQogCisgICAgdm9p
ZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPiYmKTsKKwogcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5n
JiYsIENGTXV0YWJsZURpY3Rpb25hcnlSZWYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTk1MTAyZjQ1NGU3ZmE2MTY4
NTRjNjM1M2FjZDU4ZjQwNDI1OTQwOC4uYjBjY2E4ZGFhYWIyNzdkMjk3MzQyYjIyZTAxY2FiZTgy
YzUzMGFkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTE3ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaW5jb21pbmcgd2VicnRj
IGRhdGEgYmFzZWQgb24gdHJhY2tzQ3VycgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJs
c29uLgorCisgICAgICAgICogd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2ZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvdmlkZW8td2l0aC1yZWNlaXZlci5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8uaHRtbC4KKyAgICAgICAgKiB3ZWJydGMv
dmlkZW8uaHRtbDoKKwogMjAxNy0wMy0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGlzIG5vdCBzdG9wcGlu
ZyBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVj
ZWl2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXdpdGgtcmVjZWl2
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMzFlMTk1MTkwZGUyZmM1Yzg4NDgzYmZkYmYw
NWZiZmZkNGQ5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8t
d2l0aC1yZWNlaXZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBCYXNp
YyB2aWRlbyBleGNoYW5nZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVv
LXdpdGgtcmVjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJlY2Vp
dmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNkZGUwNGFlNTY3YjAzNGYxMWMxYzI5ZGUxMGIxMDNlODNk
MzU1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby13aXRoLXJl
Y2VpdmVyLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0bGU+
VGVzdGluZyBiYXNpYyB2aWRlbyBleGNoYW5nZSBmcm9tIG9mZmVyZXIgdG8gcmVjZWl2ZXI8L3Rp
dGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlk
ZW8gaWQ9InZpZGVvIiBhdXRvcGxheT0iIj48L3ZpZGVvPgorICAgICAgICA8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4KKyAgICAgICAgPHNjcmlw
dCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cit2aWRlbyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOworY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNhbnZhcyIpOworCitmdW5jdGlvbiB0ZXN0SW1hZ2UoKQoreworICAgIGNh
bnZhcy53aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IHZpZGVv
LnZpZGVvSGVpZ2h0OworICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRl
bywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGltYWdlRGF0YSA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgxMCwgMzI1LCAyNTAsIDEpOwor
ICAgIGRhdGEgPSBpbWFnZURhdGEuZGF0YTsKKworICAgIHZhciBpbmRleCA9IDIwOworICAgIGFz
c2VydF90cnVlKGRhdGFbaW5kZXhdIDwgMTAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4
ICsgMV0gPCAxMDApOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5kZXggKyAyXSA8IDEwMCk7CisK
KyAgICBpbmRleCA9IDgwOworICAgIGFzc2VydF90cnVlKGRhdGFbaW5kZXhdID4gMjAwKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsgMV0gPiAyMDApOworICAgIGFzc2VydF90cnVlKGRh
dGFbaW5kZXggKyAyXSA+IDIwMCk7CisKKyAgICBpbmRleCArPSA4MDsKKyAgICBhc3NlcnRfdHJ1
ZShkYXRhW2luZGV4XSA+IDIwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVtpbmRleCArIDFdID4g
MjAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhW2luZGV4ICsgMl0gPCAxMDApOworfQorCitwcm9t
aXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgIHJldHVybiBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlfSkudGhlbigo
c3RyZWFtKSA9PiB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMudXNlTW9ja1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSgiVHdvUmVhbFBlZXJD
b25uZWN0aW9ucyIpOworCisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25u
ZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFN0cmVhbShz
dHJlYW0pOworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKHNlY29uZENvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoInZpZGVvIiku
cmVjZWl2ZXIudHJhY2spOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgICAgIH0pOworICAg
IH0pLnRoZW4oKHRyYWNrKSA9PiB7CisgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IG5ldyBNZWRp
YVN0cmVhbShbdHJhY2tdKTsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKKyAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsKKyAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgdGVzdEltYWdlKCk7CisgICAgfSk7Cit9LCAiQmFzaWMgdmlkZW8gZXhj
aGFuZ2UiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8uaHRtbAppbmRleCA1YWFkNWRkNjM5YjlmYzcyMmYwMGZmMzg5NTY2MGRjOGJiOWE1Mzg2
Li4zMzExMWU3NjhjODEwZDkzNTYzNTExNjhlZTZiZWU3NzkzMWJkNGQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJydGMvdmlkZW8uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8uaHRtbApAQCAtMTMsNyArMTMsNiBAQAogICAgICAgICA8c2NyaXB0PgogdmlkZW8gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjYW52YXMiKTsKLS8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIHRyYWNrcwogCiBmdW5j
dGlvbiB0ZXN0SW1hZ2UoKQogewpAQCAtNTIsNyArNTEsMTMgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0
KSA9PiB7CiAgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9
PiB7CiAgICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFN0cmVhbShzdHJlYW0pOwog
ICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9uYWRkc3RyZWFtID0gKHN0cmVhbUV2ZW50KSA9PiB7IHJlc29sdmUo
c3RyZWFtRXZlbnQuc3RyZWFtKTsgfTsKKyAgICAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9u
Lm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3RhbmNlb2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRyYWNrRXZlbnQucmVjZWl2ZXIgaW5zdGFuY2Vv
ZiBSVENSdHBSZWNlaXZlcik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKEFycmF5
LmlzQXJyYXkodHJhY2tFdmVudC5zdHJlYW1zKSwgIkFycmF5LmlzQXJyYXkoKSBzaG91bGQgcmV0
dXJuIHRydWUiKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QuaXNGcm96
ZW4odHJhY2tFdmVudC5zdHJlYW1zKSwgIk9iamVjdC5pc0Zyb3plbigpIHNob3VsZCByZXR1cm4g
dHJ1ZSIpCisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBd
KTsKKyAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CiAgICAgICAgIH0p
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>