<?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>115781</bug_id>
          
          <creation_ts>2013-05-08 01:51:43 -0700</creation_ts>
          <short_desc>[BlackBerry] Fix usage of BlackBerry::Platform::String</short_desc>
          <delta_ts>2013-05-08 15:04:47 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111729</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alberto Garcia">berto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>anilsson</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>886232</commentid>
    <comment_count>0</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-05-08 01:51:43 -0700</bug_when>
    <thetext>We&apos;re creating BlackBerry::Platform::String passing UTF-8 data to its char* constructor, which is interpreted as Latin1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886237</commentid>
    <comment_count>1</comment_count>
      <attachid>201044</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-05-08 01:56:49 -0700</bug_when>
    <thetext>Created attachment 201044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886240</commentid>
    <comment_count>2</comment_count>
      <attachid>201044</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-08 02:08:45 -0700</bug_when>
    <thetext>Comment on attachment 201044
Patch

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

&gt; Source/WebKit/blackberry/Api/WebSettings.cpp:209
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitMonospace, (&quot;-webkit-monospace&quot;));
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitSansSerif, (&quot;-webkit-sans-serif&quot;));
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitSerif, (&quot;-webkit-serif&quot;));
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitStandard, (&quot;-webkit-standard&quot;));

Given that &quot;settings&quot; is static local, you will never hit this path again. Why would you define those static?

It also looks like your &quot;WebSettings&quot; class takes a String, not an AtomicString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886253</commentid>
    <comment_count>3</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-08 02:38:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 201044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201044&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebSettings.cpp:209
&gt; &gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitMonospace, (&quot;-webkit-monospace&quot;));
&gt; &gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitSansSerif, (&quot;-webkit-sans-serif&quot;));
&gt; &gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitSerif, (&quot;-webkit-serif&quot;));
&gt; &gt; +    DEFINE_STATIC_LOCAL(AtomicString, WebKitStandard, (&quot;-webkit-standard&quot;));
&gt; 
&gt; Given that &quot;settings&quot; is static local, you will never hit this path again. Why would you define those static?
&gt; 
&gt; It also looks like your &quot;WebSettings&quot; class takes a String, not an AtomicString.

One possible reasoning behind this could be:
&quot;-webkit-monospace&quot; will be added into the AtomicString table sooner or later anyway, or could already be in the table at this point.
That depends on if/how -webkit-monospace is used down in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886260</commentid>
    <comment_count>4</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-05-08 02:55:36 -0700</bug_when>
    <thetext>Anyway I think Benjamin is right in that it&apos;s not necessary to define
these static. I&apos;ll update the patch to fix that.

I&apos;ll also add a few more changes from a different internal commit that
can also go here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886285</commentid>
    <comment_count>5</comment_count>
      <attachid>201057</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-05-08 04:42:32 -0700</bug_when>
    <thetext>Created attachment 201057
Patch

Second try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886479</commentid>
    <comment_count>6</comment_count>
      <attachid>201057</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-08 14:37:33 -0700</bug_when>
    <thetext>Comment on attachment 201057
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886487</commentid>
    <comment_count>7</comment_count>
      <attachid>201057</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-08 15:04:44 -0700</bug_when>
    <thetext>Comment on attachment 201057
Patch

Clearing flags on attachment: 201057

Committed r149769: &lt;http://trac.webkit.org/changeset/149769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886488</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-08 15:04:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201044</attachid>
            <date>2013-05-08 01:56:49 -0700</date>
            <delta_ts>2013-05-08 04:42:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115781.diff</filename>
            <type>text/plain</type>
            <size>42237</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZjM5MGFlLi40YjQ0ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTMtMDUtMDggIEVsaSBGaWRsZXIgIDxlZmlkbGVyQGJsYWNrYmVycnkuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBGaXggdXNhZ2Ugb2YgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1
NzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxh
Y2tCZXJyeSBQUiAzMDQxOTMKKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBNaWtlIExh
dHRhbnppbywgQXJ2aWQgTmlsc3NvbiwgSm9lIE1hc29uLCBKZWZmIFJvZ2VycywgYW5kIEdlb3Jn
ZSBTdGFpa29zCisKKyAgICAgICAgV2UgY3VycmVudGx5IGhhdmUgYSBwcm9ibGVtIHdoZXJlIHdl
J3JlIHBhc3NpbmcgVVRGLTggZW5jb2RlZCBkYXRhIGludG8KKyAgICAgICAgdGhlIGNoYXIqIGNv
bnN0cnVjdG9ycyBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nLiBUaGlzIG1lYW5zIHRo
ZSBzdHJpbmcKKyAgICAgICAgdGhpbmtzIGl0cyBkYXRhIGlzIG5vdCBVVEYtOC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEJsYWNrQmVycnk6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFu
YWdlcjo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9DdXJz
b3JCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQmxvYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUJsb2I6Om5leHREYXRhSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
YmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVt
T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmRlbGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZU9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5T25N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OnJlbW92ZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0
YWRhdGFPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnlPbk1haW5U
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVj
dG9yeU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5k
UmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OnRvV2ViTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9O
ZXR3b3JrTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTWFuYWdlcjo6c3Rh
cnRKb2IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJl
YW1IYW5kbGVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSU1NG
aWx0ZXJTdHJlYW06Om5vdGlmeVN0YXR1c1JlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJT
U0ZpbHRlclN0cmVhbTo6bm90aWZ5SGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJTU0ZpbHRlclN0cmVhbTo6Y29udmVydENvbnRlbnRUb0h0bWwpOgorICAgICAgICAoV2ViQ29y
ZTo6UlNTRmlsdGVyU3RyZWFtOjpjaGFyc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJTU0ZpbHRl
clN0cmVhbTo6dXBkYXRlSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvYmxh
Y2tiZXJyeS9TdHJpbmdCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpvcGVy
YXRvciBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nKToKKwogMjAxMy0wNS0wNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIENhbnZhc1N0
eWxlJ3MgQ01ZS0FWYWx1ZXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwIGFuZCBtb3ZlIHRoZSBwb2lu
dGVyIGluIHRoZSB1bmlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwCmluZGV4IDYwYTQ0YjIuLjk4NTFi
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJv
YXJkQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtNzAsMTEgKzcwLDExIEBAIGJvb2wgQ2xpcGJv
YXJkQmxhY2tCZXJyeTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHR5cGUgPT0gInRleHQvcGxh
aW4iKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZVBsYWlu
VGV4dCh0ZXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4dCh0ZXh0KTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0
ZXh0L2h0bWwiKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0
ZUhUTUwodGV4dC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkNsaXBib2FyZDo6d3JpdGVIVE1MKHRleHQpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gInRleHQv
dXJsIikKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVVUkwo
dGV4dC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBi
b2FyZDo6d3JpdGVVUkwodGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0CiB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6
OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQogewogICAg
IEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBi
b2FyZDo6d3JpdGVVUkwodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OndyaXRlVVJMKHVybC5zdHJpbmcoKSk7CiB9CiAKIHZv
aWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKikKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlUmFuZ2UoUmFuZ2Uq
LCBGcmFtZSopCiAKIHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6d3JpdGVQbGFpblRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQogewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6
OndyaXRlUGxhaW5UZXh0KHRleHQudXRmOCgpLmRhdGEoKSk7CisgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dCk7CiB9CiAKIGJvb2wgQ2xpcGJv
YXJkQmxhY2tCZXJyeTo6aGFzRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAppbmRleCBiMjQ2ZDI4Li42ZWE0YWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFu
YWdlci5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nv
b2tpZXMoVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gJnN0YWNrT2ZDb29raWVzLAogCiAg
ICAgLy8gSVAgYWRkcmVzc2VzIGFyZSBzdG9yZWQgaW4gYSBwYXJ0aWN1bGFyIGZvcm1hdCAoZHVl
IHRvIGlwdjYpLiBSZWR1Y2UgdGhlIGlwIGFkZHJlc3Mgc28gd2UgY2FuIG1hdGNoCiAgICAgLy8g
aXQgd2l0aCB0aGUgb25lIGluIG1lbW9yeS4KLSAgICBzdHJpbmcgY2Fub25pY2FsSVAgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Z2V0Q2Fub25pY2FsSVBGb3JtYXQocmVxdWVzdFVSTC5ob3N0KCku
dXRmOCgpLmRhdGEoKSk7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyBjYW5vbmlj
YWxJUCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpnZXRDYW5vbmljYWxJUEZvcm1hdChyZXF1ZXN0
VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIWNhbm9uaWNhbElQLmVtcHR5KCkp
CiAgICAgICAgIGRlbGltaXRlZEhvc3QuYXBwZW5kKFN0cmluZyhjYW5vbmljYWxJUC5jX3N0cigp
KSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9DdXJzb3JCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQ3Vyc29yQmxhY2tCZXJyeS5jcHAKaW5kZXggYjBlMjE5YS4uMWE5NzZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DdXJzb3JCbGFja0JlcnJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0N1cnNvckJsYWNr
QmVycnkuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEN1cnNvcjo6Q3Vyc29yKGNvbnN0IEN1cnNvciYg
b3RoZXIpCiB9CiAKIEN1cnNvcjo6Q3Vyc29yKEltYWdlKiwgY29uc3QgSW50UG9pbnQmIGhvdHNw
b3QpCi06IG1fcGxhdGZvcm1DdXJzb3IoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkN1cnNvckN1c3Rv
bWl6ZWQsIHN0ZDo6c3RyaW5nKCksIGhvdHNwb3QpCis6IG1fcGxhdGZvcm1DdXJzb3IoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkN1cnNvckN1c3RvbWl6ZWQsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmc6OmVtcHR5U3RyaW5nKCksIGhvdHNwb3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcAppbmRleCAyOGEyMTIz
Li40YzE4OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9QbGF0Zm9ybUJsb2IuY3BwCkBAIC0zMyw3ICszMyw3IEBAIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJCbG9iRGF0YUl0ZW0qIFBsYXRmb3JtQmxvYjo6bmV4dERhdGFJdGVtKCkKICAgICBtX3Bs
YXRmb3JtQmxvYkl0ZW0ubV9pc0RhdGEgPSBpdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpEYXRh
OwogICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5tX2J1ZmZlciA9IG1fcGxhdGZvcm1CbG9iSXRlbS5t
X2lzRGF0YSA/IGl0ZW0uZGF0YS0+ZGF0YSgpICsgc3RhdGljX2Nhc3Q8aW50PihpdGVtLm9mZnNl
dCkgOiAwOwogICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5tX2J1ZmZlckxlbmd0aCA9IG1fcGxhdGZv
cm1CbG9iSXRlbS5tX2lzRGF0YSA/IHN0YXRpY19jYXN0PHNpemVfdD4oaXRlbS5sZW5ndGgpIDog
MDsKLSAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9maWxlTmFtZSA9IG1fcGxhdGZvcm1CbG9iSXRl
bS5tX2lzRGF0YSA/IHN0ZDo6c3RyaW5nKCkgOiBpdGVtLnBhdGgudXRmOCgpLmRhdGEoKTsKKyAg
ICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9maWxlTmFtZSA9IG1fcGxhdGZvcm1CbG9iSXRlbS5tX2lz
RGF0YSA/IGVtcHR5U3RyaW5nKCkgOiBpdGVtLnBhdGg7CiAgICAgbV9wbGF0Zm9ybUJsb2JJdGVt
Lm1fZmlsZVN0YXJ0ID0gbV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRhID8gMCA6IGl0ZW0ub2Zm
c2V0OwogICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5tX2ZpbGVMZW5ndGggPSBtX3BsYXRmb3JtQmxv
Ykl0ZW0ubV9pc0RhdGEgPyAwIDogaXRlbS5sZW5ndGg7CiAgICAgbV9wbGF0Zm9ybUJsb2JJdGVt
Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9IG1fcGxhdGZvcm1CbG9iSXRlbS5tX2lz
RGF0YSA/IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJCbG9iRGF0YUl0ZW06OkRPTk9UQ0hFQ0tG
SUxFQ0hBTkdFIDogaXRlbS5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBkYzFkYzEzZi4uMWJkMmE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCkBAIC02MSw3MiArNjEsNzIgQEAgYm9vbCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojp3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCiAKIHZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNy
ZWF0ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykK
IHsKLSAgICBXZWJGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSh3ZWJLaXRUaHJlYWRNZXNzYWdl
Q2xpZW50KCksIGJhc2VQYXRoLnV0ZjgoKS5kYXRhKCksIHN0b3JhZ2VJZGVudGlmaWVyLnV0Zjgo
KS5kYXRhKCksIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBj
cmVhdGUsIGNhbGxiYWNrcywgMCk7CisgICAgV2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0o
d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIs
IHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBjcmVhdGUsIGNh
bGxiYWNrcywgMCk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
ZGVsZXRlRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmls
ZVN5c3RlbVR5cGUgdHlwZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
IGNhbGxiYWNrcykKIHsKLSAgICBXZWJGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKHdlYktp
dFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgc3RvcmFnZUlk
ZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8V2ViRmlsZVN5c3RlbTo6VHlwZT4o
dHlwZSksIGNhbGxiYWNrcyk7CisgICAgV2ViRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbSh3
ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCksIGJhc2VQYXRoLCBzdG9yYWdlSWRlbnRpZmllciwg
c3RhdGljX2Nhc3Q8V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIGNhbGxiYWNrcyk7CiB9CiAK
IHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVt
LCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdv
cmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0gICAg
cGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCku
dXRmOCgpLmRhdGEoKSwgZmlsZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLnV0Zjgo
KS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVT
eXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRp
b25QYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5Ojpjb3B5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcykKIHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5
c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRoKS51dGY4KCkuZGF0YSgpLCBmaWxlU3lzdGVtVVJMVG9Q
YXRoKGRlc3RpbmF0aW9uUGF0aCkudXRmOCgpLmRhdGEoKSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0
Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRoKSwgZmls
ZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBjYWxsYmFja3MpOwogfQogCiB2b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZU9uTWFpblRocmVhZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBj
b25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQogewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlKGZpbGVTeXN0ZW1V
UkxUb1BhdGgocGF0aCkudXRmOCgpLmRhdGEoKSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0Zm9ybUZp
bGVTeXN0ZW0tPnJlbW92ZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwog
fQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2
ZWx5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBw
bGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVt
LT5yZW1vdmVSZWN1cnNpdmVseShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRh
KCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVs
eShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCiB2b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBj
b25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQogewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVT
eXN0ZW1VUkxUb1BhdGgocGF0aCkudXRmOCgpLmRhdGEoKSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0
Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBj
YWxsYmFja3MpOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0g
ICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0
aCkudXRmOCgpLmRhdGEoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOworICAgIHBsYXRmb3JtRmls
ZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUs
IGNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tz
KQogewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGZpbGVTeXN0ZW1V
UkxUb1BhdGgocGF0aCkudXRmOCgpLmRhdGEoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOworICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGZpbGVTeXN0ZW1VUkxUb1BhdGgo
cGF0aCksIGV4Y2x1c2l2ZSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3RzT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBh
dGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7
Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5maWxlRXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgo
cGF0aCkudXRmOCgpLmRhdGEoKSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0t
PmZpbGVFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAog
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3Jt
RmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVj
dG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxi
YWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3Rl
bVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwm
IHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3Mp
CiB7Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0ZW1VUkxU
b1BhdGgocGF0aCkudXRmOCgpLmRhdGEoKSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0Zm9ybUZpbGVT
eXN0ZW0tPnJlYWREaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tz
KTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0
ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBs
YXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0
aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsK
LSAgICBXZWJGaWxlV3JpdGVyOjpjcmVhdGVXcml0ZXIocGxhdGZvcm1GaWxlU3lzdGVtLCBmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgV2Vi
RmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKHBsYXRmb3JtRmlsZVN5c3RlbSwgZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5
c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcykKIHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLnV0ZjgoKS5k
YXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hv
dEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tz
KTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5
c3RlbShXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBT
dHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNy
ZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVk
aWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4
IDQ3YmZiMjUuLjBjNjU3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtMTk0LDE4ICsxOTQsMTUgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmxvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKIAogICAgIGRlbGV0ZUd1YXJk
ZWRPYmplY3QobV9wbGF0Zm9ybVBsYXllcik7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgIG1fcGxhdGZvcm1QbGF5ZXIgPSBQbGF0Zm9ybVBsYXllcjo6Y3JlYXRlKHRoaXMs
IHRhYklkLCBpc1ZpZGVvLCB0cnVlLCBtb2RpZmllZFVybC51dGY4KCkuZGF0YSgpKTsKKyAgICBt
X3BsYXRmb3JtUGxheWVyID0gUGxhdGZvcm1QbGF5ZXI6OmNyZWF0ZSh0aGlzLCB0YWJJZCwgaXNW
aWRlbywgdHJ1ZSwgbW9kaWZpZWRVcmwpOwogI2Vsc2UKLSAgICBtX3BsYXRmb3JtUGxheWVyID0g
UGxhdGZvcm1QbGF5ZXI6OmNyZWF0ZSh0aGlzLCB0YWJJZCwgaXNWaWRlbywgZmFsc2UsIG1vZGlm
aWVkVXJsLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcGxhdGZvcm1QbGF5ZXIgPSBQbGF0Zm9ybVBs
YXllcjo6Y3JlYXRlKHRoaXMsIHRhYklkLCBpc1ZpZGVvLCBmYWxzZSwgbW9kaWZpZWRVcmwpOwog
I2VuZGlmCiAKICAgICBXVEY6OlN0cmluZyBjb29raWVQYWlyczsKICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpCi0gICAgICAgIGNvb2tpZVBhaXJzID0gY29va2llTWFuYWdlcigpLmdldENvb2tpZShL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsLnV0ZjgoKS5kYXRhKCkpLCBXaXRoSHR0cE9ubHlDb29r
aWVzKTsKLSAgICBpZiAoIWNvb2tpZVBhaXJzLmlzRW1wdHkoKSAmJiBjb29raWVQYWlycy51dGY4
KCkuZGF0YSgpKQotICAgICAgICBtX3BsYXRmb3JtUGxheWVyLT5sb2FkKHBsYXllcklELCBtb2Rp
ZmllZFVybC51dGY4KCkuZGF0YSgpLCBtX3dlYkNvcmVQbGF5ZXItPnVzZXJBZ2VudCgpLnV0Zjgo
KS5kYXRhKCksIGNvb2tpZVBhaXJzLnV0ZjgoKS5kYXRhKCkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9wbGF0Zm9ybVBsYXllci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwudXRmOCgpLmRhdGEo
KSwgbV93ZWJDb3JlUGxheWVyLT51c2VyQWdlbnQoKS51dGY4KCkuZGF0YSgpLCAwKTsKKyAgICAg
ICAgY29va2llUGFpcnMgPSBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2llKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKKyAgICBtX3BsYXRmb3JtUGxheWVy
LT5sb2FkKHBsYXllcklELCBtb2RpZmllZFVybCwgbV93ZWJDb3JlUGxheWVyLT51c2VyQWdlbnQo
KSwgY29va2llUGFpcnMpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y2FuY2VsTG9h
ZCgpCkBAIC03NjYsOSArNzYzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5vdGlmeUNo
YWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb24KICAgICBpZiAo
cmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU3VjY2VzcyB8fCAhdXJsLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF0Zm9ybVBsYXllci0+cmVsb2FkV2l0aENy
ZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCkudXRmOChXVEY6OlN0cmluZzo6U3RyaWN0Q29udmVy
c2lvbikuZGF0YSgpLAotICAgICAgICBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOChXVEY6OlN0
cmluZzo6U3RyaWN0Q29udmVyc2lvbikuZGF0YSgpLAotICAgICAgICBzdGF0aWNfY2FzdDxNTVJB
dXRoQ2hhbGxlbmdlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2U+KGNyZWRlbnRpYWwucGVyc2lzdGVu
Y2UoKSkpOworICAgIG1fcGxhdGZvcm1QbGF5ZXItPnJlbG9hZFdpdGhDcmVkZW50aWFsKGNyZWRl
bnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIHN0YXRpY19jYXN0PE1NUkF1dGhD
aGFsbGVuZ2U6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZT4oY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgp
KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkF1dGhlbnRpY2F0aW9uQWNjZXB0
ZWQoY29uc3QgTU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkgY29uc3QKQEAgLTgyMiw3
ICs4MTcsNyBAQCBpbnQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvblNob3dFcnJvckRpYWxvZyhQbGF0
Zm9ybVBsYXllcjo6RXJyb3IgdHlwZSkKIAogc3RhdGljIFdlYk1lZGlhU3RyZWFtU291cmNlIHRv
V2ViTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNyYykKIHsKLSAgICByZXR1
cm4gV2ViTWVkaWFTdHJlYW1Tb3VyY2Uoc3JjLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19j
YXN0PFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlPihzcmMtPnR5cGUoKSksIHNyYy0+bmFtZSgp
LnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBXZWJNZWRpYVN0cmVhbVNvdXJjZShzcmMtPmlk
KCksIHN0YXRpY19jYXN0PFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlPihzcmMtPnR5cGUoKSks
IHNyYy0+bmFtZSgpKTsKIH0KIAogc3RhdGljIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciB0b1dl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcihNZWRpYVN0cmVhbURlc2NyaXB0b3IqIGQpCkBAIC04MzUs
NyArODMwLDcgQEAgc3RhdGljIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciB0b1dlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihNZWRpYVN0cmVhbURlc2NyaXB0b3IKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGQtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7IGkrKykKICAgICAgICAgdmlkZW9T
b3VyY2VzLnB1c2hfYmFjayh0b1dlYk1lZGlhU3RyZWFtU291cmNlKGQtPnZpZGVvQ29tcG9uZW50
KGkpLT5zb3VyY2UoKSkpOwogCi0gICAgcmV0dXJuIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihk
LT5pZCgpLnV0ZjgoKS5kYXRhKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKyAgICBy
ZXR1cm4gV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGQtPmlkKCksIGF1ZGlvU291cmNlcywgdmlk
ZW9Tb3VyY2VzKTsKIH0KIAogV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yIE1lZGlhUGxheWVyUHJp
dmF0ZTo6bG9va3VwTWVkaWFTdHJlYW0oY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmlu
ZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKaW5kZXggNWVmMzAyYS4uNTdjMzMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05l
dHdvcmtNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgYm9vbCBOZXR3
b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBTdHJpbmcmIHBhZ2VHcm91
cE5hbWUsIFBhc3NSZWYKICAgICBzZXRBdXRoQ3JlZGVudGlhbHMocGxhdGZvcm1SZXF1ZXN0LCBn
dWFyZEpvYi0+Z2V0SW50ZXJuYWwoKS0+bV9wcm94eVdlYkNoYWxsZW5nZSk7CiAKICAgICBpZiAo
IXJlcXVlc3Qub3ZlcnJpZGVDb250ZW50VHlwZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcGxhdGZv
cm1SZXF1ZXN0LnNldE92ZXJyaWRlQ29udGVudFR5cGUocmVxdWVzdC5vdmVycmlkZUNvbnRlbnRU
eXBlKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgcGxhdGZvcm1SZXF1ZXN0LnNldE92ZXJy
aWRlQ29udGVudFR5cGUocmVxdWVzdC5vdmVycmlkZUNvbnRlbnRUeXBlKCkpOwogCiAgICAgTmV0
d29ya0pvYiogbmV0d29ya0pvYiA9IG5ldyBOZXR3b3JrSm9iOwogICAgIGlmICghbmV0d29ya0pv
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9Tb2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcApp
bmRleCBiN2YzNmQ4Li4xNmUyZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVh
bUhhbmRsZUJsYWNrQmVycnkuY3BwCkBAIC02Nyw3ICs2Nyw4IEBAIFNvY2tldFN0cmVhbUhhbmRs
ZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBLVVJM
JiB1cmwsCiAKICAgICAvLyBPcGVuIHRoZSBzb2NrZXQKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TmV0d29ya1JlcXVlc3QgcmVxdWVzdDsKLSAgICByZXF1ZXN0LnNldFJlcXVlc3RVcmwodXJs
LnN0cmluZygpLCAiQ09OTkVDVCIpOworICAgIFNUQVRJQ19MT0NBTF9TVFJJTkcoc19jb25uZWN0
LCAiQ09OTkVDVCIpOworICAgIHJlcXVlc3Quc2V0UmVxdWVzdFVybCh1cmwuc3RyaW5nKCksIHNf
Y29ubmVjdCk7CiAgICAgbV9zb2NrZXRTdHJlYW0gPSBhZG9wdFB0cihmYWN0b3J5LT5jcmVhdGVO
ZXR3b3JrU3RyZWFtKHJlcXVlc3QsIHBsYXllcklkKSk7CiAgICAgQVNTRVJUKG1fc29ja2V0U3Ry
ZWFtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L3Jzcy9SU1NGaWx0ZXJTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NGaWx0ZXJTdHJlYW0uY3BwCmluZGV4IGJkNTgxNDUu
LmMyZThlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9yc3MvUlNTRmlsdGVyU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5jcHAKQEAgLTQzNCw3
ICs0MzQsNyBAQCBSU1NGaWx0ZXJTdHJlYW06OlJTU0ZpbHRlclN0cmVhbSgpCiB7CiB9CiAKLXZv
aWQgUlNTRmlsdGVyU3RyZWFtOjpub3RpZnlTdGF0dXNSZWNlaXZlZChpbnQgc3RhdHVzLCBjb25z
dCBjaGFyKiBtZXNzYWdlKQordm9pZCBSU1NGaWx0ZXJTdHJlYW06Om5vdGlmeVN0YXR1c1JlY2Vp
dmVkKGludCBzdGF0dXMsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG1lc3Nh
Z2UpCiB7CiAgICAgLy8gTm9uLUhUVFAgZXJyb3JzIGhhdmUgbm8gZGF0YSB0byBkaXNwbGF5LCBh
bmQgcmVkaXJlY3RzIHdpbGwgbmV2ZXIgYmUgZGlzcGxheWVkLAogICAgIC8vIHNvIG5vIG5lZWQg
dG8gY2hlY2sgaWYgdGhleSBoYXZlIFJTUyBkYXRhCkBAIC00NTUsMTMgKzQ1NSwxMyBAQCB2b2lk
IFJTU0ZpbHRlclN0cmVhbTo6bm90aWZ5SGVhZGVyc1JlY2VpdmVkKGNvbnN0IE5ldHdvcmtSZXF1
ZXN0OjpIZWFkZXJMaXN0JiBoZQogICAgICAgICBOZXR3b3JrUmVxdWVzdDo6SGVhZGVyTGlzdDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICAgICAgTmV0d29ya1JlcXVl
c3Q6OkhlYWRlckxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBoZWFkZXJzLmJlZ2luKCk7CiAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoaXRlci0+Zmlyc3QsIHNfY29udGVudFR5cGVIZWFkZXJLZXkpKSB7Cisg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaXRlci0+Zmlyc3QudG9TdGRTdHJpbmco
KSwgc19jb250ZW50VHlwZUhlYWRlcktleSkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXRlci0+
c2Vjb25kLmZpbmQoInhtbCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG1fY29udGVudFR5cGVJbmRleCA9IHN0ZDo6ZGlzdGFuY2UoTmV0d29ya1JlcXVlc3Q6
OkhlYWRlckxpc3Q6OmNvbnN0X2l0ZXJhdG9yKGhlYWRlcnMuYmVnaW4oKSksIGl0ZXIpOwotICAg
ICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUgdHlwZSA9IFJTU1R5cGVGcm9tQ29udGVudFR5
cGUoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlIHR5cGUg
PSBSU1NUeXBlRnJvbUNvbnRlbnRUeXBlKGl0ZXItPnNlY29uZC50b1N0ZFN0cmluZygpKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzUlNTQ29udGVudCh0eXBlKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcmVzb3VyY2VUeXBlID0gdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzUG90ZW50aWFsUlNTTUlNRVR5cGUoaXRlci0+c2Vjb25kKSkKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoIWlzUG90ZW50aWFsUlNTTUlNRVR5cGUoaXRlci0+c2Vjb25kLnRv
U3RkU3RyaW5nKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZVR5cGUgPSBU
eXBlTm90UlNTOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJTU0ZpbHRlclN0cmVhbTo6bm90aWZ5Q2xvc2UoaW50IHN0
YXR1cykKIGJvb2wgUlNTRmlsdGVyU3RyZWFtOjpjb252ZXJ0Q29udGVudFRvSHRtbChzdGQ6OnN0
cmluZyYgcmVzdWx0KQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBiYXNlID0gdXJsKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGJhc2UgPSB1
cmwoKS50b1N0ZFN0cmluZygpOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbmMgPSBlbmNvZGlu
ZygpOwogCiAgICAgT3duUHRyPFJTU1BhcnNlckJhc2U+IHBhcnNlciA9IGNyZWF0ZVBhcnNlciht
X3Jlc291cmNlVHlwZSk7CkBAIC01NzgsNyArNTc4LDcgQEAgY29uc3Qgc3RkOjpzdHJpbmcmIFJT
U0ZpbHRlclN0cmVhbTo6Y2hhcnNldCgpCiAgICAgc3RhdGljIGNvbnN0IGludCBjaGFyc2V0UHJl
Zml4TGVuID0gc3RybGVuKGNoYXJzZXRQcmVmaXgpOwogICAgIHNpemVfdCBwb3MgPSAobV9oZWFk
ZXJzLmF0KG1fY29udGVudFR5cGVJbmRleCkuc2Vjb25kKS5maW5kKGNoYXJzZXRQcmVmaXgpOwog
ICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgbV9jaGFyc2V0ID0g
bV9oZWFkZXJzLmF0KG1fY29udGVudFR5cGVJbmRleCkuc2Vjb25kLnN1YnN0cihwb3MgKyBjaGFy
c2V0UHJlZml4TGVuKTsKKyAgICAgICAgbV9jaGFyc2V0ID0gbV9oZWFkZXJzLmF0KG1fY29udGVu
dFR5cGVJbmRleCkuc2Vjb25kLnN1YnN0cihwb3MgKyBjaGFyc2V0UHJlZml4TGVuKS50b1N0ZFN0
cmluZygpOwogICAgICAgICBzdHJpcFdoaXRlU3BhY2UobV9jaGFyc2V0KTsKICAgICB9CiAKQEAg
LTY0MCw3ICs2NDAsNyBAQCB2b2lkIFJTU0ZpbHRlclN0cmVhbTo6dXBkYXRlSGVhZGVyKGNvbnN0
IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YQogICAgIE5ldHdvcmtSZXF1
ZXN0OjpIZWFkZXJMaXN0OjppdGVyYXRvciBlbmQgPSBtX2hlYWRlcnMuZW5kKCk7CiAgICAgZm9y
ICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgaWYgKCFzdHJjYXNlY21wKGl0ZXIt
PmZpcnN0LmNfc3RyKCksIGtleS5jX3N0cigpKSkgewotICAgICAgICAgICAgaXRlci0+c2Vjb25k
ID0gdmFsdWU7CisgICAgICAgICAgICBpdGVyLT5zZWNvbmQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U3RyaW5nOjpmcm9tTGF0aW4xKHZhbHVlLmNfc3RyKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NGaWx0ZXJTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3RyZWFtLmgKaW5kZXgg
NjljYmQ4ZS4uNGE5ZTY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NGaWx0ZXJTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5oCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIFJTU0ZpbHRlclN0cmVhbSgpOwogCi0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeVN0YXR1c1JlY2VpdmVkKGludCBzdGF0dXMsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTdGF0dXNSZWNlaXZlZChpbnQgc3RhdHVz
LCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5SGVhZGVyc1JlY2VpdmVkKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpOZXR3b3JrUmVxdWVzdDo6SGVhZGVyTGlzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlE
YXRhUmVjZWl2ZWQoQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtCdWZmZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Q2xvc2UoaW50IHN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2JsYWNrYmVycnkvU3RyaW5nQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2JsYWNrYmVycnkvU3RyaW5nQmxhY2tCZXJyeS5j
cHAKaW5kZXggNzI2ZjJiZC4uNWQ5ZTgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ibGFja2JlcnJ5L1N0cmluZ0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvYmxhY2tiZXJyeS9TdHJpbmdCbGFja0JlcnJ5LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBTdHJpbmc6Om9wZXJhdG9yIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJp
bmcoKSBjb25zdAogICAgICAgICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6
ZW1wdHlTdHJpbmcoKTsKIAogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hh
cmFjdGVyczgoKSksIGxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmc6OmZyb21MYXRpbjEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hh
cmFjdGVyczgoKSksIGxlbmd0aCgpKTsKIAogICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U3RyaW5nKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9KYXZhU2NyaXB0VmFyaWFudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0phdmFTY3JpcHRWYXJpYW50LmNwcAppbmRleCA4MzA3MjY4Li5l
NWU3M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0phdmFTY3Jp
cHRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0phdmFTY3Jp
cHRWYXJpYW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBKYXZhU2NyaXB0VmFyaWFudCBKU1ZhbHVl
UmVmVG9CbGFja0JlcnJ5SmF2YVNjcmlwdFZhcmlhbnQoY29uc3QgSlNHbG9iYWxDb250ZXh0Ugog
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShzdHJpbmdSZWYpOwogICAgICAgICBXVEY6OlZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVy
U2l6ZSk7CiAgICAgICAgIHNpemVfdCByYyA9IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5n
UmVmLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKLSAgICAgICAgcmV0dXJuVmFsdWUuc2V0
U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmMgLSAx
KSk7CisgICAgICAgIHJldHVyblZhbHVlLnNldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nOjpmcm9tVXRmOChidWZmZXIuZGF0YSgpLCByYyAtIDEpKTsKICAgICAgICAgSlNTdHJp
bmdSZWxlYXNlKHN0cmluZ1JlZik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAppbmRleCA0MzRiMzYx
Li4yMDk2NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktp
dFRleHRDb2RlYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRU
ZXh0Q29kZWMuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBiYXNlNjRFbmNvZGUoY29uc3Qg
c3RkOjp2ZWN0b3I8Y2hhcj4mIGJpbmFyeSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYK
IAogICAgIFdURjo6YmFzZTY0RW5jb2RlKCZiaW5hcnlbMF0sIGJpbmFyeS5zaXplKCksIHJlc3Vs
dCwgc3RhdGljX2Nhc3Q8V1RGOjpCYXNlNjRFbmNvZGVQb2xpY3k+KHBvbGljeSkpOwogCi0gICAg
YmFzZTY0ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZygmcmVzdWx0WzBdLCByZXN1bHQu
c2l6ZSgpKTsKKyAgICBiYXNlNjQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9t
QXNjaWkoJnJlc3VsdFswXSwgcmVzdWx0LnNpemUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGY4ZDYwOWQuLjgz
Zjk2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtNzE4
LDEwICs3MTgsMTIgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBQbGF0Zm9ybTo6
TmV0d29ya1JlcXVlc3QmIG5ldFJlcSwgYm9vbCBuZWVkUmVmZXIKIAogdm9pZCBXZWJQYWdlOjps
b2FkRmlsZShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBwYXRoLCBjb25zdCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBvdmVycmlkZUNvbnRlbnRUeXBlKQogeworICAg
IFNUQVRJQ19MT0NBTF9TVFJJTkcoc19maWxlUHJlZml4LCAiZmlsZTovLyIpOworICAgIFNUQVRJ
Q19MT0NBTF9TVFJJTkcoc19maWxlUm9vdFByZWZpeCwgImZpbGU6Ly8vIik7CiAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyBmaWxlVXJsKHBhdGgpOwotICAgIGlmIChmaWxlVXJsLnN0
YXJ0c1dpdGgoIi8iKSkKLSAgICAgICAgZmlsZVVybCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcoImZpbGU6Ly8iLCA3KSArIGZpbGVVcmw7Ci0gICAgZWxzZSBpZiAoIWZpbGVVcmwuc3Rh
cnRzV2l0aCgiZmlsZTovLy8iKSkKKyAgICBpZiAoZmlsZVVybC5zdGFydHNXaXRoKCcvJykpCisg
ICAgICAgIGZpbGVVcmwgPSBzX2ZpbGVQcmVmaXggKyBmaWxlVXJsOworICAgIGVsc2UgaWYgKCFm
aWxlVXJsLnN0YXJ0c1dpdGgoc19maWxlUm9vdFByZWZpeCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCBuZXRSZXF1ZXN0OwpAQCAtNDE3MiwxMSArNDE3
NCwxMSBAQCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIFdlYlBhZ2U6OnRleHRFbmNvZGlu
ZygpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZC0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKTsKIAogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiAiIjsKKyAgICAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVt
cHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gZG9jdW1lbnQtPmxvYWRlcigpLT53cml0ZXIoKS0+
ZW5jb2RpbmcoKTsKIH0KQEAgLTU5NDIsNyArNTk0NCw3IEBAIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmcgV2ViUGFnZTo6dGV4dEhhc0F0dHJpYnV0ZShjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9yCiAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBkLT5tX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvYy0+
cXVlcnlDb21tYW5kVmFsdWUocXVlcnkpOwogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0cmluZygpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCBlbmFibGVkKQpAQCAt
NTk5Miw3ICs1OTk0LDcgQEAgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgV2Vi
UGFnZVByaXZhdGU6OmRlZmF1bHRVc2VyQWdlbnQoKQogICAgICAgICBpZiAodWFTaXplIDw9IDAg
fHwgdWFTaXplID49IDI1NikKICAgICAgICAgICAgIEJMQUNLQkVSUllfQ1JBU0goKTsKIAotICAg
ICAgICBkZWZhdWx0VXNlckFnZW50ID0gbmV3IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmco
dWFCdWZmZXIsIHVhU2l6ZSk7CisgICAgICAgIGRlZmF1bHRVc2VyQWdlbnQgPSBuZXcgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9t
VXRmOCh1YUJ1ZmZlciwgdWFTaXplKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpkZWZhdWx0VXNl
ckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAppbmRleCAwMzhmMTBm
Li5iNzRhNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtODgs
OSArODgsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJQYWdlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsK
IAotICAgIHZvaWQgbG9hZEZpbGUoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
cGF0aCwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50
VHlwZSA9ICIiKTsKKyAgICB2b2lkIGxvYWRGaWxlKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmcmIHBhdGgsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG92ZXJy
aWRlQ29udGVudFR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0cmlu
ZygpKTsKIAotICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nJiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29u
c3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgY29udGVudFR5cGUgPSAidGV4dC9odG1s
IiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgZmFpbGluZ1VSTCA9IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5nKCkpOworICAgIHZvaWQgbG9hZFN0
cmluZyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiwgY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyYgY29udGVudFR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9t
QXNjaWkoInRleHQvaHRtbCIpLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBm
YWlsaW5nVVJMID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKSk7
CiAKICAgICB2b2lkIGxvYWQoY29uc3QgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiwgYm9vbCBu
ZWVkUmVmZXJlciA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlNldHRpbmdzLmNwcAppbmRleCBlMjYxNGRkLi4zOGRiMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcApAQCAtMjAzLDEwICsyMDMsMTQgQEAgV2Vi
U2V0dGluZ3MqIFdlYlNldHRpbmdzOjpzdGFuZGFyZFNldHRpbmdzKCkKICAgICBzZXR0aW5ncy0+
bV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdFdlYlNvY2tldHNFbmFibGVkLCB0cnVlKTsKICAg
ICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdFRleHRBdXRvc2l6aW5nRW5h
YmxlZCwgZmFsc2UpOwogCi0gICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktp
dEZpeGVkRm9udEZhbWlseSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZvbnRJbmZvOjppbnN0YW5j
ZSgpLT5mb250RmFtaWx5KCItd2Via2l0LW1vbm9zcGFjZSIsICIiKSk7Ci0gICAgc2V0dGluZ3Mt
Pm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFNhbnNTZXJpZmZGb250RmFtaWx5LCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Rm9udEluZm86Omluc3RhbmNlKCktPmZvbnRGYW1pbHkoIi13ZWJraXQt
c2Fucy1zZXJpZiIsICIiKSk7Ci0gICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdl
YktpdFNlcmlmZkZvbnRGYW1pbHksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5z
dGFuY2UoKS0+Zm9udEZhbWlseSgiLXdlYmtpdC1zZXJpZiIsICIiKSk7Ci0gICAgc2V0dGluZ3Mt
Pm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFN0YW5kYXJkRm9udEZhbWlseSwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkZvbnRJbmZvOjppbnN0YW5jZSgpLT5mb250RmFtaWx5KCItd2Via2l0LXN0
YW5kYXJkIiwgIiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgV2Vi
S2l0TW9ub3NwYWNlLCAoIi13ZWJraXQtbW9ub3NwYWNlIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBXZWJLaXRTYW5zU2VyaWYsICgiLXdlYmtpdC1zYW5zLXNlcmlm
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBXZWJLaXRTZXJpZiwg
KCItd2Via2l0LXNlcmlmIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBXZWJLaXRTdGFuZGFyZCwgKCItd2Via2l0LXN0YW5kYXJkIikpOworICAgIHNldHRpbmdzLT5t
X3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRGaXhlZEZvbnRGYW1pbHksIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2UoKS0+Zm9udEZhbWlseShXZWJLaXRNb25vc3BhY2Us
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5nKCkpKTsKKyAgICBzZXR0
aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U2Fuc1NlcmlmZkZvbnRGYW1pbHksIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2UoKS0+Zm9udEZhbWlseShXZWJL
aXRTYW5zU2VyaWYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5nKCkp
KTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U2VyaWZmRm9udEZh
bWlseSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZvbnRJbmZvOjppbnN0YW5jZSgpLT5mb250RmFt
aWx5KFdlYktpdFNlcmlmLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0cmlu
ZygpKSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFN0YW5kYXJk
Rm9udEZhbWlseSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZvbnRJbmZvOjppbnN0YW5jZSgpLT5m
b250RmFtaWx5KFdlYktpdFN0YW5kYXJkLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpl
bXB0eVN0cmluZygpKSk7CiAKICAgICByZXR1cm4gc2V0dGluZ3M7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwppbmRleCAyN2I5YzQ0Li41NDk1OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMy0wNS0wOCAgRWxpIEZpZGxlciAgPGVm
aWRsZXJAYmxhY2tiZXJyeS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEZpeCB1c2FnZSBv
ZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCbGFja0JlcnJ5IFBSIDMwNDE5MworICAgICAgICBJbnRl
cm5hbGx5IHJldmlld2VkIGJ5IE1pa2UgTGF0dGFuemlvLCBBcnZpZCBOaWxzc29uLCBKb2UgTWFz
b24sIEplZmYgUm9nZXJzLCBhbmQgR2VvcmdlIFN0YWlrb3MKKworICAgICAgICBXZSBjdXJyZW50
bHkgaGF2ZSBhIHByb2JsZW0gd2hlcmUgd2UncmUgcGFzc2luZyBVVEYtOCBlbmNvZGVkIGRhdGEg
aW50bworICAgICAgICB0aGUgY2hhciogY29uc3RydWN0b3JzIG9mIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmcuIFRoaXMgbWVhbnMgdGhlIHN0cmluZworICAgICAgICB0aGlua3MgaXRzIGRh
dGEgaXMgbm90IFVURi04LgorCisgICAgICAgICogQXBpL0phdmFTY3JpcHRWYXJpYW50LmNwcDoK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SlNWYWx1ZVJlZlRvQmxhY2tCZXJyeUphdmFT
Y3JpcHRWYXJpYW50KToKKyAgICAgICAgKiBBcGkvV2ViS2l0VGV4dENvZGVjLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6YmFzZTY0RW5jb2RlKToKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OmxvYWRGaWxl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dGV4dEVuY29kaW5nKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dGV4dEhhc0F0dHJpYnV0ZSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpkZWZhdWx0VXNl
ckFnZW50KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5oOgorICAgICAgICAqIEFwaS9XZWJTZXR0
aW5ncy5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlNldHRpbmdzOjpzdGFu
ZGFyZFNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0RlZmF1bHRUYXBIaWdobGlnaHQuY3BwOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RGVmYXVsdFRhcEhpZ2hsaWdodDo6ZHJh
dyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRlZmF1bHRUYXBIaWdobGlnaHQ6Omhp
ZGUpOgorCiAyMDEzLTA1LTA3ICBYdWVmZWkgUmVuICA8eHJlbkBibGFja2JlcnJ5LmNvbT4KIAog
ICAgICAgICBDbGVhbiB1cCBsb2FkIGludGVyZmFjZSBpbiBXZWJQYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGJjNGRhMTcuLjBjZGQzYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC02MjksNyAr
NjI5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkRmlu
aXNoTG9hZCgpCiAgICAgICAgICAgICBTdHJpbmcgdGl0bGUgPSBsaW5rRWxlbWVudC0+dGl0bGUo
KTsKIAogICAgICAgICAgICAgaWYgKFdURjo6ZXF1YWxJZ25vcmluZ0Nhc2UobGlua0VsZW1lbnQt
PnJlbCgpLCAiYXBwbGUtdG91Y2gtaWNvbiIpKQotICAgICAgICAgICAgICAgIG1fd2ViUGFnZVBy
aXZhdGUtPm1fY2xpZW50LT5zZXRMYXJnZUljb24oaHJlZi5sYXRpbjEoKS5kYXRhKCkpOworICAg
ICAgICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5zZXRMYXJnZUljb24oaHJl
Zik7CiAgICAgICAgICAgICBlbHNlIGlmIChXVEY6OmVxdWFsSWdub3JpbmdDYXNlKGxpbmtFbGVt
ZW50LT5yZWwoKSwgInNlYXJjaCIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFdURjo6ZXF1YWxJ
Z25vcmluZ0Nhc2UobGlua0VsZW1lbnQtPnR5cGUoKSwgImFwcGxpY2F0aW9uL29wZW5zZWFyY2hk
ZXNjcmlwdGlvbit4bWwiKSkKICAgICAgICAgICAgICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+
bV9jbGllbnQtPnNldFNlYXJjaFByb3ZpZGVyRGV0YWlscyh0aXRsZSwgaHJlZik7CkBAIC0xMjU0
LDcgKzEyNTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpCiAgICAgYmFzZTY0RW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCksIG91dCk7CiAgICAgb3V0LmFwcGVuZCgnXDAn
KTsgLy8gTWFrZSBpdCBudWxsLXRlcm1pbmF0ZWQuCiAgICAgU3RyaW5nIGljb25VcmwgPSBpY29u
RGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHVybCk7Ci0gICAgbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9jbGllbnQtPnNldEZhdmljb24ob3V0LmRhdGEoKSwgaWNvblVybCk7Cisg
ICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnNldEZhdmljb24oQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZzo6ZnJvbUFzY2lpKG91dC5kYXRhKCksIG91dC5zaXplKCkpLCBpY29uVXJs
KTsKICAgICBkYXRhLT51bnJlZigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RlZmF1bHRUYXBIaWdobGlnaHQuY3BwCmlu
ZGV4IGVlZWJhN2QuLmQ3MjlhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0RlZmF1bHRUYXBIaWdobGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RlZmF1bHRUYXBIaWdobGlnaHQuY3BwCkBAIC00
MCw4ICs0MCw4IEBAIGNvbnN0IGRvdWJsZSBBY3RpdmVUZXh0RmFkZUFuaW1hdGlvbkR1cmF0aW9u
ID0gMC4zOwogY29uc3QgZG91YmxlIE92ZXJsYXlTaHJpbmtBbmltYXRpb25EdXJhdGlvbiA9IDAu
NTsKIGNvbnN0IGRvdWJsZSBPdmVybGF5SW5pdGlhbFNjYWxlID0gMi4wOwogCi1zdGF0aWMgY29u
c3QgY2hhciogZmFkZUFuaW1hdGlvbk5hbWUoKSB7IHJldHVybiAiZmFkZSI7IH0KLXN0YXRpYyBj
b25zdCBjaGFyKiBzaHJpbmtBbmltYXRpb25OYW1lKCkgeyByZXR1cm4gInNocmluayI7IH0KK1NU
QVRJQ19MT0NBTF9TVFJJTkcoc19mYWRlQW5pbWF0aW9uTmFtZSwgImZhZGUiKTsKK1NUQVRJQ19M
T0NBTF9TVFJJTkcoc19zaHJpbmtBbmltYXRpb25OYW1lLCAic2hyaW5rIik7CiAKIERlZmF1bHRU
YXBIaWdobGlnaHQ6OkRlZmF1bHRUYXBIaWdobGlnaHQoV2ViUGFnZVByaXZhdGUqIHBhZ2UpCiAg
ICAgOiBtX3BhZ2UocGFnZSkKQEAgLTgxLDE4ICs4MSwxOCBAQCB2b2lkIERlZmF1bHRUYXBIaWdo
bGlnaHQ6OmRyYXcoY29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdpb24mIHJlZ2lvbiwgaW50IHJl
ZCwgaQogICAgICAgICBtX3BhZ2UtPm1fd2ViUGFnZS0+YWRkT3ZlcmxheShtX292ZXJsYXkuZ2V0
KCkpOwogICAgIH0KIAotICAgIG1fb3ZlcmxheS0+cmVtb3ZlQW5pbWF0aW9uKHNocmlua0FuaW1h
dGlvbk5hbWUoKSk7CisgICAgbV9vdmVybGF5LT5yZW1vdmVBbmltYXRpb24oc19zaHJpbmtBbmlt
YXRpb25OYW1lKTsKICAgICBtX292ZXJsYXktPnJlc2V0T3ZlcnJpZGVzKCk7CiAgICAgbV9vdmVy
bGF5LT5zZXRQb3NpdGlvbihyZWN0LmxvY2F0aW9uKCkpOwogICAgIG1fb3ZlcmxheS0+c2V0U2l6
ZShyZWN0LnNpemUoKSk7CiAgICAgbV9vdmVybGF5LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0g
ICAgbV9vdmVybGF5LT5yZW1vdmVBbmltYXRpb24oZmFkZUFuaW1hdGlvbk5hbWUoKSk7CisgICAg
bV9vdmVybGF5LT5yZW1vdmVBbmltYXRpb24oc19mYWRlQW5pbWF0aW9uTmFtZSk7CiAgICAgbV9v
dmVybGF5LT5zZXRPcGFjaXR5KDEuMCk7CiAgICAgbV9vdmVybGF5LT5pbnZhbGlkYXRlKCk7CiAK
ICAgICAvLyBBbmltYXRlIG92ZXJsYXkgc2NhbGUgdG8gaW5kaWNhdGUgc2VsZWN0aW9uIGlzIHN0
YXJ0ZWQuCiAgICAgaWYgKGlzU3RhcnRPZlNlbGVjdGlvbikgewotICAgICAgICBXZWJBbmltYXRp
b24gc2hyaW5rQW5pbWF0aW9uID0gV2ViQW5pbWF0aW9uOjpzaHJpbmtBbmltYXRpb24oc2hyaW5r
QW5pbWF0aW9uTmFtZSgpLCBPdmVybGF5SW5pdGlhbFNjYWxlLCAxLCBPdmVybGF5U2hyaW5rQW5p
bWF0aW9uRHVyYXRpb24pOworICAgICAgICBXZWJBbmltYXRpb24gc2hyaW5rQW5pbWF0aW9uID0g
V2ViQW5pbWF0aW9uOjpzaHJpbmtBbmltYXRpb24oc19zaHJpbmtBbmltYXRpb25OYW1lLCBPdmVy
bGF5SW5pdGlhbFNjYWxlLCAxLCBPdmVybGF5U2hyaW5rQW5pbWF0aW9uRHVyYXRpb24pOwogICAg
ICAgICBtX292ZXJsYXktPmFkZEFuaW1hdGlvbihzaHJpbmtBbmltYXRpb24pOwogICAgIH0KIH0K
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIERlZmF1bHRUYXBIaWdobGlnaHQ6OmhpZGUoKQogCiAg
ICAgLy8gU2luY2UgV2ViQW5pbWF0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZSwgd2UgY3JlYXRlIGEg
bmV3IG9uZSBlYWNoIHRpbWUgaW5zdGVhZCBvZiByZXVzaW5nIHRoZSBzYW1lIG9iamVjdCBvbiBk
aWZmZXJlbnQKICAgICAvLyB0aHJlYWRzICh0aGF0IHdvdWxkIGludHJvZHVjZSByYWNlIGNvbmRp
dGlvbnMpLgotICAgIFdlYkFuaW1hdGlvbiBmYWRlQW5pbWF0aW9uID0gV2ViQW5pbWF0aW9uOjpm
YWRlQW5pbWF0aW9uKGZhZGVBbmltYXRpb25OYW1lKCksIDEuMCwgMC4wLCBBY3RpdmVUZXh0RmFk
ZUFuaW1hdGlvbkR1cmF0aW9uKTsKKyAgICBXZWJBbmltYXRpb24gZmFkZUFuaW1hdGlvbiA9IFdl
YkFuaW1hdGlvbjo6ZmFkZUFuaW1hdGlvbihzX2ZhZGVBbmltYXRpb25OYW1lLCAxLjAsIDAuMCwg
QWN0aXZlVGV4dEZhZGVBbmltYXRpb25EdXJhdGlvbik7CiAKICAgICAvLyBOb3JtYWxseSwgdGhp
cyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBXZWJLaXQgdGhyZWFkLCBidXQgaXQgY2FuIGFsc28g
YmUKICAgICAvLyBjYWxsZWQgZnJvbSB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI5Mjc1NjMuLmQ3OGZh
MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAxMy0wNS0wOCAgRWxpIEZpZGxlciAgPGVmaWRsZXJAYmxhY2tiZXJy
eS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEZpeCB1c2FnZSBvZiBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTU3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCbGFja0JlcnJ5IFBSIDMwNDE5MworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2Vk
IGJ5IE1pa2UgTGF0dGFuemlvLCBBcnZpZCBOaWxzc29uLCBKb2UgTWFzb24sIEplZmYgUm9nZXJz
LCBhbmQgR2VvcmdlIFN0YWlrb3MKKworICAgICAgICBXZSBjdXJyZW50bHkgaGF2ZSBhIHByb2Js
ZW0gd2hlcmUgd2UncmUgcGFzc2luZyBVVEYtOCBlbmNvZGVkIGRhdGEgaW50bworICAgICAgICB0
aGUgY2hhciogY29uc3RydWN0b3JzIG9mIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcuIFRo
aXMgbWVhbnMgdGhlIHN0cmluZworICAgICAgICB0aGlua3MgaXRzIGRhdGEgaXMgbm90IFVURi04
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRv
Q29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OmR1bXBIaXN0b3J5SXRlbSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRl
bTo6aW52b2tlKToKKwogMjAxMy0wNS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgbWVtb3J5IGxlYWsgaW50cm9kdWNlZCBpbiBy
MTQ5NjkyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRl
clRyZWUuY3BwCmluZGV4IDkxNzg1MDAuLmVjYmI0ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0zMTUsMTAgKzMxNSwx
MyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZyhjb25zdCBTdHJpbmcmIHVybCwgY29ucwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rm9u
dFNpemUoMTYpOwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMyk7CiAg
ICAgc2V0dGluZ3MtPnNldE1pbmltdW1Gb250U2l6ZSgxKTsKLSAgICBzZXR0aW5ncy0+c2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIpOwotICAgIHNldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHko
IkNvdXJpZXIgTmV3Iik7Ci0gICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkFy
aWFsIik7Ci0gICAgc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiKTsKKyAg
ICBTVEFUSUNfTE9DQUxfU1RSSU5HKHNfYXJpYWwsICJBcmlhbCIpOworICAgIFNUQVRJQ19MT0NB
TF9TVFJJTkcoc19jb3VyaWVyLCAiQ291cmllciBOZXciKTsKKyAgICBTVEFUSUNfTE9DQUxfU1RS
SU5HKHNfdGltZXMsICJUaW1lcyIpOworICAgIHNldHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1pbHko
c190aW1lcyk7CisgICAgc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShzX2NvdXJpZXIpOwor
ICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KHNfYXJpYWwpOworICAgIHNldHRp
bmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoc190aW1lcyk7CiAgICAgc2V0dGluZ3MtPnNldFhT
U0F1ZGl0b3JFbmFibGVkKGZhbHNlKTsKICAgICBzZXR0aW5ncy0+c2V0TWF4aW11bVBhZ2VzSW5D
YWNoZSgwKTsKICAgICBzZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CkBAIC00Njks
NyArNDcyLDcgQEAgc3RhdGljIFN0cmluZyBkdW1wSGlzdG9yeUl0ZW0oUGFzc1JlZlB0cjxXZWJD
b3JlOjpIaXN0b3J5SXRlbT4gaXRlbSwgaW50IGluZGVudCwKICAgICAgICAgc3RhcnQgPSA2Owog
ICAgIH0KICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBpbmRlbnQ7IGkrKykKLSAgICAgICAg
cmVzdWx0ID0gcmVzdWx0ICsgIiAiOworICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnICc7CiAK
ICAgICBTdHJpbmcgdXJsID0gaXRlbS0+dXJsU3RyaW5nKCk7CiAgICAgaWYgKHVybC5jb250YWlu
cygiZmlsZTovLyIpKSB7CkBAIC00OTEsNyArNDk0LDcgQEAgc3RhdGljIFN0cmluZyBkdW1wSGlz
dG9yeUl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSwgaW50IGluZGVu
dCwKIAogICAgIGlmIChpdGVtLT5pc1RhcmdldEl0ZW0oKSkKICAgICAgICAgcmVzdWx0ID0gcmVz
dWx0ICsgIiAgKipuYXYgdGFyZ2V0KioiOwotICAgIHJlc3VsdCA9IHJlc3VsdCArICJcbiI7Cisg
ICAgcmVzdWx0ID0gcmVzdWx0ICsgJ1xuJzsKIAogICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVj
dG9yIGNoaWxkcmVuID0gaXRlbS0+Y2hpbGRyZW4oKTsKICAgICAvLyBNdXN0IHNvcnQgdG8gZWxp
bWluYXRlIGFyYml0cmFyeSByZXN1bHQgb3JkZXJpbmcgd2hpY2ggZGVmZWF0cyByZXByb2R1Y2li
bGUgdGVzdGluZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
VGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggNDRhYTA0My4uYWI5MmJhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJy
eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxh
Y2tCZXJyeS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJT
dHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBTdHJpbmcgcGF0aFN0ciA9
IGpzU3RyaW5nUmVmVG9XZWJDb3JlU3RyaW5nKHBhdGgpOwotICAgIEJsYWNrQmVycnk6OldlYktp
dDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCktPnNldHRpbmdzKCkt
PnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24ocGF0aFN0ci51dGY4KCkuZGF0YSgpKTsKKyAgICBC
bGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHBhdGhTdHIpOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJsYWNrQmVy
cnkuY3BwCmluZGV4IDU2MDdjNWUuLjdhNTFkMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJsYWNrQmVycnkuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIGJvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAog
ICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcobV9jb250ZW50LmdldCgpLCBjb250ZW50LmdldCgp
LCBjb250ZW50U2l6ZSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhtX2Jhc2VVUkwuZ2V0
KCksIGJhc2VVUkwuZ2V0KCksIGJhc2VVUkxTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKG1fdW5yZWFjaGFibGVVUkwuZ2V0KCksIHVucmVhY2hhYmxlVVJMLmdldCgpLCB1bnJlYWNo
YWJsZVVSTFNpemUpOwotICAgIEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1
cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCktPmxvYWRTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVS
TC5nZXQoKSwgInRleHQvaHRtbCIsIHVucmVhY2hhYmxlVVJMU2l6ZSA/IHVucmVhY2hhYmxlVVJM
LmdldCgpIDogIiIpOworICAgIEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1
cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCktPmxvYWRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZzo6ZnJvbVV0ZjgoY29udGVudC5nZXQoKSksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmc6OmZyb21VdGY4KGJhc2VVUkwuZ2V0KCkpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nKCJ0ZXh0L2h0bWwiKSwgdW5yZWFjaGFibGVVUkxTaXplID8gQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZzo6ZnJvbVV0ZjgodW5yZWFjaGFibGVVUkwuZ2V0KCkpIDogQmxhY2tCZXJyeTo6
UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>
<flag name="review"
          id="222378"
          type_id="1"
          status="-"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="222379"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201057</attachid>
            <date>2013-05-08 04:42:32 -0700</date>
            <delta_ts>2013-05-08 15:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115781.diff</filename>
            <type>text/plain</type>
            <size>48648</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZjM5MGFlLi5lOWY3ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTMtMDUtMDggIEVsaSBGaWRsZXIgIDxlZmlkbGVyQGJsYWNrYmVycnkuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBGaXggdXNhZ2Ugb2YgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1
NzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxh
Y2tCZXJyeSBQUnMgMzA0MTkzIGFuZCAzMjcxODEKKyAgICAgICAgSW50ZXJuYWxseSBSZXZpZXdl
ZCBieSBNaWtlIExhdHRhbnppbywgQXJ2aWQgTmlsc3NvbiwgSm9lIE1hc29uLCBKZWZmIFJvZ2Vy
cywgYW5kIEdlb3JnZSBTdGFpa29zCisKKyAgICAgICAgV2UgY3VycmVudGx5IGhhdmUgYSBwcm9i
bGVtIHdoZXJlIHdlJ3JlIHBhc3NpbmcgVVRGLTggZW5jb2RlZCBkYXRhIGludG8KKyAgICAgICAg
dGhlIGNoYXIqIGNvbnN0cnVjdG9ycyBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nLiBU
aGlzIG1lYW5zIHRoZSBzdHJpbmcKKyAgICAgICAgdGhpbmtzIGl0cyBkYXRhIGlzIG5vdCBVVEYt
OC4KKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVNYW5hZ2VyOjpnZXRCYWNraW5nU3RvcmVDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVQYXJz
ZXI6OkNvb2tpZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVQYXJzZXI6OnBhcnNl
T25lQ29va2llKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0N1cnNvckJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQmxvYjo6bmV4dERhdGFJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
ZGVsZXRlRmlsZVN5c3RlbU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojptb3ZlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVt
b3ZlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpjcmVhdGVGaWxlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhp
c3RzT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5T25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRp
YVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6
Om5vdGlmeUNoYWxsZW5nZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYk1lZGlhU3Ry
ZWFtU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya01hbmFnZXI6OnN0YXJ0Sm9iKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tC
ZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0
cmVhbUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9S
U1NGaWx0ZXJTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlNTRmlsdGVyU3RyZWFtOjpu
b3RpZnlTdGF0dXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSU1NGaWx0ZXJTdHJlYW06
Om5vdGlmeUhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSU1NGaWx0ZXJTdHJl
YW06OmNvbnZlcnRDb250ZW50VG9IdG1sKToKKyAgICAgICAgKFdlYkNvcmU6OlJTU0ZpbHRlclN0
cmVhbTo6Y2hhcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSU1NGaWx0ZXJTdHJlYW06OnJlbW92
ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSU1NGaWx0ZXJTdHJlYW06OnVwZGF0ZUhlYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSU1NGaWx0ZXJTdHJlYW06OnVwZGF0ZVJTU0hlYWRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3Ry
ZWFtLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9ibGFja2JlcnJ5L1N0cmluZ0JsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Om9wZXJhdG9yIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmcpOgorCiAyMDEzLTA1LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgQ2FudmFzU3R5bGUncyBDTVlLQVZhbHVlcyBhbGxv
Y2F0ZWQgb24gdGhlIGhlYXAgYW5kIG1vdmUgdGhlIHBvaW50ZXIgaW4gdGhlIHVuaW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJk
QmxhY2tCZXJyeS5jcHAKaW5kZXggNjBhNDRiMi4uOTg1MWI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnku
Y3BwCkBAIC03MCwxMSArNzAsMTEgQEAgYm9vbCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpzZXREYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiIpCi0gICAgICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OndyaXRlUGxhaW5UZXh0KHRleHQudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OndyaXRlUGxhaW5U
ZXh0KHRleHQpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCi0gICAgICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OndyaXRlSFRNTCh0ZXh0LnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZUhUTUwo
dGV4dCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSAidGV4dC91cmwiKQotICAgICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZVVSTCh0ZXh0LnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZVVSTCh0ZXh0KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ2xpcGJvYXJk
QmxhY2tCZXJyeTo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqLCBjb25zdCBLVVJM
JiwgY29uc3QKIHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6d3JpdGVVUkwoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCiB7CiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgp
KTsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZVVSTCh1cmwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2Fy
ZDo6d3JpdGVVUkwodXJsLnN0cmluZygpKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5
Ojp3cml0ZVJhbmdlKFJhbmdlKiwgRnJhbWUqKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQ2xp
cGJvYXJkQmxhY2tCZXJyeTo6d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKikKIAogdm9pZCBDbGlw
Ym9hcmRCbGFja0JlcnJ5Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0g
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dC51
dGY4KCkuZGF0YSgpKTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0
ZVBsYWluVGV4dCh0ZXh0KTsKIH0KIAogYm9vbCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpoYXNEYXRh
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
bmFnZXIuY3BwCmluZGV4IGIyNDZkMjguLjYxMThkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMjcxLDcgKzI3
MSw3IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyhWZWN0b3I8UmVmUHRyPFBh
cnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsCiAKICAgICAvLyBJUCBhZGRyZXNzZXMgYXJl
IHN0b3JlZCBpbiBhIHBhcnRpY3VsYXIgZm9ybWF0IChkdWUgdG8gaXB2NikuIFJlZHVjZSB0aGUg
aXAgYWRkcmVzcyBzbyB3ZSBjYW4gbWF0Y2gKICAgICAvLyBpdCB3aXRoIHRoZSBvbmUgaW4gbWVt
b3J5LgotICAgIHN0cmluZyBjYW5vbmljYWxJUCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpnZXRD
YW5vbmljYWxJUEZvcm1hdChyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIGNhbm9uaWNhbElQID0gQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmdldENhbm9uaWNhbElQRm9ybWF0KHJlcXVlc3RVUkwuaG9zdCgpKTsKICAgICBpZiAo
IWNhbm9uaWNhbElQLmVtcHR5KCkpCiAgICAgICAgIGRlbGltaXRlZEhvc3QuYXBwZW5kKFN0cmlu
ZyhjYW5vbmljYWxJUC5jX3N0cigpKSk7CiAgICAgZWxzZQpAQCAtNTE0LDcgKzUxNCw3IEBAIHZv
aWQgQ29va2llTWFuYWdlcjo6Z2V0QmFja2luZ1N0b3JlQ29va2llcygpCiAgICAgICAgIFJlZlB0
cjxQYXJzZWRDb29raWU+IG5ld0Nvb2tpZSA9IGNvb2tpZXNbaV07CiAKICAgICAgICAgLy8gVGhl
IElQIGZsYWcgaXMgbm90IHBlcnNpc3RlZCBpbiB0aGUgZGF0YWJhc2UuCi0gICAgICAgIGlmIChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6aXNJUEFkZHJlc3MobmV3Q29va2llLT5kb21haW4oKS51dGY4
KCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjppc0lQQWRkcmVz
cyhuZXdDb29raWUtPmRvbWFpbigpKSkKICAgICAgICAgICAgIG5ld0Nvb2tpZS0+c2V0RG9tYWlu
KG5ld0Nvb2tpZS0+ZG9tYWluKCksIHRydWUpOwogCiAgICAgICAgIGNoZWNrQW5kVHJlYXRDb29r
aWUobmV3Q29va2llLCBCYWNraW5nU3RvcmVDb29raWVFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAKaW5kZXggYjQ4Mzc3
OC4uYjNjMTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQ29va2llUGFyc2VyLmNwcApAQCAtNTYsOSArNTYsOSBAQCBDb29raWVQYXJzZXI6OkNvb2tp
ZVBhcnNlcihjb25zdCBLVVJMJiBkZWZhdWx0Q29va2llVVJMKQogewogICAgIG1fZGVmYXVsdENv
b2tpZUhvc3QgPSBkZWZhdWx0Q29va2llVVJMLmhvc3QoKTsKICAgICBtX2RlZmF1bHREb21haW5J
c0lQQWRkcmVzcyA9IGZhbHNlOwotICAgIHN0cmluZyBob3N0RG9tYWluQ2Fub25pY2FsID0gQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OmdldENhbm9uaWNhbElQRm9ybWF0KG1fZGVmYXVsdENvb2tpZUhv
c3QudXRmOCgpLmRhdGEoKSkuY19zdHIoKTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nIGhvc3REb21haW5DYW5vbmljYWwgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Z2V0Q2Fub25p
Y2FsSVBGb3JtYXQobV9kZWZhdWx0Q29va2llSG9zdCk7CiAgICAgaWYgKCFob3N0RG9tYWluQ2Fu
b25pY2FsLmVtcHR5KCkpIHsKLSAgICAgICAgbV9kZWZhdWx0Q29va2llSG9zdCA9IFN0cmluZyho
b3N0RG9tYWluQ2Fub25pY2FsLmNfc3RyKCkpOworICAgICAgICBtX2RlZmF1bHRDb29raWVIb3N0
ID0gaG9zdERvbWFpbkNhbm9uaWNhbDsKICAgICAgICAgbV9kZWZhdWx0RG9tYWluSXNJUEFkZHJl
c3MgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICBtX2RlZmF1bHRDb29raWVIb3N0ID0gbV9k
ZWZhdWx0Q29va2llSG9zdC5zdGFydHNXaXRoKCIuIikgPyBtX2RlZmF1bHRDb29raWVIb3N0IDog
Ii4iICsgbV9kZWZhdWx0Q29va2llSG9zdDsKQEAgLTI3OCw3ICsyNzgsNyBAQCBQYXNzUmVmUHRy
PFBhcnNlZENvb2tpZT4gQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcm
IGNvb2tpZSwgdW5zaQogICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGFuIElQIEFkZHJlc3Ms
IHdlIHNob3VsZCB0cmVhdCBpdCBvbmx5IGlmIGl0IG1hdGNoZXMgdGhlIGhvc3QgZXhhY3RseQog
ICAgICAgICAgICAgICAgIC8vIFdlIGRldGVybWluZSB0aGUgY2Fub25pY2FsIElQIGZvcm1hdCBi
ZWZvcmUgY29tcGFyaW5nIGJlY2F1c2UgSVB2NiBjb3VsZCBiZSByZXByZXNlbnRlZCBpbiBtdWx0
aXBsZSBmb3JtYXRzCiAgICAgICAgICAgICAgICAgaWYgKG1fZGVmYXVsdERvbWFpbklzSVBBZGRy
ZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyByZWFsRG9tYWluQ2Fub25pY2FsID0g
U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpnZXRDYW5vbmljYWxJUEZvcm1hdChyZWFsRG9t
YWluLnV0ZjgoKS5kYXRhKCkpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
cmVhbERvbWFpbkNhbm9uaWNhbCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpnZXRDYW5vbmljYWxJ
UEZvcm1hdChyZWFsRG9tYWluKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWxEb21haW5D
YW5vbmljYWwuaXNFbXB0eSgpIHx8IHJlYWxEb21haW5DYW5vbmljYWwgIT0gbV9kZWZhdWx0Q29v
a2llSG9zdCkKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUl9BTkRfUkVUVVJOKCJJ
bnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFpbik6IGRvbWFpbiBpcyBJUCBidXQgZG9l
cyBub3QgbWF0Y2ggaG9zdCdzIElQIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVhbERvbWFpbiA9IHJlYWxEb21haW5DYW5vbmljYWw7CkBAIC0yOTgsNyAr
Mjk4LDcgQEAgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IENvb2tpZVBhcnNlcjo6cGFyc2VPbmVD
b29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2kKIAogICAgICAgICAgICAgICAgICAgICAv
LyBDaGVjayB3aGV0aGVyIHRoZSBkb21haW4gaXMgYSB0b3AgbGV2ZWwgZG9tYWluLCBpZiBpdCBp
cyB0aHJvdyBpdCBvdXQKICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL3B1YmxpY3N1ZmZp
eC5vcmcvbGlzdC8KLSAgICAgICAgICAgICAgICAgICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojppc1RvcExldmVsRG9tYWluKHJlYWxEb21haW4udXRmOCgpLmRhdGEoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6aXNUb3BMZXZlbERvbWFpbihyZWFs
RG9tYWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUl9BTkRfUkVUVVJOKCJJ
bnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFpbik6IGl0IGRpZCBub3QgcGFzcyB0aGUg
dG9wIGxldmVsIGRvbWFpbiBjaGVjayIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlcy0+c2V0RG9tYWluKHJlYWxEb21haW4sIGlz
SVBBZGRyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQ3Vyc29yQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0N1cnNvckJsYWNrQmVycnkuY3BwCmluZGV4IGIwZTIxOWEuLjFhOTc2Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ3Vyc29yQmxhY2tCZXJyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DdXJzb3JCbGFja0Jl
cnJ5LmNwcApAQCAtNDgsNyArNDgsNyBAQCBDdXJzb3I6OkN1cnNvcihjb25zdCBDdXJzb3ImIG90
aGVyKQogfQogCiBDdXJzb3I6OkN1cnNvcihJbWFnZSosIGNvbnN0IEludFBvaW50JiBob3RzcG90
KQotOiBtX3BsYXRmb3JtQ3Vyc29yKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDdXJzb3JDdXN0b21p
emVkLCBzdGQ6OnN0cmluZygpLCBob3RzcG90KQorOiBtX3BsYXRmb3JtQ3Vyc29yKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpDdXJzb3JDdXN0b21pemVkLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nOjplbXB0eVN0cmluZygpLCBob3RzcG90KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQmxvYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQmxvYi5jcHAKaW5kZXggMjhhMjEyMy4u
NGMxODhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Q
bGF0Zm9ybUJsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UGxhdGZvcm1CbG9iLmNwcApAQCAtMzMsNyArMzMsNyBAQCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViQmxvYkRhdGFJdGVtKiBQbGF0Zm9ybUJsb2I6Om5leHREYXRhSXRlbSgpCiAgICAgbV9wbGF0
Zm9ybUJsb2JJdGVtLm1faXNEYXRhID0gaXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YTsK
ICAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9idWZmZXIgPSBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9p
c0RhdGEgPyBpdGVtLmRhdGEtPmRhdGEoKSArIHN0YXRpY19jYXN0PGludD4oaXRlbS5vZmZzZXQp
IDogMDsKICAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9idWZmZXJMZW5ndGggPSBtX3BsYXRmb3Jt
QmxvYkl0ZW0ubV9pc0RhdGEgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGl0ZW0ubGVuZ3RoKSA6IDA7
Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fZmlsZU5hbWUgPSBtX3BsYXRmb3JtQmxvYkl0ZW0u
bV9pc0RhdGEgPyBzdGQ6OnN0cmluZygpIDogaXRlbS5wYXRoLnV0ZjgoKS5kYXRhKCk7CisgICAg
bV9wbGF0Zm9ybUJsb2JJdGVtLm1fZmlsZU5hbWUgPSBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9pc0Rh
dGEgPyBlbXB0eVN0cmluZygpIDogaXRlbS5wYXRoOwogICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5t
X2ZpbGVTdGFydCA9IG1fcGxhdGZvcm1CbG9iSXRlbS5tX2lzRGF0YSA/IDAgOiBpdGVtLm9mZnNl
dDsKICAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9maWxlTGVuZ3RoID0gbV9wbGF0Zm9ybUJsb2JJ
dGVtLm1faXNEYXRhID8gMCA6IGl0ZW0ubGVuZ3RoOwogICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5t
X2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9pc0Rh
dGEgPyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViQmxvYkRhdGFJdGVtOjpET05PVENIRUNLRklM
RUNIQU5HRSA6IGl0ZW0uZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggZGMxZGMxM2YuLjFiZDJhN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtNjEsNzIgKzYxLDcyIEBAIGJvb2wgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7
Ci0gICAgV2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0od2ViS2l0VGhyZWFkTWVzc2FnZUNs
aWVudCgpLCBiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCBzdG9yYWdlSWRlbnRpZmllci51dGY4KCku
ZGF0YSgpLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgc2l6ZSwgY3Jl
YXRlLCBjYWxsYmFja3MsIDApOworICAgIFdlYkZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKHdl
YktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBz
dGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgc2l6ZSwgY3JlYXRlLCBjYWxs
YmFja3MsIDApOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRl
bGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBj
YWxsYmFja3MpCiB7Ci0gICAgV2ViRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbSh3ZWJLaXRU
aHJlYWRNZXNzYWdlQ2xpZW50KCksIGJhc2VQYXRoLnV0ZjgoKS5kYXRhKCksIHN0b3JhZ2VJZGVu
dGlmaWVyLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5
cGUpLCBjYWxsYmFja3MpOworICAgIFdlYkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0od2Vi
S2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHN0
YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBjYWxsYmFja3MpOwogfQogCiB2
b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwg
Y29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewotICAgIHBs
YXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLnV0
ZjgoKS5kYXRhKCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKS51dGY4KCku
ZGF0YSgpLCBjYWxsYmFja3MpOworICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lz
dGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9u
UGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6Y29weU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBL
VVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKiBjYWxsYmFja3MpCiB7Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0
ZW1VUkxUb1BhdGgoc291cmNlUGF0aCkudXRmOCgpLmRhdGEoKSwgZmlsZVN5c3RlbVVSTFRvUGF0
aChkZXN0aW5hdGlvblBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZv
cm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVT
eXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29u
c3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNh
bGxiYWNrcykKIHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlbW92ZShmaWxlU3lzdGVtVVJM
VG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxl
U3lzdGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0K
IAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVs
eU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+
cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKS51dGY4KCkuZGF0YSgp
LCBjYWxsYmFja3MpOworICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHko
ZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29u
c3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNh
bGxiYWNrcykKIHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lz
dGVtVVJMVG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZv
cm1GaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2Fs
bGJhY2tzKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVh
dGVGaWxlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVt
KiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewotICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LnV0ZjgoKS5kYXRhKCksIGV4Y2x1c2l2ZSwgY2FsbGJhY2tzKTsKKyAgICBwbGF0Zm9ybUZpbGVT
eXN0ZW0tPmNyZWF0ZUZpbGUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBj
YWxsYmFja3MpOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykK
IHsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShmaWxlU3lzdGVtVVJM
VG9QYXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGV4Y2x1c2l2ZSwgY2FsbGJhY2tzKTsKKyAgICBw
bGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRo
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewot
ICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5m
aWxlRXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKIHZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZp
bGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5kaXJlY3Rv
cnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKS51dGY4KCkuZGF0YSgpLCBjYWxsYmFj
a3MpOworICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGZpbGVTeXN0ZW1V
UkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBw
YXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQog
ewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLnV0ZjgoKS5kYXRhKCksIGNhbGxiYWNrcyk7CisgICAgcGxhdGZvcm1GaWxlU3lz
dGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7
CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVy
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0g
ICAgV2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKHBsYXRmb3JtRmlsZVN5c3RlbSwgZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKS51dGY4KCkuZGF0YSgpLCBjYWxsYmFja3MpOworICAgIFdlYkZp
bGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9ybUZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1VUkxU
b1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0
ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKiBjYWxsYmFja3MpCiB7Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hv
dEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKS51dGY4KCkuZGF0
YSgpLCBjYWxsYmFja3MpOworICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RG
aWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7
CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0
ZW0oV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgcm9vdFVSTCwgY29uc3QgU3Ry
aW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdl
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHAKaW5kZXggMGFhYzA3YS4uNTRlOTVhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNr
QmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvSW1hZ2VCbGFja0JlcnJ5LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25z
dCBjaGFyICpuYW1lKQogewotICAgIFJlc291cmNlRGF0YSBkYXRhID0gUmVzb3VyY2VTdG9yZTo6
aW5zdGFuY2UoKS0+cmVxdWVzdFJlc291cmNlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmco
bmFtZSkpOworICAgIFJlc291cmNlRGF0YSBkYXRhID0gUmVzb3VyY2VTdG9yZTo6aW5zdGFuY2Uo
KS0+cmVxdWVzdFJlc291cmNlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmZyb21VdGY4
KG5hbWUpKTsKICAgICBpZiAoIWRhdGEuZGF0YSgpKQogICAgICAgICByZXR1cm4gQml0bWFwSW1h
Z2U6Om51bGxJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZh
dGVCbGFja0JlcnJ5LmNwcAppbmRleCA0N2JmYjI1Li4wYzY1N2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0
ZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTE5NCwxOCArMTk0
LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1
cmwpCiAKICAgICBkZWxldGVHdWFyZGVkT2JqZWN0KG1fcGxhdGZvcm1QbGF5ZXIpOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX3BsYXRmb3JtUGxheWVyID0gUGxhdGZv
cm1QbGF5ZXI6OmNyZWF0ZSh0aGlzLCB0YWJJZCwgaXNWaWRlbywgdHJ1ZSwgbW9kaWZpZWRVcmwu
dXRmOCgpLmRhdGEoKSk7CisgICAgbV9wbGF0Zm9ybVBsYXllciA9IFBsYXRmb3JtUGxheWVyOjpj
cmVhdGUodGhpcywgdGFiSWQsIGlzVmlkZW8sIHRydWUsIG1vZGlmaWVkVXJsKTsKICNlbHNlCi0g
ICAgbV9wbGF0Zm9ybVBsYXllciA9IFBsYXRmb3JtUGxheWVyOjpjcmVhdGUodGhpcywgdGFiSWQs
IGlzVmlkZW8sIGZhbHNlLCBtb2RpZmllZFVybC51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3BsYXRm
b3JtUGxheWVyID0gUGxhdGZvcm1QbGF5ZXI6OmNyZWF0ZSh0aGlzLCB0YWJJZCwgaXNWaWRlbywg
ZmFsc2UsIG1vZGlmaWVkVXJsKTsKICNlbmRpZgogCiAgICAgV1RGOjpTdHJpbmcgY29va2llUGFp
cnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICBjb29raWVQYWlycyA9IGNvb2tp
ZU1hbmFnZXIoKS5nZXRDb29raWUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybC51dGY4KCkuZGF0
YSgpKSwgV2l0aEh0dHBPbmx5Q29va2llcyk7Ci0gICAgaWYgKCFjb29raWVQYWlycy5pc0VtcHR5
KCkgJiYgY29va2llUGFpcnMudXRmOCgpLmRhdGEoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVBsYXll
ci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwudXRmOCgpLmRhdGEoKSwgbV93ZWJDb3JlUGxh
eWVyLT51c2VyQWdlbnQoKS51dGY4KCkuZGF0YSgpLCBjb29raWVQYWlycy51dGY4KCkuZGF0YSgp
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1QbGF5ZXItPmxvYWQocGxheWVySUQsIG1v
ZGlmaWVkVXJsLnV0ZjgoKS5kYXRhKCksIG1fd2ViQ29yZVBsYXllci0+dXNlckFnZW50KCkudXRm
OCgpLmRhdGEoKSwgMCk7CisgICAgICAgIGNvb2tpZVBhaXJzID0gY29va2llTWFuYWdlcigpLmdl
dENvb2tpZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgV2l0aEh0dHBPbmx5Q29va2llcyk7
CisgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwsIG1fd2Vi
Q29yZVBsYXllci0+dXNlckFnZW50KCksIGNvb2tpZVBhaXJzKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OmNhbmNlbExvYWQoKQpAQCAtNzY2LDkgKzc2Myw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBQcm90ZWN0aW9uCiAgICAgaWYgKHJlc3VsdCAhPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVN1
Y2Nlc3MgfHwgIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhdGZv
cm1QbGF5ZXItPnJlbG9hZFdpdGhDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLnV0ZjgoV1RG
OjpTdHJpbmc6OlN0cmljdENvbnZlcnNpb24pLmRhdGEoKSwKLSAgICAgICAgY3JlZGVudGlhbC5w
YXNzd29yZCgpLnV0ZjgoV1RGOjpTdHJpbmc6OlN0cmljdENvbnZlcnNpb24pLmRhdGEoKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8TU1SQXV0aENoYWxsZW5nZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNl
PihjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkpKTsKKyAgICBtX3BsYXRmb3JtUGxheWVyLT5yZWxv
YWRXaXRoQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgp
LCBzdGF0aWNfY2FzdDxNTVJBdXRoQ2hhbGxlbmdlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2U+KGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
b25BdXRoZW50aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhDaGFs
bGVuZ2UpIGNvbnN0CkBAIC04MjIsNyArODE3LDcgQEAgaW50IE1lZGlhUGxheWVyUHJpdmF0ZTo6
b25TaG93RXJyb3JEaWFsb2coUGxhdGZvcm1QbGF5ZXI6OkVycm9yIHR5cGUpCiAKIHN0YXRpYyBX
ZWJNZWRpYVN0cmVhbVNvdXJjZSB0b1dlYk1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtU291
cmNlKiBzcmMpCiB7Ci0gICAgcmV0dXJuIFdlYk1lZGlhU3RyZWFtU291cmNlKHNyYy0+aWQoKS51
dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZT4oc3Jj
LT50eXBlKCkpLCBzcmMtPm5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gV2ViTWVk
aWFTdHJlYW1Tb3VyY2Uoc3JjLT5pZCgpLCBzdGF0aWNfY2FzdDxXZWJNZWRpYVN0cmVhbVNvdXJj
ZTo6VHlwZT4oc3JjLT50eXBlKCkpLCBzcmMtPm5hbWUoKSk7CiB9CiAKIHN0YXRpYyBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IgdG9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiBkKQpAQCAtODM1LDcgKzgzMCw3IEBAIHN0YXRpYyBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3IgdG9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoTWVkaWFTdHJlYW1EZXNjcmlwdG9y
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5udW1iZXJPZlZpZGVvQ29tcG9uZW50cygp
OyBpKyspCiAgICAgICAgIHZpZGVvU291cmNlcy5wdXNoX2JhY2sodG9XZWJNZWRpYVN0cmVhbVNv
dXJjZShkLT52aWRlb0NvbXBvbmVudChpKS0+c291cmNlKCkpKTsKIAotICAgIHJldHVybiBXZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IoZC0+aWQoKS51dGY4KCkuZGF0YSgpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcyk7CisgICAgcmV0dXJuIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihkLT5p
ZCgpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKIFdlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvciBNZWRpYVBsYXllclByaXZhdGU6Omxvb2t1cE1lZGlhU3RyZWFtKGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCmlu
ZGV4IDVlZjMwMmEuLjU3YzMzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcApAQCAtMTY5
LDcgKzE2OSw3IEBAIGJvb2wgTmV0d29ya01hbmFnZXI6OnN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwg
Y29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBQYXNzUmVmCiAgICAgc2V0QXV0aENyZWRlbnRp
YWxzKHBsYXRmb3JtUmVxdWVzdCwgZ3VhcmRKb2ItPmdldEludGVybmFsKCktPm1fcHJveHlXZWJD
aGFsbGVuZ2UpOwogCiAgICAgaWYgKCFyZXF1ZXN0Lm92ZXJyaWRlQ29udGVudFR5cGUoKS5pc0Vt
cHR5KCkpCi0gICAgICAgIHBsYXRmb3JtUmVxdWVzdC5zZXRPdmVycmlkZUNvbnRlbnRUeXBlKHJl
cXVlc3Qub3ZlcnJpZGVDb250ZW50VHlwZSgpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgICAgIHBs
YXRmb3JtUmVxdWVzdC5zZXRPdmVycmlkZUNvbnRlbnRUeXBlKHJlcXVlc3Qub3ZlcnJpZGVDb250
ZW50VHlwZSgpKTsKIAogICAgIE5ldHdvcmtKb2IqIG5ldHdvcmtKb2IgPSBuZXcgTmV0d29ya0pv
YjsKICAgICBpZiAoIW5ldHdvcmtKb2IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFt
SGFuZGxlQmxhY2tCZXJyeS5jcHAKaW5kZXggYjdmMzZkOC4uMTZlMmRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhh
bmRsZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcApAQCAtNjcsNyArNjcs
OCBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcm
IGdyb3VwTmFtZSwgY29uc3QgS1VSTCYgdXJsLAogCiAgICAgLy8gT3BlbiB0aGUgc29ja2V0CiAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgcmVx
dWVzdC5zZXRSZXF1ZXN0VXJsKHVybC5zdHJpbmcoKSwgIkNPTk5FQ1QiKTsKKyAgICBTVEFUSUNf
TE9DQUxfU1RSSU5HKHNfY29ubmVjdCwgIkNPTk5FQ1QiKTsKKyAgICByZXF1ZXN0LnNldFJlcXVl
c3RVcmwodXJsLnN0cmluZygpLCBzX2Nvbm5lY3QpOwogICAgIG1fc29ja2V0U3RyZWFtID0gYWRv
cHRQdHIoZmFjdG9yeS0+Y3JlYXRlTmV0d29ya1N0cmVhbShyZXF1ZXN0LCBwbGF5ZXJJZCkpOwog
ICAgIEFTU0VSVChtX3NvY2tldFN0cmVhbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3Ry
ZWFtLmNwcAppbmRleCBiZDU4MTQ1Li41ZWEwMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NGaWx0
ZXJTdHJlYW0uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC00MzQsNyArNDM0LDcgQEAgUlNTRmlsdGVyU3RyZWFtOjpSU1NGaWx0ZXJT
dHJlYW0oKQogewogfQogCi12b2lkIFJTU0ZpbHRlclN0cmVhbTo6bm90aWZ5U3RhdHVzUmVjZWl2
ZWQoaW50IHN0YXR1cywgY29uc3QgY2hhciogbWVzc2FnZSkKK3ZvaWQgUlNTRmlsdGVyU3RyZWFt
Ojpub3RpZnlTdGF0dXNSZWNlaXZlZChpbnQgc3RhdHVzLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6U3RyaW5nJiBtZXNzYWdlKQogewogICAgIC8vIE5vbi1IVFRQIGVycm9ycyBoYXZlIG5v
IGRhdGEgdG8gZGlzcGxheSwgYW5kIHJlZGlyZWN0cyB3aWxsIG5ldmVyIGJlIGRpc3BsYXllZCwK
ICAgICAvLyBzbyBubyBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgaGF2ZSBSU1MgZGF0YQpAQCAtNDU1
LDEzICs0NTUsMTMgQEAgdm9pZCBSU1NGaWx0ZXJTdHJlYW06Om5vdGlmeUhlYWRlcnNSZWNlaXZl
ZChjb25zdCBOZXR3b3JrUmVxdWVzdDo6SGVhZGVyTGlzdCYgaGUKICAgICAgICAgTmV0d29ya1Jl
cXVlc3Q6OkhlYWRlckxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CiAg
ICAgICAgIE5ldHdvcmtSZXF1ZXN0OjpIZWFkZXJMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
aGVhZGVycy5iZWdpbigpOwogICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewot
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0ZXItPmZpcnN0LCBzX2NvbnRlbnRU
eXBlSGVhZGVyS2V5KSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0ZXIt
PmZpcnN0LnRvU3RkU3RyaW5nKCksIHNfY29udGVudFR5cGVIZWFkZXJLZXkpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGl0ZXItPnNlY29uZC5maW5kKCJ4bWwiKSAhPSBzdGQ6OnN0cmluZzo6bnBv
cykgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRUeXBlSW5kZXggPSBzdGQ6OmRpc3Rh
bmNlKE5ldHdvcmtSZXF1ZXN0OjpIZWFkZXJMaXN0Ojpjb25zdF9pdGVyYXRvcihoZWFkZXJzLmJl
Z2luKCkpLCBpdGVyKTsKLSAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlIHR5cGUgPSBS
U1NUeXBlRnJvbUNvbnRlbnRUeXBlKGl0ZXItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgICAg
IFJlc291cmNlVHlwZSB0eXBlID0gUlNTVHlwZUZyb21Db250ZW50VHlwZShpdGVyLT5zZWNvbmQu
dG9TdGRTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JTU0NvbnRlbnQodHlw
ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlVHlwZSA9IHR5cGU7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc1BvdGVudGlhbFJTU01JTUVUeXBlKGl0ZXItPnNl
Y29uZCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc1BvdGVudGlhbFJTU01JTUVU
eXBlKGl0ZXItPnNlY29uZC50b1N0ZFN0cmluZygpKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VUeXBlID0gVHlwZU5vdFJTUzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSU1NGaWx0ZXJTdHJlYW06
Om5vdGlmeUNsb3NlKGludCBzdGF0dXMpCiBib29sIFJTU0ZpbHRlclN0cmVhbTo6Y29udmVydENv
bnRlbnRUb0h0bWwoc3RkOjpzdHJpbmcmIHJlc3VsdCkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgYmFzZSA9IHVybCgpOworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBiYXNlID0gdXJsKCkudG9TdGRTdHJpbmcoKTsKICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZW5jID0gZW5jb2RpbmcoKTsKIAogICAgIE93blB0cjxSU1NQYXJzZXJCYXNlPiBwYXJz
ZXIgPSBjcmVhdGVQYXJzZXIobV9yZXNvdXJjZVR5cGUpOwpAQCAtNTc4LDcgKzU3OCw3IEBAIGNv
bnN0IHN0ZDo6c3RyaW5nJiBSU1NGaWx0ZXJTdHJlYW06OmNoYXJzZXQoKQogICAgIHN0YXRpYyBj
b25zdCBpbnQgY2hhcnNldFByZWZpeExlbiA9IHN0cmxlbihjaGFyc2V0UHJlZml4KTsKICAgICBz
aXplX3QgcG9zID0gKG1faGVhZGVycy5hdChtX2NvbnRlbnRUeXBlSW5kZXgpLnNlY29uZCkuZmlu
ZChjaGFyc2V0UHJlZml4KTsKICAgICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0g
ICAgICAgIG1fY2hhcnNldCA9IG1faGVhZGVycy5hdChtX2NvbnRlbnRUeXBlSW5kZXgpLnNlY29u
ZC5zdWJzdHIocG9zICsgY2hhcnNldFByZWZpeExlbik7CisgICAgICAgIG1fY2hhcnNldCA9IG1f
aGVhZGVycy5hdChtX2NvbnRlbnRUeXBlSW5kZXgpLnNlY29uZC5zdWJzdHIocG9zICsgY2hhcnNl
dFByZWZpeExlbikudG9TdGRTdHJpbmcoKTsKICAgICAgICAgc3RyaXBXaGl0ZVNwYWNlKG1fY2hh
cnNldCk7CiAgICAgfQogCkBAIC02MjMsMzkgKzYyMywzOCBAQCB2b2lkIFJTU0ZpbHRlclN0cmVh
bTo6c2F2ZUhlYWRlcnMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0
OjpIZQogICAgIG1faGVhZGVycyA9IGhlYWRlcnM7CiB9CiAKLXZvaWQgUlNTRmlsdGVyU3RyZWFt
OjpyZW1vdmVIZWFkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSkKK3ZvaWQgUlNTRmlsdGVyU3Ry
ZWFtOjpyZW1vdmVIZWFkZXIoY29uc3QgY2hhcioga2V5KQogewogICAgIE5ldHdvcmtSZXF1ZXN0
OjpIZWFkZXJMaXN0OjppdGVyYXRvciBlbmQgPSBtX2hlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChO
ZXR3b3JrUmVxdWVzdDo6SGVhZGVyTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1faGVhZGVycy5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIGlmICghc3RyY2FzZWNtcChpdGVy
LT5maXJzdC5jX3N0cigpLCBrZXkuY19zdHIoKSkpIHsKKyAgICAgICAgaWYgKCFzdHJjYXNlY21w
KGl0ZXItPmZpcnN0LmNfc3RyKCksIGtleSkpIHsKICAgICAgICAgICAgIG1faGVhZGVycy5lcmFz
ZShpdGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9p
ZCBSU1NGaWx0ZXJTdHJlYW06OnVwZGF0ZUhlYWRlcihjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBj
b25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCit2b2lkIFJTU0ZpbHRlclN0cmVhbTo6dXBkYXRlSGVh
ZGVyKGNvbnN0IGNoYXIqIGtleSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
dmFsdWUpCiB7CiAgICAgTmV0d29ya1JlcXVlc3Q6OkhlYWRlckxpc3Q6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2hlYWRlcnMuYmVnaW4oKTsKICAgICBOZXR3b3JrUmVxdWVzdDo6SGVhZGVyTGlzdDo6aXRl
cmF0b3IgZW5kID0gbV9oZWFkZXJzLmVuZCgpOwogICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7Ci0gICAgICAgIGlmICghc3RyY2FzZWNtcChpdGVyLT5maXJzdC5jX3N0cigpLCBrZXku
Y19zdHIoKSkpIHsKKyAgICAgICAgaWYgKCFzdHJjYXNlY21wKGl0ZXItPmZpcnN0LmNfc3RyKCks
IGtleSkpIHsKICAgICAgICAgICAgIGl0ZXItPnNlY29uZCA9IHZhbHVlOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9oZWFkZXJzLmluc2VydChpdGVyLCBz
dGQ6Om1ha2VfcGFpcihrZXksIHZhbHVlKSk7CisgICAgbV9oZWFkZXJzLmluc2VydChpdGVyLCBz
dGQ6Om1ha2VfcGFpcihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9tQXNjaWkoa2V5
KSwgdmFsdWUpKTsKIH0KIAogdm9pZCBSU1NGaWx0ZXJTdHJlYW06OnVwZGF0ZVJTU0hlYWRlcnMo
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmVtb3ZlSGVhZGVyKHNfY29udGVudEVuY29kaW5nSGVhZGVy
S2V5KTsKLSAgICB1cGRhdGVIZWFkZXIoc19jb250ZW50VHlwZUhlYWRlcktleSwgInRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCIpOworICAgIFNUQVRJQ19MT0NBTF9TVFJJTkcoc19odG1sQ29udGVu
dFR5cGUsICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsKIAotICAgIGNoYXIgYnVmZmVyWzE2
XTsKLSAgICBzbnByaW50ZihidWZmZXIsIDE2LCAiJWQiLCBzaXplKTsKLSAgICB1cGRhdGVIZWFk
ZXIoc19jb250ZW50TGVuZ3RoSGVhZGVyS2V5LCBzdGQ6OnN0cmluZyhidWZmZXIsIDE2KSk7Cisg
ICAgcmVtb3ZlSGVhZGVyKHNfY29udGVudEVuY29kaW5nSGVhZGVyS2V5KTsKKyAgICB1cGRhdGVI
ZWFkZXIoc19jb250ZW50VHlwZUhlYWRlcktleSwgc19odG1sQ29udGVudFR5cGUpOworICAgIHVw
ZGF0ZUhlYWRlcihzX2NvbnRlbnRMZW5ndGhIZWFkZXJLZXksIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmc6Om51bWJlcihzaXplKSk7CiB9CiAKIHZvaWQgUlNTRmlsdGVyU3RyZWFtOjpzZW5k
U2F2ZWRIZWFkZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0ZpbHRlclN0cmVhbS5oCmluZGV4IDY5Y2Jk
OGUuLjM5MTI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9yc3MvUlNTRmlsdGVyU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NGaWx0ZXJTdHJlYW0uaApAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAKICAgICBSU1NGaWx0ZXJTdHJlYW0oKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlTdGF0dXNSZWNlaXZlZChpbnQgc3RhdHVzLCBjb25zdCBjaGFyKiBtZXNzYWdl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3RhdHVzUmVjZWl2ZWQoaW50IHN0YXR1cywgY29u
c3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUhlYWRlcnNSZWNlaXZlZChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0
d29ya1JlcXVlc3Q6OkhlYWRlckxpc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RGF0YVJl
Y2VpdmVkKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrQnVmZmVyKik7CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUNsb3NlKGludCBzdGF0dXMpOwpAQCAtNTEsOCArNTEsOCBAQCBwcml2YXRl
OgogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbmNvZGluZygpOwogCiAgICAgdm9pZCBzYXZlSGVh
ZGVycyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkhlYWRlckxp
c3QmKTsKLSAgICB2b2lkIHJlbW92ZUhlYWRlcihjb25zdCBzdGQ6OnN0cmluZyYga2V5KTsKLSAg
ICB2b2lkIHVwZGF0ZUhlYWRlcihjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpOworICAgIHZvaWQgcmVtb3ZlSGVhZGVyKGNvbnN0IGNoYXIqIGtleSk7Cisg
ICAgdm9pZCB1cGRhdGVIZWFkZXIoY29uc3QgY2hhcioga2V5LCBjb25zdCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVSU1NIZWFkZXJzKHNpemVf
dCk7CiAgICAgdm9pZCBzZW5kU2F2ZWRIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvYmxhY2tiZXJyeS9TdHJpbmdCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvYmxhY2tiZXJyeS9TdHJpbmdCbGFja0JlcnJ5LmNw
cAppbmRleCA3MjZmMmJkLi41ZDllODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2JsYWNrYmVycnkvU3RyaW5nQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9ibGFja2JlcnJ5L1N0cmluZ0JsYWNrQmVycnkuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIFN0cmluZzo6b3BlcmF0b3IgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmlu
ZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpl
bXB0eVN0cmluZygpOwogCiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFy
YWN0ZXJzOCgpKSwgbGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFy
YWN0ZXJzOCgpKSwgbGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmcoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL0phdmFTY3JpcHRWYXJpYW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvSmF2YVNjcmlwdFZhcmlhbnQuY3BwCmluZGV4IDgzMDcyNjguLmU1
ZTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSmF2YVNjcmlw
dFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSmF2YVNjcmlw
dFZhcmlhbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEphdmFTY3JpcHRWYXJpYW50IEpTVmFsdWVS
ZWZUb0JsYWNrQmVycnlKYXZhU2NyaXB0VmFyaWFudChjb25zdCBKU0dsb2JhbENvbnRleHRSCiAg
ICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKHN0cmluZ1JlZik7CiAgICAgICAgIFdURjo6VmVjdG9yPGNoYXI+IGJ1ZmZlcihidWZmZXJT
aXplKTsKICAgICAgICAgc2l6ZV90IHJjID0gSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmdS
ZWYsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUpOwotICAgICAgICByZXR1cm5WYWx1ZS5zZXRT
dHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyhidWZmZXIuZGF0YSgpLCByYyAtIDEp
KTsKKyAgICAgICAgcmV0dXJuVmFsdWUuc2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmc6OmZyb21VdGY4KGJ1ZmZlci5kYXRhKCksIHJjIC0gMSkpOwogICAgICAgICBKU1N0cmlu
Z1JlbGVhc2Uoc3RyaW5nUmVmKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwCmluZGV4IDQzNGIzNjEu
LjIwOTY0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0
VGV4dENvZGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRl
eHRDb2RlYy5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIGJhc2U2NEVuY29kZShjb25zdCBz
dGQ6OnZlY3RvcjxjaGFyPiYgYmluYXJ5LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJgog
CiAgICAgV1RGOjpiYXNlNjRFbmNvZGUoJmJpbmFyeVswXSwgYmluYXJ5LnNpemUoKSwgcmVzdWx0
LCBzdGF0aWNfY2FzdDxXVEY6OkJhc2U2NEVuY29kZVBvbGljeT4ocG9saWN5KSk7CiAKLSAgICBi
YXNlNjQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nKCZyZXN1bHRbMF0sIHJlc3VsdC5z
aXplKCkpOworICAgIGJhc2U2NCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmZyb21B
c2NpaSgmcmVzdWx0WzBdLCByZXN1bHQuc2l6ZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggZjhkNjA5ZC4uODNm
OTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC03MTgs
MTAgKzcxOCwxMiBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkKGNvbnN0IFBsYXRmb3JtOjpO
ZXR3b3JrUmVxdWVzdCYgbmV0UmVxLCBib29sIG5lZWRSZWZlcgogCiB2b2lkIFdlYlBhZ2U6Omxv
YWRGaWxlKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhdGgsIGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIG92ZXJyaWRlQ29udGVudFR5cGUpCiB7CisgICAg
U1RBVElDX0xPQ0FMX1NUUklORyhzX2ZpbGVQcmVmaXgsICJmaWxlOi8vIik7CisgICAgU1RBVElD
X0xPQ0FMX1NUUklORyhzX2ZpbGVSb290UHJlZml4LCAiZmlsZTovLy8iKTsKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIGZpbGVVcmwocGF0aCk7Ci0gICAgaWYgKGZpbGVVcmwuc3Rh
cnRzV2l0aCgiLyIpKQotICAgICAgICBmaWxlVXJsID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZygiZmlsZTovLyIsIDcpICsgZmlsZVVybDsKLSAgICBlbHNlIGlmICghZmlsZVVybC5zdGFy
dHNXaXRoKCJmaWxlOi8vLyIpKQorICAgIGlmIChmaWxlVXJsLnN0YXJ0c1dpdGgoJy8nKSkKKyAg
ICAgICAgZmlsZVVybCA9IHNfZmlsZVByZWZpeCArIGZpbGVVcmw7CisgICAgZWxzZSBpZiAoIWZp
bGVVcmwuc3RhcnRzV2l0aChzX2ZpbGVSb290UHJlZml4KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0IG5ldFJlcXVlc3Q7CkBAIC00MTcyLDExICs0MTc0
LDExIEBAIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgV2ViUGFnZTo6dGV4dEVuY29kaW5n
KCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0cmluZygpOwogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1w
dHlTdHJpbmcoKTsKIAogICAgIHJldHVybiBkb2N1bWVudC0+bG9hZGVyKCktPndyaXRlcigpLT5l
bmNvZGluZygpOwogfQpAQCAtNTk0Miw3ICs1OTQ0LDcgQEAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyBXZWJQYWdlOjp0ZXh0SGFzQXR0cmlidXRlKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRm
b3IKICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IGQtPm1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZG9jLT5x
dWVyeUNvbW1hbmRWYWx1ZShxdWVyeSk7CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5nKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGVuYWJsZWQpCkBAIC01
OTkyLDcgKzU5OTQsNyBAQCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBXZWJQ
YWdlUHJpdmF0ZTo6ZGVmYXVsdFVzZXJBZ2VudCgpCiAgICAgICAgIGlmICh1YVNpemUgPD0gMCB8
fCB1YVNpemUgPj0gMjU2KQogICAgICAgICAgICAgQkxBQ0tCRVJSWV9DUkFTSCgpOwogCi0gICAg
ICAgIGRlZmF1bHRVc2VyQWdlbnQgPSBuZXcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyh1
YUJ1ZmZlciwgdWFTaXplKTsKKyAgICAgICAgZGVmYXVsdFVzZXJBZ2VudCA9IG5ldyBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmZyb21V
dGY4KHVhQnVmZmVyLCB1YVNpemUpKTsKICAgICB9CiAKICAgICByZXR1cm4gKmRlZmF1bHRVc2Vy
QWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IDAzOGYxMGYu
LmI3NGE1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCkBAIC04OCw5
ICs4OCw5IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2VDbGllbnQqIGNsaWVudCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBsb2FkRmlsZShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBw
YXRoLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBvdmVycmlkZUNvbnRlbnRU
eXBlID0gIiIpOworICAgIHZvaWQgbG9hZEZpbGUoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyYgcGF0aCwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgb3ZlcnJp
ZGVDb250ZW50VHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3RyaW5n
KCkpOwogCi0gICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBiYXNlVVJMLCBjb25z
dCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBjb250ZW50VHlwZSA9ICJ0ZXh0L2h0bWwi
LCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBmYWlsaW5nVVJMID0gQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKSk7CisgICAgdm9pZCBsb2FkU3Ry
aW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmLCBjb25zdCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6U3RyaW5nJiBiYXNlVVJMLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nJiBjb250ZW50VHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmZyb21B
c2NpaSgidGV4dC9odG1sIiksIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZh
aWxpbmdVUkwgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0cmluZygpKTsK
IAogICAgIHZvaWQgbG9hZChjb25zdCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3QmLCBib29sIG5l
ZWRSZWZlcmVyID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
U2V0dGluZ3MuY3BwCmluZGV4IGUyNjE0ZGQuLmU0MGMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCkBAIC0yMDMsMTAgKzIwMywxMCBAQCBXZWJT
ZXR0aW5ncyogV2ViU2V0dGluZ3M6OnN0YW5kYXJkU2V0dGluZ3MoKQogICAgIHNldHRpbmdzLT5t
X3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0V2ViU29ja2V0c0VuYWJsZWQsIHRydWUpOwogICAg
IHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0VGV4dEF1dG9zaXppbmdFbmFi
bGVkLCBmYWxzZSk7CiAKLSAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0
Rml4ZWRGb250RmFtaWx5LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Rm9udEluZm86Omluc3RhbmNl
KCktPmZvbnRGYW1pbHkoIi13ZWJraXQtbW9ub3NwYWNlIiwgIiIpKTsKLSAgICBzZXR0aW5ncy0+
bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U2Fuc1NlcmlmZkZvbnRGYW1pbHksIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2UoKS0+Zm9udEZhbWlseSgiLXdlYmtpdC1z
YW5zLXNlcmlmIiwgIiIpKTsKLSAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2Vi
S2l0U2VyaWZmRm9udEZhbWlseSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZvbnRJbmZvOjppbnN0
YW5jZSgpLT5mb250RmFtaWx5KCItd2Via2l0LXNlcmlmIiwgIiIpKTsKLSAgICBzZXR0aW5ncy0+
bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U3RhbmRhcmRGb250RmFtaWx5LCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Rm9udEluZm86Omluc3RhbmNlKCktPmZvbnRGYW1pbHkoIi13ZWJraXQtc3Rh
bmRhcmQiLCAiIikpOworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRG
aXhlZEZvbnRGYW1pbHksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2Uo
KS0+Zm9udEZhbWlseShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9tQXNjaWkoIi13
ZWJraXQtbW9ub3NwYWNlIiksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc6OmVtcHR5U3Ry
aW5nKCkpKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U2Fuc1Nl
cmlmZkZvbnRGYW1pbHksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2Uo
KS0+Zm9udEZhbWlseShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9tQXNjaWkoIi13
ZWJraXQtc2Fucy1zZXJpZiIpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjplbXB0eVN0
cmluZygpKSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFNlcmlm
ZkZvbnRGYW1pbHksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2UoKS0+
Zm9udEZhbWlseShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9tQXNjaWkoIi13ZWJr
aXQtc2VyaWYiKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKSkp
OworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRTdGFuZGFyZEZvbnRG
YW1pbHksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGb250SW5mbzo6aW5zdGFuY2UoKS0+Zm9udEZh
bWlseShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nOjpmcm9tQXNjaWkoIi13ZWJraXQtc3Rh
bmRhcmQiKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmcoKSkpOwog
CiAgICAgcmV0dXJuIHNldHRpbmdzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5k
ZXggMjdiOWM0NC4uNWFlZGYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTMtMDUtMDggIEVsaSBGaWRsZXIgIDxlZmlkbGVyQGJsYWNrYmVycnku
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBGaXggdXNhZ2Ugb2YgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQmxhY2tCZXJyeSBQUnMgMzA0MTkzIGFuZCAzMjcxODEKKyAgICAgICAgSW50ZXJuYWxs
eSBSZXZpZXdlZCBieSBNaWtlIExhdHRhbnppbywgQXJ2aWQgTmlsc3NvbiwgSm9lIE1hc29uLCBK
ZWZmIFJvZ2VycywgYW5kIEdlb3JnZSBTdGFpa29zCisKKyAgICAgICAgV2UgY3VycmVudGx5IGhh
dmUgYSBwcm9ibGVtIHdoZXJlIHdlJ3JlIHBhc3NpbmcgVVRGLTggZW5jb2RlZCBkYXRhIGludG8K
KyAgICAgICAgdGhlIGNoYXIqIGNvbnN0cnVjdG9ycyBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nLiBUaGlzIG1lYW5zIHRoZSBzdHJpbmcKKyAgICAgICAgdGhpbmtzIGl0cyBkYXRhIGlz
IG5vdCBVVEYtOC4KKworICAgICAgICAqIEFwaS9KYXZhU2NyaXB0VmFyaWFudC5jcHA6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkpTVmFsdWVSZWZUb0JsYWNrQmVycnlKYXZhU2NyaXB0
VmFyaWFudCk6CisgICAgICAgICogQXBpL1dlYktpdFRleHRDb2RlYy5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OmJhc2U2NEVuY29kZSk6CisgICAgICAgICogQXBpL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjpsb2FkRmlsZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnRleHRFbmNvZGluZyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnRleHRIYXNBdHRyaWJ1dGUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZGVmYXVsdFVzZXJBZ2Vu
dCk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJTZXR0aW5nczo6c3RhbmRhcmRT
ZXR0aW5ncyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbik6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRlZmF1bHRUYXBIaWdobGlnaHQ6OmRyYXcpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEZWZhdWx0VGFwSGlnaGxpZ2h0OjpoaWRlKToK
KwogMjAxMy0wNS0wNyAgWHVlZmVpIFJlbiAgPHhyZW5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXAgbG9hZCBpbnRlcmZhY2UgaW4gV2ViUGFnZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCBiYzRkYTE3Li4wY2RkM2IwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtNjI5LDcgKzYyOSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZEZpbmlzaExv
YWQoKQogICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gbGlua0VsZW1lbnQtPnRpdGxlKCk7CiAK
ICAgICAgICAgICAgIGlmIChXVEY6OmVxdWFsSWdub3JpbmdDYXNlKGxpbmtFbGVtZW50LT5yZWwo
KSwgImFwcGxlLXRvdWNoLWljb24iKSkKLSAgICAgICAgICAgICAgICBtX3dlYlBhZ2VQcml2YXRl
LT5tX2NsaWVudC0+c2V0TGFyZ2VJY29uKGhyZWYubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+c2V0TGFyZ2VJY29uKGhyZWYpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoV1RGOjplcXVhbElnbm9yaW5nQ2FzZShsaW5rRWxlbWVudC0+
cmVsKCksICJzZWFyY2giKSkgewogICAgICAgICAgICAgICAgIGlmIChXVEY6OmVxdWFsSWdub3Jp
bmdDYXNlKGxpbmtFbGVtZW50LT50eXBlKCksICJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3Jp
cHRpb24reG1sIikpCiAgICAgICAgICAgICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xp
ZW50LT5zZXRTZWFyY2hQcm92aWRlckRldGFpbHModGl0bGUsIGhyZWYpOwpAQCAtMTI1NCw3ICsx
MjU0LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKQogICAgIGJhc2U2NEVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpLCBvdXQpOwogICAgIG91dC5hcHBlbmQoJ1wwJyk7IC8v
IE1ha2UgaXQgbnVsbC10ZXJtaW5hdGVkLgogICAgIFN0cmluZyBpY29uVXJsID0gaWNvbkRhdGFi
YXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTCh1cmwpOwotICAgIG1fd2ViUGFnZVBy
aXZhdGUtPm1fY2xpZW50LT5zZXRGYXZpY29uKG91dC5kYXRhKCksIGljb25VcmwpOworICAgIG1f
d2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5zZXRGYXZpY29uKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmc6OmZyb21Bc2NpaShvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKSwgaWNvblVybCk7CiAg
ICAgZGF0YS0+dW5yZWYoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRGVmYXVsdFRhcEhpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcAppbmRleCBl
ZWViYTdkLi5kNzI5YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmNwcApAQCAtNDAsOCAr
NDAsOCBAQCBjb25zdCBkb3VibGUgQWN0aXZlVGV4dEZhZGVBbmltYXRpb25EdXJhdGlvbiA9IDAu
MzsKIGNvbnN0IGRvdWJsZSBPdmVybGF5U2hyaW5rQW5pbWF0aW9uRHVyYXRpb24gPSAwLjU7CiBj
b25zdCBkb3VibGUgT3ZlcmxheUluaXRpYWxTY2FsZSA9IDIuMDsKIAotc3RhdGljIGNvbnN0IGNo
YXIqIGZhZGVBbmltYXRpb25OYW1lKCkgeyByZXR1cm4gImZhZGUiOyB9Ci1zdGF0aWMgY29uc3Qg
Y2hhciogc2hyaW5rQW5pbWF0aW9uTmFtZSgpIHsgcmV0dXJuICJzaHJpbmsiOyB9CitTVEFUSUNf
TE9DQUxfU1RSSU5HKHNfZmFkZUFuaW1hdGlvbk5hbWUsICJmYWRlIik7CitTVEFUSUNfTE9DQUxf
U1RSSU5HKHNfc2hyaW5rQW5pbWF0aW9uTmFtZSwgInNocmluayIpOwogCiBEZWZhdWx0VGFwSGln
aGxpZ2h0OjpEZWZhdWx0VGFwSGlnaGxpZ2h0KFdlYlBhZ2VQcml2YXRlKiBwYWdlKQogICAgIDog
bV9wYWdlKHBhZ2UpCkBAIC04MSwxOCArODEsMTggQEAgdm9pZCBEZWZhdWx0VGFwSGlnaGxpZ2h0
OjpkcmF3KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uJiByZWdpb24sIGludCByZWQsIGkK
ICAgICAgICAgbV9wYWdlLT5tX3dlYlBhZ2UtPmFkZE92ZXJsYXkobV9vdmVybGF5LmdldCgpKTsK
ICAgICB9CiAKLSAgICBtX292ZXJsYXktPnJlbW92ZUFuaW1hdGlvbihzaHJpbmtBbmltYXRpb25O
YW1lKCkpOworICAgIG1fb3ZlcmxheS0+cmVtb3ZlQW5pbWF0aW9uKHNfc2hyaW5rQW5pbWF0aW9u
TmFtZSk7CiAgICAgbV9vdmVybGF5LT5yZXNldE92ZXJyaWRlcygpOwogICAgIG1fb3ZlcmxheS0+
c2V0UG9zaXRpb24ocmVjdC5sb2NhdGlvbigpKTsKICAgICBtX292ZXJsYXktPnNldFNpemUocmVj
dC5zaXplKCkpOwogICAgIG1fb3ZlcmxheS0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIG1f
b3ZlcmxheS0+cmVtb3ZlQW5pbWF0aW9uKGZhZGVBbmltYXRpb25OYW1lKCkpOworICAgIG1fb3Zl
cmxheS0+cmVtb3ZlQW5pbWF0aW9uKHNfZmFkZUFuaW1hdGlvbk5hbWUpOwogICAgIG1fb3Zlcmxh
eS0+c2V0T3BhY2l0eSgxLjApOwogICAgIG1fb3ZlcmxheS0+aW52YWxpZGF0ZSgpOwogCiAgICAg
Ly8gQW5pbWF0ZSBvdmVybGF5IHNjYWxlIHRvIGluZGljYXRlIHNlbGVjdGlvbiBpcyBzdGFydGVk
LgogICAgIGlmIChpc1N0YXJ0T2ZTZWxlY3Rpb24pIHsKLSAgICAgICAgV2ViQW5pbWF0aW9uIHNo
cmlua0FuaW1hdGlvbiA9IFdlYkFuaW1hdGlvbjo6c2hyaW5rQW5pbWF0aW9uKHNocmlua0FuaW1h
dGlvbk5hbWUoKSwgT3ZlcmxheUluaXRpYWxTY2FsZSwgMSwgT3ZlcmxheVNocmlua0FuaW1hdGlv
bkR1cmF0aW9uKTsKKyAgICAgICAgV2ViQW5pbWF0aW9uIHNocmlua0FuaW1hdGlvbiA9IFdlYkFu
aW1hdGlvbjo6c2hyaW5rQW5pbWF0aW9uKHNfc2hyaW5rQW5pbWF0aW9uTmFtZSwgT3ZlcmxheUlu
aXRpYWxTY2FsZSwgMSwgT3ZlcmxheVNocmlua0FuaW1hdGlvbkR1cmF0aW9uKTsKICAgICAgICAg
bV9vdmVybGF5LT5hZGRBbmltYXRpb24oc2hyaW5rQW5pbWF0aW9uKTsKICAgICB9CiB9CkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBEZWZhdWx0VGFwSGlnaGxpZ2h0OjpoaWRlKCkKIAogICAgIC8v
IFNpbmNlIFdlYkFuaW1hdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHdlIGNyZWF0ZSBhIG5ldyBv
bmUgZWFjaCB0aW1lIGluc3RlYWQgb2YgcmV1c2luZyB0aGUgc2FtZSBvYmplY3Qgb24gZGlmZmVy
ZW50CiAgICAgLy8gdGhyZWFkcyAodGhhdCB3b3VsZCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25z
KS4KLSAgICBXZWJBbmltYXRpb24gZmFkZUFuaW1hdGlvbiA9IFdlYkFuaW1hdGlvbjo6ZmFkZUFu
aW1hdGlvbihmYWRlQW5pbWF0aW9uTmFtZSgpLCAxLjAsIDAuMCwgQWN0aXZlVGV4dEZhZGVBbmlt
YXRpb25EdXJhdGlvbik7CisgICAgV2ViQW5pbWF0aW9uIGZhZGVBbmltYXRpb24gPSBXZWJBbmlt
YXRpb246OmZhZGVBbmltYXRpb24oc19mYWRlQW5pbWF0aW9uTmFtZSwgMS4wLCAwLjAsIEFjdGl2
ZVRleHRGYWRlQW5pbWF0aW9uRHVyYXRpb24pOwogCiAgICAgLy8gTm9ybWFsbHksIHRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBvbiB0aGUgV2ViS2l0IHRocmVhZCwgYnV0IGl0IGNhbiBhbHNvIGJlCiAg
ICAgLy8gY2FsbGVkIGZyb20gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyOTI3NTYzLi40OTlhMzk0IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTMtMDUtMDggIEVsaSBGaWRsZXIgIDxlZmlkbGVyQGJsYWNrYmVycnkuY29t
PgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBGaXggdXNhZ2Ugb2YgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmxhY2tCZXJyeSBQUnMgMzA0MTkzIGFuZCAzMjcxODEKKyAgICAgICAgSW50ZXJuYWxseSBS
ZXZpZXdlZCBieSBNaWtlIExhdHRhbnppbywgQXJ2aWQgTmlsc3NvbiwgSm9lIE1hc29uLCBKZWZm
IFJvZ2VycywgYW5kIEdlb3JnZSBTdGFpa29zCisKKyAgICAgICAgV2UgY3VycmVudGx5IGhhdmUg
YSBwcm9ibGVtIHdoZXJlIHdlJ3JlIHBhc3NpbmcgVVRGLTggZW5jb2RlZCBkYXRhIGludG8KKyAg
ICAgICAgdGhlIGNoYXIqIGNvbnN0cnVjdG9ycyBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nLiBUaGlzIG1lYW5zIHRoZSBzdHJpbmcKKyAgICAgICAgdGhpbmtzIGl0cyBkYXRhIGlzIG5v
dCBVVEYtOC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9Xb3JrUXVldWVJdGVtQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChMb2FkSFRNTFN0
cmluZ0l0ZW06Omludm9rZSk6CisKIDIwMTMtMDUtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIG1lbW9yeSBsZWFrIGludHJvZHVj
ZWQgaW4gcjE0OTY5MgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcAppbmRleCA5MTc4NTAwLi5lY2JiNGQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzE1LDEw
ICszMTUsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJl
Zm9yZVRlc3RpbmcoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnMKICAgICBzZXR0aW5ncy0+c2V0RGVm
YXVsdEZvbnRTaXplKDE2KTsKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUo
MTMpOwogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtRm9udFNpemUoMSk7Ci0gICAgc2V0dGluZ3Mt
PnNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiKTsKLSAgICBzZXR0aW5ncy0+c2V0Rml4ZWRGb250
RmFtaWx5KCJDb3VyaWVyIE5ldyIpOwotICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJBcmlhbCIpOwotICAgIHNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVz
Iik7CisgICAgU1RBVElDX0xPQ0FMX1NUUklORyhzX2FyaWFsLCAiQXJpYWwiKTsKKyAgICBTVEFU
SUNfTE9DQUxfU1RSSU5HKHNfY291cmllciwgIkNvdXJpZXIgTmV3Iik7CisgICAgU1RBVElDX0xP
Q0FMX1NUUklORyhzX3RpbWVzLCAiVGltZXMiKTsKKyAgICBzZXR0aW5ncy0+c2V0U2VyaWZGb250
RmFtaWx5KHNfdGltZXMpOworICAgIHNldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoc19jb3Vy
aWVyKTsKKyAgICBzZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzX2FyaWFsKTsKKyAg
ICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KHNfdGltZXMpOwogICAgIHNldHRpbmdz
LT5zZXRYU1NBdWRpdG9yRW5hYmxlZChmYWxzZSk7CiAgICAgc2V0dGluZ3MtPnNldE1heGltdW1Q
YWdlc0luQ2FjaGUoMCk7CiAgICAgc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwpA
QCAtNDY5LDcgKzQ3Miw3IEBAIHN0YXRpYyBTdHJpbmcgZHVtcEhpc3RvcnlJdGVtKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0sIGludCBpbmRlbnQsCiAgICAgICAgIHN0YXJ0
ID0gNjsKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IHN0YXJ0OyBpIDwgaW5kZW50OyBpKyspCi0g
ICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICIgIjsKKyAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsg
JyAnOwogCiAgICAgU3RyaW5nIHVybCA9IGl0ZW0tPnVybFN0cmluZygpOwogICAgIGlmICh1cmwu
Y29udGFpbnMoImZpbGU6Ly8iKSkgewpAQCAtNDkxLDcgKzQ5NCw3IEBAIHN0YXRpYyBTdHJpbmcg
ZHVtcEhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0sIGlu
dCBpbmRlbnQsCiAKICAgICBpZiAoaXRlbS0+aXNUYXJnZXRJdGVtKCkpCiAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdCArICIgICoqbmF2IHRhcmdldCoqIjsKLSAgICByZXN1bHQgPSByZXN1bHQgKyAi
XG4iOworICAgIHJlc3VsdCA9IHJlc3VsdCArICdcbic7CiAKICAgICBXZWJDb3JlOjpIaXN0b3J5
SXRlbVZlY3RvciBjaGlsZHJlbiA9IGl0ZW0tPmNoaWxkcmVuKCk7CiAgICAgLy8gTXVzdCBzb3J0
IHRvIGVsaW1pbmF0ZSBhcmJpdHJhcnkgcmVzdWx0IG9yZGVyaW5nIHdoaWNoIGRlZmVhdHMgcmVw
cm9kdWNpYmxlIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDQ0YWEwNDMuLmFiOTJiYWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJs
YWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1
bm5lckJsYWNrQmVycnkuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogdm9pZCBUZXN0UnVubmVyOjpzZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiB7CiAgICAgU3RyaW5nIHBh
dGhTdHIgPSBqc1N0cmluZ1JlZlRvV2ViQ29yZVN0cmluZyhwYXRoKTsKLSAgICBCbGFja0JlcnJ5
OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHBhdGhTdHIudXRmOCgpLmRhdGEoKSk7
CisgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNl
KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihwYXRoU3Ry
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Xb3JrUXVldWVJdGVtQmxhY2tC
ZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1C
bGFja0JlcnJ5LmNwcAppbmRleCA1NjA3YzVlLi44MjdiNWViIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5
LmNwcApAQCAtNjIsNyArNjIsOCBAQCBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkg
Y29uc3QKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG1fY29udGVudC5nZXQoKSwgY29udGVu
dC5nZXQoKSwgY29udGVudFNpemUpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcobV9iYXNl
VVJMLmdldCgpLCBiYXNlVVJMLmdldCgpLCBiYXNlVVJMU2l6ZSk7CiAgICAgSlNTdHJpbmdHZXRV
VEY4Q1N0cmluZyhtX3VucmVhY2hhYmxlVVJMLmdldCgpLCB1bnJlYWNoYWJsZVVSTC5nZXQoKSwg
dW5yZWFjaGFibGVVUkxTaXplKTsKLSAgICBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5sb2FkU3RyaW5nKGNvbnRlbnQuZ2V0KCks
IGJhc2VVUkwuZ2V0KCksICJ0ZXh0L2h0bWwiLCB1bnJlYWNoYWJsZVVSTFNpemUgPyB1bnJlYWNo
YWJsZVVSTC5nZXQoKSA6ICIiKTsKKyAgICBTVEFUSUNfTE9DQUxfU1RSSU5HKHNfdGV4dEh0bWws
ICJ0ZXh0L2h0bWwiKTsKKyAgICBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpj
dXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5sb2FkU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpTdHJpbmc6OmZyb21VdGY4KGNvbnRlbnQuZ2V0KCkpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nOjpmcm9tVXRmOChiYXNlVVJMLmdldCgpKSwgc190ZXh0SHRtbCwgdW5yZWFjaGFibGVV
UkxTaXplID8gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZnJvbVV0ZjgodW5yZWFjaGFi
bGVVUkwuZ2V0KCkpIDogQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZzo6ZW1wdHlTdHJpbmco
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>