<?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>137594</bug_id>
          
          <creation_ts>2014-10-09 20:38:57 -0700</creation_ts>
          <short_desc>Drop RENDER_OBJECT_TYPE_CASTS() for a lot of RenderObject subclasses</short_desc>
          <delta_ts>2014-10-10 11:02:45 -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>Layout and Rendering</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>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040796</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 20:38:57 -0700</bug_when>
    <thetext>Drop RENDER_OBJECT_TYPE_CASTS() for RenderObject subclasses that no longer needed it or that required very few changes to do so. This will make sure developers start using is&lt;&gt;() / downcast&lt;&gt;() for those classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040798</commentid>
    <comment_count>1</comment_count>
      <attachid>239595</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 20:41:02 -0700</bug_when>
    <thetext>Created attachment 239595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040927</commentid>
    <comment_count>2</comment_count>
      <attachid>239595</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-10 09:35:19 -0700</bug_when>
    <thetext>Comment on attachment 239595
Patch

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

&gt; Source/WebCore/rendering/RenderVideo.cpp:284
&gt;      RenderObject* parent = renderer-&gt;parent();
&gt;      if (!parent)
&gt; -        return 0;
&gt; +        return nullptr;
&gt;      
&gt; -    RenderFullScreen* fullScreen = parent-&gt;isRenderFullScreen() ? toRenderFullScreen(parent) : 0;
&gt; +    RenderFullScreen* fullScreen = is&lt;RenderFullScreen&gt;(*parent) ? downcast&lt;RenderFullScreen&gt;(parent) : nullptr;
&gt;      if (!fullScreen)
&gt; -        return 0;
&gt; +        return nullptr;
&gt;      
&gt;      return fullScreen-&gt;placeholder();

We should write this:

    RenderObject* parent = renderer-&gt;parent();
    return is&lt;RenderFullScreen&gt;(parent) ? downcast&lt;RenderFullScreen&gt;(*parent).placeholder() : nullptr;

I think the two line version is better than the longer version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040933</commentid>
    <comment_count>3</comment_count>
      <attachid>239629</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 09:41:46 -0700</bug_when>
    <thetext>Created attachment 239629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040948</commentid>
    <comment_count>4</comment_count>
      <attachid>239629</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 10:23:24 -0700</bug_when>
    <thetext>Comment on attachment 239629
Patch

Rejecting attachment 239629 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
nCommand.dia -c /Volumes/Data/EWS/WebKit/Source/WebCore/editing/ReplaceNodeWithSpanCommand.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/ReplaceNodeWithSpanCommand.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/RenderVideo.o rendering/RenderVideo.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.appspot.com/results/5076801827110912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040949</commentid>
    <comment_count>5</comment_count>
      <attachid>239635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 10:26:16 -0700</bug_when>
    <thetext>Created attachment 239635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040968</commentid>
    <comment_count>6</comment_count>
      <attachid>239635</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 11:02:39 -0700</bug_when>
    <thetext>Comment on attachment 239635
Patch

Clearing flags on attachment: 239635

Committed r174603: &lt;http://trac.webkit.org/changeset/174603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040969</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 11:02:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239595</attachid>
            <date>2014-10-09 20:41:02 -0700</date>
            <delta_ts>2014-10-10 09:41:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137594-20141009204106.patch</filename>
            <type>text/plain</type>
            <size>54933</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE4NTE0YjNkMmZlMzRj
NmIwZTMzZjc5MTgxMWQ0OTRkNjkwZDA3OS4uMTg1ODI4M2Y4Yjc4NDBjMmY5NTA0NjBkNDQxYTAz
NmM0MjdmYTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBSRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoKSBmb3IgYSBsb3Qgb2YgUmVuZGVyT2JqZWN0IHN1YmNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3AgUkVOREVSX09C
SkVDVF9UWVBFX0NBU1RTKCkgZm9yIFJlbmRlck9iamVjdCBzdWJjbGFzc2VzIHRoYXQgbm8KKyAg
ICAgICAgbG9uZ2VyIG5lZWRlZCBpdCBvciB0aGF0IHJlcXVpcmVkIHZlcnkgZmV3IGNoYW5nZXMg
dG8gZG8gc28uIFRoaXMgd2lsbAorICAgICAgICBtYWtlIHN1cmUgZGV2ZWxvcGVycyBzdGFydCB1
c2luZyBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIHRob3NlCisgICAgICAgIGNsYXNzZXMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJRWxlbWVu
dCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHNldWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpy
ZXNldCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMpOgorICAgICAgICAq
IGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0
VHlwZTo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlw
ZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50OjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRD
b250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpjb250ZW50c0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclF1b3RlOjphdHRhY2hRdW90ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1
b3RlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6
d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVDb3VudGVySWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFk
aWVudFN0b3AuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEZvclJlbmRlcmVySW5Mb2NhbENvb3JkaW5h
dGVzRXhjbHVkaW5nU1ZHU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBv
cnQ6OmNoZWNrRm9yU1ZHUmVwYWludER1cmluZ0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVPYmplY3RCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsYXlvdXRTaXplT2ZO
ZWFyZXN0Vmlld3BvcnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBv
cnQ6OnRyYW5zZm9ybVRvUm9vdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
U3VwcG9ydDo6cmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3VwcG9ydDo6c2V0UmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
TGF5b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTGF5b3V0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdM
aXN0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0QkJveCk6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6Y3VycmVudFZpZXdwb3J0U2l6ZSk6CisKIDIwMTQtMTAtMDkgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGVkIHN0eWxlIGZvciBjbGlw
IGlzIHdyb25nIHdpdGggcmVzcGVjdCB0byBhdXRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBj
MmE1MGQ1ZmE0NWEyMjU0N2YwODFlZTRiMGJlM2JkODJjNzNlNzJjLi5hMjBiODE5Zjc3NmZiYzQx
MGFmMjg4OGE3ZjRhNjczN2ViZGQ2ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTYyOSw4
ICs2MjksOCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudAogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKG1fcmVuZGVyZXItPmlzRmlsZVVw
bG9hZENvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wo
bV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CisgICAgaWYgKGlzPFJlbmRlckZpbGVVcGxvYWRD
b250cm9sPigqbV9yZW5kZXJlcikpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbD4oKm1fcmVuZGVyZXIpLmJ1dHRvblZhbHVlKCk7CiAgICAgCiAgICAgLy8g
UmVmbGVjdCB3aGVuIGEgY29udGVudCBhdXRob3IgaGFzIGV4cGxpY2l0bHkgbWFya2VkIGEgbGlu
ZSBicmVhay4KICAgICBpZiAobV9yZW5kZXJlci0+aXNCUigpKQpAQCAtNzI4LDEwICs3MjgsMTAg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHN0YXRpY1RleHQ7CiAgICAgfQogICAgICAgICAKLSAgICBpZiAobV9y
ZW5kZXJlci0+aXNUZXh0KCkpCisgICAgaWYgKGlzPFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKICAgICAKLSAgICBpZiAoY3NzQm94
ICYmIGNzc0JveC0+aXNNZW51TGlzdCgpKSB7CisgICAgaWYgKGlzPFJlbmRlck1lbnVMaXN0Pihj
c3NCb3gpKSB7CiAgICAgICAgIC8vIFJlbmRlck1lbnVMaXN0IHdpbGwgZ28gc3RyYWlnaHQgdG8g
dGhlIHRleHQoKSBvZiBpdHMgc2VsZWN0ZWQgaXRlbS4KICAgICAgICAgLy8gVGhpcyBoYXMgdG8g
YmUgb3ZlcnJpZGRlbiBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgc2VsZWN0ZWQgaXRlbSBoYXMgYW4g
QVJJQSBsYWJlbC4KICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSk7CkBAIC03NDIs
MTEgKzc0MiwxMSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUoKSBjb25zdAogICAgICAgICAgICAgaWYgKCFvdmVycmlkZGVuRGVzY3JpcHRpb24uaXNOdWxs
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5EZXNjcmlwdGlvbjsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdG9SZW5kZXJNZW51TGlzdChtX3JlbmRlcmVyKS0+dGV4dCgp
OworICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCptX3JlbmRlcmVyKS50
ZXh0KCk7CiAgICAgfQogICAgIAotICAgIGlmIChtX3JlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSkK
LSAgICAgICAgcmV0dXJuIHRvUmVuZGVyTGlzdE1hcmtlcigqbV9yZW5kZXJlcikudGV4dCgpOwor
ICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPigqbV9yZW5kZXJlcikpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPigqbV9yZW5kZXJlcikudGV4dCgpOwogICAgIAog
ICAgIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNzU0LDgg
Kzc1NCw4IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSgp
IGNvbnN0CiAgICAgaWYgKGlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRleHQoKTsK
ICAgICAKLSAgICBpZiAobV9yZW5kZXJlci0+aXNGaWxlVXBsb2FkQ29udHJvbCgpKQotICAgICAg
ICByZXR1cm4gdG9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbChtX3JlbmRlcmVyKS0+ZmlsZVRleHRW
YWx1ZSgpOworICAgIGlmIChpczxSZW5kZXJGaWxlVXBsb2FkQ29udHJvbD4oKm1fcmVuZGVyZXIp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KCptX3Jl
bmRlcmVyKS5maWxlVGV4dFZhbHVlKCk7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5l
ZWQgdG8gaW1wbGVtZW50IGEgdmFsdWUgaGVyZSBmb3IgbW9yZSB0eXBlcwogICAgIC8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGFkdmVydGlzZSBhIHZhbHVlIGF0IGFsbCBmb3Ig
dGhlIHR5cGVzIGZvciB3aGljaCB3ZSBkb24ndCBpbXBsZW1lbnQgb25lOwpAQCAtMTA5Miw3ICsx
MDkyLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogICAgIC8vIGlmIGlzRmllbGRzZXQgaXMgdHJ1
ZSwgdGhlIHJlbmRlcmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBSZW5kZXJGaWVsZHNldAogICAg
IGlmIChpc0ZpZWxkc2V0KCkpCi0gICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHRvUmVuZGVyRmllbGRzZXQobV9yZW5kZXJlciktPmZpbmRMZWdlbmQoUmVuZGVyRmll
bGRzZXQ6OkluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93KSk7CisgICAgICAgIHJldHVybiBheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvd25jYXN0PFJlbmRlckZpZWxkc2V0PigqbV9yZW5k
ZXJlcikuZmluZExlZ2VuZChSZW5kZXJGaWVsZHNldDo6SW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZs
b3cpKTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAgIGlm
ICghaXM8RWxlbWVudD4obm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5k
ZXggM2I0YTk3OWRmYmZhMWNkNzBmZDAwMjgxNTJmMzU1ZjQ2MTU2ZTRlMC4uYzY4MTQ0NjlmMjcz
NmFmNGM2YWQ4OTM5MDhkYTdiMjA0NDk4ZjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcApAQCAtODksOCArODksOCBAQCB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRpZEF0dGFjaFJl
bmRlcmVycygpCiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNDaGlsZEFsbG93ZWQoKmNoaWxkLCBz
dHlsZSkpIHsKICAgICAgICAgICAgIGF1dG8qIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7CiAgICAg
ICAgICAgICByZW5kZXJlci0+YWRkQ2hpbGQoY2hpbGQubGVha1B0cigpKTsKLSAgICAgICAgICAg
IGlmIChjaGlsZFB0ci0+aXNRdW90ZSgpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVyUXVvdGUo
Y2hpbGRQdHIpLT5hdHRhY2hRdW90ZSgpOworICAgICAgICAgICAgaWYgKGlzPFJlbmRlclF1b3Rl
PigqY2hpbGRQdHIpKQorICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclF1b3RlPigqY2hp
bGRQdHIpLmF0dGFjaFF1b3RlKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGQ5MjgzM2IyNzRiOTkwYzBkMDk0MDBi
MGI1YmY3MWZiMDE3OTIzNGQuLjgyMDM2NTFmYmMwMmIwOTM3MWQ0ZDhlM2Y4ZWUxNDI4NmNkNTAx
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zMzAs
NyArMzMwLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQogICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAobV9yZW5kZXJlcklz
Q2FudmFzKSB7CiAgICAgICAgICAgICBpZiAob2xkU2l6ZSAhPSBzaXplKCkpIHsKLSAgICAgICAg
ICAgICAgICB0b1JlbmRlckhUTUxDYW52YXMocmVuZGVyZXIpLT5jYW52YXNTaXplQ2hhbmdlZCgp
OworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckhUTUxDYW52YXM+KCpyZW5kZXJlciku
Y2FudmFzU2l6ZUNoYW5nZWQoKTsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94KCkgJiYg
cmVuZGVyQm94KCktPmhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyQm94KCktPmNvbnRlbnRDaGFuZ2VkKENhbnZhc0NoYW5nZWQpOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA4
MGJjNzU4OWQ1MDEwY2EyZTRkY2M4NjE1YzI5ODkzMzQ0Njg3ZDRmLi4zYTgxOWRiMjExMGNiYTQ2
MTRlYjA2MzMyNGNlNGU0NDYxYjQ3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcApAQCAtMjA3LDE3ICsyMDcsMTcgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgLy8gRklYTUU6IE1vdXNl
IGRvd24gYW5kIHNjcm9sbCBldmVudHMgYXJlIHBhc3NlZCBkb3duIHRvIHBsdWctaW4gdmlhIGN1
c3RvbSBjb2RlIGluIEV2ZW50SGFuZGxlcjsgdGhlc2UgY29kZSBwYXRocyBzaG91bGQgYmUgdW5p
dGVkLgogCiAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCisgICAgaWYgKCFpczxSZW5kZXJXaWRn
ZXQ+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc0Vt
YmVkZGVkT2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocmVu
ZGVyZXIpLT5pc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRW1i
ZWRkZWRPYmplY3QocmVuZGVyZXIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2
ZW50KGV2ZW50KTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikp
IHsKKyAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIp
LmlzUGx1Z2luVW5hdmFpbGFibGUoKSkgeworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikuaGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JF
dmVudChldmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAodG9SZW5kZXJFbWJlZGRlZE9iamVjdChyZW5kZXJlciktPmlzU25hcHNob3R0ZWRQbHVnSW4o
KSAmJiBkaXNwbGF5U3RhdGUoKSA8IFJlc3RhcnRpbmcpIHsKLSAgICAgICAgICAgIHRvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAgICAg
IGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKSAmJiBkaXNwbGF5U3Rh
dGUoKSA8IFJlc3RhcnRpbmcpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luPigqcmVuZGVyZXIpLmhhbmRsZUV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIEhU
TUxGcmFtZU93bmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEhUTUxQbHVn
SW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSB0b1JlbmRlcldp
ZGdldChyZW5kZXJlciktPndpZGdldCgpOworICAgIFJlZlB0cjxXaWRnZXQ+IHdpZGdldCA9IGRv
d25jYXN0PFJlbmRlcldpZGdldD4oKnJlbmRlcmVyKS53aWRnZXQoKTsKICAgICBpZiAoIXdpZGdl
dCkKICAgICAgICAgcmV0dXJuOwogICAgIHdpZGdldC0+aGFuZGxlRXZlbnQoZXZlbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYzdi
N2YyMmMzNWY2ZjdmYWY4OGQ0MDZjMTEzYWE1Y2UzNGE2N2UwZS4uNDBmYTBkZjgwNDYzM2FlYzlk
ZWRmNjk2YzA1Njg3MmY3MTViZmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zMzQsMTIgKzMzNCwxMiBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQog
CiAgICAgbV9zbmFwc2hvdEltYWdlID0gaW1hZ2U7CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+aXNT
bmFwc2hvdHRlZFBsdWdJbigpKSB7Ci0gICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
cmVuZGVyZXIoKSktPnVwZGF0ZVNuYXBzaG90KGltYWdlKTsKKyAgICBpZiAoaXM8UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcigpKSkgeworICAgICAgICBkb3duY2FzdDxSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKCkpLnVwZGF0ZVNuYXBzaG90KGltYWdlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlcigpLT5pc0VtYmVkZGVkT2Jq
ZWN0KCkpCisgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIoKSkpCiAg
ICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0KIApAQCAtNTgyLDcgKzU4Miw3IEBAIGJv
b2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2luKGNvbnN0
IFJlbmRlckVtYmVkZGVkT2JqZWN0CiAgICAgCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmNoZWNrU25hcHNob3RTdGF0dXMoKQogewotICAgIGlmICghcmVuZGVyZXIoKS0+aXNTbmFwc2hv
dHRlZFBsdWdJbigpKSB7CisgICAgaWYgKCFpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJl
bmRlcmVyKCkpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBQbGF5aW5nKQogICAg
ICAgICAgICAgY2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNr
U25hcHNob3RTdGF0dXMoKQogICAgIAogICAgIC8vIElmIHdpZHRoIGFuZCBoZWlnaHQgc3R5bGVz
IHdlcmUgcHJldmlvdXNseSBub3Qgc2V0IGFuZCB3ZSd2ZSBzbmFwc2hvdHRlZCB0aGUgcGx1Z2lu
IHdlIG1heSBuZWVkIHRvIHJlc3RhcnQgdGhlIHBsdWdpbiBzbyB0aGF0IGl0cyBzdGF0ZSBjYW4g
YmUgdXBkYXRlZCBhcHByb3ByaWF0ZWx5LgogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPnNl
dHRpbmdzKCkuc25hcHNob3RBbGxQbHVnSW5zKCkgJiYgZGlzcGxheVN0YXRlKCkgPD0gRGlzcGxh
eWluZ1NuYXBzaG90ICYmICFtX3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQpIHsKLSAgICAgICAg
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4mIHJlbmRlcmVyID0gdG9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbigqdGhpcy0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
JiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcy0+cmVu
ZGVyZXIoKSk7CiAgICAgICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5p
c1NwZWNpZmllZCgpICYmICFyZW5kZXJlci5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNp
ZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCA0MThkZDBiMDk0ZTMxMzExZWVmYjU1YjRiMjRhNjJl
MTZlOGI3ODBmLi5lNGNmYTc3MWI4OTU1MmUyN2E3YTljOTRiYjhkOWJjZjExOWQyNTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC01NSw4ICs1NSw4IEBAIFNl
YXJjaElucHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQp
CiB2b2lkIFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKIHsKICNpZiAhUExBVEZP
Uk0oSU9TKQotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudCgpLnJlbmRl
cmVyKCkpCi0gICAgICAgIHRvUmVuZGVyU2VhcmNoRmllbGQocmVuZGVyZXIpLT5hZGRTZWFyY2hS
ZXN1bHQoKTsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50KCkucmVuZGVyZXIoKSkK
KyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU2VhcmNoRmllbGQ+KCpyZW5kZXJlcikuYWRkU2VhcmNo
UmVzdWx0KCk7CiAjZW5kaWYKIH0KIApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgU2VhcmNoSW5w
dXRUeXBlOjpzZWFyY2hFdmVudHNTaG91bGRCZURpc3BhdGNoZWQoKSBjb25zdAogdm9pZCBTZWFy
Y2hJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdChWYWx1ZUNoYW5nZVN0YXRlIHN0YXRl
KQogewogICAgIGlmIChtX2NhbmNlbEJ1dHRvbikKLSAgICAgICAgdG9SZW5kZXJTZWFyY2hGaWVs
ZChlbGVtZW50KCkucmVuZGVyZXIoKSktPnVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKTsK
KyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU2VhcmNoRmllbGQ+KCplbGVtZW50KCkucmVuZGVyZXIo
KSkudXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpOwogCiAgICAgLy8gSWYgdGhlIGluY3Jl
bWVudGFsIGF0dHJpYnV0ZSBpcyBzZXQsIHRoZW4gZGlzcGF0Y2ggdGhlIHNlYXJjaCBldmVudAog
ICAgIGlmIChzZWFyY2hFdmVudHNTaG91bGRCZURpc3BhdGNoZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IGI0NzYxOTAxM2Y0MmM5ZDdmMDdlZmE4ZDM4YTlkNTVmZjliMjhmYWEuLjRlMjIxODYwNjYy
NWUzODQ0Y2EwZGI2YWRjOGI5ZWVmMjU4NjZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTE3LDEz
ICsxMTcsMTMgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3MKIAogUmVuZGVyVGV4dENvbnRyb2xJ
bm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gdG9SZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2soSFRNTERpdkVsZW1l
bnQ6OnJlbmRlcmVyKCkpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbElu
bmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0KIAogUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjdXN0b21TdHlsZUZvclJl
bmRlcmVyKFJlbmRlclN0eWxlJikKIHsKLSAgICBSZW5kZXJUZXh0Q29udHJvbCogcGFyZW50UmVu
ZGVyZXIgPSB0b1JlbmRlclRleHRDb250cm9sKHNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKSk7Ci0g
ICAgcmV0dXJuIHBhcmVudFJlbmRlcmVyLT5jcmVhdGVJbm5lclRleHRTdHlsZSgmcGFyZW50UmVu
ZGVyZXItPnN0eWxlKCkpOworICAgIFJlbmRlclRleHRDb250cm9sJiBwYXJlbnRSZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPigqc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpKTsK
KyAgICByZXR1cm4gcGFyZW50UmVuZGVyZXIuY3JlYXRlSW5uZXJUZXh0U3R5bGUoJnBhcmVudFJl
bmRlcmVyLnN0eWxlKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC0xNDYsMTEgKzE0NiwxMSBAQCB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBpbnB1dC0+Zm9jdXMo
KTsKICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAg
IFJlbmRlclNlYXJjaEZpZWxkKiByZW5kZXJlciA9IHRvUmVuZGVyU2VhcmNoRmllbGQoaW5wdXQt
PnJlbmRlcmVyKCkpOwotICAgICAgICBpZiAocmVuZGVyZXItPnBvcHVwSXNWaXNpYmxlKCkpCi0g
ICAgICAgICAgICByZW5kZXJlci0+aGlkZVBvcHVwKCk7CisgICAgICAgIFJlbmRlclNlYXJjaEZp
ZWxkJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqaW5wdXQtPnJlbmRl
cmVyKCkpOworICAgICAgICBpZiAocmVuZGVyZXIucG9wdXBJc1Zpc2libGUoKSkKKyAgICAgICAg
ICAgIHJlbmRlcmVyLmhpZGVQb3B1cCgpOwogICAgICAgICBlbHNlIGlmIChpbnB1dC0+bWF4UmVz
dWx0cygpID4gMCkKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zaG93UG9wdXAoKTsKKyAgICAgICAg
ICAgIHJlbmRlcmVyLnNob3dQb3B1cCgpOwogI2VuZGlmCiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5Njc0
OThkOTllN2Q2NmNhNDMzZjg1NTZmZjRhYjAzNTI1NWZiMjM0Li5mYTczZjJmNmZkNTFhYjA3MzNi
YTI5NmNkYmJkMTYwZGEwYTU4NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0z
NTk3LDE2ICszNTk3LDE2IEBAIGJvb2wgRnJhbWVWaWV3Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFt
ZUZsYXR0ZW5pbmcoKSBjb25zdAogCiAgICAgLy8gRnJhbWUgZmxhdHRlbmluZyBhcHBsaWVzIHdo
ZW4gdGhlIG93bmVyIGVsZW1lbnQgaXMgZWl0aGVyIGluIGEgZnJhbWVzZXQgb3IKICAgICAvLyBh
biBpZnJhbWUgd2l0aCBmbGF0dGVuaW5nIHBhcmFtZXRlcnMuCi0gICAgaWYgKGZyYW1lKCkub3du
ZXJFbGVtZW50KCktPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgewotICAgICAgICBSZW5kZXJJRnJh
bWUqIGlmcmFtZVJlbmRlcmVyID0gdG9SZW5kZXJJRnJhbWUoZnJhbWUoKS5vd25lckVsZW1lbnQo
KS0+cmVuZGVyV2lkZ2V0KCkpOwotICAgICAgICBpZiAoaWZyYW1lUmVuZGVyZXItPmZsYXR0ZW5G
cmFtZSgpKQorICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVudD4oKmZyYW1lKCkub3duZXJFbGVt
ZW50KCkpKSB7CisgICAgICAgIFJlbmRlcklGcmFtZSYgaWZyYW1lUmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJJRnJhbWU+KCpmcmFtZSgpLm93bmVyRWxlbWVudCgpLT5yZW5kZXJXaWRnZXQoKSk7
CisgICAgICAgIGlmIChpZnJhbWVSZW5kZXJlci5mbGF0dGVuRnJhbWUoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmICghZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZnJhbWUoKS5vd25lckVsZW1lbnQo
KS0+aGFzVGFnTmFtZShmcmFtZVRhZykpCisgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1lbnQ+KCpm
cmFtZSgpLm93bmVyRWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKaW5kZXggYTFh
NjUyMGU5N2M5NDhmYzBjOTM2ZjEwYzQ3NGIxNTA1MWU1ZTRiMy4uMTFhMjNmOTZiMjgzZjgxNjlj
YjUwYWRhNDQ0NGViOWZiZmI5YzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uaApAQCAtODMsOCArODMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWZhdWx0Owog
fTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckJ1dHRvbiwgaXNSZW5kZXJCdXR0
b24oKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1JFTkRFUl9PQkpFQ1QoUmVuZGVyQnV0dG9uLCBpc1JlbmRlckJ1dHRvbigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggOGMzODE2YzhlZmY1YmE5YjNiOTIy
Y2JlMzhjYmM1MzdlNWRkYWY3My4uYWRmYTg2YmQ0ZTZkNTFhYWVkNDZjZmNkZGE0NjYzMmI1MDI0
NWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCkBAIC02Miw4
ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvdW50ZXJOb2RlOwogfTsKIAot
UkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckNvdW50ZXIsIGlzQ291bnRlcigpKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09C
SkVDVChSZW5kZXJDb3VudGVyLCBpc0NvdW50ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCmluZGV4IDFjNGFhZjAyMTkyZTdhMGU0NTM0ZjZi
M2E5ZTQ3YjE1M2JkMDkwYjkuLmQzYWVhYmUxYjI0YzkxNTQ3MTYyN2Q5NGQxYTcyNzA1NGU4ZjY4
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
aApAQCAtNDUsOCArNDUsNiBAQCBwcml2YXRlOgogICAgIFBhdGggZ2V0UGF0aChjb25zdCBMYXlv
dXRQb2ludCYgb3JpZ2luKSBjb25zdDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhS
ZW5kZXJEZXRhaWxzTWFya2VyLCBpc0RldGFpbHNNYXJrZXIoKSkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyRGV0
YWlsc01hcmtlciwgaXNEZXRhaWxzTWFya2VyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5oCmluZGV4IDQ0YTgzNzQzZTExNTM0YzhlYmQyOTNkN2FhYTFkNjQ3YzY4
N2U5MDAuLjEzODZjY2U4YTVlYWY5OWE0YmJjYzRiNTk5ZjNkZTI2MzY3MjQzYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCkBAIC01NSw4ICs1NSw2IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRl
ckZpZWxkc2V0LCBpc0ZpZWxkc2V0KCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckZpZWxkc2V0LCBpc0ZpZWxk
c2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcAppbmRleCA0YjNjYjhiMTZmZTQ1MGZlN2M2YWFmZjdlNWM2ODZmYzFkYmE1
MmI0Li5mYWY1NDExMTZiNTQ4ZTQ0NWNjNjMwODFmZTMzNWI1ZGVjMTcyMmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9i
amVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICBMYXlv
dXRVbml0IHRleHRZID0gMDsKICAgICAgICAgLy8gV2Ugd2FudCB0byBtYXRjaCB0aGUgYnV0dG9u
J3MgYmFzZWxpbmUKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIHdpdGggdHJhbnNm
b3Jtcy4KLSAgICAgICAgaWYgKFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1JlbmRl
ckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpKQorICAgICAgICBpZiAoUmVuZGVyQnV0dG9uKiBi
dXR0b25SZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJ1dHRvbj4oYnV0dG9uLT5yZW5kZXJlcigp
KSkKICAgICAgICAgICAgIHRleHRZID0gcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgKyBidXR0b25SZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGlj
QmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24oQWxw
aGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
OjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAg
ICAgICAgICAgICAgIGljb25YID0gY29udGVudExlZnQgKyBjb250ZW50V2lkdGgoKSAtIGJ1dHRv
bldpZHRoIC0gYWZ0ZXJCdXR0b25TcGFjaW5nIC0gaWNvbldpZHRoOwogCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgICAgICAgICAgaWYgKFJlbmRlckJ1dHRvbiogYnV0dG9uUmVuZGVyZXIgPSB0b1Jl
bmRlckJ1dHRvbihidXR0b24tPnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVy
QnV0dG9uKiBidXR0b25SZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJ1dHRvbj4oYnV0dG9uLT5y
ZW5kZXJlcigpKSkgewogICAgICAgICAgICAgICAgIC8vIERyYXcgdGhlIGZpbGUgaWNvbiBhbmQg
ZGVjb3JhdGlvbnMuCiAgICAgICAgICAgICAgICAgSW50UmVjdCBpY29uUmVjdChpY29uWCwgaWNv
blksIGljb25XaWR0aCwgaWNvbkhlaWdodCk7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGhlbWU6
OkZpbGVVcGxvYWREZWNvcmF0aW9ucyBkZWNvcmF0aW9uc1R5cGUgPSBpbnB1dEVsZW1lbnQoKS5m
aWxlcygpLT5sZW5ndGgoKSA9PSAxID8gUmVuZGVyVGhlbWU6OlNpbmdsZUZpbGUgOiBSZW5kZXJU
aGVtZTo6TXVsdGlwbGVGaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgKaW5kZXggY2U0YWJhZGVjMWE5ZmQ3ZjJjNTM5MWZlYjUy
NzVhMDMzOTI5ZWM5MC4uNjY0NjM0MjVhZjdiZGEzMzE4ZWE2MDA2MmRhZThjOGY3OGE3OTU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmgKQEAgLTY0LDggKzY0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuUmVjZWl2ZURy
b3BwZWRGaWxlczsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbCwgaXNGaWxlVXBsb2FkQ29udHJvbCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbCwgaXNGaWxlVXBsb2FkQ29udHJvbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAxZjEzNjIwZTIwZjg1YjE2ZTM0YzdjMmE2
MzcyZmVjNDFkNDhjZWM1Li4wYmY3MTcxNmYwMzliNjg0YzRhNWIzNWU0ZmNmZjhkY2ZmY2FkODQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAt
MTYxLDggKzE2MSw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJl
bk9uRmlyc3RMaW5lOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckZsZXhp
YmxlQm94LCBpc0ZsZXhpYmxlQm94KCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckZsZXhpYmxlQm94LCBpc0Zs
ZXhpYmxlQm94KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
aAppbmRleCA1MjVlMGU5NjMzYTBmZDQ0M2MzNDdhY2NjNGI4NzVmMWI3ZmZmNThlLi42NjU2NTcx
M2NmMWYwN2Q2ZWE5ZjFlODg3YzUwMTA2ZDViZGJmZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTUzLDggKzUzLDYgQEAgcHJvdGVjdGVkOgog
ICAgIFJlbmRlckJsb2NrKiBtX3BsYWNlaG9sZGVyOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBF
X0NBU1RTKFJlbmRlckZ1bGxTY3JlZW4sIGlzUmVuZGVyRnVsbFNjcmVlbigpKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChS
ZW5kZXJGdWxsU2NyZWVuLCBpc1JlbmRlckZ1bGxTY3JlZW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCmluZGV4IDEzNTYzZWI1YzkyNWQzNWFjMGQ5MzU1MjQxODc5YzdmMGVj
ZDlhN2MuLjRmNjQ2YjRkZDg2MjJmYmM2ZmQyYjA2YjNlOGQzZGIzOTA3OTVmMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMTMxLDggKzEzMSw2IEBAIHByaXZhdGU6
CiAgICAgT3JkZXJJdGVyYXRvciBtX29yZGVySXRlcmF0b3I7CiB9OwogCi1SRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoUmVuZGVyR3JpZCwgaXNSZW5kZXJHcmlkKCkpCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckdy
aWQsIGlzUmVuZGVyR3JpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmgKaW5kZXggYTcxZWRhYjQ0ZWRlYjdhNTBiMmUwZTZkYTQ1NDU4NmVkNjZhYzY3Ni4u
ZDI1YzFjNzg3NTAyZTVjZmEyYWU5ZGIxYWM3NDM2YTFiNzg1NGU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCkBAIC00OSw4ICs0OSw2IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyBj
YW52YXNTaXplQ2hhbmdlZCgpOyB9CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVu
ZGVySFRNTENhbnZhcywgaXNDYW52YXMoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVySFRNTENhbnZhcywgaXND
YW52YXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAppbmRleCA2ODZj
NmIyNWVkN2VhM2U5MWQ4ZDNkOWU5Y2QxYmYwN2IwZjgxNzYyLi40MjA5NjViYTY1YTYyZDlmZGNj
ZWRkNDQ1MWVlZjEwOGI5ODUyZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklG
cmFtZS5oCkBAIC02Miw4ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVmlldyogY29udGVu
dFJvb3RSZW5kZXJlcigpIGNvbnN0OwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJl
bmRlcklGcmFtZSwgaXNSZW5kZXJJRnJhbWUoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVySUZyYW1lLCBpc1Jl
bmRlcklGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAppbmRleCBhYzA0MDBhNDhmNWFjY2IzYmM1Mjc3NDg0NjA2NDVkZTI2ZTgyNDM1
Li5kZGU4M2Y1NjgwOWE1ZjM4YTg5NWJlNjNmNTA4YjhhYzQ1NzYwYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTkxOSwxOCAr
MTkxOSwxOCBAQCBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9mZnNldElu
Q29tcG9zdGluZ0xheWVyKCkgY29uc3QKIAogTGF5b3V0UmVjdCBSZW5kZXJMYXllckJhY2tpbmc6
OmNvbnRlbnRzQm94KCkgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkuaXNCb3goKSkKKyAg
ICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KCk7CiAKLSAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVy
KCkpOworICAgIFJlbmRlckJveCYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcigpKTsKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRzUmVjdDsKICNpZiBFTkFCTEUoVklERU8p
Ci0gICAgaWYgKHJlbmRlckJveC5pc1ZpZGVvKCkpCi0gICAgICAgIGNvbnRlbnRzUmVjdCA9IHRv
UmVuZGVyVmlkZW8ocmVuZGVyQm94KS52aWRlb0JveCgpOworICAgIGlmIChpczxSZW5kZXJWaWRl
bz4ocmVuZGVyQm94KSkKKyAgICAgICAgY29udGVudHNSZWN0ID0gZG93bmNhc3Q8UmVuZGVyVmlk
ZW8+KHJlbmRlckJveCkudmlkZW9Cb3goKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICBpZiAocmVu
ZGVyQm94LmlzUmVuZGVyUmVwbGFjZWQoKSkgewotICAgICAgICBSZW5kZXJSZXBsYWNlZCYgcmVu
ZGVyUmVwbGFjZWQgPSAqdG9SZW5kZXJSZXBsYWNlZCgmcmVuZGVyQm94KTsKKyAgICBpZiAoaXM8
UmVuZGVyUmVwbGFjZWQ+KHJlbmRlckJveCkpIHsKKyAgICAgICAgUmVuZGVyUmVwbGFjZWQmIHJl
bmRlclJlcGxhY2VkID0gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlckJveCk7CiAgICAg
ICAgIGNvbnRlbnRzUmVjdCA9IHJlbmRlclJlcGxhY2VkLnJlcGxhY2VkQ29udGVudFJlY3QocmVu
ZGVyQm94LmludHJpbnNpY1NpemUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnRlbnRzUmVj
dCA9IHJlbmRlckJveC5jb250ZW50Qm94UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuaAppbmRleCBjZjRlNjVkYTYyODExY2QzMmRjMTg1NDM5NWYwZWQ2NWUzZDNhMWZm
Li5jMzY2ODAwNjIyNzViMWE0MWEyZjI1OTdkOTYzNDBjMTE3YzUwYTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaApAQCAtNTYsOCArNTYsNiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0b21MYXlvdXRNZXRyaWNzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRl
ck1lZGlhLCBpc01lZGlhKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlck1lZGlhLCBpc01lZGlhKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAppbmRleCA0MjBlYjQ4YzNlYjVjZjVl
YjUxOWM4YWUxNjcxYjI0ZjBmZjlkZjY2Li4yMmVlMWY1YTI3MjYwZjIzNjBhYmNiMDcxYzIxNTFl
Yjk0MDJmYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVv
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKQEAg
LTM5Myw5ICszOTMsOSBAQCB2b2lkIFJlbmRlclF1b3RlOjphdHRhY2hRdW90ZSgpCiAgICAgICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBwcmVkZWNlc3NvciA9IHByZXZpb3VzSW5QcmVPcmRlcigpOyBw
cmVkZWNlc3NvcjsgcHJlZGVjZXNzb3IgPSBwcmVkZWNlc3Nvci0+cHJldmlvdXNJblByZU9yZGVy
KCkpIHsKICAgICAgICAgICAgIC8vIFNraXAgdW5hdHRhY2hlZCBwcmVkZWNlc3NvcnMgdG8gYXZv
aWQgaGF2aW5nIHN0YWxlIG1fcHJldmlvdXMgcG9pbnRlcnMKICAgICAgICAgICAgIC8vIGlmIHRo
ZSBwcmV2aW91cyBub2RlIGlzIG5ldmVyIGF0dGFjaGVkIGFuZCBpcyB0aGVuIGRlc3Ryb3llZC4K
LSAgICAgICAgICAgIGlmICghcHJlZGVjZXNzb3ItPmlzUXVvdGUoKSB8fCAhdG9SZW5kZXJRdW90
ZShwcmVkZWNlc3NvciktPm1faXNBdHRhY2hlZCkKKyAgICAgICAgICAgIGlmICghaXM8UmVuZGVy
UXVvdGU+KCpwcmVkZWNlc3NvcikgfHwgIWRvd25jYXN0PFJlbmRlclF1b3RlPigqcHJlZGVjZXNz
b3IpLm1faXNBdHRhY2hlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IG1fcHJldmlvdXMgPSB0b1JlbmRlclF1b3RlKHByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgIG1f
cHJldmlvdXMgPSBkb3duY2FzdDxSZW5kZXJRdW90ZT4ocHJlZGVjZXNzb3IpOwogICAgICAgICAg
ICAgbV9uZXh0ID0gbV9wcmV2aW91cy0+bV9uZXh0OwogICAgICAgICAgICAgbV9wcmV2aW91cy0+
bV9uZXh0ID0gdGhpczsKICAgICAgICAgICAgIGlmIChtX25leHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJRdW90ZS5oCmluZGV4IGFiOWI4Y2ExYjRmYWQ1ODUwOWQwNzAxYzljZWE1ZTg0
M2E2MTkyOTEuLmQ1ZmIxZDM1ZGIwMmU3ZmE1NWY1Y2JhNWUwMjNiZTI1OGNmYmIwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCkBAIC01NSw4ICs1NSw2IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhS
ZW5kZXJRdW90ZSwgaXNRdW90ZSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJRdW90ZSwgaXNRdW90ZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCBhODU5MzcyNjdi
ZjBiNzFhMjE1YjdiMTZiODBmMzdhMDU0NGM3ZGY0Li4yZTc4MjZjNzE3Y2EyNmFjNTBlZDI1Njcz
MGFjYmRiMTUwMzgyY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaApAQCAtODksOCArODksNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgTGF5b3V0U2l6ZSBt
X2ludHJpbnNpY1NpemU7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyUmVw
bGFjZWQsIGlzUmVuZGVyUmVwbGFjZWQoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyUmVwbGFjZWQsIGlzUmVu
ZGVyUmVwbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oCmluZGV4IDBjYjY3MGIzMjBlMGE4ZTRmYjEwYzM3NmI2MmM0ZDczMGIzMDVkNGIu
LmNlYTc3YmI3NGZhYjEwNmU4ZGE0Mzk2NjVmMzhmNjllYjE1NjQxMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtNzMsOCArNzMsNiBA
QCBwcml2YXRlOgogICAgIFNjcm9sbGJhclBhcnQgbV9wYXJ0OwogfTsKIAotUkVOREVSX09CSkVD
VF9UWVBFX0NBU1RTKFJlbmRlclNjcm9sbGJhclBhcnQsIGlzUmVuZGVyU2Nyb2xsYmFyUGFydCgp
KQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJTY3JvbGxiYXJQYXJ0LCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKaW5kZXggMGEw
NjYzMzBhYWRjYjk2OGI3NTg2ZDQ1MDZjZjlmOTlkODNlNzYzYy4uZjkzZTVmNTIyMzNmZjYxNDdm
NTQ4OGVjYTU0YWM0ZjBkNjQxYjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmgKQEAgLTkwLDggKzkwLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3JlY2VudFNlYXJjaGVzOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RT
KFJlbmRlclNlYXJjaEZpZWxkLCBpc1RleHRGaWVsZCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTZWFyY2hG
aWVsZCwgaXNUZXh0RmllbGQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggMDkyYzUwZmI0NTA0ZWEyZmE2YmI3ZmQwZjcx
MzdhMTI0YTJjZDUwNC4uZjk5MzI3OTMyNzY2YTI2OTgwZTQ4MzQ2NWIyOWE5NTAzNzVkNzMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmgKQEAgLTYzLDggKzYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQb3RlbnRpYWxN
b3VzZUFjdGl2YXRpb247CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaAppbmRleCA5NjNiMTgxYjFlYmYzZTk0YTA2
YjlmZWZiZjM5N2YyMTU2ZWRjN2M3Li5hNzYzZjgzYjAxNzRhNTA1ZjNmOTkzNDI0MmMyODY3MTRl
YzIxNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
YXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5oCkBAIC00NCw4ICs0NCw2IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVGFibGUqIHRhYmxlKCkg
Y29uc3Q7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyVGFibGVDYXB0aW9u
LCBpc1RhYmxlQ2FwdGlvbigpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJUYWJsZUNhcHRpb24sIGlzVGFibGVD
YXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5oCmluZGV4IDY0NTVjMTBmYzBiOTg2NjdmODdmNjU4ZDdkNTVhZWNi
ZmZlZDBkNGEuLmQ2MmIwMDgzN2ZjYjliNjdjNTVlOGY5OWUyY2UzN2Q5YjI1MDg0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5oCkBAIC01MSw4ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiB9
OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUs
IGlzVGV4dEFyZWEoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUsIGlzVGV4
dEFyZWEoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCA2MWMwN2Q2YjVkYzVmMmU3MjI2OWE3NGQ0YmEwMmUy
M2RmNDAwM2RiLi4wODY5MDlkODAxNjE0Yzg2YTU5NjRiYzMwOTBmYTY5ZWE1NjdlZGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oCkBAIC0xMTMsOCArMTEzLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udHJvbElubmVyQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyVGV4dENvbnRyb2xJbm5lckJs
b2NrLCBpc1RleHRDb250cm9sSW5uZXJCbG9jaygpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUsIGlzVGV4dEZpZWxkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KaW5kZXggMmIyYzNmNGFmZmRlZWRhMTFhY2Q3Y2E2YTA1Mjc2MTBhOGI3
YzA4ZC4uNmZkNTY2YTg5NTk1MmJkMTdlZDcyZDVjOGU0OTc2ZjliOWE1OTE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTg2Myw3ICsxODYzLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z0luRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5FbGVt
ZW50PigqcGFyZW50KTsKLSAgICBpZiAoIXBsdWdJbkVsZW1lbnQuaXNQbHVnSW5JbWFnZUVsZW1l
bnQoKSkKKyAgICBpZiAoIWlzPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJbkVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBs
dWdJbkltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJ
bkVsZW1lbnQpOwpAQCAtMTg3MiwyNyArMTg3MiwyNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4qIHBsdWdJblJlbmRlcmVyID0gdG9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKSk7Ci0gICAgRmxvYXRQb2ludCBzbmFw
c2hvdEFic1BvcyA9IHBsdWdJblJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBzbmFw
c2hvdEFic1Bvcy5tb3ZlKHBsdWdJblJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBwbHVnSW5SZW5k
ZXJlci0+cGFkZGluZ0xlZnQoKSwgcGx1Z0luUmVuZGVyZXItPmJvcmRlclRvcCgpICsgcGx1Z0lu
UmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CisgICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4mIHBs
dWdJblJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpwbHVnSW5J
bWFnZUVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgRmxvYXRQb2ludCBzbmFwc2hvdEFic1BvcyA9
IHBsdWdJblJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZSgpOworICAgIHNuYXBzaG90QWJzUG9zLm1v
dmUocGx1Z0luUmVuZGVyZXIuYm9yZGVyTGVmdCgpICsgcGx1Z0luUmVuZGVyZXIucGFkZGluZ0xl
ZnQoKSwgcGx1Z0luUmVuZGVyZXIuYm9yZGVyVG9wKCkgKyBwbHVnSW5SZW5kZXJlci5wYWRkaW5n
VG9wKCkpOwogCiAgICAgLy8gV2UgY291bGQgZHJhdyB0aGUgc25hcHNob3Qgd2l0aCB0aGF0IGNv
b3JkaW5hdGVzLCBidXQgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUKICAgICAvLyBpc24ndCBh
IGNvbXBvc2l0ZWQgbGF5ZXIgYmV0d2VlbiB1cyBhbmQgdGhlIHBsdWdJblJlbmRlcmVyLgotICAg
IGZvciAoYXV0byogcmVuZGVyQm94ID0gJmRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOyBy
ZW5kZXJCb3ggIT0gcGx1Z0luUmVuZGVyZXI7IHJlbmRlckJveCA9IHJlbmRlckJveC0+cGFyZW50
Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIHJlbmRlckJveCA9ICZkb3duY2FzdDxSZW5kZXJCb3g+
KHJlbmRlcmVyKTsgcmVuZGVyQm94ICE9ICZwbHVnSW5SZW5kZXJlcjsgcmVuZGVyQm94ID0gcmVu
ZGVyQm94LT5wYXJlbnRCb3goKSkgewogICAgICAgICBpZiAocmVuZGVyQm94LT5oYXNMYXllcigp
ICYmIHJlbmRlckJveC0+bGF5ZXIoKSAmJiByZW5kZXJCb3gtPmxheWVyKCktPmlzQ29tcG9zaXRl
ZCgpKSB7CiAgICAgICAgICAgICBzbmFwc2hvdEFic1BvcyA9IC1yZW5kZXJCb3gtPmxvY2F0aW9u
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIExheW91dFNp
emUgcGx1Z2luU2l6ZShwbHVnSW5SZW5kZXJlci0+Y29udGVudFdpZHRoKCksIHBsdWdJblJlbmRl
cmVyLT5jb250ZW50SGVpZ2h0KCkpOworICAgIExheW91dFNpemUgcGx1Z2luU2l6ZShwbHVnSW5S
ZW5kZXJlci5jb250ZW50V2lkdGgoKSwgcGx1Z0luUmVuZGVyZXIuY29udGVudEhlaWdodCgpKTsK
ICAgICBMYXlvdXRSZWN0IHBsdWdpblJlY3Qoc25hcHNob3RBYnNQb3MsIHBsdWdpblNpemUpOwog
ICAgIEludFJlY3QgYWxpZ25lZFBsdWdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChwbHVnaW5SZWN0
KTsKIAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBs
dWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250
ZXh0LT5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNl
KCksIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAppbmRleCA4ZjYzNTg0ZDliZWRhNjFmNDI0N2RiYjRkNmMzNzY4YWNmYjAxNTk4Li5kZDkw
YzViZTk5ZThkY2RlNGY3YzJlY2Q1ZTVhNmNhMGI5NDhmMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMjYsMTUgKzIyNiwxNSBAQCB2
b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBSZW5kZXJPYmplY3QmIG8sCiAKICAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGluIG9yZGVy
IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgbGF5b3V0IHRlc3QgcmVzdWx0
cy4KICAgICBpZiAoYWRqdXN0Rm9yVGFibGVDZWxscykKLSAgICAgICAgci5tb3ZlKDAsIC10b1Jl
bmRlclRhYmxlQ2VsbChvLmNvbnRhaW5pbmdCbG9jaygpKS0+aW50cmluc2ljUGFkZGluZ0JlZm9y
ZSgpKTsKKyAgICAgICAgci5tb3ZlKDAsIC1kb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpvLmNv
bnRhaW5pbmdCbG9jaygpKS5pbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkpOwogCiAgICAgLy8gRklY
TUU6IENvbnZlcnQgbGF5b3V0IHRlc3QgcmVzdWx0cyB0byByZXBvcnQgc3ViLXBpeGVsIHZhbHVl
cywgaW4gdGhlIG1lYW50aW1lIHVzaW5nIGVuY2xvc2luZ0ludFJlY3QKICAgICAvLyBmb3IgY29u
c2lzdGVuY3kgd2l0aCBvbGQgcmVzdWx0cy4KICAgICB0cyA8PCAiICIgPDwgZW5jbG9zaW5nSW50
UmVjdChyKTsKIAotICAgIGlmICghby5pc1RleHQoKSkgewotICAgICAgICBpZiAoby5pc0ZpbGVV
cGxvYWRDb250cm9sKCkpCi0gICAgICAgICAgICB0cyA8PCAiICIgPDwgcXVvdGVBbmRFc2NhcGVO
b25QcmludGFibGVzKHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woJm8pLT5maWxlVGV4dFZhbHVl
KCkpOworICAgIGlmICghaXM8UmVuZGVyVGV4dD4obykpIHsKKyAgICAgICAgaWYgKGlzPFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sPihvKSkKKyAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBxdW90ZUFu
ZEVzY2FwZU5vblByaW50YWJsZXMoZG93bmNhc3Q8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KG8p
LmZpbGVUZXh0VmFsdWUoKSk7CiAKICAgICAgICAgaWYgKG8ucGFyZW50KCkpIHsKICAgICAgICAg
ICAgIENvbG9yIGNvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4
IDc0ZmNjOTJiYmVjZWMyMjUyYTc2ZDI2ZWY2Njc2ZjE5MTZjODhjNzMuLjdjMzc0NDcxMGQ5ZTYw
YmM5Zjg0ZTJiNTBkMDk5OTdhM2I5YmRjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmNwcApAQCAtMjc1LDExICsyNzUsMTEgQEAgc3RhdGljIGNvbnN0IFJlbmRlckJs
b2NrKiByZW5kZXJlclBsYWNlaG9sZGVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7
CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSByZW5kZXJlci0+cGFyZW50KCk7CiAgICAgaWYg
KCFwYXJlbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKLSAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsU2NyZWVuID0gcGFyZW50LT5pc1JlbmRlckZ1
bGxTY3JlZW4oKSA/IHRvUmVuZGVyRnVsbFNjcmVlbihwYXJlbnQpIDogMDsKKyAgICBSZW5kZXJG
dWxsU2NyZWVuKiBmdWxsU2NyZWVuID0gaXM8UmVuZGVyRnVsbFNjcmVlbj4oKnBhcmVudCkgPyBk
b3duY2FzdDxSZW5kZXJGdWxsU2NyZWVuPihwYXJlbnQpIDogbnVsbHB0cjsKICAgICBpZiAoIWZ1
bGxTY3JlZW4pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICByZXR1cm4gZnVsbFNjcmVlbi0+cGxhY2Vob2xkZXIoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGlu
ZUhlYWRlcnMuaAppbmRleCAwYzZlYTE4ZGE5NTFjY2JjODgxNmIwNDc0NWU0MDYyOTI0NjdlYzJm
Li5lYWY4Njk4NWFjMDE4MDJmYzNiYzFiZDlkNmY3NzY3YWJlMWYwNGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5s
aW5lSGVhZGVycy5oCkBAIC00NzIsOSArNDcyLDkgQEAgaW5saW5lIHZvaWQgbmV4dENoYXJhY3Rl
cihVQ2hhciYgY3VycmVudENoYXJhY3RlciwgVUNoYXImIGxhc3RDaGFyYWN0ZXIsIFVDaGFyJgog
Ly8gc28gd2UgZG9uJ3QgbmVlZCB0aGlzIGhhY2suCiBpbmxpbmUgdm9pZCB1cGRhdGVDb3VudGVy
SWZOZWVkZWQoUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkKIHsKLSAgICBpZiAoIXJlbmRlclRleHQu
cHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkgfHwgIXJlbmRlclRleHQuaXNDb3VudGVyKCkp
CisgICAgaWYgKCFyZW5kZXJUZXh0LnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpIHx8ICFp
czxSZW5kZXJDb3VudGVyPihyZW5kZXJUZXh0KSkKICAgICAgICAgcmV0dXJuOwotICAgIHRvUmVu
ZGVyQ291bnRlcihyZW5kZXJUZXh0KS51cGRhdGVDb3VudGVyKCk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyQ291bnRlcj4ocmVuZGVyVGV4dCkudXBkYXRlQ291bnRlcigpOwogfQogCiBpbmxpbmUgZmxv
YXQgbWVhc3VyZUh5cGhlbldpZHRoKFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25zdCBGb250JiBm
b250LCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxiYWNrRm9udHMgPSAwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
aW5kZXggOTViMGQ3MDAzYWRhZjhlZDE0ZDRmMWUzNWZmZWU1YWE4MWI1ZmJjMC4uNDI5NThkNGVj
MmFiYmM5OWRhNTBkODI0OGEwODA2ZGNlZjMzMDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC04MCw4ICs4MCw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA6IDE7CiB9OwogCi1SRU5E
RVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHQ29udGFpbmVyLCBpc1NWR0NvbnRhaW5lcigp
KQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJTVkdDb250YWluZXIsIGlzU1ZHQ29udGFpbmVyKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApp
bmRleCA4MDIzNjQ1NzE3MzRmZmJlNzhjZWM2NDBmNDcyOWQ0ODIzZDYzNzk5Li5hOWFiMjNkMDZl
YzJiZWFhNGZhMmZmMjE1YmQyMTc1YzJlM2Y2NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKQEAgLTYwLDggKzYwLDYg
QEAgcHJpdmF0ZToKICAgICBTVkdHcmFkaWVudEVsZW1lbnQqIGdyYWRpZW50RWxlbWVudCgpOwog
fTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR0dyYWRpZW50U3RvcCwgaXNT
VkdHcmFkaWVudFN0b3AoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU1ZHR3JhZGllbnRTdG9wLCBpc1NWR0dy
YWRpZW50U3RvcCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDFkYTY2OTUyN2Y2MjAwMThmMTQ1NDUyZjE1ZGM5MWVi
YWIxZGJlN2UuLmI0NDU5NWQyZDE2YWUwZTliYzJmODgwNzIwYjZhMGM4NmI5YmY5YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmgKQEAgLTgwLDggKzgwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU1ZHU2hhZG93Owog
fTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR01vZGVsT2JqZWN0LCBpc1Jl
bmRlclNWR01vZGVsT2JqZWN0KCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR01vZGVsT2JqZWN0LCBpc1Jl
bmRlclNWR01vZGVsT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5oCmluZGV4IDg4N2RhYWI3NjNhMDYxZWI1NDg0ZmYwMDFjZDg2MDBmZDMxMTRj
ZTMuLjQ0ZmQxNzI2NzVkYWUxZGJhMTJmNzBmN2VhYmU1NzFiMjNkZjkzM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCkBAIC01NSw4ICs1NSw2IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPEZsb2F0UG9pbnQ+IG1femVyb0xlbmd0aExpbmVjYXBMb2Nh
dGlvbnM7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHUGF0aCwgaXNT
VkdQYXRoKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR1BhdGgsIGlzU1ZHUGF0aCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
CmluZGV4IGNlYjQ2Nzg0MGJiYTc3NmFiZDIyNTVkOWRlZThiMmY2Mzc5NGIwNGQuLmU4NWM3OTQ0
MDFkMDllNDg3MGNiMTJhMTY1YmQ3YzZhMWU1NzQ5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTk3LDgg
Kzk3LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJEYXRhPj4gbV9maWx0ZXI7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FT
VFMoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIsIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpF
Q1QoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIsIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKaW5kZXggYWVkNDlhZjMxOWMyYmIyODA2YjhlOWUx
MTJjNzkzMWMyY2MwNmVlNS4uOGQwOTQxN2VmN2Y0MDU0ZDQ2MjMxOGVjZmI1YTYyZjU4NGQ2OWZh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKQEAgLTI4LDcgKzI4LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUuaCIKIAorI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIgor
I2luY2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgor
I2luY2x1ZGUgIlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogCkBAIC00OCwyMyArNTEsMjIgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnMKIHsKICAgICBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsK
IAotICAgIFJlbmRlck9iamVjdCogZmlsdGVyID0gcGFyZW50KCk7CisgICAgYXV0byogZmlsdGVy
ID0gcGFyZW50KCk7CiAgICAgaWYgKCFmaWx0ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NF
UlQoZmlsdGVyLT5pc1NWR1Jlc291cmNlRmlsdGVyKCkpOwogCiAgICAgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlRXF1YWwgfHwgIW9sZFN0eWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7Ci0gICAg
aWYgKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKS5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZsb29k
VGFnKSkgeworICAgIGlmIChpczxTVkdGRUZsb29kRWxlbWVudD4oZmlsdGVyUHJpbWl0aXZlRWxl
bWVudCgpKSkgewogICAgICAgICBpZiAobmV3U3R5bGUuZmxvb2RDb2xvcigpICE9IG9sZFN0eWxl
LT5zdmdTdHlsZSgpLmZsb29kQ29sb3IoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIoZmlsdGVyKS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1l
czo6Zmxvb2RfY29sb3JBdHRyKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyPigqZmlsdGVyKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05h
bWVzOjpmbG9vZF9jb2xvckF0dHIpOwogICAgICAgICBpZiAobmV3U3R5bGUuZmxvb2RPcGFjaXR5
KCkgIT0gb2xkU3R5bGUtPnN2Z1N0eWxlKCkuZmxvb2RPcGFjaXR5KCkpCi0gICAgICAgICAgICB0
b1JlbmRlclNWR1Jlc291cmNlRmlsdGVyKGZpbHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQodGhpcywgU1ZHTmFtZXM6OmZsb29kX29wYWNpdHlBdHRyKTsKLSAgICB9IGVsc2UgaWYgKGZp
bHRlclByaW1pdGl2ZUVsZW1lbnQoKS5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdo
dGluZ1RhZykgfHwgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpLmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlU3BlY3VsYXJMaWdodGluZ1RhZykpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMs
IFNWR05hbWVzOjpmbG9vZF9vcGFjaXR5QXR0cik7CisgICAgfSBlbHNlIGlmIChpczxTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkgfHwgaXM8U1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudD4oZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpKSkgewog
ICAgICAgICBpZiAobmV3U3R5bGUubGlnaHRpbmdDb2xvcigpICE9IG9sZFN0eWxlLT5zdmdTdHls
ZSgpLmxpZ2h0aW5nQ29sb3IoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIoZmlsdGVyKS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6bGln
aHRpbmdfY29sb3JBdHRyKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyPigqZmlsdGVyKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVz
OjpsaWdodGluZ19jb2xvckF0dHIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCmluZGV4IDgwMzI4MGFmM2JkZTFmNDdj
Y2UxM2E4NGNkOWMyOTJlZTEwM2I0ZGEuLjcwYTVmZDc4MmU1ZWQ5OGY2YjcxYzQ4NzlmMWVkMTlh
M2FkNTdlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dFBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHRQYXRoLmgKQEAgLTQ1LDggKzQ1LDYgQEAgcHJpdmF0ZToKICAgICBQYXRoIG1fbGF5b3V0
UGF0aDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJTVkdUZXh0UGF0aCwg
aXNTVkdUZXh0UGF0aCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdUZXh0UGF0aCwgaXNTVkdUZXh0UGF0
aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAppbmRleCBlMWQ5MDA3ZDc4MmJmYzg1YWJj
ZGJjZjgxYjcxNGU2NDMwMWEzM2Y0Li42N2QwYTU2N2JkMjRlOWI5YzE5YTNjMDhjM2EzNjc4YmYx
ODgwMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaApAQCAtNDgsNiArNDgsOCBAQCBw
cml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX2xhc3RUcmFuc2xhdGlvbjsKIH07CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNU
KFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIsIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcigpKQogCiAjZW5kaWYgLy8gUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmgKaW5kZXggNTIxMjQ0YmVkMWRiMjY4YTgxMDNlYzFkYWQxNzkyMGQ5NzVl
MWM2YS4uY2M1MjQ4NjEyZjgxMmU2YjllNjk1YmQzOWMxYTFmNmNjYzM5MWU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIuaApAQCAtNjcsOCArNjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSA6IDE7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIsIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIsIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmlu
ZGV4IGYzOGQyOTY4ZWY3ODgwN2QzMjdjYTM3MzJhYjZmMTMxYzg4ZDc1YzguLjNjNDgzYTM4NGQ2
MDFjNGM5NDU1YmY2YTQwYzFjNjA1ZmU1OWJmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMzAsMTIgKzMwLDE0IEBACiAj
aW5jbHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291
cmNlc0NhY2hlLmgiCkBAIC00Nyw4ICs0OSw4IEBAIEZsb2F0UmVjdCBTVkdSZW5kZXJTdXBwb3J0
OjpyZXBhaW50UmVjdEZvclJlbmRlcmVySW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHCiB7
CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBSZW5kZXJTVkdCbG9jay4KIAotICAgIGlm
IChyZW5kZXJlci5pc1NWR1NoYXBlKCkgfHwgcmVuZGVyZXIuaXNTVkdJbWFnZSgpIHx8IHJlbmRl
cmVyLmlzU1ZHQ29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR01vZGVsT2Jq
ZWN0KHJlbmRlcmVyKS5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1No
YWRvdygpOworICAgIGlmIChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpKQorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5yZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpOwogCiAgICAgcmV0
dXJuIHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiB9CkBAIC0xMjUs
MTMgKzEyNywxMyBAQCBib29sIFNWR1JlbmRlclN1cHBvcnQ6OmNoZWNrRm9yU1ZHUmVwYWludER1
cmluZ0xheW91dChjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZQogICAgIC8vIFdoZW4gYSBwYXJl
bnQgY29udGFpbmVyIGlzIHRyYW5zZm9ybWVkIGluIFNWRywgYWxsIGNoaWxkcmVuIHdpbGwgYmUg
cGFpbnRlZCBhdXRvbWF0aWNhbGx5CiAgICAgLy8gc28gd2UgYXJlIGFibGUgdG8gc2tpcCByZWR1
bmRhbnQgcmVwYWludCBjaGVja3MuCiAgICAgYXV0byBwYXJlbnQgPSByZW5kZXJlci5wYXJlbnQo
KTsKLSAgICByZXR1cm4gIShwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0NvbnRhaW5lcigpICYmIHRv
UmVuZGVyU1ZHQ29udGFpbmVyKHBhcmVudCktPmRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpKTsK
KyAgICByZXR1cm4gIShpczxSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCkgJiYgZG93bmNhc3Q8
UmVuZGVyU1ZHQ29udGFpbmVyPigqcGFyZW50KS5kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKSk7
CiB9CiAKIC8vIFVwZGF0ZSBhIGJvdW5kaW5nIGJveCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2
YWxpZGl0eSBvZiB0aGUgb3RoZXIgYm91bmRpbmcgYm94Lgogc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZU9iamVjdEJvdW5kaW5nQm94KEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGJvb2wm
IG9iamVjdEJvdW5kaW5nQm94VmFsaWQsIFJlbmRlck9iamVjdCogb3RoZXIsIEZsb2F0UmVjdCBv
dGhlckJvdW5kaW5nQm94KQogewotICAgIGJvb2wgb3RoZXJWYWxpZCA9IG90aGVyLT5pc1NWR0Nv
bnRhaW5lcigpID8gdG9SZW5kZXJTVkdDb250YWluZXIob3RoZXIpLT5pc09iamVjdEJvdW5kaW5n
Qm94VmFsaWQoKSA6IHRydWU7CisgICAgYm9vbCBvdGhlclZhbGlkID0gaXM8UmVuZGVyU1ZHQ29u
dGFpbmVyPigqb3RoZXIpID8gZG93bmNhc3Q8UmVuZGVyU1ZHQ29udGFpbmVyPigqb3RoZXIpLmlz
T2JqZWN0Qm91bmRpbmdCb3hWYWxpZCgpIDogdHJ1ZTsKICAgICBpZiAoIW90aGVyVmFsaWQpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMjAwLDI0ICsyMDIsMjMgQEAgc3RhdGljIGlubGluZSB2b2lk
IGludmFsaWRhdGVSZXNvdXJjZXNPZkNoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQog
c3RhdGljIGlubGluZSBib29sIGxheW91dFNpemVPZk5lYXJlc3RWaWV3cG9ydENoYW5nZWQoY29u
c3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgY29uc3QgUmVuZGVyRWxlbWVudCog
c3RhcnQgPSAmcmVuZGVyZXI7Ci0gICAgd2hpbGUgKHN0YXJ0ICYmICFzdGFydC0+aXNTVkdSb290
KCkgJiYgIXN0YXJ0LT5pc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkpCisgICAgd2hpbGUgKHN0YXJ0
ICYmICFpczxSZW5kZXJTVkdSb290Pigqc3RhcnQpICYmICFpczxSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcj4oKnN0YXJ0KSkKICAgICAgICAgc3RhcnQgPSBzdGFydC0+cGFyZW50KCk7CiAKICAg
ICBBU1NFUlQoc3RhcnQpOwotICAgIEFTU0VSVChzdGFydC0+aXNTVkdSb290KCkgfHwgc3RhcnQt
PmlzU1ZHVmlld3BvcnRDb250YWluZXIoKSk7Ci0gICAgaWYgKHN0YXJ0LT5pc1NWR1ZpZXdwb3J0
Q29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
KHN0YXJ0KS0+aXNMYXlvdXRTaXplQ2hhbmdlZCgpOworICAgIGlmIChpczxSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcj4oKnN0YXJ0KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyPigqc3RhcnQpLmlzTGF5b3V0U2l6ZUNoYW5nZWQoKTsKIAotICAg
IHJldHVybiB0b1JlbmRlclNWR1Jvb3Qoc3RhcnQpLT5pc0xheW91dFNpemVDaGFuZ2VkKCk7Cisg
ICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KCpzdGFydCkuaXNMYXlvdXRTaXplQ2hh
bmdlZCgpOwogfQogCiBib29sIFNWR1JlbmRlclN1cHBvcnQ6OnRyYW5zZm9ybVRvUm9vdENoYW5n
ZWQoUmVuZGVyRWxlbWVudCogYW5jZXN0b3IpCiB7Ci0gICAgd2hpbGUgKGFuY2VzdG9yICYmICFh
bmNlc3Rvci0+aXNTVkdSb290KCkpIHsKLSAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1JlbmRlclNWR0NvbnRh
aW5lcihhbmNlc3RvciktPmRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpOwotICAgICAgICBpZiAo
YW5jZXN0b3ItPmlzU1ZHVmlld3BvcnRDb250YWluZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB0
b1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKGFuY2VzdG9yKS0+ZGlkVHJhbnNmb3JtVG9Sb290
VXBkYXRlKCk7CisgICAgd2hpbGUgKGFuY2VzdG9yICYmICFpczxSZW5kZXJTVkdSb290PigqYW5j
ZXN0b3IpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
PigqYW5jZXN0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXI+KCphbmNlc3RvcikuZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCk7
CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKmFuY2VzdG9yKSkK
KyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4o
KmFuY2VzdG9yKS5kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKTsKICAgICAgICAgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+cGFyZW50KCk7CiAgICAgfQogCkBAIC0zMDYsMTEgKzMwNywxMSBAQCBib29s
IFNWR1JlbmRlclN1cHBvcnQ6OnJlbmRlcmVySGFzU1ZHU2hhZG93KGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBSZW5kZXJTVkdC
bG9jay4KIAotICAgIGlmIChyZW5kZXJlci5pc1NWR1NoYXBlKCkgfHwgcmVuZGVyZXIuaXNTVkdJ
bWFnZSgpIHx8IHJlbmRlcmVyLmlzU1ZHQ29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiB0b1Jl
bmRlclNWR01vZGVsT2JqZWN0KHJlbmRlcmVyKS5oYXNTVkdTaGFkb3coKTsKKyAgICBpZiAoaXM8
UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikuaGFzU1ZHU2hhZG93KCk7CiAKLSAgICBp
ZiAocmVuZGVyZXIuaXNTVkdSb290KCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR1Jvb3Qo
cmVuZGVyZXIpLmhhc1NWR1NoYWRvdygpOworICAgIGlmIChpczxSZW5kZXJTVkdSb290PihyZW5k
ZXJlcikpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdSb290PihyZW5kZXJlciku
aGFzU1ZHU2hhZG93KCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zMTksMTMgKzMyMCwx
MyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnNldFJlbmRlcmVySGFzU1ZHU2hhZG93KFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaGFzUwogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgUmVuZGVyU1ZHQmxvY2suCiAKLSAgICBpZiAocmVuZGVyZXIuaXNTVkdTaGFwZSgpIHx8
IHJlbmRlcmVyLmlzU1ZHSW1hZ2UoKSB8fCByZW5kZXJlci5pc1NWR0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgIHRvUmVuZGVyU1ZHTW9kZWxPYmplY3QocmVuZGVyZXIpLnNldEhhc1NWR1NoYWRvdyho
YXNTaGFkb3cpOworICAgIGlmIChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpKSB7
CisgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikuc2V0SGFz
U1ZHU2hhZG93KGhhc1NoYWRvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
cmVuZGVyZXIuaXNTVkdSb290KCkpCi0gICAgICAgIHRvUmVuZGVyU1ZHUm9vdChyZW5kZXJlciku
c2V0SGFzU1ZHU2hhZG93KGhhc1NoYWRvdyk7CisgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJl
bmRlcmVyKSkKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpLnNldEhh
c1NWR1NoYWRvdyhoYXNTaGFkb3cpOwogfQogCiB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmludGVy
c2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IEZsb2F0UmVjdCYgcmVwYWludFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAppbmRleCA2OGY0MGY0ZWUxNzIyZjkxMDg4
NjI5MmY2YTAyMzQ2NGFmMWNmZmE3Li40MDJkYjQ2NzdmY2U1NDk2ZDg5Y2FlZTY2YzBiZDAwMDgy
OWZjMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEVuZ2luZS5jcHAKQEAgLTE2NSwxMiArMTY1LDEyIEBAIHZvaWQgU1ZHVGV4dExheW91
dEVuZ2luZTo6YmVnaW5UZXh0UGF0aExheW91dChSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHVGV4
dExheW91CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKICAgICBtX2luUGF0aExheW91dCA9IHRydWU7
Ci0gICAgUmVuZGVyU1ZHVGV4dFBhdGgqIHRleHRQYXRoID0gdG9SZW5kZXJTVkdUZXh0UGF0aChv
YmplY3QpOworICAgIFJlbmRlclNWR1RleHRQYXRoJiB0ZXh0UGF0aCA9IGRvd25jYXN0PFJlbmRl
clNWR1RleHRQYXRoPigqb2JqZWN0KTsKIAotICAgIG1fdGV4dFBhdGggPSB0ZXh0UGF0aC0+bGF5
b3V0UGF0aCgpOworICAgIG1fdGV4dFBhdGggPSB0ZXh0UGF0aC5sYXlvdXRQYXRoKCk7CiAgICAg
aWYgKG1fdGV4dFBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0UGF0
aFN0YXJ0T2Zmc2V0ID0gdGV4dFBhdGgtPnN0YXJ0T2Zmc2V0KCk7CisgICAgbV90ZXh0UGF0aFN0
YXJ0T2Zmc2V0ID0gdGV4dFBhdGguc3RhcnRPZmZzZXQoKTsKICAgICBtX3RleHRQYXRoTGVuZ3Ro
ID0gbV90ZXh0UGF0aC5sZW5ndGgoKTsKICAgICBpZiAobV90ZXh0UGF0aFN0YXJ0T2Zmc2V0ID4g
MCAmJiBtX3RleHRQYXRoU3RhcnRPZmZzZXQgPD0gMSkKICAgICAgICAgbV90ZXh0UGF0aFN0YXJ0
T2Zmc2V0ICo9IG1fdGV4dFBhdGhMZW5ndGg7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTVkdU
ZXh0TGF5b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTGF5b3V0KFJlbmRlck9iamVjdCogb2JqZWN0
LCBTVkdUZXh0TGF5b3UKICAgICBTVkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCA9IFNW
R0xlbmd0aEFkanVzdFVua25vd247CiAgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGggPSAwOwog
Ci0gICAgaWYgKFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKHRleHRQYXRoKSkgeworICAg
IGlmIChTVkdUZXh0Q29udGVudEVsZW1lbnQqIHRleHRDb250ZW50RWxlbWVudCA9IFNWR1RleHRD
b250ZW50RWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJlcigmdGV4dFBhdGgpKSB7CiAgICAgICAg
IFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0ZXh0Q29udGVudEVsZW1lbnQpOwogICAg
ICAgICBsZW5ndGhBZGp1c3QgPSB0ZXh0Q29udGVudEVsZW1lbnQtPmxlbmd0aEFkanVzdCgpOwog
ICAgICAgICBkZXNpcmVkVGV4dExlbmd0aCA9IHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVk
VGV4dExlbmd0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAKaW5kZXggMDU1ZmUwMzcxOWNkN2FiODE1YTk2MzhjNmZkYzEzNDRlZjY2NmRk
MC4uNmIzMGE2NTQ0MTcwMDI2NzQ2ZDQ4MzU0Nzk1NzQ4N2E2ZWFkZTcwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBTVkdQYXRo
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0
aW9uR3VhcmQodGhpcyk7CiAKLSAgICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IHRvUmVuZGVy
U1ZHUGF0aCh0aGlzLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpOwogCiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewogICAgICAgICBpZiAobV9wYXRoU2VnTGlzdC5z
aG91bGRTeW5jaHJvbml6ZSAmJiAhU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxT
VkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhp
cywgZFByb3BlcnR5SW5mbygpKS0+aXNBbmltYXRpbmcoKSkgewpAQCAtMzgxLDcgKzM4MSw3IEBA
IHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSBy
b2xlLCBMaXN0TW9kaWZpY2F0aW9uIGxpCiAKICAgICBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygp
OwogICAgIAotICAgIFJlbmRlclNWR1BhdGgqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdQYXRoKHRo
aXMtPnJlbmRlcmVyKCkpOworICAgIFJlbmRlclNWR1BhdGgqIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zOTQsNyArMzk0LDcgQEAgRmxvYXRSZWN0IFNWR1BhdGhFbGVt
ZW50OjpnZXRCQm94KFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGVTdHJhdGVneSkKICAg
ICBpZiAoc3R5bGVVcGRhdGVTdHJhdGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQogICAgICAgICBk
b2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAg
UmVuZGVyU1ZHUGF0aCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1BhdGgodGhpcy0+cmVuZGVyZXIo
KSk7CisgICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRo
Pih0aGlzLT5yZW5kZXJlcigpKTsKIAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNob3Vs
ZCBzdXBwb3J0IGdldEJCb3ggZm9yIGRldGFjaGVkIGVsZW1lbnRzLgogICAgIGlmICghcmVuZGVy
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggZjQxYTM0NGM1NzI2Zjc4
MWQzMWY2NTFhOWE2MjgyMjFhM2MzMjFiNy4uNzEzZGI4NzVkZjNhNmQ3MWRhNDA0YTJkMzFjNjRi
OGFiZWNmYmZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNTcyLDEy
ICs1NzIsMTIgQEAgRmxvYXRTaXplIFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydFNpemUo
KSBjb25zdAogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgp
OwogCi0gICAgaWYgKHJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpKSB7Ci0gICAgICAgIExheW91dFJl
Y3QgY29udGVudEJveFJlY3QgPSB0b1JlbmRlclNWR1Jvb3QocmVuZGVyZXIoKSktPmNvbnRlbnRC
b3hSZWN0KCk7CisgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KCpyZW5kZXJlcigpKSkgeworICAg
ICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4o
KnJlbmRlcmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgICAgIHJldHVybiBGbG9hdFNpemUo
Y29udGVudEJveFJlY3Qud2lkdGgoKSAvIHJlbmRlcmVyKCktPnN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpLCBjb250ZW50Qm94UmVjdC5oZWlnaHQoKSAvIHJlbmRlcmVyKCktPnN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3Qgdmlld3BvcnRSZWN0ID0gdG9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcihyZW5kZXJlcigpKS0+dmlld3BvcnQoKTsKKyAgICBGbG9h
dFJlY3Qgdmlld3BvcnRSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+
KCpyZW5kZXJlcigpKS52aWV3cG9ydCgpOwogICAgIHJldHVybiBGbG9hdFNpemUodmlld3BvcnRS
ZWN0LndpZHRoKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239629</attachid>
            <date>2014-10-10 09:41:46 -0700</date>
            <delta_ts>2014-10-10 10:26:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137594-20141010094149.patch</filename>
            <type>text/plain</type>
            <size>54970</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg4ZTQ4MDJiNzg2MmZl
MjA4ZGNjODAzZGQzYTkzZmY2ZTQyNDk1MC4uMTVjYWU3ZDAyODEyZWI1ZmQxYTdjMmQwYWY1NmU3
YmUyN2VmNDkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBSRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoKSBmb3IgYSBsb3Qgb2YgUmVuZGVyT2JqZWN0IHN1YmNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERyb3AgUkVOREVSX09CSkVD
VF9UWVBFX0NBU1RTKCkgZm9yIFJlbmRlck9iamVjdCBzdWJjbGFzc2VzIHRoYXQgbm8KKyAgICAg
ICAgbG9uZ2VyIG5lZWRlZCBpdCBvciB0aGF0IHJlcXVpcmVkIHZlcnkgZmV3IGNoYW5nZXMgdG8g
ZG8gc28uIFRoaXMgd2lsbAorICAgICAgICBtYWtlIHN1cmUgZGV2ZWxvcGVycyBzdGFydCB1c2lu
ZyBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIHRob3NlCisgICAgICAgIGNsYXNzZXMuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJRWxlbWVudCk6
CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNl
dWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpyZXNl
dCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMpOgorICAgICAgICAqIGh0
bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlw
ZTo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6
ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb250ZW50c0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclF1b3RlOjphdHRhY2hRdW90ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW5kZXJlclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVDb3VudGVySWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEZvclJlbmRlcmVySW5Mb2NhbENvb3JkaW5hdGVz
RXhjbHVkaW5nU1ZHU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OmNoZWNrRm9yU1ZHUmVwYWludER1cmluZ0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVPYmplY3RCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsYXlvdXRTaXplT2ZOZWFy
ZXN0Vmlld3BvcnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnRyYW5zZm9ybVRvUm9vdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3Vw
cG9ydDo6cmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
U3VwcG9ydDo6c2V0UmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5
b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTGF5b3V0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0QkJveCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6Y3VycmVudFZpZXdwb3J0U2l6ZSk6CisKIDIwMTQtMTAtMTAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8Pigp
IGZvciBSZW5kZXJCb3hNb2RlbE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYjQzZjJi
YjI2ODNlYmNhMzE3ZWMwNzAwZTEwOTM5ZjQxOWEwN2Q5NC4uNjRkZjEzZDcxN2JhNjg4OGJjMzQy
ZjVhNGVlNGI1MjRhNzcyNmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC02MjMsOCArNjIz
LDggQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnQKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmIChtX3JlbmRlcmVyLT5pc0ZpbGVVcGxvYWRD
b250cm9sKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlckZpbGVVcGxvYWRDb250cm9sKG1fcmVu
ZGVyZXIpLT5idXR0b25WYWx1ZSgpOworICAgIGlmIChpczxSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bD4oKm1fcmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w+KCptX3JlbmRlcmVyKS5idXR0b25WYWx1ZSgpOwogICAgIAogICAgIC8vIFJlZmxl
Y3Qgd2hlbiBhIGNvbnRlbnQgYXV0aG9yIGhhcyBleHBsaWNpdGx5IG1hcmtlZCBhIGxpbmUgYnJl
YWsuCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSkKQEAgLTcyMiwxMCArNzIyLDEwIEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBzdGF0aWNUZXh0OwogICAgIH0KICAgICAgICAgCi0gICAgaWYgKG1fcmVuZGVy
ZXItPmlzVGV4dCgpKQorICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpCiAgICAg
ICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CiAgICAgCi0gICAgaWYgKGNzc0JveCAmJiBj
c3NCb3gtPmlzTWVudUxpc3QoKSkgeworICAgIGlmIChpczxSZW5kZXJNZW51TGlzdD4oY3NzQm94
KSkgewogICAgICAgICAvLyBSZW5kZXJNZW51TGlzdCB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSB0
ZXh0KCkgb2YgaXRzIHNlbGVjdGVkIGl0ZW0uCiAgICAgICAgIC8vIFRoaXMgaGFzIHRvIGJlIG92
ZXJyaWRkZW4gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNlbGVjdGVkIGl0ZW0gaGFzIGFuIEFSSUEg
bGFiZWwuCiAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpOwpAQCAtNzM2LDExICs3
MzYsMTEgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkg
Y29uc3QKICAgICAgICAgICAgIGlmICghb3ZlcnJpZGRlbkRlc2NyaXB0aW9uLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBvdmVycmlkZGVuRGVzY3JpcHRpb247CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRvUmVuZGVyTWVudUxpc3QobV9yZW5kZXJlciktPnRleHQoKTsKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqbV9yZW5kZXJlcikudGV4dCgp
OwogICAgIH0KICAgICAKLSAgICBpZiAobV9yZW5kZXJlci0+aXNMaXN0TWFya2VyKCkpCi0gICAg
ICAgIHJldHVybiB0b1JlbmRlckxpc3RNYXJrZXIoKm1fcmVuZGVyZXIpLnRleHQoKTsKKyAgICBp
ZiAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oKm1fcmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1fcmVuZGVyZXIpLnRleHQoKTsKICAgICAKICAgICBp
ZiAoaXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTc0OCw4ICs3NDgs
OCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25z
dAogICAgIGlmIChpc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiB0ZXh0KCk7CiAgICAg
Ci0gICAgaWYgKG1fcmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKLSAgICAgICAgcmV0
dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmZpbGVUZXh0VmFsdWUo
KTsKKyAgICBpZiAoaXM8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KCptX3JlbmRlcmVyKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9sPigqbV9yZW5kZXJl
cikuZmlsZVRleHRWYWx1ZSgpOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRv
IGltcGxlbWVudCBhIHZhbHVlIGhlcmUgZm9yIG1vcmUgdHlwZXMKICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgYmV0dGVyIG5vdCB0byBhZHZlcnRpc2UgYSB2YWx1ZSBhdCBhbGwgZm9yIHRoZSB0
eXBlcyBmb3Igd2hpY2ggd2UgZG9uJ3QgaW1wbGVtZW50IG9uZTsKQEAgLTEwODYsNyArMTA4Niw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxl
VUlFbGVtZW50KCkgY29uc3QKICAgICAKICAgICAvLyBpZiBpc0ZpZWxkc2V0IGlzIHRydWUsIHRo
ZSByZW5kZXJlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUmVuZGVyRmllbGRzZXQKICAgICBpZiAo
aXNGaWVsZHNldCgpKQotICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZSh0b1JlbmRlckZpZWxkc2V0KG1fcmVuZGVyZXIpLT5maW5kTGVnZW5kKFJlbmRlckZpZWxkc2V0
OjpJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdykpOworICAgICAgICByZXR1cm4gYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShkb3duY2FzdDxSZW5kZXJGaWVsZHNldD4oKm1fcmVuZGVyZXIp
LmZpbmRMZWdlbmQoUmVuZGVyRmllbGRzZXQ6OkluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93KSk7
CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIWlz
PEVsZW1lbnQ+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IDNi
NGE5NzlkZmJmYTFjZDcwZmQwMDI4MTUyZjM1NWY0NjE1NmU0ZTAuLmM2ODE0NDY5ZjI3MzZhZjRj
NmFkODkzOTA4ZGE3YjIwNDQ5OGY3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTg5LDggKzg5LDggQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJl
cnMoKQogICAgICAgICBpZiAocmVuZGVyZXItPmlzQ2hpbGRBbGxvd2VkKCpjaGlsZCwgc3R5bGUp
KSB7CiAgICAgICAgICAgICBhdXRvKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwogICAgICAgICAg
ICAgcmVuZGVyZXItPmFkZENoaWxkKGNoaWxkLmxlYWtQdHIoKSk7Ci0gICAgICAgICAgICBpZiAo
Y2hpbGRQdHItPmlzUXVvdGUoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlclF1b3RlKGNoaWxk
UHRyKS0+YXR0YWNoUXVvdGUoKTsKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJRdW90ZT4oKmNo
aWxkUHRyKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJRdW90ZT4oKmNoaWxkUHRy
KS5hdHRhY2hRdW90ZSgpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBkOTI4MzNiMjc0Yjk5MGMwZDA5NDAwYjBiNWJm
NzFmYjAxNzkyMzRkLi44MjAzNjUxZmJjMDJiMDkzNzFkNGQ4ZTNmOGVlMTQyODZjZDUwMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzMwLDcgKzMz
MCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJlc2V0KCkKICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXJJc0NhbnZh
cykgewogICAgICAgICAgICAgaWYgKG9sZFNpemUgIT0gc2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJIVE1MQ2FudmFzKHJlbmRlcmVyKS0+Y2FudmFzU2l6ZUNoYW5nZWQoKTsKKyAg
ICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJIVE1MQ2FudmFzPigqcmVuZGVyZXIpLmNhbnZh
c1NpemVDaGFuZ2VkKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRl
ckJveCgpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJlbmRlckJveCgpLT5jb250ZW50Q2hhbmdlZChDYW52YXNDaGFuZ2VkKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggODBiYzc1
ODlkNTAxMGNhMmU0ZGNjODYxNWMyOTg5MzM0NDY4N2Q0Zi4uM2E4MTlkYjIxMTBjYmE0NjE0ZWIw
NjMzMjRjZTRlNDQ2MWI0Nzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKQEAgLTIwNywxNyArMjA3LDE3IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3du
IGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20g
Y29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4K
IAogICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0Pihy
ZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZW5kZXJlci0+aXNFbWJlZGRl
ZE9iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVy
KS0+aXNQbHVnaW5VbmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVk
T2JqZWN0KHJlbmRlcmVyKS0+aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChl
dmVudCk7CisgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpKSB7Cisg
ICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5pc1Bs
dWdpblVuYXZhaWxhYmxlKCkpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVtYmVkZGVk
T2JqZWN0PigqcmVuZGVyZXIpLmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQo
ZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRv
UmVuZGVyRW1iZWRkZWRPYmplY3QocmVuZGVyZXIpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYg
ZGlzcGxheVN0YXRlKCkgPCBSZXN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luKHJlbmRlcmVyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAo
aXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikgJiYgZGlzcGxheVN0YXRlKCkg
PCBSZXN0YXJ0aW5nKSB7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbj4oKnJlbmRlcmVyKS5oYW5kbGVFdmVudChldmVudCk7CiAgICAgICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBIVE1MUGx1Z0luRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQo
cmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSBkb3duY2Fz
dDxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcikud2lkZ2V0KCk7CiAgICAgaWYgKCF3aWRnZXQpCiAg
ICAgICAgIHJldHVybjsKICAgICB3aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM3YjdmMjJj
MzVmNmY3ZmFmODhkNDA2YzExM2FhNWNlMzRhNjdlMGUuLjQwZmEwZGY4MDQ2MzNhZWM5ZGVkZjY5
NmMwNTY4NzJmNzE1YmZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcApAQCAtMzM0LDEyICszMzQsMTIgQEAgdm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIAogICAg
IG1fc25hcHNob3RJbWFnZSA9IGltYWdlOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPmlzU25hcHNo
b3R0ZWRQbHVnSW4oKSkgewotICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHJlbmRl
cmVyKCkpLT51cGRhdGVTbmFwc2hvdChpbWFnZSk7CisgICAgaWYgKGlzPFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luPigqcmVuZGVyZXIoKSkpIHsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4+KCpyZW5kZXJlcigpKS51cGRhdGVTbmFwc2hvdChpbWFnZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+aXNFbWJlZGRlZE9iamVjdCgp
KQorICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKCkpKQogICAgICAg
ICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKQEAgLTU4Miw3ICs1ODIsNyBAQCBib29sIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihjb25zdCBSZW5k
ZXJFbWJlZGRlZE9iamVjdAogICAgIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVj
a1NuYXBzaG90U3RhdHVzKCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQ
bHVnSW4oKSkgeworICAgIGlmICghaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJl
cigpKSkgewogICAgICAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUGxheWluZykKICAgICAgICAg
ICAgIGNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpOwogICAgICAgICByZXR1cm47CkBA
IC01OTAsNyArNTkwLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBz
aG90U3RhdHVzKCkKICAgICAKICAgICAvLyBJZiB3aWR0aCBhbmQgaGVpZ2h0IHN0eWxlcyB3ZXJl
IHByZXZpb3VzbHkgbm90IHNldCBhbmQgd2UndmUgc25hcHNob3R0ZWQgdGhlIHBsdWdpbiB3ZSBt
YXkgbmVlZCB0byByZXN0YXJ0IHRoZSBwbHVnaW4gc28gdGhhdCBpdHMgc3RhdGUgY2FuIGJlIHVw
ZGF0ZWQgYXBwcm9wcmlhdGVseS4KICAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5n
cygpLnNuYXBzaG90QWxsUGx1Z0lucygpICYmIGRpc3BsYXlTdGF0ZSgpIDw9IERpc3BsYXlpbmdT
bmFwc2hvdCAmJiAhbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkKSB7Ci0gICAgICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luJiByZW5kZXJlciA9IHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
KnRoaXMtPnJlbmRlcmVyKCkpOworICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiYgcmVu
ZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMtPnJlbmRlcmVy
KCkpOwogICAgICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVj
aWZpZWQoKSAmJiAhcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5jcHAKaW5kZXggNDE4ZGQwYjA5NGUzMTMxMWVlZmI1NWI0YjI0YTYyZTE2ZThi
NzgwZi4uZTRjZmE3NzFiODk1NTJlMjdhN2E5Yzk0YmI4ZDliY2YxMTlkMjU0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAtNTUsOCArNTUsOCBAQCBTZWFyY2hJ
bnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogdm9p
ZCBTZWFyY2hJbnB1dFR5cGU6OmFkZFNlYXJjaFJlc3VsdCgpCiB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQoKS5yZW5kZXJlcigp
KQotICAgICAgICB0b1JlbmRlclNlYXJjaEZpZWxkKHJlbmRlcmVyKS0+YWRkU2VhcmNoUmVzdWx0
KCk7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudCgpLnJlbmRlcmVyKCkpCisgICAg
ICAgIGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqcmVuZGVyZXIpLmFkZFNlYXJjaFJlc3Vs
dCgpOwogI2VuZGlmCiB9CiAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFNlYXJjaElucHV0VHlw
ZTo6c2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QKIHZvaWQgU2VhcmNoSW5w
dXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VTdGF0ZSBzdGF0ZSkKIHsK
ICAgICBpZiAobV9jYW5jZWxCdXR0b24pCi0gICAgICAgIHRvUmVuZGVyU2VhcmNoRmllbGQoZWxl
bWVudCgpLnJlbmRlcmVyKCkpLT51cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCk7CisgICAg
ICAgIGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqZWxlbWVudCgpLnJlbmRlcmVyKCkpLnVw
ZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKTsKIAogICAgIC8vIElmIHRoZSBpbmNyZW1lbnRh
bCBhdHRyaWJ1dGUgaXMgc2V0LCB0aGVuIGRpc3BhdGNoIHRoZSBzZWFyY2ggZXZlbnQKICAgICBp
ZiAoc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBi
NDc2MTkwMTNmNDJjOWQ3ZjA3ZWZhOGQzOGE5ZDU1ZmY5YjI4ZmFhLi40ZTIyMTg2MDY2MjVlMzg0
NGNhMGRiNmFkYzhiOWVlZjI1ODY2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTExNywxMyArMTE3
LDEzIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzCiAKIFJlbmRlclRleHRDb250cm9sSW5uZXJC
bG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKEhUTUxEaXZFbGVtZW50Ojpy
ZW5kZXJlcigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2xJbm5lckJs
b2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIoKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJTdHlsZSYpCiB7Ci0gICAgUmVuZGVyVGV4dENvbnRyb2wqIHBhcmVudFJlbmRlcmVy
ID0gdG9SZW5kZXJUZXh0Q29udHJvbChzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCkpOwotICAgIHJl
dHVybiBwYXJlbnRSZW5kZXJlci0+Y3JlYXRlSW5uZXJUZXh0U3R5bGUoJnBhcmVudFJlbmRlcmVy
LT5zdHlsZSgpKTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbCYgcGFyZW50UmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0Q29udHJvbD4oKnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKSk7CisgICAg
cmV0dXJuIHBhcmVudFJlbmRlcmVyLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCZwYXJlbnRSZW5kZXJl
ci5zdHlsZSgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ2
LDExICsxNDYsMTEgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgaW5wdXQtPmZvY3VzKCk7CiAg
ICAgICAgIGlucHV0LT5zZWxlY3QoKTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBSZW5k
ZXJTZWFyY2hGaWVsZCogcmVuZGVyZXIgPSB0b1JlbmRlclNlYXJjaEZpZWxkKGlucHV0LT5yZW5k
ZXJlcigpKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5wb3B1cElzVmlzaWJsZSgpKQotICAgICAg
ICAgICAgcmVuZGVyZXItPmhpZGVQb3B1cCgpOworICAgICAgICBSZW5kZXJTZWFyY2hGaWVsZCYg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTZWFyY2hGaWVsZD4oKmlucHV0LT5yZW5kZXJlcigp
KTsKKyAgICAgICAgaWYgKHJlbmRlcmVyLnBvcHVwSXNWaXNpYmxlKCkpCisgICAgICAgICAgICBy
ZW5kZXJlci5oaWRlUG9wdXAoKTsKICAgICAgICAgZWxzZSBpZiAoaW5wdXQtPm1heFJlc3VsdHMo
KSA+IDApCi0gICAgICAgICAgICByZW5kZXJlci0+c2hvd1BvcHVwKCk7CisgICAgICAgICAgICBy
ZW5kZXJlci5zaG93UG9wdXAoKTsKICNlbmRpZgogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZTI2ZTJiMGIw
Njk2YzBmZjNkOTQ3YjVkZjBmM2UwYWE5NmQ5NjFjYS4uMmQwYzk2OGY5MjE3ZGQ1YmZjN2RlZjQw
ZWJiY2M2NzdhNGZkNDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzU5Nywx
NiArMzU5NywxNiBAQCBib29sIEZyYW1lVmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0
dGVuaW5nKCkgY29uc3QKIAogICAgIC8vIEZyYW1lIGZsYXR0ZW5pbmcgYXBwbGllcyB3aGVuIHRo
ZSBvd25lciBlbGVtZW50IGlzIGVpdGhlciBpbiBhIGZyYW1lc2V0IG9yCiAgICAgLy8gYW4gaWZy
YW1lIHdpdGggZmxhdHRlbmluZyBwYXJhbWV0ZXJzLgotICAgIGlmIChmcmFtZSgpLm93bmVyRWxl
bWVudCgpLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKLSAgICAgICAgUmVuZGVySUZyYW1lKiBp
ZnJhbWVSZW5kZXJlciA9IHRvUmVuZGVySUZyYW1lKGZyYW1lKCkub3duZXJFbGVtZW50KCktPnJl
bmRlcldpZGdldCgpKTsKLSAgICAgICAgaWYgKGlmcmFtZVJlbmRlcmVyLT5mbGF0dGVuRnJhbWUo
KSkKKyAgICBpZiAoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KCpmcmFtZSgpLm93bmVyRWxlbWVudCgp
KSkgeworICAgICAgICBSZW5kZXJJRnJhbWUmIGlmcmFtZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVySUZyYW1lPigqZnJhbWUoKS5vd25lckVsZW1lbnQoKS0+cmVuZGVyV2lkZ2V0KCkpOworICAg
ICAgICBpZiAoaWZyYW1lUmVuZGVyZXIuZmxhdHRlbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZyYW1lKCkub3duZXJFbGVtZW50KCktPmhh
c1RhZ05hbWUoZnJhbWVUYWcpKQorICAgIGlmIChpczxIVE1MRnJhbWVFbGVtZW50PigqZnJhbWUo
KS5vd25lckVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IGExYTY1MjBl
OTdjOTQ4ZmMwYzkzNmYxMGM0NzRiMTUwNTFlNWU0YjMuLjExYTIzZjk2YjI4M2Y4MTY5Y2I1MGFk
YTQ0NDRlYjlmYmZiOWMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmgKQEAgLTgzLDggKzgzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVmYXVsdDsKIH07CiAK
LVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJCdXR0b24sIGlzUmVuZGVyQnV0dG9uKCkp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlckJ1dHRvbiwgaXNSZW5kZXJCdXR0b24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCmluZGV4IDhjMzgxNmM4ZWZmNWJhOWIzYjkyMmNiZTM4
Y2JjNTM3ZTVkZGFmNzMuLmFkZmE4NmJkNGU2ZDUxYWFlZDQ2Y2ZjZGRhNDY2MzJiNTAyNDVkZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApAQCAtNjIsOCArNjIs
NiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb3VudGVyTm9kZTsKIH07CiAKLVJFTkRF
Ul9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJDb3VudGVyLCBpc0NvdW50ZXIoKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyQ291bnRlciwgaXNDb3VudGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuaAppbmRleCAxYzRhYWYwMjE5MmU3YTBlNDUzNGY2YjNhOWU0
N2IxNTNiZDA5MGI5Li5kM2FlYWJlMWIyNGM5MTU0NzE2MjdkOTRkMWE3MjcwNTRlOGY2OGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKQEAg
LTQ1LDggKzQ1LDYgQEAgcHJpdmF0ZToKICAgICBQYXRoIGdldFBhdGgoY29uc3QgTGF5b3V0UG9p
bnQmIG9yaWdpbikgY29uc3Q7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVy
RGV0YWlsc01hcmtlciwgaXNEZXRhaWxzTWFya2VyKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckRldGFpbHNN
YXJrZXIsIGlzRGV0YWlsc01hcmtlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuaAppbmRleCA0NGE4Mzc0M2UxMTUzNGM4ZWJkMjkzZDdhYWExZDY0N2M2ODdlOTAw
Li4xMzg2Y2NlOGE1ZWFmOTlhNGJiY2M0YjU5OWYzZGUyNjM2NzI0M2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaApAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBvdmVycmlkZTsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJGaWVs
ZHNldCwgaXNGaWVsZHNldCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGaWVsZHNldCwgaXNGaWVsZHNldCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKaW5kZXggNGIzY2I4YjE2ZmU0NTBmZTdjNmFhZmY3ZTVjNjg2ZmMxZGJhNTJiNC4u
ZmFmNTQxMTE2YjU0OGU0NDVjYzYzMDgxZmUzMzViNWRlYzE3MjJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0x
NTgsNyArMTU4LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgTGF5b3V0VW5p
dCB0ZXh0WSA9IDA7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJh
c2VsaW5lCiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayB3aXRoIHRyYW5zZm9ybXMu
Ci0gICAgICAgIGlmIChSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9SZW5kZXJCdXR0
b24oYnV0dG9uLT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKFJlbmRlckJ1dHRvbiogYnV0dG9u
UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCdXR0b24+KGJ1dHRvbi0+cmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICB0ZXh0WSA9IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGlu
Z1RvcCgpICsgYnV0dG9uUmVuZGVyZXItPmJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2Vs
aW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdGV4dFkgPSBiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0
aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFp
bnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAg
ICAgICAgICBpY29uWCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25XaWR0
aCAtIGFmdGVyQnV0dG9uU3BhY2luZyAtIGljb25XaWR0aDsKIAogI2lmIFBMQVRGT1JNKElPUykK
LSAgICAgICAgICAgIGlmIChSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9SZW5kZXJC
dXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlckJ1dHRv
biogYnV0dG9uUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCdXR0b24+KGJ1dHRvbi0+cmVuZGVy
ZXIoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRoZSBmaWxlIGljb24gYW5kIGRlY29y
YXRpb25zLgogICAgICAgICAgICAgICAgIEludFJlY3QgaWNvblJlY3QoaWNvblgsIGljb25ZLCBp
Y29uV2lkdGgsIGljb25IZWlnaHQpOwogICAgICAgICAgICAgICAgIFJlbmRlclRoZW1lOjpGaWxl
VXBsb2FkRGVjb3JhdGlvbnMgZGVjb3JhdGlvbnNUeXBlID0gaW5wdXRFbGVtZW50KCkuZmlsZXMo
KS0+bGVuZ3RoKCkgPT0gMSA/IFJlbmRlclRoZW1lOjpTaW5nbGVGaWxlIDogUmVuZGVyVGhlbWU6
Ok11bHRpcGxlRmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IGNlNGFiYWRlYzFhOWZkN2YyYzUzOTFmZWI1Mjc1YTAz
MzkyOWVjOTAuLjY2NDYzNDI1YWY3YmRhMzMxOGVhNjAwNjJkYWU4YzhmNzhhNzk1NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CkBAIC02NCw4ICs2NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhblJlY2VpdmVEcm9wcGVk
RmlsZXM7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wsIGlzRmlsZVVwbG9hZENvbnRyb2woKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wsIGlzRmlsZVVwbG9hZENvbnRyb2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMWYxMzYyMGUyMGY4NWIxNmUzNGM3YzJhNjM3MmZl
YzQxZDQ4Y2VjNS4uMGJmNzE3MTZmMDM5YjY4NGM0YTViMzVlNGZjZmY4ZGNmZmNhZDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTE2MSw4
ICsxNjEsNiBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZp
cnN0TGluZTsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJGbGV4aWJsZUJv
eCwgaXNGbGV4aWJsZUJveCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGbGV4aWJsZUJveCwgaXNGbGV4aWJs
ZUJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKaW5k
ZXggNTI1ZTBlOTYzM2EwZmQ0NDNjMzQ3YWNjYzRiODc1ZjFiN2ZmZjU4ZS4uNjY1NjU3MTNjZjFm
MDdkNmVhOWYxZTg4N2M1MDEwNmQ1YmRiZmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC01Myw4ICs1Myw2IEBAIHByb3RlY3RlZDoKICAgICBS
ZW5kZXJCbG9jayogbV9wbGFjZWhvbGRlcjsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNU
UyhSZW5kZXJGdWxsU2NyZWVuLCBpc1JlbmRlckZ1bGxTY3JlZW4oKSkKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVy
RnVsbFNjcmVlbiwgaXNSZW5kZXJGdWxsU2NyZWVuKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAppbmRleCAxMzU2M2ViNWM5MjVkMzVhYzBkOTM1NTI0MTg3OWM3ZjBlY2Q5YTdj
Li40ZjY0NmI0ZGQ4NjIyZmJjNmZkMmIwNmIzZThkM2RiMzkwNzk1ZjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEzMSw4ICsxMzEsNiBAQCBwcml2YXRlOgogICAg
IE9yZGVySXRlcmF0b3IgbV9vcmRlckl0ZXJhdG9yOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBF
X0NBU1RTKFJlbmRlckdyaWQsIGlzUmVuZGVyR3JpZCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJHcmlkLCBp
c1JlbmRlckdyaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZh
cy5oCmluZGV4IGE3MWVkYWI0NGVkZWI3YTUwYjJlMGU2ZGE0NTQ1ODZlZDY2YWM2NzYuLmQyNWMx
Yzc4NzUwMmU1Y2ZhMmFlOWRiMWFjNzQzNmExYjc4NTRlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaApAQCAtNDksOCArNDksNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRlIHsgY2FudmFz
U2l6ZUNoYW5nZWQoKTsgfQogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckhU
TUxDYW52YXMsIGlzQ2FudmFzKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckhUTUxDYW52YXMsIGlzQ2FudmFz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKaW5kZXggNjg2YzZiMjVl
ZDdlYTNlOTFkOGQzZDllOWNkMWJmMDdiMGY4MTc2Mi4uNDIwOTY1YmE2NWE2MmQ5ZmRjY2VkZDQ0
NTFlZWYxMDhiOTg1MmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUu
aApAQCAtNjIsOCArNjIsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSb290
UmVuZGVyZXIoKSBjb25zdDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJJ
RnJhbWUsIGlzUmVuZGVySUZyYW1lKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlcklGcmFtZSwgaXNSZW5kZXJJ
RnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggYWI5ZmYwMDJkNmNhNDkxOWU4ZTUzZjM5MWI0ODMzNTMyMTY3ZTY2NS4uNmE3
NzcyNWJmNjAwMWJjYjY3ZmYyNGUzN2I2ZWIzYzlkYjcwNTQ5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE5MTksMTggKzE5MTks
MTggQEAgTGF5b3V0U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRPZmZzZXRJbkNvbXBv
c3RpbmdMYXllcigpIGNvbnN0CiAKIExheW91dFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250
ZW50c0JveCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmlzQm94KCkpCisgICAgaWYg
KCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwogCi0gICAgUmVuZGVyQm94JiByZW5kZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKTsK
KyAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7CiAgICAgTGF5b3V0UmVjdCBjb250ZW50c1JlY3Q7CiAjaWYgRU5BQkxFKFZJREVPKQotICAg
IGlmIChyZW5kZXJCb3guaXNWaWRlbygpKQotICAgICAgICBjb250ZW50c1JlY3QgPSB0b1JlbmRl
clZpZGVvKHJlbmRlckJveCkudmlkZW9Cb3goKTsKKyAgICBpZiAoaXM8UmVuZGVyVmlkZW8+KHJl
bmRlckJveCkpCisgICAgICAgIGNvbnRlbnRzUmVjdCA9IGRvd25jYXN0PFJlbmRlclZpZGVvPihy
ZW5kZXJCb3gpLnZpZGVvQm94KCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgaWYgKHJlbmRlckJv
eC5pc1JlbmRlclJlcGxhY2VkKCkpIHsKLSAgICAgICAgUmVuZGVyUmVwbGFjZWQmIHJlbmRlclJl
cGxhY2VkID0gKnRvUmVuZGVyUmVwbGFjZWQoJnJlbmRlckJveCk7CisgICAgaWYgKGlzPFJlbmRl
clJlcGxhY2VkPihyZW5kZXJCb3gpKSB7CisgICAgICAgIFJlbmRlclJlcGxhY2VkJiByZW5kZXJS
ZXBsYWNlZCA9IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJCb3gpOwogICAgICAgICBj
b250ZW50c1JlY3QgPSByZW5kZXJSZXBsYWNlZC5yZXBsYWNlZENvbnRlbnRSZWN0KHJlbmRlckJv
eC5pbnRyaW5zaWNTaXplKCkpOwogICAgIH0gZWxzZQogICAgICAgICBjb250ZW50c1JlY3QgPSBy
ZW5kZXJCb3guY29udGVudEJveFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhLmgKaW5kZXggY2Y0ZTY1ZGE2MjgxMWNkMzJkYzE4NTQzOTVmMGVkNjVlM2QzYTFmZi4uYzM2
NjgwMDYyMjc1YjFhNDFhMmYyNTk3ZDk2MzQwYzExN2M1MGEyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTU2LDggKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJNZWRp
YSwgaXNNZWRpYSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNZWRpYSwgaXNNZWRpYSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXggNDIwZWI0OGMzZWI1Y2Y1ZWI1MTlj
OGFlMTY3MWIyNGYwZmY5ZGY2Ni4uMjJlZTFmNWEyNzI2MGYyMzYwYWJjYjA3MWMyMTUxZWI5NDAy
ZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCkBAIC0zOTMs
OSArMzkzLDkgQEAgdm9pZCBSZW5kZXJRdW90ZTo6YXR0YWNoUXVvdGUoKQogICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogcHJlZGVjZXNzb3IgPSBwcmV2aW91c0luUHJlT3JkZXIoKTsgcHJlZGVj
ZXNzb3I7IHByZWRlY2Vzc29yID0gcHJlZGVjZXNzb3ItPnByZXZpb3VzSW5QcmVPcmRlcigpKSB7
CiAgICAgICAgICAgICAvLyBTa2lwIHVuYXR0YWNoZWQgcHJlZGVjZXNzb3JzIHRvIGF2b2lkIGhh
dmluZyBzdGFsZSBtX3ByZXZpb3VzIHBvaW50ZXJzCiAgICAgICAgICAgICAvLyBpZiB0aGUgcHJl
dmlvdXMgbm9kZSBpcyBuZXZlciBhdHRhY2hlZCBhbmQgaXMgdGhlbiBkZXN0cm95ZWQuCi0gICAg
ICAgICAgICBpZiAoIXByZWRlY2Vzc29yLT5pc1F1b3RlKCkgfHwgIXRvUmVuZGVyUXVvdGUocHJl
ZGVjZXNzb3IpLT5tX2lzQXR0YWNoZWQpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclF1b3Rl
PigqcHJlZGVjZXNzb3IpIHx8ICFkb3duY2FzdDxSZW5kZXJRdW90ZT4oKnByZWRlY2Vzc29yKS5t
X2lzQXR0YWNoZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX3By
ZXZpb3VzID0gdG9SZW5kZXJRdW90ZShwcmVkZWNlc3Nvcik7CisgICAgICAgICAgICBtX3ByZXZp
b3VzID0gZG93bmNhc3Q8UmVuZGVyUXVvdGU+KHByZWRlY2Vzc29yKTsKICAgICAgICAgICAgIG1f
bmV4dCA9IG1fcHJldmlvdXMtPm1fbmV4dDsKICAgICAgICAgICAgIG1fcHJldmlvdXMtPm1fbmV4
dCA9IHRoaXM7CiAgICAgICAgICAgICBpZiAobV9uZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUXVvdGUuaAppbmRleCBhYjliOGNhMWI0ZmFkNTg1MDlkMDcwMWM5Y2VhNWU4NDNhNjE5
MjkxLi5kNWZiMWQzNWRiMDJlN2ZhNTVmNWNiYTVlMDIzYmUyNThjZmJiMDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3RleHQ7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVy
UXVvdGUsIGlzUXVvdGUoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyUXVvdGUsIGlzUXVvdGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggYTg1OTM3MjY3YmYwYjcx
YTIxNWI3YjE2YjgwZjM3YTA1NDRjN2RmNC4uMmU3ODI2YzcxN2NhMjZhYzUwZWQyNTY3MzBhY2Jk
YjE1MDM4MmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgK
QEAgLTg5LDggKzg5LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIExheW91dFNpemUgbV9pbnRy
aW5zaWNTaXplOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclJlcGxhY2Vk
LCBpc1JlbmRlclJlcGxhY2VkKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclJlcGxhY2VkLCBpc1JlbmRlclJl
cGxhY2VkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaAppbmRleCAwY2I2NzBiMzIwZTBhOGU0ZmIxMGMzNzZiNjJjNGQ3MzBiMzA1ZDRiLi5jZWE3
N2JiNzRmYWIxMDZlOGRhNDM5NjY1ZjM4ZjY5ZWIxNTY0MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTczLDggKzczLDYgQEAgcHJp
dmF0ZToKICAgICBTY3JvbGxiYXJQYXJ0IG1fcGFydDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQ
RV9DQVNUUyhSZW5kZXJTY3JvbGxiYXJQYXJ0LCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyU2Nyb2xsYmFyUGFydCwgaXNSZW5kZXJTY3JvbGxiYXJQYXJ0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IDBhMDY2MzMw
YWFkY2I5NjhiNzU4NmQ0NTA2Y2Y5Zjk5ZDgzZTc2M2MuLmY5M2U1ZjUyMjMzZmY2MTQ3ZjU0ODhl
Y2E1NGFjNGYwZDY0MWI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5oCkBAIC05MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9yZWNlbnRTZWFyY2hlczsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5k
ZXJTZWFyY2hGaWVsZCwgaXNUZXh0RmllbGQoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU2VhcmNoRmllbGQs
IGlzVGV4dEZpZWxkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IDA5MmM1MGZiNDUwNGVhMmZhNmJiN2ZkMGY3MTM3YTEy
NGEyY2Q1MDQuLmY5OTMyNzkzMjc2NmEyNjk4MGU0ODM0NjViMjlhOTUwMzc1ZDczMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CkBAIC02Myw4ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUG90ZW50aWFsTW91c2VB
Y3RpdmF0aW9uOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLCBpc1NuYXBzaG90dGVkUGx1Z0luKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLCBpc1NuYXBzaG90dGVkUGx1Z0luKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKaW5kZXggOTYzYjE4MWIxZWJmM2U5NGEwNmI5ZmVm
YmYzOTdmMjE1NmVkYzdjNy4uYTc2M2Y4M2IwMTc0YTUwNWYzZjk5MzQyNDJjMjg2NzE0ZWMyMTcx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaApA
QCAtNDQsOCArNDQsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0
OwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRhYmxlQ2FwdGlvbiwgaXNU
YWJsZUNhcHRpb24oKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGFibGVDYXB0aW9uLCBpc1RhYmxlQ2FwdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaAppbmRleCA2NDU1YzEwZmMwYjk4NjY3Zjg3ZjY1OGQ3ZDU1YWVjYmZmZWQw
ZDRhLi5kNjJiMDA4MzdmY2I5YjY3YzU1ZThmOTllMmNlMzdkOWIyNTA4NDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
aApAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBs
YXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogfTsKIAot
UkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLCBpc1Rl
eHRBcmVhKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLCBpc1RleHRBcmVh
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgKaW5kZXggNjFjMDdkNmI1ZGM1ZjJlNzIyNjlhNzRkNGJhMDJlMjNkZjQw
MDNkYi4uMDg2OTA5ZDgwMTYxNGM4NmE1OTY0YmMzMDkwZmE2OWVhNTY3ZWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaApAQCAtMTEzLDggKzExMyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dENvbnRyb2xJbm5lckJsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jaywg
aXNUZXh0Q29udHJvbElubmVyQmxvY2soKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLCBpc1RleHRGaWVsZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDJiMmMzZjRhZmZkZWVkYTExYWNkN2NhNmEwNTI3NjEwYThiN2MwOGQu
LjZmZDU2NmE4OTU5NTJiZDE3ZWQ3MmQ1YzhlNDk3NmY5YjlhNTkxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTE4NjMsNyArMTg2Myw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgSFRNTFBs
dWdJbkVsZW1lbnQmIHBsdWdJbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVudD4o
KnBhcmVudCk7Ci0gICAgaWYgKCFwbHVnSW5FbGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkp
CisgICAgaWYgKCFpczxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVnSW5FbGVtZW50KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5J
bWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVnSW5FbGVt
ZW50KTsKQEAgLTE4NzIsMjcgKzE4NzIsMjcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
bmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAg
ICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luKiBwbHVnSW5SZW5kZXJlciA9IHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
cGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpOwotICAgIEZsb2F0UG9pbnQgc25hcHNob3RB
YnNQb3MgPSBwbHVnSW5SZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgc25hcHNob3RB
YnNQb3MubW92ZShwbHVnSW5SZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcGx1Z0luUmVuZGVyZXIt
PnBhZGRpbmdMZWZ0KCksIHBsdWdJblJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHBsdWdJblJlbmRl
cmVyLT5wYWRkaW5nVG9wKCkpOworICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luJiBwbHVnSW5S
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqcGx1Z0luSW1hZ2VF
bGVtZW50LnJlbmRlcmVyKCkpOworICAgIEZsb2F0UG9pbnQgc25hcHNob3RBYnNQb3MgPSBwbHVn
SW5SZW5kZXJlci5sb2NhbFRvQWJzb2x1dGUoKTsKKyAgICBzbmFwc2hvdEFic1Bvcy5tb3ZlKHBs
dWdJblJlbmRlcmVyLmJvcmRlckxlZnQoKSArIHBsdWdJblJlbmRlcmVyLnBhZGRpbmdMZWZ0KCks
IHBsdWdJblJlbmRlcmVyLmJvcmRlclRvcCgpICsgcGx1Z0luUmVuZGVyZXIucGFkZGluZ1RvcCgp
KTsKIAogICAgIC8vIFdlIGNvdWxkIGRyYXcgdGhlIHNuYXBzaG90IHdpdGggdGhhdCBjb29yZGlu
YXRlcywgYnV0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlCiAgICAgLy8gaXNuJ3QgYSBjb21w
b3NpdGVkIGxheWVyIGJldHdlZW4gdXMgYW5kIHRoZSBwbHVnSW5SZW5kZXJlci4KLSAgICBmb3Ig
KGF1dG8qIHJlbmRlckJveCA9ICZkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsgcmVuZGVy
Qm94ICE9IHBsdWdJblJlbmRlcmVyOyByZW5kZXJCb3ggPSByZW5kZXJCb3gtPnBhcmVudEJveCgp
KSB7CisgICAgZm9yIChhdXRvKiByZW5kZXJCb3ggPSAmZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcik7IHJlbmRlckJveCAhPSAmcGx1Z0luUmVuZGVyZXI7IHJlbmRlckJveCA9IHJlbmRlckJv
eC0+cGFyZW50Qm94KCkpIHsKICAgICAgICAgaWYgKHJlbmRlckJveC0+aGFzTGF5ZXIoKSAmJiBy
ZW5kZXJCb3gtPmxheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkg
ewogICAgICAgICAgICAgc25hcHNob3RBYnNQb3MgPSAtcmVuZGVyQm94LT5sb2NhdGlvbigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBMYXlvdXRTaXplIHBs
dWdpblNpemUocGx1Z0luUmVuZGVyZXItPmNvbnRlbnRXaWR0aCgpLCBwbHVnSW5SZW5kZXJlci0+
Y29udGVudEhlaWdodCgpKTsKKyAgICBMYXlvdXRTaXplIHBsdWdpblNpemUocGx1Z0luUmVuZGVy
ZXIuY29udGVudFdpZHRoKCksIHBsdWdJblJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKSk7CiAgICAg
TGF5b3V0UmVjdCBwbHVnaW5SZWN0KHNuYXBzaG90QWJzUG9zLCBwbHVnaW5TaXplKTsKICAgICBJ
bnRSZWN0IGFsaWduZWRQbHVnaW5SZWN0ID0gc25hcHBlZEludFJlY3QocGx1Z2luUmVjdCk7CiAK
ICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5S
ZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC0+
ZHJhd0ltYWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci0+c3R5bGUoKS5jb2xvclNwYWNlKCks
IGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LT5k
cmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBh
bGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
aW5kZXggOGY2MzU4NGQ5YmVkYTYxZjQyNDdkYmI0ZDZjMzc2OGFjZmIwMTU5OC4uZGQ5MGM1YmU5
OWU4ZGNkZTRmN2MyZWNkNWU1YTZjYTBiOTQ4ZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMjI2LDE1ICsyMjYsMTUgQEAgdm9pZCBS
ZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLAogCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBpbiBvcmRlciB0byBl
bnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGxheW91dCB0ZXN0IHJlc3VsdHMuCiAg
ICAgaWYgKGFkanVzdEZvclRhYmxlQ2VsbHMpCi0gICAgICAgIHIubW92ZSgwLCAtdG9SZW5kZXJU
YWJsZUNlbGwoby5jb250YWluaW5nQmxvY2soKSktPmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7
CisgICAgICAgIHIubW92ZSgwLCAtZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqby5jb250YWlu
aW5nQmxvY2soKSkuaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpKTsKIAogICAgIC8vIEZJWE1FOiBD
b252ZXJ0IGxheW91dCB0ZXN0IHJlc3VsdHMgdG8gcmVwb3J0IHN1Yi1waXhlbCB2YWx1ZXMsIGlu
IHRoZSBtZWFudGltZSB1c2luZyBlbmNsb3NpbmdJbnRSZWN0CiAgICAgLy8gZm9yIGNvbnNpc3Rl
bmN5IHdpdGggb2xkIHJlc3VsdHMuCiAgICAgdHMgPDwgIiAiIDw8IGVuY2xvc2luZ0ludFJlY3Qo
cik7CiAKLSAgICBpZiAoIW8uaXNUZXh0KCkpIHsKLSAgICAgICAgaWYgKG8uaXNGaWxlVXBsb2Fk
Q29udHJvbCgpKQotICAgICAgICAgICAgdHMgPDwgIiAiIDw8IHF1b3RlQW5kRXNjYXBlTm9uUHJp
bnRhYmxlcyh0b1JlbmRlckZpbGVVcGxvYWRDb250cm9sKCZvKS0+ZmlsZVRleHRWYWx1ZSgpKTsK
KyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG8pKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbD4obykpCisgICAgICAgICAgICB0cyA8PCAiICIgPDwgcXVvdGVBbmRFc2Nh
cGVOb25QcmludGFibGVzKGRvd25jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9sPihvKS5maWxl
VGV4dFZhbHVlKCkpOwogCiAgICAgICAgIGlmIChvLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBD
b2xvciBjb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCA3NGZj
YzkyYmJlY2VjMjI1MmE3NmQyNmVmNjY3NmYxOTE2Yzg4YzczLi4wY2M0YjE3ZTJlY2YxN2FkYWNm
ZjQxODhmZmI5N2Y0OWMwMGFhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAKQEAgLTI3NCwxNCArMjc0LDcgQEAgYm9vbCBSZW5kZXJWaWRlbzo6cmVxdWlyZXNJ
bW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0CiBzdGF0aWMgY29uc3QgUmVuZGVyQmxvY2sqIHJl
bmRlcmVyUGxhY2Vob2xkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHBhcmVudCA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbFNj
cmVlbiA9IHBhcmVudC0+aXNSZW5kZXJGdWxsU2NyZWVuKCkgPyB0b1JlbmRlckZ1bGxTY3JlZW4o
cGFyZW50KSA6IDA7Ci0gICAgaWYgKCFmdWxsU2NyZWVuKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4gZnVsbFNjcmVlbi0+cGxhY2Vob2xkZXIoKTsKKyAgICByZXR1cm4gaXM8
UmVuZGVyRnVsbFNjcmVlbj4ocGFyZW50KSA/IGRvd25jYXN0PFJlbmRlckZ1bGxTY3JlZW4+KCpw
YXJlbnQpLT5wbGFjZWhvbGRlcigpIDogbnVsbHB0cjsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJW
aWRlbzo6b2Zmc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKaW5kZXggMGM2
ZWExOGRhOTUxY2NiYzg4MTZiMDQ3NDVlNDA2MjkyNDY3ZWMyZi4uZWFmODY5ODVhYzAxODAyZmMz
YmMxYmQ5ZDZmNzc2N2FiZTFmMDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaApAQCAtNDcy
LDkgKzQ3Miw5IEBAIGlubGluZSB2b2lkIG5leHRDaGFyYWN0ZXIoVUNoYXImIGN1cnJlbnRDaGFy
YWN0ZXIsIFVDaGFyJiBsYXN0Q2hhcmFjdGVyLCBVQ2hhciYKIC8vIHNvIHdlIGRvbid0IG5lZWQg
dGhpcyBoYWNrLgogaW5saW5lIHZvaWQgdXBkYXRlQ291bnRlcklmTmVlZGVkKFJlbmRlclRleHQm
IHJlbmRlclRleHQpCiB7Ci0gICAgaWYgKCFyZW5kZXJUZXh0LnByZWZlcnJlZExvZ2ljYWxXaWR0
aHNEaXJ0eSgpIHx8ICFyZW5kZXJUZXh0LmlzQ291bnRlcigpKQorICAgIGlmICghcmVuZGVyVGV4
dC5wcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSB8fCAhaXM8UmVuZGVyQ291bnRlcj4ocmVu
ZGVyVGV4dCkpCiAgICAgICAgIHJldHVybjsKLSAgICB0b1JlbmRlckNvdW50ZXIocmVuZGVyVGV4
dCkudXBkYXRlQ291bnRlcigpOworICAgIGRvd25jYXN0PFJlbmRlckNvdW50ZXI+KHJlbmRlclRl
eHQpLnVwZGF0ZUNvdW50ZXIoKTsKIH0KIAogaW5saW5lIGZsb2F0IG1lYXN1cmVIeXBoZW5XaWR0
aChSZW5kZXJUZXh0KiByZW5kZXJlciwgY29uc3QgRm9udCYgZm9udCwgSGFzaFNldDxjb25zdCBT
aW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IDk1YjBkNzAwM2FkYWY4
ZWQxNGQ0ZjFlMzVmZmVlNWFhODFiNWZiYzAuLjQyOTU4ZDRlYzJhYmJjOTlkYTUwZDgyNDhhMDgw
NmRjZWYzMzAzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaApAQCAtODAsOCArODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9u
ZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RT
KFJlbmRlclNWR0NvbnRhaW5lciwgaXNTVkdDb250YWluZXIoKSkKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU1ZH
Q29udGFpbmVyLCBpc1NWR0NvbnRhaW5lcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXggODAyMzY0NTcxNzM0ZmZi
ZTc4Y2VjNjQwZjQ3MjlkNDgyM2Q2Mzc5OS4uYTlhYjIzZDA2ZWMyYmVhYTRmYTJmZjIxNWJkMjE3
NWMyZTNmNjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC02MCw4ICs2MCw2IEBAIHByaXZhdGU6CiAgICAgU1ZH
R3JhZGllbnRFbGVtZW50KiBncmFkaWVudEVsZW1lbnQoKTsKIH07CiAKLVJFTkRFUl9PQkpFQ1Rf
VFlQRV9DQVNUUyhSZW5kZXJTVkdHcmFkaWVudFN0b3AsIGlzU1ZHR3JhZGllbnRTdG9wKCkpCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJf
T0JKRUNUKFJlbmRlclNWR0dyYWRpZW50U3RvcCwgaXNTVkdHcmFkaWVudFN0b3AoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApp
bmRleCAxZGE2Njk1MjdmNjIwMDE4ZjE0NTQ1MmYxNWRjOTFlYmFiMWRiZTdlLi5iNDQ1OTVkMmQx
NmFlMGU5YmMyZjg4MDcyMGI2YTBjODZiOWJmOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC04MCw4ICs4MCw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NWR1NoYWRvdzsKIH07CiAKLVJFTkRFUl9PQkpFQ1Rf
VFlQRV9DQVNUUyhSZW5kZXJTVkdNb2RlbE9iamVjdCwgaXNSZW5kZXJTVkdNb2RlbE9iamVjdCgp
KQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJTVkdNb2RlbE9iamVjdCwgaXNSZW5kZXJTVkdNb2RlbE9iamVjdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCA4
ODdkYWFiNzYzYTA2MWViNTQ4NGZmMDAxY2Q4NjAwZmQzMTE0Y2UzLi40NGZkMTcyNjc1ZGFlMWRi
YTEyZjcwZjdlYWJlNTcxYjIzZGY5MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaApAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxGbG9hdFBvaW50PiBtX3plcm9MZW5ndGhMaW5lY2FwTG9jYXRpb25zOwogfTsKIAotUkVOREVS
X09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR1BhdGgsIGlzU1ZHUGF0aCgpKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChS
ZW5kZXJTVkdQYXRoLCBpc1NWR1BhdGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCBjZWI0Njc4NDBiYmE3
NzZhYmQyMjU1ZDlkZWU4YjJmNjM3OTRiMDRkLi5lODVjNzk0NDAxZDA5ZTQ4NzBjYjEyYTE2NWJk
N2M2YTFlNTc0OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC05Nyw4ICs5Nyw2IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRGF0YT4+IG1f
ZmlsdGVyOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyLCBpc1NWR1Jlc291cmNlRmlsdGVyKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyLCBpc1NWR1Jlc291cmNlRmlsdGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUuY3BwCmluZGV4IGFlZDQ5YWYzMTljMmJiMjgwNmI4ZTllMTEyYzc5MzFjMmNjMDZlZTUuLjhk
MDk0MTdlZjdmNDA1NGQ0NjIzMThlY2ZiNWE2MmY1ODRkNjlmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwCkBAIC0yOCw3ICsyOCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAKKyNpbmNs
dWRlICJTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdGRUZsb29k
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIApAQCAtNDgsMjMgKzUxLDIy
IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zCiB7CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAKLSAgICBSZW5kZXJPYmplY3Qq
IGZpbHRlciA9IHBhcmVudCgpOworICAgIGF1dG8qIGZpbHRlciA9IHBhcmVudCgpOwogICAgIGlm
ICghZmlsdGVyKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGZpbHRlci0+aXNTVkdSZXNv
dXJjZUZpbHRlcigpKTsKIAogICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsIHx8
ICFvbGRTdHlsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IG5ld1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwotICAgIGlmIChmaWx0ZXJQcmltaXRpdmVF
bGVtZW50KCkuaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGbG9vZFRhZykpIHsKKyAgICBpZiAoaXM8
U1ZHRkVGbG9vZEVsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkpIHsKICAgICAgICAg
aWYgKG5ld1N0eWxlLmZsb29kQ29sb3IoKSAhPSBvbGRTdHlsZS0+c3ZnU3R5bGUoKS5mbG9vZENv
bG9yKCkpCi0gICAgICAgICAgICB0b1JlbmRlclNWR1Jlc291cmNlRmlsdGVyKGZpbHRlciktPnBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgU1ZHTmFtZXM6OmZsb29kX2NvbG9yQXR0cik7
CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKmZpbHRlciku
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6Zmxvb2RfY29sb3JBdHRy
KTsKICAgICAgICAgaWYgKG5ld1N0eWxlLmZsb29kT3BhY2l0eSgpICE9IG9sZFN0eWxlLT5zdmdT
dHlsZSgpLmZsb29kT3BhY2l0eSgpKQotICAgICAgICAgICAgdG9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcihmaWx0ZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpm
bG9vZF9vcGFjaXR5QXR0cik7Ci0gICAgfSBlbHNlIGlmIChmaWx0ZXJQcmltaXRpdmVFbGVtZW50
KCkuaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWcpIHx8IGZpbHRlclBy
aW1pdGl2ZUVsZW1lbnQoKS5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdU
YWcpKSB7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKmZp
bHRlcikucHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6Zmxvb2Rfb3Bh
Y2l0eUF0dHIpOworICAgIH0gZWxzZSBpZiAoaXM8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
PihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkpIHx8IGlzPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkpIHsKICAgICAgICAgaWYgKG5ld1N0eWxl
LmxpZ2h0aW5nQ29sb3IoKSAhPSBvbGRTdHlsZS0+c3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkp
Ci0gICAgICAgICAgICB0b1JlbmRlclNWR1Jlc291cmNlRmlsdGVyKGZpbHRlciktPnByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cik7Cisg
ICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKmZpbHRlcikucHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRy
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dFBhdGguaAppbmRleCA4MDMyODBhZjNiZGUxZjQ3Y2NlMTNhODRjZDljMjkyZWUxMDNi
NGRhLi43MGE1ZmQ3ODJlNWVkOThmNmI3MWM0ODc5ZjFlZDE5YTNhZDU3ZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC00NSw4
ICs0NSw2IEBAIHByaXZhdGU6CiAgICAgUGF0aCBtX2xheW91dFBhdGg7CiB9OwogCi1SRU5ERVJf
T0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHVGV4dFBhdGgsIGlzU1ZHVGV4dFBhdGgoKSkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyU1ZHVGV4dFBhdGgsIGlzU1ZHVGV4dFBhdGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmgKaW5kZXggZTFkOTAwN2Q3ODJiZmM4NWFiY2RiY2Y4MWI3MTRlNjQzMDFhMzNm
NC4uNjdkMGE1NjdiZDI0ZTliOWMxOWEzYzA4YzNhMzY3OGJmMTg4MDIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHJpdmF0ZToKICAgICBGbG9hdFNp
emUgbV9sYXN0VHJhbnNsYXRpb247CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLCBpc1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSkKIAogI2VuZGlmIC8v
IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4
IDUyMTI0NGJlZDFkYjI2OGE4MTAzZWMxZGFkMTc5MjBkOTc1ZTFjNmEuLmNjNTI0ODYxMmY4MTJl
NmI5ZTY5NWJkMzljMWExZjZjY2MzOTFlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTY3LDgg
KzY3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwog
fTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmMzhkMjk2OGVmNzg4MDdk
MzI3Y2EzNzMyYWI2ZjEzMWM4OGQ3NWM4Li4zYzQ4M2EzODRkNjAxYzRjOTQ1NWJmNmE0MGMxYzYw
NWZlNTliZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAKQEAgLTMwLDEyICszMCwxNCBAQAogI2luY2x1ZGUgIlJlbmRlckdlb21l
dHJ5TWFwLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1RleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaCIKICNpbmNsdWRl
ICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgpAQCAtNDcs
OCArNDksOCBAQCBGbG9hdFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6cmVwYWludFJlY3RGb3JSZW5k
ZXJlckluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWRwogewogICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgUmVuZGVyU1ZHQmxvY2suCiAKLSAgICBpZiAocmVuZGVyZXIuaXNTVkdTaGFw
ZSgpIHx8IHJlbmRlcmVyLmlzU1ZHSW1hZ2UoKSB8fCByZW5kZXJlci5pc1NWR0NvbnRhaW5lcigp
KQotICAgICAgICByZXR1cm4gdG9SZW5kZXJTVkdNb2RlbE9iamVjdChyZW5kZXJlcikucmVwYWlu
dFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKTsKKyAgICBpZiAoaXM8
UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikucmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKTsKIAogICAgIHJldHVybiByZW5kZXJlci5yZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogfQpAQCAtMTI1LDEzICsxMjcsMTMgQEAgYm9vbCBT
VkdSZW5kZXJTdXBwb3J0OjpjaGVja0ZvclNWR1JlcGFpbnREdXJpbmdMYXlvdXQoY29uc3QgUmVu
ZGVyRWxlbWVudCYgcmVuZGUKICAgICAvLyBXaGVuIGEgcGFyZW50IGNvbnRhaW5lciBpcyB0cmFu
c2Zvcm1lZCBpbiBTVkcsIGFsbCBjaGlsZHJlbiB3aWxsIGJlIHBhaW50ZWQgYXV0b21hdGljYWxs
eQogICAgIC8vIHNvIHdlIGFyZSBhYmxlIHRvIHNraXAgcmVkdW5kYW50IHJlcGFpbnQgY2hlY2tz
LgogICAgIGF1dG8gcGFyZW50ID0gcmVuZGVyZXIucGFyZW50KCk7Ci0gICAgcmV0dXJuICEocGFy
ZW50ICYmIHBhcmVudC0+aXNTVkdDb250YWluZXIoKSAmJiB0b1JlbmRlclNWR0NvbnRhaW5lcihw
YXJlbnQpLT5kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKSk7CisgICAgcmV0dXJuICEoaXM8UmVu
ZGVyU1ZHQ29udGFpbmVyPihwYXJlbnQpICYmIGRvd25jYXN0PFJlbmRlclNWR0NvbnRhaW5lcj4o
KnBhcmVudCkuZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCkpOwogfQogCiAvLyBVcGRhdGUgYSBi
b3VuZGluZyBib3ggdGFraW5nIGludG8gYWNjb3VudCB0aGUgdmFsaWRpdHkgb2YgdGhlIG90aGVy
IGJvdW5kaW5nIGJveC4KIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVPYmplY3RCb3VuZGluZ0Jv
eChGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LCBib29sJiBvYmplY3RCb3VuZGluZ0JveFZh
bGlkLCBSZW5kZXJPYmplY3QqIG90aGVyLCBGbG9hdFJlY3Qgb3RoZXJCb3VuZGluZ0JveCkKIHsK
LSAgICBib29sIG90aGVyVmFsaWQgPSBvdGhlci0+aXNTVkdDb250YWluZXIoKSA/IHRvUmVuZGVy
U1ZHQ29udGFpbmVyKG90aGVyKS0+aXNPYmplY3RCb3VuZGluZ0JveFZhbGlkKCkgOiB0cnVlOwor
ICAgIGJvb2wgb3RoZXJWYWxpZCA9IGlzPFJlbmRlclNWR0NvbnRhaW5lcj4oKm90aGVyKSA/IGRv
d25jYXN0PFJlbmRlclNWR0NvbnRhaW5lcj4oKm90aGVyKS5pc09iamVjdEJvdW5kaW5nQm94VmFs
aWQoKSA6IHRydWU7CiAgICAgaWYgKCFvdGhlclZhbGlkKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIwMCwyNCArMjAyLDIzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlUmVzb3VyY2Vz
T2ZDaGlsZHJlbihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHN0YXRpYyBpbmxpbmUgYm9vbCBs
YXlvdXRTaXplT2ZOZWFyZXN0Vmlld3BvcnRDaGFuZ2VkKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQogewogICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIHN0YXJ0ID0gJnJlbmRlcmVyOwot
ICAgIHdoaWxlIChzdGFydCAmJiAhc3RhcnQtPmlzU1ZHUm9vdCgpICYmICFzdGFydC0+aXNTVkdW
aWV3cG9ydENvbnRhaW5lcigpKQorICAgIHdoaWxlIChzdGFydCAmJiAhaXM8UmVuZGVyU1ZHUm9v
dD4oKnN0YXJ0KSAmJiAhaXM8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCpzdGFydCkpCiAg
ICAgICAgIHN0YXJ0ID0gc3RhcnQtPnBhcmVudCgpOwogCiAgICAgQVNTRVJUKHN0YXJ0KTsKLSAg
ICBBU1NFUlQoc3RhcnQtPmlzU1ZHUm9vdCgpIHx8IHN0YXJ0LT5pc1NWR1ZpZXdwb3J0Q29udGFp
bmVyKCkpOwotICAgIGlmIChzdGFydC0+aXNTVkdWaWV3cG9ydENvbnRhaW5lcigpKQotICAgICAg
ICByZXR1cm4gdG9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihzdGFydCktPmlzTGF5b3V0U2l6
ZUNoYW5nZWQoKTsKKyAgICBpZiAoaXM8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCpzdGFy
dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4o
KnN0YXJ0KS5pc0xheW91dFNpemVDaGFuZ2VkKCk7CiAKLSAgICByZXR1cm4gdG9SZW5kZXJTVkdS
b290KHN0YXJ0KS0+aXNMYXlvdXRTaXplQ2hhbmdlZCgpOworICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJTVkdSb290Pigqc3RhcnQpLmlzTGF5b3V0U2l6ZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBT
VkdSZW5kZXJTdXBwb3J0Ojp0cmFuc2Zvcm1Ub1Jvb3RDaGFuZ2VkKFJlbmRlckVsZW1lbnQqIGFu
Y2VzdG9yKQogewotICAgIHdoaWxlIChhbmNlc3RvciAmJiAhYW5jZXN0b3ItPmlzU1ZHUm9vdCgp
KSB7Ci0gICAgICAgIGlmIChhbmNlc3Rvci0+aXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJTVkdDb250YWluZXIoYW5jZXN0b3IpLT5kaWRU
cmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKTsKLSAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NWR1ZpZXdw
b3J0Q29udGFpbmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcihhbmNlc3RvciktPmRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpOworICAgIHdoaWxl
IChhbmNlc3RvciAmJiAhaXM8UmVuZGVyU1ZHUm9vdD4oKmFuY2VzdG9yKSkgeworICAgICAgICBp
ZiAoaXM8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKmFuY2VzdG9yKSkKKyAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigq
YW5jZXN0b3IpLmRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpOworICAgICAgICBpZiAoaXM8UmVu
ZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCphbmNlc3RvcikpCisgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCphbmNlc3RvcikuZGlkVHJhbnNm
b3JtVG9Sb290VXBkYXRlKCk7CiAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudCgp
OwogICAgIH0KIApAQCAtMzA2LDExICszMDcsMTEgQEAgYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojpy
ZW5kZXJlckhhc1NWR1NoYWRvdyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgUmVuZGVyU1ZHQmxvY2suCiAKLSAgICBpZiAocmVu
ZGVyZXIuaXNTVkdTaGFwZSgpIHx8IHJlbmRlcmVyLmlzU1ZHSW1hZ2UoKSB8fCByZW5kZXJlci5p
c1NWR0NvbnRhaW5lcigpKQotICAgICAgICByZXR1cm4gdG9SZW5kZXJTVkdNb2RlbE9iamVjdChy
ZW5kZXJlcikuaGFzU1ZHU2hhZG93KCk7CisgICAgaWYgKGlzPFJlbmRlclNWR01vZGVsT2JqZWN0
PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdNb2RlbE9iamVj
dD4ocmVuZGVyZXIpLmhhc1NWR1NoYWRvdygpOwogCi0gICAgaWYgKHJlbmRlcmVyLmlzU1ZHUm9v
dCgpKQotICAgICAgICByZXR1cm4gdG9SZW5kZXJTVkdSb290KHJlbmRlcmVyKS5oYXNTVkdTaGFk
b3coKTsKKyAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpLmhhc1NWR1NoYWRvdygpOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzE5LDEzICszMjAsMTMgQEAgdm9pZCBTVkdSZW5kZXJT
dXBwb3J0OjpzZXRSZW5kZXJlckhhc1NWR1NoYWRvdyhSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBi
b29sIGhhc1MKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFJlbmRlclNWR0Jsb2Nr
LgogCi0gICAgaWYgKHJlbmRlcmVyLmlzU1ZHU2hhcGUoKSB8fCByZW5kZXJlci5pc1NWR0ltYWdl
KCkgfHwgcmVuZGVyZXIuaXNTVkdDb250YWluZXIoKSkgewotICAgICAgICB0b1JlbmRlclNWR01v
ZGVsT2JqZWN0KHJlbmRlcmVyKS5zZXRIYXNTVkdTaGFkb3coaGFzU2hhZG93KTsKKyAgICBpZiAo
aXM8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSkgeworICAgICAgICBkb3duY2FzdDxS
ZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpLnNldEhhc1NWR1NoYWRvdyhoYXNTaGFkb3cp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyLmlzU1ZHUm9vdCgp
KQotICAgICAgICB0b1JlbmRlclNWR1Jvb3QocmVuZGVyZXIpLnNldEhhc1NWR1NoYWRvdyhoYXNT
aGFkb3cpOworICAgIGlmIChpczxSZW5kZXJTVkdSb290PihyZW5kZXJlcikpCisgICAgICAgIGRv
d25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKS5zZXRIYXNTVkdTaGFkb3coaGFzU2hhZG93
KTsKIH0KIAogdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhT
aGFkb3dzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGbG9hdFJlY3QmIHJlcGFpbnRS
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEVuZ2luZS5jcHAKaW5kZXggNjhmNDBmNGVlMTcyMmY5MTA4ODYyOTJmNmEwMjM0NjRhZjFjZmZh
Ny4uNDAyZGI0Njc3ZmNlNTQ5NmQ4OWNhZWU2NmMwYmQwMDA4MjlmYzMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCkBA
IC0xNjUsMTIgKzE2NSwxMiBAQCB2b2lkIFNWR1RleHRMYXlvdXRFbmdpbmU6OmJlZ2luVGV4dFBh
dGhMYXlvdXQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFNWR1RleHRMYXlvdQogICAgIEFTU0VSVChv
YmplY3QpOwogCiAgICAgbV9pblBhdGhMYXlvdXQgPSB0cnVlOwotICAgIFJlbmRlclNWR1RleHRQ
YXRoKiB0ZXh0UGF0aCA9IHRvUmVuZGVyU1ZHVGV4dFBhdGgob2JqZWN0KTsKKyAgICBSZW5kZXJT
VkdUZXh0UGF0aCYgdGV4dFBhdGggPSBkb3duY2FzdDxSZW5kZXJTVkdUZXh0UGF0aD4oKm9iamVj
dCk7CiAKLSAgICBtX3RleHRQYXRoID0gdGV4dFBhdGgtPmxheW91dFBhdGgoKTsKKyAgICBtX3Rl
eHRQYXRoID0gdGV4dFBhdGgubGF5b3V0UGF0aCgpOwogICAgIGlmIChtX3RleHRQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdGV4dFBhdGhTdGFydE9mZnNldCA9IHRleHRQ
YXRoLT5zdGFydE9mZnNldCgpOworICAgIG1fdGV4dFBhdGhTdGFydE9mZnNldCA9IHRleHRQYXRo
LnN0YXJ0T2Zmc2V0KCk7CiAgICAgbV90ZXh0UGF0aExlbmd0aCA9IG1fdGV4dFBhdGgubGVuZ3Ro
KCk7CiAgICAgaWYgKG1fdGV4dFBhdGhTdGFydE9mZnNldCA+IDAgJiYgbV90ZXh0UGF0aFN0YXJ0
T2Zmc2V0IDw9IDEpCiAgICAgICAgIG1fdGV4dFBhdGhTdGFydE9mZnNldCAqPSBtX3RleHRQYXRo
TGVuZ3RoOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU1ZHVGV4dExheW91dEVuZ2luZTo6YmVn
aW5UZXh0UGF0aExheW91dChSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHVGV4dExheW91CiAgICAg
U1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhBZGp1c3QgPSBTVkdMZW5ndGhBZGp1c3RVbmtub3du
OwogICAgIGZsb2F0IGRlc2lyZWRUZXh0TGVuZ3RoID0gMDsKIAotICAgIGlmIChTVkdUZXh0Q29u
dGVudEVsZW1lbnQqIHRleHRDb250ZW50RWxlbWVudCA9IFNWR1RleHRDb250ZW50RWxlbWVudDo6
ZWxlbWVudEZyb21SZW5kZXJlcih0ZXh0UGF0aCkpIHsKKyAgICBpZiAoU1ZHVGV4dENvbnRlbnRF
bGVtZW50KiB0ZXh0Q29udGVudEVsZW1lbnQgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1l
bnRGcm9tUmVuZGVyZXIoJnRleHRQYXRoKSkgewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQodGV4dENvbnRlbnRFbGVtZW50KTsKICAgICAgICAgbGVuZ3RoQWRqdXN0ID0g
dGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKTsKICAgICAgICAgZGVzaXJlZFRleHRM
ZW5ndGggPSB0ZXh0Q29udGVudEVsZW1lbnQtPnNwZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IDA1
NWZlMDM3MTljZDdhYjgxNWE5NjM4YzZmZGMxMzQ0ZWY2NjZkZDAuLjZiMzBhNjU0NDE3MDAyNjc0
NmQ0ODM1NDc5NTc0ODdhNmVhZGU3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKICAgICBTVkdFbGVtZW50
SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOwogCi0g
ICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1BhdGgodGhpcy0+cmVuZGVy
ZXIoKSk7CisgICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQ
YXRoPih0aGlzLT5yZW5kZXJlcigpKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZEF0dHIpIHsKICAgICAgICAgaWYgKG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgJiYg
IVNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHUGF0aEVsZW1lbnQsIFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSkt
PmlzQW5pbWF0aW5nKCkpIHsKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50
OjpwYXRoU2VnTGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlv
biBsaQogCiAgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKICAgICAKLSAgICBSZW5kZXJT
VkdQYXRoKiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHUGF0aCh0aGlzLT5yZW5kZXJlcigpKTsKKyAg
ICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMt
PnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAt
Mzk0LDcgKzM5NCw3IEBAIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0QkJveChTdHlsZVVw
ZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiAgICAgaWYgKHN0eWxlVXBkYXRlU3Ry
YXRlZ3kgPT0gQWxsb3dTdHlsZVVwZGF0ZSkKICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFJlbmRlclNWR1BhdGgqIHJlbmRl
cmVyID0gdG9SZW5kZXJTVkdQYXRoKHRoaXMtPnJlbmRlcmVyKCkpOworICAgIFJlbmRlclNWR1Bh
dGgqIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSk7
CiAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSBzaG91bGQgc3VwcG9ydCBnZXRCQm94IGZv
ciBkZXRhY2hlZCBlbGVtZW50cy4KICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCmluZGV4IGY0MWEzNDRjNTcyNmY3ODFkMzFmNjUxYTlhNjI4MjIxYTNj
MzIxYjcuLjcxM2RiODc1ZGYzYTZkNzFkYTQwNGEyZDMxYzY0YjhhYmVjZmJmZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTU3MiwxMiArNTcyLDEyIEBAIEZsb2F0U2l6
ZSBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnRTaXplKCkgY29uc3QKICAgICBpZiAoIXJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKIAotICAgIGlmIChyZW5kZXJl
cigpLT5pc1NWR1Jvb3QoKSkgewotICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0ID0g
dG9SZW5kZXJTVkdSb290KHJlbmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOworICAgIGlmIChp
czxSZW5kZXJTVkdSb290PigqcmVuZGVyZXIoKSkpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBjb250
ZW50Qm94UmVjdCA9IGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KCpyZW5kZXJlcigpKS5jb250ZW50
Qm94UmVjdCgpOwogICAgICAgICByZXR1cm4gRmxvYXRTaXplKGNvbnRlbnRCb3hSZWN0LndpZHRo
KCkgLyByZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgY29udGVudEJveFJlY3Qu
aGVpZ2h0KCkgLyByZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgfQog
Ci0gICAgRmxvYXRSZWN0IHZpZXdwb3J0UmVjdCA9IHRvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIocmVuZGVyZXIoKSktPnZpZXdwb3J0KCk7CisgICAgRmxvYXRSZWN0IHZpZXdwb3J0UmVjdCA9
IGRvd25jYXN0PFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyPigqcmVuZGVyZXIoKSkudmlld3Bv
cnQoKTsKICAgICByZXR1cm4gRmxvYXRTaXplKHZpZXdwb3J0UmVjdC53aWR0aCgpLCB2aWV3cG9y
dFJlY3QuaGVpZ2h0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239635</attachid>
            <date>2014-10-10 10:26:16 -0700</date>
            <delta_ts>2014-10-10 11:02:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137594-20141010102620.patch</filename>
            <type>text/plain</type>
            <size>54969</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg4ZTQ4MDJiNzg2MmZl
MjA4ZGNjODAzZGQzYTkzZmY2ZTQyNDk1MC4uMTVjYWU3ZDAyODEyZWI1ZmQxYTdjMmQwYWY1NmU3
YmUyN2VmNDkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBSRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoKSBmb3IgYSBsb3Qgb2YgUmVuZGVyT2JqZWN0IHN1YmNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERyb3AgUkVOREVSX09CSkVD
VF9UWVBFX0NBU1RTKCkgZm9yIFJlbmRlck9iamVjdCBzdWJjbGFzc2VzIHRoYXQgbm8KKyAgICAg
ICAgbG9uZ2VyIG5lZWRlZCBpdCBvciB0aGF0IHJlcXVpcmVkIHZlcnkgZmV3IGNoYW5nZXMgdG8g
ZG8gc28uIFRoaXMgd2lsbAorICAgICAgICBtYWtlIHN1cmUgZGV2ZWxvcGVycyBzdGFydCB1c2lu
ZyBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIHRob3NlCisgICAgICAgIGNsYXNzZXMuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJRWxlbWVudCk6
CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNl
dWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpyZXNl
dCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMpOgorICAgICAgICAqIGh0
bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlw
ZTo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6
ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb250ZW50c0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclF1b3RlOjphdHRhY2hRdW90ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW5kZXJlclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVDb3VudGVySWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEZvclJlbmRlcmVySW5Mb2NhbENvb3JkaW5hdGVz
RXhjbHVkaW5nU1ZHU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OmNoZWNrRm9yU1ZHUmVwYWludER1cmluZ0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVPYmplY3RCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsYXlvdXRTaXplT2ZOZWFy
ZXN0Vmlld3BvcnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6
OnRyYW5zZm9ybVRvUm9vdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3Vw
cG9ydDo6cmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
U3VwcG9ydDo6c2V0UmVuZGVyZXJIYXNTVkdTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5
b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTGF5b3V0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0QkJveCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6Y3VycmVudFZpZXdwb3J0U2l6ZSk6CisKIDIwMTQtMTAtMTAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8Pigp
IGZvciBSZW5kZXJCb3hNb2RlbE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYjQzZjJi
YjI2ODNlYmNhMzE3ZWMwNzAwZTEwOTM5ZjQxOWEwN2Q5NC4uNjRkZjEzZDcxN2JhNjg4OGJjMzQy
ZjVhNGVlNGI1MjRhNzcyNmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC02MjMsOCArNjIz
LDggQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnQKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmIChtX3JlbmRlcmVyLT5pc0ZpbGVVcGxvYWRD
b250cm9sKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlckZpbGVVcGxvYWRDb250cm9sKG1fcmVu
ZGVyZXIpLT5idXR0b25WYWx1ZSgpOworICAgIGlmIChpczxSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bD4oKm1fcmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w+KCptX3JlbmRlcmVyKS5idXR0b25WYWx1ZSgpOwogICAgIAogICAgIC8vIFJlZmxl
Y3Qgd2hlbiBhIGNvbnRlbnQgYXV0aG9yIGhhcyBleHBsaWNpdGx5IG1hcmtlZCBhIGxpbmUgYnJl
YWsuCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSkKQEAgLTcyMiwxMCArNzIyLDEwIEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBzdGF0aWNUZXh0OwogICAgIH0KICAgICAgICAgCi0gICAgaWYgKG1fcmVuZGVy
ZXItPmlzVGV4dCgpKQorICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpCiAgICAg
ICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CiAgICAgCi0gICAgaWYgKGNzc0JveCAmJiBj
c3NCb3gtPmlzTWVudUxpc3QoKSkgeworICAgIGlmIChpczxSZW5kZXJNZW51TGlzdD4oY3NzQm94
KSkgewogICAgICAgICAvLyBSZW5kZXJNZW51TGlzdCB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSB0
ZXh0KCkgb2YgaXRzIHNlbGVjdGVkIGl0ZW0uCiAgICAgICAgIC8vIFRoaXMgaGFzIHRvIGJlIG92
ZXJyaWRkZW4gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNlbGVjdGVkIGl0ZW0gaGFzIGFuIEFSSUEg
bGFiZWwuCiAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpOwpAQCAtNzM2LDExICs3
MzYsMTEgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkg
Y29uc3QKICAgICAgICAgICAgIGlmICghb3ZlcnJpZGRlbkRlc2NyaXB0aW9uLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBvdmVycmlkZGVuRGVzY3JpcHRpb247CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHRvUmVuZGVyTWVudUxpc3QobV9yZW5kZXJlciktPnRleHQoKTsKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqbV9yZW5kZXJlcikudGV4dCgp
OwogICAgIH0KICAgICAKLSAgICBpZiAobV9yZW5kZXJlci0+aXNMaXN0TWFya2VyKCkpCi0gICAg
ICAgIHJldHVybiB0b1JlbmRlckxpc3RNYXJrZXIoKm1fcmVuZGVyZXIpLnRleHQoKTsKKyAgICBp
ZiAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oKm1fcmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1fcmVuZGVyZXIpLnRleHQoKTsKICAgICAKICAgICBp
ZiAoaXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTc0OCw4ICs3NDgs
OCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25z
dAogICAgIGlmIChpc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiB0ZXh0KCk7CiAgICAg
Ci0gICAgaWYgKG1fcmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKLSAgICAgICAgcmV0
dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmZpbGVUZXh0VmFsdWUo
KTsKKyAgICBpZiAoaXM8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KCptX3JlbmRlcmVyKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9sPigqbV9yZW5kZXJl
cikuZmlsZVRleHRWYWx1ZSgpOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRv
IGltcGxlbWVudCBhIHZhbHVlIGhlcmUgZm9yIG1vcmUgdHlwZXMKICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgYmV0dGVyIG5vdCB0byBhZHZlcnRpc2UgYSB2YWx1ZSBhdCBhbGwgZm9yIHRoZSB0
eXBlcyBmb3Igd2hpY2ggd2UgZG9uJ3QgaW1wbGVtZW50IG9uZTsKQEAgLTEwODYsNyArMTA4Niw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxl
VUlFbGVtZW50KCkgY29uc3QKICAgICAKICAgICAvLyBpZiBpc0ZpZWxkc2V0IGlzIHRydWUsIHRo
ZSByZW5kZXJlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUmVuZGVyRmllbGRzZXQKICAgICBpZiAo
aXNGaWVsZHNldCgpKQotICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZSh0b1JlbmRlckZpZWxkc2V0KG1fcmVuZGVyZXIpLT5maW5kTGVnZW5kKFJlbmRlckZpZWxkc2V0
OjpJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdykpOworICAgICAgICByZXR1cm4gYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShkb3duY2FzdDxSZW5kZXJGaWVsZHNldD4oKm1fcmVuZGVyZXIp
LmZpbmRMZWdlbmQoUmVuZGVyRmllbGRzZXQ6OkluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93KSk7
CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIWlz
PEVsZW1lbnQ+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IDNi
NGE5NzlkZmJmYTFjZDcwZmQwMDI4MTUyZjM1NWY0NjE1NmU0ZTAuLmM2ODE0NDY5ZjI3MzZhZjRj
NmFkODkzOTA4ZGE3YjIwNDQ5OGY3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTg5LDggKzg5LDggQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJl
cnMoKQogICAgICAgICBpZiAocmVuZGVyZXItPmlzQ2hpbGRBbGxvd2VkKCpjaGlsZCwgc3R5bGUp
KSB7CiAgICAgICAgICAgICBhdXRvKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwogICAgICAgICAg
ICAgcmVuZGVyZXItPmFkZENoaWxkKGNoaWxkLmxlYWtQdHIoKSk7Ci0gICAgICAgICAgICBpZiAo
Y2hpbGRQdHItPmlzUXVvdGUoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlclF1b3RlKGNoaWxk
UHRyKS0+YXR0YWNoUXVvdGUoKTsKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJRdW90ZT4oKmNo
aWxkUHRyKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJRdW90ZT4oKmNoaWxkUHRy
KS5hdHRhY2hRdW90ZSgpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBkOTI4MzNiMjc0Yjk5MGMwZDA5NDAwYjBiNWJm
NzFmYjAxNzkyMzRkLi44MjAzNjUxZmJjMDJiMDkzNzFkNGQ4ZTNmOGVlMTQyODZjZDUwMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzMwLDcgKzMz
MCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJlc2V0KCkKICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXJJc0NhbnZh
cykgewogICAgICAgICAgICAgaWYgKG9sZFNpemUgIT0gc2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJIVE1MQ2FudmFzKHJlbmRlcmVyKS0+Y2FudmFzU2l6ZUNoYW5nZWQoKTsKKyAg
ICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJIVE1MQ2FudmFzPigqcmVuZGVyZXIpLmNhbnZh
c1NpemVDaGFuZ2VkKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRl
ckJveCgpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJlbmRlckJveCgpLT5jb250ZW50Q2hhbmdlZChDYW52YXNDaGFuZ2VkKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggODBiYzc1
ODlkNTAxMGNhMmU0ZGNjODYxNWMyOTg5MzM0NDY4N2Q0Zi4uM2E4MTlkYjIxMTBjYmE0NjE0ZWIw
NjMzMjRjZTRlNDQ2MWI0Nzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKQEAgLTIwNywxNyArMjA3LDE3IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3du
IGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20g
Y29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4K
IAogICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0Pihy
ZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZW5kZXJlci0+aXNFbWJlZGRl
ZE9iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVy
KS0+aXNQbHVnaW5VbmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVk
T2JqZWN0KHJlbmRlcmVyKS0+aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChl
dmVudCk7CisgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpKSB7Cisg
ICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5pc1Bs
dWdpblVuYXZhaWxhYmxlKCkpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVtYmVkZGVk
T2JqZWN0PigqcmVuZGVyZXIpLmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQo
ZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRv
UmVuZGVyRW1iZWRkZWRPYmplY3QocmVuZGVyZXIpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYg
ZGlzcGxheVN0YXRlKCkgPCBSZXN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luKHJlbmRlcmVyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAo
aXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikgJiYgZGlzcGxheVN0YXRlKCkg
PCBSZXN0YXJ0aW5nKSB7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbj4oKnJlbmRlcmVyKS5oYW5kbGVFdmVudChldmVudCk7CiAgICAgICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBIVE1MUGx1Z0luRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQo
cmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSBkb3duY2Fz
dDxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcikud2lkZ2V0KCk7CiAgICAgaWYgKCF3aWRnZXQpCiAg
ICAgICAgIHJldHVybjsKICAgICB3aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM3YjdmMjJj
MzVmNmY3ZmFmODhkNDA2YzExM2FhNWNlMzRhNjdlMGUuLjQwZmEwZGY4MDQ2MzNhZWM5ZGVkZjY5
NmMwNTY4NzJmNzE1YmZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcApAQCAtMzM0LDEyICszMzQsMTIgQEAgdm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIAogICAg
IG1fc25hcHNob3RJbWFnZSA9IGltYWdlOwogCi0gICAgaWYgKHJlbmRlcmVyKCktPmlzU25hcHNo
b3R0ZWRQbHVnSW4oKSkgewotICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHJlbmRl
cmVyKCkpLT51cGRhdGVTbmFwc2hvdChpbWFnZSk7CisgICAgaWYgKGlzPFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luPigqcmVuZGVyZXIoKSkpIHsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4+KCpyZW5kZXJlcigpKS51cGRhdGVTbmFwc2hvdChpbWFnZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIoKS0+aXNFbWJlZGRlZE9iamVjdCgp
KQorICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKCkpKQogICAgICAg
ICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKQEAgLTU4Miw3ICs1ODIsNyBAQCBib29sIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihjb25zdCBSZW5k
ZXJFbWJlZGRlZE9iamVjdAogICAgIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVj
a1NuYXBzaG90U3RhdHVzKCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQ
bHVnSW4oKSkgeworICAgIGlmICghaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJl
cigpKSkgewogICAgICAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUGxheWluZykKICAgICAgICAg
ICAgIGNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpOwogICAgICAgICByZXR1cm47CkBA
IC01OTAsNyArNTkwLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBz
aG90U3RhdHVzKCkKICAgICAKICAgICAvLyBJZiB3aWR0aCBhbmQgaGVpZ2h0IHN0eWxlcyB3ZXJl
IHByZXZpb3VzbHkgbm90IHNldCBhbmQgd2UndmUgc25hcHNob3R0ZWQgdGhlIHBsdWdpbiB3ZSBt
YXkgbmVlZCB0byByZXN0YXJ0IHRoZSBwbHVnaW4gc28gdGhhdCBpdHMgc3RhdGUgY2FuIGJlIHVw
ZGF0ZWQgYXBwcm9wcmlhdGVseS4KICAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5n
cygpLnNuYXBzaG90QWxsUGx1Z0lucygpICYmIGRpc3BsYXlTdGF0ZSgpIDw9IERpc3BsYXlpbmdT
bmFwc2hvdCAmJiAhbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkKSB7Ci0gICAgICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luJiByZW5kZXJlciA9IHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
KnRoaXMtPnJlbmRlcmVyKCkpOworICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiYgcmVu
ZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMtPnJlbmRlcmVy
KCkpOwogICAgICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVj
aWZpZWQoKSAmJiAhcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5jcHAKaW5kZXggNDE4ZGQwYjA5NGUzMTMxMWVlZmI1NWI0YjI0YTYyZTE2ZThi
NzgwZi4uZTRjZmE3NzFiODk1NTJlMjdhN2E5Yzk0YmI4ZDliY2YxMTlkMjU0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAtNTUsOCArNTUsOCBAQCBTZWFyY2hJ
bnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogdm9p
ZCBTZWFyY2hJbnB1dFR5cGU6OmFkZFNlYXJjaFJlc3VsdCgpCiB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQoKS5yZW5kZXJlcigp
KQotICAgICAgICB0b1JlbmRlclNlYXJjaEZpZWxkKHJlbmRlcmVyKS0+YWRkU2VhcmNoUmVzdWx0
KCk7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudCgpLnJlbmRlcmVyKCkpCisgICAg
ICAgIGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqcmVuZGVyZXIpLmFkZFNlYXJjaFJlc3Vs
dCgpOwogI2VuZGlmCiB9CiAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFNlYXJjaElucHV0VHlw
ZTo6c2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QKIHZvaWQgU2VhcmNoSW5w
dXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VTdGF0ZSBzdGF0ZSkKIHsK
ICAgICBpZiAobV9jYW5jZWxCdXR0b24pCi0gICAgICAgIHRvUmVuZGVyU2VhcmNoRmllbGQoZWxl
bWVudCgpLnJlbmRlcmVyKCkpLT51cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCk7CisgICAg
ICAgIGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqZWxlbWVudCgpLnJlbmRlcmVyKCkpLnVw
ZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKTsKIAogICAgIC8vIElmIHRoZSBpbmNyZW1lbnRh
bCBhdHRyaWJ1dGUgaXMgc2V0LCB0aGVuIGRpc3BhdGNoIHRoZSBzZWFyY2ggZXZlbnQKICAgICBp
ZiAoc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBi
NDc2MTkwMTNmNDJjOWQ3ZjA3ZWZhOGQzOGE5ZDU1ZmY5YjI4ZmFhLi40ZTIyMTg2MDY2MjVlMzg0
NGNhMGRiNmFkYzhiOWVlZjI1ODY2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTExNywxMyArMTE3
LDEzIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzCiAKIFJlbmRlclRleHRDb250cm9sSW5uZXJC
bG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKEhUTUxEaXZFbGVtZW50Ojpy
ZW5kZXJlcigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2xJbm5lckJs
b2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIoKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJTdHlsZSYpCiB7Ci0gICAgUmVuZGVyVGV4dENvbnRyb2wqIHBhcmVudFJlbmRlcmVy
ID0gdG9SZW5kZXJUZXh0Q29udHJvbChzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCkpOwotICAgIHJl
dHVybiBwYXJlbnRSZW5kZXJlci0+Y3JlYXRlSW5uZXJUZXh0U3R5bGUoJnBhcmVudFJlbmRlcmVy
LT5zdHlsZSgpKTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbCYgcGFyZW50UmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0Q29udHJvbD4oKnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKSk7CisgICAg
cmV0dXJuIHBhcmVudFJlbmRlcmVyLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCZwYXJlbnRSZW5kZXJl
ci5zdHlsZSgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ2
LDExICsxNDYsMTEgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgaW5wdXQtPmZvY3VzKCk7CiAg
ICAgICAgIGlucHV0LT5zZWxlY3QoKTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBSZW5k
ZXJTZWFyY2hGaWVsZCogcmVuZGVyZXIgPSB0b1JlbmRlclNlYXJjaEZpZWxkKGlucHV0LT5yZW5k
ZXJlcigpKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5wb3B1cElzVmlzaWJsZSgpKQotICAgICAg
ICAgICAgcmVuZGVyZXItPmhpZGVQb3B1cCgpOworICAgICAgICBSZW5kZXJTZWFyY2hGaWVsZCYg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTZWFyY2hGaWVsZD4oKmlucHV0LT5yZW5kZXJlcigp
KTsKKyAgICAgICAgaWYgKHJlbmRlcmVyLnBvcHVwSXNWaXNpYmxlKCkpCisgICAgICAgICAgICBy
ZW5kZXJlci5oaWRlUG9wdXAoKTsKICAgICAgICAgZWxzZSBpZiAoaW5wdXQtPm1heFJlc3VsdHMo
KSA+IDApCi0gICAgICAgICAgICByZW5kZXJlci0+c2hvd1BvcHVwKCk7CisgICAgICAgICAgICBy
ZW5kZXJlci5zaG93UG9wdXAoKTsKICNlbmRpZgogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZTI2ZTJiMGIw
Njk2YzBmZjNkOTQ3YjVkZjBmM2UwYWE5NmQ5NjFjYS4uMmQwYzk2OGY5MjE3ZGQ1YmZjN2RlZjQw
ZWJiY2M2NzdhNGZkNDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzU5Nywx
NiArMzU5NywxNiBAQCBib29sIEZyYW1lVmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0
dGVuaW5nKCkgY29uc3QKIAogICAgIC8vIEZyYW1lIGZsYXR0ZW5pbmcgYXBwbGllcyB3aGVuIHRo
ZSBvd25lciBlbGVtZW50IGlzIGVpdGhlciBpbiBhIGZyYW1lc2V0IG9yCiAgICAgLy8gYW4gaWZy
YW1lIHdpdGggZmxhdHRlbmluZyBwYXJhbWV0ZXJzLgotICAgIGlmIChmcmFtZSgpLm93bmVyRWxl
bWVudCgpLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKLSAgICAgICAgUmVuZGVySUZyYW1lKiBp
ZnJhbWVSZW5kZXJlciA9IHRvUmVuZGVySUZyYW1lKGZyYW1lKCkub3duZXJFbGVtZW50KCktPnJl
bmRlcldpZGdldCgpKTsKLSAgICAgICAgaWYgKGlmcmFtZVJlbmRlcmVyLT5mbGF0dGVuRnJhbWUo
KSkKKyAgICBpZiAoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KCpmcmFtZSgpLm93bmVyRWxlbWVudCgp
KSkgeworICAgICAgICBSZW5kZXJJRnJhbWUmIGlmcmFtZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVySUZyYW1lPigqZnJhbWUoKS5vd25lckVsZW1lbnQoKS0+cmVuZGVyV2lkZ2V0KCkpOworICAg
ICAgICBpZiAoaWZyYW1lUmVuZGVyZXIuZmxhdHRlbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZyYW1lKCkub3duZXJFbGVtZW50KCktPmhh
c1RhZ05hbWUoZnJhbWVUYWcpKQorICAgIGlmIChpczxIVE1MRnJhbWVFbGVtZW50PigqZnJhbWUo
KS5vd25lckVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IGExYTY1MjBl
OTdjOTQ4ZmMwYzkzNmYxMGM0NzRiMTUwNTFlNWU0YjMuLjExYTIzZjk2YjI4M2Y4MTY5Y2I1MGFk
YTQ0NDRlYjlmYmZiOWMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmgKQEAgLTgzLDggKzgzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVmYXVsdDsKIH07CiAK
LVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJCdXR0b24sIGlzUmVuZGVyQnV0dG9uKCkp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlckJ1dHRvbiwgaXNSZW5kZXJCdXR0b24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCmluZGV4IDhjMzgxNmM4ZWZmNWJhOWIzYjkyMmNiZTM4
Y2JjNTM3ZTVkZGFmNzMuLmFkZmE4NmJkNGU2ZDUxYWFlZDQ2Y2ZjZGRhNDY2MzJiNTAyNDVkZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApAQCAtNjIsOCArNjIs
NiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb3VudGVyTm9kZTsKIH07CiAKLVJFTkRF
Ul9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJDb3VudGVyLCBpc0NvdW50ZXIoKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyQ291bnRlciwgaXNDb3VudGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuaAppbmRleCAxYzRhYWYwMjE5MmU3YTBlNDUzNGY2YjNhOWU0
N2IxNTNiZDA5MGI5Li5kM2FlYWJlMWIyNGM5MTU0NzE2MjdkOTRkMWE3MjcwNTRlOGY2OGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKQEAg
LTQ1LDggKzQ1LDYgQEAgcHJpdmF0ZToKICAgICBQYXRoIGdldFBhdGgoY29uc3QgTGF5b3V0UG9p
bnQmIG9yaWdpbikgY29uc3Q7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVy
RGV0YWlsc01hcmtlciwgaXNEZXRhaWxzTWFya2VyKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckRldGFpbHNN
YXJrZXIsIGlzRGV0YWlsc01hcmtlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuaAppbmRleCA0NGE4Mzc0M2UxMTUzNGM4ZWJkMjkzZDdhYWExZDY0N2M2ODdlOTAw
Li4xMzg2Y2NlOGE1ZWFmOTlhNGJiY2M0YjU5OWYzZGUyNjM2NzI0M2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaApAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBvdmVycmlkZTsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJGaWVs
ZHNldCwgaXNGaWVsZHNldCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGaWVsZHNldCwgaXNGaWVsZHNldCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKaW5kZXggNGIzY2I4YjE2ZmU0NTBmZTdjNmFhZmY3ZTVjNjg2ZmMxZGJhNTJiNC4u
ZmFmNTQxMTE2YjU0OGU0NDVjYzYzMDgxZmUzMzViNWRlYzE3MjJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0x
NTgsNyArMTU4LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgTGF5b3V0VW5p
dCB0ZXh0WSA9IDA7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWF0Y2ggdGhlIGJ1dHRvbidzIGJh
c2VsaW5lCiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayB3aXRoIHRyYW5zZm9ybXMu
Ci0gICAgICAgIGlmIChSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9SZW5kZXJCdXR0
b24oYnV0dG9uLT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKFJlbmRlckJ1dHRvbiogYnV0dG9u
UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCdXR0b24+KGJ1dHRvbi0+cmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICB0ZXh0WSA9IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGlu
Z1RvcCgpICsgYnV0dG9uUmVuZGVyZXItPmJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2Vs
aW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdGV4dFkgPSBiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0
aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFp
bnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAg
ICAgICAgICBpY29uWCA9IGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoKCkgLSBidXR0b25XaWR0
aCAtIGFmdGVyQnV0dG9uU3BhY2luZyAtIGljb25XaWR0aDsKIAogI2lmIFBMQVRGT1JNKElPUykK
LSAgICAgICAgICAgIGlmIChSZW5kZXJCdXR0b24qIGJ1dHRvblJlbmRlcmVyID0gdG9SZW5kZXJC
dXR0b24oYnV0dG9uLT5yZW5kZXJlcigpKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlckJ1dHRv
biogYnV0dG9uUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCdXR0b24+KGJ1dHRvbi0+cmVuZGVy
ZXIoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRoZSBmaWxlIGljb24gYW5kIGRlY29y
YXRpb25zLgogICAgICAgICAgICAgICAgIEludFJlY3QgaWNvblJlY3QoaWNvblgsIGljb25ZLCBp
Y29uV2lkdGgsIGljb25IZWlnaHQpOwogICAgICAgICAgICAgICAgIFJlbmRlclRoZW1lOjpGaWxl
VXBsb2FkRGVjb3JhdGlvbnMgZGVjb3JhdGlvbnNUeXBlID0gaW5wdXRFbGVtZW50KCkuZmlsZXMo
KS0+bGVuZ3RoKCkgPT0gMSA/IFJlbmRlclRoZW1lOjpTaW5nbGVGaWxlIDogUmVuZGVyVGhlbWU6
Ok11bHRpcGxlRmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IGNlNGFiYWRlYzFhOWZkN2YyYzUzOTFmZWI1Mjc1YTAz
MzkyOWVjOTAuLjY2NDYzNDI1YWY3YmRhMzMxOGVhNjAwNjJkYWU4YzhmNzhhNzk1NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CkBAIC02NCw4ICs2NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhblJlY2VpdmVEcm9wcGVk
RmlsZXM7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wsIGlzRmlsZVVwbG9hZENvbnRyb2woKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wsIGlzRmlsZVVwbG9hZENvbnRyb2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMWYxMzYyMGUyMGY4NWIxNmUzNGM3YzJhNjM3MmZl
YzQxZDQ4Y2VjNS4uMGJmNzE3MTZmMDM5YjY4NGM0YTViMzVlNGZjZmY4ZGNmZmNhZDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTE2MSw4
ICsxNjEsNiBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZp
cnN0TGluZTsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJGbGV4aWJsZUJv
eCwgaXNGbGV4aWJsZUJveCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGbGV4aWJsZUJveCwgaXNGbGV4aWJs
ZUJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKaW5k
ZXggNTI1ZTBlOTYzM2EwZmQ0NDNjMzQ3YWNjYzRiODc1ZjFiN2ZmZjU4ZS4uNjY1NjU3MTNjZjFm
MDdkNmVhOWYxZTg4N2M1MDEwNmQ1YmRiZmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC01Myw4ICs1Myw2IEBAIHByb3RlY3RlZDoKICAgICBS
ZW5kZXJCbG9jayogbV9wbGFjZWhvbGRlcjsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNU
UyhSZW5kZXJGdWxsU2NyZWVuLCBpc1JlbmRlckZ1bGxTY3JlZW4oKSkKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVy
RnVsbFNjcmVlbiwgaXNSZW5kZXJGdWxsU2NyZWVuKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAppbmRleCAxMzU2M2ViNWM5MjVkMzVhYzBkOTM1NTI0MTg3OWM3ZjBlY2Q5YTdj
Li40ZjY0NmI0ZGQ4NjIyZmJjNmZkMmIwNmIzZThkM2RiMzkwNzk1ZjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEzMSw4ICsxMzEsNiBAQCBwcml2YXRlOgogICAg
IE9yZGVySXRlcmF0b3IgbV9vcmRlckl0ZXJhdG9yOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBF
X0NBU1RTKFJlbmRlckdyaWQsIGlzUmVuZGVyR3JpZCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJHcmlkLCBp
c1JlbmRlckdyaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZh
cy5oCmluZGV4IGE3MWVkYWI0NGVkZWI3YTUwYjJlMGU2ZGE0NTQ1ODZlZDY2YWM2NzYuLmQyNWMx
Yzc4NzUwMmU1Y2ZhMmFlOWRiMWFjNzQzNmExYjc4NTRlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaApAQCAtNDksOCArNDksNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRlIHsgY2FudmFz
U2l6ZUNoYW5nZWQoKTsgfQogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckhU
TUxDYW52YXMsIGlzQ2FudmFzKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlckhUTUxDYW52YXMsIGlzQ2FudmFz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKaW5kZXggNjg2YzZiMjVl
ZDdlYTNlOTFkOGQzZDllOWNkMWJmMDdiMGY4MTc2Mi4uNDIwOTY1YmE2NWE2MmQ5ZmRjY2VkZDQ0
NTFlZWYxMDhiOTg1MmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUu
aApAQCAtNjIsOCArNjIsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSb290
UmVuZGVyZXIoKSBjb25zdDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJJ
RnJhbWUsIGlzUmVuZGVySUZyYW1lKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlcklGcmFtZSwgaXNSZW5kZXJJ
RnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggYWI5ZmYwMDJkNmNhNDkxOWU4ZTUzZjM5MWI0ODMzNTMyMTY3ZTY2NS4uNmE3
NzcyNWJmNjAwMWJjYjY3ZmYyNGUzN2I2ZWIzYzlkYjcwNTQ5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE5MTksMTggKzE5MTks
MTggQEAgTGF5b3V0U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRPZmZzZXRJbkNvbXBv
c3RpbmdMYXllcigpIGNvbnN0CiAKIExheW91dFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250
ZW50c0JveCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmlzQm94KCkpCisgICAgaWYg
KCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwogCi0gICAgUmVuZGVyQm94JiByZW5kZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKTsK
KyAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7CiAgICAgTGF5b3V0UmVjdCBjb250ZW50c1JlY3Q7CiAjaWYgRU5BQkxFKFZJREVPKQotICAg
IGlmIChyZW5kZXJCb3guaXNWaWRlbygpKQotICAgICAgICBjb250ZW50c1JlY3QgPSB0b1JlbmRl
clZpZGVvKHJlbmRlckJveCkudmlkZW9Cb3goKTsKKyAgICBpZiAoaXM8UmVuZGVyVmlkZW8+KHJl
bmRlckJveCkpCisgICAgICAgIGNvbnRlbnRzUmVjdCA9IGRvd25jYXN0PFJlbmRlclZpZGVvPihy
ZW5kZXJCb3gpLnZpZGVvQm94KCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgaWYgKHJlbmRlckJv
eC5pc1JlbmRlclJlcGxhY2VkKCkpIHsKLSAgICAgICAgUmVuZGVyUmVwbGFjZWQmIHJlbmRlclJl
cGxhY2VkID0gKnRvUmVuZGVyUmVwbGFjZWQoJnJlbmRlckJveCk7CisgICAgaWYgKGlzPFJlbmRl
clJlcGxhY2VkPihyZW5kZXJCb3gpKSB7CisgICAgICAgIFJlbmRlclJlcGxhY2VkJiByZW5kZXJS
ZXBsYWNlZCA9IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJCb3gpOwogICAgICAgICBj
b250ZW50c1JlY3QgPSByZW5kZXJSZXBsYWNlZC5yZXBsYWNlZENvbnRlbnRSZWN0KHJlbmRlckJv
eC5pbnRyaW5zaWNTaXplKCkpOwogICAgIH0gZWxzZQogICAgICAgICBjb250ZW50c1JlY3QgPSBy
ZW5kZXJCb3guY29udGVudEJveFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhLmgKaW5kZXggY2Y0ZTY1ZGE2MjgxMWNkMzJkYzE4NTQzOTVmMGVkNjVlM2QzYTFmZi4uYzM2
NjgwMDYyMjc1YjFhNDFhMmYyNTk3ZDk2MzQwYzExN2M1MGEyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTU2LDggKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJNZWRp
YSwgaXNNZWRpYSgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNZWRpYSwgaXNNZWRpYSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXggNDIwZWI0OGMzZWI1Y2Y1ZWI1MTlj
OGFlMTY3MWIyNGYwZmY5ZGY2Ni4uMjJlZTFmNWEyNzI2MGYyMzYwYWJjYjA3MWMyMTUxZWI5NDAy
ZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCkBAIC0zOTMs
OSArMzkzLDkgQEAgdm9pZCBSZW5kZXJRdW90ZTo6YXR0YWNoUXVvdGUoKQogICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogcHJlZGVjZXNzb3IgPSBwcmV2aW91c0luUHJlT3JkZXIoKTsgcHJlZGVj
ZXNzb3I7IHByZWRlY2Vzc29yID0gcHJlZGVjZXNzb3ItPnByZXZpb3VzSW5QcmVPcmRlcigpKSB7
CiAgICAgICAgICAgICAvLyBTa2lwIHVuYXR0YWNoZWQgcHJlZGVjZXNzb3JzIHRvIGF2b2lkIGhh
dmluZyBzdGFsZSBtX3ByZXZpb3VzIHBvaW50ZXJzCiAgICAgICAgICAgICAvLyBpZiB0aGUgcHJl
dmlvdXMgbm9kZSBpcyBuZXZlciBhdHRhY2hlZCBhbmQgaXMgdGhlbiBkZXN0cm95ZWQuCi0gICAg
ICAgICAgICBpZiAoIXByZWRlY2Vzc29yLT5pc1F1b3RlKCkgfHwgIXRvUmVuZGVyUXVvdGUocHJl
ZGVjZXNzb3IpLT5tX2lzQXR0YWNoZWQpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclF1b3Rl
PigqcHJlZGVjZXNzb3IpIHx8ICFkb3duY2FzdDxSZW5kZXJRdW90ZT4oKnByZWRlY2Vzc29yKS5t
X2lzQXR0YWNoZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX3By
ZXZpb3VzID0gdG9SZW5kZXJRdW90ZShwcmVkZWNlc3Nvcik7CisgICAgICAgICAgICBtX3ByZXZp
b3VzID0gZG93bmNhc3Q8UmVuZGVyUXVvdGU+KHByZWRlY2Vzc29yKTsKICAgICAgICAgICAgIG1f
bmV4dCA9IG1fcHJldmlvdXMtPm1fbmV4dDsKICAgICAgICAgICAgIG1fcHJldmlvdXMtPm1fbmV4
dCA9IHRoaXM7CiAgICAgICAgICAgICBpZiAobV9uZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUXVvdGUuaAppbmRleCBhYjliOGNhMWI0ZmFkNTg1MDlkMDcwMWM5Y2VhNWU4NDNhNjE5
MjkxLi5kNWZiMWQzNWRiMDJlN2ZhNTVmNWNiYTVlMDIzYmUyNThjZmJiMDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3RleHQ7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVy
UXVvdGUsIGlzUXVvdGUoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyUXVvdGUsIGlzUXVvdGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggYTg1OTM3MjY3YmYwYjcx
YTIxNWI3YjE2YjgwZjM3YTA1NDRjN2RmNC4uMmU3ODI2YzcxN2NhMjZhYzUwZWQyNTY3MzBhY2Jk
YjE1MDM4MmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgK
QEAgLTg5LDggKzg5LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIExheW91dFNpemUgbV9pbnRy
aW5zaWNTaXplOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclJlcGxhY2Vk
LCBpc1JlbmRlclJlcGxhY2VkKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclJlcGxhY2VkLCBpc1JlbmRlclJl
cGxhY2VkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaAppbmRleCAwY2I2NzBiMzIwZTBhOGU0ZmIxMGMzNzZiNjJjNGQ3MzBiMzA1ZDRiLi5jZWE3
N2JiNzRmYWIxMDZlOGRhNDM5NjY1ZjM4ZjY5ZWIxNTY0MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTczLDggKzczLDYgQEAgcHJp
dmF0ZToKICAgICBTY3JvbGxiYXJQYXJ0IG1fcGFydDsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQ
RV9DQVNUUyhSZW5kZXJTY3JvbGxiYXJQYXJ0LCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyU2Nyb2xsYmFyUGFydCwgaXNSZW5kZXJTY3JvbGxiYXJQYXJ0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IDBhMDY2MzMw
YWFkY2I5NjhiNzU4NmQ0NTA2Y2Y5Zjk5ZDgzZTc2M2MuLmY5M2U1ZjUyMjMzZmY2MTQ3ZjU0ODhl
Y2E1NGFjNGYwZDY0MWI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5oCkBAIC05MCw4ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9yZWNlbnRTZWFyY2hlczsKIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5k
ZXJTZWFyY2hGaWVsZCwgaXNUZXh0RmllbGQoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU2VhcmNoRmllbGQs
IGlzVGV4dEZpZWxkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IDA5MmM1MGZiNDUwNGVhMmZhNmJiN2ZkMGY3MTM3YTEy
NGEyY2Q1MDQuLmY5OTMyNzkzMjc2NmEyNjk4MGU0ODM0NjViMjlhOTUwMzc1ZDczMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
CkBAIC02Myw4ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUG90ZW50aWFsTW91c2VB
Y3RpdmF0aW9uOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLCBpc1NuYXBzaG90dGVkUGx1Z0luKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLCBpc1NuYXBzaG90dGVkUGx1Z0luKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKaW5kZXggOTYzYjE4MWIxZWJmM2U5NGEwNmI5ZmVm
YmYzOTdmMjE1NmVkYzdjNy4uYTc2M2Y4M2IwMTc0YTUwNWYzZjk5MzQyNDJjMjg2NzE0ZWMyMTcx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaApA
QCAtNDQsOCArNDQsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0
OwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRhYmxlQ2FwdGlvbiwgaXNU
YWJsZUNhcHRpb24oKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGFibGVDYXB0aW9uLCBpc1RhYmxlQ2FwdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaAppbmRleCA2NDU1YzEwZmMwYjk4NjY3Zjg3ZjY1OGQ3ZDU1YWVjYmZmZWQw
ZDRhLi5kNjJiMDA4MzdmY2I5YjY3YzU1ZThmOTllMmNlMzdkOWIyNTA4NDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
aApAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBs
YXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogfTsKIAot
UkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLCBpc1Rl
eHRBcmVhKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLCBpc1RleHRBcmVh
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgKaW5kZXggNjFjMDdkNmI1ZGM1ZjJlNzIyNjlhNzRkNGJhMDJlMjNkZjQw
MDNkYi4uMDg2OTA5ZDgwMTYxNGM4NmE1OTY0YmMzMDkwZmE2OWVhNTY3ZWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaApAQCAtMTEzLDggKzExMyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dENvbnRyb2xJbm5lckJsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jaywg
aXNUZXh0Q29udHJvbElubmVyQmxvY2soKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLCBpc1RleHRGaWVsZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDJiMmMzZjRhZmZkZWVkYTExYWNkN2NhNmEwNTI3NjEwYThiN2MwOGQu
LjZmZDU2NmE4OTU5NTJiZDE3ZWQ3MmQ1YzhlNDk3NmY5YjlhNTkxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTE4NjMsNyArMTg2Myw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgSFRNTFBs
dWdJbkVsZW1lbnQmIHBsdWdJbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVudD4o
KnBhcmVudCk7Ci0gICAgaWYgKCFwbHVnSW5FbGVtZW50LmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkp
CisgICAgaWYgKCFpczxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVnSW5FbGVtZW50KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5J
bWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVnSW5FbGVt
ZW50KTsKQEAgLTE4NzIsMjcgKzE4NzIsMjcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
bmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAg
ICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luKiBwbHVnSW5SZW5kZXJlciA9IHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
cGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpOwotICAgIEZsb2F0UG9pbnQgc25hcHNob3RB
YnNQb3MgPSBwbHVnSW5SZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgc25hcHNob3RB
YnNQb3MubW92ZShwbHVnSW5SZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcGx1Z0luUmVuZGVyZXIt
PnBhZGRpbmdMZWZ0KCksIHBsdWdJblJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHBsdWdJblJlbmRl
cmVyLT5wYWRkaW5nVG9wKCkpOworICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luJiBwbHVnSW5S
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqcGx1Z0luSW1hZ2VF
bGVtZW50LnJlbmRlcmVyKCkpOworICAgIEZsb2F0UG9pbnQgc25hcHNob3RBYnNQb3MgPSBwbHVn
SW5SZW5kZXJlci5sb2NhbFRvQWJzb2x1dGUoKTsKKyAgICBzbmFwc2hvdEFic1Bvcy5tb3ZlKHBs
dWdJblJlbmRlcmVyLmJvcmRlckxlZnQoKSArIHBsdWdJblJlbmRlcmVyLnBhZGRpbmdMZWZ0KCks
IHBsdWdJblJlbmRlcmVyLmJvcmRlclRvcCgpICsgcGx1Z0luUmVuZGVyZXIucGFkZGluZ1RvcCgp
KTsKIAogICAgIC8vIFdlIGNvdWxkIGRyYXcgdGhlIHNuYXBzaG90IHdpdGggdGhhdCBjb29yZGlu
YXRlcywgYnV0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlCiAgICAgLy8gaXNuJ3QgYSBjb21w
b3NpdGVkIGxheWVyIGJldHdlZW4gdXMgYW5kIHRoZSBwbHVnSW5SZW5kZXJlci4KLSAgICBmb3Ig
KGF1dG8qIHJlbmRlckJveCA9ICZkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsgcmVuZGVy
Qm94ICE9IHBsdWdJblJlbmRlcmVyOyByZW5kZXJCb3ggPSByZW5kZXJCb3gtPnBhcmVudEJveCgp
KSB7CisgICAgZm9yIChhdXRvKiByZW5kZXJCb3ggPSAmZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcik7IHJlbmRlckJveCAhPSAmcGx1Z0luUmVuZGVyZXI7IHJlbmRlckJveCA9IHJlbmRlckJv
eC0+cGFyZW50Qm94KCkpIHsKICAgICAgICAgaWYgKHJlbmRlckJveC0+aGFzTGF5ZXIoKSAmJiBy
ZW5kZXJCb3gtPmxheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkg
ewogICAgICAgICAgICAgc25hcHNob3RBYnNQb3MgPSAtcmVuZGVyQm94LT5sb2NhdGlvbigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBMYXlvdXRTaXplIHBs
dWdpblNpemUocGx1Z0luUmVuZGVyZXItPmNvbnRlbnRXaWR0aCgpLCBwbHVnSW5SZW5kZXJlci0+
Y29udGVudEhlaWdodCgpKTsKKyAgICBMYXlvdXRTaXplIHBsdWdpblNpemUocGx1Z0luUmVuZGVy
ZXIuY29udGVudFdpZHRoKCksIHBsdWdJblJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKSk7CiAgICAg
TGF5b3V0UmVjdCBwbHVnaW5SZWN0KHNuYXBzaG90QWJzUG9zLCBwbHVnaW5TaXplKTsKICAgICBJ
bnRSZWN0IGFsaWduZWRQbHVnaW5SZWN0ID0gc25hcHBlZEludFJlY3QocGx1Z2luUmVjdCk7CiAK
ICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5S
ZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC0+
ZHJhd0ltYWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci0+c3R5bGUoKS5jb2xvclNwYWNlKCks
IGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LT5k
cmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBh
bGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
aW5kZXggOGY2MzU4NGQ5YmVkYTYxZjQyNDdkYmI0ZDZjMzc2OGFjZmIwMTU5OC4uZGQ5MGM1YmU5
OWU4ZGNkZTRmN2MyZWNkNWU1YTZjYTBiOTQ4ZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMjI2LDE1ICsyMjYsMTUgQEAgdm9pZCBS
ZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLAogCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBpbiBvcmRlciB0byBl
bnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGxheW91dCB0ZXN0IHJlc3VsdHMuCiAg
ICAgaWYgKGFkanVzdEZvclRhYmxlQ2VsbHMpCi0gICAgICAgIHIubW92ZSgwLCAtdG9SZW5kZXJU
YWJsZUNlbGwoby5jb250YWluaW5nQmxvY2soKSktPmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7
CisgICAgICAgIHIubW92ZSgwLCAtZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqby5jb250YWlu
aW5nQmxvY2soKSkuaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpKTsKIAogICAgIC8vIEZJWE1FOiBD
b252ZXJ0IGxheW91dCB0ZXN0IHJlc3VsdHMgdG8gcmVwb3J0IHN1Yi1waXhlbCB2YWx1ZXMsIGlu
IHRoZSBtZWFudGltZSB1c2luZyBlbmNsb3NpbmdJbnRSZWN0CiAgICAgLy8gZm9yIGNvbnNpc3Rl
bmN5IHdpdGggb2xkIHJlc3VsdHMuCiAgICAgdHMgPDwgIiAiIDw8IGVuY2xvc2luZ0ludFJlY3Qo
cik7CiAKLSAgICBpZiAoIW8uaXNUZXh0KCkpIHsKLSAgICAgICAgaWYgKG8uaXNGaWxlVXBsb2Fk
Q29udHJvbCgpKQotICAgICAgICAgICAgdHMgPDwgIiAiIDw8IHF1b3RlQW5kRXNjYXBlTm9uUHJp
bnRhYmxlcyh0b1JlbmRlckZpbGVVcGxvYWRDb250cm9sKCZvKS0+ZmlsZVRleHRWYWx1ZSgpKTsK
KyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG8pKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbD4obykpCisgICAgICAgICAgICB0cyA8PCAiICIgPDwgcXVvdGVBbmRFc2Nh
cGVOb25QcmludGFibGVzKGRvd25jYXN0PFJlbmRlckZpbGVVcGxvYWRDb250cm9sPihvKS5maWxl
VGV4dFZhbHVlKCkpOwogCiAgICAgICAgIGlmIChvLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBD
b2xvciBjb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCA3NGZj
YzkyYmJlY2VjMjI1MmE3NmQyNmVmNjY3NmYxOTE2Yzg4YzczLi5mN2VjZmNhNDVhMGY4MjNiYmEy
OGQzYmYyNmVhZjEzZjlmODRlOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAKQEAgLTI3NCwxNCArMjc0LDcgQEAgYm9vbCBSZW5kZXJWaWRlbzo6cmVxdWlyZXNJ
bW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0CiBzdGF0aWMgY29uc3QgUmVuZGVyQmxvY2sqIHJl
bmRlcmVyUGxhY2Vob2xkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHBhcmVudCA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbFNj
cmVlbiA9IHBhcmVudC0+aXNSZW5kZXJGdWxsU2NyZWVuKCkgPyB0b1JlbmRlckZ1bGxTY3JlZW4o
cGFyZW50KSA6IDA7Ci0gICAgaWYgKCFmdWxsU2NyZWVuKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4gZnVsbFNjcmVlbi0+cGxhY2Vob2xkZXIoKTsKKyAgICByZXR1cm4gaXM8
UmVuZGVyRnVsbFNjcmVlbj4ocGFyZW50KSA/IGRvd25jYXN0PFJlbmRlckZ1bGxTY3JlZW4+KCpw
YXJlbnQpLnBsYWNlaG9sZGVyKCkgOiBudWxscHRyOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclZp
ZGVvOjpvZmZzZXRMZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaAppbmRleCAwYzZl
YTE4ZGE5NTFjY2JjODgxNmIwNDc0NWU0MDYyOTI0NjdlYzJmLi5lYWY4Njk4NWFjMDE4MDJmYzNi
YzFiZDlkNmY3NzY3YWJlMWYwNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCkBAIC00NzIs
OSArNDcyLDkgQEAgaW5saW5lIHZvaWQgbmV4dENoYXJhY3RlcihVQ2hhciYgY3VycmVudENoYXJh
Y3RlciwgVUNoYXImIGxhc3RDaGFyYWN0ZXIsIFVDaGFyJgogLy8gc28gd2UgZG9uJ3QgbmVlZCB0
aGlzIGhhY2suCiBpbmxpbmUgdm9pZCB1cGRhdGVDb3VudGVySWZOZWVkZWQoUmVuZGVyVGV4dCYg
cmVuZGVyVGV4dCkKIHsKLSAgICBpZiAoIXJlbmRlclRleHQucHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KCkgfHwgIXJlbmRlclRleHQuaXNDb3VudGVyKCkpCisgICAgaWYgKCFyZW5kZXJUZXh0
LnByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpIHx8ICFpczxSZW5kZXJDb3VudGVyPihyZW5k
ZXJUZXh0KSkKICAgICAgICAgcmV0dXJuOwotICAgIHRvUmVuZGVyQ291bnRlcihyZW5kZXJUZXh0
KS51cGRhdGVDb3VudGVyKCk7CisgICAgZG93bmNhc3Q8UmVuZGVyQ291bnRlcj4ocmVuZGVyVGV4
dCkudXBkYXRlQ291bnRlcigpOwogfQogCiBpbmxpbmUgZmxvYXQgbWVhc3VyZUh5cGhlbldpZHRo
KFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25zdCBGb250JiBmb250LCBIYXNoU2V0PGNvbnN0IFNp
bXBsZUZvbnREYXRhKj4qIGZhbGxiYWNrRm9udHMgPSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggOTViMGQ3MDAzYWRhZjhl
ZDE0ZDRmMWUzNWZmZWU1YWE4MWI1ZmJjMC4uNDI5NThkNGVjMmFiYmM5OWRhNTBkODI0OGEwODA2
ZGNlZjMzMDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oCkBAIC04MCw4ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25l
ZWRzQm91bmRhcmllc1VwZGF0ZSA6IDE7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMo
UmVuZGVyU1ZHQ29udGFpbmVyLCBpc1NWR0NvbnRhaW5lcigpKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdD
b250YWluZXIsIGlzU1ZHQ29udGFpbmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCA4MDIzNjQ1NzE3MzRmZmJl
NzhjZWM2NDBmNDcyOWQ0ODIzZDYzNzk5Li5hOWFiMjNkMDZlYzJiZWFhNGZhMmZmMjE1YmQyMTc1
YzJlM2Y2NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0dyYWRpZW50U3RvcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wLmgKQEAgLTYwLDggKzYwLDYgQEAgcHJpdmF0ZToKICAgICBTVkdH
cmFkaWVudEVsZW1lbnQqIGdyYWRpZW50RWxlbWVudCgpOwogfTsKIAotUkVOREVSX09CSkVDVF9U
WVBFX0NBU1RTKFJlbmRlclNWR0dyYWRpZW50U3RvcCwgaXNTVkdHcmFkaWVudFN0b3AoKSkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9P
QkpFQ1QoUmVuZGVyU1ZHR3JhZGllbnRTdG9wLCBpc1NWR0dyYWRpZW50U3RvcCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmlu
ZGV4IDFkYTY2OTUyN2Y2MjAwMThmMTQ1NDUyZjE1ZGM5MWViYWIxZGJlN2UuLmI0NDU5NWQyZDE2
YWUwZTliYzJmODgwNzIwYjZhMGM4NmI5YmY5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTgwLDggKzgwLDYgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFzU1ZHU2hhZG93OwogfTsKIAotUkVOREVSX09CSkVDVF9U
WVBFX0NBU1RTKFJlbmRlclNWR01vZGVsT2JqZWN0LCBpc1JlbmRlclNWR01vZGVsT2JqZWN0KCkp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlclNWR01vZGVsT2JqZWN0LCBpc1JlbmRlclNWR01vZGVsT2JqZWN0KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IDg4
N2RhYWI3NjNhMDYxZWI1NDg0ZmYwMDFjZDg2MDBmZDMxMTRjZTMuLjQ0ZmQxNzI2NzVkYWUxZGJh
MTJmNzBmN2VhYmU1NzFiMjNkZjkzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5oCkBAIC01NSw4ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PEZsb2F0UG9pbnQ+IG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnM7CiB9OwogCi1SRU5ERVJf
T0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHUGF0aCwgaXNTVkdQYXRoKCkpCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJl
bmRlclNWR1BhdGgsIGlzU1ZHUGF0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGNlYjQ2Nzg0MGJiYTc3
NmFiZDIyNTVkOWRlZThiMmY2Mzc5NGIwNGQuLmU4NWM3OTQ0MDFkMDllNDg3MGNiMTJhMTY1YmQ3
YzZhMWU1NzQ5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTk3LDggKzk3LDYgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJEYXRhPj4gbV9m
aWx0ZXI7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIsIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIsIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5jcHAKaW5kZXggYWVkNDlhZjMxOWMyYmIyODA2YjhlOWUxMTJjNzkzMWMyY2MwNmVlNS4uOGQw
OTQxN2VmN2Y0MDU0ZDQ2MjMxOGVjZmI1YTYyZjU4NGQ2OWZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKIAorI2luY2x1
ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0ZFRmxvb2RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCkBAIC00OCwyMyArNTEsMjIg
QEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6c3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnMKIHsKICAgICBSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXI6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIAotICAgIFJlbmRlck9iamVjdCog
ZmlsdGVyID0gcGFyZW50KCk7CisgICAgYXV0byogZmlsdGVyID0gcGFyZW50KCk7CiAgICAgaWYg
KCFmaWx0ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZmlsdGVyLT5pc1NWR1Jlc291
cmNlRmlsdGVyKCkpOwogCiAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwgfHwg
IW9sZFN0eWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYg
bmV3U3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7Ci0gICAgaWYgKGZpbHRlclByaW1pdGl2ZUVs
ZW1lbnQoKS5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZsb29kVGFnKSkgeworICAgIGlmIChpczxT
VkdGRUZsb29kRWxlbWVudD4oZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpKSkgewogICAgICAgICBp
ZiAobmV3U3R5bGUuZmxvb2RDb2xvcigpICE9IG9sZFN0eWxlLT5zdmdTdHlsZSgpLmZsb29kQ29s
b3IoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoZmlsdGVyKS0+cHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6Zmxvb2RfY29sb3JBdHRyKTsK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5w
cmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9jb2xvckF0dHIp
OwogICAgICAgICBpZiAobmV3U3R5bGUuZmxvb2RPcGFjaXR5KCkgIT0gb2xkU3R5bGUtPnN2Z1N0
eWxlKCkuZmxvb2RPcGFjaXR5KCkpCi0gICAgICAgICAgICB0b1JlbmRlclNWR1Jlc291cmNlRmls
dGVyKGZpbHRlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgU1ZHTmFtZXM6OmZs
b29kX29wYWNpdHlBdHRyKTsKLSAgICB9IGVsc2UgaWYgKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQo
KS5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZykgfHwgZmlsdGVyUHJp
bWl0aXZlRWxlbWVudCgpLmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1Rh
ZykpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmls
dGVyKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9vcGFj
aXR5QXR0cik7CisgICAgfSBlbHNlIGlmIChpczxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+
KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkgfHwgaXM8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudD4oZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpKSkgewogICAgICAgICBpZiAobmV3U3R5bGUu
bGlnaHRpbmdDb2xvcigpICE9IG9sZFN0eWxlLT5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSkK
LSAgICAgICAgICAgIHRvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoZmlsdGVyKS0+cHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKTsKKyAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5wcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0UGF0aC5oCmluZGV4IDgwMzI4MGFmM2JkZTFmNDdjY2UxM2E4NGNkOWMyOTJlZTEwM2I0
ZGEuLjcwYTVmZDc4MmU1ZWQ5OGY2YjcxYzQ4NzlmMWVkMTlhM2FkNTdlNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKQEAgLTQ1LDgg
KzQ1LDYgQEAgcHJpdmF0ZToKICAgICBQYXRoIG1fbGF5b3V0UGF0aDsKIH07CiAKLVJFTkRFUl9P
QkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJTVkdUZXh0UGF0aCwgaXNTVkdUZXh0UGF0aCgpKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09C
SkVDVChSZW5kZXJTVkdUZXh0UGF0aCwgaXNTVkdUZXh0UGF0aCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaAppbmRleCBlMWQ5MDA3ZDc4MmJmYzg1YWJjZGJjZjgxYjcxNGU2NDMwMWEzM2Y0
Li42N2QwYTU2N2JkMjRlOWI5YzE5YTNjMDhjM2EzNjc4YmYxODgwMjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaApAQCAtNDgsNiArNDgsOCBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6
ZSBtX2xhc3RUcmFuc2xhdGlvbjsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIsIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpKQogCiAjZW5kaWYgLy8g
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXgg
NTIxMjQ0YmVkMWRiMjY4YTgxMDNlYzFkYWQxNzkyMGQ5NzVlMWM2YS4uY2M1MjQ4NjEyZjgxMmU2
YjllNjk1YmQzOWMxYTFmNmNjYzM5MWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAtNjcsOCAr
NjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7CiB9
OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIs
IGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIsIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IGYzOGQyOTY4ZWY3ODgwN2Qz
MjdjYTM3MzJhYjZmMTMxYzg4ZDc1YzguLjNjNDgzYTM4NGQ2MDFjNGM5NDU1YmY2YTQwYzFjNjA1
ZmU1OWJmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcApAQCAtMzAsMTIgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVuZGVyR2VvbWV0
cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIgogI2luY2x1ZGUg
IlNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0NhY2hlLmgiCkBAIC00Nyw4
ICs0OSw4IEBAIEZsb2F0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEZvclJlbmRl
cmVySW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHCiB7CiAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBSZW5kZXJTVkdCbG9jay4KIAotICAgIGlmIChyZW5kZXJlci5pc1NWR1NoYXBl
KCkgfHwgcmVuZGVyZXIuaXNTVkdJbWFnZSgpIHx8IHJlbmRlcmVyLmlzU1ZHQ29udGFpbmVyKCkp
Ci0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR01vZGVsT2JqZWN0KHJlbmRlcmVyKS5yZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpOworICAgIGlmIChpczxS
ZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5yZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpOwogCiAgICAgcmV0dXJuIHJlbmRlcmVyLnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiB9CkBAIC0xMjUsMTMgKzEyNywxMyBAQCBib29sIFNW
R1JlbmRlclN1cHBvcnQ6OmNoZWNrRm9yU1ZHUmVwYWludER1cmluZ0xheW91dChjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZQogICAgIC8vIFdoZW4gYSBwYXJlbnQgY29udGFpbmVyIGlzIHRyYW5z
Zm9ybWVkIGluIFNWRywgYWxsIGNoaWxkcmVuIHdpbGwgYmUgcGFpbnRlZCBhdXRvbWF0aWNhbGx5
CiAgICAgLy8gc28gd2UgYXJlIGFibGUgdG8gc2tpcCByZWR1bmRhbnQgcmVwYWludCBjaGVja3Mu
CiAgICAgYXV0byBwYXJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsKLSAgICByZXR1cm4gIShwYXJl
bnQgJiYgcGFyZW50LT5pc1NWR0NvbnRhaW5lcigpICYmIHRvUmVuZGVyU1ZHQ29udGFpbmVyKHBh
cmVudCktPmRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpKTsKKyAgICByZXR1cm4gIShpczxSZW5k
ZXJTVkdDb250YWluZXI+KHBhcmVudCkgJiYgZG93bmNhc3Q8UmVuZGVyU1ZHQ29udGFpbmVyPigq
cGFyZW50KS5kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKSk7CiB9CiAKIC8vIFVwZGF0ZSBhIGJv
dW5kaW5nIGJveCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2YWxpZGl0eSBvZiB0aGUgb3RoZXIg
Ym91bmRpbmcgYm94Lgogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZU9iamVjdEJvdW5kaW5nQm94
KEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGJvb2wmIG9iamVjdEJvdW5kaW5nQm94VmFs
aWQsIFJlbmRlck9iamVjdCogb3RoZXIsIEZsb2F0UmVjdCBvdGhlckJvdW5kaW5nQm94KQogewot
ICAgIGJvb2wgb3RoZXJWYWxpZCA9IG90aGVyLT5pc1NWR0NvbnRhaW5lcigpID8gdG9SZW5kZXJT
VkdDb250YWluZXIob3RoZXIpLT5pc09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSA6IHRydWU7Cisg
ICAgYm9vbCBvdGhlclZhbGlkID0gaXM8UmVuZGVyU1ZHQ29udGFpbmVyPigqb3RoZXIpID8gZG93
bmNhc3Q8UmVuZGVyU1ZHQ29udGFpbmVyPigqb3RoZXIpLmlzT2JqZWN0Qm91bmRpbmdCb3hWYWxp
ZCgpIDogdHJ1ZTsKICAgICBpZiAoIW90aGVyVmFsaWQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjAwLDI0ICsyMDIsMjMgQEAgc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVSZXNvdXJjZXNP
ZkNoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogc3RhdGljIGlubGluZSBib29sIGxh
eW91dFNpemVPZk5lYXJlc3RWaWV3cG9ydENoYW5nZWQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIpCiB7CiAgICAgY29uc3QgUmVuZGVyRWxlbWVudCogc3RhcnQgPSAmcmVuZGVyZXI7Ci0g
ICAgd2hpbGUgKHN0YXJ0ICYmICFzdGFydC0+aXNTVkdSb290KCkgJiYgIXN0YXJ0LT5pc1NWR1Zp
ZXdwb3J0Q29udGFpbmVyKCkpCisgICAgd2hpbGUgKHN0YXJ0ICYmICFpczxSZW5kZXJTVkdSb290
Pigqc3RhcnQpICYmICFpczxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKnN0YXJ0KSkKICAg
ICAgICAgc3RhcnQgPSBzdGFydC0+cGFyZW50KCk7CiAKICAgICBBU1NFUlQoc3RhcnQpOwotICAg
IEFTU0VSVChzdGFydC0+aXNTVkdSb290KCkgfHwgc3RhcnQtPmlzU1ZHVmlld3BvcnRDb250YWlu
ZXIoKSk7Ci0gICAgaWYgKHN0YXJ0LT5pc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkpCi0gICAgICAg
IHJldHVybiB0b1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKHN0YXJ0KS0+aXNMYXlvdXRTaXpl
Q2hhbmdlZCgpOworICAgIGlmIChpczxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKnN0YXJ0
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyPigq
c3RhcnQpLmlzTGF5b3V0U2l6ZUNoYW5nZWQoKTsKIAotICAgIHJldHVybiB0b1JlbmRlclNWR1Jv
b3Qoc3RhcnQpLT5pc0xheW91dFNpemVDaGFuZ2VkKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJl
bmRlclNWR1Jvb3Q+KCpzdGFydCkuaXNMYXlvdXRTaXplQ2hhbmdlZCgpOwogfQogCiBib29sIFNW
R1JlbmRlclN1cHBvcnQ6OnRyYW5zZm9ybVRvUm9vdENoYW5nZWQoUmVuZGVyRWxlbWVudCogYW5j
ZXN0b3IpCiB7Ci0gICAgd2hpbGUgKGFuY2VzdG9yICYmICFhbmNlc3Rvci0+aXNTVkdSb290KCkp
IHsKLSAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiB0b1JlbmRlclNWR0NvbnRhaW5lcihhbmNlc3RvciktPmRpZFRy
YW5zZm9ybVRvUm9vdFVwZGF0ZSgpOwotICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU1ZHVmlld3Bv
cnRDb250YWluZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB0b1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyKGFuY2VzdG9yKS0+ZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCk7CisgICAgd2hpbGUg
KGFuY2VzdG9yICYmICFpczxSZW5kZXJTVkdSb290PigqYW5jZXN0b3IpKSB7CisgICAgICAgIGlm
IChpczxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqYW5jZXN0b3IpKQorICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCph
bmNlc3RvcikuZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKCk7CisgICAgICAgIGlmIChpczxSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4oKmFuY2VzdG9yKS5kaWRUcmFuc2Zv
cm1Ub1Jvb3RVcGRhdGUoKTsKICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCk7
CiAgICAgfQogCkBAIC0zMDYsMTEgKzMwNywxMSBAQCBib29sIFNWR1JlbmRlclN1cHBvcnQ6OnJl
bmRlcmVySGFzU1ZHU2hhZG93KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAg
Ly8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBSZW5kZXJTVkdCbG9jay4KIAotICAgIGlmIChyZW5k
ZXJlci5pc1NWR1NoYXBlKCkgfHwgcmVuZGVyZXIuaXNTVkdJbWFnZSgpIHx8IHJlbmRlcmVyLmlz
U1ZHQ29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR01vZGVsT2JqZWN0KHJl
bmRlcmVyKS5oYXNTVkdTaGFkb3coKTsKKyAgICBpZiAoaXM8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+
KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR01vZGVsT2JqZWN0
PihyZW5kZXJlcikuaGFzU1ZHU2hhZG93KCk7CiAKLSAgICBpZiAocmVuZGVyZXIuaXNTVkdSb290
KCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclNWR1Jvb3QocmVuZGVyZXIpLmhhc1NWR1NoYWRv
dygpOworICAgIGlmIChpczxSZW5kZXJTVkdSb290PihyZW5kZXJlcikpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJTVkdSb290PihyZW5kZXJlcikuaGFzU1ZHU2hhZG93KCk7CiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zMTksMTMgKzMyMCwxMyBAQCB2b2lkIFNWR1JlbmRlclN1
cHBvcnQ6OnNldFJlbmRlcmVySGFzU1ZHU2hhZG93KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGJv
b2wgaGFzUwogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgUmVuZGVyU1ZHQmxvY2su
CiAKLSAgICBpZiAocmVuZGVyZXIuaXNTVkdTaGFwZSgpIHx8IHJlbmRlcmVyLmlzU1ZHSW1hZ2Uo
KSB8fCByZW5kZXJlci5pc1NWR0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIHRvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QocmVuZGVyZXIpLnNldEhhc1NWR1NoYWRvdyhoYXNTaGFkb3cpOworICAgIGlmIChp
czxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpKSB7CisgICAgICAgIGRvd25jYXN0PFJl
bmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikuc2V0SGFzU1ZHU2hhZG93KGhhc1NoYWRvdyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIuaXNTVkdSb290KCkp
Ci0gICAgICAgIHRvUmVuZGVyU1ZHUm9vdChyZW5kZXJlcikuc2V0SGFzU1ZHU2hhZG93KGhhc1No
YWRvdyk7CisgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKSkKKyAgICAgICAgZG93
bmNhc3Q8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpLnNldEhhc1NWR1NoYWRvdyhoYXNTaGFkb3cp
OwogfQogCiB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNo
YWRvd3MoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZsb2F0UmVjdCYgcmVwYWludFJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
RW5naW5lLmNwcAppbmRleCA2OGY0MGY0ZWUxNzIyZjkxMDg4NjI5MmY2YTAyMzQ2NGFmMWNmZmE3
Li40MDJkYjQ2NzdmY2U1NDk2ZDg5Y2FlZTY2YzBiZDAwMDgyOWZjMzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKQEAg
LTE2NSwxMiArMTY1LDEyIEBAIHZvaWQgU1ZHVGV4dExheW91dEVuZ2luZTo6YmVnaW5UZXh0UGF0
aExheW91dChSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHVGV4dExheW91CiAgICAgQVNTRVJUKG9i
amVjdCk7CiAKICAgICBtX2luUGF0aExheW91dCA9IHRydWU7Ci0gICAgUmVuZGVyU1ZHVGV4dFBh
dGgqIHRleHRQYXRoID0gdG9SZW5kZXJTVkdUZXh0UGF0aChvYmplY3QpOworICAgIFJlbmRlclNW
R1RleHRQYXRoJiB0ZXh0UGF0aCA9IGRvd25jYXN0PFJlbmRlclNWR1RleHRQYXRoPigqb2JqZWN0
KTsKIAotICAgIG1fdGV4dFBhdGggPSB0ZXh0UGF0aC0+bGF5b3V0UGF0aCgpOworICAgIG1fdGV4
dFBhdGggPSB0ZXh0UGF0aC5sYXlvdXRQYXRoKCk7CiAgICAgaWYgKG1fdGV4dFBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0UGF0aFN0YXJ0T2Zmc2V0ID0gdGV4dFBh
dGgtPnN0YXJ0T2Zmc2V0KCk7CisgICAgbV90ZXh0UGF0aFN0YXJ0T2Zmc2V0ID0gdGV4dFBhdGgu
c3RhcnRPZmZzZXQoKTsKICAgICBtX3RleHRQYXRoTGVuZ3RoID0gbV90ZXh0UGF0aC5sZW5ndGgo
KTsKICAgICBpZiAobV90ZXh0UGF0aFN0YXJ0T2Zmc2V0ID4gMCAmJiBtX3RleHRQYXRoU3RhcnRP
ZmZzZXQgPD0gMSkKICAgICAgICAgbV90ZXh0UGF0aFN0YXJ0T2Zmc2V0ICo9IG1fdGV4dFBhdGhM
ZW5ndGg7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0RW5naW5lOjpiZWdp
blRleHRQYXRoTGF5b3V0KFJlbmRlck9iamVjdCogb2JqZWN0LCBTVkdUZXh0TGF5b3UKICAgICBT
VkdMZW5ndGhBZGp1c3RUeXBlIGxlbmd0aEFkanVzdCA9IFNWR0xlbmd0aEFkanVzdFVua25vd247
CiAgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGggPSAwOwogCi0gICAgaWYgKFNWR1RleHRDb250
ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpl
bGVtZW50RnJvbVJlbmRlcmVyKHRleHRQYXRoKSkgeworICAgIGlmIChTVkdUZXh0Q29udGVudEVs
ZW1lbnQqIHRleHRDb250ZW50RWxlbWVudCA9IFNWR1RleHRDb250ZW50RWxlbWVudDo6ZWxlbWVu
dEZyb21SZW5kZXJlcigmdGV4dFBhdGgpKSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCh0ZXh0Q29udGVudEVsZW1lbnQpOwogICAgICAgICBsZW5ndGhBZGp1c3QgPSB0
ZXh0Q29udGVudEVsZW1lbnQtPmxlbmd0aEFkanVzdCgpOwogICAgICAgICBkZXNpcmVkVGV4dExl
bmd0aCA9IHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0aCgpLnZhbHVlKGxl
bmd0aENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggMDU1
ZmUwMzcxOWNkN2FiODE1YTk2MzhjNmZkYzEzNDRlZjY2NmRkMC4uNmIzMGE2NTQ0MTcwMDI2NzQ2
ZDQ4MzU0Nzk1NzQ4N2E2ZWFkZTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogICAgIFNWR0VsZW1lbnRJ
bnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CiAKLSAg
ICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHUGF0aCh0aGlzLT5yZW5kZXJl
cigpKTsKKyAgICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Bh
dGg+KHRoaXMtPnJlbmRlcmVyKCkpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpk
QXR0cikgewogICAgICAgICBpZiAobV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSAmJiAh
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhpcywgZFByb3BlcnR5SW5mbygpKS0+
aXNBbmltYXRpbmcoKSkgewpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OnBhdGhTZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlLCBMaXN0TW9kaWZpY2F0aW9u
IGxpCiAKICAgICBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwogICAgIAotICAgIFJlbmRlclNW
R1BhdGgqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdQYXRoKHRoaXMtPnJlbmRlcmVyKCkpOworICAg
IFJlbmRlclNWR1BhdGgqIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+
cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
OTQsNyArMzk0LDcgQEAgRmxvYXRSZWN0IFNWR1BhdGhFbGVtZW50OjpnZXRCQm94KFN0eWxlVXBk
YXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGVTdHJhdGVneSkKICAgICBpZiAoc3R5bGVVcGRhdGVTdHJh
dGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVy
ZXIgPSB0b1JlbmRlclNWR1BhdGgodGhpcy0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyU1ZHUGF0
aCogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKTsK
IAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNob3VsZCBzdXBwb3J0IGdldEJCb3ggZm9y
IGRldGFjaGVkIGVsZW1lbnRzLgogICAgIGlmICghcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKaW5kZXggZjQxYTM0NGM1NzI2Zjc4MWQzMWY2NTFhOWE2MjgyMjFhM2Mz
MjFiNy4uNzEzZGI4NzVkZjNhNmQ3MWRhNDA0YTJkMzFjNjRiOGFiZWNmYmZlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNTcyLDEyICs1NzIsMTIgQEAgRmxvYXRTaXpl
IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydFNpemUoKSBjb25zdAogICAgIGlmICghcmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCi0gICAgaWYgKHJlbmRlcmVy
KCktPmlzU1ZHUm9vdCgpKSB7Ci0gICAgICAgIExheW91dFJlY3QgY29udGVudEJveFJlY3QgPSB0
b1JlbmRlclNWR1Jvb3QocmVuZGVyZXIoKSktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgaWYgKGlz
PFJlbmRlclNWR1Jvb3Q+KCpyZW5kZXJlcigpKSkgeworICAgICAgICBMYXlvdXRSZWN0IGNvbnRl
bnRCb3hSZWN0ID0gZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oKnJlbmRlcmVyKCkpLmNvbnRlbnRC
b3hSZWN0KCk7CiAgICAgICAgIHJldHVybiBGbG9hdFNpemUoY29udGVudEJveFJlY3Qud2lkdGgo
KSAvIHJlbmRlcmVyKCktPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250ZW50Qm94UmVjdC5o
ZWlnaHQoKSAvIHJlbmRlcmVyKCktPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICB9CiAK
LSAgICBGbG9hdFJlY3Qgdmlld3BvcnRSZWN0ID0gdG9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
cihyZW5kZXJlcigpKS0+dmlld3BvcnQoKTsKKyAgICBGbG9hdFJlY3Qgdmlld3BvcnRSZWN0ID0g
ZG93bmNhc3Q8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCpyZW5kZXJlcigpKS52aWV3cG9y
dCgpOwogICAgIHJldHVybiBGbG9hdFNpemUodmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXdwb3J0
UmVjdC5oZWlnaHQoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>