<?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>201300</bug_id>
          
          <creation_ts>2019-08-29 06:03:33 -0700</creation_ts>
          <short_desc>Make NetworkConnectionToWebProcess keyed by its WebProcess identifier</short_desc>
          <delta_ts>2019-09-02 02:32:18 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201299</blocked>
          <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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1566197</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-29 06:03:33 -0700</bug_when>
    <thetext>Make NetworkConnectionToWebProcess keyed by their WebProcess identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566198</commentid>
    <comment_count>1</comment_count>
      <attachid>377572</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-29 06:14:06 -0700</bug_when>
    <thetext>Created attachment 377572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566609</commentid>
    <comment_count>2</comment_count>
      <attachid>377691</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-30 03:11:44 -0700</bug_when>
    <thetext>Created attachment 377691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566619</commentid>
    <comment_count>3</comment_count>
      <attachid>377695</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-30 03:55:17 -0700</bug_when>
    <thetext>Created attachment 377695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566662</commentid>
    <comment_count>4</comment_count>
      <attachid>377695</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-30 08:36:38 -0700</bug_when>
    <thetext>Comment on attachment 377695
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:389
&gt; +    return std::make_pair(socketPair.server, IPC::Attachment { socketPair.client });

You could use {} instead of std::make_pair

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:420
&gt; +        completionHandler({ });

WTF::null opt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567125</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-01 23:01:39 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 377695 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377695&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:389
&gt; &gt; +    return std::make_pair(socketPair.server, IPC::Attachment { socketPair.client });
&gt; 
&gt; You could use {} instead of std::make_pair

The function returns an Optional&lt;std::pair&gt; so we need to return a pair explicitly here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567128</commentid>
    <comment_count>6</comment_count>
      <attachid>377840</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-01 23:06:48 -0700</bug_when>
    <thetext>Created attachment 377840
Fix Wincairo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567165</commentid>
    <comment_count>7</comment_count>
      <attachid>377840</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-02 02:31:45 -0700</bug_when>
    <thetext>Comment on attachment 377840
Fix Wincairo

Clearing flags on attachment: 377840

Committed r249379: &lt;https://trac.webkit.org/changeset/249379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567166</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-02 02:31:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567167</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-02 02:32:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54945251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377572</attachid>
            <date>2019-08-29 06:14:06 -0700</date>
            <delta_ts>2019-08-30 03:11:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201300-20190829151404.patch</filename>
            <type>text/plain</type>
            <size>24166</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdmNWY5NTBlZjlmYzg5MzNj
NTBhNmUxOGQwZTEzMzk4MjUzNzc4ZTguLjk0MTVmNGVhNmQ4ZmUzZGNiNjkyOWRhNmM5YmNlODg0
ZmQ2NThjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDgtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgdG8g
Y3JlYXRlIGVhY2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgZm9yIGEgZ2l2ZW4gV2Vi
UHJvY2Vzcy4KKyAgICAgICAgUGFzcyB0aGUgcHJvY2VzcyBpZGVudGlmaWVyIGF0IGNyZWF0aW9u
IHRpbWUuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0byBoYXZlIHRoZSBtZXNzYWdlIHJlZ2lz
dHJ5IGJlIG1vdmVkIHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIHNvIGFzIHRvIGNoZWNrIHBv
cnQgYWN0aXZpdHkgYmV0d2VlbiBwcm9jZXNzZXMuCisgICAgICAgIFRoaXMgaWRlbnRpZmllciBt
aWdodCBhbHNvIGJlIHVzZWQgaW4gdGhlIGZ1dHVyZSBmb3Igb3RoZXIgY29ubmVjdGlvbnMgbGlr
ZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjb250ZXh0L2NsaWVudC9zZXJ2ZXIgaWRlbnRpZmll
cnMuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRv
U3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KToKKyAgICAgICAgQWxsb3cgdG8gcGFzcyBzZW5kIG9wdGlvbnMuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICBNYWtlIHVzZSBvZiBhc3luYyByZXBseSB0byBzaW1wbGlmeSB0aGUgaGFuZGxp
bmcgb2YgbGFtYmRhcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6b3Bl
bk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIwMTktMDgtMjggIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVsb2FkaW5nIGEgd2ViIHZp
ZXcgd2l0aCBhIGZpeGVkLXdpZHRoIHZpZXdwb3J0IGFuZCB2YXJpYWJsZSBjb250ZW50IHdpZHRo
IHJlc3RvcmVzIHRoZSBwcmV2aW91cyBwYWdlIHNjYWxlLCBzaG91bGRuJ3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggNzZmZjRmZWExYjI3MmYwMWZiMmNiZjNkNDA4NzhiYTZmOGIx
YjI0MS4uOThjYjI1ODY0MDMxYTQ3ZjBhNmY1YjE5ZmY4ZTAwZDZjZjk1YWYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc1LDE3ICs3NSwxOCBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3
b3JrUHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2Vzcywgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKLU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgOiBtX2Nvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYK
KyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggMTM2ZDkzMGEyODMwYzYwYzhjNjlmZWQ5MGRjMGEwMDQ5ZTZjYzRkZC4uZmFk
OGI2ZTkwMjUxMTBkNjIxYTNlMDllMjIyMjU5MmQ4MWI1YWI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcwogcHVibGljOgogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CiAKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBt
X2Nvbm5lY3Rpb24uZ2V0KCk7IH0KQEAgLTE0NCw4ICsxNDQsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZW1vdmVTb2NrZXRDaGFubmVsKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCisgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CisKIHByaXZhdGU6Ci0gICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApAQCAt
MzA4LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiBtX3BheW1l
bnRDb29yZGluYXRvcjsKICNlbmRpZgorICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggOGQ0MDMzZmNlMDkyNjRmZTE5OWE4NTU0YzA4MDA2ZTE1MjIzYWMwMS4uYTAyOGMxNDk3ZmMx
MmZmOTRmNDMxZDZkZGUxYTM4NmRiNTYwYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBOZXR3b3Jr
UHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZQogICAgIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5h
ZGRMaXN0ZW5lcihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgaXNPbkxpbmUp
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Zm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbiA6IHdlYWtUaGlzLT5tX3dlYlByb2Nlc3ND
b25uZWN0aW9ucykKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbiA6IHdl
YWtUaGlzLT5tX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAgICAgIHdl
YlByb2Nlc3NDb25uZWN0aW9uLT5zZXRPbkxpbmVTdGF0ZShpc09uTGluZSk7CiAgICAgfSk7CiAK
QEAgLTE4NywxMCArMTg3LDggQEAgRG93bmxvYWRNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6ZG93
bmxvYWRNYW5hZ2VyKCkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24pCiB7Ci0gICAgYXV0byBjb3VudCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZUFs
bE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgYykgewotICAgICAgICByZXR1cm4gYy5wdHIoKSA9
PSAmY29ubmVjdGlvbjsKLSAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvdW50LCBjb3VudCA9
PSAxKTsKKyAgICBBU1NFUlQobV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMucmVtb3ZlKGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wg
TmV0d29ya1Byb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCkBAIC0zODQsMTYgKzM4MiwxOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24pCiAgICAgICAgIHN1cHBsZW1lbnQtPmluaXRpYWxpemVDb25uZWN0aW9uKGNv
bm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBB
U1NFUlQoIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKwog
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0
UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24oKTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGUoKnRoaXMsIHNvY2tldFBhaXIuc2VydmVyKTsKLSAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uKSk7CisgICAgYXV0byBuZXdDb25u
ZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgaWRl
bnRpZmllciwgc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBuZXdD
b25uZWN0aW9uLmdldCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChpZGVudGlm
aWVyLCBXVEZNb3ZlKG5ld0Nvbm5lY3Rpb24pKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGll
bnRTb2NrZXQoc29ja2V0UGFpci5jbGllbnQpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFNvY2tldCksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6QXR0YWNobWVudCB7IHNvY2tldFBhaXIuY2xpZW50IH0pOwogI2VsaWYgT1Mo
REFSV0lOKQogICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCiAgICAgbWFjaF9wb3J0
X3QgbGlzdGVuaW5nUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwpAQCAtNDA4LDExICs0MDgsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQcm8KICAgICB9CiAKICAgICAvLyBDcmVhdGUgYSBsaXN0ZW5p
bmcgY29ubmVjdGlvbi4KLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlz
dGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KGNvbm5lY3Rpb24pKTsKKyAgICBhdXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBuZXdD
b25uZWN0aW9uLmdldCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChpZGVudGlm
aWVyLCBXVEZNb3ZlKG5ld0Nvbm5lY3Rpb24pKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGll
bnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKLSAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBdHRhY2htZW50IHsgbGlzdGVuaW5nUG9ydCwg
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQgfSk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVy
OwogICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlm
aWVycyhzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKSkgewpAQCAtNDIwLDIzICs0
MjAsMjMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm8KICAgICAgICAgQ1JBU0goKTsKICAgICB9
CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlKCp0aGlzLCBzZXJ2ZXJJZGVudGlmaWVyKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uKSk7CisgICAgYXV0byBuZXdDb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmll
ciwgc2VydmVySWRlbnRpZmllcik7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rp
b24uZ2V0KCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYWRkKGlkZW50aWZpZXIsIFdU
Rk1vdmUobmV3Q29ubmVjdGlvbikpOwogCi0gICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChjbGllbnRJZGVudGlmaWVyKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkF0dGFjaG1lbnQgeyBjbGllbnRJZGVudGlmaWVyIH0pOwogI2Vsc2UKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogI2VuZGlmCiAKICAgICBpZiAoIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlz
RW1wdHkoKSkKLSAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5zZXRPbkxp
bmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOworICAg
ICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5n
bGV0b24oKS5vbkxpbmUoKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVE
b21haW4sIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsKKyAg
ICAgICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y3JlYXRlKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpOwogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbnMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBjb250ZXh0Q29ubmVjdGlvbi5j
b3B5UmVmKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm8K
ICAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwogI2VuZGlmCiAKLSAgICBtX3N0
b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9uKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxh
c3QoKS0+Y29ubmVjdGlvbigpKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0
aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCkBAIC0yMDgyLDcgKzIwODIsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kCiAgICAgcGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgcGxhdGZvcm1TeW5jQWxsQ29va2llcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMpCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNwZW5zaW9u
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CkBAIC0yMTU2LDcgKzIxNTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogI2Vu
ZGlmCiAKICAgICBwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKTsKLSAgICBmb3IgKGF1dG8mIGNv
bm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKKyAgICBmb3IgKGF1dG8mIGNvbm5l
Y3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAgY29ubmVj
dGlvbi0+ZW5kU3VzcGVuc2lvbigpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGUxOGYy
ZDVkYTI1ZjYyNzhhYzIyNzcyZjgwNDRhOWJjZTNkMzA5YjYuLjdmNGI1ZDJlNmVjOGU0YmNiNDcx
ZWNlZWQ1OTIyNGVlOTBjY2U2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTM5MCw3ICszOTAsNyBAQCBwcml2YXRlOgogICAgIC8vIE1l
c3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9w
dGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3RvcmFn
ZVF1b3RhKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBDb25u
ZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCi0gICAgVmVjdG9yPFJlZjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCiAgICAgU3RyaW5nIG1fZGlza0NhY2hlRGly
ZWN0b3J5OwogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDRmYzE5MjBhZGFiNzVkZGJjYWU1NTUzNTEwYjljMTZmYjQ3YWZkMGIuLmNhNjRm
NTkzNzFhZjAxNDYxMDIxOWIwZTk1ZDc4ODNlM2RiZjJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAj
IENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNz
Ci0gICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
bikKKyAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9j
ZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikgLT4gKE9w
dGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIpIEFzeW5jCiAKICNp
ZiBVU0UoU09VUCkKICAgICBTZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYWRjNGFhZDk4ODE4
ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNy4uODQ2ZmVkYTYxZDlhNmIyM2M2MmE4ZDkxODM1
YzUzOGYzMmNkOTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApA
QCAtMTgzLDE1ICsxODMsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1l
c3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAs
IE9wdGlvblNldDxTZW5kT3B0aW9uPiA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRG
b3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBVPgotICAgIHZvaWQgc2VuZFdpdGhBc3luY1Jl
cGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCA9IHsgfSkKKyAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQgPSB7IH0sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkK
ICAgICB7Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsK
KyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRp
b25zKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
QEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIGFkZEFzeW5jUmVwbHlIYW5kbGVyKENvbm5lY3Rpb24m
LCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKgogQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEZWNvZGVyKik+IHRha2VBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiwg
dWludDY0X3QpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgotdm9pZCBDb25u
ZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFu
ZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhB
c3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKIHsKICAgICBD
T01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShs
aXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7Ci0g
ICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKKyAgICBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgYWRkQXN5bmNSZXBseUhhbmRsZXIo
KnRoaXMsIGxpc3RlbmVySUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoRGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNv
ZGVyICYmICFkZWNvZGVyLT5pc0ludmFsaWQoKSkKICAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgq
ZGVjb2RlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MmMwY2FkMWI4NjQ5YmIwNDQ4MDcyMzdjN2ZmZTVhNjkxMzFlYWRkNS4uM2Q4YWQwM2M0ZWE1NDNk
OTc5MDRjNDI2MWNkZGMwYmVmODMyZDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC03OSw3ICs3OSw2
IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQogTmV0d29ya1Byb2Nlc3NQ
cm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCiAg
ICAgOiBBdXhpbGlhcnlQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotICAgICwg
bV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNU
T01fUFJPVE9DT0xfTUFOQUdFUikKICAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHko
KnRoaXMpCiAjZW5kaWYKQEAgLTEzNSwxMyArMTM0LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdl
YlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtl
V2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBXVEZNb3ZlKHJlcGx5KSkpOwotCiAgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OkxhdW5jaGluZykgewotICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0
aW9uUmVxdWVzdHMrKzsKKyAgICAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIFdURk1vdmUocmVw
bHkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgb3Blbk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIFdURk1vdmUocmVwbHkpKTsKK30KIAordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQ
cm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQorewogICAgIGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTE1MSw3ICsx
NTIsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKICAgICB9CiAjZW5kaWYKIAotICAgIGNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxl
RG9tYWluKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVjdGlvbklk
ZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyIHx8
ICF3ZWFrVGhpcykgeworICAgICAgICAgICAgcmVwbHkoeyB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpIHx8IE9TKFdJTkRP
V1MpCisgICAgICAgIHJlcGx5KCpjb25uZWN0aW9uSWRlbnRpZmllcik7CisjZWxpZiBPUyhEQVJX
SU4pCisgICAgICAgIE1FU1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZBTElEKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLT5wb3J0KCkpKTsKKyAgICAgICAgcmVwbHkoSVBDOjpBdHRhY2htZW50IHsgY29ubmVj
dGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSk7CisjZWxz
ZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfSwgMCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9v
bCBiYWNrZ3JvdW5kKQpAQCAtMjk4LDIzICszMTMsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
ZwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50
aWZpZXIpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpOwotCi0gICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5Lgot
ICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKS5z
ZWNvbmQ7Ci0KLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKLSAg
ICByZXBseShjb25uZWN0aW9uSWRlbnRpZmllcik7Ci0jZWxpZiBPUyhEQVJXSU4pCi0gICAgTUVT
U0FHRV9DSEVDSyhNQUNIX1BPUlRfVkFMSUQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKSk7
Ci0gICAgcmVwbHkoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSNlbmRpZgotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYg
SEFWRShTRUNfS0VZX1BST1hZKQpAQCAtMzc1LDEwICszNzMsMTEgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwg
SVBDOjpDb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7ICsraSkKLSAgICAgICAgY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoZmFsc2UsIHsgfSksIDApOwotICAgIAotICAgIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisgICAgYXV0byBwZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzKTsKKyAgICBmb3IgKGF1
dG8mIHBlbmRpbmdDb25uZWN0aW9uUmVwbGllcyA6IHBlbmRpbmdDb25uZWN0aW9uUmVwbGllcykg
eworICAgICAgICBpZiAocGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmZpcnN0KQorICAgICAgICAg
ICAgb3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmZpcnN0LCBXVEZNb3ZlKHBlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5zZWNvbmQpKTsKKyAgICB9
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm9jZXNzUG9vbC5wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDQyZDVkODM3NWFhZDJmYTE1MmYxYjc3
OWYyOGVhOTU4MWE2YmRiYmMuLmNkZWU0OWIxNjhiOTIwMzkyYmE2OTIxNGYwMjA2ZjBkYzVmOTRi
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0yMTIsNyArMjEyLDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1l
c3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZENyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAg
ICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdl
YnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKQEAgLTI1MCw2ICsyNDksMTAgQEAgcHJpdmF0ZToKICAgICAvLyBQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIG9w
ZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
Jik7CisKKyAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Np
b25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAgICAgCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5n
Q29ubmVjdGlvblJlcXVlc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUz
OTdhY2IwNDVlMzM1NTBjYTY4Y2EyMDA1ZGZmZmNiMDg3YTFmYTUuLmM4ZDQ2OTJlMWI3NGUxNjY0
MzE0ZmI1MDA0OGNmNjM1ZWZhNmM4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
QEAgLTIxLDggKzIxLDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQotCiAg
ICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdl
LCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0
X3QgY2FsbGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377691</attachid>
            <date>2019-08-30 03:11:44 -0700</date>
            <delta_ts>2019-08-30 03:55:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201300-20190830121142.patch</filename>
            <type>text/plain</type>
            <size>27111</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3MmZhMmNjYmFjMTkwOTQw
ZWEzZmRjNzRlZTNiY2M4NDFiM2Y5MjMuLjZhNWJkZWZiNzZlNzk2YjM0YTM2OWQ5YWVmZTI4NDQz
YmFhZDI5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDgtMzAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgdG8g
Y3JlYXRlIGVhY2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgZm9yIGEgZ2l2ZW4gV2Vi
UHJvY2Vzcy4KKyAgICAgICAgUGFzcyB0aGUgcHJvY2VzcyBpZGVudGlmaWVyIGF0IGNyZWF0aW9u
IHRpbWUuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0byBoYXZlIHRoZSBtZXNzYWdlIHJlZ2lz
dHJ5IGJlIG1vdmVkIHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIHNvIGFzIHRvIGNoZWNrIHBv
cnQgYWN0aXZpdHkgYmV0d2VlbiBwcm9jZXNzZXMuCisgICAgICAgIFRoaXMgaWRlbnRpZmllciBt
aWdodCBhbHNvIGJlIHVzZWQgaW4gdGhlIGZ1dHVyZSBmb3Igb3RoZXIgY29ubmVjdGlvbnMgbGlr
ZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjb250ZXh0L2NsaWVudC9zZXJ2ZXIgaWRlbnRpZmll
cnMuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRv
U3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KToKKyAgICAgICAgQWxsb3cgdG8gcGFzcyBzZW5kIG9wdGlvbnMuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICBNYWtlIHVzZSBvZiBhc3luYyByZXBseSB0byBzaW1wbGlmeSB0aGUgaGFuZGxp
bmcgb2YgbGFtYmRhcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6b3Bl
bk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIwMTktMDgtMzAgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3NmZm
NGZlYTFiMjcyZjAxZmIyY2JmM2Q0MDg3OGJhNmY4YjFiMjQxLi45OGNiMjU4NjQwMzFhNDdmMGE2
ZjViMTlmZjhlMDBkNmNmOTVhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NzUsMTcgKzc1LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitSZWY8TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG5ldHdvcmtQcm9jZXNzLCBjb25uZWN0aW9uSWRl
bnRpZmllcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKG5ldHdvcmtQcm9jZXNzLCB3ZWJQcm9jZXNzSWRlbnRpZmllciwgY29ubmVjdGlv
bklkZW50aWZpZXIpKTsKIH0KIAotTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKICAgICAsIG1f
bmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
LCBtX21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRpZgorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxMzZkOTMwYTI4MzBj
NjBjOGM2OWZlZDkwZGMwYTAwNDllNmNjNGRkLi5mYWQ4YjZlOTAyNTExMGQ2MjFhM2UwOWUyMjIy
NTkyZDgxYjVhYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC04MSw3ICs4MSw3IEBA
IGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiBwdWJsaWM6CiAgICAgdXNpbmcg
UmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKIAotICAgIHN0
YXRpYyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAg
dmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAgIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpAQCAt
MTQ0LDggKzE0NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZVNvY2tldENoYW5uZWwo
dWludDY0X3QgaWRlbnRpZmllcik7CiAKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXI7IH0KKwogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3
b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkRmlu
aXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCkBAIC0zMDgsNiArMzEwLDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk+IG1fcGF5bWVudENvb3JkaW5hdG9yOwogI2VuZGlmCisg
ICAgY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4ZDQwMzNmY2UwOTI2NGZlMTk5YTg1
NTRjMDgwMDZlMTUyMjNhYzAxLi5lYjBmNjI5NjE5MjI4M2E0YjU1YmM1M2NlOGJhYzNmYjA1NDNm
MjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhB
dXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgTmV0
d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBpc09uTGluZSkgewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NDb25u
ZWN0aW9uIDogd2Vha1RoaXMtPm1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICBmb3Ig
KGF1dG8mIHdlYlByb2Nlc3NDb25uZWN0aW9uIDogd2Vha1RoaXMtPm1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLnZhbHVlcygpKQogICAgICAgICAgICAgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNldE9u
TGluZVN0YXRlKGlzT25MaW5lKTsKICAgICB9KTsKIApAQCAtMTg3LDEwICsxODcsOCBAQCBEb3du
bG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGNvdW50ID0g
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBhdXRv
JiBjKSB7Ci0gICAgICAgIHJldHVybiBjLnB0cigpID09ICZjb25uZWN0aW9uOwotICAgIH0pOwot
ICAgIEFTU0VSVF9VTlVTRUQoY291bnQsIGNvdW50ID09IDEpOworICAgIEFTU0VSVChtX3dlYlBy
b2Nlc3NDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCkpKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi53ZWJQ
cm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAogYm9vbCBOZXR3b3JrUHJvY2Vzczo6c2hvdWxkVGVy
bWluYXRlKCkKQEAgLTM4NCwxNiArMzgyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICAgICAgc3Vw
cGxlbWVudC0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbikKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3JlYXRlSVBDQ29ubmVjdGlvblRv
V2ViUHJvY2VzcygpCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpD
b25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwotCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgc29ja2V0UGFpci5zZXJ2ZXIpOwot
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsK
LQotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0UGFpci5jbGllbnQpOwot
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFNv
Y2tldCksIDApOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzb2NrZXRQYWlyLnNlcnZlciwg
SVBDOjpBdHRhY2htZW50IHsgc29ja2V0UGFpci5jbGllbnQgfSk7CiAjZWxpZiBPUyhEQVJXSU4p
CiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KICAgICBtYWNoX3BvcnRfdCBsaXN0
ZW5pbmdQb3J0ID0gTUFDSF9QT1JUX05VTEw7CkBAIC00MDYsMzcgKzM5OSw0MyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlz
U2VydmljZVdvcmtlclBybwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOiBDb3VsZCBu
b3QgYWxsb2NhdGUgbWFjaCBwb3J0LCByZXR1cm5lZCBwb3J0IHdhcyBpbnZhbGlkIik7CiAgICAg
ICAgIENSQVNIKCk7CiAgICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNyZWF0ZSgqdGhpcywgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQp
KTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9u
KSk7Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNI
X01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgeyBsaXN0ZW5pbmdQb3J0IH0sIElQQzo6QXR0
YWNobWVudCB7IGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EIH0pOwogI2Vs
aWYgT1MoV0lORE9XUykKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRl
bnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRl
bnRpZmllcikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNlcnZlciBh
bmQgY2xpZW50IGlkZW50aWZpZXJzIik7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotCi0gICAg
YXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgq
dGhpcywgc2VydmVySWRlbnRpZmllcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBw
ZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwotCi0gICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNv
Y2tldChjbGllbnRJZGVudGlmaWVyKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc2VydmVySWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50IHsgbGlzdGVuaW5nUG9ydCwg
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQgfSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIHsgfTsKICNlbmRpZgorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGlw
Y0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgaWYg
KCFpcGNDb25uZWN0aW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG5ld0Nvbm5lY3Rpb24gPSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCBpcGNDb25uZWN0
aW9uLT5maXJzdCk7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb24uZ2V0KCk7
CisKKyAgICBBU1NFUlQoIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgV1RGTW92
ZShuZXdDb25uZWN0aW9uKSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGlwY0Nv
bm5lY3Rpb24tPnNlY29uZCkpOwogCi0gICAgaWYgKCFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+c2V0T25M
aW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKKyAg
ICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0
b24oKS5vbkxpbmUoKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlm
IChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcykgewogICAgICAgICBBU1NF
UlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKICAgICAgICAg
QVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAg
ICAgICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y3JlYXRlKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0
aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lz
dHJhYmxlRG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKQEAgLTQ1MCw3ICs0
NDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclBybwogICAgIFVOVVNFRF9QQVJBTShyZWdpc3Ry
YWJsZURvbWFpbik7CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5l
Y3Rpb24obV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOworICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkK
QEAgLTIwODIsNyArMjA4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVU
b1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKICAgICBwbGF0Zm9y
bVByZXBhcmVUb1N1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICBwbGF0Zm9y
bVN5bmNBbGxDb29raWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKKyAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAg
Y29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTIxNTYsNyArMjE1NSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAjZW5kaWYKIAogICAgIHBsYXRmb3JtUHJvY2Vz
c0RpZFJlc3VtZSgpOwotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zKQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9uKCk7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZTE4ZjJkNWRhMjVmNjI3OGFjMjI3NzJmODA0NGE5
YmNlM2QzMDliNi4uN2Y0YjVkMmU2ZWM4ZTRiY2I0NzFlY2VlZDU5MjI0ZWU5MGNjZTY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzkw
LDcgKzM5MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGlu
aXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYm
KTsKLSAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CisgICAg
dm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNo
bWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC00NzksNyArNDc5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVTdG9yYWdlUXVvdGEoY29uc3QgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMmKTsKIAogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4K
LSAgICBWZWN0b3I8UmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwg
UmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnM7CiAKICAgICBTdHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1Nl
dENhY2hlTW9kZWwgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNGZjMTkyMGFkYWI3NWRk
YmNhZTU1NTM1MTBiOWMxNmZiNDdhZmQwYi4uY2E2NGY1OTM3MWFmMDE0NjEwMjE5YjBlOTVkNzg4
M2UzZGJmMmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1By
b2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9y
IGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQorICAgIENyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBj
b25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogI2lmIFVTRShTT1VQKQogICAgIFNldElnbm9y
ZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCBhZGM0YWFkOTg4MThmYTA2YWZjNmJlODk2MTQ1ZDU2MzE1ODMy
ZGI3Li44NDZmZWRhNjFkOWE2YjIzYzYyYThkOTE4MzVjNTM4ZjMyY2Q5OWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0xODMsMTUgKzE4MywxNSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWUoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5k
bGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+ID0g
eyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9
IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMg
PSB7IH0pOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIFU+Ci0gICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21w
bGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQor
ICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhh
bmRsZXIsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCA9IHsgfSwgT3B0aW9uU2V0
PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQogICAgIHsKLSAgICAgICAgc2VuZFdpdGhB
c3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVw
bHk8VCwgQz4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRl
c3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQg
YWRkQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKERlY29kZXIqCiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4gdGFr
ZUFzeW5jUmVwbHlIYW5kbGVyKENvbm5lY3Rpb24mLCB1aW50NjRfdCk7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEM+Ci12b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBs
eShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMm
JiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNl
bmRPcHRpb24+IHNlbmRPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMs
IEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIApAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRs
ZXIsIHVpbnQ2NF90CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG5leHRBc3luY1JlcGx5SGFu
ZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgIGVuY29kZXIt
PmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKLSAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVu
Y29kZXIpLCB7IH0pOworICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRp
b25zKTsKICAgICBhZGRBc3luY1JlcGx5SGFuZGxlcigqdGhpcywgbGlzdGVuZXJJRCwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChEZWNvZGVyKiBkZWNv
ZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgIWRlY29kZXItPmlzSW52YWxp
ZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYzBjYWQxYjg2NDliYjA0NDgwNzIzN2M3
ZmZlNWE2OTEzMWVhZGQ1Li4zNmRkMzY5NzMyNjQ4MGRiZjMzN2M0NmZmZjhlMDg1MDQ2YWVlMDc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTc5LDcgKzc5LDYgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlQ2FsbGJhY2tJRCgpCiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKICAgICA6IEF1eGlsaWFyeVByb2Nlc3NQcm94
eShwcm9jZXNzUG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAgICAsIG1f
cHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVx
dWVzdHMoMCkKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAg
ICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgqdGhpcykKICNlbmRpZgpAQCAtMTA0LDgg
KzEwMyw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKICAg
ICBpZiAobV9kb3dubG9hZFByb3h5TWFwKQogICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAtPmlu
dmFsaWRhdGUoKTsKIAotICAgIGZvciAoYXV0byYgcmVwbHkgOiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcykKLSAgICAgICAgcmVwbHkuc2Vjb25kKHsgfSk7CisgICAgZm9yIChhdXRvJiByZXF1
ZXN0IDogbV9jb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIHJlcXVlc3QucmVw
bHkoeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25z
KFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKQEAgLTEzNSwx
MyArMTM0LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93
bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vz
c1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkp
LCBXVEZNb3ZlKHJlcGx5KSkpOwotCi0gICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkxhdW5jaGlu
ZykgewotICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMrKzsKKyAgICBtX2Nv
bm5lY3Rpb25SZXF1ZXN0cy5hZGQoKyttX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgQ29u
bmVjdGlvblJlcXVlc3QgeyBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBXVEZNb3ZlKHJl
cGx5KSB9KTsKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIG9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb25uZWN0
aW9uUmVxdWVzdElkZW50aWZpZXIsIHdlYlByb2Nlc3NQcm94eSk7Cit9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBjb25u
ZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
KQorewogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwogICAgIFJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKQEAgLTE1MSw3ICsxNTEsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKICAgICB9CiAj
ZW5kaWYKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGlzU2VydmljZVdvcmtlclByb2Nl
c3MsIHJlZ2lzdHJhYmxlRG9tYWluKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVy
KCksIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0
cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBj
b25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikg
eworICAgICAgICAgICAgLy8gTmV0d29yayBwcm9jZXNzIHByb2JhYmx5IGNyYXNoZWQsIHRoZSBj
b25uZWN0aW9uIHJlcXVlc3Qgc2hvdWxkIGhhdmUgYmVlbiBtb3ZlZC4KKyAgICAgICAgICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25SZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVlc3RzLmNvbnRh
aW5zKGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcikpOworICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy50YWtlKGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcik7
CisKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKKyAgICAgICAg
cmVxdWVzdC5yZXBseSgqY29ubmVjdGlvbklkZW50aWZpZXIpOworI2VsaWYgT1MoREFSV0lOKQor
ICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmll
ci0+cG9ydCgpKSk7CisgICAgICAgIHJlcXVlc3QucmVwbHkoSVBDOjpBdHRhY2htZW50IHsgY29u
bmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSk7Cisj
ZWxzZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQo
Ym9vbCBiYWNrZ3JvdW5kKQpAQCAtMjMwLDE4ICsyNTEsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0
ZXMoKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4sIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gcGVuZGluZ1JlcGxpZXM7Ci0gICAgcGVuZGluZ1JlcGxpZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5zaXplKCkpOwotICAgIGZv
ciAoYXV0byYgcmVwbHkgOiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcykgewotICAgICAgICBp
ZiAocmVwbHkuZmlyc3QpCi0gICAgICAgICAgICBwZW5kaW5nUmVwbGllcy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIobWFrZVJlZlB0cihyZXBseS5maXJzdC5nZXQoKSksIFdURk1vdmUocmVwbHkuc2Vj
b25kKSkpOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4sIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gcGVuZGluZ1JlcXVlc3RzOworICAgIHBlbmRpbmdSZXF1ZXN0cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fY29ubmVjdGlvblJlcXVlc3RzLnNpemUoKSk7CisgICAgZm9yIChh
dXRvJiByZXF1ZXN0IDogbV9jb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKHJlcXVlc3Qud2ViUHJvY2VzcykKKyAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0cy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZVJlZlB0cihyZXF1ZXN0LndlYlByb2Nlc3Mu
Z2V0KCkpLCBXVEZNb3ZlKHJlcXVlc3QucmVwbHkpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlcGx5LnNlY29uZCh7IH0pOworICAgICAgICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwog
ICAgIH0KLSAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5jbGVhcigpOworICAgIG1fY29u
bmVjdGlvblJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nl
c3MgbWFuYWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRo
aXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgotICAgIG1fcHJvY2Vzc1Bvb2wubmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCp0aGlzLCBXVEZNb3ZlKHBlbmRpbmdSZXBsaWVzKSk7CisgICAgbV9w
cm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdURk1vdmUocGVuZGluZ1Jl
cXVlc3RzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0
YXRlcygpCkBAIC0yOTgsMjMgKzMxOSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nCiB7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikK
LXsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7Ci0K
LSAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0gICAgYXV0
byByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpLnNlY29uZDsK
LQotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5ET1dTKQotICAgIHJlcGx5
KGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbGlmIE9TKERBUldJTikKLSAgICBNRVNTQUdFX0NI
RUNLKE1BQ0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpKTsKLSAgICBy
ZXBseShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlm
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBIQVZFKFNF
Q19LRVlfUFJPWFkpCkBAIC0zNzUsMTAgKzM3OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNv
bgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsgKytpKQotICAgICAgICBjb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhmYWxzZSwgeyB9KSwgMCk7Ci0gICAgCi0gICAgbV9udW1QZW5kaW5nQ29u
bmVjdGlvblJlcXVlc3RzID0gMDsKKyAgICBhdXRvIGNvbm5lY3Rpb25SZXF1ZXN0cyA9IFdURk1v
dmUobV9jb25uZWN0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlvblJlcXVl
c3QgOiBjb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rp
b25SZXF1ZXN0LndlYlByb2Nlc3MpCisgICAgICAgICAgICBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKmNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MsIFdURk1vdmUoY29ubmVjdGlvblJl
cXVlc3QucmVwbHkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvblJlcXVl
c3QucmVwbHkoeyB9KTsKKyAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9w
cm9jZXNzUG9vbC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDQy
ZDVkODM3NWFhZDJmYTE1MmYxYjc3OWYyOGVhOTU4MWE2YmRiYmMuLjg2Zjk4ZjU4ZTYwMGIyMTFm
ZTVlNDJiMmVhNzYxNmE5M2I0ZWE0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMTIsNyArMjEyLDYgQEAg
cHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKLSAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0
IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJz
aXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTI1MCwxMCArMjQ5LDE4IEBAIHByaXZh
dGU6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92
ZXJyaWRlOwogCisgICAgdm9pZCBvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90
IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5Jik7CisKKyAgICB2
b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworCiAgICAgV2ViUHJvY2Vzc1Bvb2wmIG1f
cHJvY2Vzc1Bvb2w7Ci0gICAgCi0gICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJl
cXVlc3RzOwotICAgIERlcXVlPHN0ZDo6cGFpcjxXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CisKKyAgICBzdHJ1Y3QgQ29u
bmVjdGlvblJlcXVlc3QgeworICAgICAgICBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4gd2ViUHJv
Y2VzczsKKyAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkgcmVwbHk7CisgICAgfTsKKyAgICB1aW50NjRfdCBt
X2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb25uZWN0aW9uUmVxdWVzdD4gbV9jb25uZWN0aW9uUmVxdWVzdHM7CiAKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGlu
Z0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTM5N2FjYjA0NWUzMzU1MGNhNjhj
YTIwMDVkZmZmY2IwODdhMWZhNS4uYzhkNDY5MmUxYjc0ZTE2NjQzMTRmYjUwMDQ4Y2Y2MzVlZmE2
YzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsOCArMjEsNiBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJl
Y2VpdmVyIHsKLSAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCi0KICAgICBEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKQogCiAgICAgRGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377695</attachid>
            <date>2019-08-30 03:55:17 -0700</date>
            <delta_ts>2019-09-01 23:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201300-20190830125515.patch</filename>
            <type>text/plain</type>
            <size>27137</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyOGEwYjNiYjJlNzk1ZmZk
YTRlNGRjMjM0NDYyOTU4MTVjYzZjMGUuLjM0N2YyYTA5NmU0Y2E0MmJjNTZhNzRlMDA5Yjg2OGQy
YjIxNDUxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDgtMzAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgdG8g
Y3JlYXRlIGVhY2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgZm9yIGEgZ2l2ZW4gV2Vi
UHJvY2Vzcy4KKyAgICAgICAgUGFzcyB0aGUgcHJvY2VzcyBpZGVudGlmaWVyIGF0IGNyZWF0aW9u
IHRpbWUuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0byBoYXZlIHRoZSBtZXNzYWdlIHJlZ2lz
dHJ5IGJlIG1vdmVkIHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIHNvIGFzIHRvIGNoZWNrIHBv
cnQgYWN0aXZpdHkgYmV0d2VlbiBwcm9jZXNzZXMuCisgICAgICAgIFRoaXMgaWRlbnRpZmllciBt
aWdodCBhbHNvIGJlIHVzZWQgaW4gdGhlIGZ1dHVyZSBmb3Igb3RoZXIgY29ubmVjdGlvbnMgbGlr
ZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjb250ZXh0L2NsaWVudC9zZXJ2ZXIgaWRlbnRpZmll
cnMuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRv
U3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KToKKyAgICAgICAgQWxsb3cgdG8gcGFzcyBzZW5kIG9wdGlvbnMuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICBNYWtlIHVzZSBvZiBhc3luYyByZXBseSB0byBzaW1wbGlmeSB0aGUgaGFuZGxp
bmcgb2YgbGFtYmRhcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6b3Bl
bk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIwMTktMDgtMzAgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW1F0XSBsb2FkaW5n
Q2hhbmdlZCBzaWduYWwgcGFyYW1ldGVyIGlzIHVudXNhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDc2ZmY0ZmVhMWIyNzJmMDFmYjJjYmYzZDQwODc4YmE2ZjhiMWIyNDEuLjk4
Y2IyNTg2NDAzMWE0N2YwYTZmNWIxOWZmOGUwMGQ2Y2Y5NWFmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC03NSwxNyArNzUsMTggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cz4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nl
c3MsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobmV0d29ya1Byb2Nlc3MsIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBjb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCi1OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIpCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIDogbV9jb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwg
KnRoaXMpKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICNpZiBFTkFC
TEUoV0VCX1JUQykKICAgICAsIG1fbWRuc1JlZ2lzdGVyKCp0aGlzKQogI2VuZGlmCisgICAgLCBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDEzNmQ5MzBhMjgzMGM2MGM4YzY5ZmVkOTBkYzBhMDA0OWU2Y2M0ZGQuLmZhZDhiNmU5MDI1
MTEwZDYyMWEzZTA5ZTIyMjI1OTJkODFiNWFiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1
YmxpYzoKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwogCi0gICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoTmV0d29y
a1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
OwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOyB9CkBAIC0xNDQsOCArMTQ0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVt
b3ZlU29ja2V0Q2hhbm5lbCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAorICAgIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93
ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgotICAgIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KTsKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKQEAgLTMwOCw2ICsz
MTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gbV9wYXltZW50Q29vcmRp
bmF0b3I7CiAjZW5kaWYKKyAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDhkNDAz
M2ZjZTA5MjY0ZmUxOTlhODU1NGMwODAwNmUxNTIyM2FjMDEuLmViMGY2Mjk2MTkyMjgzYTRiNTVi
YzUzY2U4YmFjM2ZiMDU0M2YyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgTmV0d29ya1Byb2Nlc3M6
Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWUKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlzdGVu
ZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGlzT25MaW5lKSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZvciAoYXV0
byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiB3ZWFrVGhpcy0+bV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMpCisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiB3ZWFrVGhpcy0+
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgICAgICB3ZWJQcm9jZXNz
Q29ubmVjdGlvbi0+c2V0T25MaW5lU3RhdGUoaXNPbkxpbmUpOwogICAgIH0pOwogCkBAIC0xODcs
MTAgKzE4Nyw4IEBAIERvd25sb2FkTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkTWFu
YWdlcigpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogewot
ICAgIGF1dG8gY291bnQgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmVBbGxNYXRjaGlu
ZyhbJl0gKGNvbnN0IGF1dG8mIGMpIHsKLSAgICAgICAgcmV0dXJuIGMucHRyKCkgPT0gJmNvbm5l
Y3Rpb247Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjb3VudCwgY291bnQgPT0gMSk7Cisg
ICAgQVNTRVJUKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ud2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92
ZShjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOwogfQogCiBib29sIE5ldHdvcmtQ
cm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQpAQCAtMzg0LDE2ICszODIsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9u
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQorc3RhdGljIGlubGluZSBPcHRpb25hbDxzdGQ6
OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBjcmVh
dGVJUENDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09D
S0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7Ci0KLSAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBzb2Nr
ZXRQYWlyLnNlcnZlcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1v
dmUoY29ubmVjdGlvbikpOwotCi0gICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRQYWlyLmNsaWVudCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNv
Y2tldFBhaXIuc2VydmVyLCBJUEM6OkF0dGFjaG1lbnQgeyBzb2NrZXRQYWlyLmNsaWVudCB9KTsK
ICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAg
IG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQgPSBNQUNIX1BPUlRfTlVMTDsKQEAgLTQwNiwzNyAr
Mzk5LDQzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6IENvdWxkIG5vdCBhbGxvY2F0ZSBtYWNoIHBvcnQsIHJldHVybmVkIHBvcnQgd2Fz
IGludmFsaWQiKTsKICAgICAgICAgQ1JBU0goKTsKICAgICB9Ci0KLSAgICAvLyBDcmVhdGUgYSBs
aXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChX
VEZNb3ZlKGNvbm5lY3Rpb24pKTsKLQotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxp
c3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKLSAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciB7IGxpc3Rlbmlu
Z1BvcnQgfSwgSVBDOjpBdHRhY2htZW50IHsgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQgfSk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOwogICAgIGlmICghSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhzZXJ2ZXJJZGVu
dGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgc2VydmVyIGFuZCBjbGllbnQgaWRlbnRpZmllcnMiKTsKICAgICAgICAgQ1JBU0go
KTsKICAgICB9Ci0KLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBzZXJ2ZXJJZGVudGlmaWVyKTsKLSAgICBtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uKSk7Ci0KLSAgICBJUEM6OkF0
dGFjaG1lbnQgY2xpZW50U29ja2V0KGNsaWVudElkZW50aWZpZXIpOwotICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFNvY2tldCksIDApOworICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihzZXJ2ZXJJZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQg
eyBsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCB9KTsKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OwogI2VuZGlmCit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IGNyZWF0ZUlQQ0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKTsKKyAgICBpZiAoIWlwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gbmV3Q29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIGlkZW50
aWZpZXIsIGlwY0Nvbm5lY3Rpb24tPmZpcnN0KTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gbmV3
Q29ubmVjdGlvbi5nZXQoKTsKKworICAgIEFTU0VSVCghbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMu
Y29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChp
ZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0Nvbm5lY3Rpb24pKTsKKworICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25kKSk7CiAKLSAgICBpZiAoIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMubGFzdCgpLT5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9u
KCkub25MaW5lKCkpOworICAgIGNvbm5lY3Rpb24uc2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRl
Tm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MgJiYgIW1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgeworICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
KSB7CiAgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVt
ZW50KCkpOwogICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1
dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNy
ZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsK
ICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFk
ZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigp
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKIApAQCAtNDUwLDcgKzQ0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgVU5V
U0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogCi0gICAgbV9zdG9yYWdlTWFu
YWdlclNldC0+YWRkQ29ubmVjdGlvbihtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNv
bm5lY3Rpb24oKSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbihjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2Fj
aGVkQ3JlZGVudGlhbHMoKQpAQCAtMjA4Miw3ICsyMDgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3Vz
cGVuZAogICAgIHBsYXRmb3JtUHJlcGFyZVRvU3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOwogICAgIHBsYXRmb3JtU3luY0FsbENvb2tpZXMoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
KQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnZh
bHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMjE1
Niw3ICsyMTU1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNlbmRpZgogCiAg
ICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKCk7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmVu
ZFN1c3BlbnNpb24oKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlMThmMmQ1ZGEyNWY2
Mjc4YWMyMjc3MmY4MDQ0YTliY2UzZDMwOWI2Li43ZjRiNWQyZTZlYzhlNGJjYjQ3MWVjZWVkNTky
MjRlZTkwY2NlNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zOTAsNyArMzkwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhh
bmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Ms
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTQ3
OSw3ICs0NzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVN0b3JhZ2VRdW90YShj
b25zdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ29ubmVjdGlvbnMg
dG8gV2ViUHJvY2Vzc2VzLgotICAgIFZlY3RvcjxSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uczsKIAogICAgIFN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsK
ICAgICBib29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA0ZmMxOTIwYWRhYjc1ZGRiY2FlNTU1MzUxMGI5YzE2ZmI0N2FmZDBiLi5jYTY0ZjU5MzcxYWYw
MTQ2MTAyMTliMGU5NWQ3ODgzZTNkYmYyZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIElu
aXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgIyBDcmVhdGVz
IGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcwotICAgIENy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJv
Y2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pCisgICAg
Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pIC0+IChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNP
VVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGFkYzRhYWQ5ODgxOGZhMDZhZmM2
YmU4OTYxNDVkNTYzMTU4MzJkYjcuLjg0NmZlZGE2MWQ5YTZiMjNjNjJhOGQ5MTgzNWM1MzhmMzJj
ZDk5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTE4Mywx
NSArMTgzLDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZSgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9u
SGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRp
b24+IHNlbmRPcHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9u
PiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQywgdHlwZW5hbWUgVT4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQgPSB7IH0pCisgICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2Us
IEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklE
ID0geyB9LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewot
ICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHk8VCwgQz4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgICAg
IHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CiAg
ICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CkBAIC00NDQs
NyArNDQ0LDcgQEAgdm9pZCBhZGRBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiwgdWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlcioKIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYsIHVpbnQ2NF90
KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgQ29ubmVjdGlvbjo6
c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBs
eShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCkBAIC00NTIsNyArNDUy
LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMm
JiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0g
bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJ
RCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwotICAgIHNlbmRN
ZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHsgfSk7CisgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShl
bmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIGFkZEFzeW5jUmVwbHlIYW5kbGVyKCp0aGlzLCBs
aXN0ZW5lcklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKERlY29kZXIqIGRlY29kZXIpIG11dGFibGUgewogICAgICAgICBpZiAoZGVjb2RlciAmJiAh
ZGVjb2Rlci0+aXNJbnZhbGlkKCkpCiAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29kZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY4Y2RhZGI3
Njg5OGNhMzk3ODQ3OThmMjM5OTg3ZDMyZGZlMzk5ZTguLmFjM2E2MTQ1OWM0ZWUwZTA2MWY5NmFh
OWIxZTM5OGE1ZjM3YWEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzksNyArNzksNiBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVDYWxsYmFja0lEKCkKIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5l
dHdvcmtQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQogICAgIDogQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eSgpKQogICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKLSAgICAsIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KCp0aGlzKQog
I2VuZGlmCkBAIC0xMDQsOCArMTAzLDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQ
cm9jZXNzUHJveHkoKQogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93
bmxvYWRQcm94eU1hcC0+aW52YWxpZGF0ZSgpOwogCi0gICAgZm9yIChhdXRvJiByZXBseSA6IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzKQotICAgICAgICByZXBseS5zZWNvbmQoeyB9KTsKKyAg
ICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52YWx1ZXMoKSkKKyAg
ICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hP
cHRpb25zKQpAQCAtMTM1LDEzICsxMzQsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VXZWFrUHRy
KHdlYlByb2Nlc3NQcm94eSksIFdURk1vdmUocmVwbHkpKSk7Ci0KLSAgICBpZiAoc3RhdGUoKSA9
PSBTdGF0ZTo6TGF1bmNoaW5nKSB7Ci0gICAgICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1
ZXN0cysrOworICAgIG1fY29ubmVjdGlvblJlcXVlc3RzLmFkZCgrK21fY29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWVzdCB7IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQ
cm94eSksIFdURk1vdmUocmVwbHkpIH0pOworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpMYXVu
Y2hpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgb3Blbk5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgd2ViUHJvY2Vzc1Byb3h5KTsK
K30KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHkpCit7CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0g
ZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW47CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTUxLDcgKzE1MSwyOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2NlcwogICAgIH0KICNlbmRpZgogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4pLCAwLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgY29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3Jl
UHJvY2Vzc0lkZW50aWZpZXIoKSwgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVE
b21haW4gfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQ
cm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRl
bnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nlc3MgcHJvYmFi
bHkgY3Jhc2hlZCwgdGhlIGNvbm5lY3Rpb24gcmVxdWVzdCBzaG91bGQgaGF2ZSBiZWVuIG1vdmVk
LgorICAgICAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVlc3RzLmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9jb25uZWN0
aW9uUmVxdWVzdHMuY29udGFpbnMoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IG1fY29ubmVjdGlvblJlcXVlc3RzLnRha2UoY29ubmVjdGlvblJl
cXVlc3RJZGVudGlmaWVyKTsKKworI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhX
SU5ET1dTKQorICAgICAgICByZXF1ZXN0LnJlcGx5KCpjb25uZWN0aW9uSWRlbnRpZmllcik7Cisj
ZWxpZiBPUyhEQVJXSU4pCisgICAgICAgIE1FU1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZBTElEKGNv
bm5lY3Rpb25JZGVudGlmaWVyLT5wb3J0KCkpKTsKKyAgICAgICAgcmVxdWVzdC5yZXBseShJUEM6
OkF0dGFjaG1lbnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCB9KTsKKyNlbHNlCisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYK
KyAgICB9LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6
ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpCkBAIC0yMzAsMTggKzI1MSwxOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7CiAgICAg
Y2xlYXJDYWxsYmFja1N0YXRlcygpOwogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVwbGllczsKLSAgICBwZW5kaW5n
UmVwbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZXBseSA6IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzKSB7Ci0gICAgICAgIGlmIChyZXBseS5maXJzdCkKLSAgICAgICAgICAgIHBlbmRpbmdSZXBs
aWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlUmVmUHRyKHJlcGx5LmZpcnN0LmdldCgpKSwg
V1RGTW92ZShyZXBseS5zZWNvbmQpKSk7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVxdWVzdHM7CisgICAgcGVuZGlu
Z1JlcXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jb25uZWN0aW9uUmVxdWVzdHMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52YWx1
ZXMoKSkgeworICAgICAgICBpZiAocmVxdWVzdC53ZWJQcm9jZXNzKQorICAgICAgICAgICAgcGVu
ZGluZ1JlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlUmVmUHRyKHJl
cXVlc3Qud2ViUHJvY2Vzcy5nZXQoKSksIFdURk1vdmUocmVxdWVzdC5yZXBseSkpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVwbHkuc2Vjb25kKHsgfSk7CisgICAgICAgICAgICByZXF1
ZXN0LnJlcGx5KHsgfSk7CiAgICAgfQotICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmNs
ZWFyKCk7CisgICAgbV9jb25uZWN0aW9uUmVxdWVzdHMuY2xlYXIoKTsKIAogICAgIC8vIFRlbGwg
dGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsg
cHJvY2VzcyBwcm94eS4gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV9w
cm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdURk1vdmUocGVuZGluZ1Jl
cGxpZXMpKTsKKyAgICBtX3Byb2Nlc3NQb29sLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgqdGhpcywg
V1RGTW92ZShwZW5kaW5nUmVxdWVzdHMpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpjbGVhckNhbGxiYWNrU3RhdGVzKCkKQEAgLTI5OCwyMyArMzE5LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmcKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuaXNFbXB0eSgpKTsKLQotICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlv
biByZXBseS4KLSAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFr
ZUZpcnN0KCkuc2Vjb25kOwotCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpIHx8IE9TKFdJ
TkRPV1MpCi0gICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwotI2VsaWYgT1MoREFSV0lO
KQotICAgIE1FU1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZBTElEKGNvbm5lY3Rpb25JZGVudGlmaWVy
LnBvcnQoKSkpOwotICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmll
ci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsK
ICAgICBhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25J
RCk7CkBAIC0zOTQsMTAgKzM5OCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsgKytpKQotICAgICAgICBjb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhmYWxzZSwgeyB9KSwgMCk7Ci0gICAgCi0gICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJl
cXVlc3RzID0gMDsKKyAgICBhdXRvIGNvbm5lY3Rpb25SZXF1ZXN0cyA9IFdURk1vdmUobV9jb25u
ZWN0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlvblJlcXVlc3QgOiBjb25u
ZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25SZXF1ZXN0
LndlYlByb2Nlc3MpCisgICAgICAgICAgICBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKmNv
bm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MsIFdURk1vdmUoY29ubmVjdGlvblJlcXVlc3QucmVw
bHkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvblJlcXVlc3QucmVwbHko
eyB9KTsKKyAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm9jZXNzUG9v
bC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZiMzAwMmNmNjYx
YmYxOTEyYWEwODUxNDE3MmY2YjQ2ZjAxOTRlZWYuLjI5ZDA1MDQxMDJjOWMzYzkwODdiNTdkYzkz
YmRjYmQ5ZjhkNmU0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMTIsNyArMjEyLDYgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2
b2lkIGRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0
YWNobWVudCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGRpZEZldGNoV2Vic2l0ZURh
dGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKICAgICB2b2lkIGRp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMjUwLDEyICsyNDks
MTggQEAgcHJpdmF0ZToKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQg
ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIG9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24odWludDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkm
KTsKKwogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lv
bklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAgICBXZWJQcm9j
ZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKLSAgICAKLSAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdD
b25uZWN0aW9uUmVxdWVzdHM7Ci0gICAgRGVxdWU8c3RkOjpwYWlyPFdlYWtQdHI8V2ViUHJvY2Vz
c1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKworICAg
IHN0cnVjdCBDb25uZWN0aW9uUmVxdWVzdCB7CisgICAgICAgIFdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiB3ZWJQcm9jZXNzOworICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSByZXBseTsKKyAgICB9OworICAg
IHVpbnQ2NF90IG1fY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIHsgMCB9OworICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbm5lY3Rpb25SZXF1ZXN0PiBtX2Nvbm5lY3Rpb25SZXF1ZXN0czsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEp
Pj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0
YUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiZWUyZDgxYTJm
Nzk1NGU0MGU1YzRjZDA2ZmIxMmMyNDQ5ZGJjZjlkLi4wYzhmNzYyN2FjNzJmYTRhNzc4MmFlNTk0
YjQ3MGJhYjUzYjg0N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw4
ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewotICAgIERpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKLQogICAgIERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVE
YXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377840</attachid>
            <date>2019-09-01 23:06:48 -0700</date>
            <delta_ts>2019-09-02 02:31:45 -0700</delta_ts>
            <desc>Fix Wincairo</desc>
            <filename>bug-201300-20190902080646.patch</filename>
            <type>text/plain</type>
            <size>28121</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0ODA2ZWVjNDFjZTEzY2Q5
ZTJkNDg3ZjA0YTcxYWQzNWM3MDlhODIuLjdhMjY2NDZlZmJjYzBiMDM0ZDc2YmVkYzk2Y2Q1YmNm
ODE0NmVlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDktMDEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1ha2Ugc3VyZSB0
byBjcmVhdGUgZWFjaCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBmb3IgYSBnaXZlbiBX
ZWJQcm9jZXNzLgorICAgICAgICBQYXNzIHRoZSBwcm9jZXNzIGlkZW50aWZpZXIgYXQgY3JlYXRp
b24gdGltZS4KKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHRvIGhhdmUgdGhlIG1lc3NhZ2UgcmVn
aXN0cnkgYmUgbW92ZWQgdG8gTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgc28gYXMgdG8gY2hlY2sg
cG9ydCBhY3Rpdml0eSBiZXR3ZWVuIHByb2Nlc3Nlcy4KKyAgICAgICAgVGhpcyBpZGVudGlmaWVy
IG1pZ2h0IGFsc28gYmUgdXNlZCBpbiB0aGUgZnV0dXJlIGZvciBvdGhlciBjb25uZWN0aW9ucyBs
aWtlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQvY2xpZW50L3NlcnZlciBpZGVudGlm
aWVycy4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpyZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJl
VG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aEFz
eW5jUmVwbHkpOgorICAgICAgICBBbGxvdyB0byBwYXNzIHNlbmQgb3B0aW9ucy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIE1ha2UgdXNlIG9mIGFzeW5jIHJlcGx5IHRvIHNpbXBsaWZ5IHRoZSBoYW5k
bGluZyBvZiBsYW1iZGFzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpv
cGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFdvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGYwZDU4OGQ3ODgwMDg5YzY4NWNiZjkwYmU3NWZm
NjM4ZGY2ZjM1Ny4uMGI2ZjQ2NDk2NTI3NzQ4MmJkMDUyYWJlZDgwODQ5Y2M1NzUzZjJjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjU1NTMsMTEgKzI1NTUzLDExIEBACiAJCQkJQzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8q
IFdITFNMTGV4ZXIuaCAqLywKIAkJCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuY3BwICovLAogCQkJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAv
KiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovLAotCQkJCTUyMjU2Q0FBMjMwRjE0QUQwMDQz
RTEyRiAvKiBXSExTTE5hbWVTcGFjZS5oICovLAogCQkJCUMyMzRBOThEMjFFODg4ODQwMDNDOTg0
RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLywKIAkJCQlDMjM0QTk4RTIxRTg4ODg1MDAzQzk4
NEQgLyogV0hMU0xOYW1lQ29udGV4dC5oICovLAogCQkJCUMyMzRBOThBMjFFODg4M0UwMDNDOTg0
RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8sCiAJCQkJQzIzNEE5OEMyMUU4ODgzRTAwM0M5
ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8sCisJCQkJNTIyNTZDQUEyMzBGMTRBRDAwNDNF
MTJGIC8qIFdITFNMTmFtZVNwYWNlLmggKi8sCiAJCQkJQzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5
IC8qIFdITFNMUGFyc2VyLmNwcCAqLywKIAkJCQlDMjFCRjczODIxQ0Q4QTAzMDAyMjc5NzkgLyog
V0hMU0xQYXJzZXIuaCAqLywKIAkJCQk1MjkxNEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQ
YXJzaW5nTW9kZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3NmZmNGZl
YTFiMjcyZjAxZmIyY2JmM2Q0MDg3OGJhNmY4YjFiMjQxLi45OGNiMjU4NjQwMzFhNDdmMGE2ZjVi
MTlmZjhlMDBkNmNmOTVhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNzUs
MTcgKzc1LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitSZWY8TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG5ldHdvcmtQcm9jZXNzLCBjb25uZWN0aW9uSWRlbnRp
ZmllcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzLCB3ZWJQcm9jZXNzSWRlbnRpZmllciwgY29ubmVjdGlvbklk
ZW50aWZpZXIpKTsKIH0KIAotTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKICAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNl
cnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKICAgICAsIG1fbmV0
d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgLCBt
X21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRpZgorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmll
cih3ZWJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxMzZkOTMwYTI4MzBjNjBj
OGM2OWZlZDkwZGMwYTAwNDllNmNjNGRkLi5mYWQ4YjZlOTAyNTExMGQ2MjFhM2UwOWUyMjIyNTky
ZDgxYjVhYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC04MSw3ICs4MSw3IEBAIGNs
YXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiBwdWJsaWM6CiAgICAgdXNpbmcgUmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKIAotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShOZXR3b3JrUHJvY2Vz
cyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmly
dHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAgIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpAQCAtMTQ0
LDggKzE0NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZVNvY2tldENoYW5uZWwodWlu
dDY0X3QgaWRlbnRpZmllcik7CiAKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7
IH0KKwogcHJpdmF0ZToKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3Jr
UHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkRmluaXNo
UHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogCkBAIC0zMDgsNiArMzEwLDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk+IG1fcGF5bWVudENvb3JkaW5hdG9yOwogI2VuZGlmCisgICAg
Y29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4ZDQwMzNmY2UwOTI2NGZlMTk5YTg1NTRj
MDgwMDZlMTUyMjNhYzAxLi4yYTM2NjZiM2U5MmY1MmZmNDYwZDExMWI3NTJlMmU0NGFhOGFmNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMTYwLDcgKzE2MCw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhp
bGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgTmV0d29y
a1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oYm9vbCBpc09uTGluZSkgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3NDb25uZWN0
aW9uIDogd2Vha1RoaXMtPm1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICBmb3IgKGF1
dG8mIHdlYlByb2Nlc3NDb25uZWN0aW9uIDogd2Vha1RoaXMtPm1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLnZhbHVlcygpKQogICAgICAgICAgICAgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNldE9uTGlu
ZVN0YXRlKGlzT25MaW5lKTsKICAgICB9KTsKIApAQCAtMTg3LDEwICsxODcsOCBAQCBEb3dubG9h
ZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGNvdW50ID0gbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBhdXRvJiBj
KSB7Ci0gICAgICAgIHJldHVybiBjLnB0cigpID09ICZjb25uZWN0aW9uOwotICAgIH0pOwotICAg
IEFTU0VSVF9VTlVTRUQoY291bnQsIGNvdW50ID09IDEpOworICAgIEFTU0VSVChtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkp
KTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi53ZWJQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIH0KIAogYm9vbCBOZXR3b3JrUHJvY2Vzczo6c2hvdWxkVGVybWlu
YXRlKCkKQEAgLTM4NCwxNiArMzgyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICAgICAgc3VwcGxl
bWVudC0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2
aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbikKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25u
ZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBs
YXRmb3JtQ29ubmVjdGlvbigpOwotCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgc29ja2V0UGFpci5zZXJ2ZXIpOwotICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKLQot
ICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0UGFpci5jbGllbnQpOwotICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFNvY2tl
dCksIDApOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzb2NrZXRQYWlyLnNlcnZlciwgSVBD
OjpBdHRhY2htZW50IHsgc29ja2V0UGFpci5jbGllbnQgfSk7CiAjZWxpZiBPUyhEQVJXSU4pCiAg
ICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KICAgICBtYWNoX3BvcnRfdCBsaXN0ZW5p
bmdQb3J0ID0gTUFDSF9QT1JUX05VTEw7CkBAIC00MDYsMzcgKzM5OSw0MyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2Vy
dmljZVdvcmtlclBybwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiTmV0d29y
a1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOiBDb3VsZCBub3Qg
YWxsb2NhdGUgbWFjaCBwb3J0LCByZXR1cm5lZCBwb3J0IHdhcyBpbnZhbGlkIik7CiAgICAgICAg
IENSQVNIKCk7CiAgICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24u
Ci0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNy
ZWF0ZSgqdGhpcywgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsK
LSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uKSk7
Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01T
R19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgeyBsaXN0ZW5pbmdQb3J0IH0sIElQQzo6QXR0YWNo
bWVudCB7IGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EIH0pOwogI2VsaWYg
T1MoV0lORE9XUykKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRp
ZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRl
U2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRp
ZmllcikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNlcnZlciBhbmQg
Y2xpZW50IGlkZW50aWZpZXJzIik7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotCi0gICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhp
cywgc2VydmVySWRlbnRpZmllcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5k
KFdURk1vdmUoY29ubmVjdGlvbikpOwotCi0gICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChjbGllbnRJZGVudGlmaWVyKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoc2VydmVySWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50IHsgY2xpZW50SWRlbnRpZmllciB9
KTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OwogI2VuZGlm
Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IGNyZWF0ZUlQQ0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICBpZiAoIWlwY0Nvbm5lY3Rpb24pIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gbmV3Q29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGUoKnRoaXMsIGlkZW50aWZpZXIsIGlwY0Nvbm5lY3Rpb24tPmZpcnN0KTsKKyAgICBhdXRvJiBj
b25uZWN0aW9uID0gbmV3Q29ubmVjdGlvbi5nZXQoKTsKKworICAgIEFTU0VSVCghbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0Nvbm5lY3Rpb24pKTsKKworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25kKSk7CiAKLSAg
ICBpZiAoIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3Rp
Zmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOworICAgIGNvbm5lY3Rpb24uc2V0T25MaW5lU3Rh
dGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKICAgICAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3Mg
JiYgIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgeworICAgIGlmIChpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50KCkpOwogICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVy
VG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0
aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lz
dHJhYmxlRG9tYWluLCBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24o
KSk7CisgICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIGNvbm5lY3Rpb24u
Y29ubmVjdGlvbigpKTsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgY29udGV4dENvbm5l
Y3Rpb24uY29weVJlZigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKIApAQCAtNDUwLDcgKzQ0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvCiAgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogCi0g
ICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbihtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRk
Q29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQpAQCAtMjA4Miw3ICsyMDgxLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRn
ZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgIHBsYXRmb3JtUHJlcGFyZVRvU3VzcGVuZChbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIHBsYXRmb3JtU3luY0FsbENvb2tpZXMoW2NhbGxiYWNr
QWdncmVnYXRvcl0geyB9KTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zKQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3Vz
cGVuc2lvbihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpAQCAtMjE1Niw3ICsyMTU1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KCkKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKCk7Ci0gICAgZm9yIChh
dXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgZm9yIChhdXRv
JiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAg
IGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBlMThmMmQ1ZGEyNWY2Mjc4YWMyMjc3MmY4MDQ0YTliY2UzZDMwOWI2Li43ZjRiNWQyZTZlYzhl
NGJjYjQ3MWVjZWVkNTkyMjRlZTkwY2NlNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zOTAsNyArMzkwLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9j
ZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2Vydmlj
ZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CiAKICAgICB2b2lk
IGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZVN0b3JhZ2VRdW90YShjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAg
Ly8gQ29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgotICAgIFZlY3RvcjxSZWY8TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKIAogICAgIFN0cmluZyBtX2Rpc2tD
YWNoZURpcmVjdG9yeTsKICAgICBib29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA0ZmMxOTIwYWRhYjc1ZGRiY2FlNTU1MzUxMGI5YzE2ZmI0N2FmZDBi
Li5jYTY0ZjU5MzcxYWYwMTQ2MTAyMTliMGU5NWQ3ODgzZTNkYmYyZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQog
CiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2Vi
UHJvY2VzcwotICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4pCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4p
IC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3lu
YwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGFkYzRh
YWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcuLjg0NmZlZGE2MWQ5YTZiMjNjNjJh
OGQ5MTgzNWM1MzhmMzJjZDk5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKQEAgLTE4MywxNSArMTgzLDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdENvbm5l
Y3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpOwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2Us
IEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSAwLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJl
cGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjpp
bmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNl
dDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgVT4KLSAgICB2b2lkIHNlbmRXaXRo
QXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQgPSB7IH0pCisgICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVw
bHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmllcjxV
PiBkZXN0aW5hdGlvbklEID0geyB9LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMg
PSB7IH0pCiAgICAgewotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHk8VCwgQz4oV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRlc3RpbmF0aW9uSUQudG9VSW50
NjQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBz
ZW5kT3B0aW9ucyk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBhZGRBc3luY1JlcGx5SGFuZGxlcihDb25u
ZWN0aW9uJiwgdWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlcioKIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVj
dGlvbiYsIHVpbnQ2NF90KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXZv
aWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxl
dGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnNl
bmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCiB7
CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwog
CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHko
VCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QKICAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUobGlzdGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRz
KCkpOwotICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHsgfSk7CisgICAgc2VuZE1l
c3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIGFkZEFzeW5jUmVwbHlI
YW5kbGVyKCp0aGlzLCBsaXN0ZW5lcklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKERlY29kZXIqIGRlY29kZXIpIG11dGFibGUgewogICAgICAgICBp
ZiAoZGVjb2RlciAmJiAhZGVjb2Rlci0+aXNJbnZhbGlkKCkpCiAgICAgICAgICAgICBUOjpjYWxs
UmVwbHkoKmRlY29kZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDQ1MDkyMjQyMTAwYTA4OWJlNGE2NDAzYzljNmQxN2JkMzMxNWQyMWUuLmY3OWUxNGM1
MTMxN2M5OTA1YmJhYTQxMWY0MDJhNGRkOWQyODRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzks
NyArNzksNiBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDYWxsYmFja0lEKCkKIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sKQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNB
dEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkK
LSAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQogI2lmIEVOQUJMRShMRUdB
Q1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5KCp0aGlzKQogI2VuZGlmCkBAIC0xMDQsOCArMTAzLDggQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHkoKQogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXAp
CiAgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcC0+aW52YWxpZGF0ZSgpOwogCi0gICAgZm9yIChh
dXRvJiByZXBseSA6IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzKQotICAgICAgICByZXBseS5z
ZWNvbmQoeyB9KTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0
cy52YWx1ZXMoKSkKKyAgICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hP
cHRpb25zJiBsYXVuY2hPcHRpb25zKQpAQCAtMTM1LDEzICsxMzQsMTQgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7Ci0gICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIFdURk1vdmUocmVwbHkpKSk7Ci0KLSAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKSB7Ci0gICAgICAgIG1fbnVtUGVuZGlu
Z0Nvbm5lY3Rpb25SZXF1ZXN0cysrOworICAgIG1fY29ubmVjdGlvblJlcXVlc3RzLmFkZCgrK21f
Y29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWVzdCB7IG1ha2VXZWFr
UHRyKHdlYlByb2Nlc3NQcm94eSksIFdURk1vdmUocmVwbHkpIH0pOworICAgIGlmIChzdGF0ZSgp
ID09IFN0YXRlOjpMYXVuY2hpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgb3Blbk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgd2Vi
UHJvY2Vzc1Byb3h5KTsKK30KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwg
V2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCit7CiAgICAgYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzID0gZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW47CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTUxLDcgKzE1MSwyOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2NlcwogICAgIH0KICNlbmRpZgogCi0gICAgY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4pLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlBy
b2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4gfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5l
Y3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBOZXR3b3Jr
IHByb2Nlc3MgcHJvYmFibHkgY3Jhc2hlZCwgdGhlIGNvbm5lY3Rpb24gcmVxdWVzdCBzaG91bGQg
aGF2ZSBiZWVuIG1vdmVkLgorICAgICAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVlc3Rz
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBB
U1NFUlQobV9jb25uZWN0aW9uUmVxdWVzdHMuY29udGFpbnMoY29ubmVjdGlvblJlcXVlc3RJZGVu
dGlmaWVyKSk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1fY29ubmVjdGlvblJlcXVlc3RzLnRh
a2UoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKTsKKworI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKSB8fCBPUyhXSU5ET1dTKQorICAgICAgICByZXF1ZXN0LnJlcGx5KCpjb25uZWN0aW9u
SWRlbnRpZmllcik7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgICAgIE1FU1NBR0VfQ0hFQ0soTUFD
SF9QT1JUX1ZBTElEKGNvbm5lY3Rpb25JZGVudGlmaWVyLT5wb3J0KCkpKTsKKyAgICAgICAgcmVx
dWVzdC5yZXBseShJUEM6OkF0dGFjaG1lbnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9KTsKKyNlbHNlCisgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisjZW5kaWYKKyAgICB9LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpCkBAIC0yMzAs
MTggKzI1MSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jh
c2hlZCgpCiB7CiAgICAgY2xlYXJDYWxsYmFja1N0YXRlcygpOwogCi0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVwbGll
czsKLSAgICBwZW5kaW5nUmVwbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZXBseSA6IG1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzKSB7Ci0gICAgICAgIGlmIChyZXBseS5maXJzdCkKLSAgICAgICAg
ICAgIHBlbmRpbmdSZXBsaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlUmVmUHRyKHJlcGx5
LmZpcnN0LmdldCgpKSwgV1RGTW92ZShyZXBseS5zZWNvbmQpKSk7CisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVxdWVz
dHM7CisgICAgcGVuZGluZ1JlcXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jb25uZWN0
aW9uUmVxdWVzdHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rp
b25SZXF1ZXN0cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVxdWVzdC53ZWJQcm9jZXNzKQor
ICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFp
cihtYWtlUmVmUHRyKHJlcXVlc3Qud2ViUHJvY2Vzcy5nZXQoKSksIFdURk1vdmUocmVxdWVzdC5y
ZXBseSkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVwbHkuc2Vjb25kKHsgfSk7Cisg
ICAgICAgICAgICByZXF1ZXN0LnJlcGx5KHsgfSk7CiAgICAgfQotICAgIG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLmNsZWFyKCk7CisgICAgbV9jb25uZWN0aW9uUmVxdWVzdHMuY2xlYXIoKTsK
IAogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91
dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRl
bGV0ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdU
Rk1vdmUocGVuZGluZ1JlcGxpZXMpKTsKKyAgICBtX3Byb2Nlc3NQb29sLm5ldHdvcmtQcm9jZXNz
Q3Jhc2hlZCgqdGhpcywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdHMpKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpjbGVhckNhbGxiYWNrU3RhdGVzKCkKQEAgLTI5OCwyMyArMzE5LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmcKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKLQotICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBl
bmRpbmcgY29ubmVjdGlvbiByZXBseS4KLSAgICBhdXRvIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCkuc2Vjb25kOwotCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpIHx8IE9TKFdJTkRPV1MpCi0gICAgcmVwbHkoY29ubmVjdGlvbklkZW50aWZpZXIpOwot
I2VsaWYgT1MoREFSV0lOKQotICAgIE1FU1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZBTElEKGNvbm5l
Y3Rpb25JZGVudGlmaWVyLnBvcnQoKSkpOwotICAgIHJlcGx5KElQQzo6QXR0YWNobWVudChjb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxz
ZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKIHsKICAgICBhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vz
c2lvbklEKHNlc3Npb25JRCk7CkBAIC0zOTQsMTAgKzM5OCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJ
UEM6OkNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsgKytpKQotICAgICAgICBjb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhmYWxzZSwgeyB9KSwgMCk7Ci0gICAgCi0gICAgbV9udW1QZW5k
aW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKKyAgICBhdXRvIGNvbm5lY3Rpb25SZXF1ZXN0cyA9
IFdURk1vdmUobV9jb25uZWN0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlv
blJlcXVlc3QgOiBjb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGNv
bm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MpCisgICAgICAgICAgICBnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKmNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MsIFdURk1vdmUoY29ubmVj
dGlvblJlcXVlc3QucmVwbHkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlv
blJlcXVlc3QucmVwbHkoeyB9KTsKKyAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
ZiAobV9wcm9jZXNzUG9vbC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmlu
ZGV4IGZiMzAwMmNmNjYxYmYxOTEyYWEwODUxNDE3MmY2YjQ2ZjAxOTRlZWYuLjI5ZDA1MDQxMDJj
OWMzYzkwODdiNTdkYzkzYmRjYmQ5ZjhkNmU0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMTIsNyArMjEy
LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJl
Y2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGRp
ZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEm
KTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpA
QCAtMjUwLDEyICsyNDksMTggQEAgcHJpdmF0ZToKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNs
aWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIG9wZW5OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJQcm9jZXNzUHJveHkmKTsKKwogICAgIHZvaWQgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7
CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKLSAgICAKLSAgICB1bnNpZ25l
ZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7Ci0gICAgRGVxdWU8c3RkOjpwYWlyPFdl
YWtQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllczsKKworICAgIHN0cnVjdCBDb25uZWN0aW9uUmVxdWVzdCB7CisgICAgICAgIFdlYWtQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiB3ZWJQcm9jZXNzOworICAgICAgICBNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSByZXBs
eTsKKyAgICB9OworICAgIHVpbnQ2NF90IG1fY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIHsg
MCB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb25SZXF1ZXN0PiBtX2Nvbm5lY3Rp
b25SZXF1ZXN0czsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBiZWUyZDgxYTJmNzk1NGU0MGU1YzRjZDA2ZmIxMmMyNDQ5ZGJjZjlkLi4wYzhmNzYyN2Fj
NzJmYTRhNzc4MmFlNTk0YjQ3MGJhYjUzYjg0N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMSw4ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewotICAgIERpZENyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cikKLQogICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRG
ZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNp
dGVEYXRhIHdlYnNpdGVEYXRhKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>