<?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>136319</bug_id>
          
          <creation_ts>2014-08-27 15:47:53 -0700</creation_ts>
          <short_desc>Subpixel layout: Rename LayoutRect&apos;s device pixel snapping functions.</short_desc>
          <delta_ts>2014-08-29 10:00:23 -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>
          
          <blocked>136275</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031822</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-27 15:47:53 -0700</bug_when>
    <thetext>to the new naming style of snapRectToDevicePixels, enclosingRectToDevicePixels, snappedIntRect, enclosingIntRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031824</commentid>
    <comment_count>1</comment_count>
      <attachid>237267</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-08-27 15:53:15 -0700</bug_when>
    <thetext>Created attachment 237267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031834</commentid>
    <comment_count>2</comment_count>
      <attachid>237267</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 16:13:26 -0700</bug_when>
    <thetext>Comment on attachment 237267
Patch

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

&gt; Source/WebCore/platform/graphics/LayoutRect.h:205
&gt; +WEBCORE_EXPORT IntRect enclosingIntRect(const LayoutRect&amp;);
&gt; +WEBCORE_EXPORT LayoutRect enclosingLayoutRect(const FloatRect&amp;);

Do we want these to be inlined? if so, we should make an exported function that wraps them.

&gt; Source/WebCore/platform/graphics/LayoutRect.h:227
&gt; +FloatRect enclosingRectToDevicePixels(const LayoutRect&amp;, float pixelSnappingFactor);

encloseRectToDevicePixels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031885</commentid>
    <comment_count>3</comment_count>
      <attachid>237282</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-08-27 20:23:57 -0700</bug_when>
    <thetext>Created attachment 237282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031886</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-08-27 20:25:34 -0700</bug_when>
    <thetext>wait for bug #136314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031890</commentid>
    <comment_count>5</comment_count>
      <attachid>237284</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-08-27 20:41:37 -0700</bug_when>
    <thetext>Created attachment 237284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031901</commentid>
    <comment_count>6</comment_count>
      <attachid>237284</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-27 21:24:45 -0700</bug_when>
    <thetext>Comment on attachment 237284
Patch

Clearing flags on attachment: 237284

Committed r173047: &lt;http://trac.webkit.org/changeset/173047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031902</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-27 21:24:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032180</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-29 10:00:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; encloseRectToDevicePixels?

Sorry I missed the discussion of the new names for all these functions.

I am not in favor of verb phrases to name functions that return values and have no side effects. To me it makes total sense to have a function names like these:

    enclosingRectOnDevicePixelBoundaries
    enclosedRectOnDevicePixelBoundaries

But “enclose rect” doesn’t seem right as a function name to me if what the function does is return a rect that encloses another rect that’s passed in. But this one comment by me won’t substitute for a bit of discussion of terminology. I won’t stand in your way in rationalizing these and removing some of the confusing and duplicate function, but I am not sure I approve of the new naming scheme.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237267</attachid>
            <date>2014-08-27 15:53:15 -0700</date>
            <delta_ts>2014-08-27 20:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136319-20140827155308.patch</filename>
            <type>text/plain</type>
            <size>146063</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFlYWRjMWE3ODY3ODhm
OGVkZmFmZDJjM2ZkNDZmMTk1N2JiNzlmMi4uYzgyNmU4MzI2M2Y2YWZkMTZlOWQ2ZWZhMTM0YTQ5
NWE0NjNmMjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMyBAQAorMjAxNC0wOC0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIGxheW91dDog
UmVuYW1lIExheW91dFJlY3QncyBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJvbSBwaXhlbFNu
YXBwZWRGb3JQYWludGluZygpIHRvIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKSBhbmQgCisgICAg
ICAgIHBpeGVsU25hcHBlZEludFJlY3QqKCkgdG8gc25hcHBlZEludFJlY3QqKCkuCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Ym91bmRpbmdCb3hGb3JRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc09uc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnBpeGVsU25hcHBlZEVsZW1lbnRSZWN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0
aW9uUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5QWN0aXZhdGlvblBvaW50XSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlGcmFtZV0pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRl
eHRNZW51XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06
CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBib3VuZGluZ0JveFdpdGhPd25lcjpdKToK
KyAgICAgICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZFdpdGhPd25lcjpdKToK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXB1dGVkVHJhbnNmb3JtKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdCk6CisgICAgICAgICogZWRpdGlu
Zy9SZW5kZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRp
b246OmFic29sdXRlUmVjdCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25N
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJp
bGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRQYWludCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzbmFwc2hvdE5vZGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmV4dGVuZGVkQmFja2dyb3VuZFJlY3RGb3JQYWlu
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0Rm9yRnJh
bWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVy
ZXJUb0NvbnRhaW5pbmdWaWV3KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QpOgorICAgICAgICAqIHBhZ2Uv
aW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW5jZXN0b3JSZXNwb25kaW5nVG9D
bGlja0V2ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1JlY3RU
b0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZWN0Rm9yUGFpbnRp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnNuYXBwZWRJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNu
YXBwZWRJbnRSZWN0RnJvbUVkZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6c25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhX
cml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZEludFJlY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkSW50UmVjdEZyb21FZGdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRGb3JQYWludGluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBh
aW50aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cGl4ZWxTbmFwcGVkUm91bmRl
ZFJlY3RGb3JQYWludGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0
ZVBpeGVsQWxpZ25tZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94
OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjph
cHBseUZpbHRlckVmZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OnBvc2l0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZFZpc3VhbE92ZXJmbG93RnJv
bVRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y2xp
cE91dEZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50Qm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwaXhlbFNuYXBw
ZWRGcmFtZVJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4
ZWxTbmFwQmFja2dyb3VuZEltYWdlR2VvbWV0cnlGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0Ojpw
YWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlz
dWFsT3ZlcmZsb3dGcm9tVGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGcmFtZVNldDo6cG9zaXRpb25GcmFtZXNXaXRoRmxhdHRlbmluZyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RSZXNpemVySW5GcmFnbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cmVzZXRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6YmFja2dyb3VuZEJveEZvclBhaW50aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxh
eUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6YWRkRm9j
dXNSaW5nUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRTY3Jv
bGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dy
b3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6dXBkYXRl
TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjpjb21wdXRlTG9n
aWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1
bGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6cmVwYWludFVzaW5nQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6cmVwYWludFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6cGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UHJvZ3Jlc3M6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2VhcmNoRmllbGQ6OnNob3dQb3B1cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVk
UGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBz
ZWRCb3JkZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmFkZEZvY3VzUmluZ1JlY3RzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50Qm9y
ZGVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9u
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp3cml0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZGVvOjp2aWRlb0JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWRlbzo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OnVuc2NhbGVkRG9jdW1lbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OnBhaW50RGVidWdCb3JkZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudCk6CisKIDIwMTQtMDgtMjcgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRpbmcgYXR0
cmlidXRlcyBvbiBIVE1MIGVsZW1lbnRzIGRvIG5vdCBpbnZhbGlkYXRlIHRoZSBzdHlsZSBjb3Jy
ZWN0bHkgdW5sZXNzIHRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBsb3dlcmNhc2UgaW4gdGhlIHN0eWxl
c2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0MmFlZjRmMzk5YmFlMGU5NzcyNjllMmI0MGYxYTRi
MzRmMjZkMWZiLi4zMmJhODBkNTk0NTkwZmI4ZmY1NzBjOWI0N2ViMTFkZjFhNjM0OTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDgtMjcgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdWJwaXhlbCBsYXlvdXQ6IFJlbmFtZSBMYXlv
dXRSZWN0J3MgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjMxOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gcGl4ZWxTbmFwcGVkRm9yUGFp
bnRpbmcoKSB0byBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKCkgYW5kIAorICAgICAgICBwaXhlbFNu
YXBwZWRJbnRSZWN0KigpIHRvIHNuYXBwZWRJbnRSZWN0KigpLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9kYXNoYm9hcmRSZWdpb25zXSk6CisgICAgICAgICgtW1dlYlZpZXcg
dHJhY2tlZFJlcGFpbnRSZWN0c10pOgorCiAyMDE0LTA4LTI1ICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSB1c2Ugb2YgV0tDb3B5Q0ZMb2NhbGl6
YXRpb25QcmVmZXJyZWROYW1lIHdpdGggTlNMb2NhbGUgcHVibGljIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGRjNjZlMzdiYTM0YzBlMjQ1MjExNTM5ZTYxYmUxMWEwNThiMDYwM2IuLmU4M2IwYzBhZDEzMTU4
NmI2MDRiMjcwYmQ4ZTExYmJkODMwYTZmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxNC0wOC0yNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1
YnBpeGVsIGxheW91dDogUmVuYW1lIExheW91dFJlY3QncyBkZXZpY2UgcGl4ZWwgc25hcHBpbmcg
ZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM2MzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRnJvbSBwaXhlbFNuYXBwZWRGb3JQYWludGluZygpIHRvIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoKSBhbmQgCisgICAgICAgIHBpeGVsU25hcHBlZEludFJlY3QqKCkgdG8gc25hcHBlZEludFJl
Y3QqKCkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVk
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KToK
KwogMjAxNC0wOC0yNiAgTWF0dCBMaWxlayAgPG1ybEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IFdlYktpdCBTUEkgdG8gY29udHJvbCB0aGUgbmF2aWdhdG9yLnN0YW5kYWxvbmUgcHJvcGVydHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCmluZGV4IDg4YjM0YjEyZjZlYzE3ZTEyZDJlOGJlYWQyMjliNjYxN2Y2ZTgyMjguLjUz
MGE4NTNjYmQwODJlMjIxMWMxODZkYTdhNjc2M2ZjOWM1MThlODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNzY2
LDcgKzc2Niw3IEBAIEludFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91bmRpbmdCb3hGb3JR
dWFkcyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgVmVjdG9yCiAgICAgICAgICAgICByZXN1bHQu
dW5pdGUocik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJl
Y3QoTGF5b3V0UmVjdChyZXN1bHQpKTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3QoTGF5b3V0
UmVjdChyZXN1bHQpKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3Mo
KQpAQCAtMjIxOCw4ICsyMjE4LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09uc2Ny
ZWVuKCkgY29uc3QKICAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb3V0ZXIgPSBv
YmplY3RzW2ldOwogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbm5lciA9IG9i
amVjdHNbaSAtIDFdOwogICAgICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCi0gICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0
ID0gaSA8IGxldmVscyA/IHBpeGVsU25hcHBlZEludFJlY3Qob3V0ZXItPmJvdW5kaW5nQm94UmVj
dCgpKSA6IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpLT52aXNpYmxlQ29u
dGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwot
ICAgICAgICBjb25zdCBJbnRSZWN0IGlubmVyUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoaW5u
ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJlbnRPYmplY3QoKS0+
Ym91bmRpbmdCb3hSZWN0KCkgOiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICBj
b25zdCBJbnRSZWN0IG91dGVyUmVjdCA9IGkgPCBsZXZlbHMgPyBzbmFwcGVkSW50UmVjdChvdXRl
ci0+Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxh
YmxlKCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCk7CisgICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gc25hcHBl
ZEludFJlY3QoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJl
bnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkgOiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCkp
OwogICAgICAgICAKICAgICAgICAgaWYgKCFvdXRlclJlY3QuaW50ZXJzZWN0cyhpbm5lclJlY3Qp
KSB7CiAgICAgICAgICAgICBpc09uc2NyZWVuID0gZmFsc2U7CkBAIC0yMjMyLDcgKzIyMzIsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAogewotICAgIElu
dFJlY3Qgb2JqZWN0UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3hSZWN0KCkp
OworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IHNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94UmVj
dCgpKTsKICAgICBvYmplY3RSZWN0LnNldExvY2F0aW9uKEludFBvaW50KCkpOwogICAgIHNjcm9s
bFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMob2JqZWN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDdlODlm
NzJjODU2YTM2ZWM3OWVhMmQwNmJjY2Q0ZmNjYTYxYzQyNjIuLjFhMjI3NzY1ZmU3NWE0NmE5MDQ4
Y2VlMjdmYjEzMzczMzhiYmQzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC02ODgsOSArNjg4LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGlu
Z0JveFJlY3QoKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsgfQogICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0ID0gMDsKLSAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZEVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50
UmVjdChlbGVtZW50UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkRWxlbWVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBzbmFwcGVkSW50UmVjdChlbGVtZW50UmVjdCgpKTsgfQogICAg
IExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCkuc2l6ZSgpOyB9
CiAgICAgSW50U2l6ZSBwaXhlbFNuYXBwZWRTaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudFJl
Y3QoKS5waXhlbFNuYXBwZWRTaXplKCk7IH0KICAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9p
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDY3ZTA1YWE3NTUzNTEwYzczNzY2NjQ4M2U1
MmUxYjRmZTcyMzhhMjUuLmYzMzgzNzUyM2ZiNmJiMDJmYmE2YWE0ODVhNmRlMzdhYmY1NTBiZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSgpIGNvbnN0CiBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJl
cik7Ci0gICAgSW50UmVjdCBjb250ZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9yZW5k
ZXJlci0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOworICAgIEludFJlY3QgY29udGVu
dFJlY3QgPSBzbmFwcGVkSW50UmVjdChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKSk7CiAgICAgLy8gRklYTUU6IHVuY2xlYXIgaWYgd2UgbmVlZCBMZWdhY3lJT1NEb2N1
bWVudFZpc2libGVSZWN0LgogICAgIEludFJlY3Qgdmlld1JlY3QgPSBtX3JlbmRlcmVyLT52aWV3
KCkuZnJhbWVWaWV3KCkudmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KTsKICAgICB2aWV3UmVjdC5pbnRlcnNlY3QoY29udGVudFJl
Y3QpOwpAQCAtMTk1Miw5ICsxOTUyLDkgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG8KICAgICB9
CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBtX3JlbmRlcmVyLT52aWV3KCku
ZnJhbWVWaWV3KCkuY29udGVudHNUb1NjcmVlbihwaXhlbFNuYXBwZWRJbnRSZWN0KG91cnJlY3Qp
KTsKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpLmNvbnRlbnRzVG9T
Y3JlZW4oc25hcHBlZEludFJlY3Qob3VycmVjdCkpOwogI2Vsc2UKLSAgICByZXR1cm4gcGl4ZWxT
bmFwcGVkSW50UmVjdChvdXJyZWN0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3Qob3VycmVj
dCk7CiAjZW5kaWYKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggMjNhNTUzNjJjZDJmMWVmNTY2Y2Q4MWU4NmM2OGQ0YzM2NzcxYjNkOS4uZjNmMWE2
YmI1ZTlhOTZiMjVmOWJjZjZhNzhkYzIwNTUwNmFkY2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEyMDksNyArMTIwOSw3IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3Ry
aW5nKQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAg
IHJldHVybiBDR1BvaW50WmVybzsKICAgICAKLSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KG1fb2JqZWN0LT5ib3VuZGluZ0JveFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0
ID0gc25hcHBlZEludFJlY3QobV9vYmplY3QtPmJvdW5kaW5nQm94UmVjdCgpKTsKICAgICBDR1Jl
Y3QgY2dSZWN0ID0gW3NlbGYgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOnJlY3RdOwogICAgIHJl
dHVybiBDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGNnUmVjdCksIENHUmVjdEdldE1pZFkoY2dS
ZWN0KSk7CiB9CkBAIC0xMjE5LDcgKzEyMTksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdU
b1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAgICBp
ZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsKICAgICAKLSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1f
b2JqZWN0LT5lbGVtZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVj
dChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CiAgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0
VG9TY3JlZW5TcGFjZTpyZWN0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCA3YmU1ZWE3NGRlNGM1NWYzNGVjOWE4ZWI2NTg3MGMxNTQwZTM5ZDVmLi5k
YzIxZmYxYjU3MzNjNTZhNTgyODBjZjQ5ZDVkNjA3YTY5ZTU0YjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgc3RhdGljIHZv
aWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCAqaW5mbywgY29uc3QgQ0dQ
YXRoRWxlbWVudCAqZWwKIAogLSAoTlNWYWx1ZSAqKXBvc2l0aW9uCiB7Ci0gICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAg
SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOwog
ICAgIAogICAgIC8vIFRoZSBDb2NvYSBhY2Nlc3NpYmlsaXR5IEFQSSB3YW50cyB0aGUgbG93ZXIt
bGVmdCBjb3JuZXIuCiAgICAgRmxvYXRQb2ludCBmbG9hdFBvaW50ID0gRmxvYXRQb2ludChyZWN0
LngoKSwgcmVjdC5tYXhZKCkpOwpAQCAtMzE4OSw3ICszMTg5LDcgQEAgc3RhdGljIE5TU3RyaW5n
KiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOworICAgIEludFJlY3QgcmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpKTsKICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOwogICAgIAogICAgIC8v
IE9uIFdLMiwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgc2Nyb2xsIHBvc2l0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpp
bmRleCA4NDA5MmQ3NDg5ODlkMTBjYzU3NDI5YTMwOWJlNjBhMDdmZjNjNmQ4Li5iNGE5OGIyZjRh
OTAxYjdkNTU1MGIyNWZjMmZhNmRlM2NiNDEyNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNDE0LDcgKzQxNCw3IEBA
IHVzaW5nIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjsKIC0gKENHUmVjdClib3VuZGluZ0JveFdp
dGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKIHsKICAgICAvLyBpZ25vcmVzIHRyYW5zZm9ybXMK
LSAgICByZXR1cm4gYW5Pd25lciA/IHBpeGVsU25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29t
cHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKKyAgICBy
ZXR1cm4gYW5Pd25lciA/IHNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNv
cmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVjdFplcm87CiB9CiAKIC0gKFdLUXVhZClh
YnNvbHV0ZVF1YWRXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCkBAIC00MjIsNyArNDIyLDcg
QEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIGlmIChhbk93bmVyKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBFQ0xBSVIKICAgICAgICAgLy9XZWJDb3JlOjpGbG9hdFF1YWQgdGhl
UXVhZCA9IGNvcmUoc2VsZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFuT3duZXIpLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVj
dChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSk7Cisg
ICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZikt
PmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKTsKICAgICAgICAgV0tRdWFk
IHF1YWQ7CiAgICAgICAgIHF1YWQucDEgPSBDR1BvaW50TWFrZShyZWN0LngoKSwgcmVjdC55KCkp
OwogICAgICAgICBxdWFkLnAyID0gQ0dQb2ludE1ha2UocmVjdC5tYXhYKCksIHJlY3QueSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggZTMwMTg4YzBhNjJhZTFiMzk0YmQ5Mzk5NjExYWY2OGIzODc2OGVkNi4uMWU0NDkz
OTMzMjZkZDZhNWVmZmNmMTk3NWNjNzgyMzNkMjQ2OGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTg0Miw3ICs4NDIs
NyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyUwogCiAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBl
ZFJlY3Q7CiAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICBwaXhlbFNuYXBwZWRS
ZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5ib3Jk
ZXJCb3hSZWN0KCksIHJlbmRlcmVyLT5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgICAgICBwaXhlbFNuYXBwZWRSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyh0b1JlbmRl
ckJveChyZW5kZXJlciktPmJvcmRlckJveFJlY3QoKSwgcmVuZGVyZXItPmRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07
CiAgICAgc3R5bGUtPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgcGl4ZWxTbmFwcGVkUmVjdCwg
UmVuZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMTY3
NGU2N2IzZmMzMDMyNTVhNDlhNWMzMmIzN2FlZTM5MzkzODU1Yy4uMGE5NzYwMmIxZjBmNGY3MTcz
YmI3YmNlNjMxNGI0YTI4ZTE4NDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNzgsOSArMzc4LDkgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveCgpIGNv
bnN0OwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVy
biBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94KCkpOyB9CisgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGJvdW5k
aW5nQm94KCkpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCByZW5kZXJSZWN0KGJv
b2wqIGlzUmVwbGFjZWQpOwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChib29s
KiBpc1JlcGxhY2VkKSB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclJlY3QoaXNS
ZXBsYWNlZCkpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZW5kZXJSZWN0KGJvb2wqIGlz
UmVwbGFjZWQpIHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KHJlbmRlclJlY3QoaXNSZXBsYWNlZCkp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBub2RlSW5kZXgoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggNGQ2Mjhm
OWRiNzQ2YTQ3ZTY5MGJiYTlhNjYxMjRmMmVlYTFhMzJkNi4uMjZlNTdlNjM3MzA3M2Q4ZDcyMzU3
NWUyN2YxODIwYzNlMzcyYTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSW50UmVjdCBSZW5kZXJlZFBvc2l0aW9u
OjphYnNvbHV0ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIEludFJl
Y3QgbG9jYWxSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlbmRlcmVyLT5sb2NhbENhcmV0
UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkpOworICAg
IEludFJlY3QgbG9jYWxSZWN0ID0gc25hcHBlZEludFJlY3QobV9yZW5kZXJlci0+bG9jYWxDYXJl
dFJlY3QobV9pbmxpbmVCb3gsIG1fb2Zmc2V0LCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpKTsKICAg
ICByZXR1cm4gbG9jYWxSZWN0ID09IEludFJlY3QoKSA/IEludFJlY3QoKSA6IG1fcmVuZGVyZXIt
PmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Zy
YW1lU2VsZWN0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxl
Y3Rpb25NYWMubW0KaW5kZXggMDUyMGI2N2YxM2JmYTU2M2ZhZjBlYjQwZjE3ODdlYTY5MmY2OGE5
MS4uOWJkZWUxY2NmY2E4YjY1ZWE3NGU2YzcxZjEyZmZmMGYxMDJkMzk3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0KQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlv
bkNoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3Qgc2VsZWN0aW9uUmVjdCA9
IGFic29sdXRlQ2FyZXRCb3VuZHMoKTsKLSAgICBJbnRSZWN0IHZpZXdSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChyZW5kZXJWaWV3LT52aWV3UmVjdCgpKTsKKyAgICBJbnRSZWN0IHZpZXdSZWN0
ID0gc25hcHBlZEludFJlY3QocmVuZGVyVmlldy0+dmlld1JlY3QoKSk7CiAKICAgICBzZWxlY3Rp
b25SZWN0ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKHNlbGVjdGlvblJlY3QpOwogICAg
IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKHZpZXdSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMjQ4N2NmZDlmOTFkNWYw
NDg0MzNmNTJkMTcyMTQwNTIxZjE1ODFmYy4uZmRiMWNiYWE1NzYwYjA4YTM1NmExODEzMjg4NWZk
MmUxOTA3NDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
QEAgLTM5Nyw5ICszOTcsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKSk7CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KG1fcHJlc2VudGVkSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBl
ZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24s
IHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50
UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNl
TG93UXVhbGl0eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IHBpeGVsU25hcHBlZEludFJlY3QociksIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCmluZGV4IGQ2YmExZDFkZGJhMWI5NjgyOGY0YjM5ZmNjNDExN2Q4OTM1YTExNzAuLmEzMWM5
MWQwYmQ1NDI4NjRjNzNkYjcxYzZjZTQxOTZiN2QzNGY3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8o
Tm9kZSogbm9kZSkKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRl
cmVyKCk7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJh
bWUoKTsKICAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52
aWV3KCk7Ci0gICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHBpeGVsU25hcHBlZEludFJlY3QoY29u
dGFpbmluZ1ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKSkpOworICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBzbmFwcGVkSW50UmVjdChj
b250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1vZGVsT2JqZWN0ID0g
cmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVu
ZGVyZXIpIDogbnVsbHB0cjsKICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJub2RlV2lkdGgi
LCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRlWm9vbShtb2Rl
bE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5k
aW5nQm94LndpZHRoKCkpKTsKICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJub2RlSGVpZ2h0
IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9k
ZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAqbW9kZWxPYmplY3QpIDogYm91
bmRpbmdCb3guaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNzMxNDA1ODkxYTEwMGI3OTk5MDhlOWNkMTQ5ZmJjZjcy
NzgzMGRhYi4uZWI4YTQ5MjJiYTkyZTdiZjM1YjA2MGM1YWRlMGY1MzQ3OGE4M2E2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg5
Miw3ICs4OTIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIAogICAgIExheW91dFJl
Y3Qgcm9vdFJlY3QgPSBhYnNvbHV0ZVJlY3Q7CiAgICAgaWYgKCF2aWV3LT5mcmFtZSgpLmlzTWFp
bkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCByb290Vmlld1JlY3QgPSB2aWV3LT5jb250ZW50
c1RvUm9vdFZpZXcocGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZVJlY3QpKTsKKyAgICAgICAg
SW50UmVjdCByb290Vmlld1JlY3QgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoc25hcHBlZElu
dFJlY3QoYWJzb2x1dGVSZWN0KSk7CiAgICAgICAgIHJvb3RSZWN0ID0gdmlldy0+ZnJhbWUoKS5t
YWluRnJhbWUoKS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhyb290Vmlld1JlY3QpOwogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXgg
NGNjMjgyZGE0ZWZkMWViYWVmMmQ4YjhiZmM3YzJiODQ0MTE0Nzk1MS4uMWY0ZmRhODA1OTE0N2E3
NmU3OGYxNDM4NjAxOGYxYWVlMmViOWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCiAgICAgZnJhbWUu
dmlldygpLT5zZXROb2RlVG9EcmF3KCZub2RlKTsKIAogICAgIExheW91dFJlY3QgdG9wTGV2ZWxS
ZWN0OwotICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgcGl4ZWxTbmFwcGVkSW50
UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSkpOwor
ICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25hcHBlZEludFJlY3Qobm9kZS5y
ZW5kZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDNjZjBjYjE3
ZjFlY2U5YzJjZjdiZjY0MDcwZmMyNjlhMTEyNGExNDEuLjQ2ZTA0MWQwMmFhOTU2MDljYWY2ZDEy
OGMyYzUzMzFlYmQ0NTFmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE3OTEs
NyArMTc5MSw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyLT5yZXBhaW50UmVjdEluY2x1ZGluZ05vbkNvbXBvc2l0
aW5nRGVzY2VuZGFudHMoKSk7CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KGxheWVyLT5yZXBhaW50UmVjdEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dHMoKSk7CiAgICAgICAgIHVwZGF0ZVJlY3QgPSBjb250ZW50c1RvUm9vdFZpZXcodXBkYXRlUmVj
dCk7CiAgICAgICAgIGlmICghaXNDb21wb3NpdGVkQ29udGVudExheWVyICYmIGNsaXBzUmVwYWlu
dHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CkBA
IC0yNzIzLDExICsyNzIzLDExIEBAIEludFJlY3QgRnJhbWVWaWV3OjpleHRlbmRlZEJhY2tncm91
bmRSZWN0Rm9yUGFpbnRpbmcoKSBjb25zdAogICAgIAogICAgIExheW91dFJlY3QgZXh0ZW5kZWRS
ZWN0ID0gcmVuZGVyVmlldy0+dW5leHRlbmRlZEJhY2tncm91bmRSZWN0KHJlbmRlclZpZXcpOwog
ICAgIGlmICghdGlsZWRCYWNraW5nLT5oYXNNYXJnaW5zKCkpCi0gICAgICAgIHJldHVybiBwaXhl
bFNuYXBwZWRJbnRSZWN0KGV4dGVuZGVkUmVjdCk7CisgICAgICAgIHJldHVybiBzbmFwcGVkSW50
UmVjdChleHRlbmRlZFJlY3QpOwogICAgIAogICAgIGV4dGVuZGVkUmVjdC5tb3ZlQnkoTGF5b3V0
UG9pbnQoLXRpbGVkQmFja2luZy0+bGVmdE1hcmdpbldpZHRoKCksIC10aWxlZEJhY2tpbmctPnRv
cE1hcmdpbkhlaWdodCgpKSk7CiAgICAgZXh0ZW5kZWRSZWN0LmV4cGFuZChMYXlvdXRTaXplKHRp
bGVkQmFja2luZy0+bGVmdE1hcmdpbldpZHRoKCkgKyB0aWxlZEJhY2tpbmctPnJpZ2h0TWFyZ2lu
V2lkdGgoKSwgdGlsZWRCYWNraW5nLT50b3BNYXJnaW5IZWlnaHQoKSArIHRpbGVkQmFja2luZy0+
Ym90dG9tTWFyZ2luSGVpZ2h0KCkpKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChl
eHRlbmRlZFJlY3QpOworICAgIHJldHVybiBzbmFwcGVkSW50UmVjdChleHRlbmRlZFJlY3QpOwog
fQogCiBib29sIEZyYW1lVmlldzo6c2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4oKSBjb25zdApA
QCAtMzE4MCw5ICszMTgwLDkgQEAgSW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0Rm9y
RnJhbWVPd25lcihjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmUKICAgICAvLyBBcHBs
eSB0aGUgY2xpcCBmcm9tIHRoZSBsYXllci4KICAgICBJbnRSZWN0IGNsaXBSZWN0OwogICAgIGlm
IChjbGlwVG9MYXllckNvbnRlbnRzKQotICAgICAgICBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QoZW5jbG9zaW5nTGF5ZXItPmNoaWxkcmVuQ2xpcFJlY3QoKSk7CisgICAgICAgIGNsaXBS
ZWN0ID0gc25hcHBlZEludFJlY3QoZW5jbG9zaW5nTGF5ZXItPmNoaWxkcmVuQ2xpcFJlY3QoKSk7
CiAgICAgZWxzZQotICAgICAgICBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoZW5jbG9z
aW5nTGF5ZXItPnNlbGZDbGlwUmVjdCgpKTsKKyAgICAgICAgY2xpcFJlY3QgPSBzbmFwcGVkSW50
UmVjdChlbmNsb3NpbmdMYXllci0+c2VsZkNsaXBSZWN0KCkpOwogICAgIGNsaXBSZWN0ID0gY29u
dGVudHNUb1dpbmRvdyhjbGlwUmVjdCk7IAogICAgIHJldHVybiBpbnRlcnNlY3Rpb24oY2xpcFJl
Y3QsIHdpbmRvd0NsaXBSZWN0KCkpOwogfQpAQCAtMzk3Myw3ICszOTczLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0ICpuZXdCb3R0b20sIGZsb2F0
IG9sZFRvcCwgZmxvYXQKIAogSW50UmVjdCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRS
ZWN0JiByZW5kZXJlclJlY3QpIGNvbnN0CiB7Ci0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVR
dWFkKEZsb2F0UmVjdChyZW5kZXJlclJlY3QpKS5ib3VuZGluZ0JveCgpKSk7CisgICAgSW50UmVj
dCByZWN0ID0gc25hcHBlZEludFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVjdChyZW5kZXJlci0+bG9j
YWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVuZGVyZXJSZWN0KSkuYm91bmRpbmdCb3goKSkp
OwogCiAgICAgLy8gQ29udmVydCBmcm9tIHBhZ2UgKCJhYnNvbHV0ZSIpIHRvIEZyYW1lVmlldyBj
b29yZGluYXRlcy4KICAgICBpZiAoIWRlbGVnYXRlc1Njcm9sbGluZygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggYWQwYWEzZDRkODNjNTk1ODdlMGEyOTcxMjVkOTk3ZTU0NmJiYWU2Mi4uOWM0MTZm
ODkyMzc4M2UzNWY2NjU2NTlmODhmZTRkZjc0YWRiYWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNDM2LDEwICsxNDM2LDEwIEBAIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IExheW91dFJlY3QmIG9iCiAgICAgTGF5b3V0
UmVjdCByZWxldmFudFJlY3QgPSByZWxldmFudFZpZXdSZWN0KCZvYmplY3QtPnZpZXcoKSk7CiAK
ICAgICAvLyBUaGUgb2JqZWN0cyBhcmUgb25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWluZyBw
YWludGVkIHdpdGhpbiB0aGUgdmlld1JlY3QoKS4KLSAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5p
bnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3QocmVsZXZhbnRSZWN0KSkpCisgICAgaWYgKCFv
YmplY3RQYWludFJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50UmVjdChyZWxldmFudFJlY3QpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBzbmFwcGVkUGFpbnRSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdChvYmplY3RQYWludFJlY3QpOworICAgIEludFJlY3Qgc25hcHBlZFBhaW50
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KG9iamVjdFBhaW50UmVjdCk7CiAKICAgICAvLyBJZiB0aGlz
IG9iamVjdCB3YXMgcHJldmlvdXNseSBjb3VudGVkIGFzIGFuIHVucGFpbnRlZCBvYmplY3QsIHJl
bW92ZSBpdCBmcm9tIHRoYXQgSGFzaFNldAogICAgIC8vIGFuZCBjb3JyZXNwb25kaW5nIFJlZ2lv
bi4gRklYTUU6IFRoaXMgZG9lc24ndCBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgdGhlIG9iamVjdHMg
b3ZlcmxhcC4KQEAgLTE0NTcsMTEgKzE0NTcsMTEgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFJl
cGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb2IK
ICAgICAvLyBJZiB0aGUgcmVjdCBzdHJhZGRsZXMgYm90aCBSZWdpb25zLCBzcGxpdCBpdCBhcHBy
b3ByaWF0ZWx5LgogICAgIGlmICh0b3BSZWxldmFudFJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkUGFp
bnRSZWN0KSAmJiBib3R0b21SZWxldmFudFJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkUGFpbnRSZWN0
KSkgewogICAgICAgICBJbnRSZWN0IHRvcEludGVyc2VjdGlvbiA9IHNuYXBwZWRQYWludFJlY3Q7
Ci0gICAgICAgIHRvcEludGVyc2VjdGlvbi5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVjdCh0
b3BSZWxldmFudFJlY3QpKTsKKyAgICAgICAgdG9wSW50ZXJzZWN0aW9uLmludGVyc2VjdChzbmFw
cGVkSW50UmVjdCh0b3BSZWxldmFudFJlY3QpKTsKICAgICAgICAgbV90b3BSZWxldmFudFBhaW50
ZWRSZWdpb24udW5pdGUodG9wSW50ZXJzZWN0aW9uKTsKIAogICAgICAgICBJbnRSZWN0IGJvdHRv
bUludGVyc2VjdGlvbiA9IHNuYXBwZWRQYWludFJlY3Q7Ci0gICAgICAgIGJvdHRvbUludGVyc2Vj
dGlvbi5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChib3R0b21SZWxldmFudFJlY3QpKTsK
KyAgICAgICAgYm90dG9tSW50ZXJzZWN0aW9uLmludGVyc2VjdChzbmFwcGVkSW50UmVjdChib3R0
b21SZWxldmFudFJlY3QpKTsKICAgICAgICAgbV9ib3R0b21SZWxldmFudFBhaW50ZWRSZWdpb24u
dW5pdGUoYm90dG9tSW50ZXJzZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKHRvcFJlbGV2YW50UmVj
dC5pbnRlcnNlY3RzKHNuYXBwZWRQYWludFJlY3QpKQogICAgICAgICBtX3RvcFJlbGV2YW50UGFp
bnRlZFJlZ2lvbi51bml0ZShzbmFwcGVkUGFpbnRSZWN0KTsKQEAgLTE0OTEsMTEgKzE0OTEsMTEg
QEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFVucGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb2IKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhl
IG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRo
aW4gdGhlIHJlbGV2YW50Vmlld1JlY3QoKS4KLSAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRl
cnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3QocmVsZXZhbnRWaWV3UmVjdCgmb2JqZWN0LT52aWV3
KCkpKSkpCisgICAgaWYgKCFvYmplY3RQYWludFJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50UmVj
dChyZWxldmFudFZpZXdSZWN0KCZvYmplY3QtPnZpZXcoKSkpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMuYWRkKG9iamVjdCk7Ci0gICAg
bV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbi51bml0ZShwaXhlbFNuYXBwZWRJbnRSZWN0KG9iamVj
dFBhaW50UmVjdCkpOworICAgIG1fcmVsZXZhbnRVbnBhaW50ZWRSZWdpb24udW5pdGUoc25hcHBl
ZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KSk7CiB9CiAKIHZvaWQgUGFnZTo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0K
aW5kZXggMjQ1YTk5OTIzMmZjNDM1NzVjMmIzMmUxM2I5OGI4OWQ3MmUxYTgwMC4uZDNmNzFkNmE3
MWIyZjc3NzcwM2JlOWFlNTQ1MTA0MTJjMmIyZTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJh
bWVJT1MubW0KQEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgTm9kZSogYW5jZXN0b3JSZXNwb25k
aW5nVG9DbGlja0V2ZW50cyhjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LAogICAg
ICAgICAgICAgaWYgKG5vZGVCb3VuZHMpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
Y2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhpcyBub2RlIGlzIGFuIGFyZWEgZWxlbWVudC4gIFRoZSBv
bmx5IHdheSB0aGlzIGNhbiBoYXBwZW4gaXMgaWYgdGhpcyBpcyB0aGUgZmlyc3QgY2hlY2suCiAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBu
b2RlICE9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgbm9kZS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmFyZWFUYWcpKQotICAgICAgICAgICAgICAgICAgICAqbm9kZUJvdW5k
cyA9IHBpeGVsU25hcHBlZEludFJlY3QodG9IVE1MQXJlYUVsZW1lbnQobm9kZSktPmNvbXB1dGVS
ZWN0KGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPnJlbmRlcmVyKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBzbmFwcGVkSW50UmVjdCh0b0hUTUxBcmVh
RWxlbWVudChub2RlKS0+Y29tcHV0ZVJlY3QoaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKS0+cmVuZGVyZXIoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUgJiYgbm9k
ZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBub2RlLT5y
ZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmluZGV4IDg2Y2E0YzFmNDU5NzI4ZTI4
MDY5YjRkMmMxMzA5NzdjZDE4YzI2YWMuLjVmMWUxZGRkZmUyYmVjZmYwM2E4MDVlZjdhNzFhMzNj
OGFjYjMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTkwLDEy
ICsxOTAsMTIgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBm
cmFtZSwgTm9kZSYgbm9kZSwgSW50UmVjdCYgaW1hZ2VSZWMKIAogICAgIC8vIENhbGN1bGF0ZSBp
bWFnZSBhbmQgZWxlbWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFn
IGltYWdlLgogICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRp
bmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0
b3BMZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJbnRSZWN0
KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwogCiAgICAgaWYgKHBh
aW50aW5nUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZWxl
bWVudFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7CisgICAgZWxlbWVu
dFJlY3QgPSBzbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOwogICAgIGltYWdlUmVjdCA9IHBh
aW50aW5nUmVjdDsKIAogICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25h
cHNob3ROb2RlKGZyYW1lLCBub2RlKSwgJm5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCAxZmYwODliZTQ1NDA5MzFhZWM2MzVl
YTEzZWQ4YzBhNjg0ZWVjM2JiLi40MTdhNTJiZTBhMzRlYWRhNTQ3YzY5NWU3M2U0ZGI4MTcyOTk5
MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0
LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIExheW91dFJlY3QgZW5jbG9zaW5nTGF5b3V0UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIExheW91dFJlY3QobG9jYXRpb24sIG1h
eFBvaW50IC0gbG9jYXRpb24pOwogfQogCi1GbG9hdFJlY3QgZW5jbG9zaW5nUmVjdEZvclBhaW50
aW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCitG
bG9hdFJlY3QgZW5jbG9zaW5nUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7CiAgICAgRmxvYXRQb2ludCBsb2NhdGlv
biA9IGZsb29yZWRGb3JQYWludGluZyhyZWN0Lm1pblhNaW5ZQ29ybmVyKCksIHBpeGVsU25hcHBp
bmdGYWN0b3IpOwogICAgIEZsb2F0UG9pbnQgbWF4UG9pbnQgPSBjZWlsZWRGb3JQYWludGluZyhy
ZWN0Lm1heFhNYXhZQ29ybmVyKCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4IGI1M2ZlMmI5Zjc2MGFm
NGMyMTIxZmE4NDYzNDc1ZTcxYjhhMTlhNWIuLjU2MGQyZTAyM2Q5NWZkMmFiMTk4ZTVjN2I0OTA5
MTIyNjcwZmI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmgKQEAgLTIwMSw0NCArMjAxLDQ0IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKICAgICByZXR1cm4gYS5sb2Nh
dGlvbigpICE9IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKIH0KIAotaW5s
aW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQor
V0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IExheW91dFJlY3Qm
KTsKK1dFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgZW5jbG9zaW5nTGF5b3V0UmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKKworaW5saW5lIEludFJlY3Qgc25hcHBlZEludFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQocmVjdC5s
b2NhdGlvbigpKSwgSW50U2l6ZShzbmFwU2l6ZVRvUGl4ZWwocmVjdC53aWR0aCgpLCByZWN0Lngo
KSksIHNuYXBTaXplVG9QaXhlbChyZWN0LmhlaWdodCgpLCByZWN0LnkoKSkpKTsKLQogfQogCi1X
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYp
OwotV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBlbmNsb3NpbmdMYXlvdXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpOwotRmxvYXRSZWN0IGVuY2xvc2luZ1JlY3RGb3JQYWludGluZyhjb25zdCBMYXlv
dXRSZWN0JiwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7Ci0KLWlubGluZSBJbnRSZWN0IHBp
eGVsU25hcHBlZEludFJlY3QoTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0
VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpCitpbmxpbmUgSW50UmVjdCBzbmFwcGVkSW50
UmVjdChMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IHdpZHRoLCBM
YXlvdXRVbml0IGhlaWdodCkKIHsKICAgICByZXR1cm4gSW50UmVjdChsZWZ0LnJvdW5kKCksIHRv
cC5yb3VuZCgpLCBzbmFwU2l6ZVRvUGl4ZWwod2lkdGgsIGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwo
aGVpZ2h0LCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdEZy
b21FZGdlcyhMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IHJpZ2h0
LCBMYXlvdXRVbml0IGJvdHRvbSkKK2lubGluZSBJbnRSZWN0IHNuYXBwZWRJbnRSZWN0RnJvbUVk
Z2VzKExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgcmlnaHQsIExh
eW91dFVuaXQgYm90dG9tKQogewogICAgIHJldHVybiBJbnRSZWN0KGxlZnQucm91bmQoKSwgdG9w
LnJvdW5kKCksIHNuYXBTaXplVG9QaXhlbChyaWdodCAtIGxlZnQsIGxlZnQpLCBzbmFwU2l6ZVRv
UGl4ZWwoYm90dG9tIC0gdG9wLCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFw
cGVkSW50UmVjdChMYXlvdXRQb2ludCBsb2NhdGlvbiwgTGF5b3V0U2l6ZSBzaXplKQoraW5saW5l
IEludFJlY3Qgc25hcHBlZEludFJlY3QoTGF5b3V0UG9pbnQgbG9jYXRpb24sIExheW91dFNpemUg
c2l6ZSkKIHsKICAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBw
aXhlbFNuYXBwZWRJbnRTaXplKHNpemUsIGxvY2F0aW9uKSk7CiB9CiAKLWlubGluZSBGbG9hdFJl
Y3QgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQg
cGl4ZWxTbmFwcGluZ0ZhY3RvcikKK0Zsb2F0UmVjdCBlbmNsb3NpbmdSZWN0VG9EZXZpY2VQaXhl
bHMoY29uc3QgTGF5b3V0UmVjdCYsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpOworCitpbmxp
bmUgRmxvYXRSZWN0IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKIHsKICAgICByZXR1cm4gRmxvYXRSZWN0KHJv
dW5kVG9EZXZpY2VQaXhlbChyZWN0LngoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvciksIHJvdW5kVG9E
ZXZpY2VQaXhlbChyZWN0LnkoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvciksCiAgICAgICAgIHNuYXBT
aXplVG9EZXZpY2VQaXhlbChyZWN0LndpZHRoKCksIHJlY3QueCgpLCBwaXhlbFNuYXBwaW5nRmFj
dG9yKSwgc25hcFNpemVUb0RldmljZVBpeGVsKHJlY3QuaGVpZ2h0KCksIHJlY3QueSgpLCBwaXhl
bFNuYXBwaW5nRmFjdG9yKSk7CiB9CiAKLWlubGluZSBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHksIExheW91dFVuaXQgd2lkdGgsIExh
eW91dFVuaXQgaGVpZ2h0LCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKQoraW5saW5lIEZsb2F0
UmVjdCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5LCBM
YXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0Zh
Y3RvcikKIHsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KSwgcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CisgICAgcmV0dXJuIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgcGl4
ZWxTbmFwcGluZ0ZhY3Rvcik7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHRha2UgdmVy
dGljYWwgY2VudGVyaW5nIGludG8gYWNjb3VudCB0b28uCi1pbmxpbmUgRmxvYXRSZWN0IGRpcmVj
dGlvbmFsUGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IsIGJvb2wgbHRyKQoraW5saW5lIEZsb2F0UmVjdCBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGJvb2wgbHRyKQogewogICAgIGlmICghbHRyKSB7
CiAgICAgICAgIEZsb2F0UG9pbnQgc25hcHBlZFRvcFJpZ2h0ID0gcm91bmRlZEZvclBhaW50aW5n
KHJlY3QubWF4WE1pbllDb3JuZXIoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGx0cik7CkBAIC0yNDYs
NyArMjQ2LDcgQEAgaW5saW5lIEZsb2F0UmVjdCBkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBh
aW50aW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2EKICAgICAgICAgZmxvYXQgc25hcHBl
ZEhlaWdodCA9IHNuYXBTaXplVG9EZXZpY2VQaXhlbChyZWN0LmhlaWdodCgpLCByZWN0LnkoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KHNuYXBwZWRUb3BS
aWdodC54KCkgLSBzbmFwcGVkV2lkdGgsIHNuYXBwZWRUb3BSaWdodC55KCksIHNuYXBwZWRXaWR0
aCwgc25hcHBlZEhlaWdodCk7CiAgICAgfQotICAgIHJldHVybiBwaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyhyZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVj
dC5jcHAKaW5kZXggYTQyZDQyMmJmZWZhMGFiMjM0MDE3YjcwZTQxMzQ3NzQxOTZlZTg1OS4uMjlk
ODYwNGZiYWM1OGIzMTBiZTYxYmYxOTVjOTliZjI4ZTQyOGZkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcApAQCAtMjQyLDcgKzI0Miw3
IEBAIEZsb2F0Um91bmRlZFJlY3QgUm91bmRlZFJlY3Q6OnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0
Rm9yUGFpbnRpbmcoZmxvYXQgZGV2aWNlU2NhCiAgICAgaWYgKG9yaWdpbmFsUmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KG9yaWdpbmFsUmVjdCwgcmFkaWko
KSk7CiAKLSAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHBpeGVsU25hcHBlZEZvclBh
aW50aW5nKG9yaWdpbmFsUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEZsb2F0UmVjdCBw
aXhlbFNuYXBwZWRSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhvcmlnaW5hbFJlY3QsIGRl
dmljZVNjYWxlRmFjdG9yKTsKIAogICAgIGlmICghaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZFJlY3QsIHJhZGlpKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggOTY0NmYyNjllZGUzNzI0NjMyNWFhYzU4YzdhZTUxNTg5MGQ4OTdmNi4uM2Rj
NDJjMzJjYzQ4YTFhOGU2OGQ4ZDg0MWU3YjdhNjYzMzNlOWU5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0zMzMzLDcgKzMzMzMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBpeGVsQWxp
Z25tZW50KGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgcAogICAgIC8vIFNjYWxl
IGJ5IHRoZSBwYWdlIHNjYWxlIGZhY3RvciB0byBjb21wdXRlIHRoZSBzY3JlZW4tcmVsYXRpdmUg
Ym91bmRzLgogICAgIHNjYWxlZEJvdW5kcy5zY2FsZShjb250ZW50c1NjYWxlKTsKICAgICAvLyBS
b3VuZCB0byBpbnRlZ2VyIGJvdW5kYXJpZXMuCi0gICAgRmxvYXRSZWN0IGFsaWduZWRCb3VuZHMg
PSBlbmNsb3NpbmdSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdChzY2FsZWRCb3VuZHMpLCBkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICBGbG9hdFJlY3QgYWxpZ25lZEJvdW5kcyA9IGVuY2xvc2lu
Z1JlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHNjYWxlZEJvdW5kcyksIGRldmljZVNjYWxl
RmFjdG9yKCkpOwogICAgIAogICAgIC8vIENvbnZlcnQgYmFjayB0byBsYXllciBjb29yZGluYXRl
cy4KICAgICBhbGlnbmVkQm91bmRzLnNjYWxlKDEgLyBjb250ZW50c1NjYWxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCmluZGV4IGZkMDQxNTE4Mzg5Zjhi
MjkwODhhY2YwNWM1YjEzN2U2M2E1ZGNhNmQuLjEyMzg1MDYyZDAyYmJmNjc3ZmIwZGZjMWQ0ZmQ5
ZmU0YWIyYzNjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFt
LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9y
PDwoY29uc3QgTGF5b3V0UG9pbnQmIHApCiBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRv
cjw8KGNvbnN0IExheW91dFJlY3QmIHIpCiB7CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwcmludGVkIGFzIGZsb2F0cy4gS2VlcGluZyB0aGVtIGludHMgZm9yIGNvbnNpc3RlbmN5IHdp
dGggcHJldmlvdXMgdGVzdCBleHBlY3RhdGlvbnMuCi0gICAgcmV0dXJuICp0aGlzIDw8IHBpeGVs
U25hcHBlZEludFJlY3Qocik7CisgICAgcmV0dXJuICp0aGlzIDw8IHNuYXBwZWRJbnRSZWN0KHIp
OwogfQogCiBTdHJpbmcgVGV4dFN0cmVhbTo6cmVsZWFzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCBhMDViMTEwZjhiYTc1NDY0Njg5MzJlNDQ2Mjg0Y2Iw
MDIxMjkyY2JhLi4zMGZkMDZmMmI5Y2IyZWJmZjEyZGMzOWE5ZWQzYmU1YmIyYWIzODMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBA
QCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9
IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkg
KyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsK
ICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zs
b3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9u
KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVj
dCwgMCwgLTEpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KGRpcmVjdGlvbmFsUGl4ZWxTbmFwcGVk
Rm9yUGFpbnRpbmcoc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgY29u
dGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9u
KHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
LCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogfQogCiBib29sIEVsbGlwc2lz
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBkZDE0ZTliOTRmMzNiZTYwNjc4OGQyMDg2
MThjMzQxODlhNTFhMmFkLi4zZmFkZDk4NTNmZGRiMmZlZTBkNTQ5ZDI1ZGYzMDc5YjA4M2Q1MDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVy
OjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAgIGRl
c3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAogICAg
IGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCksIG1f
cmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCi0gICAgICAgIHBp
eGVsU25hcHBlZEZvclBhaW50aW5nKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgICAgICBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJl
c3VsdHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApp
bmRleCBjNThlMTQ2ZmMzOTE1YTY5ZTM5NTA1MzhkMWM5NDY5YmM4ZWY5Zjk4Li42ZWM1NzBlZjQw
MGYxNThiNTk5YTA2YzEwNDBjMjM0YWU5YmVhMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCB2b2lkIElubGluZUZs
b3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsCiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93UmVjdCk7CiAgICAgb3Zl
cmZsb3dSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgCi0gICAgaWYgKCFwYWludEluZm8u
cmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAg
aWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVj
dCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VDaGlsZE91dGxpbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggNTg2NDdlMTk0NWVmZmE4NmU0NWI5YzlkM2Q1MDZiZmQxZWJjYzFmZS4u
NzY5MTA4MTZmMmMzYjQ0ZGQ0ZTNkODViZTU4MzllM2Y5YWZiNGQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFBvaW50JiBiCiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlv
dXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVksIG1fbG9naWNhbFdp
ZHRoLCBzZWxlY3Rpb25IZWlnaHQpOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRl
eHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgc1BvcywgZVBvcyk7Ci0gICAgY29udGV4dC0+Zmls
bFJlY3QoZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCBy
ZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSks
IGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RU
b0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAg
IFVOVVNFRF9QQVJBTShib3hPcmlnaW4pOwpAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChi
b3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0gZGVsdGFZLCAwLCBzZWxlY3Rpb25IZWlnaHQo
KSk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCk7
CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25S
ZWN0LCBzUG9zLCBlUG9zKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChkaXJlY3Rpb25hbFBpeGVs
U25hcHBlZEZvclBhaW50aW5nKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgp
KTsKKyAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRp
bmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogfQog
CiBzdGF0aWMgU3Ryb2tlU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4
dERlY29yYXRpb25TdHlsZSBkZWNvcmF0aW9uU3R5bGUpCkBAIC0xMTg5LDcgKzExODksNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRQbwogICAgICAgICBMYXlvdXRVbml0IGRlbHRhWSA9IHJlbmRl
cmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0
b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRvcCgpOwog
ICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54
KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVksIDAsIHNlbGVjdGlvbkhlaWdodCk7CiAgICAgICAg
IGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9z
LCBlUG9zKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGlyZWN0aW9uYWxQaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGlu
Z0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAg
fQogfQogCkBAIC0xMzkwLDcgKzEzOTAsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlv
bkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25zdAogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVj
dCA9IExheW91dFJlY3QobG9naWNhbExlZnQoKSwgMCwgMCwgMCk7CiAgICAgVGV4dFJ1biBydW4g
PSBjb25zdHJ1Y3RUZXh0UnVuKGxpbmVTdHlsZSwgZm9udCk7CiAgICAgZm9udC5hZGp1c3RTZWxl
Y3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3QsIGZyb20sIHRvKTsKLSAgICByZXR1
cm4gZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKS5tYXhYKCk7
CisgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihz
ZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
cnVuLmx0cigpKS5tYXhYKCk7CiB9CiAKIFRleHRSdW4gSW5saW5lVGV4dEJveDo6Y29uc3RydWN0
VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQsIFN0cmlu
ZyogaHlwaGVuYXRlZFN0cmluZ0J1ZmZlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IGVlYWQ4NjM2NWFhYTBmMjRhMmI4MzBhYjJlMjQ2OWI5MTE5
NGQ2MDcuLjVmZjIwYjVlOTY5YTBmOWE3ZDBiYWE0Y2E1MmE1YWJjOTlkNTcyM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoKQogCiAgICAgRmxv
YXRSZWN0IGluZmxhdGVkUmVjdCA9IGJvcmRlckJveFJlY3QoKTsKICAgICB0aGVtZSgpLmFkanVz
dFJlcGFpbnRSZWN0KCp0aGlzLCBpbmZsYXRlZFJlY3QpOwotICAgIGFkZFZpc3VhbE92ZXJmbG93
KHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7CisgICAgYWRk
VmlzdWFsT3ZlcmZsb3coc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7
CiAKICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKSkKICAgICAgICAgZmxvd1RocmVhZC0+YWRkUmVnaW9uc1Zpc3VhbE92ZXJm
bG93RnJvbVRoZW1lKHRoaXMpOwpAQCAtMTUyNyw3ICsxNTI3LDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKICAgICAvLyB6LWluZGV4LiAgV2UgcGFpbnQgYWZ0ZXIgd2UgcGFpbnRlZCB0aGUgYmFj
a2dyb3VuZC9ib3JkZXIsIHNvIHRoYXQgdGhlIHNjcm9sbGJhcnMgd2lsbAogICAgIC8vIHNpdCBh
Ym92ZSB0aGUgYmFja2dyb3VuZC9ib3JkZXIuCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYm
IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgKHBoYXNlID09IFBhaW50UGhhc2VC
bG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5k
KSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSAmJiAhcGFpbnRJbmZv
LnBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkpCi0gICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZs
b3dDb250cm9scyhwYWludEluZm8uY29udGV4dCwgcm91bmRlZEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CisgICAgICAg
IGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29udGV4dCwgcm91bmRl
ZEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpLCBzbmFwcGVkSW50UmVjdChwYWludEluZm8u
cmVjdCkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0yMDY2LDcgKzIw
NjYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcChSZW5kZXJC
bG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQbwogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0
ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQ
b3NpdGlvbiwgTGF5b3V0UmVjdChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCwgbG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhnYXBSZWN0LCBkb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxS
ZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIApAQCAtMjA4Myw3ICsyMDgzLDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgTGEKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9j
ay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExh
eW91dFJlY3Qocm9vdEJsb2NrTG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RC
bG9ja0xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0g
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRp
bmcoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVs
cyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAg
ICByZXR1cm4gZ2FwUmVjdDsKIH0KIApAQCAtMjEwMCw3ICsyMTAwLDcgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290Qmxv
Y2ssIGNvbnN0IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2Fs
UmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qo
cm9vdEJsb2NrTG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2lj
YWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBh
aW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoZ2FwUmVj
dCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0
LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4g
Z2FwUmVjdDsKIH0KIApAQCAtMzczMywxMiArMzczMywxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bQogICAgIGlmIChpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIGJsb2NrLWZsb3dzIHRoYXQgYXJlIGhvcml6b250
YWwuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Njc4MQotICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRl
ZE9mZnNldC54KCksIGFjY3VtdWxhdGVkT2Zmc2V0LnkoKSAtIGNvbGxhcHNlZE1hcmdpbkJlZm9y
ZSgpLAorICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQueCgpLCBhY2N1bXVsYXRlZE9mZnNldC55KCkgLSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSwgaGVpZ2h0KCkgKyBjb2xs
YXBzZWRNYXJnaW5CZWZvcmUoKSArIGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkpKTsKICAgICAgICAg
Y29udGludWF0aW9uKCktPmFic29sdXRlUmVjdHMocmVjdHMsIGFjY3VtdWxhdGVkT2Zmc2V0IC0g
dG9MYXlvdXRTaXplKGxvY2F0aW9uKCkgKwogICAgICAgICAgICAgICAgIGlubGluZUVsZW1lbnRD
b250aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRP
ZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CkBA
IC0zODQyLDkgKzM4NDIsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgICAgICBmbG9h
dCBib3R0b21NYXJnaW4gPSBuZXh0SW5saW5lSGFzTGluZUJveCA/IGNvbGxhcHNlZE1hcmdpbkFm
dGVyKCkgOiBMYXlvdXRVbml0KCk7CiAgICAgICAgIExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFs
T2Zmc2V0LngoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgLSB0b3BNYXJnaW4sIHdpZHRoKCksIGhl
aWdodCgpICsgdG9wTWFyZ2luICsgYm90dG9tTWFyZ2luKTsKICAgICAgICAgaWYgKCFyZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJl
Y3QpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChyZWN0KSk7CiAg
ICAgfSBlbHNlIGlmICh3aWR0aCgpICYmIGhlaWdodCgpKQotICAgICAgICByZWN0cy5hcHBlbmQo
cGl4ZWxTbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAg
cmVjdHMuYXBwZW5kKHNuYXBwZWRJbnRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNpemUoKSkpOwog
CiAgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSAmJiAhaGFzQ29udHJvbENsaXAoKSkgewogICAg
ICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNjViNThkNWI0MTQ5NWVhMWM1YTc4YmE4OWFiMDRkZWQ3
NTQ4Njk1ZC4uOTBjYmRmMDBlYTFiNWRiZGQxMGYzZmEzMWMwZjY0ODhhOTU4ODFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIxNjUsNyAr
MjE2NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJl
bmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAgICAgICAgICAgICAgICAgZmxvYXRp
bmdPYmplY3QtPnJlbmRlcmVyKCkud2lkdGgoKSwgZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCku
aGVpZ2h0KCkpOwogICAgICAgICAgICAgcm9vdEJsb2NrLmZsaXBGb3JXcml0aW5nTW9kZShmbG9h
dEJveCk7CiAgICAgICAgICAgICBmbG9hdEJveC5tb3ZlKHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24ueCgpLCByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLnkoKSk7Ci0gICAgICAgICAgICBwYWlu
dEluZm8tPmNvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZs
b2F0Qm94KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMzM2LDcgKzMzMzYsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLAogICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IHN0ZDo6bWlu
PExheW91dFVuaXQ+KGN1cnItPmxpbmVCb3R0b20oKSwgY3Vyci0+dG9wKCkgKyBjdXJyLT5oZWln
aHQoKSk7CiAgICAgICAgIExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zmc2V0LngoKSArIGN1
cnItPngoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgKyB0b3AsIGN1cnItPndpZHRoKCksIGJvdHRv
bSAtIHRvcCk7CiAgICAgICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZWN0
cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgICAgICAgICByZWN0cy5h
cHBlbmQoc25hcHBlZEludFJlY3QocmVjdCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwM2M4Y2ZlOGY3OTRkOTZiMWU0ZGRjNGMzNmNjNTMx
N2JjMzkyMjE2Li5lNjAxZmVhODdiMzBkNTY5ZDE5NGMyN2ExNjkwNWE2YWE4MTdmYmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIHZv
aWQgUmVuZGVyQm94OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKIAogdm9pZCBSZW5kZXJCb3g6
OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKKyAgICByZWN0cy5hcHBlbmQo
c25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQogCiB2b2lkIFJl
bmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdApAQCAtNjUwLDcgKzY1MCw3IEBAIFJvdW5kZWRSZWN0OjpSYWRpaSBSZW5k
ZXJCb3g6OmJvcmRlclJhZGlpKCkgY29uc3QKIEludFJlY3QgUmVuZGVyQm94OjphYnNvbHV0ZUNv
bnRlbnRCb3goKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMgd3Jvbmcgd2l0aCB0cmFuc2Zvcm1z
IGFuZCBmbGlwcGVkIHdyaXRpbmcgbW9kZXMuCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChjb250ZW50Qm94UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVk
SW50UmVjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICBGbG9hdFBvaW50IGFic1BvcyA9IGxvY2Fs
VG9BYnNvbHV0ZSgpOwogICAgIHJlY3QubW92ZShhYnNQb3MueCgpLCBhYnNQb3MueSgpKTsKICAg
ICByZXR1cm4gcmVjdDsKQEAgLTY4MSwxMyArNjgxLDEzIEBAIExheW91dFJlY3QgUmVuZGVyQm94
OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhCiAgICAgLy8gcmVwYWludCBjb250YWluZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDgKICAgICBib3gubW92ZSh2aWV3KCkubGF5b3V0RGVsdGEoKSk7
CiAKLSAgICByZXR1cm4gTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3gsIGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIHJldHVybiBMYXlvdXRSZWN0KHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoYm94LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkp
KTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KikKIHsKICAgICBpZiAoIXNpemUoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNp
emUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoYWRkaXRpb25hbE9m
ZnNldCwgc2l6ZSgpKSk7CiB9CiAKIGludCBSZW5kZXJCb3g6OnJlZmxlY3Rpb25PZmZzZXQoKSBj
b25zdApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3Vu
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEKIGJvb2wg
UmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudChMYXlvdXRSZWN0JiBwYWludGVk
RXh0ZW50KSBjb25zdAogewogICAgIEFTU0VSVChoYXNCYWNrZ3JvdW5kKCkpOwotICAgIExheW91
dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvcmRlckJveFJlY3Qo
KSk7CisgICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGJvcmRl
ckJveFJlY3QoKSk7CiAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYgKGJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgYmFja2dyb3VuZENvbG9yLmFscGhhKCkpIHsKQEAg
LTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgICAgIHBhaW50
SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CiAgICAgfQogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
OwotICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKChpc0Nv
bnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0KSA6IG92ZXJmbG93
Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpLCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgcGFpbnRJbmZvLnBoYXNlKSksIGRldmlj
ZVNjYWxlRmFjdG9yKTsKKyAgICBGbG9hdFJlY3QgY2xpcFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
KSA6IG92ZXJmbG93Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGN1cnJlbnRSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCgpLCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgcGFpbnRJbmZvLnBo
YXNlKSksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpLnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTIxMTYsNyArMjExNiw3
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAgICAgIExheW91dFN0YXRlKiBsYXlvdXRT
dGF0ZSA9IHZpZXcoKS5sYXlvdXRTdGF0ZSgpOwogCiAgICAgICAgIGlmIChsYXllcigpICYmIGxh
eWVyKCktPnRyYW5zZm9ybSgpKQotICAgICAgICAgICAgcmVjdCA9IExheW91dFJlY3QoZW5jbG9z
aW5nUmVjdEZvclBhaW50aW5nKGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpLCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgICAgIHJlY3QgPSBMYXlv
dXRSZWN0KGVuY2xvc2luZ1JlY3RUb0RldmljZVBpeGVscyhsYXllcigpLT50cmFuc2Zvcm0oKS0+
bWFwUmVjdChyZWN0KSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICAg
ICAgLy8gV2UgY2FuJ3QgdHJ1c3QgdGhlIGJpdHMgb24gUmVuZGVyT2JqZWN0LCBiZWNhdXNlIHRo
aXMgbWlnaHQgYmUgY2FsbGVkIHdoaWxlIHJlLXJlc29sdmluZyBzdHlsZS4KICAgICAgICAgaWYg
KHN0eWxlVG9Vc2UuaGFzSW5GbG93UG9zaXRpb24oKSAmJiBsYXllcigpKQpAQCAtMjE2OSw3ICsy
MTY5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAvLyBpbiB0aGUgcGFyZW50J3Mg
Y29vcmRpbmF0ZSBzcGFjZSB0aGF0IGVuY2xvc2VzIHVzLgogICAgIGlmIChoYXNMYXllcigpICYm
IGxheWVyKCktPnRyYW5zZm9ybSgpKSB7CiAgICAgICAgIGZpeGVkID0gcG9zaXRpb24gPT0gRml4
ZWRQb3NpdGlvbjsKLSAgICAgICAgcmVjdCA9IExheW91dFJlY3QoZW5jbG9zaW5nUmVjdEZvclBh
aW50aW5nKGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpLCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgcmVjdCA9IExheW91dFJlY3QoZW5jbG9zaW5n
UmVjdFRvRGV2aWNlUGl4ZWxzKGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3QpLCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKICAgICAgICAgdG9wTGVmdCA9IHJlY3Qu
bG9jYXRpb24oKTsKICAgICAgICAgdG9wTGVmdC5tb3ZlKGxvY2F0aW9uT2Zmc2V0KCkpOwogICAg
IH0gZWxzZSBpZiAocG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCA3MDg1OGFjZWQzMTM5Yzc5OTBjMmFkZTFlNjI5NDFiNTczZWQ2
OGU2Li4yYTQ5Yjk2MTA5MTY4YmYwMjNiNmQ1Njg2MzlkM2Y1YzZjY2E1MzdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgbW92ZShMYXlvdXRVbml0IGR4LCBMYXlvdXRVbml0IGR5KSB7IG1fZnJhbWVSZWN0Lm1v
dmUoZHgsIGR5KTsgfQogCiAgICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lUmVjdDsgfQotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkRnJhbWVSZWN0KCkgY29u
c3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChtX2ZyYW1lUmVjdCk7IH0KKyAgICBJbnRS
ZWN0IHBpeGVsU25hcHBlZEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0
KG1fZnJhbWVSZWN0KTsgfQogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IExheW91dFJlY3Qm
IHJlY3QpIHsgbV9mcmFtZVJlY3QgPSByZWN0OyB9CiAKICAgICBMYXlvdXRSZWN0IG1hcmdpbkJv
eFJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggOTFjMTI2MGZkZTMzNjg5N2UwNWI2MTY1NTVmMGNkMTdiZDc3
ZTAyYi4uMzQ4ZDg2MjZjYjlmYzI0YjE1Mjg1YzJiOWMyN2UwMTY1YWFlOTI3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC02
NjcsNyArNjY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgIGJvb2wgY29sb3JW
aXNpYmxlID0gYmdDb2xvci5pc1ZhbGlkKCkgJiYgYmdDb2xvci5hbHBoYSgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcocmVj
dCwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0ID0g
c25hcFJlY3RUb0RldmljZVBpeGVscyhyZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAv
LyBGYXN0IHBhdGggZm9yIGRyYXdpbmcgc2ltcGxlIGNvbG9yIGJhY2tncm91bmRzLgogICAgIGlm
ICghaXNSb290ICYmICFjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nICYmICFzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSAmJiBpc0JvcmRlckZpbGwgJiYgIWJnTGF5ZXItPm5leHQoKSkgewpAQCAt
NzUwLDggKzc1MCw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIC8vIFdlIGhh
dmUgdG8gZHJhdyBvdXIgdGV4dCBpbnRvIGEgbWFzayB0aGF0IGNhbiB0aGVuIGJlIHVzZWQgdG8g
Y2xpcCBiYWNrZ3JvdW5kIGRyYXdpbmcuCiAgICAgICAgIC8vIEZpcnN0IGZpZ3VyZSBvdXQgaG93
IGJpZyB0aGUgbWFzayBoYXMgdG8gYmUuICBJdCBzaG91bGQgYmUgbm8gYmlnZ2VyIHRoYW4gd2hh
dCB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGFjdHVhbGx5IHJlbmRlciwgc28gd2Ugc2hvdWxkIGlu
dGVyc2VjdCB0aGUgZGlydHkgcmVjdCB3aXRoIHRoZSBib3JkZXIgYm94IG9mIHRoZSBiYWNrZ3Jv
dW5kLgotICAgICAgICBtYXNrUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7Ci0gICAg
ICAgIG1hc2tSZWN0LmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0
KSk7CisgICAgICAgIG1hc2tSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7CisgICAgICAgIG1h
c2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogCiAgICAg
ICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCiAgICAgICAgIG1hc2tJbWFnZSA9IGNvbnRleHQt
PmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKQEAgLTgxNiw3ICs4MTYs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgaWYgKGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAgICAgICAgICBhcHBseUJveFNoYWRv
d0ZvckJhY2tncm91bmQoY29udGV4dCwgJnN0eWxlKCkpOwogCi0gICAgICAgICAgICBGbG9hdFJl
Y3QgYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJh
Y2tncm91bmRSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBGbG9hdFJlY3Qg
YmFja2dyb3VuZFJlY3RGb3JQYWludGluZyA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYmFja2dy
b3VuZFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChiYXNlQ29sb3Iu
YWxwaGEoKSkgewogICAgICAgICAgICAgICAgIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuYWxwaGEoKSkKICAgICAgICAgICAgICAgICAgICAgYmFzZUNvbG9yID0gYmFzZUNvbG9yLmJs
ZW5kKGJnQ29sb3IpOwpAQCAtMTA3MiwxMCArMTA3MiwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwaXhlbFNuYXBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeUZvclBhaW50aW5nKEJhY2tn
cm91bgogewogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpOwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgYmV0dGVyIHJvdW5kaW5nIHN0
cmF0ZWd5IHRvIHJvdW5kL3NwYWNlIG91dCB0aWxlcy4KLSAgICBnZW9tZXRyeS5zZXRUaWxlU2l6
ZShMYXlvdXRTaXplKHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoZ2VvbWV0cnku
ZGVzdFJlY3QoKS5sb2NhdGlvbigpLCBnZW9tZXRyeS50aWxlU2l6ZSgpKSwgZGV2aWNlU2NhbGVG
YWN0b3IpLnNpemUoKSkpOwotICAgIGdlb21ldHJ5LnNldFNwYWNlU2l6ZShMYXlvdXRTaXplKHBp
eGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwgZ2VvbWV0cnku
c3BhY2VTaXplKCkpLCBkZXZpY2VTY2FsZUZhY3Rvcikuc2l6ZSgpKSk7CisgICAgZ2VvbWV0cnku
c2V0VGlsZVNpemUoTGF5b3V0U2l6ZShzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3Qo
Z2VvbWV0cnkuZGVzdFJlY3QoKS5sb2NhdGlvbigpLCBnZW9tZXRyeS50aWxlU2l6ZSgpKSwgZGV2
aWNlU2NhbGVGYWN0b3IpLnNpemUoKSkpOworICAgIGdlb21ldHJ5LnNldFNwYWNlU2l6ZShMYXlv
dXRTaXplKHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChMYXlvdXRQb2ludCgpLCBn
ZW9tZXRyeS5zcGFjZVNpemUoKSksIGRldmljZVNjYWxlRmFjdG9yKS5zaXplKCkpKTsKICAgICBn
ZW9tZXRyeS5zZXREZXN0T3JpZ2luKExheW91dFBvaW50KHJvdW5kZWRGb3JQYWludGluZyhnZW9t
ZXRyeS5kZXN0T3JpZ2luKCksIGRldmljZVNjYWxlRmFjdG9yKSkpOwotICAgIGdlb21ldHJ5LnNl
dERlc3RSZWN0KExheW91dFJlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpKSk7CisgICAgZ2VvbWV0cnkuc2V0RGVzdFJlY3Qo
TGF5b3V0UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdlb21ldHJ5LmRlc3RSZWN0KCksIGRl
dmljZVNjYWxlRmFjdG9yKSkpOwogICAgIGdlb21ldHJ5LnNldFBoYXNlKExheW91dFBvaW50KHJv
dW5kZWRGb3JQYWludGluZyhnZW9tZXRyeS5waGFzZSgpLCBkZXZpY2VTY2FsZUZhY3RvcikpKTsK
IH0KIApAQCAtMTI2NCw3ICsxMjY0LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsK
ICAgICBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0c2V0cyA9IHJlY3Q7CiAgICAgcmVjdFdpdGhPdXRz
ZXRzLmV4cGFuZChzdHlsZS5pbWFnZU91dHNldHMobmluZVBpZWNlSW1hZ2UpKTsKLSAgICBMYXlv
dXRSZWN0IGJvcmRlckltYWdlUmVjdCA9IExheW91dFJlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRp
bmcocmVjdFdpdGhPdXRzZXRzLCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIExheW91dFJlY3Qg
Ym9yZGVySW1hZ2VSZWN0ID0gTGF5b3V0UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3RX
aXRoT3V0c2V0cywgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgIExheW91dFNpemUgaW1hZ2VT
aXplID0gY2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNEaW1lbnNpb25zKHN0eWxlSW1hZ2UsIGJvcmRl
ckltYWdlUmVjdC5zaXplKCksIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpvb20pOwogCkBAIC0xMzMx
LDIwICsxMzMxLDIwIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNl
SW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIC8vIFRoZSB0
b3AgbGVmdCBjb3JuZXIgcmVjdCBpcyAodHgsIHR5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoKQogICAg
ICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIG9idGFpbmVk
IGZyb20gb3VyIHNsaWNlLCBhbmQgaXMgKDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpCiAgICAg
ICAgIGlmIChkcmF3VG9wKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgsIHksIGxl
ZnRXaWR0aCwgdG9wV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRGb3JQYWludGluZygwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlLCBkZXZpY2VT
Y2FsZUZhY3RvciksIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgsIHksIGxl
ZnRXaWR0aCwgdG9wV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UsIGRldmljZVNj
YWxlRmFjdG9yKSwgb3ApOwogCiAgICAgICAgIC8vIFRoZSBib3R0b20gbGVmdCBjb3JuZXIgcmVj
dCBpcyAodHgsIHR5ICsgaCAtIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIGJvdHRvbVdpZHRoKQog
ICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzICgwLCBp
bWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdG9tU2xpY2UpCiAgICAgICAg
IGlmIChkcmF3Qm90dG9tKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgsIGJvcmRl
ckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCwg
ZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2Us
IGRldmljZVNjYWxlRmFjdG9yKSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
eCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIGJvdHRv
bVdpZHRoLCBkZXZpY2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RUb0Rl
dmljZVBpeGVscygwLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRv
bVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKIAogICAgICAgICAvLyBQYWludCB0aGUg
bGVmdCBlZGdlLgogICAgICAgICAvLyBIYXZlIHRvIHNjYWxlIGFuZCB0aWxlIGludG8gdGhlIGJv
cmRlciByZWN0LgogICAgICAgICBpZiAoc291cmNlSGVpZ2h0ID4gMCkKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBp
eGVsU25hcHBlZEZvclBhaW50aW5nKHgsIHkgKyB0b3BXaWR0aCwgbGVmdFdpZHRoLCBkZXN0aW5h
dGlvbkhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2
aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUobGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVTY2FsZSks
IEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JT
cGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyh4LCB5ICsgdG9wV2lkdGgsIGxlZnRXaWR0aCwg
ZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHNvdXJjZUhlaWdo
dCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUobGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVT
Y2FsZSksIEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOwog
ICAgIH0KIAogICAgIGlmIChkcmF3UmlnaHQpIHsKQEAgLTEzNTIsMzIgKzEzNTIsMzIgQEAgYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgLy8gVGhlIHRvcCByaWdodCBjb3JuZXIgcmVj
dCBpcyAodHggKyB3IC0gcmlnaHRXaWR0aCwgdHksIHJpZ2h0V2lkdGgsIHRvcFdpZHRoKQogICAg
ICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRoaW4gdGhlIGltYWdlIGlzIG9idGFpbmVk
IGZyb20gb3VyIHNsaWNlLCBhbmQgaXMgKGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdo
dFNsaWNlLCB0b3BTbGljZSkKICAgICAgICAgaWYgKGRyYXdUb3ApCi0gICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoYm9yZGVySW1hZ2VSZWN0Lm1heFgoKSAtIHJpZ2h0V2lkdGgsIHksIHJp
Z2h0V2lkdGgsIHRvcFdpZHRoLCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICAgICAg
cGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0
U2xpY2UsIHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5LCBy
aWdodFdpZHRoLCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAorICAgICAgICAgICAgICAg
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0
U2xpY2UsIHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKIAogICAgICAgICAvLyBU
aGUgYm90dG9tIHJpZ2h0IGNvcm5lciByZWN0IGlzICh0eCArIHcgLSByaWdodFdpZHRoLCB0eSAr
IGggLSBib3R0b21XaWR0aCwgcmlnaHRXaWR0aCwgYm90dG9tV2lkdGgpCiAgICAgICAgIC8vIFRo
ZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgKGltYWdlV2lkdGggLSByaWdo
dFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGlj
ZSkKICAgICAgICAgaWYgKGRyYXdCb3R0b20pCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRp
bmcoYm9yZGVySW1hZ2VSZWN0Lm1heFgoKSAtIHJpZ2h0V2lkdGgsIGJvcmRlckltYWdlUmVjdC5t
YXhZKCkgLSBib3R0b21XaWR0aCwKLSAgICAgICAgICAgICAgICByaWdodFdpZHRoLCBib3R0b21X
aWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhpbWFnZVdp
ZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwg
Ym90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBib3JkZXJJbWFnZVJl
Y3QubWF4WSgpIC0gYm90dG9tV2lkdGgsCisgICAgICAgICAgICAgICAgcmlnaHRXaWR0aCwgYm90
dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhpbWFn
ZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgcmlnaHRTbGlj
ZSwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwKICAgICAgICAgICAgICAgICBvcCk7
CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIHJpZ2h0IGVkZ2UuCiAgICAgICAgIGlmIChzb3VyY2VI
ZWlnaHQgPiAwKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShp
bWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm9yZGVySW1h
Z2VSZWN0Lm1heFgoKSAtIHJpZ2h0V2lkdGgsIHkgKyB0b3BXaWR0aCwgcmlnaHRXaWR0aCwgZGVz
dGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgdG9wU2xpY2UsIHJp
Z2h0U2xpY2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUocmln
aHRTaWRlU2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoYm9yZGVySW1hZ2VSZWN0Lm1heFgoKSAtIHJpZ2h0V2lkdGgsIHkgKyB0b3BXaWR0
aCwgcmlnaHRXaWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAg
ICAgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGltYWdlV2lkdGggLSByaWdodFNs
aWNlLCB0b3BTbGljZSwgcmlnaHRTbGljZSwgc291cmNlSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3Rv
ciksIEZsb2F0U2l6ZShyaWdodFNpZGVTY2FsZSwgcmlnaHRTaWRlU2NhbGUpLAogICAgICAgICAg
ICAgICAgIEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOwog
ICAgIH0KIAogICAgIC8vIFBhaW50IHRoZSB0b3AgZWRnZS4KICAgICBpZiAoZHJhd1RvcCAmJiBz
b3VyY2VXaWR0aCA+IDApCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHggKyBsZWZ0
V2lkdGgsIHksIGRlc3RpbmF0aW9uV2lkdGgsIHRvcFdpZHRoLCBkZXZpY2VTY2FsZUZhY3Rvciks
Ci0gICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhsZWZ0U2xpY2UsIDAsIHNvdXJj
ZVdpZHRoLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUodG9wU2lkZVNj
YWxlLCB0b3BTaWRlU2NhbGUpLCAoSW1hZ2U6OlRpbGVSdWxlKWhSdWxlLCBJbWFnZTo6U3RyZXRj
aFRpbGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFn
ZS5nZXQoKSwgY29sb3JTcGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyh4ICsgbGVmdFdpZHRo
LCB5LCBkZXN0aW5hdGlvbldpZHRoLCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAorICAg
ICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhsZWZ0U2xpY2UsIDAsIHNvdXJjZVdpZHRo
LCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUodG9wU2lkZVNjYWxlLCB0
b3BTaWRlU2NhbGUpLCAoSW1hZ2U6OlRpbGVSdWxlKWhSdWxlLCBJbWFnZTo6U3RyZXRjaFRpbGUs
IG9wKTsKIAogICAgIC8vIFBhaW50IHRoZSBib3R0b20gZWRnZS4KICAgICBpZiAoZHJhd0JvdHRv
bSAmJiBzb3VyY2VXaWR0aCA+IDApCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVk
SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgg
KyBsZWZ0V2lkdGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgZGVzdGlu
YXRpb25XaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGxlZnRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21T
bGljZSwgc291cmNlV2lkdGgsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIEZsb2F0
U2l6ZShib3R0b21TaWRlU2NhbGUsIGJvdHRvbVNpZGVTY2FsZSksCisgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoeCArIGxlZnRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJv
dHRvbVdpZHRoLCBkZXN0aW5hdGlvbldpZHRoLCBib3R0b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0
b3IpLAorICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhsZWZ0U2xpY2UsIGltYWdl
SGVpZ2h0IC0gYm90dG9tU2xpY2UsIHNvdXJjZVdpZHRoLCBib3R0b21TbGljZSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBGbG9hdFNpemUoYm90dG9tU2lkZVNjYWxlLCBib3R0b21TaWRlU2NhbGUpLAog
ICAgICAgICAgICAgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBv
cCk7CiAKICAgICAvLyBQYWludCB0aGUgbWlkZGxlLgpAQCAtMTQwMyw4ICsxNDAzLDggQEAgYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIG1pZGRsZVNjYWxlRmFjdG9yLnNldEhl
aWdodChkZXN0aW5hdGlvbkhlaWdodCAvIHNvdXJjZUhlaWdodCk7CiAgICAgICAgIAogICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LAotICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoeCArIGxlZnRXaWR0aCwgeSAr
IHRvcFdpZHRoLCBkZXN0aW5hdGlvbldpZHRoLCBkZXN0aW5hdGlvbkhlaWdodCwgZGV2aWNlU2Nh
bGVGYWN0b3IpLAotICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcobGVmdFNsaWNl
LCB0b3BTbGljZSwgc291cmNlV2lkdGgsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3Ip
LAorICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyh4ICsgbGVmdFdpZHRoLCB5ICsg
dG9wV2lkdGgsIGRlc3RpbmF0aW9uV2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VTY2Fs
ZUZhY3RvciksCisgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGxlZnRTbGljZSwg
dG9wU2xpY2UsIHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwK
ICAgICAgICAgICAgIG1pZGRsZVNjYWxlRmFjdG9yLCAoSW1hZ2U6OlRpbGVSdWxlKWhSdWxlLCAo
SW1hZ2U6OlRpbGVSdWxlKXZSdWxlLCBvcCk7CiAgICAgfQogCkBAIC0xODIyLDcgKzE4MjIsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRPdXRlclRoaXJkID0gb3V0ZXJCb3Jk
ZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7
Ci0gICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZC5zZXRSZWN0KHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKG91dGVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAg
ICAgICAgICAgICAgIHBpeGVsU25hcHBlZE91dGVyVGhpcmQuc2V0UmVjdChzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKG91dGVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKHBpeGVsU25hcHBlZE91dGVyVGhpcmQuaXNSb3VuZGVkKCkgJiYgYmxlZWRB
dm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZCk7
CkBAIC0xODMwLDcgKzE4MzAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAg
ICAgICAgICAgIHBhdGguYWRkUmVjdChwaXhlbFNuYXBwZWRPdXRlclRoaXJkLnJlY3QoKSk7CiAK
ICAgICAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZElubmVyVGhpcmQg
PSBpbm5lckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNj
YWxlRmFjdG9yKTsKLSAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRJbm5lclRoaXJkLnNldFJl
Y3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW5uZXJUaGlyZFJlY3QsIGRldmljZVNjYWxlRmFj
dG9yKSk7CisgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkSW5uZXJUaGlyZC5zZXRSZWN0KHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoaW5uZXJUaGlyZFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZElubmVyVGhpcmQuaXNSb3VuZGVkKCkg
JiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIp
CiAgICAgICAgICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkSW5u
ZXJUaGlyZCk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMjAzOCw3ICsyMDM4LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlU3R5
bGUoTm9TdHJva2UpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3QocGl4ZWxT
bmFwcGVkRm9yUGFpbnRpbmcoYm9yZGVyUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogfQogCiBz
dGF0aWMgdm9pZCBmaW5kSW5uZXJWZXJ0ZXgoY29uc3QgRmxvYXRQb2ludCYgb3V0ZXJDb3JuZXIs
IGNvbnN0IEZsb2F0UG9pbnQmIGlubmVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBjZW50ZXJQ
b2ludCwgRmxvYXRQb2ludCYgcmVzdWx0KQpAQCAtMjQwNyw3ICsyNDA3LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGlmIChmaWxsUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBw
ZWRTaGFkb3dSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm9yZGVyLnJlY3QoKSwgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZFNoYWRv
d1JlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlci5yZWN0KCksIGRldmljZVNjYWxl
RmFjdG9yKTsKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QuaW5mbGF0ZShzaGFk
b3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIApAQCAtMjQ5Nyw3ICsyNDk3LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNo
YWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCks
IDI1NSk7CiAKLSAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBw
aXhlbFNuYXBwZWRGb3JQYWludGluZyhhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShMYXlvdXRSZWN0
KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpKSwgc2hhZG93UGFpbnRpbmdFeHRlbnQsIHNo
YWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICAg
ICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRCb3JkZXJS
ZWN0LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRvd09m
ZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qg
cGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUgPSBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEhv
bGVSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJhZGlpKCkpOwogCiAgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGE3NmU3
ZmQ2Yjc4MjIwZDcyMTRjNzQzZTJjOGJlNDRjNGIzNTUzYzIuLmMwODQ1NWIwN2IzNzA0NDE1ZDYx
OTFlZjg2MmI2NTEwZTQ5MTE1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFJlbmRlckRl
dGFpbHNNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogICAgIG92ZXJmbG93UmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKICAgICBvdmVy
Zmxvd1JlY3QuaW5mbGF0ZShtYXhpbWFsT3V0bGluZVNpemUocGFpbnRJbmZvLnBoYXNlKSk7CiAK
LSAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVjdChv
dmVyZmxvd1JlY3QpKSkKKyAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMoc25hcHBl
ZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENv
bG9yIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IDdkOTY5YWZhOGFlYjEwNGU0NTE2NmFmZjQ1YTFiYzE3NzU0MjNiZDQuLmNiOTIw
YWY2MjY3YWMyOTk2ZTljYTc3ZGYxYWVkMWI3ZmJjODAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjEwLDcgKzIxMCw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAgICAgY29udGVudExvY2F0aW9uLm1vdmUoYm9y
ZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwog
CiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUpOwotICAg
IEludFJlY3QgYWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOworICAgIElu
dFJlY3QgYWxpZ25lZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKICAgICBpZiAoYWxpZ25l
ZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAg
IHJldHVybjsKIApAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0CiAgICAgaWYgKCFyb290UmVuZGVyVmlldykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXco
KS5mcmFtZVZpZXcoKS5jb252ZXJ0VG9Sb290VmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3Qp
KTsKKyAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXcoKS5mcmFtZVZpZXcoKS5jb252ZXJ0
VG9Sb290VmlldyhzbmFwcGVkSW50UmVjdChyZWN0KSk7CiAgICAgCiAgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250
ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmllbGRzZXQuY3BwCmluZGV4IDRkZGI1ZTJkM2VkODBiNTQxMjY4NDc5N2NkZmMy
MWVmNGYwYzM0MjAuLjA0ZmQ2NDdkYzY4ZDE4ZDg4NWEzMmQ2MzU3ZWMyYmYwYzdmYjE4NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIGNsaXBSZWN0LnNldFdp
ZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxlKCkuYm9yZGVyTGVmdFdpZHRoKCksIGxlZ2Vu
ZC0+d2lkdGgoKSkpOwogICAgICAgICBjbGlwUmVjdC5zZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQo
KSk7CiAgICAgfQotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChwaXhlbFNuYXBwZWRGb3JQ
YWludGluZyhjbGlwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3Qs
IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgcGFpbnRCb3JkZXIocGFp
bnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDI2MmUzZTc0MDE5NWJhOTIwYzc4YTc0MzQ5
NzZkZTQ0NmQ1ZTkwOTMuLjI0MjAxNTZjYjc3ZTEyM2JiZmM4ZDMxZWNlYzhkNzFjMzJlNDIwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAg
LTEzODIsNyArMTM4Miw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3Vh
bE92ZXJmbG93RnJvbVRoZW1lKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jCiAgICAgICAgIEZsb2F0
UmVjdCBpbmZsYXRlZFJlY3QgPSBib3JkZXJCb3g7CiAgICAgICAgIGJsb2NrLT50aGVtZSgpLmFk
anVzdFJlcGFpbnRSZWN0KCpibG9jaywgaW5mbGF0ZWRSZWN0KTsKIAotICAgICAgICByZWdpb24t
PmFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KGJsb2NrLCBwaXhlbFNuYXBwZWRJbnRSZWN0KExheW91
dFJlY3QoaW5mbGF0ZWRSZWN0KSkpOworICAgICAgICByZWdpb24tPmFkZFZpc3VhbE92ZXJmbG93
Rm9yQm94KGJsb2NrLCBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGluZmxhdGVkUmVjdCkpKTsK
ICAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAppbmRleCBj
ZWQxMTJlNGEwNDRhMGVhYzM5ZmQ1OGRhMTFiODI5MjQ3YzUzZTIxLi40NDg1MTM3Y2QwYzNhZDhh
NmU1YTRkMWExMDJlNmM3MWY5ZDMxYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50KGNoaWxkKS0+cGFpbnQocGFpbnRJbmZv
LCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIHhQb3MgKz0gbV9jb2xzLm1fc2l6
ZXNbY107CiAgICAgICAgICAgICBpZiAoYm9yZGVyVGhpY2tuZXNzICYmIG1fY29scy5tX2FsbG93
Qm9yZGVyW2MgKyAxXSkgewotICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBhaW50
SW5mbywgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgeFBvcywgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB5UG9zLCBib3JkZXJUaGlja25l
c3MsIGhlaWdodCgpKSkpOworICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBhaW50
SW5mbywgc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSAr
IHhQb3MsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNzLCBo
ZWlnaHQoKSkpKTsKICAgICAgICAgICAgICAgICB4UG9zICs9IGJvcmRlclRoaWNrbmVzczsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CkBA
IC0xNTMsNyArMTUzLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgfQogICAg
ICAgICB5UG9zICs9IG1fcm93cy5tX3NpemVzW3JdOwogICAgICAgICBpZiAoYm9yZGVyVGhpY2tu
ZXNzICYmIG1fcm93cy5tX2FsbG93Qm9yZGVyW3IgKyAxXSkgewotICAgICAgICAgICAgcGFpbnRS
b3dCb3JkZXIocGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgd2lkdGgo
KSwgYm9yZGVyVGhpY2tuZXNzKSkpOworICAgICAgICAgICAgcGFpbnRSb3dCb3JkZXIocGFpbnRJ
bmZvLCBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRoaWNrbmVzcykp
KTsKICAgICAgICAgICAgIHlQb3MgKz0gYm9yZGVyVGhpY2tuZXNzOwogICAgICAgICB9CiAgICAg
fQpAQCAtNDgzLDEwICs0ODMsMTAgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5b3V0KCkKICAg
ICB1cGRhdGVMYXllclRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGRvRnVsbFJlcGFpbnQpIHsKLSAg
ICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBl
ZEludFJlY3Qob2xkQm91bmRzKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBzbmFwcGVkSW50UmVjdChvbGRCb3VuZHMpKTsKICAgICAgICAgTGF5b3V0
UmVjdCBuZXdCb3VuZHMgPSBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyKTsKICAgICAgICAgaWYgKG5ld0JvdW5kcyAhPSBvbGRCb3VuZHMpCi0gICAgICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50
UmVjdChuZXdCb3VuZHMpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBzbmFwcGVkSW50UmVjdChuZXdCb3VuZHMpKTsKICAgICB9CiAKICAgICBj
bGVhck5lZWRzTGF5b3V0KCk7CkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNl
dDo6cG9zaXRpb25GcmFtZXNXaXRoRmxhdHRlbmluZygpCiAgICAgICAgIGludCBoZWlnaHQgPSBt
X3Jvd3MubV9zaXplc1tyXTsKIAogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7IGMr
KykgewotICAgICAgICAgICAgSW50UmVjdCBvbGRGcmFtZVJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGNoaWxkLT5mcmFtZVJlY3QoKSk7CisgICAgICAgICAgICBJbnRSZWN0IG9sZEZyYW1lUmVj
dCA9IHNuYXBwZWRJbnRSZWN0KGNoaWxkLT5mcmFtZVJlY3QoKSk7CiAKICAgICAgICAgICAgIGlu
dCB3aWR0aCA9IG1fY29scy5tX3NpemVzW2NdOwogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBS
ZW5kZXJGcmFtZVNldDo6cG9zaXRpb25GcmFtZXNXaXRoRmxhdHRlbmluZygpCiAgICAgICAgIHhQ
b3MgPSAwOwogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7IGMrKykgewogICAgICAg
ICAgICAgLy8gZW5zdXJlIHRoZSByb3dzIGFuZCBjb2x1bW5zIGFyZSBmaWxsZWQKLSAgICAgICAg
ICAgIEludFJlY3Qgb2xkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoY2hpbGQtPmZyYW1lUmVj
dCgpKTsKKyAgICAgICAgICAgIEludFJlY3Qgb2xkUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGNoaWxk
LT5mcmFtZVJlY3QoKSk7CiAKICAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2lu
dCh4UG9zLCB5UG9zKSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0SGVpZ2h0KG1fcm93cy5tX3Np
emVzW3JdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAppbmRleCA2OTIzOWMyMzk0MjI0NDY0ZGZjNTA1MWRmN2Y0MjM0NzI5ZTNmMzk3Li5lNDJmZThk
MjI4ZTJhMTQ0ZmU0NWU0MGJkNmYxYmQwNTA4MjhiNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgUmVu
ZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhCiAgICAgYm9vbCBjbGlwID0gIWNvbnRlbnRSZWN0LmNvbnRhaW5zKHBh
aW50UmVjdCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudFJlY3QpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoc25hcHBlZEludFJlY3QoY29udGVudFJlY3QpKTsKIAog
ICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDlkMWZmMGM1ZGQ2NzU2OTAwMTIzNDgzYmE0YjEyNTkz
NWM0NWYyYmEuLmQ2MTU1ZmM2ZDZlNDg2NjA1Nzc0MDY5YWJiZjM3M2JkNmU0ZmE4ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDA5LDcgKzQwOSw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihD
b2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWlu
dE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdodCksIGRldmlj
ZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1Jl
Y3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxl
ZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQs
IGNXaWR0aCwgY0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOwogCiAg
ICAgICAgICAgICBib29sIGVycm9yUGljdHVyZURyYXduID0gZmFsc2U7CiAgICAgICAgICAgICBM
YXlvdXRTaXplIGltYWdlT2Zmc2V0OwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAg
ICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxl
KCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VT
aXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBp
bWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAg
ICAgICAgICAgICB9CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICBpZiAoY2xpcCkKICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJl
Y3QpOwogCi0gICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkRm9yUGFp
bnRpbmcocGFpbnRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICBwYWludEludG9S
ZWN0KGNvbnRleHQsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocGFpbnRSZWN0LCBkZXZpY2VTY2Fs
ZUZhY3RvcikpOwogICAgICAgICAKICAgICAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFnZSAm
JiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKICAgICAgICAgICAg
IC8vIEZvciBub3csIGNvdW50IGltYWdlcyBhcyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwg
cHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBtYXkgd2FudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNzQwZTc5YjJjNWQwNGQ4OWY5ODc2NWRlOTNlMjQ4
ODJjNzc4NTRlNi4uOTM3MGY1MjE1MzQ3NDc0OTMyZmIyYzBmNDBlODUzMDVjZDcyM2JmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTE1NDMsMTEgKzE1
NDMsMTEgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBMYXlvdXRSZWN0IGJveChMYXlv
dXRQb2ludChwYWludE9mZnNldC54KCkgKyB0aGlzbGluZS54KCkgLSBvZmZzZXQsIHBhaW50T2Zm
c2V0LnkoKSArIHRoaXNsaW5lLnkoKSAtIG9mZnNldCksCiAgICAgICAgIExheW91dFNpemUodGhp
c2xpbmUud2lkdGgoKSArIG9mZnNldCwgdGhpc2xpbmUuaGVpZ2h0KCkgKyBvZmZzZXQpKTsKIAot
ICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3gpOwor
ICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm94ID0gc25hcHBlZEludFJlY3QoYm94KTsKICAgICBp
ZiAocGl4ZWxTbmFwcGVkQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEludFJl
Y3QgcGl4ZWxTbmFwcGVkTGFzdExpbmUgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0
LngoKSArIGxhc3RsaW5lLngoKSwgMCwgbGFzdGxpbmUud2lkdGgoKSwgMCk7Ci0gICAgSW50UmVj
dCBwaXhlbFNuYXBwZWROZXh0TGluZSA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQu
eCgpICsgbmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKKyAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZExhc3RMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsg
bGFzdGxpbmUueCgpLCAwLCBsYXN0bGluZS53aWR0aCgpLCAwKTsKKyAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsgbmV4dGxp
bmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAvLyBsZWZ0IGVkZ2UK
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTg4MWQyOTRmYmQwY2RkMDMzZGYyMTk0NDFj
MzljNDViZWQwMTdiNC4uNzY0M2FmNDQ2ODE5YmExNzBlODM4MjI2N2Q0YzQ2MGNhNjcwMTRiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC04NTUsNyArODU1
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICAgICAgUmVuZGVy
Qm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICAgICAgQVNTRVJUKGJveCk7CiAgICAgICAgIG1f
dHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKLSAgICAgICAgYm94LT5zdHlsZSgpLmFwcGx5VHJh
bnNmb3JtKCptX3RyYW5zZm9ybSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm94LT5ib3JkZXJC
b3hSZWN0KCksIGJveC0+ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5
bGU6OkluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOworICAgICAgICBib3gtPnN0eWxlKCkuYXBwbHlU
cmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJveC0+Ym9yZGVy
Qm94UmVjdCgpLCBib3gtPmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0
eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFi
bGUoKm1fdHJhbnNmb3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgfQogCkBAIC04
NzAsNyArODcwLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OmN1cnJlbnRU
cmFuc2Zvcm0oUmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3IKIAogICAgIFJlbmRlckJveCog
Ym94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7Ci0gICAgRmxvYXRSZWN0IHBpeGVs
U25hcHBlZEJvcmRlclJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3gtPmJvcmRlckJv
eFJlY3QoKSwgYm94LT5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIEZsb2F0
UmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhib3gt
PmJvcmRlckJveFJlY3QoKSwgYm94LT5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwog
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24o
KSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjdXJyVHJhbnNmb3JtOwogICAgICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gcmVuZGVyZXIoKS5hbmltYXRpb24oKS5nZXRB
bmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKCkpOwpAQCAtMTY5OCw3ICsxNjk4LDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclAKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAg
ICAgICBMYXlvdXRSZWN0IGFkanVzdGVkQ2xpcFJlY3QgPSBwYWludGluZ0V4dGVudCgqdGhpcywg
cGFpbnRpbmdJbmZvLnJvb3RMYXllciwgZGlydHlSZWN0LCBwYWludGluZ0luZm8ucGFpbnRCZWhh
dmlvcik7CiAgICAgICAgIGFkanVzdGVkQ2xpcFJlY3QubW92ZShwYWludGluZ0luZm8uc3VicGl4
ZWxBY2N1bXVsYXRpb24pOwotICAgICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkQ2xpcFJlY3Qg
PSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhhZGp1c3RlZENsaXBSZWN0LCByZW5kZXJlcigpLmRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNu
YXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwg
cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBjb250
ZXh0LT5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9T
SVRJTkcpCkBAIC0yNDIxLDcgKzI0MjEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0
VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQogICAg
ICAgICAgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMs
IHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KICAgICAgICAgICAgIC8vIFRoZSBjYW5BdXRvc2Nyb2xs
IGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtub3dzIGFib3V0IHRoaXMuCiAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lVmlldy5mcmFtZSgpLnBhZ2UoKSkKLSAgICAgICAg
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxSZWN0SW50b1ZpZXcocGl4ZWxTbmFwcGVkSW50
UmVjdChyZWN0KSk7CisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsUmVjdElu
dG9WaWV3KHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAg
LTI3MTgsNyArMjcxOCw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3Qo
KSBjb25zdAogICAgIGJvb2wgaGFzVmVydGljYWxCYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpOwog
ICAgIGJvb2wgaGFzUmVzaXplciA9IHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUoKSAhPSBSRVNJ
WkVfTk9ORTsKICAgICBpZiAoKGhhc0hvcml6b250YWxCYXIgJiYgaGFzVmVydGljYWxCYXIpIHx8
IChoYXNSZXNpemVyICYmIChoYXNIb3Jpem9udGFsQmFyIHx8IGhhc1ZlcnRpY2FsQmFyKSkpCi0g
ICAgICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvcm5lclJlY3QodGhpcywgcmVuZGVy
Qm94KCktPmJvcmRlckJveFJlY3QoKSkpOworICAgICAgICByZXR1cm4gc25hcHBlZEludFJlY3Qo
Y29ybmVyUmVjdCh0aGlzLCByZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKSk7CiAgICAgcmV0
dXJuIEludFJlY3QoKTsKIH0KIApAQCAtMzQ5Myw3ICszNDkzLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5b3UKICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhM
YXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3JuZXJSZXNp
emVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0g
Y29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVuZGVyZXIoKS5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVD
b3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VS
ZWN0KTsKIH0KIApAQCAtMzUzMiw3ICszNTMyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRS
ZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4K
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywg
MjE3KSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MoMS4wZik7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6dHJh
bnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBjb250ZXh0LT5kcmF3UmVj
dChwaXhlbFNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikpOworICAgICAgICBjb250ZXh0LT5k
cmF3UmVjdChzbmFwcGVkSW50UmVjdChsYXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CiAKQEAgLTM1
NjAsNyArMzU2MCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xz
KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSW50UG9pbnQmCiAgICAgCiAgICAgSW50UmVj
dCByZXNpemVDb250cm9sUmVjdDsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnJlc2l6ZSgp
ICE9IFJFU0laRV9OT05FKSB7Ci0gICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChyZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSkp
OworICAgICAgICByZXNpemVDb250cm9sUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlc2l6ZXJDb3Ju
ZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKSk7CiAgICAgICAgIGlmIChyZXNpemVD
b250cm9sUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTM2NjAsNyArMzY2MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1Jl
Y3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250CiAg
ICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBS
ZWN0ID0gY2xpcFJlY3QucmVjdCgpOwogICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFp
bnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChw
aXhlbFNuYXBwZWRGb3JQYWludGluZyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3Rv
cikpOworICAgICAgICBjb250ZXh0LT5jbGlwKHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYWRqdXN0
ZWRDbGlwUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB9CiB9CiAKQEAgLTQyMTMsNyAr
NDIxMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3Jt
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50
IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFk
anVzdGVkU3VicGl4ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRT
aXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7Ci0gICAgTGF5ZXJQYWlu
dGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3Np
bmdSZWN0Rm9yUGFpbnRpbmcodHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSksCisgICAgTGF5ZXJQYWludGlu
Z0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3NpbmdS
ZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSksCiAgICAgICAgIHBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yLCBhZGp1c3RlZFN1YnBpeGVsQWNjdW11bGF0aW9uLCBwYWludGlu
Z0luZm8uc3VidHJlZVBhaW50Um9vdCwgcGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMp
OwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3Jt
ZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogfQpAQCAtNDYwMSw3ICs0NjAxLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckYKICAgICAgICAgY29uc3QgTGF5ZXJGcmFnbWVudCYgZnJhZ21l
bnQgPSBsYXllckZyYWdtZW50cy5hdChpKTsKICAgICAgICAgY2xpcFRvUmVjdChsb2NhbFBhaW50
aW5nSW5mbywgY29udGV4dCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QpOwogICAgICAgICBwYWlu
dE92ZXJmbG93Q29udHJvbHMoY29udGV4dCwgcm91bmRlZEludFBvaW50KHRvTGF5b3V0UG9pbnQo
ZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBs
b2NhbFBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbikpLAotICAgICAgICAgICAgcGl4
ZWxTbmFwcGVkSW50UmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpLCB0cnVlKTsK
KyAgICAgICAgICAgIHNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3Qo
KSksIHRydWUpOwogICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QpOwogICAgIH0KIH0KQEAg
LTUwMTgsNyArNTAxOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RSZXNpemVySW5GcmFn
bWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzCiAKICAgICBmb3IgKGlu
dCBpID0gbGF5ZXJGcmFnbWVudHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAg
Y29uc3QgTGF5ZXJGcmFnbWVudCYgZnJhZ21lbnQgPSBsYXllckZyYWdtZW50cy5hdChpKTsKLSAg
ICAgICAgaWYgKGZyYWdtZW50LmJhY2tncm91bmRSZWN0LmludGVyc2VjdHMoaGl0VGVzdExvY2F0
aW9uKSAmJiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdt
ZW50LmxheWVyQm91bmRzKSkuY29udGFpbnMoaGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgp
KSkKKyAgICAgICAgaWYgKGZyYWdtZW50LmJhY2tncm91bmRSZWN0LmludGVyc2VjdHMoaGl0VGVz
dExvY2F0aW9uKSAmJiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBzbmFwcGVkSW50UmVjdChmcmFn
bWVudC5sYXllckJvdW5kcykpLmNvbnRhaW5zKGhpdFRlc3RMb2NhdGlvbi5yb3VuZGVkUG9pbnQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC01Njc2LDEzICs1
Njc2LDEzIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmJvdW5kaW5nQm94KGNvbnN0IFJlbmRl
ckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zdCBMYXlvCiBJbnRSZWN0IFJlbmRlckxheWVyOjph
YnNvbHV0ZUJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyID0gcm9vdCgpOwotICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5n
Qm94KHJvb3RMYXllciwgb2Zmc2V0RnJvbUFuY2VzdG9yKHJvb3RMYXllcikpKTsKKyAgICByZXR1
cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdCb3gocm9vdExheWVyLCBvZmZzZXRGcm9tQW5jZXN0
b3Iocm9vdExheWVyKSkpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXI6OmFic29sdXRlQm91
bmRpbmdCb3hGb3JQYWludGluZygpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciA9IHJvb3QoKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm91
bmRpbmdCb3gocm9vdExheWVyLCBvZmZzZXRGcm9tQW5jZXN0b3Iocm9vdExheWVyKSksIHJlbmRl
cmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gc25hcFJl
Y3RUb0RldmljZVBpeGVscyhib3VuZGluZ0JveChyb290TGF5ZXIsIG9mZnNldEZyb21BbmNlc3Rv
cihyb290TGF5ZXIpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkp
OwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25z
dCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJv
bVJvb3QsIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgZmxhZ3MpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGI4ZjI1YmQw
NjQ1ZWI1ZDVlYzIxN2M3YWZhZDExMzY2ZDJlMmE0Y2IuLjQ5ZTY4MzdlYTIxMzNjYmNjMzhiN2E1
NjNkYzk3NDRmYTk1MTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdDsKICAgICBpZiAobV9vd25pbmdMYXllci5oYXNUcmFuc2Zvcm0o
KSkgewogICAgICAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVy
KCkpOwotICAgICAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBwaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyhyZW5kZXJCb3guYm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVu
ZGVyU3R5bGU6OkV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4pOworICAgICAgICBzdHlsZS5hcHBseVRy
YW5zZm9ybSh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlbmRlckJveC5ib3JkZXJCb3hSZWN0
KCksIGRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9y
aWdpbik7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHQsIGNvbXBvc2l0b3IoKS5jYW5S
ZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgfQogICAgIApAQCAtNzE0LDcgKzcxNCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgb2Zmc2V0RnJvbVBh
cmVudCA9IG9mZnNldEZyb21QYXJlbnQgKyAoY29tcEFuY2VzdG9yID8gY29tcEFuY2VzdG9yLT5i
YWNraW5nKCktPmRldmljZVBpeGVsRnJhY3Rpb25Gcm9tUmVuZGVyZXIoKSA6IExheW91dFNpemUo
KSk7CiAgICAgcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5tb3ZlQnkob2Zmc2V0RnJvbVBhcmVu
dCk7CiAKLSAgICBMYXlvdXRSZWN0IGVuY2xvc2luZ1JlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMg
PSBMYXlvdXRSZWN0KGVuY2xvc2luZ1JlY3RGb3JQYWludGluZyhyZWxhdGl2ZUNvbXBvc2l0aW5n
Qm91bmRzLCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIExheW91dFJlY3QgZW5jbG9zaW5nUmVs
YXRpdmVDb21wb3NpdGluZ0JvdW5kcyA9IExheW91dFJlY3QoZW5jbG9zaW5nUmVjdFRvRGV2aWNl
UGl4ZWxzKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAg
ICAgTGF5b3V0U2l6ZSBzdWJwaXhlbE9mZnNldEFkanVzdG1lbnQgPSBlbmNsb3NpbmdSZWxhdGl2
ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkgLSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRz
LmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0U2l6ZSByZW5kZXJlck9mZnNldEZyb21HcmFwaGljc0xh
eWVyID0gIHRvTGF5b3V0U2l6ZShsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpICsg
c3VicGl4ZWxPZmZzZXRBZGp1c3RtZW50OwogCkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbnRlcm5hbEhpZXJhcmNoeSgpCiAKIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRlbnRzUmVjdCgpCiB7Ci0gICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50c0JveCgpKSk7
CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3Qoc25hcHBlZEludFJlY3QoY29u
dGVudHNCb3goKSkpOwogICAgIAogICAgIExheW91dFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3Q7
CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNCb3goKSkKICAgICAgICAgY29udGVudHNDbGlwcGluZ1Jl
Y3QgPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS5jb250ZW50Qm94UmVjdCgpOwogCiAgICAgY29u
dGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7
Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFwcGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVj
dCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXplKEludFNpemUo
KSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShJbnRQb2ludCgp
KTsKQEAgLTE4ODQsMTEgKzE4ODQsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUltYWdlQ29udGVudHMoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEgbm8t
b3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdl
LgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZEludFJl
Y3QoY29udGVudHNCb3goKSkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0
KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94KCkpKTsKIAogICAgIExheW91dFJlY3QgY29udGVu
dHNDbGlwcGluZ1JlY3QgPSBpbWFnZVJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29u
dGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7
Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFwcGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVj
dCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwog
ICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXIgPSBmYWxzZTsKQEAgLTE5NjUsNyArMTk2NSw3IEBA
IEZsb2F0UmVjdCBSZW5kZXJMYXllckJhY2tpbmc6OmJhY2tncm91bmRCb3hGb3JQYWludGluZygp
IGNvbnN0CiAKICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRCb3ggPSBiYWNrZ3JvdW5kUmVjdEZv
ckJveCh0b1JlbmRlckJveChyZW5kZXJlcigpKSk7CiAgICAgYmFja2dyb3VuZEJveC5tb3ZlKGNv
bnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVk
Rm9yUGFpbnRpbmcoYmFja2dyb3VuZEJveCwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0
dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYmFja2dyb3VuZEJveCwgZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiB9CiAKIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQmFja2luZzo6cGFyZW50Rm9y
U3VibGF5ZXJzKCkgY29uc3QKQEAgLTIwNjEsNyArMjA2MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIs
IEdyYXBoCiB7CiAgICAgQVNTRVJUKCFwYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpOwog
Ci0gICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JQYWludGluZyA9IHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKHIsIGRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIEZsb2F0UmVjdCBwaXhl
bFNuYXBwZWRSZWN0Rm9yUGFpbnRpbmcgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIGRldmlj
ZVNjYWxlRmFjdG9yKCkpOwogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gb3duaW5nTGF5ZXIo
KS5yZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJl
bmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcuaXNUcmFja2luZ1JlcGFpbnRzKCkpCiAgICAgICAg
IGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWludFJlY3QocGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50
aW5nKTsKQEAgLTIyMDksNyArMjIwOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoCiAgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLngoKSwgLXNjcm9s
bENvcm5lckFuZFJlc2l6ZXIueSgpKTsKICAgICAgICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZENs
aXAgPSBMYXlvdXRSZWN0KGNsaXApOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNj
cm9sbENvcm5lckFuZFJlc2l6ZXIubG9jYXRpb24oKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIu
cGFpbnRTY3JvbGxDb3JuZXIoJmNvbnRleHQsIEludFBvaW50KCksIHBpeGVsU25hcHBlZEludFJl
Y3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxD
b3JuZXIoJmNvbnRleHQsIEludFBvaW50KCksIHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xp
cCkpOwogICAgICAgICBtX293bmluZ0xheWVyLnBhaW50UmVzaXplcigmY29udGV4dCwgSW50UG9p
bnQoKSwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAppbmRleCA0NGViNTE5MGM4MGRlZjY2MWFiNzg5ZjU2MGMzMWVlMmQ4MTk2YmU4Li45MzUz
YjlhYzMyODM3YTk4OWRhZWQwNGNlNjVjNWE2MTc3OTQ4MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTAzMyw3ICsx
MDMzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcChPdmVy
bGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXllciYKICAgICAgICAgYm91bmRzQ29tcHV0ZWQg
PSB0cnVlOwogICAgIH0KIAotICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGxheWVyLmJhY2tncm91bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4
dCgmcm9vdFJlbmRlckxheWVyKCksIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklY
TUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCisgICAgSW50UmVjdCBjbGlwUmVjdCA9IHNu
YXBwZWRJbnRSZWN0KGxheWVyLmJhY2tncm91bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJl
Y3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVyKCksIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgp
KTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAKICAgICAvLyBPbiBpT1Ms
IHBhZ2VTY2FsZUZhY3RvcigpIGlzIG5vdCBhcHBsaWVkIGJ5IFJlbmRlclZpZXcsIHNvIHdlIHNo
b3VsZCBub3Qgc2NhbGUgaGVyZS4KICAgICAvLyBGSVhNRTogU2V0IFNldHRpbmdzOjpkZWxlZ2F0
ZXNQYWdlU2NhbGluZyB0byB0cnVlIGZvciBpT1MuCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5k
ZXJMYXllck1vZGVsT2JqZWN0JgogICAgICAgICByZXR1cm4gcGx1Z2luUmVuZGVyZXIuaGFzTGF5
ZXIoKSAmJiBwbHVnaW5SZW5kZXJlci5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAgIC8v
IERvbid0IGdvIGludG8gY29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHpl
cm8sIG9yIHNpemUgaXMgMXgxLgotICAgIEludFJlY3QgY29udGVudEJveCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocGx1Z2luUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSk7CisgICAgSW50UmVjdCBj
b250ZW50Qm94ID0gc25hcHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXIuY29udGVudEJveFJlY3Qo
KSk7CiAgICAgcmV0dXJuIGNvbnRlbnRCb3guaGVpZ2h0KCkgKiBjb250ZW50Qm94LndpZHRoKCkg
PiAxOwogfQogCkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAg
ICAgICAgIHJldHVybiBmcmFtZVJlbmRlcmVyLmhhc0xheWVyKCkgJiYgZnJhbWVSZW5kZXJlci5s
YXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKICAgICAKICAgICAvLyBEb24ndCBnbyBpbnRvIGNvbXBv
c2l0aW5nIG1vZGUgaWYgaGVpZ2h0IG9yIHdpZHRoIGFyZSB6ZXJvLgotICAgIHJldHVybiAhcGl4
ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCkpLmlzRW1wdHko
KTsKKyAgICByZXR1cm4gIXNuYXBwZWRJbnRSZWN0KGZyYW1lUmVuZGVyZXIuY29udGVudEJveFJl
Y3QoKSkuaXNFbXB0eSgpOwogfQogCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJl
cikgY29uc3QKQEAgLTI3MzUsNyArMjczNSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFy
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAK
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NM
YXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKIHsKLSAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZFJlY3RGb3JJbnRlZ3JhbFBvc2l0aW9uZWRJdGVtcyA9IHBpeGVsU25hcHBl
ZEludFJlY3QoTGF5b3V0UmVjdChjbGlwKSk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0
Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRlbXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNs
aXApKTsKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxi
YXIoKSkKICAgICAgICAgcGFpbnRTY3JvbGxiYXIobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhv
cml6b250YWxTY3JvbGxiYXIoKSwgY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFs
UG9zaXRpb25lZEl0ZW1zKTsKICAgICBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAppbmRleCAwNjBkM2NlNmMxMmFiMzg5NWI3NzQ0NTYyMTk1YzhhNjNlYTllMjc5Li5l
NmQ2MDYyZGZkYjRjYTliZTEyMmVkMmUwM2ZkYWIwYTA3MDQ5ZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYKICAgICAvLyBGb2N1cyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgog
ICAgIGludCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RFbGVtZW50KCkuYWN0aXZlU2VsZWN0aW9uRW5k
TGlzdEluZGV4KCk7CiAgICAgaWYgKHNlbGVjdGVkSXRlbSA+PSAwKSB7Ci0gICAgICAgIHJlY3Rz
LmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGl0ZW1Cb3VuZGluZ0JveFJlY3QoYWRkaXRpb25h
bE9mZnNldCwgc2VsZWN0ZWRJdGVtKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZElu
dFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzZWxlY3RlZEl0ZW0p
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JgogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVt
c1tpXTsKICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgIWVsZW1l
bnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50
KCkuc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoaSk7Ci0gICAgICAgICAgICByZWN0cy5hcHBl
bmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZz
ZXQsIGkpKSk7CisgICAgICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJv
dW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBpKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzQxLDEyICszNDEsMTIgQEAgdm9pZCBSZW5kZXJMaXN0
Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAobV92
QmFyKSB7Ci0gICAgICAgIEludFJlY3Qgc2Nyb2xsUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
cGFpbnRPZmZzZXQueCgpICsgd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRo
KCksCisgICAgICAgIEludFJlY3Qgc2Nyb2xsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zm
c2V0LngoKSArIHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gbV92QmFyLT53aWR0aCgpLAogICAg
ICAgICAgICAgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCksCiAgICAgICAgICAgICBtX3ZC
YXItPndpZHRoKCksCiAgICAgICAgICAgICBoZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJvcmRl
ckJvdHRvbSgpKSk7CiAgICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwot
ICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHBhaW50SW5mby5yZWN0KSk7CisgICAgICAgIG1fdkJhci0+cGFpbnQocGFpbnRJbmZvLmNv
bnRleHQsIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC00
MzksNyArNDM5LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlID0gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0ZW1F
bGVtZW50LT5yZW5kZXJTdHlsZSgpLT5jb2xvclNwYWNlKCkgOiBzdHlsZSgpLmNvbG9yU3BhY2Uo
KTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFp
bnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9s
Q2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
ZWN0KHBpeGVsU25hcHBlZEludFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2Up
OworICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRl
bVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDI4YTA1OGU1ZDk5YWUy
ZjJiZjJjYjg1ZjI3MzVjNzdiZTkwMmU1MWUuLjhhOTA1NjNmODc4OTI5NDE0N2ZmZDgzMjUzMTY2
YjkwOTJmYjRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTExODUsNyArMTE4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAg
ICAgb3ZlcmZsb3dSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwogICAgIG92ZXJmbG93UmVjdC5pbmZs
YXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsKIAotICAgIGlmICghcGFp
bnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkp
KQorICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50UmVjdChvdmVy
Zmxvd1JlY3QpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBib3goYm94T3Jp
Z2luLCBzaXplKCkpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2Vy
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2UKICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAg
ICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAg
ICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlm
IChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVj
dCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5
KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJl
Y3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3Qp
LCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAg
IH0KIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIu
Y3BwCmluZGV4IDNjMTZmYzQ4ZDE4ODBmOWQ3MWUzNDNhMzgyNTgzYjg4M2E4NGVmMTUuLmU2MjQ2
ODZjNWE0NGNiMDQ3MDE4YmExMmMxNTNlYWUzZjZiYWQ3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlck1ldGVy
Ojp1cGRhdGVMb2dpY2FsV2lkdGgoKQogewogICAgIFJlbmRlckJveDo6dXBkYXRlTG9naWNhbFdp
ZHRoKCk7CiAKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91
bmRzKCp0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lUmVjdCgpKSk7CisgICAgSW50U2l6
ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVyU2l6ZUZvckJvdW5kcygqdGhpcywgc25hcHBlZElu
dFJlY3QoZnJhbWVSZWN0KCkpKTsKICAgICBzZXRMb2dpY2FsV2lkdGgoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IGZyYW1lU2l6ZS53aWR0aCgpIDogZnJhbWVTaXplLmhlaWdodCgpKTsKIH0K
IApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naQogICAgICAgICBmcmFt
ZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAg
ZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJh
bWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBlZElu
dFJlY3QoZnJhbWUpKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXpl
Rm9yQm91bmRzKCp0aGlzLCBzbmFwcGVkSW50UmVjdChmcmFtZSkpOwogICAgIGNvbXB1dGVkVmFs
dWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWln
aHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCAwYTRlZWIyN2YxZjBiMTI4NGRj
NmRmYmQwMWJmM2JmYmUyMWIxMThmLi44NDRhN2RjZGFkNDY2MGY1ZDQ4YmJmMmMyOThjMjk1MTMw
MGJkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNldC5jcHAKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0
OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwog
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgcnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRoaWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdp
ZHRoKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1Rv
cCgpIDogcGFpbnRPZmZzZXQueSgpICsgcnVsZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAv
IDIgKyBydWxlQWRkOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBydWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVs
ZVRvcCArIHJ1bGVUaGlja25lc3M7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBw
ZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVU
b3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7CisgICAgICAgICAgICAgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRSdWxlUmVjdCA9IHNuYXBwZWRJbnRSZWN0RnJvbUVkZ2VzKHJ1bGVMZWZ0LCBydWxl
VG9wLCBydWxlUmlnaHQsIHJ1bGVCb3R0b20pOwogICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShwYWludEluZm8uY29udGV4dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QueCgpLCBwaXhl
bFNuYXBwZWRSdWxlUmVjdC55KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0Lm1heFgoKSwgcGl4ZWxT
bmFwcGVkUnVsZVJlY3QubWF4WSgpLCBib3hTaWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwg
MCwgYW50aWFsaWFzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjQ1LDcgKzY0
NSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IGNvbENvdW50OyBpKyspIHsKICAgICAgICAgICAgIHJ1bGVSZWN0Lm1vdmUoc3Rl
cCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChydWxlUmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1
bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVsZVJlY3QpOwogICAgICAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBp
eGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhl
bFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAw
LCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NDBjYjk4NmIzMjQ3OWFmMjVmMmZjM2Q0MDJiNjBh
MzIyODBkZDJhLi45MDg1NWNkOTY0MjFkYWE3MTU4ZjZjOTM2OTFmNDg0NmQzNmJkZGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtODA3LDEzICs4MDcs
MTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgZmxvYXQgeDEKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNp
ZGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU1RvcDoKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBCU0JvdHRvbToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoeDEsIHkxLCBsZW5ndGgsIHRoaXJk
T2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgxLCB5
MiAtIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0aCwgdGhpcmRPZlRoaWNrbmVzcywgZGV2aWNlU2Nh
bGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTEsIGxlbmd0aCwgdGhpcmRPZlRoaWNr
bmVzcywgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTIgLSB0aGly
ZE9mVGhpY2tuZXNzLCBsZW5ndGgsIHRoaXJkT2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFjdG9y
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCU0xlZnQ6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoeDEsIHkxLCB0aGlyZE9mVGhpY2tuZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFj
dG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0
KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgyIC0gdGhpcmRPZlRoaWNrbmVzcywgeTEsIHRoaXJk
T2ZUaGlja25lc3MsIGxlbmd0aCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVs
cyh4MSwgeTEsIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0aCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVscyh4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxLCB0aGlyZE9mVGhpY2tu
ZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTgzNCwzOCArODM0LDM4IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGZsb2F0IHgxCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHBhaW50Qm9yZGVy
UmVjdDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBCU1RvcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkx
LCAoeDIgLSBtaXRyZU9mZnNldDMpIC0gKHgxICsgbWl0cmVPZmZzZXQxKSwgdGhpcmRPZlRoaWNr
bmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50
Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MSArIG1pdHJl
T2Zmc2V0MSwgeTEsICh4MiAtIG1pdHJlT2Zmc2V0MykgLSAoeDEgKyBtaXRyZU9mZnNldDEpLCB0
aGlyZE9mVGhpY2tuZXNzKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcGFpbnRCb3JkZXJSZWN0
LngoKSwgcGFpbnRCb3JkZXJSZWN0LnkoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFgoKSwgcGFpbnRC
b3JkZXJSZWN0Lm1heFkoKSwgc2lkZSwgY29sb3IsIFNPTElELAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkamFjZW50MUJpZ1RoaXJkLCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFz
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRCb3JkZXJSZWN0ID0gcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdCh4MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGlyZE9m
VGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNldDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhp
cmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4
MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGlyZE9mVGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNl
dDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxl
RmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBh
aW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9y
LCBTT0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwg
YWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYWludEJvcmRlclJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRS
ZWN0KHgxLCB5MSArIG1pdHJlT2Zmc2V0MSwgdGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVP
ZmZzZXQzKSAtICh5MSArIG1pdHJlT2Zmc2V0MSkpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKExheW91dFJlY3QoeDEsIHkxICsgbWl0cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAo
eTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFj
dG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50
Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBT
T0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRq
YWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDIgLSB0
aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJlT2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywgKHky
IC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1pdHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDIgLSB0aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJl
T2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1p
dHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBwYWludEJvcmRlclJlY3QueCgp
LCBwYWludEJvcmRlclJlY3QueSgpLCBwYWludEJvcmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRl
clJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwgU09MSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFkamFjZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QlNCb3R0b206Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KHgxICsgbWl0cmVPZmZzZXQyLCB5MSwgKHgy
IC0gbWl0cmVPZmZzZXQ0KSAtICh4MSArIG1pdHJlT2Zmc2V0MiksIHRoaXJkT2ZUaGlja25lc3Mp
LCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRl
clJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNl
dDIsIHkxLCAoeDIgLSBtaXRyZU9mZnNldDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRP
ZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCks
IHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVy
UmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZv
clBhaW50aW5nKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRoaWNr
bmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAtICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJkT2ZU
aGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBw
YWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEgKyBt
aXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRoaWNrbmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAt
ICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJkT2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCBwYWludEJvcmRlclJlY3QueCgpLCBwYWludEJvcmRlclJlY3QueSgpLCBwYWludEJv
cmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRlclJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwgU09M
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFkamFj
ZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3Qo
eDEsIHkxICsgbWl0cmVPZmZzZXQyLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNl
dDQpIC0gKHkxICsgbWl0cmVPZmZzZXQyKSksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
TGF5b3V0UmVjdCh4MSwgeTEgKyBtaXRyZU9mZnNldDIsIHRoaXJkT2ZUaGlja25lc3MsICh5MiAt
IG1pdHJlT2Zmc2V0NCkgLSAoeTEgKyBtaXRyZU9mZnNldDIpKSwgZGV2aWNlU2NhbGVGYWN0b3Ip
OwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgcGFpbnRCb3JkZXJSZWN0LngoKSwgcGFpbnRCb3JkZXJSZWN0LnkoKSwgcGFpbnRCb3Jk
ZXJSZWN0Lm1heFgoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFkoKSwgc2lkZSwgY29sb3IsIFNPTElE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkamFjZW50MUJpZ1RoaXJkLCBhZGphY2Vu
dDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRC
b3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdCh4MiAtIHRoaXJk
T2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBt
aXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoTGF5b3V0UmVjdCh4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZz
ZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVP
ZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBh
aW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVj
dC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBmbG9hdCB4MQogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENv
bG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGJvb2wgd2Fz
QW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRleHQtPnNob3VsZEFudGlhbGlhcygpOwogICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7
Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBwZWRG
b3JQYWludGluZyh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEsIGRldmljZVNjYWxlRmFjdG9yKSk7
CisgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsK
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh3YXNB
bnRpYWxpYXNlZCk7CiAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VT
dHlsZShvbGRTdHJva2VTdHlsZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3
ICsxMDM4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGhyZWYgPSB0b0VsZW1lbnQobiktPmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYg
KGhyZWYuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+
c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHVybFJlY3QpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVj
dChuLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0
KSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKQEAgLTEwNjEsMTAgKzEwNjEsMTAg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWMKICAgICBpZiAoc3R5bGVUb1VzZS5vdXRsaW5lU3R5
bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLm91dGxpbmVTdHlsZSgpID09IEJOT05FKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJbnRSZWN0IGlubmVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWlu
dFJlY3QpOworICAgIEludFJlY3QgaW5uZXIgPSBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpOwog
ICAgIGlubmVyLmluZmxhdGUob3V0bGluZU9mZnNldCk7CiAKLSAgICBJbnRSZWN0IG91dGVyID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lcik7CisgICAgSW50UmVjdCBvdXRlciA9IHNuYXBwZWRJ
bnRSZWN0KGlubmVyKTsKICAgICBvdXRlci5pbmZsYXRlKG91dGxpbmVXaWR0aCk7CiAKICAgICAv
LyBGSVhNRTogVGhpcyBwcmV2ZW50cyBvdXRsaW5lcyBmcm9tIHBhaW50aW5nIGluc2lkZSB0aGUg
b2JqZWN0LiBTZWUgYnVnIDEyMDQyCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBJbnRSZWN0IFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25z
dAogICAgIExheW91dFJlY3QgcmVzdWx0ID0gcmVjdHNbMF07CiAgICAgZm9yIChzaXplX3QgaSA9
IDE7IGkgPCBuOyArK2kpCiAgICAgICAgIHJlc3VsdC51bml0ZShyZWN0c1tpXSk7Ci0gICAgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVzdWx0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJl
Y3QocmVzdWx0KTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q28KICAgICAgICAgQVNTRVJUKHJlcGFpbnRDb250YWluZXIgPT0gJnYp
OwogICAgICAgICBib29sIHZpZXdIYXNDb21wb3NpdGVkTGF5ZXIgPSB2Lmhhc0xheWVyKCkgJiYg
di5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKICAgICAgICAgaWYgKCF2aWV3SGFzQ29tcG9zaXRl
ZExheWVyIHx8IHYubGF5ZXIoKS0+YmFja2luZygpLT5wYWludHNJbnRvV2luZG93KCkpIHsKLSAg
ICAgICAgICAgIHYucmVwYWludFZpZXdSZWN0YW5nbGUodmlld0hhc0NvbXBvc2l0ZWRMYXllciAm
JiB2LmxheWVyKCktPnRyYW5zZm9ybSgpID8gTGF5b3V0UmVjdCh2LmxheWVyKCktPnRyYW5zZm9y
bSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHIsIGRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpKSA6IHIpOworICAgICAgICAgICAgdi5yZXBhaW50Vmlld1JlY3Rhbmds
ZSh2aWV3SGFzQ29tcG9zaXRlZExheWVyICYmIHYubGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBMYXlv
dXRSZWN0KHYubGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVscyhyLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKSkgOiByKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEzNTYsMTYgKzEzNTYsMTYgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRTbG93UmVwYWludE9iamVjdCgpIGNvbnN0CiAgICAgLy8g
dGhlcmUgaXMsIHRoZW4gd2Ugc2hvdWxkIG5vdCBhbGxvdyBwYWludGluZyB0byBjbGlwIHRvIHRo
ZSBsYXllciBzaXplLgogICAgIGlmIChpc1Jvb3QoKSB8fCBpc0JvZHkoKSkgewogICAgICAgICBz
aG91bGRDbGlwVG9MYXllciA9ICF2aWV3LT5mcmFtZVZpZXcoKS5oYXNFeHRlbmRlZEJhY2tncm91
bmRSZWN0Rm9yUGFpbnRpbmcoKTsKLSAgICAgICAgcmVwYWludFJlY3QgPSBwaXhlbFNuYXBwZWRJ
bnRSZWN0KHZpZXctPmJhY2tncm91bmRSZWN0KHZpZXcpKTsKKyAgICAgICAgcmVwYWludFJlY3Qg
PSBzbmFwcGVkSW50UmVjdCh2aWV3LT5iYWNrZ3JvdW5kUmVjdCh2aWV3KSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHJlcGFpbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSk7CisgICAgICAgIHJlcGFpbnRSZWN0
ID0gc25hcHBlZEludFJlY3QoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENv
bnRhaW5lcikpOwogCiAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IHJlcGFpbnRSZWN0LCBzaG91bGRDbGlwVG9MYXllcik7CiB9CiAKIEludFJlY3QgUmVuZGVyT2Jq
ZWN0OjpwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewot
ICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCgpKTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3QoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dS
ZWN0KCkpOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5
b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
cm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
CmluZGV4IGNiOGIxYmE2ODI4Mjc2N2UzNzNmNzk5YjhlNDYwOGQ3Y2RlOWMyMjUuLjI0MjVmMDYy
MzFmZTg5MTViZTg5MTZkZTkyMTI3YWMxZGUxMDIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbmRlclBy
b2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbAogICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9l
eHRlbnQpOwotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5wcm9ncmVzc0JhclJlY3RG
b3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CisgICAg
SW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLnByb2dyZXNzQmFyUmVjdEZvckJvdW5kcygqdGhp
cywgc25hcHBlZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9l
eHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDog
ZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCmluZGV4IDk3NGU3NzJjNzM5NGU2Mjc2MDZhZDY1NWY0YzQ2YzUwZTNhMGM3
MzcuLjQ1ZTE3MWE2NGU4ZDYwNmU0Y2NkZWY0MTFiZjllOTI5ZjhlN2E3MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBA
IHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAg
ICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25S
ZWN0KCk7CiAgICAgICAgIHNlbGVjdGlvblBhaW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWlu
dE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBw
ZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4
IDEwN2M1YzEzZjU1M2VhYmQzMzA1MjMzYjFmYTNhZGI2YjMyNjk5MTIuLjY2ZGZkMmY2ODA2Y2Jk
MWM4MTBmYjVmNjJiNjlhZmRlOTQ0NjkwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0CiAgICAgfQogICAgIAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCi0g
ICAgUGFpbnRJbmZvIHBhaW50SW5mbyhncmFwaGljc0NvbnRleHQsIHBpeGVsU25hcHBlZEludFJl
Y3QocmVjdCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwp
OworICAgIFBhaW50SW5mbyBwYWludEluZm8oZ3JhcGhpY3NDb250ZXh0LCBzbmFwcGVkSW50UmVj
dChyZWN0KSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7
CiAgICAgcGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgcGFpbnRJbmZvLnBoYXNl
ID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKICAgICBwYWludChwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuY3BwCmluZGV4IDhmMDg5OWYxNzIwODIwOGY5MjBhNTkxMmU5ZGIyNzVhY2E5MmY2NjUu
LmRmZmY3NWNkYTY2MmQzYTZhMDdhZWU3OWY0YTA0NTZkOTljZDg2ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtMTMwLDcgKzEzMCw3
IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNo
UG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9
CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhwaXhlbFNuYXBwZWRJbnRS
ZWN0KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpLCAmdmlldygpLmZyYW1lVmlldygpLCAtMSk7
CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3coc25hcHBlZEludFJlY3QoYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKSksICZ2aWV3KCkuZnJhbWVWaWV3KCksIC0xKTsKIH0KIAog
dm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6aGlkZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDc2YzZiMDc0
N2U3YjZjZDNhYmQyYzM0ZmVkZTA0MDc5ODY0NTk4MDcuLjc5NzhmZTIxZTRkY2Q2ZDc5ZmI0YjRm
YjQwMDkyZTkyMWZhYmNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvCiAgICAgY29udGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsg
cGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0
UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxp
Z25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOworICAgIEludFJlY3QgYWxpZ25l
ZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgo
KSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBhYWU1
NWE2OWQxNjI1NWM3OWYxNDVkMTgzOWJkODIxMDJhMjg2YmFmLi4wZjJiNzRiNGY3ZWEwZTc3MDc1
M2FkZjRlMGYyNTM0Y2VkZDBlZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcApAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNl
bGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG8KICAgICBpbnQgbGVmdFdpZHRoID0gbGVmdFZhbC53aWR0aCgpOwogICAgIGludCByaWdo
dFdpZHRoID0gcmlnaHRWYWwud2lkdGgoKTsKIAotICAgIEludFJlY3QgYm9yZGVyUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRXaWR0aCAvIDIsCisgICAgSW50
UmVjdCBib3JkZXJSZWN0ID0gc25hcHBlZEludFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRXaWR0
aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC55KCkgLSB0b3BXaWR0aCAvIDIsCiAgICAgICAgIHBh
aW50UmVjdC53aWR0aCgpICsgbGVmdFdpZHRoIC8gMiArIChyaWdodFdpZHRoICsgMSkgLyAyLAog
ICAgICAgICBwYWludFJlY3QuaGVpZ2h0KCkgKyB0b3BXaWR0aCAvIDIgKyAoYm90dG9tV2lkdGgg
KyAxKSAvIDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHAKaW5kZXggYWU1YjBhNjc2OWNiOGIzYWViMDBkY2UyYWNhYTFiMWU4NjE3Zjg0Zi4uOGIw
ZDBlZmJiM2Q1ZmI2MGVjNWE4MjE3OGEyMzMxNDRmOGI1MjlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
dm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6
ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zm
c2V0LCBzaXplKCkpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBSZW5kZXJUZXh0Q29udHJvbDo6bGF5
b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcAppbmRleCA0YTM5ZTI1NzdhOTJkZmJiMjAxZmZlZmEzMjcyNWE3ODM1NzIxNTI0Li41OTU3
ZWU3YTY4YjkyYmRiYzI2ZDAyY2FiMDBiZmM5ZGI5MmFkNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApA
QCAtODQsNyArODQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogCiAgICAgICAgIC8vIENv
bnZlcnQgdGhlIHJlY3QgaW50byB0aGUgY29vcmRzIHVzZWQgZm9yIHBhaW50aW5nIHRoZSBjb250
ZW50CiAgICAgICAgIGNvbnRlbnRzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigp
KTsKLSAgICAgICAgdGhlbWUoKS5wYWludENhcHNMb2NrSW5kaWNhdG9yKCp0aGlzLCBwYWludElu
Zm8sIHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNSZWN0KSk7CisgICAgICAgIHRoZW1lKCku
cGFpbnRDYXBzTG9ja0luZGljYXRvcigqdGhpcywgcGFpbnRJbmZvLCBzbmFwcGVkSW50UmVjdChj
b250ZW50c1JlY3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCmluZGV4IGZlMjc5YWIzODFhMzRkNDYxNDQ5NmI0NmFhOTFlZjBlMmZkNGQ0OTgu
LjM4MzZlZDgyNTAzMDlhMmE0MGQ5NmViODRkMGZiNjM0ZDY3MTZhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjY3LDggKzI2Nyw4IEBAIGJvb2wgUmVu
ZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlck9iamVjdCYgbywgQ29udHJvbFN0YXRlcyogY29u
dHJvbFN0YXRlcywgY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0
IHBhcnQgPSBvLnN0eWxlKCkuYXBwZWFyYW5jZSgpOwotICAgIEludFJlY3QgaW50ZWdyYWxTbmFw
cGVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qocik7Ci0gICAgRmxvYXRSZWN0IGRldmljZVBp
eGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyLCBvLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgSW50UmVjdCBpbnRlZ3JhbFNuYXBwZWRSZWN0ID0g
c25hcHBlZEludFJlY3Qocik7CisgICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3Qg
PSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKIAogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgc3dpdGNoIChwYXJ0KSB7CkBAIC00MDAs
NyArNDAwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEkKICAgICBVTlVTRURfUEFSQU0ocik7
CiAgICAgcmV0dXJuIG8uc3R5bGUoKS5hcHBlYXJhbmNlKCkgIT0gTm9Db250cm9sUGFydDsKICNl
bHNlCi0gICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRG
b3JQYWludGluZyhyLCBvLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRmxv
YXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIs
IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAvLyBDYWxsIHRoZSBhcHBy
b3ByaWF0ZSBwYWludCBtZXRob2QgYmFzZWQgb2ZmIHRoZSBhcHBlYXJhbmNlIHZhbHVlLgogICAg
IHN3aXRjaCAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgVGV4dEZpZWxkUGFy
dDoKQEAgLTQ1MCw4ICs0NTAsOCBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludERlY29yYXRpb25z
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBJbnRSZWN0IGludGVncmFsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpOwotICAgIEZsb2F0UmVjdCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0ID0gcGl4ZWxT
bmFwcGVkRm9yUGFpbnRpbmcocmVjdCwgcmVuZGVyZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICBJbnRSZWN0IGludGVncmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVj
dChyZWN0KTsKKyAgICBGbG9hdFJlY3QgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMocmVjdCwgcmVuZGVyZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKIAogICAgIC8vIENhbGwgdGhlIGFwcHJvcHJpYXRlIHBhaW50IG1ldGhvZCBiYXNlZCBv
ZmYgdGhlIGFwcGVhcmFuY2UgdmFsdWUuCiAgICAgc3dpdGNoIChyZW5kZXJlci5zdHlsZSgpLmFw
cGVhcmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CmluZGV4IGEwOTBkOWFmMDkyODNkOGRlYzk3NjNkZGJjNTc2MjEyOWE5ZTcxN2EuLjk3ZDcyYjky
NzM1NDI2YzAzZGQyNmQwOTFhNGI1NWIzZWUzMTYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTE4MzgsNyArMTgzOCw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QKICAgICBjb250ZW50TG9jYXRpb24ubW92ZShyZW5kZXJCbG9jay5ib3JkZXJM
ZWZ0KCkgKyByZW5kZXJCbG9jay5wYWRkaW5nTGVmdCgpLCByZW5kZXJCbG9jay5ib3JkZXJUb3Ao
KSArIHJlbmRlckJsb2NrLnBhZGRpbmdUb3AoKSk7CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29u
dGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7Ci0gICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QocmVjdCk7CisgICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHNuYXBw
ZWRJbnRSZWN0KHJlY3QpOwogICAgIGlmIChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxp
Z25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTE4ODQs
NyArMTg4NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5P
dmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKIAogICAgIExheW91dFNpemUgcGx1
Z2luU2l6ZShwbHVnSW5SZW5kZXJlci0+Y29udGVudFdpZHRoKCksIHBsdWdJblJlbmRlcmVyLT5j
b250ZW50SGVpZ2h0KCkpOwogICAgIExheW91dFJlY3QgcGx1Z2luUmVjdChzbmFwc2hvdEFic1Bv
cywgcGx1Z2luU2l6ZSk7Ci0gICAgSW50UmVjdCBhbGlnbmVkUGx1Z2luUmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QocGx1Z2luUmVjdCk7CisgICAgSW50UmVjdCBhbGlnbmVkUGx1Z2luUmVjdCA9
IHNuYXBwZWRJbnRSZWN0KHBsdWdpblJlY3QpOwogCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0
LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAppbmRleCA2ZTk1MTllMzk5MGIxYWU2NDgwNWQ5NDAzMjYzYTAyOTYyMzhiODMyLi40
MDExNGQ5ZDM0N2UxNTUwZTI4YTJkNWZlNmVjMDM5ZTJhZWQ1M2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC01ODcsMTAgKzU4NywxMCBA
QCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAg
ICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0
UmVjdCYgYmFja2dyb3VuZENsaXBSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgTGF5b3V0UmVjdCYgb3V0bGluZUNsaXBSZWN0LAogICAgICAgICAgICAgICAgICAgTGF5ZXJQ
YWludFBoYXNlIHBhaW50UGhhc2UgPSBMYXllclBhaW50UGhhc2VBbGwsIGludCBpbmRlbnQgPSAw
LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvciA9IFJlbmRlckFzVGV4dEJlaGF2aW9yTm9y
bWFsKQogewotICAgIEludFJlY3QgYWRqdXN0ZWRMYXlvdXRCb3VuZHMgPSBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGxheWVyQm91bmRzKTsKLSAgICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChiYWNrZ3JvdW5kQ2xpcFJlY3QpOwotICAgIEludFJl
Y3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoY2xpcFJlY3QpOwotICAg
IEludFJlY3QgYWRqdXN0ZWRPdXRsaW5lQ2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG91
dGxpbmVDbGlwUmVjdCk7CisgICAgSW50UmVjdCBhZGp1c3RlZExheW91dEJvdW5kcyA9IHNuYXBw
ZWRJbnRSZWN0KGxheWVyQm91bmRzKTsKKyAgICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENs
aXBSZWN0ID0gc25hcHBlZEludFJlY3QoYmFja2dyb3VuZENsaXBSZWN0KTsKKyAgICBJbnRSZWN0
IGFkanVzdGVkQ2xpcFJlY3QgPSBzbmFwcGVkSW50UmVjdChjbGlwUmVjdCk7CisgICAgSW50UmVj
dCBhZGp1c3RlZE91dGxpbmVDbGlwUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG91dGxpbmVDbGlwUmVj
dCk7CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggNzcxNWQwNDljN2JkMDJkZjIxNWM4N2FhODMxMWM2
ZjI3NjJmZTlmZC4uNWM5NjA2ZmI2OGM0ZWFmZWE3NjhlNzAxZmEzNmM5YjM0NTBjYjA1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xNDgsNyArMTQ4LDcg
QEAgSW50UmVjdCBSZW5kZXJWaWRlbzo6dmlkZW9Cb3goKSBjb25zdAogICAgIGlmICh2aWRlb0Vs
ZW1lbnQoKS5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkKICAgICAgICAgaW50cmluc2ljU2l6
ZSA9IG1fY2FjaGVkSW1hZ2VTaXplOwogCi0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qo
cmVwbGFjZWRDb250ZW50UmVjdChpbnRyaW5zaWNTaXplKSk7CisgICAgcmV0dXJuIHNuYXBwZWRJ
bnRSZWN0KHJlcGxhY2VkQ29udGVudFJlY3QoaW50cmluc2ljU2l6ZSkpOwogfQogCiBib29sIFJl
bmRlclZpZGVvOjpzaG91bGREaXNwbGF5VmlkZW8oKSBjb25zdApAQCAtMTkxLDkgKzE5MSw5IEBA
IHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAg
ICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgZWxzZSBpZiAodmlldygpLmZy
YW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMpCi0gICAgICAgIG1lZGlhUGxheWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgbWVkaWFQbGF5
ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHJl
Y3QpKTsKICAgICBlbHNlCi0gICAgICAgIG1lZGlhUGxheWVyLT5wYWludChjb250ZXh0LCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KGNvbnRl
eHQsIHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWRlbzo6bGF5b3V0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAyOTBjNzAyZWQ4
ODU3NDBmMGQxMzAyYzM5NzMyYTlhZGY2ZDgxYTAwLi42ODYwMjNhMjIwNjBkNmZmZDA4YzNhY2Nk
MTc0Zjg3MWI0NzYzNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3Rhbmds
ZShjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGZyYW1lVmlldygpLmFkZFRyYWNrZWRSZXBhaW50UmVjdChwaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhyZXBhaW50UmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CisgICAgZnJhbWVWaWV3KCkuYWRkVHJhY2tlZFJlcGFpbnRSZWN0KHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMocmVwYWludFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwog
CiAgICAgLy8gRklYTUU6IGNvbnZlcnQgYWxsIHJlcGFpbnQgcmVjdCBkZXBlbmRlbmNpZXMgdG8g
RmxvYXRSZWN0LgogICAgIEludFJlY3QgZW5jbG9zaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
cmVwYWludFJlY3QpOwpAQCAtNzA3LDEyICs3MDcsMTIgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21w
dXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnQKICAgICAgICAgCiAgICAgLy8gQXBwbHkgb3VyIHRyYW5zZm9ybSBpZiB3ZSBoYXZlIG9uZSAo
YmVjYXVzZSBvZiBmdWxsIHBhZ2Ugem9vbWluZykuCiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVy
ICYmIGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAgIHJlY3QgPSBMYXlv
dXRSZWN0KGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKHJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpKTsKKyAgICAgICAgcmVj
dCA9IExheW91dFJlY3QobGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhyZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKSk7CiB9CiAK
IHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMu
YXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNp
emUoKSkpOworICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgbGF5ZXIoKS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdApAQCAtNzQy
LDcgKzc0Miw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkSW50UmVjdChzZWxSZWN0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3Qo
c2VsUmVjdCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlvbkJv
dW5kcyhjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCkgY29uc3QKQEAgLTExMjIsNyArMTEyMiw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6
dW5zY2FsZWREb2N1bWVudFJlY3QoKSBjb25zdAogewogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dS
ZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsKICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZs
b3dSZWN0KTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOwor
ICAgIHJldHVybiBzbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOwogfQogCiBib29sIFJlbmRl
clZpZXc6OnJvb3RCYWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDIwMzIwMDY0OGUyZTdiNTFmODU1MTVmMTQ5MTM5
M2Q1YmE0ZGIwOTQuLmE4YTM5ZTM3NzU1MGRiMzNiYjRjMzZlZWY3MWFkZjM3MmQxMGQ4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZVJlbmRlckNvdW50ZXIoKSB7IEFTU0VSVChtX3JlbmRlckNv
dW50ZXJDb3VudCA+IDApOyBtX3JlbmRlckNvdW50ZXJDb3VudC0tOyB9CiAgICAgYm9vbCBoYXNS
ZW5kZXJDb3VudGVycygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9CiAgICAgCi0g
ICAgSW50UmVjdCBwaXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVy
biBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsgfQorICAgIEludFJl
Y3QgcGl4ZWxTbmFwcGVkTGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBl
ZEludFJlY3QobGF5b3V0T3ZlcmZsb3dSZWN0KCkpOyB9CiAKICAgICBJbWFnZVF1YWxpdHlDb250
cm9sbGVyJiBpbWFnZVF1YWxpdHlDb250cm9sbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggMWZmODNhOGE1ZWU1M2U1M2U1MjI3MTNkZmFlMDQx
YzU4YjIwNzY1My4uM2NiMTk4YzFmZDllZTcxNTg5YTEzYzA2MmM3NjE3ZTY3ZTVmMzQ0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIzMyw3ICsyMzMs
NyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+
dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdp
ZGdldFBhaW50T2Zmc2V0KTsKICAgICB9Ci0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5j
b250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOworICAgIG1fd2lkZ2V0LT5w
YWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAg
ICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJl
bnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAh
ZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0
KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUmVj
dCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVj
dGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgfQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXpl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAKaW5kZXggMjY2ODMzYWJhM2NiNjk4MzBjMmUzYzY5ZjU2Mjc2ZjVkYzQ1
MTgyZi4uMWNmZGYzMTYxMWZhNTgyNjhhZDJjODQ0OThjZGI2NDZjZDUxODk0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiBzdGF0
aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheW91
dFJlY3QgYm9yZGVyUmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAg
IGJvcmRlclJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBJbnRSZWN0IHNuYXBwZWRSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3JkZXJSZWN0KTsKKyAgICBJbnRSZWN0IHNuYXBwZWRS
ZWN0ID0gc25hcHBlZEludFJlY3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKHNuYXBwZWRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKaW5kZXggNGJmOGM2ZTVkNGViZjYxNzk1ZWY4ODk0MmUwMjZlN2IyOTU0NjgyZC4uODJm
MmEyODZhMDhiZDhkOWFlMWM1MDQ1NDA1OGFmZmY2YjlkNmFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1No
YXBlLCBjb25zdCBMYQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0
ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYg
aW1hZ2VSLCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgZmxvYXQgbWFyZ2luKQogewotICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChpbWFnZVIpOwotICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QobWFyZ2luUik7CisgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChp
bWFnZVIpOworICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIp
OwogICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVy
dmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCAwY2M0ZTA3ZDc4ZjE3YmQwYWRlYzE2
NjExOGU5OTUyMjY5ZTcxY2MzLi5mYzdjODA0OGMyODIzMTVjZmY2MWFkZTM2ZTU4YjgyOTZjNjBh
NWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01v
ZGVsT2JqZWN0OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
TwogICAgIGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CiAKICAgICBGbG9hdFF1
YWQgY29udGFpbmVyUmVsYXRpdmVRdWFkID0gbG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRSZWN0
KGJveCksIHJlcGFpbnRDb250YWluZXIpOwotICAgIHJldHVybiBMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRpdmVRdWFkLmJvdW5kaW5n
Qm94KCkpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gTGF5
b3V0UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRp
dmVRdWFkLmJvdW5kaW5nQm94KCkpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsK
IH0KIAogdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRl
eCAwMjhiMDc5YjgyZTVkMDUwOTNhZGJkYmM4ZmQ3NjM5NmM2MTZmNjlhLi5mYjIyOWE0OTNhMTdi
YWQ0OWQxZTQ2ZTM2N2FhOTdmNGYxZTVjYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJlbmRl
clNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludAogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAgICAg
aWYgKHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zm
c2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQ
YWludEluZm8uY29udGV4dC0+Y2xpcChzbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBh
aW50T2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKIAogICAgIC8v
IENvbnZlcnQgZnJvbSBjb250YWluZXIgb2Zmc2V0cyAoaHRtbCByZW5kZXJlcnMpIHRvIGEgcmVs
YXRpdmUgdHJhbnNmb3JtIChzdmcgcmVuZGVyZXJzKS4KICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBv
dXIgcGFpbnQgY29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gb3VyIGxvY2FsIGNvb3Jk
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCmluZGV4IGIyMTExOTZmZDJiNWM1OTdmMmU1ZTE3MDUwMTRlMjFkOTcwN2IwNGEuLmQ0MGJh
YzMyYjYzZWY2MWRlYzVlNWIzY2YzYzNjODYzNzM2YzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdt
ZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3Qg
PSBMYXlvdXRSZWN0KHRleHRPcmlnaW4sIExheW91dFNpemUoMCwgZnJhZ21lbnQuaGVpZ2h0ICog
c2NhbGluZ0ZhY3RvcikpOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHls
ZSwgZnJhZ21lbnQpOwogICAgIHNjYWxlZEZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
cnVuLCBzZWxlY3Rpb25SZWN0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgRmxv
YXRSZWN0IHNuYXBwZWRTZWxlY3Rpb25SZWN0ID0gZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQ
YWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSwgcnVuLmx0cigpKTsKKyAgICBGbG9hdFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3Qg
PSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSk7
CiAgICAgaWYgKHNjYWxpbmdGYWN0b3IgPT0gMSkKICAgICAgICAgcmV0dXJuIHNuYXBwZWRTZWxl
Y3Rpb25SZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDM4ODI0
ZDJhNTZiMjczMWU1Yzc2YjUyNDQxYjIyMGQ1YWRjY2NmYy4uMjZjY2E0NGFiMGNmNmM3NWQwOWQ2
ZjFmMWQ5MzBmYmRlOGE4MDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMzA2MCw3ICszMDYwLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNF
TCBzKQogICAgICAgICAgICAgW3JlZ2lvblZhbHVlcyByZWxlYXNlXTsKICAgICAgICAgfQogCi0g
ICAgICAgIFdlYkRhc2hib2FyZFJlZ2lvbiAqd2ViUmVnaW9uID0gW1tXZWJEYXNoYm9hcmRSZWdp
b24gYWxsb2NdIGluaXRXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMp
IGNsaXA6cGl4ZWxTbmFwcGVkSW50UmVjdChyZWdpb24uY2xpcCkgdHlwZTp0eXBlXTsKKyAgICAg
ICAgV2ViRGFzaGJvYXJkUmVnaW9uICp3ZWJSZWdpb24gPSBbW1dlYkRhc2hib2FyZFJlZ2lvbiBh
bGxvY10gaW5pdFdpdGhSZWN0OnNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6c25h
cHBlZEludFJlY3QocmVnaW9uLmNsaXApIHR5cGU6dHlwZV07CiAgICAgICAgIFtyZWdpb25WYWx1
ZXMgYWRkT2JqZWN0OndlYlJlZ2lvbl07CiAgICAgICAgIFt3ZWJSZWdpb24gcmVsZWFzZV07CiAg
ICAgfQpAQCAtMzkxMyw3ICszOTEzLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlk
IG8sIFNFTCBzKQogICAgIE5TTXV0YWJsZUFycmF5KiByZWN0c0FycmF5ID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZXBhaW50UmVjdHMuc2l6ZSgpXTsKICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVwYWludFJlY3RzLnNpemUoKTsgKytpKQot
ICAgICAgICBbcmVjdHNBcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpwaXhl
bFNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QocmVwYWludFJlY3RzW2ldKSldXTsKKyAgICAgICAg
W3JlY3RzQXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6c25hcHBlZEludFJl
Y3QoTGF5b3V0UmVjdChyZXBhaW50UmVjdHNbaV0pKV1dOwogCiAgICAgcmV0dXJuIFtyZWN0c0Fy
cmF5IGF1dG9yZWxlYXNlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwCmluZGV4IDRjOWYyNTI0YTk0Y2I1OTAwYTM3YzgwOThjMzgwOTdiNjA1YjUw
NjkuLmNkZGRjODE2YWJiODE3ZTgzNTc3YjkxMGM2MzNlMzBhMGVlNjA1ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTc5LDcgKzE3OSw3
IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVy
ZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTGF5
b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwor
ICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gc25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50
aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0Ry
YXcobV9ub2RlLmdldCgpKTsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gaW1hZ2VGb3JS
ZWN0KGZyYW1lVmlldywgcGFpbnRpbmdSZWN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMmEwNmU2MGM0MTBhOTk0YWY1
NDY3Nzg0NGRlZTIwM2MyMDMyNDVkLi5iNmM3ZTBkODExNDU1YzZlODA1N2ZjMDBkMWM4MWI0NjJj
Mzk1ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpz
bmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50
UmVjdCBzbmFwc2hvdFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHNuYXBzaG90UmVj
dCA9IHNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKTsKIAogICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IDE7CiAgICAgSW50U2l6ZSBz
bmFwc2hvdFNpemUgPSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tCmluZGV4IDE2ZjcyMjIyNTFmODQ4MGYwNjY1Y2E3MDhiY2JkMzljNDVlZWQz
MGQuLmZiNjhiN2ExMDI3ZmYzZjI0MmE4YzFkOGM4YmMwYmMxYWZjMmEyMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCkKICAgICAgICAg
RnJhbWVWaWV3KiB2aWV3Rm9yUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS0+b3duZXJEb2N1bWVudCgp
LnZpZXcoKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX2N1cnJlbnRTZWxlY3Rpb25S
ZWN0cykgewotICAgICAgICAgICAgSW50UmVjdCBjdXJyZW50UmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QocmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IGN1cnJlbnRSZWN0ID0gc25hcHBlZElu
dFJlY3QocmVjdCk7CiAgICAgICAgICAgICBjdXJyZW50UmVjdC5zZXRMb2NhdGlvbihtYWluRnJh
bWVWaWV3LndpbmRvd1RvQ29udGVudHModmlld0ZvclJhbmdlLT5jb250ZW50c1RvV2luZG93KGN1
cnJlbnRSZWN0LmxvY2F0aW9uKCkpKSk7CiAgICAgICAgICAgICBjZ1JlY3RzLmFwcGVuZCgoQ0dS
ZWN0KWN1cnJlbnRSZWN0KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237282</attachid>
            <date>2014-08-27 20:23:57 -0700</date>
            <delta_ts>2014-08-27 20:41:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136319-20140827202350.patch</filename>
            <type>text/plain</type>
            <size>146222</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlNjYxY2U4MDg4NWM0
ZTFkZDFiMmFjYjU1MGRlYTQyNTNmMzc5NC4uM2E2ZjEyZWRiZjc3YjAzYWI3YTVmNTU3YTU4MzY1
YjRhZGQ5MTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzNSBAQAogMjAxNC0wOC0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCisgICAgICAgIFN1YnBpeGVsIGxheW91dDog
UmVuYW1lIExheW91dFJlY3QncyBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEZyb20gcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoKSB0byBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKCkgYW5kIAorICAgICAg
ICBwaXhlbFNuYXBwZWRJbnRSZWN0KigpIHRvIHNuYXBwZWRJbnRSZWN0KigpLgorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmJvdW5kaW5nQm94Rm9yUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNPbnNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwaXhlbFNuYXBwZWRFbGVtZW50UmVjdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlv
blJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eUFjdGl2YXRpb25Qb2ludF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RnJhbWVdKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0
TWVudV0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tOgor
ICAgICAgICAoLVtET01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hXaXRoT3duZXI6XSk6Cisg
ICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6XSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlZFRyYW5zZm9ybSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnBpeGVsU25hcHBlZFJlbmRlclJlY3QpOgorICAgICAgICAqIGVkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9u
OjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlk
UGFpbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpleHRlbmRlZEJhY2tncm91bmRSZWN0Rm9yUGFpbnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdEZvckZyYW1l
T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVy
VG9Db250YWluaW5nVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL2lv
cy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xp
Y2tFdmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZWN0VG9E
ZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nUmVjdEZvclBhaW50aW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzbmFwcGVkSW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzbmFw
cGVkSW50UmVjdEZyb21FZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3Jp
dGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRJbnRSZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQ
aXhlbEFsaWdubWVudCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6
cGFpbnRTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBw
bHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojpwb3NpdGlvbkZvck9mZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRWaXN1YWxPdmVyZmxvd0Zyb21U
aGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsaXBP
dXRGbG9hdGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojph
ZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVSZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGl4ZWxTbmFwcGVk
RnJhbWVSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBpeGVs
U25hcEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Rm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3Vh
bE92ZXJmbG93RnJvbVRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckhU
TUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjbGlwVG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0UmVzaXplckluRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmJhY2tncm91bmRCb3hGb3JQYWludGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRl
bnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3Np
dGluZ0ZvclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3Vz
UmluZ1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91
bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWV0ZXI6OnVwZGF0ZUxv
Z2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxl
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpwYWludE91dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojph
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnJlcGFpbnRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBy
b2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNlYXJjaEZpZWxkOjpzaG93UG9wdXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2Vk
Qm9yZGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRl
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWRlbzo6dmlkZW9Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VmlkZW86OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpwYWludERlYnVnQm9yZGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRC
b3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQpOgorCisyMDE0LTA4LTI3ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgU3VicGl4ZWwgbGF5b3V0OiBSZW5h
bWUgTGF5b3V0UG9pbnQncyBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZnVuY3Rpb25zLgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzA2CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA0MmFlZjRmMzk5YmFlMGU5NzcyNjllMmI0MGYxYTRiMzRmMjZkMWZiLi40
YjU1YmQ0NjM0YjFlZjIxNTk5NTZmZjBlNjIwNDEyMDI3OWNiYzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDgtMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBTdWJwaXhlbCBsYXlvdXQ6IFJlbmFtZSBMYXlvdXRSZWN0J3MgZGV2
aWNlIHBpeGVsIHNuYXBwaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBGcm9tIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKCkgdG8gc25h
cFJlY3RUb0RldmljZVBpeGVscygpIGFuZCAKKyAgICAgICAgcGl4ZWxTbmFwcGVkSW50UmVjdCoo
KSB0byBzbmFwcGVkSW50UmVjdCooKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfZGFzaGJvYXJkUmVnaW9uc10pOgorICAgICAgICAoLVtXZWJWaWV3IHRyYWNrZWRSZXBhaW50
UmVjdHNdKToKKwogMjAxNC0wOC0yNSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlcGxhY2UgdXNlIG9mIFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVk
TmFtZSB3aXRoIE5TTG9jYWxlIHB1YmxpYyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiNWQxOTczZDc3ZmNk
ZWNhYTcxMTQ2ZjIzODBjYzRiYTY0MzAyNmI1Li5kMTE4ZWY4MTQzMDRhZjdiZmI4MGZkMzZjMjIw
NzE5OGUxZGM1ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDgtMjcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdWJwaXhlbCBsYXlvdXQ6
IFJlbmFtZSBMYXlvdXRSZWN0J3MgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGZ1bmN0aW9ucy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjMxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBGcm9tIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKCkgdG8gc25hcFJlY3RUb0RldmljZVBpeGVscygpIGFuZCAKKyAgICAg
ICAgcGl4ZWxTbmFwcGVkSW50UmVjdCooKSB0byBzbmFwcGVkSW50UmVjdCooKS4KKworICAgICAg
ICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdE5vZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6YnVpbGRTZWxlY3Rpb25IaWdobGlnaHQpOgorCiAyMDE0LTA4LTI3ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdDIg
c3dpcGUgZ2VzdHVyZSBzaG91bGQgcmVwb3J0IHRoZSBwb3NpdGlvbiBvZiB0aGUgc25hcHNob3Qg
dG8gdGhlIGNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggODhiMzRiMTJmNmVjMTdlMTJkMmU4YmVhZDIyOWI2
NjE3ZjZlODIyOC4uNTMwYTg1M2NiZDA4MmUyMjExYzE4NmRhN2E2NzYzZmM5YzUxOGU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCkBAIC03NjYsNyArNzY2LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpi
b3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAg
ICAgICAgIHJlc3VsdC51bml0ZShyKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGl4
ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KHJlc3VsdCkpOworICAgIHJldHVybiBzbmFwcGVk
SW50UmVjdChMYXlvdXRSZWN0KHJlc3VsdCkpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwcmVzcygpCkBAIC0yMjE4LDggKzIyMTgsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvdXRlciA9IG9iamVjdHNbaV07CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGlubmVyID0gb2JqZWN0c1tpIC0gMV07CiAgICAgICAgIC8vIEZJWE1FOiB1bmNsZWFyIGlm
IHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdC4KLSAgICAgICAgY29uc3QgSW50
UmVjdCBvdXRlclJlY3QgPSBpIDwgbGV2ZWxzID8gcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRlci0+
Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7Ci0gICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5uZXItPnBh
cmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0JveFJlY3Qo
KSk7CisgICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHNuYXBw
ZWRJbnRSZWN0KG91dGVyLT5ib3VuZGluZ0JveFJlY3QoKSkgOiBvdXRlci0+Z2V0U2Nyb2xsYWJs
ZUFyZWFJZlNjcm9sbGFibGUoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKKyAgICAgICAgY29uc3QgSW50UmVjdCBpbm5l
clJlY3QgPSBzbmFwcGVkSW50UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygp
ID8gaW5uZXItPnBhcmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3Vu
ZGluZ0JveFJlY3QoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIW91dGVyUmVjdC5pbnRlcnNl
Y3RzKGlubmVyUmVjdCkpIHsKICAgICAgICAgICAgIGlzT25zY3JlZW4gPSBmYWxzZTsKQEAgLTIy
MzIsNyArMjIzMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbigpIGNv
bnN0CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNv
bnN0CiB7Ci0gICAgSW50UmVjdCBvYmplY3RSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3Vu
ZGluZ0JveFJlY3QoKSk7CisgICAgSW50UmVjdCBvYmplY3RSZWN0ID0gc25hcHBlZEludFJlY3Qo
Ym91bmRpbmdCb3hSZWN0KCkpOwogICAgIG9iamVjdFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQo
KSk7CiAgICAgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKaW5kZXggN2U4OWY3MmM4NTZhMzZlYzc5ZWEyZDA2YmNjZDRmY2NhNjFjNDI2Mi4uMWEyMjc3
NjVmZTc1YTQ2YTkwNDhjZWUyN2ZiMTMzNzMzOGJiZDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTY4OCw5ICs2ODgs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRp
bmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdCb3hS
ZWN0KCkpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAw
OwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkRWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBw
aXhlbFNuYXBwZWRJbnRSZWN0KGVsZW1lbnRSZWN0KCkpOyB9CisgICAgSW50UmVjdCBwaXhlbFNu
YXBwZWRFbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGVsZW1lbnRS
ZWN0KCkpOyB9CiAgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudFJl
Y3QoKS5zaXplKCk7IH0KICAgICBJbnRTaXplIHBpeGVsU25hcHBlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBlbGVtZW50UmVjdCgpLnBpeGVsU25hcHBlZFNpemUoKTsgfQogICAgIHZpcnR1YWwgSW50
UG9pbnQgY2xpY2tQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjdlMDVhYTc1NTM1
MTBjNzM3NjY2NDgzZTUyZTFiNGZlNzIzOGEyNS4uZjMzODM3NTIzZmI2YmIwMmZiYTZhYTQ4NWE2
ZGUzN2FiZjU1MGJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1JlYWRPbmx5KCkgY29uc3QKIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogewogICAgIEFT
U0VSVChtX3JlbmRlcmVyKTsKLSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CisgICAg
SW50UmVjdCBjb250ZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmFic29sdXRl
Q2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVk
IExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCiAgICAgSW50UmVjdCB2aWV3UmVjdCA9IG1f
cmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJs
ZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogICAgIHZpZXdSZWN0LmludGVy
c2VjdChjb250ZW50UmVjdCk7CkBAIC0xOTUyLDkgKzE5NTIsOSBAQCBJbnRSZWN0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQbwogICAgIH0KICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIG1fcmVu
ZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50c1RvU2NyZWVuKHBpeGVsU25hcHBlZElu
dFJlY3Qob3VycmVjdCkpOworICAgIHJldHVybiBtX3JlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3
KCkuY29udGVudHNUb1NjcmVlbihzbmFwcGVkSW50UmVjdChvdXJyZWN0KSk7CiAjZWxzZQotICAg
IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KG91cnJlY3QpOworICAgIHJldHVybiBzbmFwcGVk
SW50UmVjdChvdXJyZWN0KTsKICNlbmRpZgogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQppbmRleCAyM2E1NTM2MmNkMmYxZWY1NjZjZDgxZTg2YzY4ZDRjMzY3
NzFiM2Q5Li5mM2YxYTZiYjVlOWE5NmIyNWY5YmNmNmE3OGRjMjA1NTA2YWRjY2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTIwOSw3ICsxMjA5LDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQs
IE5TU3RyaW5nICpzdHJpbmcpCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkKICAgICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAgIAotICAgIEludFJlY3QgcmVj
dCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9vYmplY3QtPmJvdW5kaW5nQm94UmVjdCgpKTsKKyAg
ICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVjdC0+Ym91bmRpbmdCb3hSZWN0
KCkpOwogICAgIENHUmVjdCBjZ1JlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdFRvU2NyZWVuU3BhY2U6
cmVjdF07CiAgICAgcmV0dXJuIENHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoY2dSZWN0KSwgQ0dS
ZWN0R2V0TWlkWShjZ1JlY3QpKTsKIH0KQEAgLTEyMTksNyArMTIxOSw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAq
c3RyaW5nKQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAg
ICAgIHJldHVybiBDR1JlY3RaZXJvOwogICAgIAotICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOworICAgIEludFJlY3QgcmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpKTsKICAgICByZXR1cm4gW3Nl
bGYgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOnJlY3RdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDdiZTVlYTc0ZGU0YzU1ZjM0ZWM5YThlYjY1ODcw
YzE1NDBlMzlkNWYuLmRjMjFmZjFiNTczM2M1NmE1ODI4MGNmNDlkNWQ2MDdhNjllNTRiMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xODE4LDcgKzE4MTgs
NyBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkICpp
bmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbAogCiAtIChOU1ZhbHVlICopcG9zaXRpb24KIHsK
LSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50
UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxl
bWVudFJlY3QoKSk7CiAgICAgCiAgICAgLy8gVGhlIENvY29hIGFjY2Vzc2liaWxpdHkgQVBJIHdh
bnRzIHRoZSBsb3dlci1sZWZ0IGNvcm5lci4KICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQgPSBG
bG9hdFBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7CkBAIC0zMTg5LDcgKzMxODksNyBAQCBz
dGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFs
dWUpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAg
SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOwog
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7
CiAgICAgCiAgICAgLy8gT24gV0syLCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBzY3JvbGwg
cG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCmluZGV4IDg0MDkyZDc0ODk4OWQxMGNjNTc0MjlhMzA5YmU2MGEwN2ZmM2M2
ZDguLmI0YTk4YjJmNGE5MDFiN2Q1NTUwYjI1ZmMyZmE2ZGUzY2I0MTI1NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC00
MTQsNyArNDE0LDcgQEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogLSAoQ0dSZWN0
KWJvdW5kaW5nQm94V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgogewogICAgIC8vIGlnbm9y
ZXMgdHJhbnNmb3JtcwotICAgIHJldHVybiBhbk93bmVyID8gcGl4ZWxTbmFwcGVkSW50UmVjdChj
b3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSkgOiBDR1Jl
Y3RaZXJvOworICAgIHJldHVybiBhbk93bmVyID8gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+
Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKIH0K
IAogLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKQEAg
LTQyMiw3ICs0MjIsNyBAQCB1c2luZyBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb247CiAgICAgaWYg
KGFuT3duZXIpIHsKICAgICAgICAgLy8gRklYTUU6IEVDTEFJUgogICAgICAgICAvL1dlYkNvcmU6
OkZsb2F0UXVhZCB0aGVRdWFkID0gY29yZShzZWxmKS0+Z2V0QWJzb2x1dGVRdWFkKGNvcmUoYW5P
d25lciktPnJlbmRlcmVyKCkpOwotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJl
bmRlcmVyKCkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJl
Y3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOwog
ICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAgICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3Qu
eCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgo
KSwgcmVjdC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAppbmRleCBlMzAxODhjMGE2MmFlMWIzOTRiZDkzOTk2MTFhZjY4YjM4
NzY4ZWQ2Li4xZTQ0OTM5MzMyNmRkNmE1ZWZmY2YxOTc1Y2M3ODIzM2QyNDY4YTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5z
Zm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTCiAKICAgICBGbG9hdFJl
Y3QgcGl4ZWxTbmFwcGVkUmVjdDsKICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAg
IHBpeGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh0b1JlbmRlckJveChy
ZW5kZXJlciktPmJvcmRlckJveFJlY3QoKSwgcmVuZGVyZXItPmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgIHBpeGVsU25hcHBlZFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpLCByZW5kZXJlci0+
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBwaXhl
bFNuYXBwZWRSZWN0LCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAppbmRleCAxNjc0ZTY3YjNmYzMwMzI1NWE0OWE1YzMyYjM3YWVlMzkzOTM4NTVjLi4wYTk3
NjAyYjFmMGY0ZjcxNzNiYjdiY2U2MzE0YjRhMjhlMTg0NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3
OCw5ICszNzgsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJv
dW5kaW5nQm94KCkgY29uc3Q7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCgp
IGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0KKyAg
ICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc25hcHBl
ZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0
IHJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCk7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRS
ZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpIHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qo
cmVuZGVyUmVjdChpc1JlcGxhY2VkKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlbmRl
clJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gc25hcHBlZEludFJlY3QocmVuZGVyUmVj
dChpc1JlcGxhY2VkKSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIG5vZGVJbmRl
eCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNw
cAppbmRleCA0ZDYyOGY5ZGI3NDZhNDdlNjkwYmJhOWE2NjEyNGYyZWVhMWEzMmQ2Li4yNmU1N2U2
MzczMDczZDhkNzIzNTc1ZTI3ZjE4MjBjM2UzNzJhMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBJbnRSZWN0IFJl
bmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUpIGNvbnN0CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSW50UmVjdCgp
OwogCi0gICAgSW50UmVjdCBsb2NhbFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fcmVuZGVy
ZXItPmxvY2FsQ2FyZXRSZWN0KG1faW5saW5lQm94LCBtX29mZnNldCwgZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lKSk7CisgICAgSW50UmVjdCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChtX3JlbmRl
cmVyLT5sb2NhbENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkpOwogICAgIHJldHVybiBsb2NhbFJlY3QgPT0gSW50UmVjdCgpID8gSW50UmVjdCgp
IDogbV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSku
ZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQppbmRleCAwNTIwYjY3ZjEzYmZhNTYzZmFmMGViNDBm
MTc4N2VhNjkyZjY4YTkxLi45YmRlZTFjY2ZjYThiNjVlYTc0ZTZjNzFmMTJmZmYwZjEwMmQzOTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5t
bQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmls
aXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBz
ZWxlY3Rpb25SZWN0ID0gYWJzb2x1dGVDYXJldEJvdW5kcygpOwotICAgIEludFJlY3Qgdmlld1Jl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclZpZXctPnZpZXdSZWN0KCkpOworICAgIElu
dFJlY3Qgdmlld1JlY3QgPSBzbmFwcGVkSW50UmVjdChyZW5kZXJWaWV3LT52aWV3UmVjdCgpKTsK
IAogICAgIHNlbGVjdGlvblJlY3QgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oc2VsZWN0
aW9uUmVjdCk7CiAgICAgdmlld1JlY3QgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4odmll
d1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAy
NDg3Y2ZkOWY5MWQ1ZjA0ODQzM2Y1MmQxNzIxNDA1MjFmMTU4MWZjLi5mZGIxY2JhYTU3NjBiMDhh
MzU2YTE4MTMyODg1ZmQyZTE5MDc0NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcApAQCAtMzk3LDkgKzM5Nyw5IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9v
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyKCktPnN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZDZiYTFkMWRkYmExYjk2ODI4ZjRiMzlmY2M0MTE3ZDg5
MzVhMTE3MC4uYTMxYzkxZDBiZDU0Mjg2NGM3M2RiNzFjNmNlNDE5NmI3ZDM0ZjdiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNzA0LDcg
KzcwNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
ZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIEZyYW1lVmlldyogY29udGFpbmluZ1ZpZXcgPSBjb250
YWluaW5nRnJhbWUtPnZpZXcoKTsKLSAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChjb250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSk7CisgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHNu
YXBwZWRJbnRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bW9kZWxPYmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChyZW5kZXJlcikgOiBudWxscHRyOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJp
bmcoIm5vZGVXaWR0aCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2JqZWN0ID8gYWRqdXN0Rm9yQWJz
b2x1dGVab29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCAqbW9kZWxP
YmplY3QpIDogYm91bmRpbmdCb3gud2lkdGgoKSkpOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJp
bmcoIm5vZGVIZWlnaHQiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFi
c29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCksICptb2Rl
bE9iamVjdCkgOiBib3VuZGluZ0JveC5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA3MzE0MDU4OTFhMTAwYjc5OTkw
OGU5Y2QxNDlmYmNmNzI3ODMwZGFiLi5lYjhhNDkyMmJhOTJlN2JmMzViMDYwYzVhZGUwZjUzNDc4
YTgzYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRQ
YWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAg
CiAgICAgTGF5b3V0UmVjdCByb290UmVjdCA9IGFic29sdXRlUmVjdDsKICAgICBpZiAoIXZpZXct
PmZyYW1lKCkuaXNNYWluRnJhbWUoKSkgewotICAgICAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9
IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVj
dCkpOworICAgICAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXctPmNvbnRlbnRzVG9Sb290
VmlldyhzbmFwcGVkSW50UmVjdChhYnNvbHV0ZVJlY3QpKTsKICAgICAgICAgcm9vdFJlY3QgPSB2
aWV3LT5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHJvb3RW
aWV3UmVjdCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcAppbmRleCA0Y2MyODJkYTRlZmQxZWJhZWYyZDhiOGJmYzdjMmI4NDQxMTQ3OTUxLi4x
ZjRmZGE4MDU5MTQ3YTc2ZTc4ZjE0Mzg2MDE4ZjFhZWUyZWI5ZGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9k
ZSkKICAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAgICAgTGF5b3V0
UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBw
aXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBzbmFwcGVk
SW50UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggOGY0MmU2NTM4ZTg4MGYxZDhlNTQ1MjhkYjM1MTFkODgyN2VkY2U0Mi4uMTFiNmUxNTkw
NjliNGUwYjYzN2IzNDQ3NzNhOTIyNmIyNGZiMGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTc5MSw3ICsxNzkxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIEludFJlY3Qg
dXBkYXRlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobGF5ZXItPnJlcGFpbnRSZWN0SW5jbHVk
aW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cygpKTsKKyAgICAgICAgSW50UmVjdCB1cGRhdGVS
ZWN0ID0gc25hcHBlZEludFJlY3QobGF5ZXItPnJlcGFpbnRSZWN0SW5jbHVkaW5nTm9uQ29tcG9z
aXRpbmdEZXNjZW5kYW50cygpKTsKICAgICAgICAgdXBkYXRlUmVjdCA9IGNvbnRlbnRzVG9Sb290
Vmlldyh1cGRhdGVSZWN0KTsKICAgICAgICAgaWYgKCFpc0NvbXBvc2l0ZWRDb250ZW50TGF5ZXIg
JiYgY2xpcHNSZXBhaW50cygpKQogICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVj
dFRvU2Nyb2xsKTsKQEAgLTI3MjMsMTEgKzI3MjMsMTEgQEAgSW50UmVjdCBGcmFtZVZpZXc6OmV4
dGVuZGVkQmFja2dyb3VuZFJlY3RGb3JQYWludGluZygpIGNvbnN0CiAgICAgCiAgICAgTGF5b3V0
UmVjdCBleHRlbmRlZFJlY3QgPSByZW5kZXJWaWV3LT51bmV4dGVuZGVkQmFja2dyb3VuZFJlY3Qo
cmVuZGVyVmlldyk7CiAgICAgaWYgKCF0aWxlZEJhY2tpbmctPmhhc01hcmdpbnMoKSkKLSAgICAg
ICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoZXh0ZW5kZWRSZWN0KTsKKyAgICAgICAgcmV0
dXJuIHNuYXBwZWRJbnRSZWN0KGV4dGVuZGVkUmVjdCk7CiAgICAgCiAgICAgZXh0ZW5kZWRSZWN0
Lm1vdmVCeShMYXlvdXRQb2ludCgtdGlsZWRCYWNraW5nLT5sZWZ0TWFyZ2luV2lkdGgoKSwgLXRp
bGVkQmFja2luZy0+dG9wTWFyZ2luSGVpZ2h0KCkpKTsKICAgICBleHRlbmRlZFJlY3QuZXhwYW5k
KExheW91dFNpemUodGlsZWRCYWNraW5nLT5sZWZ0TWFyZ2luV2lkdGgoKSArIHRpbGVkQmFja2lu
Zy0+cmlnaHRNYXJnaW5XaWR0aCgpLCB0aWxlZEJhY2tpbmctPnRvcE1hcmdpbkhlaWdodCgpICsg
dGlsZWRCYWNraW5nLT5ib3R0b21NYXJnaW5IZWlnaHQoKSkpOwotICAgIHJldHVybiBwaXhlbFNu
YXBwZWRJbnRSZWN0KGV4dGVuZGVkUmVjdCk7CisgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGV4
dGVuZGVkUmVjdCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzaG91bGRVcGRhdGVXaGlsZU9mZnNj
cmVlbigpIGNvbnN0CkBAIC0zMTgwLDkgKzMxODAsOSBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2lu
ZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZQogICAgIC8vIEFwcGx5IHRoZSBjbGlwIGZyb20gdGhlIGxheWVyLgogICAgIEludFJlY3QgY2xp
cFJlY3Q7CiAgICAgaWYgKGNsaXBUb0xheWVyQ29udGVudHMpCi0gICAgICAgIGNsaXBSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXllci0+Y2hpbGRyZW5DbGlwUmVjdCgpKTsK
KyAgICAgICAgY2xpcFJlY3QgPSBzbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXllci0+Y2hpbGRy
ZW5DbGlwUmVjdCgpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChlbmNsb3NpbmdMYXllci0+c2VsZkNsaXBSZWN0KCkpOworICAgICAgICBjbGlwUmVj
dCA9IHNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheWVyLT5zZWxmQ2xpcFJlY3QoKSk7CiAgICAg
Y2xpcFJlY3QgPSBjb250ZW50c1RvV2luZG93KGNsaXBSZWN0KTsgCiAgICAgcmV0dXJuIGludGVy
c2VjdGlvbihjbGlwUmVjdCwgd2luZG93Q2xpcFJlY3QoKSk7CiB9CkBAIC0zOTk3LDcgKzM5OTcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQoZmxvYXQgKm5l
d0JvdHRvbSwgZmxvYXQgb2xkVG9wLCBmbG9hdAogCiBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVy
dEZyb21SZW5kZXJlclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGNvbnN0IEludFJlY3QmIHJlbmRlcmVyUmVjdCkgY29uc3QKIHsKLSAgICBJbnRSZWN0IHJl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXItPmxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlbmRlcmVyUmVjdCkpLmJvdW5kaW5nQm94KCkp
KTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0
KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZW5kZXJlclJlY3QpKS5i
b3VuZGluZ0JveCgpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gcGFnZSAoImFic29sdXRlIikg
dG8gRnJhbWVWaWV3IGNvb3JkaW5hdGVzLgogICAgIGlmICghZGVsZWdhdGVzU2Nyb2xsaW5nKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBhZDBhYTNkNGQ4M2M1OTU4N2UwYTI5NzEyNWQ5OTdlNTQ2
YmJhZTYyLi45YzQxNmY4OTIzNzgzZTM1ZjY2NTY1OWY4OGZlNGRmNzRhZGJhZTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE0MzYsMTAgKzE0MzYsMTAgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
b2IKICAgICBMYXlvdXRSZWN0IHJlbGV2YW50UmVjdCA9IHJlbGV2YW50Vmlld1JlY3QoJm9iamVj
dC0+dmlldygpKTsKIAogICAgIC8vIFRoZSBvYmplY3RzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRo
ZXkgYXJlIGJlaW5nIHBhaW50ZWQgd2l0aGluIHRoZSB2aWV3UmVjdCgpLgotICAgIGlmICghb2Jq
ZWN0UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVjdChyZWxldmFudFJlY3Qp
KSkKKyAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KHJl
bGV2YW50UmVjdCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHNuYXBwZWRQYWlu
dFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG9iamVjdFBhaW50UmVjdCk7CisgICAgSW50UmVj
dCBzbmFwcGVkUGFpbnRSZWN0ID0gc25hcHBlZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KTsKIAog
ICAgIC8vIElmIHRoaXMgb2JqZWN0IHdhcyBwcmV2aW91c2x5IGNvdW50ZWQgYXMgYW4gdW5wYWlu
dGVkIG9iamVjdCwgcmVtb3ZlIGl0IGZyb20gdGhhdCBIYXNoU2V0CiAgICAgLy8gYW5kIGNvcnJl
c3BvbmRpbmcgUmVnaW9uLiBGSVhNRTogVGhpcyBkb2Vzbid0IGRvIHRoZSByaWdodCB0aGluZyBp
ZiB0aGUgb2JqZWN0cyBvdmVybGFwLgpAQCAtMTQ1NywxMSArMTQ1NywxMSBAQCB2b2lkIFBhZ2U6
OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBvYgogICAgIC8vIElmIHRoZSByZWN0IHN0cmFkZGxlcyBib3RoIFJlZ2lvbnMs
IHNwbGl0IGl0IGFwcHJvcHJpYXRlbHkuCiAgICAgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRlcnNl
Y3RzKHNuYXBwZWRQYWludFJlY3QpICYmIGJvdHRvbVJlbGV2YW50UmVjdC5pbnRlcnNlY3RzKHNu
YXBwZWRQYWludFJlY3QpKSB7CiAgICAgICAgIEludFJlY3QgdG9wSW50ZXJzZWN0aW9uID0gc25h
cHBlZFBhaW50UmVjdDsKLSAgICAgICAgdG9wSW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhlbFNu
YXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVjdCkpOworICAgICAgICB0b3BJbnRlcnNlY3Rpb24u
aW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVjdCkpOwogICAgICAgICBtX3Rv
cFJlbGV2YW50UGFpbnRlZFJlZ2lvbi51bml0ZSh0b3BJbnRlcnNlY3Rpb24pOwogCiAgICAgICAg
IEludFJlY3QgYm90dG9tSW50ZXJzZWN0aW9uID0gc25hcHBlZFBhaW50UmVjdDsKLSAgICAgICAg
Ym90dG9tSW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdHRvbVJl
bGV2YW50UmVjdCkpOworICAgICAgICBib3R0b21JbnRlcnNlY3Rpb24uaW50ZXJzZWN0KHNuYXBw
ZWRJbnRSZWN0KGJvdHRvbVJlbGV2YW50UmVjdCkpOwogICAgICAgICBtX2JvdHRvbVJlbGV2YW50
UGFpbnRlZFJlZ2lvbi51bml0ZShib3R0b21JbnRlcnNlY3Rpb24pOwogICAgIH0gZWxzZSBpZiAo
dG9wUmVsZXZhbnRSZWN0LmludGVyc2VjdHMoc25hcHBlZFBhaW50UmVjdCkpCiAgICAgICAgIG1f
dG9wUmVsZXZhbnRQYWludGVkUmVnaW9uLnVuaXRlKHNuYXBwZWRQYWludFJlY3QpOwpAQCAtMTQ5
MSwxMSArMTQ5MSwxMSBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgb2JqZWN0cyBhcmUgb25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWlu
ZyBwYWludGVkIHdpdGhpbiB0aGUgcmVsZXZhbnRWaWV3UmVjdCgpLgotICAgIGlmICghb2JqZWN0
UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVjdChyZWxldmFudFZpZXdSZWN0
KCZvYmplY3QtPnZpZXcoKSkpKSkKKyAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3Rz
KHNuYXBwZWRJbnRSZWN0KHJlbGV2YW50Vmlld1JlY3QoJm9iamVjdC0+dmlldygpKSkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5hZGQo
b2JqZWN0KTsKLSAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnVuaXRlKHBpeGVsU25hcHBl
ZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KSk7CisgICAgbV9yZWxldmFudFVucGFpbnRlZFJlZ2lv
bi51bml0ZShzbmFwcGVkSW50UmVjdChvYmplY3RQYWludFJlY3QpKTsKIH0KIAogdm9pZCBQYWdl
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQppbmRleCAyNDVhOTk5MjMyZmM0MzU3NWMyYjMyZTEzYjk4Yjg5ZDcyZTFh
ODAwLi5kM2Y3MWQ2YTcxYjJmNzc3NzAzYmU5YWU1NDUxMDQxMmMyYjJlNWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRpYyBOb2RlKiBh
bmNlc3RvclJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRl
c3RSZXN1bHQsCiAgICAgICAgICAgICBpZiAobm9kZUJvdW5kcykgewogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSBjaGVjayB0byBzZWUgd2hldGhlciB0aGlzIG5vZGUgaXMgYW4gYXJlYSBl
bGVtZW50LiAgVGhlIG9ubHkgd2F5IHRoaXMgY2FuIGhhcHBlbiBpcyBpZiB0aGlzIGlzIHRoZSBm
aXJzdCBjaGVjay4KICAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpICYmIG5vZGUgIT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXJlYVRhZykpCi0gICAgICAgICAgICAgICAg
ICAgICpub2RlQm91bmRzID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b0hUTUxBcmVhRWxlbWVudChu
b2RlKS0+Y29tcHV0ZVJlY3QoaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVu
ZGVyZXIoKSkpOworICAgICAgICAgICAgICAgICAgICAqbm9kZUJvdW5kcyA9IHNuYXBwZWRJbnRS
ZWN0KHRvSFRNTEFyZWFFbGVtZW50KG5vZGUpLT5jb21wdXRlUmVjdChoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICAqbm9kZUJv
dW5kcyA9IG5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggODZj
YTRjMWY0NTk3MjhlMjgwNjliNGQyYzEzMDk3N2NkMThjMjZhYy4uNWYxZTFkZGRmZTJiZWNmZjAz
YTgwNWVmN2E3MWEzM2M4YWNiMzA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlLCBJbnRSZWN0JiBpbWFnZVJlYwogCiAgICAg
Ly8gQ2FsY3VsYXRlIGltYWdlIGFuZCBlbGVtZW50IG1ldHJpY3MgZm9yIHRoZSBjbGllbnQsIHRo
ZW4gY3JlYXRlIGRyYWcgaW1hZ2UuCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
c25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
CiAKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0
KTsKKyAgICBlbGVtZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7CiAgICAg
aW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0OwogCiAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21TbmFwc2hvdChzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpLCAmbm9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCmluZGV4IDdkZmZiNzQx
ODU1Mjk3YzE0ZTExYjQ3MjRiMmI1Y2Y2ZmI3ZmY4ZjQuLmY4OTkwMDRmZTlhYzczMTM0Y2VlMzll
ODg5MTcwNmNmMWE2MWQwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFJlY3QuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgTGF5b3V0UmVjdCBlbmNsb3Np
bmdMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gTGF5b3V0UmVj
dChsb2NhdGlvbiwgbWF4UG9pbnQgLSBsb2NhdGlvbik7CiB9CiAKLUZsb2F0UmVjdCBlbmNsb3Np
bmdSZWN0Rm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFw
cGluZ0ZhY3RvcikKK0Zsb2F0UmVjdCBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7CiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbiA9IGZsb29yUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1pblhNaW5ZQ29y
bmVyKCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogICAgIEZsb2F0UG9pbnQgbWF4UG9pbnQgPSBj
ZWlsUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1heFhNYXhZQ29ybmVyKCksIHBpeGVsU25hcHBp
bmdGYWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVj
dC5oCmluZGV4IDk2MmU0ZTM5NWUwNzM2NmRlM2FhOTZhYTYzODU2MzRiMzA3Mzc3ZjUuLjYxN2Y0
NGVlMjUyNjczMmM1ZmQxZDA3OGI4YzI0MDA3YmUwOTU0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTIwMSw0NCArMjAxLDQ0IEBAIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVj
dCYgYikKICAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9IGIubG9jYXRpb24oKSB8fCBhLnNpemUo
KSAhPSBiLnNpemUoKTsKIH0KIAotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChj
b25zdCBMYXlvdXRSZWN0JiByZWN0KQorV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJ
bnRSZWN0KGNvbnN0IExheW91dFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgZW5j
bG9zaW5nTGF5b3V0UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworaW5saW5lIEludFJlY3Qgc25h
cHBlZEludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UmVj
dChyb3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKSwgSW50U2l6ZShzbmFwU2l6ZVRvUGl4
ZWwocmVjdC53aWR0aCgpLCByZWN0LngoKSksIHNuYXBTaXplVG9QaXhlbChyZWN0LmhlaWdodCgp
LCByZWN0LnkoKSkpKTsKLQogfQogCi1XRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBlbmNs
b3NpbmdMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotRmxvYXRSZWN0IGVuY2xvc2luZ1Jl
Y3RGb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0JiwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rv
cik7Ci0KLWlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0VW5pdCBsZWZ0
LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpCitp
bmxpbmUgSW50UmVjdCBzbmFwcGVkSW50UmVjdChMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQg
dG9wLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKIHsKICAgICByZXR1cm4g
SW50UmVjdChsZWZ0LnJvdW5kKCksIHRvcC5yb3VuZCgpLCBzbmFwU2l6ZVRvUGl4ZWwod2lkdGgs
IGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwoaGVpZ2h0LCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJl
Y3QgcGl4ZWxTbmFwcGVkSW50UmVjdEZyb21FZGdlcyhMYXlvdXRVbml0IGxlZnQsIExheW91dFVu
aXQgdG9wLCBMYXlvdXRVbml0IHJpZ2h0LCBMYXlvdXRVbml0IGJvdHRvbSkKK2lubGluZSBJbnRS
ZWN0IHNuYXBwZWRJbnRSZWN0RnJvbUVkZ2VzKExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCB0
b3AsIExheW91dFVuaXQgcmlnaHQsIExheW91dFVuaXQgYm90dG9tKQogewogICAgIHJldHVybiBJ
bnRSZWN0KGxlZnQucm91bmQoKSwgdG9wLnJvdW5kKCksIHNuYXBTaXplVG9QaXhlbChyaWdodCAt
IGxlZnQsIGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwoYm90dG9tIC0gdG9wLCB0b3ApKTsKIH0KIAot
aW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRQb2ludCBsb2NhdGlvbiwg
TGF5b3V0U2l6ZSBzaXplKQoraW5saW5lIEludFJlY3Qgc25hcHBlZEludFJlY3QoTGF5b3V0UG9p
bnQgbG9jYXRpb24sIExheW91dFNpemUgc2l6ZSkKIHsKICAgICByZXR1cm4gSW50UmVjdChyb3Vu
ZGVkSW50UG9pbnQobG9jYXRpb24pLCBwaXhlbFNuYXBwZWRJbnRTaXplKHNpemUsIGxvY2F0aW9u
KSk7CiB9CiAKLWlubGluZSBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKK0Zsb2F0UmVjdCBl
bmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExheW91dFJlY3QmLCBmbG9hdCBwaXhlbFNu
YXBwaW5nRmFjdG9yKTsKKworaW5saW5lIEZsb2F0UmVjdCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7CiAg
ICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC54KCksIHBpeGVsU25h
cHBpbmdGYWN0b3IpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC55KCksIHBpeGVsU25hcHBpbmdG
YWN0b3IpLAogICAgICAgICBzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwocmVjdC53aWR0aCgpLCByZWN0
LngoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvciksIHNuYXBTaXplVG9EZXZpY2VQaXhlbChyZWN0Lmhl
aWdodCgpLCByZWN0LnkoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvcikpOwogfQogCi1pbmxpbmUgRmxv
YXRSZWN0IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5
LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCwgZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKK2lubGluZSBGbG9hdFJlY3Qgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRV
bml0IHgsIExheW91dFVuaXQgeSwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQs
IGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEZv
clBhaW50aW5nKExheW91dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdG
YWN0b3IpOworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBuZWVkcyB0byB0YWtlIHZlcnRpY2FsIGNlbnRlcmluZyBpbnRvIGFjY291bnQgdG9vLgot
aW5saW5lIEZsb2F0UmVjdCBkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBhaW50aW5nKGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGx0cikKK2lu
bGluZSBGbG9hdFJlY3Qgc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9u
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGx0
cikKIHsKICAgICBpZiAoIWx0cikgewogICAgICAgICBGbG9hdFBvaW50IHNuYXBwZWRUb3BSaWdo
dCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBsdHIpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIGlubGluZSBGbG9hdFJlY3Qg
ZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBmbG9hCiAgICAgICAgIGZsb2F0IHNuYXBwZWRIZWlnaHQgPSBzbmFwU2l6ZVRvRGV2aWNlUGl4
ZWwocmVjdC5oZWlnaHQoKSwgcmVjdC55KCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAg
cmV0dXJuIEZsb2F0UmVjdChzbmFwcGVkVG9wUmlnaHQueCgpIC0gc25hcHBlZFdpZHRoLCBzbmFw
cGVkVG9wUmlnaHQueSgpLCBzbmFwcGVkV2lkdGgsIHNuYXBwZWRIZWlnaHQpOwogICAgIH0KLSAg
ICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3QsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCmluZGV4IGE0MmQ0MjJiZmVmYTBhYjIz
NDAxN2I3MGU0MTM0Nzc0MTk2ZWU4NTkuLjI5ZDg2MDRmYmFjNThiMzEwYmU2MWJmMTk1Yzk5YmYy
OGU0MjhmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFJvdW5kZWRS
ZWN0OjpwaXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmljZVNjYQog
ICAgIGlmIChvcmlnaW5hbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRmxvYXRSb3Vu
ZGVkUmVjdChvcmlnaW5hbFJlY3QsIHJhZGlpKCkpOwogCi0gICAgRmxvYXRSZWN0IHBpeGVsU25h
cHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhvcmlnaW5hbFJlY3QsIGRldmljZVNj
YWxlRmFjdG9yKTsKKyAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMob3JpZ2luYWxSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICBpZiAo
IWlzUmVuZGVyYWJsZSgpKQogICAgICAgICByZXR1cm4gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRSZWN0LCByYWRpaSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDk2NDZmMjY5ZWRlMzcyNDYz
MjVhYWM1OGM3YWU1MTU4OTBkODk3ZjYuLmQwNWRjYzU2MGE1NjI0Y2RkMThlOTRhY2FjMjM5MDYz
ZjFjMDNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMzMyw3ICszMzMzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OmNvbXB1dGVQaXhlbEFsaWdubWVudChmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIHAKICAgICAvLyBTY2FsZSBieSB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgdG8g
Y29tcHV0ZSB0aGUgc2NyZWVuLXJlbGF0aXZlIGJvdW5kcy4KICAgICBzY2FsZWRCb3VuZHMuc2Nh
bGUoY29udGVudHNTY2FsZSk7CiAgICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFyaWVzLgot
ICAgIEZsb2F0UmVjdCBhbGlnbmVkQm91bmRzID0gZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKExh
eW91dFJlY3Qoc2NhbGVkQm91bmRzKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRmxvYXRS
ZWN0IGFsaWduZWRCb3VuZHMgPSBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3Qo
c2NhbGVkQm91bmRzKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgCiAgICAgLy8gQ29udmVy
dCBiYWNrIHRvIGxheWVyIGNvb3JkaW5hdGVzLgogICAgIGFsaWduZWRCb3VuZHMuc2NhbGUoMSAv
IGNvbnRlbnRzU2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVh
bS5jcHAKaW5kZXggZmQwNDE1MTgzODlmOGIyOTA4OGFjZjA1YzViMTM3ZTYzYTVkY2E2ZC4uMTIz
ODUwNjJkMDJiYmY2NzdmYjBkZmMxZDRmZDlmZTRhYjJjM2M3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgVGV4dFN0
cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBMYXlvdXRQb2ludCYgcCkKIFRleHRT
dHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgTGF5b3V0UmVjdCYgcikKIHsKICAg
ICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHByaW50ZWQgYXMgZmxvYXRzLiBLZWVwaW5nIHRo
ZW0gaW50cyBmb3IgY29uc2lzdGVuY3kgd2l0aCBwcmV2aW91cyB0ZXN0IGV4cGVjdGF0aW9ucy4K
LSAgICByZXR1cm4gKnRoaXMgPDwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKTsKKyAgICByZXR1cm4g
KnRoaXMgPDwgc25hcHBlZEludFJlY3Qocik7CiB9CiAKIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxl
YXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IGEwNWIx
MTBmOGJhNzU0NjQ2ODkzMmU0NDYyODRjYjAwMjEyOTJjYmEuLjMwZmQwNmYyYjljYjJlYmZmMTJk
YzM5YTllZDNiZTViYjJhYjM4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0
aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkgKyBwYWludE9mZnNldC54
KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCksIDAsIHJv
b3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUsIFRleHRS
dW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC0+ZmlsbFJl
Y3QoZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3Bh
Y2UoKSk7CiB9CiAKIGJvb2wgRWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4
IGRkMTRlOWI5NGYzM2JlNjA2Nzg4ZDIwODYxOGMzNDE4OWE1MWEyYWQuLjNmYWRkOTg1M2ZkZGIy
ZmVlMGQ1NDlkMjVkZjMwNzliMDgzZDUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQg
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29u
dGV4dCogZGVzdGluYXRpb25DCiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwg
bV9wYWludE9mZnNldC55KCkpOwogCiAgICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmNvbG9yU3BhY2UoKSwKLSAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoZGVzdFJlY3Qs
IG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CisgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVyTGF5
ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICBm
aWx0ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGM1OGUxNDZmYzM5MTVhNjllMzk1MDUzOGQx
Yzk0NjliYzhlZjlmOTguLjZlYzU3MGVmNDAwZjE1OGI1OTlhMDZjMTA0MGMyMzRhZTliZWEyNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEwOTUs
NyArMTA5NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICBmbGlwRm9yV3JpdGluZ01v
ZGUob3ZlcmZsb3dSZWN0KTsKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsK
ICAgICAKLSAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50
UmVjdChvdmVyZmxvd1JlY3QpKSkKKyAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMo
c25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1ODY0N2UxOTQ1ZWZmYTg2
ZTQ1YjljOWQzZDUwNmJmZDFlYmNjMWZlLi43NjkxMDgxNmYyYzNiNDRkZDRlM2Q4NWJlNTgzOWUz
ZjlhZmI0ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2lu
LnkoKSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lkdGgsIHNlbGVjdGlvbkhlaWdodCk7CiAgICAgZm9u
dC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9z
LCBlUG9zKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZv
clBhaW50aW5nKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBj
b250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rp
b24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCksIHRleHRSdW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03
ODgsNyArNzg4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBk
ZWx0YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25z
dHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQt
PmZpbGxSZWN0KGRpcmVjdGlvbmFsUGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRy
KCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMs
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHN0YXRpYyBTdHJva2VTdHlsZSB0ZXh0RGVjb3Jh
dGlvblN0eWxlVG9TdHJva2VTdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHls
ZSkKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0
Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAgICAgICAg
IExheW91dFVuaXQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNh
bFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVj
dCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwgMCwg
c2VsZWN0aW9uSGVpZ2h0KTsKICAgICAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4
dChydW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBhaW50aW5nKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRl
cmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xvciwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICB9CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIGZs
b2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0CiAg
ICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdCgpLCAw
LCAwLCAwKTsKICAgICBUZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4obGluZVN0eWxlLCBm
b250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9u
UmVjdCwgZnJvbSwgdG8pOwotICAgIHJldHVybiBkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBh
aW50aW5nKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpLCBydW4ubHRyKCkpLm1heFgoKTsKKyAgICByZXR1cm4gc25hcFJlY3RUb0RldmljZVBp
eGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLm1heFgoKTsKIH0KIAogVGV4dFJ1
biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRm9udCYgZm9udCwgU3RyaW5nKiBoeXBoZW5hdGVkU3RyaW5nQnVmZmVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZWVhZDg2MzY1
YWFhMGYyNGEyYjgzMGFiMmUyNDY5YjkxMTk0ZDYwNy4uNWZmMjBiNWU5NjlhMGY5YTdkMGJhYTRj
YTUyYTVhYmM5OWQ1NzIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRWaXN1YWxPdmVy
Zmxvd0Zyb21UaGVtZSgpCiAKICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gYm9yZGVyQm94
UmVjdCgpOwogICAgIHRoZW1lKCkuYWRqdXN0UmVwYWludFJlY3QoKnRoaXMsIGluZmxhdGVkUmVj
dCk7Ci0gICAgYWRkVmlzdWFsT3ZlcmZsb3cocGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0
KGluZmxhdGVkUmVjdCkpKTsKKyAgICBhZGRWaXN1YWxPdmVyZmxvdyhzbmFwcGVkSW50UmVjdChM
YXlvdXRSZWN0KGluZmxhdGVkUmVjdCkpKTsKIAogICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQogICAgICAgICBmbG93VGhy
ZWFkLT5hZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUodGhpcyk7CkBAIC0xNTI3LDcg
KzE1MjcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWlu
dCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Ny
b2xsYmFycyB3aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAg
ICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSAmJiAocGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWlu
dFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhp
blJvb3QoKnRoaXMpICYmICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAg
ICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCBy
b3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBpeGVsU25hcHBlZEludFJlY3Qo
cGFpbnRJbmZvLnJlY3QpKTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xz
KHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCks
IHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6
OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKQEAgLTIwNjYsNyArMjA2Niw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6
OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBv
CiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNp
Y2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0
LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFp
bnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
IHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBS
ZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQog
CkBAIC0yMDgzLDcgKzIwODMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVm
dFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5
b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9v
dEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwg
cm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0
KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxs
UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmot
PnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+
c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0yMTAw
LDcgKzIxMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rp
b25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTAogCiAgICAgTGF5b3V0UmVjdCBn
YXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5
c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2Nr
TG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAg
aWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5j
b2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0zNzMzLDEyICszNzMz
LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtCiAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2tD
b250aW51YXRpb24oKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3IgYmxv
Y2stZmxvd3MgdGhhdCBhcmUgaG9yaXpvbnRhbC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzgxCi0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhl
bFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZzZXQu
eSgpIC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChzbmFw
cGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldC54KCksIGFjY3VtdWxhdGVkT2Zmc2V0LnkoKSAt
IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCgpLCBoZWlnaHQoKSArIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpICsgY29sbGFwc2Vk
TWFyZ2luQWZ0ZXIoKSkpOwogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhy
ZWN0cywgYWNjdW11bGF0ZWRPZmZzZXQgLSB0b0xheW91dFNpemUobG9jYXRpb24oKSArCiAgICAg
ICAgICAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2so
KS0+bG9jYXRpb24oKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxT
bmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3Rz
LmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAK
IHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKQEAgLTM4NDIsOSArMzg0Miw5IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhCiAgICAgICAgIGZsb2F0IGJvdHRvbU1hcmdpbiA9IG5leHRJbmxpbmVIYXNM
aW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6IExheW91dFVuaXQoKTsKICAgICAgICAg
TGF5b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpLCBhZGRpdGlvbmFsT2Zmc2V0Lnko
KSAtIHRvcE1hcmdpbiwgd2lkdGgoKSwgaGVpZ2h0KCkgKyB0b3BNYXJnaW4gKyBib3R0b21NYXJn
aW4pOwogICAgICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVjdHMuYXBw
ZW5kKHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAgICAgcmVjdHMuYXBwZW5k
KHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICB9IGVsc2UgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0
KCkpCi0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFkZGl0aW9uYWxP
ZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoYWRk
aXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CiAKICAgICBpZiAoIWhhc092ZXJmbG93Q2xpcCgpICYm
ICFoYXNDb250cm9sQ2xpcCgpKSB7CiAgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA2NWI1OGQ1
YjQxNDk1ZWExYzVhNzhiYTg5YWIwNGRlZDc1NDg2OTVkLi45MGNiZGYwMGVhMWI1ZGJkZDEwZjNm
YTMxYzBmNjQ4OGE5NTg4MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcApAQCAtMjE2NSw3ICsyMTY1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFp
bnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS53aWR0aCgpLCBm
bG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByb290Qmxv
Y2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94KTsKICAgICAgICAgICAgIGZsb2F0Qm94Lm1v
dmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54KCksIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xpcE91dChwaXhlbFNu
YXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CisgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQt
PmNsaXBPdXQoc25hcHBlZEludFJlY3QoZmxvYXRCb3gpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTMzMzYsNyArMzMzNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdS
ZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsCiAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tID0gc3RkOjptaW48TGF5b3V0VW5pdD4oY3Vyci0+bGluZUJvdHRvbSgp
LCBjdXJyLT50b3AoKSArIGN1cnItPmhlaWdodCgpKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgY3Vyci0+eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSAr
IHRvcCwgY3Vyci0+d2lkdGgoKSwgYm90dG9tIC0gdG9wKTsKICAgICAgICAgaWYgKCFyZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJl
Y3QpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChyZWN0KSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNhYmNl
ZTllNDc3NTZiMjZhZjY3OTUyMmNlMWE3MzIxZWNiZmMwOGEuLjVlMjhlN2UxMTcyYjZlZTM3ZjYz
YTM2MjBjYmRjOWEwOTEzZWY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9sbFRvcChpbnQg
bmV3VG9wKQogCiB2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0g
ICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNp
emUoKSkpOworICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CkBAIC02NTAsNyArNjUwLDcg
QEAgUm91bmRlZFJlY3Q6OlJhZGlpIFJlbmRlckJveDo6Ym9yZGVyUmFkaWkoKSBjb25zdAogSW50
UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudEJveCgpIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBpcyB3cm9uZyB3aXRoIHRyYW5zZm9ybXMgYW5kIGZsaXBwZWQgd3JpdGluZyBtb2Rlcy4KLSAg
ICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwor
ICAgIEludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwogICAg
IEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAgICAgcmVjdC5tb3ZlKGFi
c1Bvcy54KCksIGFic1Bvcy55KCkpOwogICAgIHJldHVybiByZWN0OwpAQCAtNjgxLDEzICs2ODEs
MTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGEKICAgICAvLyByZXBhaW50IGNvbnRhaW5lcnMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwOAogICAgIGJveC5t
b3ZlKHZpZXcoKS5sYXlvdXREZWx0YSgpKTsKIAotICAgIHJldHVybiBMYXlvdXRSZWN0KHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKGJveCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7
CisgICAgcmV0dXJuIExheW91dFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3gsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFk
ZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlm
ICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZElu
dFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChz
bmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogaW50IFJlbmRl
ckJveDo6cmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lk
IFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiBwYQogYm9vbCBSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVk
RXh0ZW50KExheW91dFJlY3QmIHBhaW50ZWRFeHRlbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c0JhY2tncm91bmQoKSk7Ci0gICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRS
ZWN0ID0gc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKTsKIAogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBiYWNr
Z3JvdW5kQ29sb3IuYWxwaGEoKSkgewpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgYm9vbCBSZW5kZXJC
b3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXUKICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kczsKICAgICB9CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBkb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgRmxvYXRSZWN0IGNsaXBSZWN0ID0gcGl4
ZWxTbmFwcGVkRm9yUGFpbnRpbmcoKGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3Vy
cmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXpl
LCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEZsb2F0UmVjdCBj
bGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKGlzQ29udHJvbENsaXAgPyBjb250cm9s
Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIElnbm9yZU92ZXJsYXlT
Y3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUo
KS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZh
Y3RvcikpOwpAQCAtMjEyMSw3ICsyMTIxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAg
ICAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmlldygpLmxheW91dFN0YXRlKCk7CiAK
ICAgICAgICAgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAgICAg
ICByZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NpbmdSZWN0Rm9yUGFpbnRpbmcobGF5ZXIoKS0+dHJh
bnNmb3JtKCktPm1hcFJlY3QocmVjdCksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkp
OworICAgICAgICAgICAgcmVjdCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVs
cyhsYXllcigpLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KSwgZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKSk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgdHJ1c3QgdGhlIGJpdHMgb24g
UmVuZGVyT2JqZWN0LCBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbGVkIHdoaWxlIHJlLXJlc29s
dmluZyBzdHlsZS4KICAgICAgICAgaWYgKHN0eWxlVG9Vc2UuaGFzSW5GbG93UG9zaXRpb24oKSAm
JiBsYXllcigpKQpAQCAtMjE3NCw3ICsyMTc0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEK
ICAgICAvLyBpbiB0aGUgcGFyZW50J3MgY29vcmRpbmF0ZSBzcGFjZSB0aGF0IGVuY2xvc2VzIHVz
LgogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKSB7CiAgICAgICAg
IGZpeGVkID0gcG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKLSAgICAgICAgcmVjdCA9IExheW91
dFJlY3QoZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBS
ZWN0KHJlY3QpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgcmVj
dCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyhsYXllcigpLT50cmFuc2Zv
cm0oKS0+bWFwUmVjdChyZWN0KSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAg
ICAgICAgIHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgIHRvcExlZnQubW92ZShs
b2NhdGlvbk9mZnNldCgpKTsKICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IEZpeGVkUG9zaXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYjQyODcxNDE5NjM4M2Uw
MDI1YWU3YTdmMWQzYTBmZThkM2Q3NTcwNy4uZWNlZGY5MWQ2MTU4MWZiOWNkMjlmZWYwZmVmYWRl
NjQ5OWMxYTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTQ5LDcg
KzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmUoTGF5b3V0VW5pdCBkeCwgTGF5b3V0VW5p
dCBkeSkgeyBtX2ZyYW1lUmVjdC5tb3ZlKGR4LCBkeSk7IH0KIAogICAgIExheW91dFJlY3QgZnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QobV9m
cmFtZVJlY3QpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRGcmFtZVJlY3QoKSBjb25zdCB7
IHJldHVybiBzbmFwcGVkSW50UmVjdChtX2ZyYW1lUmVjdCk7IH0KICAgICB2b2lkIHNldEZyYW1l
UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fZnJhbWVSZWN0ID0gcmVjdDsgfQogCiAg
ICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3hSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDMzMTA5NjM5NmY2YTNk
NjhkMjQ3MGMxYzAxNmQwZTFmMWM5ZTJlYWQuLjRhOTQ1OTE5MmY4MmY5N2U3OTUyNjUyOThlN2Zl
MDFmMWJlYzhlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvCiAKICAgICBib29sIGNvbG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29s
b3IuYWxwaGEoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKHJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBGbG9hdFJl
Y3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNl
U2NhbGVGYWN0b3IpOwogCiAgICAgLy8gRmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xv
ciBiYWNrZ3JvdW5kcy4KICAgICBpZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9s
bGluZyAmJiAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFi
Z0xheWVyLT5uZXh0KCkpIHsKQEAgLTc1MCw4ICs3NTAsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3VyIHRleHQgaW50byBhIG1hc2sgdGhh
dCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3VuZCBkcmF3aW5nLgogICAgICAgICAv
LyBGaXJzdCBmaWd1cmUgb3V0IGhvdyBiaWcgdGhlIG1hc2sgaGFzIHRvIGJlLiAgSXQgc2hvdWxk
IGJlIG5vIGJpZ2dlciB0aGFuIHdoYXQgd2UgbmVlZAogICAgICAgICAvLyB0byBhY3R1YWxseSBy
ZW5kZXIsIHNvIHdlIHNob3VsZCBpbnRlcnNlY3QgdGhlIGRpcnR5IHJlY3Qgd2l0aCB0aGUgYm9y
ZGVyIGJveCBvZiB0aGUgYmFja2dyb3VuZC4KLSAgICAgICAgbWFza1JlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHJlY3QpOwotICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICBtYXNrUmVjdCA9IHNuYXBwZWRJbnRS
ZWN0KHJlY3QpOworICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFp
bnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgogICAgICAg
ICBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNp
emUoKSk7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAg
ICAgICAgICAgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKGNvbnRleHQsICZzdHlsZSgpKTsK
IAotICAgICAgICAgICAgRmxvYXRSZWN0IGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcgPSBwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhiYWNrZ3JvdW5kUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgICAgICAgICAgRmxvYXRSZWN0IGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGJhY2tncm91bmRSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgICAgICBpZiAoYmFzZUNvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWJh
c2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAgICAgICAgICAgICAgICAgICAgIGJh
c2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKQEAgLTEwNzIsMTAgKzEwNzIsMTAg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnlGb3JQYWludGluZyhCYWNrZ3JvdW4KIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICAvLyBGSVhNRTogV2UgbmVl
ZCBhIGJldHRlciByb3VuZGluZyBzdHJhdGVneSB0byByb3VuZC9zcGFjZSBvdXQgdGlsZXMuCi0g
ICAgZ2VvbWV0cnkuc2V0VGlsZVNpemUoTGF5b3V0U2l6ZShwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhMYXlvdXRSZWN0KGdlb21ldHJ5LmRlc3RSZWN0KCkubG9jYXRpb24oKSwgZ2VvbWV0cnkudGls
ZVNpemUoKSksIGRldmljZVNjYWxlRmFjdG9yKS5zaXplKCkpKTsKLSAgICBnZW9tZXRyeS5zZXRT
cGFjZVNpemUoTGF5b3V0U2l6ZShwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KExh
eW91dFBvaW50KCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpKSwgZGV2aWNlU2NhbGVGYWN0b3IpLnNp
emUoKSkpOworICAgIGdlb21ldHJ5LnNldFRpbGVTaXplKExheW91dFNpemUoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KGdlb21ldHJ5LmRlc3RSZWN0KCkubG9jYXRpb24oKSwgZ2Vv
bWV0cnkudGlsZVNpemUoKSksIGRldmljZVNjYWxlRmFjdG9yKS5zaXplKCkpKTsKKyAgICBnZW9t
ZXRyeS5zZXRTcGFjZVNpemUoTGF5b3V0U2l6ZShzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91
dFJlY3QoTGF5b3V0UG9pbnQoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCkpLCBkZXZpY2VTY2FsZUZh
Y3Rvcikuc2l6ZSgpKSk7CiAgICAgZ2VvbWV0cnkuc2V0RGVzdE9yaWdpbihMYXlvdXRQb2ludChy
b3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoZ2VvbWV0cnkuZGVzdE9yaWdpbigpLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpKTsKLSAgICBnZW9tZXRyeS5zZXREZXN0UmVjdChMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGdlb21ldHJ5LmRlc3RSZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKSkp
OworICAgIGdlb21ldHJ5LnNldERlc3RSZWN0KExheW91dFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVscyhnZW9tZXRyeS5kZXN0UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcikpKTsKICAgICBnZW9t
ZXRyeS5zZXRQaGFzZShMYXlvdXRQb2ludChyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoZ2VvbWV0
cnkucGhhc2UoKSwgZGV2aWNlU2NhbGVGYWN0b3IpKSk7CiB9CiAKQEAgLTEyNjQsNyArMTI2NCw3
IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgTGF5b3V0UmVjdCByZWN0V2l0
aE91dHNldHMgPSByZWN0OwogICAgIHJlY3RXaXRoT3V0c2V0cy5leHBhbmQoc3R5bGUuaW1hZ2VP
dXRzZXRzKG5pbmVQaWVjZUltYWdlKSk7Ci0gICAgTGF5b3V0UmVjdCBib3JkZXJJbWFnZVJlY3Qg
PSBMYXlvdXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHJlY3RXaXRoT3V0c2V0cywgZGV2
aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBMYXlvdXRSZWN0IGJvcmRlckltYWdlUmVjdCA9IExheW91
dFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhyZWN0V2l0aE91dHNldHMsIGRldmljZVNjYWxl
RmFjdG9yKSk7CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUltYWdlSW50
cmluc2ljRGltZW5zaW9ucyhzdHlsZUltYWdlLCBib3JkZXJJbWFnZVJlY3Quc2l6ZSgpLCBEb05v
dFNjYWxlQnlFZmZlY3RpdmVab29tKTsKIApAQCAtMTMzMSwyMCArMTMzMSwyMCBAQCBib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUgdG9wIGxlZnQgY29ybmVyIHJlY3QgaXMg
KHR4LCB0eSwgbGVmdFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNl
IGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBzbGljZSwgYW5kIGlz
ICgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1RvcCkKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4LCB5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoLCBkZXZp
Y2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
MCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcCk7CisgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFj
ZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyh4LCB5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoLCBkZXZp
Y2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscygw
LCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKIAogICAg
ICAgICAvLyBUaGUgYm90dG9tIGxlZnQgY29ybmVyIHJlY3QgaXMgKHR4LCB0eSArIGggLSBib3R0
b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8g
dXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyAoMCwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGlj
ZSwgbGVmdFNsaWNlLCBib3RvbVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4LCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90
dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAg
ICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCBpbWFnZUhlaWdodCAtIGJv
dHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9w
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgsIGJvcmRlckltYWdlUmVjdC5tYXhZ
KCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0
b3IpLAorICAgICAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoMCwgaW1hZ2VIZWln
aHQgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0
b3IpLCBvcCk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGxlZnQgZWRnZS4KICAgICAgICAgLy8g
SGF2ZSB0byBzY2FsZSBhbmQgdGlsZSBpbnRvIHRoZSBib3JkZXIgcmVjdC4KICAgICAgICAgaWYg
KHNvdXJjZUhlaWdodCA+IDApCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4
LCB5ICsgdG9wV2lkdGgsIGxlZnRXaWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxl
RmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCB0b3BT
bGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRT
aXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRpbGUsIChJ
bWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoeCwgeSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZp
Y2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscygw
LCB0b3BTbGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwg
RmxvYXRTaXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRp
bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAgICBpZiAoZHJhd1Jp
Z2h0KSB7CkBAIC0xMzUyLDMyICsxMzUyLDMyIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgIC8vIFRoZSB0b3AgcmlnaHQgY29ybmVyIHJlY3QgaXMgKHR4ICsgdyAtIHJpZ2h0V2lk
dGgsIHR5LCByaWdodFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNl
IGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBzbGljZSwgYW5kIGlz
IChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpCiAgICAg
ICAgIGlmIChkcmF3VG9wKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlcklt
YWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5LCByaWdodFdpZHRoLCB0b3BXaWR0aCwgZGV2
aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJJ
bWFnZVJlY3QubWF4WCgpIC0gcmlnaHRXaWR0aCwgeSwgcmlnaHRXaWR0aCwgdG9wV2lkdGgsIGRl
dmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBvcCk7CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSByaWdodCBjb3JuZXIg
cmVjdCBpcyAodHggKyB3IC0gcmlnaHRXaWR0aCwgdHkgKyBoIC0gYm90dG9tV2lkdGgsIHJpZ2h0
V2lkdGgsIGJvdHRvbVdpZHRoKQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRo
aW4gdGhlIGltYWdlIGlzIChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBi
b3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpCiAgICAgICAgIGlmIChkcmF3Qm90
dG9tKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhY
KCkgLSByaWdodFdpZHRoLCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsCi0g
ICAgICAgICAgICAgICAgcmlnaHRXaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9y
KSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdl
SGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2Fs
ZUZhY3RvciksCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5n
ZXQoKSwgY29sb3JTcGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJJbWFnZVJlY3Qu
bWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRo
LAorICAgICAgICAgICAgICAgIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoLCBkZXZpY2VTY2FsZUZh
Y3RvciksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGlt
YWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VT
Y2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgb3ApOwogCiAgICAgICAgIC8vIFBhaW50IHRo
ZSByaWdodCBlZGdlLgogICAgICAgICBpZiAoc291cmNlSGVpZ2h0ID4gMCkKLSAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2Us
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdp
ZHRoLCB5ICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VT
Y2FsZUZhY3RvciksCi0gICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1h
Z2VXaWR0aCAtIHJpZ2h0U2xpY2UsIHRvcFNsaWNlLCByaWdodFNsaWNlLCBzb3VyY2VIZWlnaHQs
IGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKHJpZ2h0U2lkZVNjYWxlLCByaWdodFNpZGVT
Y2FsZSksCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlckltYWdlUmVj
dC5tYXhYKCkgLSByaWdodFdpZHRoLCB5ICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsIGRlc3RpbmF0
aW9uSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RU
b0RldmljZVBpeGVscyhpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgdG9wU2xpY2UsIHJpZ2h0U2xp
Y2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUocmlnaHRTaWRl
U2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKICAgICAgICAgICAgICAgICBJbWFnZTo6U3RyZXRjaFRp
bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAgICAvLyBQYWludCB0
aGUgdG9wIGVkZ2UuCiAgICAgaWYgKGRyYXdUb3AgJiYgc291cmNlV2lkdGggPiAwKQotICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCB5LCBkZXN0aW5hdGlvbldp
ZHRoLCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcobGVmdFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmlj
ZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwgKElt
YWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoeCArIGxlZnRXaWR0aCwgeSwgZGVzdGluYXRpb25XaWR0aCwg
dG9wV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMobGVmdFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmljZVNjYWxl
RmFjdG9yKSwgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwgKEltYWdlOjpU
aWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAgICAvLyBQYWludCB0
aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYgKGRyYXdCb3R0b20gJiYgc291cmNlV2lkdGggPiAwKQot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xv
clNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCBib3JkZXJJbWFn
ZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsIGRlc3RpbmF0aW9uV2lkdGgsIGJvdHRvbVdpZHRo
LCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHNvdXJjZVdpZHRoLCBib3R0
b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUoYm90dG9tU2lkZVNjYWxlLCBi
b3R0b21TaWRlU2NhbGUpLAorICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdl
KGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHggKyBsZWZ0
V2lkdGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgZGVzdGluYXRpb25X
aWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMobGVmdFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBz
b3VyY2VXaWR0aCwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKGJv
dHRvbVNpZGVTY2FsZSwgYm90dG9tU2lkZVNjYWxlKSwKICAgICAgICAgICAgIChJbWFnZTo6VGls
ZVJ1bGUpaFJ1bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgb3ApOwogCiAgICAgLy8gUGFpbnQgdGhl
IG1pZGRsZS4KQEAgLTE0MDMsOCArMTQwMyw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgICAgICBtaWRkbGVTY2FsZUZhY3Rvci5zZXRIZWlnaHQoZGVzdGluYXRpb25IZWlnaHQg
LyBzb3VyY2VIZWlnaHQpOwogICAgICAgICAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwKLSAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKHggKyBsZWZ0V2lkdGgsIHkgKyB0b3BXaWR0aCwgZGVzdGluYXRpb25X
aWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGxlZnRTbGljZSwgdG9wU2xpY2UsIHNvdXJjZVdpZHRo
LCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoeCArIGxlZnRXaWR0aCwgeSArIHRvcFdpZHRoLCBkZXN0aW5hdGlvbldp
ZHRoLCBkZXN0aW5hdGlvbkhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLAorICAgICAgICAgICAg
c25hcFJlY3RUb0RldmljZVBpeGVscyhsZWZ0U2xpY2UsIHRvcFNsaWNlLCBzb3VyY2VXaWR0aCwg
c291cmNlSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCiAgICAgICAgICAgICBtaWRkbGVTY2Fs
ZUZhY3RvciwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwg
b3ApOwogICAgIH0KIApAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qg
cGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZCA9IG91dGVyQm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICAgICAgICAgIHBpeGVs
U25hcHBlZE91dGVyVGhpcmQuc2V0UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhvdXRlclRo
aXJkUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRPdXRlclRoaXJkLnNldFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhvdXRlclRoaXJkUmVj
dCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBw
ZWRPdXRlclRoaXJkLmlzUm91bmRlZCgpICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRC
bGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHBpeGVsU25hcHBlZE91dGVyVGhpcmQpOwpAQCAtMTgzMCw3ICsxODMwLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3Qo
cGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZC5yZWN0KCkpOwogCiAgICAgICAgICAgICAgICAgRmxvYXRS
b3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRJbm5lclRoaXJkID0gaW5uZXJCb3JkZXIucGl4ZWxTbmFw
cGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkSW5uZXJUaGlyZC5zZXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKGlubmVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgICAg
IHBpeGVsU25hcHBlZElubmVyVGhpcmQuc2V0UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGlu
bmVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAgICAgICAgIGlmIChw
aXhlbFNuYXBwZWRJbm5lclRoaXJkLmlzUm91bmRlZCgpICYmIGJsZWVkQXZvaWRhbmNlICE9IEJh
Y2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAgICAgICAgICAgICAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZElubmVyVGhpcmQpOwogICAgICAgICAgICAg
ICAgIGVsc2UKQEAgLTIwMzgsNyArMjAzOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAK
ICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKICAgICBncmFw
aGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRl
clJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVy
dGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5l
ckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3Vs
dCkKQEAgLTI0MDcsNyArMjQwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAg
ICAgICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdCA9IHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGJvcmRlci5yZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAg
ICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRTaGFkb3dSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhib3JkZXIucmVjdCgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRTaGFkb3dSZWN0LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFk
b3dTcHJlYWQpOwogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdC5tb3ZlKHNoYWRv
d09mZnNldCk7CiAKQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVj
CiAKICAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93
Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwogCi0gICAgICAgICAgICBG
bG9hdFJlY3QgcGl4ZWxTbmFwcGVkT3V0ZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
YXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0
LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRvd09mZnNl
dCksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBw
ZWRPdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKExheW91dFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWlu
dGluZ0V4dGVudCwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xl
ID0gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9y
ZGVyUmVjdC5yYWRpaSgpKTsKIAogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCBhNzZlN2ZkNmI3ODIyMGQ3MjE0Yzc0M2UyYzhi
ZTQ0YzRiMzU1M2MyLi5jMDg0NTViMDdiMzcwNDQxNWQ2MTkxZWY4NjJiNjUxMGU0OTExNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBvdmVyZmxv
d1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dSZWN0LmluZmxhdGUobWF4aW1h
bE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogCi0gICAgaWYgKCFwYWludEluZm8ucmVj
dC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAgaWYg
KCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA3ZDk2OWFmYThhZWIx
MDRlNDUxNjZhZmY0NWExYmMxNzc1NDIzYmQ0Li5jYjkyMGFmNjI2N2FjMjk5NmU5Y2E3N2RmMWFl
ZDFiN2ZiYzgwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dAogICAgIGNvbnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChj
b250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gc25h
cHBlZEludFJlY3QocmVjdCk7CiAgICAgaWYgKGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBh
bGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyMyw3ICs0
MjMsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQo
KSBjb25zdAogICAgIGlmICghcm9vdFJlbmRlclZpZXcpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgSW50UmVjdCByb290Vmlld1JlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVydFRv
Um9vdFZpZXcocGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgSW50UmVjdCByb290Vmll
d1JlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVydFRvUm9vdFZpZXcoc25hcHBlZEludFJl
Y3QocmVjdCkpOwogICAgIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQgfCBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmll
bGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApp
bmRleCA0ZGRiNWUyZDNlZDgwYjU0MTI2ODQ3OTdjZGZjMjFlZjRmMGMzNDIwLi4wNGZkNjQ3ZGM2
OGQxOGQ4ODVhMzJkNjM1N2VjMmJmMGM3ZmIxODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFJlbmRlckZp
ZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludAogICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0
PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpLCBsZWdlbmQtPndpZHRoKCkpKTsKICAgICAgICAg
Y2xpcFJlY3Quc2V0SGVpZ2h0KGxlZ2VuZC0+aGVpZ2h0KCkpOwogICAgIH0KLSAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY2xpcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHls
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cAppbmRleCAyNjJlM2U3NDAxOTViYTkyMGM3OGE3NDM0OTc2ZGU0NDZkNWU5MDkzLi4yNDIwMTU2
Y2I3N2UxMjNiYmZjOGQzMWVjZWM4ZDcxYzMyZTQyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xMzgyLDcgKzEzODIsNyBAQCB2b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25z
dCBSZW5kZXJCbG9jayogYmxvYwogICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gYm9y
ZGVyQm94OwogICAgICAgICBibG9jay0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdCgqYmxvY2ss
IGluZmxhdGVkUmVjdCk7CiAKLSAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJv
eChibG9jaywgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGluZmxhdGVkUmVjdCkpKTsK
KyAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywgc25hcHBlZElu
dFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7CiAgICAgICAgIGlmIChyZWdpb24gPT0g
ZW5kUmVnaW9uKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggY2VkMTEyZTRhMDQ0YTBlYWMzOWZkNThk
YTExYjgyOTI0N2M1M2UyMS4uNDQ4NTEzN2NkMGMzYWQ4YTZlNWE0ZDFhMTAyZTZjNzFmOWQzMWE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIHRvUmVu
ZGVyRWxlbWVudChjaGlsZCktPnBhaW50KHBhaW50SW5mbywgYWRqdXN0ZWRQYWludE9mZnNldCk7
CiAgICAgICAgICAgICB4UG9zICs9IG1fY29scy5tX3NpemVzW2NdOwogICAgICAgICAgICAgaWYg
KGJvcmRlclRoaWNrbmVzcyAmJiBtX2NvbHMubV9hbGxvd0JvcmRlcltjICsgMV0pIHsKLSAgICAg
ICAgICAgICAgICBwYWludENvbHVtbkJvcmRlcihwYWludEluZm8sIHBpeGVsU25hcHBlZEludFJl
Y3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHhQb3MsIGFkanVzdGVkUGFp
bnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNzLCBoZWlnaHQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBwYWludENvbHVtbkJvcmRlcihwYWludEluZm8sIHNuYXBwZWRJbnRSZWN0KExh
eW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyB4UG9zLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSArIHlQb3MsIGJvcmRlclRoaWNrbmVzcywgaGVpZ2h0KCkpKSk7CiAgICAgICAgICAg
ICAgICAgeFBvcyArPSBib3JkZXJUaGlja25lc3M7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQg
UmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIH0KICAgICAgICAgeVBvcyArPSBtX3Jvd3MubV9z
aXplc1tyXTsKICAgICAgICAgaWYgKGJvcmRlclRoaWNrbmVzcyAmJiBtX3Jvd3MubV9hbGxvd0Jv
cmRlcltyICsgMV0pIHsKLSAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgcGl4
ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1
c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRoaWNrbmVzcykpKTsK
KyAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgc25hcHBlZEludFJlY3QoTGF5
b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkg
KyB5UG9zLCB3aWR0aCgpLCBib3JkZXJUaGlja25lc3MpKSk7CiAgICAgICAgICAgICB5UG9zICs9
IGJvcmRlclRoaWNrbmVzczsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MywxMCArNDgzLDEwIEBA
IHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheW91dCgpCiAgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0o
KTsKIAogICAgIGlmIChkb0Z1bGxSZXBhaW50KSB7Ci0gICAgICAgIHJlcGFpbnRVc2luZ0NvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG9sZEJvdW5kcykpOwor
ICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgc25hcHBlZElu
dFJlY3Qob2xkQm91bmRzKSk7CiAgICAgICAgIExheW91dFJlY3QgbmV3Qm91bmRzID0gY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAgICAgICAgIGlmIChu
ZXdCb3VuZHMgIT0gb2xkQm91bmRzKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVy
KHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3QobmV3Qm91bmRzKSk7CisgICAg
ICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgc25hcHBlZElu
dFJlY3QobmV3Qm91bmRzKSk7CiAgICAgfQogCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwpAQCAt
NTU5LDcgKzU1OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZs
YXR0ZW5pbmcoKQogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAKICAg
ICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKLSAgICAgICAgICAgIEludFJl
Y3Qgb2xkRnJhbWVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjaGlsZC0+ZnJhbWVSZWN0KCkp
OworICAgICAgICAgICAgSW50UmVjdCBvbGRGcmFtZVJlY3QgPSBzbmFwcGVkSW50UmVjdChjaGls
ZC0+ZnJhbWVSZWN0KCkpOwogCiAgICAgICAgICAgICBpbnQgd2lkdGggPSBtX2NvbHMubV9zaXpl
c1tjXTsKIApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9u
RnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQogICAgICAgICB4UG9zID0gMDsKICAgICAgICAgZm9yIChp
bnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGUgcm93
cyBhbmQgY29sdW1ucyBhcmUgZmlsbGVkCi0gICAgICAgICAgICBJbnRSZWN0IG9sZFJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGNoaWxkLT5mcmFtZVJlY3QoKSk7CisgICAgICAgICAgICBJbnRS
ZWN0IG9sZFJlY3QgPSBzbmFwcGVkSW50UmVjdChjaGlsZC0+ZnJhbWVSZWN0KCkpOwogCiAgICAg
ICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24oSW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAg
ICAgICAgY2hpbGQtPnNldEhlaWdodChtX3Jvd3MubV9zaXplc1tyXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKaW5kZXggNjkyMzljMjM5NDIyNDQ2
NGRmYzUwNTFkZjdmNDIzNDcyOWUzZjM5Ny4uZTQyZmU4ZDIyOGUyYTE0NGZlNDVlNDBiZDZmMWJk
MDUwODI4YjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2Fu
dmFzLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIGJv
b2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhwYWludFJlY3QpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGNsaXApOwog
ICAgIGlmIChjbGlwKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGNvbnRlbnRSZWN0KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRSZWN0KSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZy
YW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA5ZDFmZjBjNWRkNjc1NjkwMDEyMzQ4M2JhNGIxMjU5MzVjNDVmMmJhLi5kNjE1NWZjNmQ2ZTQ4
NjYwNTc3NDA2OWFiYmYzNzNiZDZlNGZhOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4
dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdChwYWludE9mZnNl
dC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVy
ICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldp
ZHRoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFp
bnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAgICAgICAgICAgYm9vbCBlcnJvclBp
Y3R1cmVEcmF3biA9IGZhbHNlOwogICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZU9mZnNldDsK
QEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0
KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9y
KSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSks
IGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAg
ICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00ODAs
NyArNDgwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgaWYgKGNsaXApCiAg
ICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNvbnRlbnRSZWN0KTsKIAotICAgICAgICBwYWludElu
dG9SZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHBhaW50UmVjdCwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKHBhaW50UmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChjYWNoZWRJbWFnZSgpICYmIHBhZ2UgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgICAgICAvLyBGb3Igbm93LCBjb3VudCBpbWFn
ZXMgYXMgdW5wYWludGVkIGlmIHRoZXkgYXJlIHN0aWxsIHByb2dyZXNzaXZlbHkgbG9hZGluZy4g
V2UgbWF5IHdhbnQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDc0MGU3OWIyYzVkMDRkODlmOTg3NjVkZTkzZTI0ODgyYzc3ODU0ZTYuLjkzNzBmNTIxNTM0
NzQ3NDkzMmZiMmMwZjQwZTg1MzA1Y2Q3MjNiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xNTQzLDExICsxNTQzLDExIEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMCiAgICAgTGF5b3V0UmVjdCBib3goTGF5b3V0UG9pbnQocGFpbnRPZmZzZXQueCgp
ICsgdGhpc2xpbmUueCgpIC0gb2Zmc2V0LCBwYWludE9mZnNldC55KCkgKyB0aGlzbGluZS55KCkg
LSBvZmZzZXQpLAogICAgICAgICBMYXlvdXRTaXplKHRoaXNsaW5lLndpZHRoKCkgKyBvZmZzZXQs
IHRoaXNsaW5lLmhlaWdodCgpICsgb2Zmc2V0KSk7CiAKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZEJveCA9IHBpeGVsU25hcHBlZEludFJlY3QoYm94KTsKKyAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZEJveCA9IHNuYXBwZWRJbnRSZWN0KGJveCk7CiAgICAgaWYgKHBpeGVsU25hcHBlZEJveC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZExhc3RMaW5l
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54KCkgKyBsYXN0bGluZS54KCksIDAs
IGxhc3RsaW5lLndpZHRoKCksIDApOwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkTmV4dExpbmUg
PSBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIG5leHRsaW5lLngoKSwgMCwg
bmV4dGxpbmUud2lkdGgoKSwgMCk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRMYXN0TGluZSA9
IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxhc3RsaW5lLngoKSwgMCwgbGFzdGxp
bmUud2lkdGgoKSwgMCk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWROZXh0TGluZSA9IHNuYXBw
ZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIG5leHRsaW5lLngoKSwgMCwgbmV4dGxpbmUud2lk
dGgoKSwgMCk7CiAgICAgCiAgICAgLy8gbGVmdCBlZGdlCiAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDI5M2MzZGRhYTM0ZTg5ZGJiN2YzZjczMWMxMDMyYjBjNzU0YTVlNGIuLjg1ZTk5OThj
ZWExMjYwNDkxMDMwMzcyN2U4YzI5YzdiY2NhY2M4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7
CiAgICAgICAgIEFTU0VSVChib3gpOwogICAgICAgICBtX3RyYW5zZm9ybS0+bWFrZUlkZW50aXR5
KCk7Ci0gICAgICAgIGJveC0+c3R5bGUoKS5hcHBseVRyYW5zZm9ybSgqbV90cmFuc2Zvcm0sIHBp
eGVsU25hcHBlZEZvclBhaW50aW5nKGJveC0+Ym9yZGVyQm94UmVjdCgpLCBib3gtPmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3Jp
Z2luKTsKKyAgICAgICAgYm94LT5zdHlsZSgpLmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwg
c25hcFJlY3RUb0RldmljZVBpeGVscyhib3gtPmJvcmRlckJveFJlY3QoKSwgYm94LT5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6SW5jbHVkZVRyYW5zZm9ybU9y
aWdpbik7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKCptX3RyYW5zZm9ybSwgY2FuUmVu
ZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0KIApAQCAtODcwLDcgKzg3MCw3IEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKFJlbmRlclN0eWxlOjpB
cHBseVRyYW5zZm9ybU9yCiAKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAg
IEFTU0VSVChib3gpOwotICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0ID0gcGl4
ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm94LT5ib3JkZXJCb3hSZWN0KCksIGJveC0+ZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVy
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm94LT5ib3JkZXJCb3hSZWN0KCksIGJveC0+
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBpZiAocmVuZGVyZXIoKS5zdHls
ZSgpLmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uKCkpIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY3VyclRyYW5zZm9ybTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBz
dHlsZSA9IHJlbmRlcmVyKCkuYW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVy
KCZyZW5kZXJlcigpKTsKQEAgLTE2OTgsNyArMTY5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
ZXJQCiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3Rl
ZENsaXBSZWN0ID0gcGFpbnRpbmdFeHRlbnQoKnRoaXMsIHBhaW50aW5nSW5mby5yb290TGF5ZXIs
IGRpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAgICBhZGp1c3Rl
ZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsKLSAgICAg
ICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRp
bmcoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpOworICAgICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkQ2xpcFJlY3QgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRD
bGlwUmVjdCk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpAQCAtMjQyMSw3ICsyNDIx
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRS
ZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAgICAgICAgIC8vIHRoYXQgcHV0IHdl
YiB2aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwu
CiAgICAgICAgICAgICAvLyBUaGUgY2FuQXV0b3Njcm9sbCBmdW5jdGlvbiBpbiBFdmVudEhhbmRs
ZXIgYWxzbyBrbm93cyBhYm91dCB0aGlzLgogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBm
cmFtZVZpZXcuZnJhbWUoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCku
c2Nyb2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLnNjcm9sbFJlY3RJbnRvVmlldyhzbmFwcGVkSW50UmVjdChy
ZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0yNzE4LDcgKzI3MTgsNyBAQCBJbnRS
ZWN0IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QKICAgICBib29sIGhhc1Zl
cnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSBy
ZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNI
b3Jpem9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9y
aXpvbnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChjb3JuZXJSZWN0KHRoaXMsIHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkp
KTsKKyAgICAgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGNvcm5lclJlY3QodGhpcywgcmVuZGVy
Qm94KCktPmJvcmRlckJveFJlY3QoKSkpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKQEAg
LTM1MDMsNyArMzUwMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJ
bWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3QgaW1h
Z2VSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVy
UmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJT
aXplKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIEZs
b2F0UmVjdCBpbWFnZVJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVz
aXplckNvcm5lclJlY3QubWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXplLCBjb3Ju
ZXJSZXNpemVyU2l6ZSksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRl
cmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9CiAKQEAgLTM1NDIsNyAr
MzU0Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwogICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChs
YXJnZXJDb3JuZXIpKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcHBlZEludFJlY3Qo
bGFyZ2VyQ29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNTcwLDcgKzM1NzAsNyBAQCBib29sIFJl
bmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IGNvbnN0IEludFBvaW50JgogICAgIAogICAgIEludFJlY3QgcmVzaXplQ29udHJvbFJlY3Q7CiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORSkgewotICAg
ICAgICByZXNpemVDb250cm9sUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVzaXplckNvcm5l
clJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgcmVzaXplQ29udHJv
bFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSkpOwogICAgICAgICBpZiAocmVzaXplQ29udHJvbFJlY3QuY29udGFpbnMobG9j
YWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNjcwLDcgKzM2
NzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udAogICAgICAgICBjb250ZXh0LT5zYXZlKCk7
CiAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsK
ICAgICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3Vt
dWxhdGlvbik7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
YWRqdXN0ZWRDbGlwUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC0+
Y2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNjYWxl
RmFjdG9yKSk7CiAgICAgfQogfQogCkBAIC00MjIzLDcgKzQyMjMsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNo
aWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsQWNjdW11bGF0
aW9uID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRP
ZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKHRyYW5z
Zm9ybS5pbnZlcnNlKCkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZp
Y2VTY2FsZUZhY3RvcikpLAorICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zv
cm0uaW52ZXJzZSgpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNl
U2NhbGVGYWN0b3IpKSwKICAgICAgICAgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGFkanVz
dGVkU3VicGl4ZWxBY2N1bXVsYXRpb24sIHBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290LCBw
YWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRz
QW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiB9CkBAIC00NjExLDcgKzQ2MTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJm
bG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRgogICAg
ICAgICBjb25zdCBMYXllckZyYWdtZW50JiBmcmFnbWVudCA9IGxheWVyRnJhZ21lbnRzLmF0KGkp
OwogICAgICAgICBjbGlwVG9SZWN0KGxvY2FsUGFpbnRpbmdJbmZvLCBjb250ZXh0LCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCk7CiAgICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9scyhjb250ZXh0
LCByb3VuZGVkSW50UG9pbnQodG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2Nh
dGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YnBpeGVs
QWNjdW11bGF0aW9uKSksCi0gICAgICAgICAgICBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50
LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIHRydWUpOworICAgICAgICAgICAgc25hcHBlZEludFJl
Y3QoZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpKSwgdHJ1ZSk7CiAgICAgICAgIHJlc3Rv
cmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCk7CiAgICAgfQogfQpAQCAtNTAyOCw3ICs1MDI4LDcgQEAgYm9vbCBS
ZW5kZXJMYXllcjo6aGl0VGVzdFJlc2l6ZXJJbkZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMKIAogICAgIGZvciAoaW50IGkgPSBsYXllckZyYWdtZW50cy5zaXpl
KCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBjb25zdCBMYXllckZyYWdtZW50JiBmcmFn
bWVudCA9IGxheWVyRnJhZ21lbnRzLmF0KGkpOwotICAgICAgICBpZiAoZnJhZ21lbnQuYmFja2dy
b3VuZFJlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIHJlc2l6ZXJDb3JuZXJSZWN0
KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhZ21lbnQubGF5ZXJCb3VuZHMpKS5jb250YWlu
cyhoaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpKQorICAgICAgICBpZiAoZnJhZ21lbnQu
YmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIHJlc2l6ZXJDb3Ju
ZXJSZWN0KHRoaXMsIHNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmxheWVyQm91bmRzKSkuY29udGFp
bnMoaGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAKQEAgLTU2ODYsMTMgKzU2ODYsMTMgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJMYXllcjo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNv
bnN0IExheW8KIEludFJlY3QgUmVuZGVyTGF5ZXI6OmFic29sdXRlQm91bmRpbmdCb3goKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIgPSByb290KCk7Ci0gICAgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3gocm9vdExheWVyLCBvZmZzZXRGcm9t
QW5jZXN0b3Iocm9vdExheWVyKSkpOworICAgIHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGlu
Z0JveChyb290TGF5ZXIsIG9mZnNldEZyb21BbmNlc3Rvcihyb290TGF5ZXIpKSk7CiB9CiAKIEZs
b2F0UmVjdCBSZW5kZXJMYXllcjo6YWJzb2x1dGVCb3VuZGluZ0JveEZvclBhaW50aW5nKCkgY29u
c3QKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyID0gcm9vdCgpOwotICAgIHJl
dHVybiBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3VuZGluZ0JveChyb290TGF5ZXIsIG9mZnNl
dEZyb21BbmNlc3Rvcihyb290TGF5ZXIpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpOworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvdW5kaW5n
Qm94KHJvb3RMYXllciwgb2Zmc2V0RnJvbUFuY2VzdG9yKHJvb3RMYXllcikpLCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3Rvckxh
eWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgQ2FsY3VsYXRlTGF5ZXJCb3Vu
ZHNGbGFncyBmbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKaW5kZXggYTAwMWQ5NzZhNmZmMTY5ZTdkOTg2NmM2ZWI2MWMyN2Ew
MWY1ODI2Mi4uZGQwMzg1OGQ2NmVjNWIxMjE1MjdiNzEzZjRmMTRjOWFiMzU4ZDQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAg
IGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7CiAgICAgICAgIFJlbmRlckJveCYg
cmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSk7Ci0gICAgICAgIHN0eWxlLmFwcGx5
VHJhbnNmb3JtKHQsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHJlbmRlckJveC5ib3JkZXJCb3hS
ZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9y
bU9yaWdpbik7CisgICAgICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMocmVuZGVyQm94LmJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSks
IFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJp
eFJlbmRlcmFibGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKICAg
ICB9CiAgICAgCkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUdlb21ldHJ5KCkKICAgICBvZmZzZXRGcm9tUGFyZW50ID0gb2Zmc2V0RnJvbVBhcmVudCAr
IChjb21wQW5jZXN0b3IgPyBjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+ZGV2aWNlUGl4ZWxGcmFj
dGlvbkZyb21SZW5kZXJlcigpIDogTGF5b3V0U2l6ZSgpKTsKICAgICByZWxhdGl2ZUNvbXBvc2l0
aW5nQm91bmRzLm1vdmVCeShvZmZzZXRGcm9tUGFyZW50KTsKIAotICAgIExheW91dFJlY3QgZW5j
bG9zaW5nUmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcyA9IExheW91dFJlY3QoZW5jbG9zaW5nUmVj
dEZvclBhaW50aW5nKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMsIGRldmljZVNjYWxlRmFjdG9y
KSk7CisgICAgTGF5b3V0UmVjdCBlbmNsb3NpbmdSZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzID0g
TGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHJlbGF0aXZlQ29tcG9zaXRpbmdC
b3VuZHMsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgTGF5b3V0U2l6ZSBzdWJwaXhlbE9mZnNl
dEFkanVzdG1lbnQgPSBlbmNsb3NpbmdSZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9u
KCkgLSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0U2l6
ZSByZW5kZXJlck9mZnNldEZyb21HcmFwaGljc0xheWVyID0gIHRvTGF5b3V0U2l6ZShsb2NhbENv
bXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpICsgc3VicGl4ZWxPZmZzZXRBZGp1c3RtZW50Owog
CkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJ
bnRlcm5hbEhpZXJhcmNoeSgpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRl
bnRzUmVjdCgpCiB7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3QocGl4ZWxT
bmFwcGVkSW50UmVjdChjb250ZW50c0JveCgpKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1JlY3Qoc25hcHBlZEludFJlY3QoY29udGVudHNCb3goKSkpOwogICAgIAogICAgIExh
eW91dFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3Q7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNCb3go
KSkKICAgICAgICAgY29udGVudHNDbGlwcGluZ1JlY3QgPSB0b1JlbmRlckJveChyZW5kZXJlcigp
KS5jb250ZW50Qm94UmVjdCgpOwogCiAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250
ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdS
ZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFw
cGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1RpbGVTaXplKEludFNpemUoKSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c1RpbGVQaGFzZShJbnRQb2ludCgpKTsKQEAgLTE4ODQsMTEgKzE4ODQsMTEgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2
ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNCb3goKSkpOworICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94
KCkpKTsKIAogICAgIExheW91dFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3QgPSBpbWFnZVJlbmRl
cmVyLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250
ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdS
ZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFw
cGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXIg
PSBmYWxzZTsKQEAgLTE5NjUsNyArMTk2NSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJMYXllckJhY2tp
bmc6OmJhY2tncm91bmRCb3hGb3JQYWludGluZygpIGNvbnN0CiAKICAgICBMYXlvdXRSZWN0IGJh
Y2tncm91bmRCb3ggPSBiYWNrZ3JvdW5kUmVjdEZvckJveCh0b1JlbmRlckJveChyZW5kZXJlcigp
KSk7CiAgICAgYmFja2dyb3VuZEJveC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXll
cigpKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYmFja2dyb3VuZEJveCwg
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
YmFja2dyb3VuZEJveCwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAKIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyQmFja2luZzo6cGFyZW50Rm9yU3VibGF5ZXJzKCkgY29uc3QKQEAgLTIwNjEs
NyArMjA2MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNw
bGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiB7CiAgICAgQVNTRVJUKCFwYWlu
dHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpOwogCi0gICAgRmxvYXRSZWN0IHBpeGVsU25hcHBl
ZFJlY3RGb3JQYWludGluZyA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHIsIGRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9yUGFpbnRpbmcgPSBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIEZyYW1l
VmlldyYgZnJhbWVWaWV3ID0gb3duaW5nTGF5ZXIoKS5yZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZp
ZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcu
aXNUcmFja2luZ1JlcGFpbnRzKCkpCiAgICAgICAgIGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWlu
dFJlY3QocGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nKTsKQEAgLTIyMDksNyArMjIwOSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3Jv
bGxDb3JuZXJBbmRSZXNpemVyLngoKSwgLXNjcm9sbENvcm5lckFuZFJlc2l6ZXIueSgpKTsKICAg
ICAgICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBMYXlvdXRSZWN0KGNsaXApOwogICAg
ICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lckFuZFJlc2l6ZXIubG9jYXRp
b24oKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoJmNvbnRleHQs
IEludFBvaW50KCksIHBpeGVsU25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAg
ICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoJmNvbnRleHQsIEludFBvaW50KCks
IHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOwogICAgICAgICBtX293bmluZ0xheWVy
LnBhaW50UmVzaXplcigmY29udGV4dCwgSW50UG9pbnQoKSwgdHJhbnNmb3JtZWRDbGlwKTsKICAg
ICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0NGViNTE5MGM4MGRlZjY2
MWFiNzg5ZjU2MGMzMWVlMmQ4MTk2YmU4Li45MzUzYjlhYzMyODM3YTk4OWRhZWQwNGNlNjVjNWE2
MTc3OTQ4MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJM
YXllciYKICAgICAgICAgYm91bmRzQ29tcHV0ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIEludFJl
Y3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyLmJhY2tncm91bmRDbGlwUmVj
dChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVyKCksIEFic29s
dXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lv
bnMuCisgICAgSW50UmVjdCBjbGlwUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGxheWVyLmJhY2tncm91
bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVy
KCksIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3Ig
Q1NTIHJlZ2lvbnMuCiAKICAgICAvLyBPbiBpT1MsIHBhZ2VTY2FsZUZhY3RvcigpIGlzIG5vdCBh
cHBsaWVkIGJ5IFJlbmRlclZpZXcsIHNvIHdlIHNob3VsZCBub3Qgc2NhbGUgaGVyZS4KICAgICAv
LyBGSVhNRTogU2V0IFNldHRpbmdzOjpkZWxlZ2F0ZXNQYWdlU2NhbGluZyB0byB0cnVlIGZvciBp
T1MuCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgICAg
ICByZXR1cm4gcGx1Z2luUmVuZGVyZXIuaGFzTGF5ZXIoKSAmJiBwbHVnaW5SZW5kZXJlci5sYXll
cigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAgIC8vIERvbid0IGdvIGludG8gY29tcG9zaXRpbmcg
bW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHplcm8sIG9yIHNpemUgaXMgMXgxLgotICAgIElu
dFJlY3QgY29udGVudEJveCA9IHBpeGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXIuY29u
dGVudEJveFJlY3QoKSk7CisgICAgSW50UmVjdCBjb250ZW50Qm94ID0gc25hcHBlZEludFJlY3Qo
cGx1Z2luUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSk7CiAgICAgcmV0dXJuIGNvbnRlbnRCb3gu
aGVpZ2h0KCkgKiBjb250ZW50Qm94LndpZHRoKCkgPiAxOwogfQogCkBAIC0yNDgyLDcgKzI0ODIs
NyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZy
YW1lKFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAgICAgICAgIHJldHVybiBmcmFtZVJlbmRlcmVy
Lmhhc0xheWVyKCkgJiYgZnJhbWVSZW5kZXJlci5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKICAg
ICAKICAgICAvLyBEb24ndCBnbyBpbnRvIGNvbXBvc2l0aW5nIG1vZGUgaWYgaGVpZ2h0IG9yIHdp
ZHRoIGFyZSB6ZXJvLgotICAgIHJldHVybiAhcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlbmRl
cmVyLmNvbnRlbnRCb3hSZWN0KCkpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIXNuYXBwZWRJbnRS
ZWN0KGZyYW1lUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSkuaXNFbXB0eSgpOwogfQogCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikgY29uc3QKQEAgLTI3MzUsNyArMjczNSw3
IEBAIHN0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZs
b2F0UmVjdCYgY2xpcCkKIHsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JJbnRlZ3Jh
bFBvc2l0aW9uZWRJdGVtcyA9IHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChjbGlwKSk7
CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRlbXMg
PSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NMYXll
ciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKICAgICAgICAgcGFpbnRTY3JvbGxi
YXIobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhvcml6b250YWxTY3JvbGxiYXIoKSwgY29udGV4
dCwgcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0ZW1zKTsKICAgICBlbHNl
IGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBkNDJjM2E1NmM5OGYy
M2QwNmY0OWI2ODdhZjc1NzA1ZjUxOTE1MjY1Li4zMDEyY2QyNWZiNTExMzMwOTY4NDhiMGQzZmU1
YmM2ZjIxODVhMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAvLyBG
b2N1cyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgogICAgIGludCBzZWxlY3RlZEl0ZW0gPSBzZWxl
Y3RFbGVtZW50KCkuYWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCk7CiAgICAgaWYgKHNlbGVj
dGVkSXRlbSA+PSAwKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0
KGl0ZW1Cb3VuZGluZ0JveFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2VsZWN0ZWRJdGVtKSkpOwor
ICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChh
ZGRpdGlvbmFsT2Zmc2V0LCBzZWxlY3RlZEl0ZW0pKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKICAgICAgICAgaWYgKGlzSFRNTE9w
dGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
KSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50KCkuc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoaSk7Ci0gICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVt
Qm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIGkpKSk7CisgICAgICAgICAgICByZWN0
cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zm
c2V0LCBpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQx
LDEyICszNDEsMTIgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKIHZvaWQgUmVuZGVyTGlzdEJv
eDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIEludFJlY3Qgc2Ny
b2xsUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsgd2lkdGgoKSAt
IGJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksCisgICAgICAgIEludFJlY3Qgc2Nyb2xs
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIHdpZHRoKCkgLSBib3JkZXJS
aWdodCgpIC0gbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgcGFpbnRPZmZzZXQueSgpICsg
Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICBtX3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICBo
ZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKSk7CiAgICAgICAgIG1fdkJh
ci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwotICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50
SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CisgICAg
ICAgIG1fdkJhci0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHBhaW50
SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gbGlzdEl0ZW1FbGVt
ZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5jb2xv
clNwYWNlKCkgOiBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVt
UmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAg
ICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoaXRl
bVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3Bh
Y2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCmluZGV4IDI4YTA1OGU1ZDk5YWUyZjJiZjJjYjg1ZjI3MzVjNzdiZTkwMmU1MWUu
LjhhOTA1NjNmODc4OTI5NDE0N2ZmZDgzMjUzMTY2YjkwOTJmYjRjMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTExODUsNyArMTE4NSw3
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgb3ZlcmZsb3dSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwogICAgIG92ZXJmbG93UmVjdC5pbmZsYXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWlu
dEluZm8ucGhhc2UpKTsKIAotICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhl
bFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkpKQorICAgIGlmICghcGFpbnRJbmZvLnJlY3Qu
aW50ZXJzZWN0cyhzbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0UmVjdCBib3goYm94T3JpZ2luLCBzaXplKCkpOwpAQCAtMTIwMCw3ICsx
MjAwLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgaWYgKHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0
ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50UmVj
dChzZWxSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVj
dGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25S
ZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENvbG9yIGNvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCmluZGV4IDNjMTZmYzQ4ZDE4ODBmOWQ3
MWUzNDNhMzgyNTgzYjg4M2E4NGVmMTUuLmU2MjQ2ODZjNWE0NGNiMDQ3MDE4YmExMmMxNTNlYWUz
ZjZiYWQ3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAt
NTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlck1ldGVyOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogewog
ICAgIFJlbmRlckJveDo6dXBkYXRlTG9naWNhbFdpZHRoKCk7CiAKLSAgICBJbnRTaXplIGZyYW1l
U2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKCp0aGlzLCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGZyYW1lUmVjdCgpKSk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVy
U2l6ZUZvckJvdW5kcygqdGhpcywgc25hcHBlZEludFJlY3QoZnJhbWVSZWN0KCkpKTsKICAgICBz
ZXRMb2dpY2FsV2lkdGgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS53aWR0
aCgpIDogZnJhbWVTaXplLmhlaWdodCgpKTsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJl
bmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgbG9naQogICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVG
b3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKTsKKyAgICBJbnRTaXpl
IGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKCp0aGlzLCBzbmFwcGVkSW50
UmVjdChmcmFtZSkpOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcAppbmRleCAwYTRlZWIyN2YxZjBiMTI4NGRjNmRmYmQwMWJmM2JmYmUyMWIxMThmLi44NDRh
N2RjZGFkNDY2MGY1ZDQ4YmJmMmMyOThjMjk1MTMwMGJkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTYxNCw3ICs2MTQs
NyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAgICAgICAgIExheW91dFVuaXQg
cnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRo
aWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0
LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogcGFpbnRPZmZzZXQueSgpICsgcnVs
ZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkOwogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
dWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVsZVRvcCArIHJ1bGVUaGlja25lc3M7Ci0gICAg
ICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7
CisgICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHNuYXBwZWRJ
bnRSZWN0RnJvbUVkZ2VzKHJ1bGVMZWZ0LCBydWxlVG9wLCBydWxlUmlnaHQsIHJ1bGVCb3R0b20p
OwogICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCwg
cGl4ZWxTbmFwcGVkUnVsZVJlY3QueCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC55KCksIHBpeGVs
U25hcHBlZFJ1bGVSZWN0Lm1heFgoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WSgpLCBib3hT
aWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNvbENvdW50OyBpKyspIHsK
ICAgICAgICAgICAgIHJ1bGVSZWN0Lm1vdmUoc3RlcCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHBp
eGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChydWxlUmVjdCk7CisgICAg
ICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVs
ZVJlY3QpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0
LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4
ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJv
eFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA5
NDBjYjk4NmIzMjQ3OWFmMjVmMmZjM2Q0MDJiNjBhMzIyODBkZDJhLi45MDg1NWNkOTY0MjFkYWE3
MTU4ZjZjOTM2OTFmNDg0NmQzNmJkZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtODA3LDEzICs4MDcsMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRy
YXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgZmxvYXQg
eDEKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCU1RvcDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoeDEsIHkxLCBsZW5ndGgsIHRoaXJkT2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFj
dG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0
KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgxLCB5MiAtIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0
aCwgdGhpcmRPZlRoaWNrbmVzcywgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVs
cyh4MSwgeTEsIGxlbmd0aCwgdGhpcmRPZlRoaWNrbmVzcywgZGV2aWNlU2NhbGVGYWN0b3IpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVscyh4MSwgeTIgLSB0aGlyZE9mVGhpY2tuZXNzLCBsZW5ndGgsIHRoaXJk
T2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoeDEsIHkxLCB0aGlyZE9mVGhp
Y2tuZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgy
IC0gdGhpcmRPZlRoaWNrbmVzcywgeTEsIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0aCwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTEsIHRoaXJkT2ZUaGlja25lc3Ms
IGxlbmd0aCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MiAtIHRoaXJk
T2ZUaGlja25lc3MsIHkxLCB0aGlyZE9mVGhpY2tuZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFj
dG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAKQEAgLTgzNCwzOCArODM0LDM4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJv
eFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGZsb2F0IHgxCiAgICAgICAg
ICAgICAgICAgRmxvYXRSZWN0IHBhaW50Qm9yZGVyUmVjdDsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKHNpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU1RvcDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExh
eW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkxLCAoeDIgLSBtaXRyZU9mZnNldDMpIC0gKHgx
ICsgbWl0cmVPZmZzZXQxKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoTGF5b3V0UmVjdCh4MSArIG1pdHJlT2Zmc2V0MSwgeTEsICh4MiAtIG1pdHJlT2Zm
c2V0MykgLSAoeDEgKyBtaXRyZU9mZnNldDEpLCB0aGlyZE9mVGhpY2tuZXNzKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgcGFpbnRCb3JkZXJSZWN0LngoKSwgcGFpbnRCb3JkZXJSZWN0LnkoKSwg
cGFpbnRCb3JkZXJSZWN0Lm1heFgoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFkoKSwgc2lkZSwgY29s
b3IsIFNPTElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkamFjZW50MUJpZ1RoaXJk
LCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpbnRCb3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdCh4
MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGlyZE9mVGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNl
dDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGly
ZE9mVGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNldDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwg
dGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVj
dC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50
Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlh
cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBw
aXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KHgxLCB5MSArIG1pdHJlT2Zmc2V0MSwg
dGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVPZmZzZXQzKSAtICh5MSArIG1pdHJlT2Zmc2V0
MSkpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJv
cmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEsIHkxICsgbWl0
cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsg
bWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54
KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9y
ZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKExheW91dFJlY3QoeDIgLSB0aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJl
T2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1p
dHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDIg
LSB0aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJlT2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywg
KHkyIC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1pdHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCBwYWludEJvcmRlclJlY3QueCgpLCBwYWludEJvcmRlclJlY3QueSgpLCBwYWlu
dEJvcmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRlclJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwg
U09MSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFk
amFjZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYWludEJvcmRlclJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRS
ZWN0KHgxICsgbWl0cmVPZmZzZXQyLCB5MSwgKHgyIC0gbWl0cmVPZmZzZXQ0KSAtICh4MSArIG1p
dHJlT2Zmc2V0MiksIHRoaXJkT2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDIsIHkxLCAoeDIgLSBtaXRyZU9mZnNldDQp
IC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFj
dG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50
Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBT
T0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRq
YWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDEgKyBt
aXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRoaWNrbmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAt
ICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJkT2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRo
aWNrbmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAtICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJk
T2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBwYWludEJvcmRlclJlY3QueCgp
LCBwYWludEJvcmRlclJlY3QueSgpLCBwYWludEJvcmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRl
clJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwgU09MSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFkamFjZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDEsIHkxICsgbWl0cmVPZmZzZXQyLCB0aGly
ZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDQpIC0gKHkxICsgbWl0cmVPZmZzZXQyKSks
IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVy
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MSwgeTEgKyBtaXRyZU9m
ZnNldDIsIHRoaXJkT2ZUaGlja25lc3MsICh5MiAtIG1pdHJlT2Zmc2V0NCkgLSAoeTEgKyBtaXRy
ZU9mZnNldDIpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcGFpbnRCb3JkZXJSZWN0LngoKSwg
cGFpbnRCb3JkZXJSZWN0LnkoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFgoKSwgcGFpbnRCb3JkZXJS
ZWN0Lm1heFkoKSwgc2lkZSwgY29sb3IsIFNPTElELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkamFjZW50MUJpZ1RoaXJkLCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKIAot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRCb3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoTGF5b3V0UmVjdCh4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZz
ZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVP
ZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MiAtIHRo
aXJkT2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIg
LSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9y
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9y
ZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNl
bnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRl
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBmbG9hdCB4MQogICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRl
eHQtPnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4MSwgeTEsIHgyIC0geDEs
IHkyIC0geTEsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwg
eTIgLSB5MSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNlZCk7CiAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VTdHlsZShvbGRTdHJva2VTdHlsZSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE8KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSB0b0VsZW1lbnQobiktPmdl
dEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgp
LmNvbXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCkKQEAgLTEwNjEsMTAgKzEwNjEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50
T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWMK
ICAgICBpZiAoc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLm91
dGxpbmVTdHlsZSgpID09IEJOT05FKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IGlu
bmVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpOworICAgIEludFJlY3QgaW5uZXIg
PSBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpOwogICAgIGlubmVyLmluZmxhdGUob3V0bGluZU9m
ZnNldCk7CiAKLSAgICBJbnRSZWN0IG91dGVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lcik7
CisgICAgSW50UmVjdCBvdXRlciA9IHNuYXBwZWRJbnRSZWN0KGlubmVyKTsKICAgICBvdXRlci5p
bmZsYXRlKG91dGxpbmVXaWR0aCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBwcmV2ZW50cyBvdXRs
aW5lcyBmcm9tIHBhaW50aW5nIGluc2lkZSB0aGUgb2JqZWN0LiBTZWUgYnVnIDEyMDQyCkBAIC0x
MTY2LDcgKzExNjYsNyBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogICAgIExheW91dFJlY3QgcmVzdWx0ID0g
cmVjdHNbMF07CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBuOyArK2kpCiAgICAgICAgIHJl
c3VsdC51bml0ZShyZWN0c1tpXSk7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVz
dWx0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3QocmVzdWx0KTsKIH0KIAogdm9pZCBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
KQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q28KICAgICAgICAg
QVNTRVJUKHJlcGFpbnRDb250YWluZXIgPT0gJnYpOwogICAgICAgICBib29sIHZpZXdIYXNDb21w
b3NpdGVkTGF5ZXIgPSB2Lmhhc0xheWVyKCkgJiYgdi5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsK
ICAgICAgICAgaWYgKCF2aWV3SGFzQ29tcG9zaXRlZExheWVyIHx8IHYubGF5ZXIoKS0+YmFja2lu
ZygpLT5wYWludHNJbnRvV2luZG93KCkpIHsKLSAgICAgICAgICAgIHYucmVwYWludFZpZXdSZWN0
YW5nbGUodmlld0hhc0NvbXBvc2l0ZWRMYXllciAmJiB2LmxheWVyKCktPnRyYW5zZm9ybSgpID8g
TGF5b3V0UmVjdCh2LmxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEZv
clBhaW50aW5nKHIsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpKSA6IHIpOworICAg
ICAgICAgICAgdi5yZXBhaW50Vmlld1JlY3RhbmdsZSh2aWV3SGFzQ29tcG9zaXRlZExheWVyICYm
IHYubGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBMYXlvdXRSZWN0KHYubGF5ZXIoKS0+dHJhbnNmb3Jt
KCktPm1hcFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhyLCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKSkgOiByKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTEzNTYsMTYgKzEzNTYsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRTbG93
UmVwYWludE9iamVjdCgpIGNvbnN0CiAgICAgLy8gdGhlcmUgaXMsIHRoZW4gd2Ugc2hvdWxkIG5v
dCBhbGxvdyBwYWludGluZyB0byBjbGlwIHRvIHRoZSBsYXllciBzaXplLgogICAgIGlmIChpc1Jv
b3QoKSB8fCBpc0JvZHkoKSkgewogICAgICAgICBzaG91bGRDbGlwVG9MYXllciA9ICF2aWV3LT5m
cmFtZVZpZXcoKS5oYXNFeHRlbmRlZEJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcoKTsKLSAgICAg
ICAgcmVwYWludFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHZpZXctPmJhY2tncm91bmRSZWN0
KHZpZXcpKTsKKyAgICAgICAgcmVwYWludFJlY3QgPSBzbmFwcGVkSW50UmVjdCh2aWV3LT5iYWNr
Z3JvdW5kUmVjdCh2aWV3KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGFpbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyKSk7CisgICAgICAgIHJlcGFpbnRSZWN0ID0gc25hcHBlZEludFJlY3QoY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwogCiAgICAgcmVwYWludFVz
aW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBzaG91bGRDbGlwVG9M
YXllcik7CiB9CiAKIEludFJlY3QgUmVuZGVyT2JqZWN0OjpwaXhlbFNuYXBwZWRBYnNvbHV0ZUNs
aXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewotICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKKyAgICByZXR1cm4gc25hcHBlZElu
dFJlY3QoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCiBib29sIFJlbmRlck9i
amVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IGNiOGIxYmE2ODI4Mjc2N2UzNzNm
Nzk5YjhlNDYwOGQ3Y2RlOWMyMjUuLjI0MjVmMDYyMzFmZTg5MTViZTg5MTZkZTkyMTI3YWMxZGUx
MDIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVz
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApA
QCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbAogICAgICAgICBmcmFtZS5z
ZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJh
bWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVT
aXplID0gdGhlbWUoKS5wcm9ncmVzc0JhclJlY3RGb3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBl
ZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgp
LnByb2dyZXNzQmFyUmVjdEZvckJvdW5kcygqdGhpcywgc25hcHBlZEludFJlY3QoZnJhbWUpKS5z
aXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDk3NGU3NzJj
NzM5NGU2Mjc2MDZhZDY1NWY0YzQ2YzUwZTNhMGM3MzcuLjQ1ZTE3MWE2NGU4ZDYwNmU0Y2NkZWY0
MTFiZjllOTI5ZjhlN2E3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAg
ICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVjdGlvblBh
aW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5n
UmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxl
Y3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDEwN2M1YzEzZjU1M2VhYmQzMzA1MjMzYjFm
YTNhZGI2YjMyNjk5MTIuLjY2ZGZkMmY2ODA2Y2JkMWM4MTBmYjVmNjJiNjlhZmRlOTQ0NjkwYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5j
cHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50
b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0CiAgICAgfQogICAg
IAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCi0gICAgUGFpbnRJbmZvIHBhaW50SW5mbyhncmFw
aGljc0NvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QocmVjdCksIFBhaW50UGhhc2VCbG9ja0Jh
Y2tncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwpOworICAgIFBhaW50SW5mbyBwYWludEluZm8o
Z3JhcGhpY3NDb250ZXh0LCBzbmFwcGVkSW50UmVjdChyZWN0KSwgUGFpbnRQaGFzZUJsb2NrQmFj
a2dyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7CiAgICAgcGFpbnQocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNr
Z3JvdW5kczsKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDhmMDg5OWYxNzIw
ODIwOGY5MjBhNTkxMmU5ZGIyNzVhY2E5MmY2NjUuLmRmZmY3NWNkYTY2MmQzYTZhMDdhZWU3OWY0
YTA0NTZkOTljZDg2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6
OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhu
YW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1
cE1lbnUoKS0+c2hvdyhwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkpLCAmdmlldygpLmZyYW1lVmlldygpLCAtMSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBN
ZW51KCktPnNob3coc25hcHBlZEludFJlY3QoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSksICZ2
aWV3KCkuZnJhbWVWaWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6aGlk
ZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCmluZGV4IDc2YzZiMDc0N2U3YjZjZDNhYmQyYzM0ZmVkZTA0MDc5ODY0
NTk4MDcuLjc5NzhmZTIxZTRkY2Q2ZDc5ZmI0YjRmYjQwMDkyZTkyMWZhYmNmMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgY29udGVu
dExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwg
Y29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpOworICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0
KTsKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdo
dCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBhYWU1NWE2OWQxNjI1NWM3OWYxNDVkMTgzOWJkODIx
MDJhMjg2YmFmLi4wZjJiNzRiNGY3ZWEwZTc3MDc1M2FkZjRlMGYyNTM0Y2VkZDBlZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTE2OSw3
ICsxMTY5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpbnQgbGVmdFdpZHRoID0g
bGVmdFZhbC53aWR0aCgpOwogICAgIGludCByaWdodFdpZHRoID0gcmlnaHRWYWwud2lkdGgoKTsK
IAotICAgIEludFJlY3QgYm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0
LngoKSAtIGxlZnRXaWR0aCAvIDIsCisgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gc25hcHBlZElu
dFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC55
KCkgLSB0b3BXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC53aWR0aCgpICsgbGVmdFdpZHRo
IC8gMiArIChyaWdodFdpZHRoICsgMSkgLyAyLAogICAgICAgICBwYWludFJlY3QuaGVpZ2h0KCkg
KyB0b3BXaWR0aCAvIDIgKyAoYm90dG9tV2lkdGggKyAxKSAvIDIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggYWU1YjBhNjc2OWNiOGIz
YWViMDBkY2UyYWNhYTFiMWU4NjE3Zjg0Zi4uOGIwZDBlZmJiM2Q1ZmI2MGVjNWE4MjE3OGEyMzMx
NDRmOGI1MjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRk
Rm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAg
IGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBl
ZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVu
ZChzbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogUmVuZGVy
T2JqZWN0KiBSZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9v
bCByZWxheW91dENoaWxkcmVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCA0YTM5ZTI1NzdhOTJkZmJi
MjAxZmZlZmEzMjcyNWE3ODM1NzIxNTI0Li41OTU3ZWU3YTY4YjkyYmRiYzI2ZDAyY2FiMDBiZmM5
ZGI5MmFkNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JgogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0aGUgY29v
cmRzIHVzZWQgZm9yIHBhaW50aW5nIHRoZSBjb250ZW50CiAgICAgICAgIGNvbnRlbnRzUmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKLSAgICAgICAgdGhlbWUoKS5wYWludENh
cHNMb2NrSW5kaWNhdG9yKCp0aGlzLCBwYWludEluZm8sIHBpeGVsU25hcHBlZEludFJlY3QoY29u
dGVudHNSZWN0KSk7CisgICAgICAgIHRoZW1lKCkucGFpbnRDYXBzTG9ja0luZGljYXRvcigqdGhp
cywgcGFpbnRJbmZvLCBzbmFwcGVkSW50UmVjdChjb250ZW50c1JlY3QpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGZlMjc5YWIzODFh
MzRkNDYxNDQ5NmI0NmFhOTFlZjBlMmZkNGQ0OTguLjM4MzZlZDgyNTAzMDlhMmE0MGQ5NmViODRk
MGZiNjM0ZDY3MTZhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMjY3LDggKzI2Nyw4IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvLnN0eWxlKCkuYXBwZWFyYW5j
ZSgpOwotICAgIEludFJlY3QgaW50ZWdyYWxTbmFwcGVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3Qocik7Ci0gICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhyLCBvLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAg
SW50UmVjdCBpbnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3Qocik7CisgICAgRmxv
YXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIs
IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogI2lmIFVTRShORVdfVEhFTUUp
CiAgICAgc3dpdGNoIChwYXJ0KSB7CkBAIC00MDAsNyArNDAwLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZTo6cGFpbnRCb3JkZXJPbmx5KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICBVTlVTRURfUEFSQU0ocik7CiAgICAgcmV0dXJuIG8uc3R5bGUoKS5hcHBl
YXJhbmNlKCkgIT0gTm9Db250cm9sUGFydDsKICNlbHNlCi0gICAgRmxvYXRSZWN0IGRldmljZVBp
eGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyLCBvLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJl
Y3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKICAgICAvLyBDYWxsIHRoZSBhcHByb3ByaWF0ZSBwYWludCBtZXRob2QgYmFzZWQg
b2ZmIHRoZSBhcHBlYXJhbmNlIHZhbHVlLgogICAgIHN3aXRjaCAoby5zdHlsZSgpLmFwcGVhcmFu
Y2UoKSkgewogICAgIGNhc2UgVGV4dEZpZWxkUGFydDoKQEAgLTQ1MCw4ICs0NTAsOCBAQCBib29s
IFJlbmRlclRoZW1lOjpwYWludERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IGludGVncmFs
U25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOwotICAgIEZsb2F0UmVjdCBk
ZXZpY2VQaXhlbFNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcocmVjdCwgcmVu
ZGVyZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBJbnRSZWN0IGludGVn
cmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBGbG9hdFJlY3QgZGV2
aWNlUGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgcmVuZGVy
ZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIENhbGwgdGhlIGFw
cHJvcHJpYXRlIHBhaW50IG1ldGhvZCBiYXNlZCBvZmYgdGhlIGFwcGVhcmFuY2UgdmFsdWUuCiAg
ICAgc3dpdGNoIChyZW5kZXJlci5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGEwOTBkOWFmMDkyODNkOGRlYzk3
NjNkZGJjNTc2MjEyOWE5ZTcxN2EuLjk3ZDcyYjkyNzM1NDI2YzAzZGQyNmQwOTFhNGI1NWIzZWUz
MTYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAg
LTE4MzgsNyArMTgzOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQ
bHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBjb250ZW50TG9j
YXRpb24ubW92ZShyZW5kZXJCbG9jay5ib3JkZXJMZWZ0KCkgKyByZW5kZXJCbG9jay5wYWRkaW5n
TGVmdCgpLCByZW5kZXJCbG9jay5ib3JkZXJUb3AoKSArIHJlbmRlckJsb2NrLnBhZGRpbmdUb3Ao
KSk7CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7
Ci0gICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7Cisg
ICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlY3QpOwogICAgIGlmIChh
bGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTE4ODQsNyArMTg4NCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QKIAogICAgIExheW91dFNpemUgcGx1Z2luU2l6ZShwbHVnSW5SZW5kZXJlci0+Y29u
dGVudFdpZHRoKCksIHBsdWdJblJlbmRlcmVyLT5jb250ZW50SGVpZ2h0KCkpOwogICAgIExheW91
dFJlY3QgcGx1Z2luUmVjdChzbmFwc2hvdEFic1BvcywgcGx1Z2luU2l6ZSk7Ci0gICAgSW50UmVj
dCBhbGlnbmVkUGx1Z2luUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVjdCk7Cisg
ICAgSW50UmVjdCBhbGlnbmVkUGx1Z2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHBsdWdpblJlY3Qp
OwogCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1
Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA2ZTk1MTllMzk5MGIx
YWU2NDgwNWQ5NDAzMjYzYTAyOTYyMzhiODMyLi40MDExNGQ5ZDM0N2UxNTUwZTI4YTJkNWZlNmVj
MDM5ZTJhZWQ1M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCkBAIC01ODcsMTAgKzU4NywxMCBAQCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0U3Ry
ZWFtJiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgYmFja2dyb3VuZENsaXBSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb3V0bGluZUNsaXBS
ZWN0LAogICAgICAgICAgICAgICAgICAgTGF5ZXJQYWludFBoYXNlIHBhaW50UGhhc2UgPSBMYXll
clBhaW50UGhhc2VBbGwsIGludCBpbmRlbnQgPSAwLCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhh
dmlvciA9IFJlbmRlckFzVGV4dEJlaGF2aW9yTm9ybWFsKQogewotICAgIEludFJlY3QgYWRqdXN0
ZWRMYXlvdXRCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyQm91bmRzKTsKLSAgICBJ
bnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChi
YWNrZ3JvdW5kQ2xpcFJlY3QpOwotICAgIEludFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QoY2xpcFJlY3QpOwotICAgIEludFJlY3QgYWRqdXN0ZWRPdXRsaW5lQ2xp
cFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG91dGxpbmVDbGlwUmVjdCk7CisgICAgSW50UmVj
dCBhZGp1c3RlZExheW91dEJvdW5kcyA9IHNuYXBwZWRJbnRSZWN0KGxheWVyQm91bmRzKTsKKyAg
ICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBSZWN0ID0gc25hcHBlZEludFJlY3QoYmFj
a2dyb3VuZENsaXBSZWN0KTsKKyAgICBJbnRSZWN0IGFkanVzdGVkQ2xpcFJlY3QgPSBzbmFwcGVk
SW50UmVjdChjbGlwUmVjdCk7CisgICAgSW50UmVjdCBhZGp1c3RlZE91dGxpbmVDbGlwUmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG91dGxpbmVDbGlwUmVjdCk7CiAKICAgICB3cml0ZUluZGVudCh0cywg
aW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXgg
NzcxNWQwNDljN2JkMDJkZjIxNWM4N2FhODMxMWM2ZjI3NjJmZTlmZC4uNWM5NjA2ZmI2OGM0ZWFm
ZWE3NjhlNzAxZmEzNmM5YjM0NTBjYjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgSW50UmVjdCBSZW5kZXJWaWRlbzo6dmlk
ZW9Cb3goKSBjb25zdAogICAgIGlmICh2aWRlb0VsZW1lbnQoKS5zaG91bGREaXNwbGF5UG9zdGVy
SW1hZ2UoKSkKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IG1fY2FjaGVkSW1hZ2VTaXplOwogCi0g
ICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVwbGFjZWRDb250ZW50UmVjdChpbnRyaW5z
aWNTaXplKSk7CisgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KHJlcGxhY2VkQ29udGVudFJlY3Qo
aW50cmluc2ljU2l6ZSkpOwogfQogCiBib29sIFJlbmRlclZpZGVvOjpzaG91bGREaXNwbGF5Vmlk
ZW8oKSBjb25zdApAQCAtMTkxLDkgKzE5MSw5IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAg
ICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwg
cmVjdCk7CiAgICAgZWxzZSBpZiAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgIG1lZGlhUGxh
eWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpKTsKKyAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KGNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICBlbHNlCi0gICAgICAgIG1l
ZGlhUGxheWVyLT5wYWludChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAg
ICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KGNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsK
IH0KIAogdm9pZCBSZW5kZXJWaWRlbzo6bGF5b3V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCBkMjcyNTI4MmRlZDViMjI0MDRjZGVkM2ZjNzg4ODU4YjYzOTI1
MzFhLi5iNWNiMTEzMzQ1ZWU1YzRkNTQ4NjhlOTE0NWRhMDZiMjBjZjZiNDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50
UmVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZyYW1lVmlldygpLmFk
ZFRyYWNrZWRSZXBhaW50UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyZXBhaW50UmVjdCwg
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZnJhbWVWaWV3KCkuYWRkVHJh
Y2tlZFJlcGFpbnRSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVwYWludFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgLy8gRklYTUU6IGNvbnZlcnQgYWxs
IHJlcGFpbnQgcmVjdCBkZXBlbmRlbmNpZXMgdG8gRmxvYXRSZWN0LgogICAgIEludFJlY3QgZW5j
bG9zaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVwYWludFJlY3QpOwpAQCAtNzA3LDcgKzcw
Nyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAgICAgICAgIAogICAgIC8vIEFwcGx5IG91
ciB0cmFuc2Zvcm0gaWYgd2UgaGF2ZSBvbmUgKGJlY2F1c2Ugb2YgZnVsbCBwYWdlIHpvb21pbmcp
LgogICAgIGlmICghcmVwYWludENvbnRhaW5lciAmJiBsYXllcigpICYmIGxheWVyKCktPnRyYW5z
Zm9ybSgpKQotICAgICAgICByZWN0ID0gTGF5b3V0UmVjdChsYXllcigpLT50cmFuc2Zvcm0oKS0+
bWFwUmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyZWN0LCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKSk7CisgICAgICAgIHJlY3QgPSBMYXlvdXRSZWN0KGxheWVyKCktPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKSkpOwogfQogCiBib29sIFJlbmRlclZpZXc6OmlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBjb25zdApAQCAtNzIwLDcgKzcyMCw3IEBAIGJvb2wgUmVuZGVy
Vmlldzo6aXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIGNvbnN0CiAKIHZvaWQgUmVuZGVy
Vmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVs
U25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUoKSkpOworICAg
IHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbGF5ZXIoKS0+
c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdApAQCAtNzUwLDcgKzc1MCw3IEBA
IEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVk
SW50UmVjdChzZWxSZWN0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3Qoc2VsUmVjdCk7CiB9
CiAKIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlvbkJvdW5kcyhjb25zdCBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29u
c3QKQEAgLTExMzAsNyArMTEzMCw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6dW5zY2FsZWREb2N1
bWVudFJlY3QoKSBjb25zdAogewogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0KGxheW91dE92
ZXJmbG93UmVjdCgpKTsKICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dSZWN0KTsKLSAg
ICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOworICAgIHJldHVybiBz
bmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOwogfQogCiBib29sIFJlbmRlclZpZXc6OnJvb3RC
YWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCmluZGV4IGNiOWY0NTcxODkxNWM1OWY2ODA3Y2MzZDhhMjk0OTRmZmU2Mjc0MDAu
LmZjYzk4ZjBhNDI3MDhmZWNkM2YzNjMxMjE2OTU5Njg5MmVlNGJjNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVJlbmRlckNvdW50ZXIoKSB7IEFTU0VSVChtX3JlbmRlckNvdW50ZXJDb3VudCA+
IDApOyBtX3JlbmRlckNvdW50ZXJDb3VudC0tOyB9CiAgICAgYm9vbCBoYXNSZW5kZXJDb3VudGVy
cygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9CiAgICAgCi0gICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFw
cGVkTGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QobGF5
b3V0T3ZlcmZsb3dSZWN0KCkpOyB9CiAKICAgICBJbWFnZVF1YWxpdHlDb250cm9sbGVyJiBpbWFn
ZVF1YWxpdHlDb250cm9sbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKaW5kZXggMWZmODNhOGE1ZWU1M2U1M2U1MjI3MTNkZmFlMDQxYzU4YjIwNzY1My4u
M2NiMTk4YzFmZDllZTcxNTg5YTEzYzA2MmM3NjE3ZTY3ZTVmMzQ0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFJl
bmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdp
ZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zm
c2V0KTsKICAgICB9Ci0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOworICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdl
dFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNs
YXRlKC13aWRnZXRQYWludE9mZnNldCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVy
IHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5w
cmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJz
b2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSks
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAg
fQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAKaW5kZXggMjY2ODMzYWJhM2NiNjk4MzBjMmUzYzY5ZjU2Mjc2ZjVkYzQ1MTgyZi4uMWNmZGYz
MTYxMWZhNTgyNjhhZDJjODQ0OThjZGI2NDZjZDUxODk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNDks
NyArNDksNyBAQCBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiBzdGF0aWMgdm9pZCBwYWlu
dERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheW91dFJlY3QgYm9yZGVy
UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGJvcmRlclJlY3Qu
bW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBJbnRSZWN0IHNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChib3JkZXJSZWN0KTsKKyAgICBJbnRSZWN0IHNuYXBwZWRSZWN0ID0gc25hcHBl
ZEludFJlY3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKHNuYXBwZWRSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXgg
NGJmOGM2ZTVkNGViZjYxNzk1ZWY4ODk0MmUwMjZlN2IyOTU0NjgyZC4uODJmMmEyODZhMDhiZDhk
OWFlMWM1MDQ1NDA1OGFmZmY2YjlkNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBM
YQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFn
ZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VSLCBjb25z
dCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgbWFy
Z2luKQogewotICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbWFn
ZVIpOwotICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobWFyZ2lu
Uik7CisgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOworICAg
IEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8g
aW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2lu
UmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6
ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcAppbmRleCAwY2M0ZTA3ZDc4ZjE3YmQwYWRlYzE2NjExOGU5OTUyMjY5
ZTcxY2MzLi5mYzdjODA0OGMyODIzMTVjZmY2MWFkZTM2ZTU4YjgyOTZjNjBhNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpv
dXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGFkanVz
dFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CiAKICAgICBGbG9hdFF1YWQgY29udGFpbmVy
UmVsYXRpdmVRdWFkID0gbG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRSZWN0KGJveCksIHJlcGFp
bnRDb250YWluZXIpOwotICAgIHJldHVybiBMYXlvdXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRpdmVRdWFkLmJvdW5kaW5nQm94KCkpLCBkb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRpdmVRdWFkLmJvdW5k
aW5nQm94KCkpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAogdm9pZCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAwMjhiMDc5Yjgy
ZTVkMDUwOTNhZGJkYmM4ZmQ3NjM5NmM2MTZmNjlhLi5mYjIyOWE0OTNhMTdiYWQ0OWQxZTQ2ZTM2
N2FhOTdmNGYxZTVjYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dAogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAgICAgaWYgKHNob3VsZEFw
cGx5Vmlld3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAo
cGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29u
dGV4dC0+Y2xpcChzbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBj
dXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKIAogICAgIC8vIENvbnZlcnQgZnJv
bSBjb250YWluZXIgb2Zmc2V0cyAoaHRtbCByZW5kZXJlcnMpIHRvIGEgcmVsYXRpdmUgdHJhbnNm
b3JtIChzdmcgcmVuZGVyZXJzKS4KICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBvdXIgcGFpbnQgY29u
dGFpbmVyJ3MgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gb3VyIGxvY2FsIGNvb3Jkcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGIy
MTExOTZmZDJiNWM1OTdmMmU1ZTE3MDUwMTRlMjFkOTcwN2IwNGEuLmQ0MGJhYzMyYjYzZWY2MWRl
YzVlNWIzY2YzYzNjODYzNzM2YzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIEZsb2F0UmVj
dCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNvbnN0IFNW
R1RleHRGcmFnbWVudCYKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0
KHRleHRPcmlnaW4sIExheW91dFNpemUoMCwgZnJhZ21lbnQuaGVpZ2h0ICogc2NhbGluZ0ZhY3Rv
cikpOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQp
OwogICAgIHNjYWxlZEZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rp
b25SZWN0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgRmxvYXRSZWN0IHNuYXBw
ZWRTZWxlY3Rpb25SZWN0ID0gZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxl
Y3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVu
Lmx0cigpKTsKKyAgICBGbG9hdFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QgPSBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIo
KS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSk7CiAgICAgaWYgKHNj
YWxpbmdGYWN0b3IgPT0gMSkKICAgICAgICAgcmV0dXJuIHNuYXBwZWRTZWxlY3Rpb25SZWN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDM4ODI0ZDJhNTZiMjczMWU1
Yzc2YjUyNDQxYjIyMGQ1YWRjY2NmYy4uMjZjY2E0NGFiMGNmNmM3NWQwOWQ2ZjFmMWQ5MzBmYmRl
OGE4MDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzA2MCw3ICsz
MDYwLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgICAg
ICAgICAgW3JlZ2lvblZhbHVlcyByZWxlYXNlXTsKICAgICAgICAgfQogCi0gICAgICAgIFdlYkRh
c2hib2FyZFJlZ2lvbiAqd2ViUmVnaW9uID0gW1tXZWJEYXNoYm9hcmRSZWdpb24gYWxsb2NdIGlu
aXRXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6cGl4ZWxT
bmFwcGVkSW50UmVjdChyZWdpb24uY2xpcCkgdHlwZTp0eXBlXTsKKyAgICAgICAgV2ViRGFzaGJv
YXJkUmVnaW9uICp3ZWJSZWdpb24gPSBbW1dlYkRhc2hib2FyZFJlZ2lvbiBhbGxvY10gaW5pdFdp
dGhSZWN0OnNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6c25hcHBlZEludFJlY3Qo
cmVnaW9uLmNsaXApIHR5cGU6dHlwZV07CiAgICAgICAgIFtyZWdpb25WYWx1ZXMgYWRkT2JqZWN0
OndlYlJlZ2lvbl07CiAgICAgICAgIFt3ZWJSZWdpb24gcmVsZWFzZV07CiAgICAgfQpAQCAtMzkx
Myw3ICszOTEzLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQog
ICAgIE5TTXV0YWJsZUFycmF5KiByZWN0c0FycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpyZXBhaW50UmVjdHMuc2l6ZSgpXTsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVwYWludFJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBbcmVj
dHNBcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRS
ZWN0KExheW91dFJlY3QocmVwYWludFJlY3RzW2ldKSldXTsKKyAgICAgICAgW3JlY3RzQXJyYXkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6c25hcHBlZEludFJlY3QoTGF5b3V0UmVj
dChyZXBhaW50UmVjdHNbaV0pKV1dOwogCiAgICAgcmV0dXJuIFtyZWN0c0FycmF5IGF1dG9yZWxl
YXNlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
CmluZGV4IDRjOWYyNTI0YTk0Y2I1OTAwYTM3YzgwOThjMzgwOTdiNjA1YjUwNjkuLmNkZGRjODE2
YWJiODE3ZTgzNTc3YjkxMGM2MzNlMzBhMGVlNjA1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFw
c2hvdE9wdGlvbnMgb3B0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTGF5b3V0UmVjdCB0b3BM
ZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0
KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3Qg
cGFpbnRpbmdSZWN0ID0gc25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3Qo
dG9wTGV2ZWxSZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobV9ub2RlLmdl
dCgpKTsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gaW1hZ2VGb3JSZWN0KGZyYW1lVmll
dywgcGFpbnRpbmdSZWN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMmEwNmU2MGM0MTBhOTk0YWY1NDY3Nzg0NGRlZTIw
M2MyMDMyNDVkLi5iNmM3ZTBkODExNDU1YzZlODA1N2ZjMDBkMWM4MWI0NjJjMzk1ODhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzA1
LDcgKzE3MDUsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUo
V2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBzbmFwc2hv
dFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290
UmVjdCh0b3BMZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsK
IAogICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IDE7CiAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemUg
PSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CmluZGV4IDE2ZjcyMjIyNTFmODQ4MGYwNjY1Y2E3MDhiY2JkMzljNDVlZWQzMGQuLmZiNjhiN2Ex
MDI3ZmYzZjI0MmE4YzFkOGM4YmMwYmMxYWZjMmEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIubW0KQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCkKICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3Rm9yUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS0+b3duZXJEb2N1bWVudCgpLnZpZXcoKTsKIAog
ICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cykgewotICAg
ICAgICAgICAgSW50UmVjdCBjdXJyZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7
CisgICAgICAgICAgICBJbnRSZWN0IGN1cnJlbnRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7
CiAgICAgICAgICAgICBjdXJyZW50UmVjdC5zZXRMb2NhdGlvbihtYWluRnJhbWVWaWV3LndpbmRv
d1RvQ29udGVudHModmlld0ZvclJhbmdlLT5jb250ZW50c1RvV2luZG93KGN1cnJlbnRSZWN0Lmxv
Y2F0aW9uKCkpKSk7CiAgICAgICAgICAgICBjZ1JlY3RzLmFwcGVuZCgoQ0dSZWN0KWN1cnJlbnRS
ZWN0KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237284</attachid>
            <date>2014-08-27 20:41:37 -0700</date>
            <delta_ts>2014-08-27 21:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136319-20140827204130.patch</filename>
            <type>text/plain</type>
            <size>146279</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RiOTFmNmU0ZmZhMmY4
ZTg2YTBhZWZiZjU2YTgzOGI1OTM1OThlZC4uNzM2ZmU2OTNjNjhhOGE0N2E3ZGY4ZWNjMjE4Zjc3
M2QwYTU0ODhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzNSBAQAogMjAxNC0wOC0yNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCisgICAgICAgIFN1YnBpeGVsIGxheW91dDog
UmVuYW1lIExheW91dFJlY3QncyBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZnVuY3Rpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEZyb20gcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoKSB0byBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKCkgYW5kIAorICAgICAg
ICBwaXhlbFNuYXBwZWRJbnRSZWN0KigpIHRvIHNuYXBwZWRJbnRSZWN0KigpLgorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmJvdW5kaW5nQm94Rm9yUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNPbnNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwaXhlbFNuYXBwZWRFbGVtZW50UmVjdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlv
blJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgYWNjZXNzaWJpbGl0eUFjdGl2YXRpb25Qb2ludF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RnJhbWVdKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0
TWVudV0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tOgor
ICAgICAgICAoLVtET01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hXaXRoT3duZXI6XSk6Cisg
ICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6XSk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlZFRyYW5zZm9ybSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnBpeGVsU25hcHBlZFJlbmRlclJlY3QpOgorICAgICAgICAqIGVkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9u
OjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlk
UGFpbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpleHRlbmRlZEJhY2tncm91bmRSZWN0Rm9yUGFpbnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdEZvckZyYW1l
T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVy
VG9Db250YWluaW5nVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL2lv
cy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xp
Y2tFdmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZWN0VG9E
ZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nUmVjdEZvclBhaW50aW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzbmFwcGVkSW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzbmFw
cGVkSW50UmVjdEZyb21FZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3Jp
dGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRJbnRSZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQ
aXhlbEFsaWdubWVudCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6
cGFpbnRTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBw
bHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojpwb3NpdGlvbkZvck9mZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRWaXN1YWxPdmVyZmxvd0Zyb21U
aGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsaXBP
dXRGbG9hdGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojph
ZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVSZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGl4ZWxTbmFwcGVk
RnJhbWVSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBpeGVs
U25hcEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Rm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3Vh
bE92ZXJmbG93RnJvbVRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckhU
TUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjbGlwVG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0UmVzaXplckluRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmJhY2tncm91bmRCb3hGb3JQYWludGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRl
bnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3Np
dGluZ0ZvclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3Vz
UmluZ1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91
bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWV0ZXI6OnVwZGF0ZUxv
Z2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxl
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpwYWludE91dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojph
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnJlcGFpbnRVc2luZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnJlcGFpbnRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBy
b2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNlYXJjaEZpZWxkOjpzaG93UG9wdXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2Vk
Qm9yZGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRl
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWRlbzo6dmlkZW9Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VmlkZW86OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpwYWludERlYnVnQm9yZGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRC
b3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQpOgorCisyMDE0LTA4LTI3ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgU3VicGl4ZWwgbGF5b3V0OiBSZW5h
bWUgRmxvYXRQb2ludC9GbG9hdFJlY3QgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGZ1bmN0aW9ucy4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjMxNAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggNDJhZWY0ZjM5OWJhZTBlOTc3MjY5ZTJiNDBmMWE0YjM0ZjI2
ZDFmYi4uNGI1NWJkNDYzNGIxZWYyMTU5OTU2ZmYwZTYyMDQxMjAyNzljYmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA4LTI3ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgbGF5b3V0OiBSZW5hbWUgTGF5b3V0UmVj
dCdzIGRldmljZSBwaXhlbCBzbmFwcGluZyBmdW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzMTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgRnJvbSBwaXhlbFNuYXBwZWRGb3JQYWludGluZygp
IHRvIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKSBhbmQgCisgICAgICAgIHBpeGVsU25hcHBlZElu
dFJlY3QqKCkgdG8gc25hcHBlZEludFJlY3QqKCkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2Rhc2hib2FyZFJlZ2lvbnNdKToKKyAgICAgICAgKC1bV2ViVmlldyB0cmFja2Vk
UmVwYWludFJlY3RzXSk6CisKIDIwMTQtMDgtMjUgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBXS0NvcHlDRkxvY2FsaXphdGlvblBy
ZWZlcnJlZE5hbWUgd2l0aCBOU0xvY2FsZSBwdWJsaWMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODFiNmVl
OGRlODAyMTg2ODQzOWM2YTIyYTIwYjE3YTBhZmUwMTg3ZC4uNWM1NjQ4ZGJlMjYzNDc2ZTEwZmQy
MGIxNjA3N2E5OTcwYzBkNmU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE0LTA4
LTI3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU3VicGl4ZWwg
bGF5b3V0OiBSZW5hbWUgTGF5b3V0UmVjdCdzIGRldmljZSBwaXhlbCBzbmFwcGluZyBmdW5jdGlv
bnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYz
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgRnJvbSBw
aXhlbFNuYXBwZWRGb3JQYWludGluZygpIHRvIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKSBhbmQg
CisgICAgICAgIHBpeGVsU25hcHBlZEludFJlY3QqKCkgdG8gc25hcHBlZEludFJlY3QqKCkuCisK
KyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KToKKworMjAxNC0w
OC0yNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFN1YnBpeGVs
IGxheW91dDogUmVuYW1lIEZsb2F0UG9pbnQvRmxvYXRSZWN0IGRldmljZSBwaXhlbCBzbmFwcGlu
ZyBmdW5jdGlvbnMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzYzMTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggODhiMzRiMTJmNmVjMTdlMTJkMmU4YmVhZDIyOWI2
NjE3ZjZlODIyOC4uNTMwYTg1M2NiZDA4MmUyMjExYzE4NmRhN2E2NzYzZmM5YzUxOGU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCkBAIC03NjYsNyArNzY2LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpi
b3VuZGluZ0JveEZvclF1YWRzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBWZWN0b3IKICAgICAg
ICAgICAgIHJlc3VsdC51bml0ZShyKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGl4
ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KHJlc3VsdCkpOworICAgIHJldHVybiBzbmFwcGVk
SW50UmVjdChMYXlvdXRSZWN0KHJlc3VsdCkpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwcmVzcygpCkBAIC0yMjE4LDggKzIyMTgsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvdXRlciA9IG9iamVjdHNbaV07CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGlubmVyID0gb2JqZWN0c1tpIC0gMV07CiAgICAgICAgIC8vIEZJWE1FOiB1bmNsZWFyIGlm
IHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdC4KLSAgICAgICAgY29uc3QgSW50
UmVjdCBvdXRlclJlY3QgPSBpIDwgbGV2ZWxzID8gcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRlci0+
Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7Ci0gICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5uZXItPnBh
cmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0JveFJlY3Qo
KSk7CisgICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHNuYXBw
ZWRJbnRSZWN0KG91dGVyLT5ib3VuZGluZ0JveFJlY3QoKSkgOiBvdXRlci0+Z2V0U2Nyb2xsYWJs
ZUFyZWFJZlNjcm9sbGFibGUoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKKyAgICAgICAgY29uc3QgSW50UmVjdCBpbm5l
clJlY3QgPSBzbmFwcGVkSW50UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygp
ID8gaW5uZXItPnBhcmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3Vu
ZGluZ0JveFJlY3QoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIW91dGVyUmVjdC5pbnRlcnNl
Y3RzKGlubmVyUmVjdCkpIHsKICAgICAgICAgICAgIGlzT25zY3JlZW4gPSBmYWxzZTsKQEAgLTIy
MzIsNyArMjIzMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPbnNjcmVlbigpIGNv
bnN0CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNv
bnN0CiB7Ci0gICAgSW50UmVjdCBvYmplY3RSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3Vu
ZGluZ0JveFJlY3QoKSk7CisgICAgSW50UmVjdCBvYmplY3RSZWN0ID0gc25hcHBlZEludFJlY3Qo
Ym91bmRpbmdCb3hSZWN0KCkpOwogICAgIG9iamVjdFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQo
KSk7CiAgICAgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKaW5kZXggN2U4OWY3MmM4NTZhMzZlYzc5ZWEyZDA2YmNjZDRmY2NhNjFjNDI2Mi4uMWEyMjc3
NjVmZTc1YTQ2YTkwNDhjZWUyN2ZiMTMzNzMzOGJiZDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTY4OCw5ICs2ODgs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRp
bmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QoYm91bmRpbmdCb3hS
ZWN0KCkpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAw
OwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkRWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBw
aXhlbFNuYXBwZWRJbnRSZWN0KGVsZW1lbnRSZWN0KCkpOyB9CisgICAgSW50UmVjdCBwaXhlbFNu
YXBwZWRFbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGVsZW1lbnRS
ZWN0KCkpOyB9CiAgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudFJl
Y3QoKS5zaXplKCk7IH0KICAgICBJbnRTaXplIHBpeGVsU25hcHBlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBlbGVtZW50UmVjdCgpLnBpeGVsU25hcHBlZFNpemUoKTsgfQogICAgIHZpcnR1YWwgSW50
UG9pbnQgY2xpY2tQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjdlMDVhYTc1NTM1
MTBjNzM3NjY2NDgzZTUyZTFiNGZlNzIzOGEyNS4uZjMzODM3NTIzZmI2YmIwMmZiYTZhYTQ4NWE2
ZGUzN2FiZjU1MGJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1JlYWRPbmx5KCkgY29uc3QKIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogewogICAgIEFT
U0VSVChtX3JlbmRlcmVyKTsKLSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CisgICAg
SW50UmVjdCBjb250ZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmFic29sdXRl
Q2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVk
IExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCiAgICAgSW50UmVjdCB2aWV3UmVjdCA9IG1f
cmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJs
ZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogICAgIHZpZXdSZWN0LmludGVy
c2VjdChjb250ZW50UmVjdCk7CkBAIC0xOTUyLDkgKzE5NTIsOSBAQCBJbnRSZWN0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQbwogICAgIH0KICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIG1fcmVu
ZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50c1RvU2NyZWVuKHBpeGVsU25hcHBlZElu
dFJlY3Qob3VycmVjdCkpOworICAgIHJldHVybiBtX3JlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3
KCkuY29udGVudHNUb1NjcmVlbihzbmFwcGVkSW50UmVjdChvdXJyZWN0KSk7CiAjZWxzZQotICAg
IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KG91cnJlY3QpOworICAgIHJldHVybiBzbmFwcGVk
SW50UmVjdChvdXJyZWN0KTsKICNlbmRpZgogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQppbmRleCAyM2E1NTM2MmNkMmYxZWY1NjZjZDgxZTg2YzY4ZDRjMzY3
NzFiM2Q5Li5mM2YxYTZiYjVlOWE5NmIyNWY5YmNmNmE3OGRjMjA1NTA2YWRjY2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTIwOSw3ICsxMjA5LDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQs
IE5TU3RyaW5nICpzdHJpbmcpCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlD
YWxsXSkKICAgICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAgIAotICAgIEludFJlY3QgcmVj
dCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9vYmplY3QtPmJvdW5kaW5nQm94UmVjdCgpKTsKKyAg
ICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVjdC0+Ym91bmRpbmdCb3hSZWN0
KCkpOwogICAgIENHUmVjdCBjZ1JlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdFRvU2NyZWVuU3BhY2U6
cmVjdF07CiAgICAgcmV0dXJuIENHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoY2dSZWN0KSwgQ0dS
ZWN0R2V0TWlkWShjZ1JlY3QpKTsKIH0KQEAgLTEyMTksNyArMTIxOSw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAq
c3RyaW5nKQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAg
ICAgIHJldHVybiBDR1JlY3RaZXJvOwogICAgIAotICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOworICAgIEludFJlY3QgcmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpKTsKICAgICByZXR1cm4gW3Nl
bGYgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOnJlY3RdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDdiZTVlYTc0ZGU0YzU1ZjM0ZWM5YThlYjY1ODcw
YzE1NDBlMzlkNWYuLmRjMjFmZjFiNTczM2M1NmE1ODI4MGNmNDlkNWQ2MDdhNjllNTRiMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xODE4LDcgKzE4MTgs
NyBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkICpp
bmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbAogCiAtIChOU1ZhbHVlICopcG9zaXRpb24KIHsK
LSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50
UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxl
bWVudFJlY3QoKSk7CiAgICAgCiAgICAgLy8gVGhlIENvY29hIGFjY2Vzc2liaWxpdHkgQVBJIHdh
bnRzIHRoZSBsb3dlci1sZWZ0IGNvcm5lci4KICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQgPSBG
bG9hdFBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7CkBAIC0zMTg5LDcgKzMxODksNyBAQCBz
dGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFs
dWUpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAg
SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJlY3QobV9vYmplY3QtPmVsZW1lbnRSZWN0KCkpOwog
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7
CiAgICAgCiAgICAgLy8gT24gV0syLCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBzY3JvbGwg
cG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCmluZGV4IDg0MDkyZDc0ODk4OWQxMGNjNTc0MjlhMzA5YmU2MGEwN2ZmM2M2
ZDguLmI0YTk4YjJmNGE5MDFiN2Q1NTUwYjI1ZmMyZmE2ZGUzY2I0MTI1NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC00
MTQsNyArNDE0LDcgQEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogLSAoQ0dSZWN0
KWJvdW5kaW5nQm94V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgogewogICAgIC8vIGlnbm9y
ZXMgdHJhbnNmb3JtcwotICAgIHJldHVybiBhbk93bmVyID8gcGl4ZWxTbmFwcGVkSW50UmVjdChj
b3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSkgOiBDR1Jl
Y3RaZXJvOworICAgIHJldHVybiBhbk93bmVyID8gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+
Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKIH0K
IAogLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKQEAg
LTQyMiw3ICs0MjIsNyBAQCB1c2luZyBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb247CiAgICAgaWYg
KGFuT3duZXIpIHsKICAgICAgICAgLy8gRklYTUU6IEVDTEFJUgogICAgICAgICAvL1dlYkNvcmU6
OkZsb2F0UXVhZCB0aGVRdWFkID0gY29yZShzZWxmKS0+Z2V0QWJzb2x1dGVRdWFkKGNvcmUoYW5P
d25lciktPnJlbmRlcmVyKCkpOwotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJl
bmRlcmVyKCkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJl
Y3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOwog
ICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAgICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3Qu
eCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgo
KSwgcmVjdC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAppbmRleCBlMzAxODhjMGE2MmFlMWIzOTRiZDkzOTk2MTFhZjY4YjM4
NzY4ZWQ2Li4xZTQ0OTM5MzMyNmRkNmE1ZWZmY2YxOTc1Y2M3ODIzM2QyNDY4YTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5z
Zm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTCiAKICAgICBGbG9hdFJl
Y3QgcGl4ZWxTbmFwcGVkUmVjdDsKICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAg
IHBpeGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh0b1JlbmRlckJveChy
ZW5kZXJlciktPmJvcmRlckJveFJlY3QoKSwgcmVuZGVyZXItPmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgIHBpeGVsU25hcHBlZFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpLCByZW5kZXJlci0+
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBwaXhl
bFNuYXBwZWRSZWN0LCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAppbmRleCAxNjc0ZTY3YjNmYzMwMzI1NWE0OWE1YzMyYjM3YWVlMzkzOTM4NTVjLi4wYTk3
NjAyYjFmMGY0ZjcxNzNiYjdiY2U2MzE0YjRhMjhlMTg0NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3
OCw5ICszNzgsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJv
dW5kaW5nQm94KCkgY29uc3Q7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCgp
IGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0KKyAg
ICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc25hcHBl
ZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0
IHJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCk7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRS
ZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpIHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qo
cmVuZGVyUmVjdChpc1JlcGxhY2VkKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlbmRl
clJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gc25hcHBlZEludFJlY3QocmVuZGVyUmVj
dChpc1JlcGxhY2VkKSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIG5vZGVJbmRl
eCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNw
cAppbmRleCA0ZDYyOGY5ZGI3NDZhNDdlNjkwYmJhOWE2NjEyNGYyZWVhMWEzMmQ2Li4yNmU1N2U2
MzczMDczZDhkNzIzNTc1ZTI3ZjE4MjBjM2UzNzJhMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBJbnRSZWN0IFJl
bmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUpIGNvbnN0CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSW50UmVjdCgp
OwogCi0gICAgSW50UmVjdCBsb2NhbFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fcmVuZGVy
ZXItPmxvY2FsQ2FyZXRSZWN0KG1faW5saW5lQm94LCBtX29mZnNldCwgZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lKSk7CisgICAgSW50UmVjdCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChtX3JlbmRl
cmVyLT5sb2NhbENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkpOwogICAgIHJldHVybiBsb2NhbFJlY3QgPT0gSW50UmVjdCgpID8gSW50UmVjdCgp
IDogbV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSku
ZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQppbmRleCAwNTIwYjY3ZjEzYmZhNTYzZmFmMGViNDBm
MTc4N2VhNjkyZjY4YTkxLi45YmRlZTFjY2ZjYThiNjVlYTc0ZTZjNzFmMTJmZmYwZjEwMmQzOTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5t
bQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmls
aXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBz
ZWxlY3Rpb25SZWN0ID0gYWJzb2x1dGVDYXJldEJvdW5kcygpOwotICAgIEludFJlY3Qgdmlld1Jl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclZpZXctPnZpZXdSZWN0KCkpOworICAgIElu
dFJlY3Qgdmlld1JlY3QgPSBzbmFwcGVkSW50UmVjdChyZW5kZXJWaWV3LT52aWV3UmVjdCgpKTsK
IAogICAgIHNlbGVjdGlvblJlY3QgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oc2VsZWN0
aW9uUmVjdCk7CiAgICAgdmlld1JlY3QgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4odmll
d1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAy
NDg3Y2ZkOWY5MWQ1ZjA0ODQzM2Y1MmQxNzIxNDA1MjFmMTU4MWZjLi5mZGIxY2JhYTU3NjBiMDhh
MzU2YTE4MTMyODg1ZmQyZTE5MDc0NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcApAQCAtMzk3LDkgKzM5Nyw5IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9v
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyKCktPnN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZGNkMzgxOTQ4YzgxMDU1Y2Y5M2Y0MjEyOWE2YThlYTM3
MDYwMjkwMi4uZmZmNWRjOTkyOTlhYTcwODhkZDE5MjFiZmY3YzJkNTYxZGQwNzkzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNzA0LDcg
KzcwNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
ZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIEZyYW1lVmlldyogY29udGFpbmluZ1ZpZXcgPSBjb250
YWluaW5nRnJhbWUtPnZpZXcoKTsKLSAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChjb250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSk7CisgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHNu
YXBwZWRJbnRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bW9kZWxPYmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChyZW5kZXJlcikgOiBudWxscHRyOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJp
bmcoIm5vZGVXaWR0aCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2JqZWN0ID8gYWRqdXN0Rm9yQWJz
b2x1dGVab29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCAqbW9kZWxP
YmplY3QpIDogYm91bmRpbmdCb3gud2lkdGgoKSkpOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJp
bmcoIm5vZGVIZWlnaHQiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFi
c29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCksICptb2Rl
bE9iamVjdCkgOiBib3VuZGluZ0JveC5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA3MzE0MDU4OTFhMTAwYjc5OTkw
OGU5Y2QxNDlmYmNmNzI3ODMwZGFiLi5lYjhhNDkyMmJhOTJlN2JmMzViMDYwYzVhZGUwZjUzNDc4
YTgzYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRQ
YWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAg
CiAgICAgTGF5b3V0UmVjdCByb290UmVjdCA9IGFic29sdXRlUmVjdDsKICAgICBpZiAoIXZpZXct
PmZyYW1lKCkuaXNNYWluRnJhbWUoKSkgewotICAgICAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9
IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVj
dCkpOworICAgICAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXctPmNvbnRlbnRzVG9Sb290
VmlldyhzbmFwcGVkSW50UmVjdChhYnNvbHV0ZVJlY3QpKTsKICAgICAgICAgcm9vdFJlY3QgPSB2
aWV3LT5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHJvb3RW
aWV3UmVjdCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcAppbmRleCA0Y2MyODJkYTRlZmQxZWJhZWYyZDhiOGJmYzdjMmI4NDQxMTQ3OTUxLi4x
ZjRmZGE4MDU5MTQ3YTc2ZTc4ZjE0Mzg2MDE4ZjFhZWUyZWI5ZGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9k
ZSkKICAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAgICAgTGF5b3V0
UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBw
aXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBzbmFwcGVk
SW50UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggOGY0MmU2NTM4ZTg4MGYxZDhlNTQ1MjhkYjM1MTFkODgyN2VkY2U0Mi4uMTFiNmUxNTkw
NjliNGUwYjYzN2IzNDQ3NzNhOTIyNmIyNGZiMGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTc5MSw3ICsxNzkxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIEludFJlY3Qg
dXBkYXRlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobGF5ZXItPnJlcGFpbnRSZWN0SW5jbHVk
aW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cygpKTsKKyAgICAgICAgSW50UmVjdCB1cGRhdGVS
ZWN0ID0gc25hcHBlZEludFJlY3QobGF5ZXItPnJlcGFpbnRSZWN0SW5jbHVkaW5nTm9uQ29tcG9z
aXRpbmdEZXNjZW5kYW50cygpKTsKICAgICAgICAgdXBkYXRlUmVjdCA9IGNvbnRlbnRzVG9Sb290
Vmlldyh1cGRhdGVSZWN0KTsKICAgICAgICAgaWYgKCFpc0NvbXBvc2l0ZWRDb250ZW50TGF5ZXIg
JiYgY2xpcHNSZXBhaW50cygpKQogICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVj
dFRvU2Nyb2xsKTsKQEAgLTI3MjMsMTEgKzI3MjMsMTEgQEAgSW50UmVjdCBGcmFtZVZpZXc6OmV4
dGVuZGVkQmFja2dyb3VuZFJlY3RGb3JQYWludGluZygpIGNvbnN0CiAgICAgCiAgICAgTGF5b3V0
UmVjdCBleHRlbmRlZFJlY3QgPSByZW5kZXJWaWV3LT51bmV4dGVuZGVkQmFja2dyb3VuZFJlY3Qo
cmVuZGVyVmlldyk7CiAgICAgaWYgKCF0aWxlZEJhY2tpbmctPmhhc01hcmdpbnMoKSkKLSAgICAg
ICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoZXh0ZW5kZWRSZWN0KTsKKyAgICAgICAgcmV0
dXJuIHNuYXBwZWRJbnRSZWN0KGV4dGVuZGVkUmVjdCk7CiAgICAgCiAgICAgZXh0ZW5kZWRSZWN0
Lm1vdmVCeShMYXlvdXRQb2ludCgtdGlsZWRCYWNraW5nLT5sZWZ0TWFyZ2luV2lkdGgoKSwgLXRp
bGVkQmFja2luZy0+dG9wTWFyZ2luSGVpZ2h0KCkpKTsKICAgICBleHRlbmRlZFJlY3QuZXhwYW5k
KExheW91dFNpemUodGlsZWRCYWNraW5nLT5sZWZ0TWFyZ2luV2lkdGgoKSArIHRpbGVkQmFja2lu
Zy0+cmlnaHRNYXJnaW5XaWR0aCgpLCB0aWxlZEJhY2tpbmctPnRvcE1hcmdpbkhlaWdodCgpICsg
dGlsZWRCYWNraW5nLT5ib3R0b21NYXJnaW5IZWlnaHQoKSkpOwotICAgIHJldHVybiBwaXhlbFNu
YXBwZWRJbnRSZWN0KGV4dGVuZGVkUmVjdCk7CisgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGV4
dGVuZGVkUmVjdCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzaG91bGRVcGRhdGVXaGlsZU9mZnNj
cmVlbigpIGNvbnN0CkBAIC0zMTgwLDkgKzMxODAsOSBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2lu
ZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZQogICAgIC8vIEFwcGx5IHRoZSBjbGlwIGZyb20gdGhlIGxheWVyLgogICAgIEludFJlY3QgY2xp
cFJlY3Q7CiAgICAgaWYgKGNsaXBUb0xheWVyQ29udGVudHMpCi0gICAgICAgIGNsaXBSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXllci0+Y2hpbGRyZW5DbGlwUmVjdCgpKTsK
KyAgICAgICAgY2xpcFJlY3QgPSBzbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXllci0+Y2hpbGRy
ZW5DbGlwUmVjdCgpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChlbmNsb3NpbmdMYXllci0+c2VsZkNsaXBSZWN0KCkpOworICAgICAgICBjbGlwUmVj
dCA9IHNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheWVyLT5zZWxmQ2xpcFJlY3QoKSk7CiAgICAg
Y2xpcFJlY3QgPSBjb250ZW50c1RvV2luZG93KGNsaXBSZWN0KTsgCiAgICAgcmV0dXJuIGludGVy
c2VjdGlvbihjbGlwUmVjdCwgd2luZG93Q2xpcFJlY3QoKSk7CiB9CkBAIC0zOTk3LDcgKzM5OTcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQoZmxvYXQgKm5l
d0JvdHRvbSwgZmxvYXQgb2xkVG9wLCBmbG9hdAogCiBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVy
dEZyb21SZW5kZXJlclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGNvbnN0IEludFJlY3QmIHJlbmRlcmVyUmVjdCkgY29uc3QKIHsKLSAgICBJbnRSZWN0IHJl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXItPmxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlbmRlcmVyUmVjdCkpLmJvdW5kaW5nQm94KCkp
KTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0
KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZW5kZXJlclJlY3QpKS5i
b3VuZGluZ0JveCgpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gcGFnZSAoImFic29sdXRlIikg
dG8gRnJhbWVWaWV3IGNvb3JkaW5hdGVzLgogICAgIGlmICghZGVsZWdhdGVzU2Nyb2xsaW5nKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBhZDBhYTNkNGQ4M2M1OTU4N2UwYTI5NzEyNWQ5OTdlNTQ2
YmJhZTYyLi45YzQxNmY4OTIzNzgzZTM1ZjY2NTY1OWY4OGZlNGRmNzRhZGJhZTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE0MzYsMTAgKzE0MzYsMTAgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
b2IKICAgICBMYXlvdXRSZWN0IHJlbGV2YW50UmVjdCA9IHJlbGV2YW50Vmlld1JlY3QoJm9iamVj
dC0+dmlldygpKTsKIAogICAgIC8vIFRoZSBvYmplY3RzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRo
ZXkgYXJlIGJlaW5nIHBhaW50ZWQgd2l0aGluIHRoZSB2aWV3UmVjdCgpLgotICAgIGlmICghb2Jq
ZWN0UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVjdChyZWxldmFudFJlY3Qp
KSkKKyAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KHJl
bGV2YW50UmVjdCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHNuYXBwZWRQYWlu
dFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG9iamVjdFBhaW50UmVjdCk7CisgICAgSW50UmVj
dCBzbmFwcGVkUGFpbnRSZWN0ID0gc25hcHBlZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KTsKIAog
ICAgIC8vIElmIHRoaXMgb2JqZWN0IHdhcyBwcmV2aW91c2x5IGNvdW50ZWQgYXMgYW4gdW5wYWlu
dGVkIG9iamVjdCwgcmVtb3ZlIGl0IGZyb20gdGhhdCBIYXNoU2V0CiAgICAgLy8gYW5kIGNvcnJl
c3BvbmRpbmcgUmVnaW9uLiBGSVhNRTogVGhpcyBkb2Vzbid0IGRvIHRoZSByaWdodCB0aGluZyBp
ZiB0aGUgb2JqZWN0cyBvdmVybGFwLgpAQCAtMTQ1NywxMSArMTQ1NywxMSBAQCB2b2lkIFBhZ2U6
OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBvYgogICAgIC8vIElmIHRoZSByZWN0IHN0cmFkZGxlcyBib3RoIFJlZ2lvbnMs
IHNwbGl0IGl0IGFwcHJvcHJpYXRlbHkuCiAgICAgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRlcnNl
Y3RzKHNuYXBwZWRQYWludFJlY3QpICYmIGJvdHRvbVJlbGV2YW50UmVjdC5pbnRlcnNlY3RzKHNu
YXBwZWRQYWludFJlY3QpKSB7CiAgICAgICAgIEludFJlY3QgdG9wSW50ZXJzZWN0aW9uID0gc25h
cHBlZFBhaW50UmVjdDsKLSAgICAgICAgdG9wSW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhlbFNu
YXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVjdCkpOworICAgICAgICB0b3BJbnRlcnNlY3Rpb24u
aW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVjdCkpOwogICAgICAgICBtX3Rv
cFJlbGV2YW50UGFpbnRlZFJlZ2lvbi51bml0ZSh0b3BJbnRlcnNlY3Rpb24pOwogCiAgICAgICAg
IEludFJlY3QgYm90dG9tSW50ZXJzZWN0aW9uID0gc25hcHBlZFBhaW50UmVjdDsKLSAgICAgICAg
Ym90dG9tSW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdHRvbVJl
bGV2YW50UmVjdCkpOworICAgICAgICBib3R0b21JbnRlcnNlY3Rpb24uaW50ZXJzZWN0KHNuYXBw
ZWRJbnRSZWN0KGJvdHRvbVJlbGV2YW50UmVjdCkpOwogICAgICAgICBtX2JvdHRvbVJlbGV2YW50
UGFpbnRlZFJlZ2lvbi51bml0ZShib3R0b21JbnRlcnNlY3Rpb24pOwogICAgIH0gZWxzZSBpZiAo
dG9wUmVsZXZhbnRSZWN0LmludGVyc2VjdHMoc25hcHBlZFBhaW50UmVjdCkpCiAgICAgICAgIG1f
dG9wUmVsZXZhbnRQYWludGVkUmVnaW9uLnVuaXRlKHNuYXBwZWRQYWludFJlY3QpOwpAQCAtMTQ5
MSwxMSArMTQ5MSwxMSBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgb2JqZWN0cyBhcmUgb25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWlu
ZyBwYWludGVkIHdpdGhpbiB0aGUgcmVsZXZhbnRWaWV3UmVjdCgpLgotICAgIGlmICghb2JqZWN0
UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVjdChyZWxldmFudFZpZXdSZWN0
KCZvYmplY3QtPnZpZXcoKSkpKSkKKyAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3Rz
KHNuYXBwZWRJbnRSZWN0KHJlbGV2YW50Vmlld1JlY3QoJm9iamVjdC0+dmlldygpKSkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5hZGQo
b2JqZWN0KTsKLSAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnVuaXRlKHBpeGVsU25hcHBl
ZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KSk7CisgICAgbV9yZWxldmFudFVucGFpbnRlZFJlZ2lv
bi51bml0ZShzbmFwcGVkSW50UmVjdChvYmplY3RQYWludFJlY3QpKTsKIH0KIAogdm9pZCBQYWdl
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQppbmRleCAyNDVhOTk5MjMyZmM0MzU3NWMyYjMyZTEzYjk4Yjg5ZDcyZTFh
ODAwLi5kM2Y3MWQ2YTcxYjJmNzc3NzAzYmU5YWU1NDUxMDQxMmMyYjJlNWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRpYyBOb2RlKiBh
bmNlc3RvclJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRl
c3RSZXN1bHQsCiAgICAgICAgICAgICBpZiAobm9kZUJvdW5kcykgewogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSBjaGVjayB0byBzZWUgd2hldGhlciB0aGlzIG5vZGUgaXMgYW4gYXJlYSBl
bGVtZW50LiAgVGhlIG9ubHkgd2F5IHRoaXMgY2FuIGhhcHBlbiBpcyBpZiB0aGlzIGlzIHRoZSBm
aXJzdCBjaGVjay4KICAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpICYmIG5vZGUgIT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXJlYVRhZykpCi0gICAgICAgICAgICAgICAg
ICAgICpub2RlQm91bmRzID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b0hUTUxBcmVhRWxlbWVudChu
b2RlKS0+Y29tcHV0ZVJlY3QoaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVu
ZGVyZXIoKSkpOworICAgICAgICAgICAgICAgICAgICAqbm9kZUJvdW5kcyA9IHNuYXBwZWRJbnRS
ZWN0KHRvSFRNTEFyZWFFbGVtZW50KG5vZGUpLT5jb21wdXRlUmVjdChoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICAqbm9kZUJv
dW5kcyA9IG5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggODZj
YTRjMWY0NTk3MjhlMjgwNjliNGQyYzEzMDk3N2NkMThjMjZhYy4uNWYxZTFkZGRmZTJiZWNmZjAz
YTgwNWVmN2E3MWEzM2M4YWNiMzA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlLCBJbnRSZWN0JiBpbWFnZVJlYwogCiAgICAg
Ly8gQ2FsY3VsYXRlIGltYWdlIGFuZCBlbGVtZW50IG1ldHJpY3MgZm9yIHRoZSBjbGllbnQsIHRo
ZW4gY3JlYXRlIGRyYWcgaW1hZ2UuCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
c25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
CiAKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0
KTsKKyAgICBlbGVtZW50UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7CiAgICAg
aW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0OwogCiAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21TbmFwc2hvdChzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpLCAmbm9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCmluZGV4IDdkZmZiNzQx
ODU1Mjk3YzE0ZTExYjQ3MjRiMmI1Y2Y2ZmI3ZmY4ZjQuLmY4OTkwMDRmZTlhYzczMTM0Y2VlMzll
ODg5MTcwNmNmMWE2MWQwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFJlY3QuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgTGF5b3V0UmVjdCBlbmNsb3Np
bmdMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gTGF5b3V0UmVj
dChsb2NhdGlvbiwgbWF4UG9pbnQgLSBsb2NhdGlvbik7CiB9CiAKLUZsb2F0UmVjdCBlbmNsb3Np
bmdSZWN0Rm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFw
cGluZ0ZhY3RvcikKK0Zsb2F0UmVjdCBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7CiAgICAgRmxvYXRQ
b2ludCBsb2NhdGlvbiA9IGZsb29yUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1pblhNaW5ZQ29y
bmVyKCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogICAgIEZsb2F0UG9pbnQgbWF4UG9pbnQgPSBj
ZWlsUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1heFhNYXhZQ29ybmVyKCksIHBpeGVsU25hcHBp
bmdGYWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVj
dC5oCmluZGV4IDk2MmU0ZTM5NWUwNzM2NmRlM2FhOTZhYTYzODU2MzRiMzA3Mzc3ZjUuLjYxN2Y0
NGVlMjUyNjczMmM1ZmQxZDA3OGI4YzI0MDA3YmUwOTU0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTIwMSw0NCArMjAxLDQ0IEBAIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVj
dCYgYikKICAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9IGIubG9jYXRpb24oKSB8fCBhLnNpemUo
KSAhPSBiLnNpemUoKTsKIH0KIAotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChj
b25zdCBMYXlvdXRSZWN0JiByZWN0KQorV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBlbmNsb3NpbmdJ
bnRSZWN0KGNvbnN0IExheW91dFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgZW5j
bG9zaW5nTGF5b3V0UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworaW5saW5lIEludFJlY3Qgc25h
cHBlZEludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gSW50UmVj
dChyb3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKSwgSW50U2l6ZShzbmFwU2l6ZVRvUGl4
ZWwocmVjdC53aWR0aCgpLCByZWN0LngoKSksIHNuYXBTaXplVG9QaXhlbChyZWN0LmhlaWdodCgp
LCByZWN0LnkoKSkpKTsKLQogfQogCi1XRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBlbmNs
b3NpbmdMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotRmxvYXRSZWN0IGVuY2xvc2luZ1Jl
Y3RGb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0JiwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rv
cik7Ci0KLWlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0VW5pdCBsZWZ0
LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpCitp
bmxpbmUgSW50UmVjdCBzbmFwcGVkSW50UmVjdChMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQg
dG9wLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKIHsKICAgICByZXR1cm4g
SW50UmVjdChsZWZ0LnJvdW5kKCksIHRvcC5yb3VuZCgpLCBzbmFwU2l6ZVRvUGl4ZWwod2lkdGgs
IGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwoaGVpZ2h0LCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJl
Y3QgcGl4ZWxTbmFwcGVkSW50UmVjdEZyb21FZGdlcyhMYXlvdXRVbml0IGxlZnQsIExheW91dFVu
aXQgdG9wLCBMYXlvdXRVbml0IHJpZ2h0LCBMYXlvdXRVbml0IGJvdHRvbSkKK2lubGluZSBJbnRS
ZWN0IHNuYXBwZWRJbnRSZWN0RnJvbUVkZ2VzKExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCB0
b3AsIExheW91dFVuaXQgcmlnaHQsIExheW91dFVuaXQgYm90dG9tKQogewogICAgIHJldHVybiBJ
bnRSZWN0KGxlZnQucm91bmQoKSwgdG9wLnJvdW5kKCksIHNuYXBTaXplVG9QaXhlbChyaWdodCAt
IGxlZnQsIGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwoYm90dG9tIC0gdG9wLCB0b3ApKTsKIH0KIAot
aW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRQb2ludCBsb2NhdGlvbiwg
TGF5b3V0U2l6ZSBzaXplKQoraW5saW5lIEludFJlY3Qgc25hcHBlZEludFJlY3QoTGF5b3V0UG9p
bnQgbG9jYXRpb24sIExheW91dFNpemUgc2l6ZSkKIHsKICAgICByZXR1cm4gSW50UmVjdChyb3Vu
ZGVkSW50UG9pbnQobG9jYXRpb24pLCBwaXhlbFNuYXBwZWRJbnRTaXplKHNpemUsIGxvY2F0aW9u
KSk7CiB9CiAKLWlubGluZSBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKK0Zsb2F0UmVjdCBl
bmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnN0IExheW91dFJlY3QmLCBmbG9hdCBwaXhlbFNu
YXBwaW5nRmFjdG9yKTsKKworaW5saW5lIEZsb2F0UmVjdCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7CiAg
ICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC54KCksIHBpeGVsU25h
cHBpbmdGYWN0b3IpLCByb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC55KCksIHBpeGVsU25hcHBpbmdG
YWN0b3IpLAogICAgICAgICBzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwocmVjdC53aWR0aCgpLCByZWN0
LngoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvciksIHNuYXBTaXplVG9EZXZpY2VQaXhlbChyZWN0Lmhl
aWdodCgpLCByZWN0LnkoKSwgcGl4ZWxTbmFwcGluZ0ZhY3RvcikpOwogfQogCi1pbmxpbmUgRmxv
YXRSZWN0IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5
LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCwgZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKK2lubGluZSBGbG9hdFJlY3Qgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRV
bml0IHgsIExheW91dFVuaXQgeSwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQs
IGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCiB7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEZv
clBhaW50aW5nKExheW91dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdG
YWN0b3IpOworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBuZWVkcyB0byB0YWtlIHZlcnRpY2FsIGNlbnRlcmluZyBpbnRvIGFjY291bnQgdG9vLgot
aW5saW5lIEZsb2F0UmVjdCBkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBhaW50aW5nKGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGx0cikKK2lu
bGluZSBGbG9hdFJlY3Qgc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9u
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBib29sIGx0
cikKIHsKICAgICBpZiAoIWx0cikgewogICAgICAgICBGbG9hdFBvaW50IHNuYXBwZWRUb3BSaWdo
dCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhyZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBsdHIpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIGlubGluZSBGbG9hdFJlY3Qg
ZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBmbG9hCiAgICAgICAgIGZsb2F0IHNuYXBwZWRIZWlnaHQgPSBzbmFwU2l6ZVRvRGV2aWNlUGl4
ZWwocmVjdC5oZWlnaHQoKSwgcmVjdC55KCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAg
cmV0dXJuIEZsb2F0UmVjdChzbmFwcGVkVG9wUmlnaHQueCgpIC0gc25hcHBlZFdpZHRoLCBzbmFw
cGVkVG9wUmlnaHQueSgpLCBzbmFwcGVkV2lkdGgsIHNuYXBwZWRIZWlnaHQpOwogICAgIH0KLSAg
ICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3QsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCmluZGV4IGE0MmQ0MjJiZmVmYTBhYjIz
NDAxN2I3MGU0MTM0Nzc0MTk2ZWU4NTkuLjI5ZDg2MDRmYmFjNThiMzEwYmU2MWJmMTk1Yzk5YmYy
OGU0MjhmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFJvdW5kZWRS
ZWN0OjpwaXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGZsb2F0IGRldmljZVNjYQog
ICAgIGlmIChvcmlnaW5hbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRmxvYXRSb3Vu
ZGVkUmVjdChvcmlnaW5hbFJlY3QsIHJhZGlpKCkpOwogCi0gICAgRmxvYXRSZWN0IHBpeGVsU25h
cHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhvcmlnaW5hbFJlY3QsIGRldmljZVNj
YWxlRmFjdG9yKTsKKyAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMob3JpZ2luYWxSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICBpZiAo
IWlzUmVuZGVyYWJsZSgpKQogICAgICAgICByZXR1cm4gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRSZWN0LCByYWRpaSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDk2NDZmMjY5ZWRlMzcyNDYz
MjVhYWM1OGM3YWU1MTU4OTBkODk3ZjYuLmQwNWRjYzU2MGE1NjI0Y2RkMThlOTRhY2FjMjM5MDYz
ZjFjMDNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMzMyw3ICszMzMzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OmNvbXB1dGVQaXhlbEFsaWdubWVudChmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIHAKICAgICAvLyBTY2FsZSBieSB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgdG8g
Y29tcHV0ZSB0aGUgc2NyZWVuLXJlbGF0aXZlIGJvdW5kcy4KICAgICBzY2FsZWRCb3VuZHMuc2Nh
bGUoY29udGVudHNTY2FsZSk7CiAgICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFyaWVzLgot
ICAgIEZsb2F0UmVjdCBhbGlnbmVkQm91bmRzID0gZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKExh
eW91dFJlY3Qoc2NhbGVkQm91bmRzKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRmxvYXRS
ZWN0IGFsaWduZWRCb3VuZHMgPSBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3Qo
c2NhbGVkQm91bmRzKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgCiAgICAgLy8gQ29udmVy
dCBiYWNrIHRvIGxheWVyIGNvb3JkaW5hdGVzLgogICAgIGFsaWduZWRCb3VuZHMuc2NhbGUoMSAv
IGNvbnRlbnRzU2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVh
bS5jcHAKaW5kZXggZmQwNDE1MTgzODlmOGIyOTA4OGFjZjA1YzViMTM3ZTYzYTVkY2E2ZC4uMTIz
ODUwNjJkMDJiYmY2NzdmYjBkZmMxZDRmZDlmZTRhYjJjM2M3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgVGV4dFN0
cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBMYXlvdXRQb2ludCYgcCkKIFRleHRT
dHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgTGF5b3V0UmVjdCYgcikKIHsKICAg
ICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHByaW50ZWQgYXMgZmxvYXRzLiBLZWVwaW5nIHRo
ZW0gaW50cyBmb3IgY29uc2lzdGVuY3kgd2l0aCBwcmV2aW91cyB0ZXN0IGV4cGVjdGF0aW9ucy4K
LSAgICByZXR1cm4gKnRoaXMgPDwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKTsKKyAgICByZXR1cm4g
KnRoaXMgPDwgc25hcHBlZEludFJlY3Qocik7CiB9CiAKIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxl
YXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IGEwNWIx
MTBmOGJhNzU0NjQ2ODkzMmU0NDYyODRjYjAwMjEyOTJjYmEuLjMwZmQwNmYyYjljYjJlYmZmMTJk
YzM5YTllZDNiZTViYjJhYjM4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0
aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkgKyBwYWludE9mZnNldC54
KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCksIDAsIHJv
b3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUsIFRleHRS
dW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC0+ZmlsbFJl
Y3QoZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3Bh
Y2UoKSk7CiB9CiAKIGJvb2wgRWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4
IGRkMTRlOWI5NGYzM2JlNjA2Nzg4ZDIwODYxOGMzNDE4OWE1MWEyYWQuLjNmYWRkOTg1M2ZkZGIy
ZmVlMGQ1NDlkMjVkZjMwNzliMDgzZDUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQg
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29u
dGV4dCogZGVzdGluYXRpb25DCiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwg
bV9wYWludE9mZnNldC55KCkpOwogCiAgICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmNvbG9yU3BhY2UoKSwKLSAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoZGVzdFJlY3Qs
IG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CisgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVyTGF5
ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICBm
aWx0ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGM1OGUxNDZmYzM5MTVhNjllMzk1MDUzOGQx
Yzk0NjliYzhlZjlmOTguLjZlYzU3MGVmNDAwZjE1OGI1OTlhMDZjMTA0MGMyMzRhZTliZWEyNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEwOTUs
NyArMTA5NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICBmbGlwRm9yV3JpdGluZ01v
ZGUob3ZlcmZsb3dSZWN0KTsKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsK
ICAgICAKLSAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50
UmVjdChvdmVyZmxvd1JlY3QpKSkKKyAgICBpZiAoIXBhaW50SW5mby5yZWN0LmludGVyc2VjdHMo
c25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1ODY0N2UxOTQ1ZWZmYTg2
ZTQ1YjljOWQzZDUwNmJmZDFlYmNjMWZlLi43NjkxMDgxNmYyYzNiNDRkZDRlM2Q4NWJlNTgzOWUz
ZjlhZmI0ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2lu
LnkoKSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lkdGgsIHNlbGVjdGlvbkhlaWdodCk7CiAgICAgZm9u
dC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9z
LCBlUG9zKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZv
clBhaW50aW5nKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBj
b250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rp
b24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCksIHRleHRSdW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03
ODgsNyArNzg4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBk
ZWx0YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25z
dHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQt
PmZpbGxSZWN0KGRpcmVjdGlvbmFsUGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRy
KCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMs
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHN0YXRpYyBTdHJva2VTdHlsZSB0ZXh0RGVjb3Jh
dGlvblN0eWxlVG9TdHJva2VTdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHls
ZSkKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0
Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAgICAgICAg
IExheW91dFVuaXQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNh
bFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVj
dCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwgMCwg
c2VsZWN0aW9uSGVpZ2h0KTsKICAgICAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4
dChydW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBhaW50aW5nKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRl
cmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xvciwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICB9CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIGZs
b2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0CiAg
ICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdCgpLCAw
LCAwLCAwKTsKICAgICBUZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4obGluZVN0eWxlLCBm
b250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9u
UmVjdCwgZnJvbSwgdG8pOwotICAgIHJldHVybiBkaXJlY3Rpb25hbFBpeGVsU25hcHBlZEZvclBh
aW50aW5nKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpLCBydW4ubHRyKCkpLm1heFgoKTsKKyAgICByZXR1cm4gc25hcFJlY3RUb0RldmljZVBp
eGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLm1heFgoKTsKIH0KIAogVGV4dFJ1
biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRm9udCYgZm9udCwgU3RyaW5nKiBoeXBoZW5hdGVkU3RyaW5nQnVmZmVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZWVhZDg2MzY1
YWFhMGYyNGEyYjgzMGFiMmUyNDY5YjkxMTk0ZDYwNy4uNWZmMjBiNWU5NjlhMGY5YTdkMGJhYTRj
YTUyYTVhYmM5OWQ1NzIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRWaXN1YWxPdmVy
Zmxvd0Zyb21UaGVtZSgpCiAKICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gYm9yZGVyQm94
UmVjdCgpOwogICAgIHRoZW1lKCkuYWRqdXN0UmVwYWludFJlY3QoKnRoaXMsIGluZmxhdGVkUmVj
dCk7Ci0gICAgYWRkVmlzdWFsT3ZlcmZsb3cocGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0
KGluZmxhdGVkUmVjdCkpKTsKKyAgICBhZGRWaXN1YWxPdmVyZmxvdyhzbmFwcGVkSW50UmVjdChM
YXlvdXRSZWN0KGluZmxhdGVkUmVjdCkpKTsKIAogICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQogICAgICAgICBmbG93VGhy
ZWFkLT5hZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUodGhpcyk7CkBAIC0xNTI3LDcg
KzE1MjcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWlu
dCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Ny
b2xsYmFycyB3aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAg
ICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSAmJiAocGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWlu
dFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhp
blJvb3QoKnRoaXMpICYmICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAg
ICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCBy
b3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBpeGVsU25hcHBlZEludFJlY3Qo
cGFpbnRJbmZvLnJlY3QpKTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xz
KHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCks
IHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6
OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKQEAgLTIwNjYsNyArMjA2Niw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6
OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBv
CiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNp
Y2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0
LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFp
bnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
IHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBS
ZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQog
CkBAIC0yMDgzLDcgKzIwODMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVm
dFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5
b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9v
dEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwg
cm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0
KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxs
UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmot
PnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+
c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0yMTAw
LDcgKzIxMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rp
b25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTAogCiAgICAgTGF5b3V0UmVjdCBn
YXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5
c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2Nr
TG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAg
aWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5j
b2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0zNzMzLDEyICszNzMz
LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtCiAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2tD
b250aW51YXRpb24oKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3IgYmxv
Y2stZmxvd3MgdGhhdCBhcmUgaG9yaXpvbnRhbC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzgxCi0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhl
bFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZzZXQu
eSgpIC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChzbmFw
cGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldC54KCksIGFjY3VtdWxhdGVkT2Zmc2V0LnkoKSAt
IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCgpLCBoZWlnaHQoKSArIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpICsgY29sbGFwc2Vk
TWFyZ2luQWZ0ZXIoKSkpOwogICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhy
ZWN0cywgYWNjdW11bGF0ZWRPZmZzZXQgLSB0b0xheW91dFNpemUobG9jYXRpb24oKSArCiAgICAg
ICAgICAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2so
KS0+bG9jYXRpb24oKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxT
bmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3Rz
LmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAK
IHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKQEAgLTM4NDIsOSArMzg0Miw5IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhCiAgICAgICAgIGZsb2F0IGJvdHRvbU1hcmdpbiA9IG5leHRJbmxpbmVIYXNM
aW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6IExheW91dFVuaXQoKTsKICAgICAgICAg
TGF5b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpLCBhZGRpdGlvbmFsT2Zmc2V0Lnko
KSAtIHRvcE1hcmdpbiwgd2lkdGgoKSwgaGVpZ2h0KCkgKyB0b3BNYXJnaW4gKyBib3R0b21NYXJn
aW4pOwogICAgICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVjdHMuYXBw
ZW5kKHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAgICAgcmVjdHMuYXBwZW5k
KHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICB9IGVsc2UgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0
KCkpCi0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGFkZGl0aW9uYWxP
ZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoYWRk
aXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CiAKICAgICBpZiAoIWhhc092ZXJmbG93Q2xpcCgpICYm
ICFoYXNDb250cm9sQ2xpcCgpKSB7CiAgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA2NWI1OGQ1
YjQxNDk1ZWExYzVhNzhiYTg5YWIwNGRlZDc1NDg2OTVkLi45MGNiZGYwMGVhMWI1ZGJkZDEwZjNm
YTMxYzBmNjQ4OGE5NTg4MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcApAQCAtMjE2NSw3ICsyMTY1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFp
bnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS53aWR0aCgpLCBm
bG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByb290Qmxv
Y2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94KTsKICAgICAgICAgICAgIGZsb2F0Qm94Lm1v
dmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54KCksIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xpcE91dChwaXhlbFNu
YXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CisgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQt
PmNsaXBPdXQoc25hcHBlZEludFJlY3QoZmxvYXRCb3gpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTMzMzYsNyArMzMzNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdS
ZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsCiAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tID0gc3RkOjptaW48TGF5b3V0VW5pdD4oY3Vyci0+bGluZUJvdHRvbSgp
LCBjdXJyLT50b3AoKSArIGN1cnItPmhlaWdodCgpKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgY3Vyci0+eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSAr
IHRvcCwgY3Vyci0+d2lkdGgoKSwgYm90dG9tIC0gdG9wKTsKICAgICAgICAgaWYgKCFyZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJl
Y3QpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChyZWN0KSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNhYmNl
ZTllNDc3NTZiMjZhZjY3OTUyMmNlMWE3MzIxZWNiZmMwOGEuLjVlMjhlN2UxMTcyYjZlZTM3ZjYz
YTM2MjBjYmRjOWEwOTEzZWY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9sbFRvcChpbnQg
bmV3VG9wKQogCiB2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0g
ICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNp
emUoKSkpOworICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CkBAIC02NTAsNyArNjUwLDcg
QEAgUm91bmRlZFJlY3Q6OlJhZGlpIFJlbmRlckJveDo6Ym9yZGVyUmFkaWkoKSBjb25zdAogSW50
UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQ29udGVudEJveCgpIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBpcyB3cm9uZyB3aXRoIHRyYW5zZm9ybXMgYW5kIGZsaXBwZWQgd3JpdGluZyBtb2Rlcy4KLSAg
ICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwor
ICAgIEludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwogICAg
IEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAgICAgcmVjdC5tb3ZlKGFi
c1Bvcy54KCksIGFic1Bvcy55KCkpOwogICAgIHJldHVybiByZWN0OwpAQCAtNjgxLDEzICs2ODEs
MTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGEKICAgICAvLyByZXBhaW50IGNvbnRhaW5lcnMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwOAogICAgIGJveC5t
b3ZlKHZpZXcoKS5sYXlvdXREZWx0YSgpKTsKIAotICAgIHJldHVybiBMYXlvdXRSZWN0KHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKGJveCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7
CisgICAgcmV0dXJuIExheW91dFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3gsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFk
ZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlm
ICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZElu
dFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChz
bmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogaW50IFJlbmRl
ckJveDo6cmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lk
IFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiBwYQogYm9vbCBSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVk
RXh0ZW50KExheW91dFJlY3QmIHBhaW50ZWRFeHRlbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c0JhY2tncm91bmQoKSk7Ci0gICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRS
ZWN0ID0gc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKTsKIAogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBiYWNr
Z3JvdW5kQ29sb3IuYWxwaGEoKSkgewpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgYm9vbCBSZW5kZXJC
b3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXUKICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kczsKICAgICB9CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBkb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgRmxvYXRSZWN0IGNsaXBSZWN0ID0gcGl4
ZWxTbmFwcGVkRm9yUGFpbnRpbmcoKGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3Vy
cmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXpl
LCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEZsb2F0UmVjdCBj
bGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKGlzQ29udHJvbENsaXAgPyBjb250cm9s
Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIElnbm9yZU92ZXJsYXlT
Y3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUo
KS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZh
Y3RvcikpOwpAQCAtMjEyMSw3ICsyMTIxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAg
ICAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmlldygpLmxheW91dFN0YXRlKCk7CiAK
ICAgICAgICAgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAgICAg
ICByZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NpbmdSZWN0Rm9yUGFpbnRpbmcobGF5ZXIoKS0+dHJh
bnNmb3JtKCktPm1hcFJlY3QocmVjdCksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkp
OworICAgICAgICAgICAgcmVjdCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVs
cyhsYXllcigpLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KSwgZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKSk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgdHJ1c3QgdGhlIGJpdHMgb24g
UmVuZGVyT2JqZWN0LCBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbGVkIHdoaWxlIHJlLXJlc29s
dmluZyBzdHlsZS4KICAgICAgICAgaWYgKHN0eWxlVG9Vc2UuaGFzSW5GbG93UG9zaXRpb24oKSAm
JiBsYXllcigpKQpAQCAtMjE3NCw3ICsyMTc0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEK
ICAgICAvLyBpbiB0aGUgcGFyZW50J3MgY29vcmRpbmF0ZSBzcGFjZSB0aGF0IGVuY2xvc2VzIHVz
LgogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKSB7CiAgICAgICAg
IGZpeGVkID0gcG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKLSAgICAgICAgcmVjdCA9IExheW91
dFJlY3QoZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBS
ZWN0KHJlY3QpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgcmVj
dCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyhsYXllcigpLT50cmFuc2Zv
cm0oKS0+bWFwUmVjdChyZWN0KSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAg
ICAgICAgIHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgIHRvcExlZnQubW92ZShs
b2NhdGlvbk9mZnNldCgpKTsKICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IEZpeGVkUG9zaXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYjQyODcxNDE5NjM4M2Uw
MDI1YWU3YTdmMWQzYTBmZThkM2Q3NTcwNy4uZWNlZGY5MWQ2MTU4MWZiOWNkMjlmZWYwZmVmYWRl
NjQ5OWMxYTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTQ5LDcg
KzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmUoTGF5b3V0VW5pdCBkeCwgTGF5b3V0VW5p
dCBkeSkgeyBtX2ZyYW1lUmVjdC5tb3ZlKGR4LCBkeSk7IH0KIAogICAgIExheW91dFJlY3QgZnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QobV9m
cmFtZVJlY3QpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRGcmFtZVJlY3QoKSBjb25zdCB7
IHJldHVybiBzbmFwcGVkSW50UmVjdChtX2ZyYW1lUmVjdCk7IH0KICAgICB2b2lkIHNldEZyYW1l
UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fZnJhbWVSZWN0ID0gcmVjdDsgfQogCiAg
ICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3hSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDMzMTA5NjM5NmY2YTNk
NjhkMjQ3MGMxYzAxNmQwZTFmMWM5ZTJlYWQuLjRhOTQ1OTE5MmY4MmY5N2U3OTUyNjUyOThlN2Zl
MDFmMWJlYzhlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvCiAKICAgICBib29sIGNvbG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29s
b3IuYWxwaGEoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKHJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBGbG9hdFJl
Y3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNl
U2NhbGVGYWN0b3IpOwogCiAgICAgLy8gRmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xv
ciBiYWNrZ3JvdW5kcy4KICAgICBpZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9s
bGluZyAmJiAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFi
Z0xheWVyLT5uZXh0KCkpIHsKQEAgLTc1MCw4ICs3NTAsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3VyIHRleHQgaW50byBhIG1hc2sgdGhh
dCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3VuZCBkcmF3aW5nLgogICAgICAgICAv
LyBGaXJzdCBmaWd1cmUgb3V0IGhvdyBiaWcgdGhlIG1hc2sgaGFzIHRvIGJlLiAgSXQgc2hvdWxk
IGJlIG5vIGJpZ2dlciB0aGFuIHdoYXQgd2UgbmVlZAogICAgICAgICAvLyB0byBhY3R1YWxseSBy
ZW5kZXIsIHNvIHdlIHNob3VsZCBpbnRlcnNlY3QgdGhlIGRpcnR5IHJlY3Qgd2l0aCB0aGUgYm9y
ZGVyIGJveCBvZiB0aGUgYmFja2dyb3VuZC4KLSAgICAgICAgbWFza1JlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHJlY3QpOwotICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICBtYXNrUmVjdCA9IHNuYXBwZWRJbnRS
ZWN0KHJlY3QpOworICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFp
bnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgogICAgICAg
ICBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNp
emUoKSk7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAg
ICAgICAgICAgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKGNvbnRleHQsICZzdHlsZSgpKTsK
IAotICAgICAgICAgICAgRmxvYXRSZWN0IGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcgPSBwaXhl
bFNuYXBwZWRGb3JQYWludGluZyhiYWNrZ3JvdW5kUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgICAgICAgICAgRmxvYXRSZWN0IGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGJhY2tncm91bmRSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgICAgICBpZiAoYmFzZUNvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWJh
c2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAgICAgICAgICAgICAgICAgICAgIGJh
c2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKQEAgLTEwNzIsMTAgKzEwNzIsMTAg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnlGb3JQYWludGluZyhCYWNrZ3JvdW4KIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICAvLyBGSVhNRTogV2UgbmVl
ZCBhIGJldHRlciByb3VuZGluZyBzdHJhdGVneSB0byByb3VuZC9zcGFjZSBvdXQgdGlsZXMuCi0g
ICAgZ2VvbWV0cnkuc2V0VGlsZVNpemUoTGF5b3V0U2l6ZShwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhMYXlvdXRSZWN0KGdlb21ldHJ5LmRlc3RSZWN0KCkubG9jYXRpb24oKSwgZ2VvbWV0cnkudGls
ZVNpemUoKSksIGRldmljZVNjYWxlRmFjdG9yKS5zaXplKCkpKTsKLSAgICBnZW9tZXRyeS5zZXRT
cGFjZVNpemUoTGF5b3V0U2l6ZShwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KExh
eW91dFBvaW50KCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpKSwgZGV2aWNlU2NhbGVGYWN0b3IpLnNp
emUoKSkpOworICAgIGdlb21ldHJ5LnNldFRpbGVTaXplKExheW91dFNpemUoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KGdlb21ldHJ5LmRlc3RSZWN0KCkubG9jYXRpb24oKSwgZ2Vv
bWV0cnkudGlsZVNpemUoKSksIGRldmljZVNjYWxlRmFjdG9yKS5zaXplKCkpKTsKKyAgICBnZW9t
ZXRyeS5zZXRTcGFjZVNpemUoTGF5b3V0U2l6ZShzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91
dFJlY3QoTGF5b3V0UG9pbnQoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCkpLCBkZXZpY2VTY2FsZUZh
Y3Rvcikuc2l6ZSgpKSk7CiAgICAgZ2VvbWV0cnkuc2V0RGVzdE9yaWdpbihMYXlvdXRQb2ludChy
b3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoZ2VvbWV0cnkuZGVzdE9yaWdpbigpLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpKTsKLSAgICBnZW9tZXRyeS5zZXREZXN0UmVjdChMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGdlb21ldHJ5LmRlc3RSZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKSkp
OworICAgIGdlb21ldHJ5LnNldERlc3RSZWN0KExheW91dFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVscyhnZW9tZXRyeS5kZXN0UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcikpKTsKICAgICBnZW9t
ZXRyeS5zZXRQaGFzZShMYXlvdXRQb2ludChyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoZ2VvbWV0
cnkucGhhc2UoKSwgZGV2aWNlU2NhbGVGYWN0b3IpKSk7CiB9CiAKQEAgLTEyNjQsNyArMTI2NCw3
IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgTGF5b3V0UmVjdCByZWN0V2l0
aE91dHNldHMgPSByZWN0OwogICAgIHJlY3RXaXRoT3V0c2V0cy5leHBhbmQoc3R5bGUuaW1hZ2VP
dXRzZXRzKG5pbmVQaWVjZUltYWdlKSk7Ci0gICAgTGF5b3V0UmVjdCBib3JkZXJJbWFnZVJlY3Qg
PSBMYXlvdXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHJlY3RXaXRoT3V0c2V0cywgZGV2
aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBMYXlvdXRSZWN0IGJvcmRlckltYWdlUmVjdCA9IExheW91
dFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhyZWN0V2l0aE91dHNldHMsIGRldmljZVNjYWxl
RmFjdG9yKSk7CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUltYWdlSW50
cmluc2ljRGltZW5zaW9ucyhzdHlsZUltYWdlLCBib3JkZXJJbWFnZVJlY3Quc2l6ZSgpLCBEb05v
dFNjYWxlQnlFZmZlY3RpdmVab29tKTsKIApAQCAtMTMzMSwyMCArMTMzMSwyMCBAQCBib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUgdG9wIGxlZnQgY29ybmVyIHJlY3QgaXMg
KHR4LCB0eSwgbGVmdFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNl
IGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBzbGljZSwgYW5kIGlz
ICgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1RvcCkKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4LCB5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoLCBkZXZp
Y2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
MCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcCk7CisgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFj
ZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyh4LCB5LCBsZWZ0V2lkdGgsIHRvcFdpZHRoLCBkZXZp
Y2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscygw
LCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9wKTsKIAogICAg
ICAgICAvLyBUaGUgYm90dG9tIGxlZnQgY29ybmVyIHJlY3QgaXMgKHR4LCB0eSArIGggLSBib3R0
b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8g
dXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyAoMCwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGlj
ZSwgbGVmdFNsaWNlLCBib3RvbVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4LCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90
dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAg
ICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCBpbWFnZUhlaWdodCAtIGJv
dHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2FsZUZhY3RvciksIG9w
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgsIGJvcmRlckltYWdlUmVjdC5tYXhZ
KCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCwgZGV2aWNlU2NhbGVGYWN0
b3IpLAorICAgICAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoMCwgaW1hZ2VIZWln
aHQgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0
b3IpLCBvcCk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGxlZnQgZWRnZS4KICAgICAgICAgLy8g
SGF2ZSB0byBzY2FsZSBhbmQgdGlsZSBpbnRvIHRoZSBib3JkZXIgcmVjdC4KICAgICAgICAgaWYg
KHNvdXJjZUhlaWdodCA+IDApCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4
LCB5ICsgdG9wV2lkdGgsIGxlZnRXaWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxl
RmFjdG9yKSwKLSAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGluZygwLCB0b3BT
bGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRT
aXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRpbGUsIChJ
bWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoeCwgeSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZp
Y2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscygw
LCB0b3BTbGljZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwg
RmxvYXRTaXplKGxlZnRTaWRlU2NhbGUsIGxlZnRTaWRlU2NhbGUpLCBJbWFnZTo6U3RyZXRjaFRp
bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAgICBpZiAoZHJhd1Jp
Z2h0KSB7CkBAIC0xMzUyLDMyICsxMzUyLDMyIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgIC8vIFRoZSB0b3AgcmlnaHQgY29ybmVyIHJlY3QgaXMgKHR4ICsgdyAtIHJpZ2h0V2lk
dGgsIHR5LCByaWdodFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNl
IGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBzbGljZSwgYW5kIGlz
IChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpCiAgICAg
ICAgIGlmIChkcmF3VG9wKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlcklt
YWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCB5LCByaWdodFdpZHRoLCB0b3BXaWR0aCwgZGV2
aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZvclBhaW50aW5n
KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJJ
bWFnZVJlY3QubWF4WCgpIC0gcmlnaHRXaWR0aCwgeSwgcmlnaHRXaWR0aCwgdG9wV2lkdGgsIGRl
dmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBvcCk7CiAKICAgICAgICAgLy8gVGhlIGJvdHRvbSByaWdodCBjb3JuZXIg
cmVjdCBpcyAodHggKyB3IC0gcmlnaHRXaWR0aCwgdHkgKyBoIC0gYm90dG9tV2lkdGgsIHJpZ2h0
V2lkdGgsIGJvdHRvbVdpZHRoKQogICAgICAgICAvLyBUaGUgcmVjdCB0byB1c2UgZnJvbSB3aXRo
aW4gdGhlIGltYWdlIGlzIChpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgaW1hZ2VIZWlnaHQgLSBi
b3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpCiAgICAgICAgIGlmIChkcmF3Qm90
dG9tKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IGNvbG9yU3BhY2UsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhY
KCkgLSByaWdodFdpZHRoLCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsCi0g
ICAgICAgICAgICAgICAgcmlnaHRXaWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9y
KSwgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdl
SGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VTY2Fs
ZUZhY3RvciksCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5n
ZXQoKSwgY29sb3JTcGFjZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJJbWFnZVJlY3Qu
bWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRo
LAorICAgICAgICAgICAgICAgIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoLCBkZXZpY2VTY2FsZUZh
Y3RvciksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGlt
YWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlLCBkZXZpY2VT
Y2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgb3ApOwogCiAgICAgICAgIC8vIFBhaW50IHRo
ZSByaWdodCBlZGdlLgogICAgICAgICBpZiAoc291cmNlSGVpZ2h0ID4gMCkKLSAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2Us
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdp
ZHRoLCB5ICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsIGRlc3RpbmF0aW9uSGVpZ2h0LCBkZXZpY2VT
Y2FsZUZhY3RvciksCi0gICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoaW1h
Z2VXaWR0aCAtIHJpZ2h0U2xpY2UsIHRvcFNsaWNlLCByaWdodFNsaWNlLCBzb3VyY2VIZWlnaHQs
IGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKHJpZ2h0U2lkZVNjYWxlLCByaWdodFNpZGVT
Y2FsZSksCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlckltYWdlUmVj
dC5tYXhYKCkgLSByaWdodFdpZHRoLCB5ICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsIGRlc3RpbmF0
aW9uSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgc25hcFJlY3RU
b0RldmljZVBpeGVscyhpbWFnZVdpZHRoIC0gcmlnaHRTbGljZSwgdG9wU2xpY2UsIHJpZ2h0U2xp
Y2UsIHNvdXJjZUhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUocmlnaHRTaWRl
U2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKICAgICAgICAgICAgICAgICBJbWFnZTo6U3RyZXRjaFRp
bGUsIChJbWFnZTo6VGlsZVJ1bGUpdlJ1bGUsIG9wKTsKICAgICB9CiAKICAgICAvLyBQYWludCB0
aGUgdG9wIGVkZ2UuCiAgICAgaWYgKGRyYXdUb3AgJiYgc291cmNlV2lkdGggPiAwKQotICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCB5LCBkZXN0aW5hdGlvbldp
ZHRoLCB0b3BXaWR0aCwgZGV2aWNlU2NhbGVGYWN0b3IpLAotICAgICAgICAgICAgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcobGVmdFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmlj
ZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwgKElt
YWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoeCArIGxlZnRXaWR0aCwgeSwgZGVzdGluYXRpb25XaWR0aCwg
dG9wV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMobGVmdFNsaWNlLCAwLCBzb3VyY2VXaWR0aCwgdG9wU2xpY2UsIGRldmljZVNjYWxl
RmFjdG9yKSwgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxlKSwgKEltYWdlOjpU
aWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAgICAvLyBQYWludCB0
aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYgKGRyYXdCb3R0b20gJiYgc291cmNlV2lkdGggPiAwKQot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xv
clNwYWNlLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4ICsgbGVmdFdpZHRoLCBib3JkZXJJbWFn
ZVJlY3QubWF4WSgpIC0gYm90dG9tV2lkdGgsIGRlc3RpbmF0aW9uV2lkdGgsIGJvdHRvbVdpZHRo
LCBkZXZpY2VTY2FsZUZhY3RvciksCi0gICAgICAgICAgICBwaXhlbFNuYXBwZWRGb3JQYWludGlu
ZyhsZWZ0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHNvdXJjZVdpZHRoLCBib3R0
b21TbGljZSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBGbG9hdFNpemUoYm90dG9tU2lkZVNjYWxlLCBi
b3R0b21TaWRlU2NhbGUpLAorICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdl
KGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHggKyBsZWZ0
V2lkdGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgZGVzdGluYXRpb25X
aWR0aCwgYm90dG9tV2lkdGgsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMobGVmdFNsaWNlLCBpbWFnZUhlaWdodCAtIGJvdHRvbVNsaWNlLCBz
b3VyY2VXaWR0aCwgYm90dG9tU2xpY2UsIGRldmljZVNjYWxlRmFjdG9yKSwgRmxvYXRTaXplKGJv
dHRvbVNpZGVTY2FsZSwgYm90dG9tU2lkZVNjYWxlKSwKICAgICAgICAgICAgIChJbWFnZTo6VGls
ZVJ1bGUpaFJ1bGUsIEltYWdlOjpTdHJldGNoVGlsZSwgb3ApOwogCiAgICAgLy8gUGFpbnQgdGhl
IG1pZGRsZS4KQEAgLTE0MDMsOCArMTQwMyw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgICAgICBtaWRkbGVTY2FsZUZhY3Rvci5zZXRIZWlnaHQoZGVzdGluYXRpb25IZWlnaHQg
LyBzb3VyY2VIZWlnaHQpOwogICAgICAgICAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwKLSAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKHggKyBsZWZ0V2lkdGgsIHkgKyB0b3BXaWR0aCwgZGVzdGluYXRpb25X
aWR0aCwgZGVzdGluYXRpb25IZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKLSAgICAgICAgICAg
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGxlZnRTbGljZSwgdG9wU2xpY2UsIHNvdXJjZVdpZHRo
LCBzb3VyY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoeCArIGxlZnRXaWR0aCwgeSArIHRvcFdpZHRoLCBkZXN0aW5hdGlvbldp
ZHRoLCBkZXN0aW5hdGlvbkhlaWdodCwgZGV2aWNlU2NhbGVGYWN0b3IpLAorICAgICAgICAgICAg
c25hcFJlY3RUb0RldmljZVBpeGVscyhsZWZ0U2xpY2UsIHRvcFNsaWNlLCBzb3VyY2VXaWR0aCwg
c291cmNlSGVpZ2h0LCBkZXZpY2VTY2FsZUZhY3RvciksCiAgICAgICAgICAgICBtaWRkbGVTY2Fs
ZUZhY3RvciwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwg
b3ApOwogICAgIH0KIApAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qg
cGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZCA9IG91dGVyQm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICAgICAgICAgIHBpeGVs
U25hcHBlZE91dGVyVGhpcmQuc2V0UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhvdXRlclRo
aXJkUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRPdXRlclRoaXJkLnNldFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhvdXRlclRoaXJkUmVj
dCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBw
ZWRPdXRlclRoaXJkLmlzUm91bmRlZCgpICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRC
bGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHBpeGVsU25hcHBlZE91dGVyVGhpcmQpOwpAQCAtMTgzMCw3ICsxODMwLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3Qo
cGl4ZWxTbmFwcGVkT3V0ZXJUaGlyZC5yZWN0KCkpOwogCiAgICAgICAgICAgICAgICAgRmxvYXRS
b3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRJbm5lclRoaXJkID0gaW5uZXJCb3JkZXIucGl4ZWxTbmFw
cGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkSW5uZXJUaGlyZC5zZXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKGlubmVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgICAg
IHBpeGVsU25hcHBlZElubmVyVGhpcmQuc2V0UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGlu
bmVyVGhpcmRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAgICAgICAgIGlmIChw
aXhlbFNuYXBwZWRJbm5lclRoaXJkLmlzUm91bmRlZCgpICYmIGJsZWVkQXZvaWRhbmNlICE9IEJh
Y2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAgICAgICAgICAgICAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZElubmVyVGhpcmQpOwogICAgICAgICAgICAg
ICAgIGVsc2UKQEAgLTIwMzgsNyArMjAzOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAK
ICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKICAgICBncmFw
aGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGJvcmRl
clJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVy
dGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5l
ckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3Vs
dCkKQEAgLTI0MDcsNyArMjQwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAg
ICAgICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdCA9IHBpeGVsU25h
cHBlZEZvclBhaW50aW5nKGJvcmRlci5yZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAg
ICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRTaGFkb3dSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhib3JkZXIucmVjdCgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRTaGFkb3dSZWN0LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFk
b3dTcHJlYWQpOwogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdC5tb3ZlKHNoYWRv
d09mZnNldCk7CiAKQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVj
CiAKICAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93
Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwogCi0gICAgICAgICAgICBG
bG9hdFJlY3QgcGl4ZWxTbmFwcGVkT3V0ZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
YXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0
LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRvd09mZnNl
dCksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBw
ZWRPdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKExheW91dFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWlu
dGluZ0V4dGVudCwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xl
ID0gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9y
ZGVyUmVjdC5yYWRpaSgpKTsKIAogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCBhNzZlN2ZkNmI3ODIyMGQ3MjE0Yzc0M2UyYzhi
ZTQ0YzRiMzU1M2MyLi5jMDg0NTViMDdiMzcwNDQxNWQ2MTkxZWY4NjJiNjUxMGU0OTExNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBvdmVyZmxv
d1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dSZWN0LmluZmxhdGUobWF4aW1h
bE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogCi0gICAgaWYgKCFwYWludEluZm8ucmVj
dC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAgaWYg
KCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA3ZDk2OWFmYThhZWIx
MDRlNDUxNjZhZmY0NWExYmMxNzc1NDIzYmQ0Li5jYjkyMGFmNjI2N2FjMjk5NmU5Y2E3N2RmMWFl
ZDFiN2ZiYzgwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dAogICAgIGNvbnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChj
b250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gc25h
cHBlZEludFJlY3QocmVjdCk7CiAgICAgaWYgKGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBh
bGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyMyw3ICs0
MjMsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQo
KSBjb25zdAogICAgIGlmICghcm9vdFJlbmRlclZpZXcpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgSW50UmVjdCByb290Vmlld1JlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVydFRv
Um9vdFZpZXcocGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgSW50UmVjdCByb290Vmll
d1JlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVydFRvUm9vdFZpZXcoc25hcHBlZEludFJl
Y3QocmVjdCkpOwogICAgIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQgfCBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmll
bGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApp
bmRleCA0ZGRiNWUyZDNlZDgwYjU0MTI2ODQ3OTdjZGZjMjFlZjRmMGMzNDIwLi4wNGZkNjQ3ZGM2
OGQxOGQ4ODVhMzJkNjM1N2VjMmJmMGM3ZmIxODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFJlbmRlckZp
ZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludAogICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0
PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpLCBsZWdlbmQtPndpZHRoKCkpKTsKICAgICAgICAg
Y2xpcFJlY3Quc2V0SGVpZ2h0KGxlZ2VuZC0+aGVpZ2h0KCkpOwogICAgIH0KLSAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoY2xpcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHls
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cAppbmRleCAyNjJlM2U3NDAxOTViYTkyMGM3OGE3NDM0OTc2ZGU0NDZkNWU5MDkzLi4yNDIwMTU2
Y2I3N2UxMjNiYmZjOGQzMWVjZWM4ZDcxYzMyZTQyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xMzgyLDcgKzEzODIsNyBAQCB2b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25z
dCBSZW5kZXJCbG9jayogYmxvYwogICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gYm9y
ZGVyQm94OwogICAgICAgICBibG9jay0+dGhlbWUoKS5hZGp1c3RSZXBhaW50UmVjdCgqYmxvY2ss
IGluZmxhdGVkUmVjdCk7CiAKLSAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJv
eChibG9jaywgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGluZmxhdGVkUmVjdCkpKTsK
KyAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywgc25hcHBlZElu
dFJlY3QoTGF5b3V0UmVjdChpbmZsYXRlZFJlY3QpKSk7CiAgICAgICAgIGlmIChyZWdpb24gPT0g
ZW5kUmVnaW9uKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggY2VkMTEyZTRhMDQ0YTBlYWMzOWZkNThk
YTExYjgyOTI0N2M1M2UyMS4uNDQ4NTEzN2NkMGMzYWQ4YTZlNWE0ZDFhMTAyZTZjNzFmOWQzMWE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIHRvUmVu
ZGVyRWxlbWVudChjaGlsZCktPnBhaW50KHBhaW50SW5mbywgYWRqdXN0ZWRQYWludE9mZnNldCk7
CiAgICAgICAgICAgICB4UG9zICs9IG1fY29scy5tX3NpemVzW2NdOwogICAgICAgICAgICAgaWYg
KGJvcmRlclRoaWNrbmVzcyAmJiBtX2NvbHMubV9hbGxvd0JvcmRlcltjICsgMV0pIHsKLSAgICAg
ICAgICAgICAgICBwYWludENvbHVtbkJvcmRlcihwYWludEluZm8sIHBpeGVsU25hcHBlZEludFJl
Y3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHhQb3MsIGFkanVzdGVkUGFp
bnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNzLCBoZWlnaHQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBwYWludENvbHVtbkJvcmRlcihwYWludEluZm8sIHNuYXBwZWRJbnRSZWN0KExh
eW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyB4UG9zLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSArIHlQb3MsIGJvcmRlclRoaWNrbmVzcywgaGVpZ2h0KCkpKSk7CiAgICAgICAgICAg
ICAgICAgeFBvcyArPSBib3JkZXJUaGlja25lc3M7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQg
UmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIH0KICAgICAgICAgeVBvcyArPSBtX3Jvd3MubV9z
aXplc1tyXTsKICAgICAgICAgaWYgKGJvcmRlclRoaWNrbmVzcyAmJiBtX3Jvd3MubV9hbGxvd0Jv
cmRlcltyICsgMV0pIHsKLSAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgcGl4
ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1
c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRoaWNrbmVzcykpKTsK
KyAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgc25hcHBlZEludFJlY3QoTGF5
b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkg
KyB5UG9zLCB3aWR0aCgpLCBib3JkZXJUaGlja25lc3MpKSk7CiAgICAgICAgICAgICB5UG9zICs9
IGJvcmRlclRoaWNrbmVzczsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MywxMCArNDgzLDEwIEBA
IHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheW91dCgpCiAgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0o
KTsKIAogICAgIGlmIChkb0Z1bGxSZXBhaW50KSB7Ci0gICAgICAgIHJlcGFpbnRVc2luZ0NvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG9sZEJvdW5kcykpOwor
ICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgc25hcHBlZElu
dFJlY3Qob2xkQm91bmRzKSk7CiAgICAgICAgIExheW91dFJlY3QgbmV3Qm91bmRzID0gY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiAgICAgICAgIGlmIChu
ZXdCb3VuZHMgIT0gb2xkQm91bmRzKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVy
KHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3QobmV3Qm91bmRzKSk7CisgICAg
ICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgc25hcHBlZElu
dFJlY3QobmV3Qm91bmRzKSk7CiAgICAgfQogCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwpAQCAt
NTU5LDcgKzU1OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZs
YXR0ZW5pbmcoKQogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAKICAg
ICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKLSAgICAgICAgICAgIEludFJl
Y3Qgb2xkRnJhbWVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjaGlsZC0+ZnJhbWVSZWN0KCkp
OworICAgICAgICAgICAgSW50UmVjdCBvbGRGcmFtZVJlY3QgPSBzbmFwcGVkSW50UmVjdChjaGls
ZC0+ZnJhbWVSZWN0KCkpOwogCiAgICAgICAgICAgICBpbnQgd2lkdGggPSBtX2NvbHMubV9zaXpl
c1tjXTsKIApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9u
RnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQogICAgICAgICB4UG9zID0gMDsKICAgICAgICAgZm9yIChp
bnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGUgcm93
cyBhbmQgY29sdW1ucyBhcmUgZmlsbGVkCi0gICAgICAgICAgICBJbnRSZWN0IG9sZFJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGNoaWxkLT5mcmFtZVJlY3QoKSk7CisgICAgICAgICAgICBJbnRS
ZWN0IG9sZFJlY3QgPSBzbmFwcGVkSW50UmVjdChjaGlsZC0+ZnJhbWVSZWN0KCkpOwogCiAgICAg
ICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24oSW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAg
ICAgICAgY2hpbGQtPnNldEhlaWdodChtX3Jvd3MubV9zaXplc1tyXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKaW5kZXggNjkyMzljMjM5NDIyNDQ2
NGRmYzUwNTFkZjdmNDIzNDcyOWUzZjM5Ny4uZTQyZmU4ZDIyOGUyYTE0NGZlNDVlNDBiZDZmMWJk
MDUwODI4YjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2Fu
dmFzLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIGJv
b2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhwYWludFJlY3QpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGNsaXApOwog
ICAgIGlmIChjbGlwKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGNvbnRlbnRSZWN0KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRSZWN0KSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZy
YW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA5ZDFmZjBjNWRkNjc1NjkwMDEyMzQ4M2JhNGIxMjU5MzVjNDVmMmJhLi5kNjE1NWZjNmQ2ZTQ4
NjYwNTc3NDA2OWFiYmYzNzNiZDZlNGZhOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4
dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdChwYWludE9mZnNl
dC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVy
ICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldp
ZHRoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFp
bnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAgICAgICAgICAgYm9vbCBlcnJvclBp
Y3R1cmVEcmF3biA9IGZhbHNlOwogICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZU9mZnNldDsK
QEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0
KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9y
KSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSks
IGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAg
ICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00ODAs
NyArNDgwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgaWYgKGNsaXApCiAg
ICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNvbnRlbnRSZWN0KTsKIAotICAgICAgICBwYWludElu
dG9SZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHBhaW50UmVjdCwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKHBhaW50UmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChjYWNoZWRJbWFnZSgpICYmIHBhZ2UgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgICAgICAvLyBGb3Igbm93LCBjb3VudCBpbWFn
ZXMgYXMgdW5wYWludGVkIGlmIHRoZXkgYXJlIHN0aWxsIHByb2dyZXNzaXZlbHkgbG9hZGluZy4g
V2UgbWF5IHdhbnQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDc0MGU3OWIyYzVkMDRkODlmOTg3NjVkZTkzZTI0ODgyYzc3ODU0ZTYuLjkzNzBmNTIxNTM0
NzQ3NDkzMmZiMmMwZjQwZTg1MzA1Y2Q3MjNiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xNTQzLDExICsxNTQzLDExIEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMCiAgICAgTGF5b3V0UmVjdCBib3goTGF5b3V0UG9pbnQocGFpbnRPZmZzZXQueCgp
ICsgdGhpc2xpbmUueCgpIC0gb2Zmc2V0LCBwYWludE9mZnNldC55KCkgKyB0aGlzbGluZS55KCkg
LSBvZmZzZXQpLAogICAgICAgICBMYXlvdXRTaXplKHRoaXNsaW5lLndpZHRoKCkgKyBvZmZzZXQs
IHRoaXNsaW5lLmhlaWdodCgpICsgb2Zmc2V0KSk7CiAKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZEJveCA9IHBpeGVsU25hcHBlZEludFJlY3QoYm94KTsKKyAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZEJveCA9IHNuYXBwZWRJbnRSZWN0KGJveCk7CiAgICAgaWYgKHBpeGVsU25hcHBlZEJveC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZExhc3RMaW5l
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54KCkgKyBsYXN0bGluZS54KCksIDAs
IGxhc3RsaW5lLndpZHRoKCksIDApOwotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkTmV4dExpbmUg
PSBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIG5leHRsaW5lLngoKSwgMCwg
bmV4dGxpbmUud2lkdGgoKSwgMCk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRMYXN0TGluZSA9
IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxhc3RsaW5lLngoKSwgMCwgbGFzdGxp
bmUud2lkdGgoKSwgMCk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWROZXh0TGluZSA9IHNuYXBw
ZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIG5leHRsaW5lLngoKSwgMCwgbmV4dGxpbmUud2lk
dGgoKSwgMCk7CiAgICAgCiAgICAgLy8gbGVmdCBlZGdlCiAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDI5M2MzZGRhYTM0ZTg5ZGJiN2YzZjczMWMxMDMyYjBjNzU0YTVlNGIuLjg1ZTk5OThj
ZWExMjYwNDkxMDMwMzcyN2U4YzI5YzdiY2NhY2M4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7
CiAgICAgICAgIEFTU0VSVChib3gpOwogICAgICAgICBtX3RyYW5zZm9ybS0+bWFrZUlkZW50aXR5
KCk7Ci0gICAgICAgIGJveC0+c3R5bGUoKS5hcHBseVRyYW5zZm9ybSgqbV90cmFuc2Zvcm0sIHBp
eGVsU25hcHBlZEZvclBhaW50aW5nKGJveC0+Ym9yZGVyQm94UmVjdCgpLCBib3gtPmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3Jp
Z2luKTsKKyAgICAgICAgYm94LT5zdHlsZSgpLmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwg
c25hcFJlY3RUb0RldmljZVBpeGVscyhib3gtPmJvcmRlckJveFJlY3QoKSwgYm94LT5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6SW5jbHVkZVRyYW5zZm9ybU9y
aWdpbik7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKCptX3RyYW5zZm9ybSwgY2FuUmVu
ZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0KIApAQCAtODcwLDcgKzg3MCw3IEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKFJlbmRlclN0eWxlOjpB
cHBseVRyYW5zZm9ybU9yCiAKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAg
IEFTU0VSVChib3gpOwotICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0ID0gcGl4
ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYm94LT5ib3JkZXJCb3hSZWN0KCksIGJveC0+ZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVy
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm94LT5ib3JkZXJCb3hSZWN0KCksIGJveC0+
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBpZiAocmVuZGVyZXIoKS5zdHls
ZSgpLmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uKCkpIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY3VyclRyYW5zZm9ybTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBz
dHlsZSA9IHJlbmRlcmVyKCkuYW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVy
KCZyZW5kZXJlcigpKTsKQEAgLTE2OTgsNyArMTY5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
ZXJQCiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3Rl
ZENsaXBSZWN0ID0gcGFpbnRpbmdFeHRlbnQoKnRoaXMsIHBhaW50aW5nSW5mby5yb290TGF5ZXIs
IGRpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAgICBhZGp1c3Rl
ZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsKLSAgICAg
ICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRp
bmcoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpOworICAgICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkQ2xpcFJlY3QgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRD
bGlwUmVjdCk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpAQCAtMjQyMSw3ICsyNDIx
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRS
ZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAgICAgICAgIC8vIHRoYXQgcHV0IHdl
YiB2aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwu
CiAgICAgICAgICAgICAvLyBUaGUgY2FuQXV0b3Njcm9sbCBmdW5jdGlvbiBpbiBFdmVudEhhbmRs
ZXIgYWxzbyBrbm93cyBhYm91dCB0aGlzLgogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBm
cmFtZVZpZXcuZnJhbWUoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCku
c2Nyb2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLnNjcm9sbFJlY3RJbnRvVmlldyhzbmFwcGVkSW50UmVjdChy
ZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0yNzE4LDcgKzI3MTgsNyBAQCBJbnRS
ZWN0IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QKICAgICBib29sIGhhc1Zl
cnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSBy
ZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNI
b3Jpem9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9y
aXpvbnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChjb3JuZXJSZWN0KHRoaXMsIHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkp
KTsKKyAgICAgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KGNvcm5lclJlY3QodGhpcywgcmVuZGVy
Qm94KCktPmJvcmRlckJveFJlY3QoKSkpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKQEAg
LTM1MDMsNyArMzUwMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJ
bWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBGbG9hdFJlY3QgaW1h
Z2VSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVy
UmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJT
aXplKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIEZs
b2F0UmVjdCBpbWFnZVJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVz
aXplckNvcm5lclJlY3QubWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXplLCBjb3Ju
ZXJSZXNpemVyU2l6ZSksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRl
cmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9CiAKQEAgLTM1NDIsNyAr
MzU0Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwogICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChs
YXJnZXJDb3JuZXIpKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcHBlZEludFJlY3Qo
bGFyZ2VyQ29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNTcwLDcgKzM1NzAsNyBAQCBib29sIFJl
bmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IGNvbnN0IEludFBvaW50JgogICAgIAogICAgIEludFJlY3QgcmVzaXplQ29udHJvbFJlY3Q7CiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORSkgewotICAg
ICAgICByZXNpemVDb250cm9sUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVzaXplckNvcm5l
clJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgcmVzaXplQ29udHJv
bFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSkpOwogICAgICAgICBpZiAocmVzaXplQ29udHJvbFJlY3QuY29udGFpbnMobG9j
YWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNjcwLDcgKzM2
NzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udAogICAgICAgICBjb250ZXh0LT5zYXZlKCk7
CiAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsK
ICAgICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3Vt
dWxhdGlvbik7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmco
YWRqdXN0ZWRDbGlwUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC0+
Y2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNjYWxl
RmFjdG9yKSk7CiAgICAgfQogfQogCkBAIC00MjIzLDcgKzQyMjMsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNo
aWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsQWNjdW11bGF0
aW9uID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRP
ZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zaW5nUmVjdEZvclBhaW50aW5nKHRyYW5z
Zm9ybS5pbnZlcnNlKCkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZp
Y2VTY2FsZUZhY3RvcikpLAorICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zv
cm0uaW52ZXJzZSgpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNl
U2NhbGVGYWN0b3IpKSwKICAgICAgICAgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGFkanVz
dGVkU3VicGl4ZWxBY2N1bXVsYXRpb24sIHBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290LCBw
YWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRz
QW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiB9CkBAIC00NjExLDcgKzQ2MTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJm
bG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRgogICAg
ICAgICBjb25zdCBMYXllckZyYWdtZW50JiBmcmFnbWVudCA9IGxheWVyRnJhZ21lbnRzLmF0KGkp
OwogICAgICAgICBjbGlwVG9SZWN0KGxvY2FsUGFpbnRpbmdJbmZvLCBjb250ZXh0LCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCk7CiAgICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9scyhjb250ZXh0
LCByb3VuZGVkSW50UG9pbnQodG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2Nh
dGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YnBpeGVs
QWNjdW11bGF0aW9uKSksCi0gICAgICAgICAgICBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50
LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIHRydWUpOworICAgICAgICAgICAgc25hcHBlZEludFJl
Y3QoZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpKSwgdHJ1ZSk7CiAgICAgICAgIHJlc3Rv
cmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCk7CiAgICAgfQogfQpAQCAtNTAyOCw3ICs1MDI4LDcgQEAgYm9vbCBS
ZW5kZXJMYXllcjo6aGl0VGVzdFJlc2l6ZXJJbkZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMKIAogICAgIGZvciAoaW50IGkgPSBsYXllckZyYWdtZW50cy5zaXpl
KCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBjb25zdCBMYXllckZyYWdtZW50JiBmcmFn
bWVudCA9IGxheWVyRnJhZ21lbnRzLmF0KGkpOwotICAgICAgICBpZiAoZnJhZ21lbnQuYmFja2dy
b3VuZFJlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIHJlc2l6ZXJDb3JuZXJSZWN0
KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhZ21lbnQubGF5ZXJCb3VuZHMpKS5jb250YWlu
cyhoaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpKQorICAgICAgICBpZiAoZnJhZ21lbnQu
YmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIHJlc2l6ZXJDb3Ju
ZXJSZWN0KHRoaXMsIHNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmxheWVyQm91bmRzKSkuY29udGFp
bnMoaGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAKQEAgLTU2ODYsMTMgKzU2ODYsMTMgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJMYXllcjo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNv
bnN0IExheW8KIEludFJlY3QgUmVuZGVyTGF5ZXI6OmFic29sdXRlQm91bmRpbmdCb3goKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIgPSByb290KCk7Ci0gICAgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3gocm9vdExheWVyLCBvZmZzZXRGcm9t
QW5jZXN0b3Iocm9vdExheWVyKSkpOworICAgIHJldHVybiBzbmFwcGVkSW50UmVjdChib3VuZGlu
Z0JveChyb290TGF5ZXIsIG9mZnNldEZyb21BbmNlc3Rvcihyb290TGF5ZXIpKSk7CiB9CiAKIEZs
b2F0UmVjdCBSZW5kZXJMYXllcjo6YWJzb2x1dGVCb3VuZGluZ0JveEZvclBhaW50aW5nKCkgY29u
c3QKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyID0gcm9vdCgpOwotICAgIHJl
dHVybiBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhib3VuZGluZ0JveChyb290TGF5ZXIsIG9mZnNl
dEZyb21BbmNlc3Rvcihyb290TGF5ZXIpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpOworICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvdW5kaW5n
Qm94KHJvb3RMYXllciwgb2Zmc2V0RnJvbUFuY2VzdG9yKHJvb3RMYXllcikpLCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3Rvckxh
eWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgQ2FsY3VsYXRlTGF5ZXJCb3Vu
ZHNGbGFncyBmbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKaW5kZXggYTAwMWQ5NzZhNmZmMTY5ZTdkOTg2NmM2ZWI2MWMyN2Ew
MWY1ODI2Mi4uZGQwMzg1OGQ2NmVjNWIxMjE1MjdiNzEzZjRmMTRjOWFiMzU4ZDQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAg
IGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7CiAgICAgICAgIFJlbmRlckJveCYg
cmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSk7Ci0gICAgICAgIHN0eWxlLmFwcGx5
VHJhbnNmb3JtKHQsIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHJlbmRlckJveC5ib3JkZXJCb3hS
ZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9y
bU9yaWdpbik7CisgICAgICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMocmVuZGVyQm94LmJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSks
IFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJp
eFJlbmRlcmFibGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKICAg
ICB9CiAgICAgCkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUdlb21ldHJ5KCkKICAgICBvZmZzZXRGcm9tUGFyZW50ID0gb2Zmc2V0RnJvbVBhcmVudCAr
IChjb21wQW5jZXN0b3IgPyBjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+ZGV2aWNlUGl4ZWxGcmFj
dGlvbkZyb21SZW5kZXJlcigpIDogTGF5b3V0U2l6ZSgpKTsKICAgICByZWxhdGl2ZUNvbXBvc2l0
aW5nQm91bmRzLm1vdmVCeShvZmZzZXRGcm9tUGFyZW50KTsKIAotICAgIExheW91dFJlY3QgZW5j
bG9zaW5nUmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcyA9IExheW91dFJlY3QoZW5jbG9zaW5nUmVj
dEZvclBhaW50aW5nKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMsIGRldmljZVNjYWxlRmFjdG9y
KSk7CisgICAgTGF5b3V0UmVjdCBlbmNsb3NpbmdSZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzID0g
TGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHJlbGF0aXZlQ29tcG9zaXRpbmdC
b3VuZHMsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgTGF5b3V0U2l6ZSBzdWJwaXhlbE9mZnNl
dEFkanVzdG1lbnQgPSBlbmNsb3NpbmdSZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9u
KCkgLSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCk7CiAgICAgTGF5b3V0U2l6
ZSByZW5kZXJlck9mZnNldEZyb21HcmFwaGljc0xheWVyID0gIHRvTGF5b3V0U2l6ZShsb2NhbENv
bXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpICsgc3VicGl4ZWxPZmZzZXRBZGp1c3RtZW50Owog
CkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJ
bnRlcm5hbEhpZXJhcmNoeSgpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRl
bnRzUmVjdCgpCiB7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3QocGl4ZWxT
bmFwcGVkSW50UmVjdChjb250ZW50c0JveCgpKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1JlY3Qoc25hcHBlZEludFJlY3QoY29udGVudHNCb3goKSkpOwogICAgIAogICAgIExh
eW91dFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3Q7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNCb3go
KSkKICAgICAgICAgY29udGVudHNDbGlwcGluZ1JlY3QgPSB0b1JlbmRlckJveChyZW5kZXJlcigp
KS5jb250ZW50Qm94UmVjdCgpOwogCiAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250
ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdS
ZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFw
cGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1RpbGVTaXplKEludFNpemUoKSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c1RpbGVQaGFzZShJbnRQb2ludCgpKTsKQEAgLTE4ODQsMTEgKzE4ODQsMTEgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2
ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNCb3goKSkpOworICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94
KCkpKTsKIAogICAgIExheW91dFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3QgPSBpbWFnZVJlbmRl
cmVyLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250
ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdS
ZWN0KSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFw
cGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXIg
PSBmYWxzZTsKQEAgLTE5NjUsNyArMTk2NSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJMYXllckJhY2tp
bmc6OmJhY2tncm91bmRCb3hGb3JQYWludGluZygpIGNvbnN0CiAKICAgICBMYXlvdXRSZWN0IGJh
Y2tncm91bmRCb3ggPSBiYWNrZ3JvdW5kUmVjdEZvckJveCh0b1JlbmRlckJveChyZW5kZXJlcigp
KSk7CiAgICAgYmFja2dyb3VuZEJveC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXll
cigpKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoYmFja2dyb3VuZEJveCwg
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
YmFja2dyb3VuZEJveCwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAKIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyQmFja2luZzo6cGFyZW50Rm9yU3VibGF5ZXJzKCkgY29uc3QKQEAgLTIwNjEs
NyArMjA2MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNw
bGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiB7CiAgICAgQVNTRVJUKCFwYWlu
dHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpOwogCi0gICAgRmxvYXRSZWN0IHBpeGVsU25hcHBl
ZFJlY3RGb3JQYWludGluZyA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHIsIGRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9yUGFpbnRpbmcgPSBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIEZyYW1l
VmlldyYgZnJhbWVWaWV3ID0gb3duaW5nTGF5ZXIoKS5yZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZp
ZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcu
aXNUcmFja2luZ1JlcGFpbnRzKCkpCiAgICAgICAgIGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWlu
dFJlY3QocGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nKTsKQEAgLTIyMDksNyArMjIwOSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3Jv
bGxDb3JuZXJBbmRSZXNpemVyLngoKSwgLXNjcm9sbENvcm5lckFuZFJlc2l6ZXIueSgpKTsKICAg
ICAgICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBMYXlvdXRSZWN0KGNsaXApOwogICAg
ICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lckFuZFJlc2l6ZXIubG9jYXRp
b24oKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoJmNvbnRleHQs
IEludFBvaW50KCksIHBpeGVsU25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAg
ICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoJmNvbnRleHQsIEludFBvaW50KCks
IHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOwogICAgICAgICBtX293bmluZ0xheWVy
LnBhaW50UmVzaXplcigmY29udGV4dCwgSW50UG9pbnQoKSwgdHJhbnNmb3JtZWRDbGlwKTsKICAg
ICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0NGViNTE5MGM4MGRlZjY2
MWFiNzg5ZjU2MGMzMWVlMmQ4MTk2YmU4Li45MzUzYjlhYzMyODM3YTk4OWRhZWQwNGNlNjVjNWE2
MTc3OTQ4MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJM
YXllciYKICAgICAgICAgYm91bmRzQ29tcHV0ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIEludFJl
Y3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyLmJhY2tncm91bmRDbGlwUmVj
dChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVyKCksIEFic29s
dXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lv
bnMuCisgICAgSW50UmVjdCBjbGlwUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGxheWVyLmJhY2tncm91
bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVy
KCksIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3Ig
Q1NTIHJlZ2lvbnMuCiAKICAgICAvLyBPbiBpT1MsIHBhZ2VTY2FsZUZhY3RvcigpIGlzIG5vdCBh
cHBsaWVkIGJ5IFJlbmRlclZpZXcsIHNvIHdlIHNob3VsZCBub3Qgc2NhbGUgaGVyZS4KICAgICAv
LyBGSVhNRTogU2V0IFNldHRpbmdzOjpkZWxlZ2F0ZXNQYWdlU2NhbGluZyB0byB0cnVlIGZvciBp
T1MuCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgICAg
ICByZXR1cm4gcGx1Z2luUmVuZGVyZXIuaGFzTGF5ZXIoKSAmJiBwbHVnaW5SZW5kZXJlci5sYXll
cigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAgIC8vIERvbid0IGdvIGludG8gY29tcG9zaXRpbmcg
bW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHplcm8sIG9yIHNpemUgaXMgMXgxLgotICAgIElu
dFJlY3QgY29udGVudEJveCA9IHBpeGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXIuY29u
dGVudEJveFJlY3QoKSk7CisgICAgSW50UmVjdCBjb250ZW50Qm94ID0gc25hcHBlZEludFJlY3Qo
cGx1Z2luUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSk7CiAgICAgcmV0dXJuIGNvbnRlbnRCb3gu
aGVpZ2h0KCkgKiBjb250ZW50Qm94LndpZHRoKCkgPiAxOwogfQogCkBAIC0yNDgyLDcgKzI0ODIs
NyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZy
YW1lKFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAgICAgICAgIHJldHVybiBmcmFtZVJlbmRlcmVy
Lmhhc0xheWVyKCkgJiYgZnJhbWVSZW5kZXJlci5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKICAg
ICAKICAgICAvLyBEb24ndCBnbyBpbnRvIGNvbXBvc2l0aW5nIG1vZGUgaWYgaGVpZ2h0IG9yIHdp
ZHRoIGFyZSB6ZXJvLgotICAgIHJldHVybiAhcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlbmRl
cmVyLmNvbnRlbnRCb3hSZWN0KCkpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIXNuYXBwZWRJbnRS
ZWN0KGZyYW1lUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSkuaXNFbXB0eSgpOwogfQogCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikgY29uc3QKQEAgLTI3MzUsNyArMjczNSw3
IEBAIHN0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZs
b2F0UmVjdCYgY2xpcCkKIHsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JJbnRlZ3Jh
bFBvc2l0aW9uZWRJdGVtcyA9IHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChjbGlwKSk7
CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRlbXMg
PSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NMYXll
ciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKICAgICAgICAgcGFpbnRTY3JvbGxi
YXIobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhvcml6b250YWxTY3JvbGxiYXIoKSwgY29udGV4
dCwgcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0ZW1zKTsKICAgICBlbHNl
IGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBkNDJjM2E1NmM5OGYy
M2QwNmY0OWI2ODdhZjc1NzA1ZjUxOTE1MjY1Li4zMDEyY2QyNWZiNTExMzMwOTY4NDhiMGQzZmU1
YmM2ZjIxODVhMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAvLyBG
b2N1cyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtLgogICAgIGludCBzZWxlY3RlZEl0ZW0gPSBzZWxl
Y3RFbGVtZW50KCkuYWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCk7CiAgICAgaWYgKHNlbGVj
dGVkSXRlbSA+PSAwKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0
KGl0ZW1Cb3VuZGluZ0JveFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2VsZWN0ZWRJdGVtKSkpOwor
ICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChh
ZGRpdGlvbmFsT2Zmc2V0LCBzZWxlY3RlZEl0ZW0pKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKICAgICAgICAgaWYgKGlzSFRNTE9w
dGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
KSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50KCkuc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoaSk7Ci0gICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVt
Qm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIGkpKSk7CisgICAgICAgICAgICByZWN0
cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zm
c2V0LCBpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQx
LDEyICszNDEsMTIgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKIHZvaWQgUmVuZGVyTGlzdEJv
eDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIEludFJlY3Qgc2Ny
b2xsUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsgd2lkdGgoKSAt
IGJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCksCisgICAgICAgIEludFJlY3Qgc2Nyb2xs
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIHdpZHRoKCkgLSBib3JkZXJS
aWdodCgpIC0gbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgcGFpbnRPZmZzZXQueSgpICsg
Ym9yZGVyVG9wKCksCiAgICAgICAgICAgICBtX3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICBo
ZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKSk7CiAgICAgICAgIG1fdkJh
ci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwotICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50
SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CisgICAg
ICAgIG1fdkJhci0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHBhaW50
SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gbGlzdEl0ZW1FbGVt
ZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5jb2xv
clNwYWNlKCkgOiBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVt
UmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAg
ICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoaXRl
bVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3Bh
Y2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCmluZGV4IDI4YTA1OGU1ZDk5YWUyZjJiZjJjYjg1ZjI3MzVjNzdiZTkwMmU1MWUu
LjhhOTA1NjNmODc4OTI5NDE0N2ZmZDgzMjUzMTY2YjkwOTJmYjRjMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTExODUsNyArMTE4NSw3
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgb3ZlcmZsb3dSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwogICAgIG92ZXJmbG93UmVjdC5pbmZsYXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWlu
dEluZm8ucGhhc2UpKTsKIAotICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhl
bFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkpKQorICAgIGlmICghcGFpbnRJbmZvLnJlY3Qu
aW50ZXJzZWN0cyhzbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0UmVjdCBib3goYm94T3JpZ2luLCBzaXplKCkpOwpAQCAtMTIwMCw3ICsx
MjAwLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgaWYgKHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0
ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50UmVj
dChzZWxSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVj
dGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25S
ZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENvbG9yIGNvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCmluZGV4IDNjMTZmYzQ4ZDE4ODBmOWQ3
MWUzNDNhMzgyNTgzYjg4M2E4NGVmMTUuLmU2MjQ2ODZjNWE0NGNiMDQ3MDE4YmExMmMxNTNlYWUz
ZjZiYWQ3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAt
NTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlck1ldGVyOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogewog
ICAgIFJlbmRlckJveDo6dXBkYXRlTG9naWNhbFdpZHRoKCk7CiAKLSAgICBJbnRTaXplIGZyYW1l
U2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKCp0aGlzLCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGZyYW1lUmVjdCgpKSk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVy
U2l6ZUZvckJvdW5kcygqdGhpcywgc25hcHBlZEludFJlY3QoZnJhbWVSZWN0KCkpKTsKICAgICBz
ZXRMb2dpY2FsV2lkdGgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS53aWR0
aCgpIDogZnJhbWVTaXplLmhlaWdodCgpKTsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJl
bmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgbG9naQogICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVG
b3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWUpKTsKKyAgICBJbnRTaXpl
IGZyYW1lU2l6ZSA9IHRoZW1lKCkubWV0ZXJTaXplRm9yQm91bmRzKCp0aGlzLCBzbmFwcGVkSW50
UmVjdChmcmFtZSkpOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcAppbmRleCAwYTRlZWIyN2YxZjBiMTI4NGRjNmRmYmQwMWJmM2JmYmUyMWIxMThmLi44NDRh
N2RjZGFkNDY2MGY1ZDQ4YmJmMmMyOThjMjk1MTMwMGJkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTYxNCw3ICs2MTQs
NyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAgICAgICAgIExheW91dFVuaXQg
cnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRo
aWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0
LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogcGFpbnRPZmZzZXQueSgpICsgcnVs
ZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkOwogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
dWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVsZVRvcCArIHJ1bGVUaGlja25lc3M7Ci0gICAg
ICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7
CisgICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHNuYXBwZWRJ
bnRSZWN0RnJvbUVkZ2VzKHJ1bGVMZWZ0LCBydWxlVG9wLCBydWxlUmlnaHQsIHJ1bGVCb3R0b20p
OwogICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCwg
cGl4ZWxTbmFwcGVkUnVsZVJlY3QueCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC55KCksIHBpeGVs
U25hcHBlZFJ1bGVSZWN0Lm1heFgoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WSgpLCBib3hT
aWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNvbENvdW50OyBpKyspIHsK
ICAgICAgICAgICAgIHJ1bGVSZWN0Lm1vdmUoc3RlcCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHBp
eGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChydWxlUmVjdCk7CisgICAg
ICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVs
ZVJlY3QpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0
LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4
ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJv
eFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA5
NDBjYjk4NmIzMjQ3OWFmMjVmMmZjM2Q0MDJiNjBhMzIyODBkZDJhLi45MDg1NWNkOTY0MjFkYWE3
MTU4ZjZjOTM2OTFmNDg0NmQzNmJkZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtODA3LDEzICs4MDcsMTMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRy
YXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgZmxvYXQg
eDEKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCU1RvcDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoeDEsIHkxLCBsZW5ndGgsIHRoaXJkT2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFj
dG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0
KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgxLCB5MiAtIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0
aCwgdGhpcmRPZlRoaWNrbmVzcywgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVs
cyh4MSwgeTEsIGxlbmd0aCwgdGhpcmRPZlRoaWNrbmVzcywgZGV2aWNlU2NhbGVGYWN0b3IpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVscyh4MSwgeTIgLSB0aGlyZE9mVGhpY2tuZXNzLCBsZW5ndGgsIHRoaXJk
T2ZUaGlja25lc3MsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoeDEsIHkxLCB0aGlyZE9mVGhp
Y2tuZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50aW5nKHgy
IC0gdGhpcmRPZlRoaWNrbmVzcywgeTEsIHRoaXJkT2ZUaGlja25lc3MsIGxlbmd0aCwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTEsIHRoaXJkT2ZUaGlja25lc3Ms
IGxlbmd0aCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MiAtIHRoaXJk
T2ZUaGlja25lc3MsIHkxLCB0aGlyZE9mVGhpY2tuZXNzLCBsZW5ndGgsIGRldmljZVNjYWxlRmFj
dG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAKQEAgLTgzNCwzOCArODM0LDM4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJv
eFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGZsb2F0IHgxCiAgICAgICAg
ICAgICAgICAgRmxvYXRSZWN0IHBhaW50Qm9yZGVyUmVjdDsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKHNpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU1RvcDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExh
eW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkxLCAoeDIgLSBtaXRyZU9mZnNldDMpIC0gKHgx
ICsgbWl0cmVPZmZzZXQxKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoTGF5b3V0UmVjdCh4MSArIG1pdHJlT2Zmc2V0MSwgeTEsICh4MiAtIG1pdHJlT2Zm
c2V0MykgLSAoeDEgKyBtaXRyZU9mZnNldDEpLCB0aGlyZE9mVGhpY2tuZXNzKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgcGFpbnRCb3JkZXJSZWN0LngoKSwgcGFpbnRCb3JkZXJSZWN0LnkoKSwg
cGFpbnRCb3JkZXJSZWN0Lm1heFgoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFkoKSwgc2lkZSwgY29s
b3IsIFNPTElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkamFjZW50MUJpZ1RoaXJk
LCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpbnRCb3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcoTGF5b3V0UmVjdCh4
MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGlyZE9mVGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNl
dDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MSArIG1pdHJlT2Zmc2V0MiwgeTIgLSB0aGly
ZE9mVGhpY2tuZXNzLCAoeDIgLSBtaXRyZU9mZnNldDQpIC0gKHgxICsgbWl0cmVPZmZzZXQyKSwg
dGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVj
dC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50
Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlh
cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBw
aXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KHgxLCB5MSArIG1pdHJlT2Zmc2V0MSwg
dGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVPZmZzZXQzKSAtICh5MSArIG1pdHJlT2Zmc2V0
MSkpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJv
cmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEsIHkxICsgbWl0
cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsg
bWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54
KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9y
ZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBl
ZEZvclBhaW50aW5nKExheW91dFJlY3QoeDIgLSB0aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJl
T2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywgKHkyIC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1p
dHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDIg
LSB0aGlyZE9mVGhpY2tuZXNzLCB5MSArIG1pdHJlT2Zmc2V0MiwgdGhpcmRPZlRoaWNrbmVzcywg
KHkyIC0gbWl0cmVPZmZzZXQ0KSAtICh5MSArIG1pdHJlT2Zmc2V0MikpLCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCBwYWludEJvcmRlclJlY3QueCgpLCBwYWludEJvcmRlclJlY3QueSgpLCBwYWlu
dEJvcmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRlclJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwg
U09MSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFk
amFjZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYWludEJvcmRlclJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRS
ZWN0KHgxICsgbWl0cmVPZmZzZXQyLCB5MSwgKHgyIC0gbWl0cmVPZmZzZXQ0KSAtICh4MSArIG1p
dHJlT2Zmc2V0MiksIHRoaXJkT2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDIsIHkxLCAoeDIgLSBtaXRyZU9mZnNldDQp
IC0gKHgxICsgbWl0cmVPZmZzZXQyKSwgdGhpcmRPZlRoaWNrbmVzcyksIGRldmljZVNjYWxlRmFj
dG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50
Qm9yZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBT
T0xJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRq
YWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50Qm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDEgKyBt
aXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRoaWNrbmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAt
ICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJkT2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEJvcmRlclJlY3QgPSBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QoeDEgKyBtaXRyZU9mZnNldDEsIHkyIC0gdGhpcmRPZlRo
aWNrbmVzcywgKHgyIC0gbWl0cmVPZmZzZXQzKSAtICh4MSArIG1pdHJlT2Zmc2V0MSksIHRoaXJk
T2ZUaGlja25lc3MpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBwYWludEJvcmRlclJlY3QueCgp
LCBwYWludEJvcmRlclJlY3QueSgpLCBwYWludEJvcmRlclJlY3QubWF4WCgpLCBwYWludEJvcmRl
clJlY3QubWF4WSgpLCBzaWRlLCBjb2xvciwgU09MSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRqYWNlbnQxQmlnVGhpcmQsIGFkamFjZW50MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVyUmVjdCA9IHBpeGVs
U25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeDEsIHkxICsgbWl0cmVPZmZzZXQyLCB0aGly
ZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDQpIC0gKHkxICsgbWl0cmVPZmZzZXQyKSks
IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50Qm9yZGVy
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MSwgeTEgKyBtaXRyZU9m
ZnNldDIsIHRoaXJkT2ZUaGlja25lc3MsICh5MiAtIG1pdHJlT2Zmc2V0NCkgLSAoeTEgKyBtaXRy
ZU9mZnNldDIpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcGFpbnRCb3JkZXJSZWN0LngoKSwg
cGFpbnRCb3JkZXJSZWN0LnkoKSwgcGFpbnRCb3JkZXJSZWN0Lm1heFgoKSwgcGFpbnRCb3JkZXJS
ZWN0Lm1heFkoKSwgc2lkZSwgY29sb3IsIFNPTElELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkamFjZW50MUJpZ1RoaXJkLCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKIAot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRCb3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoTGF5b3V0UmVjdCh4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZz
ZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIgLSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVP
ZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50Qm9yZGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdCh4MiAtIHRo
aXJkT2ZUaGlja25lc3MsIHkxICsgbWl0cmVPZmZzZXQxLCB0aGlyZE9mVGhpY2tuZXNzLCAoeTIg
LSBtaXRyZU9mZnNldDMpIC0gKHkxICsgbWl0cmVPZmZzZXQxKSksIGRldmljZVNjYWxlRmFjdG9y
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHBhaW50Qm9yZGVyUmVjdC54KCksIHBhaW50Qm9yZGVyUmVjdC55KCksIHBhaW50Qm9y
ZGVyUmVjdC5tYXhYKCksIHBhaW50Qm9yZGVyUmVjdC5tYXhZKCksIHNpZGUsIGNvbG9yLCBTT0xJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNl
bnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRl
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBmbG9hdCB4MQogICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRl
eHQtPnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyh4MSwgeTEsIHgyIC0geDEs
IHkyIC0geTEsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwg
eTIgLSB5MSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNlZCk7CiAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VTdHlsZShvbGRTdHJva2VTdHlsZSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE8KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSB0b0VsZW1lbnQobiktPmdl
dEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgp
LmNvbXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCkKQEAgLTEwNjEsMTAgKzEwNjEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50
T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWMK
ICAgICBpZiAoc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLm91
dGxpbmVTdHlsZSgpID09IEJOT05FKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IGlu
bmVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpOworICAgIEludFJlY3QgaW5uZXIg
PSBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpOwogICAgIGlubmVyLmluZmxhdGUob3V0bGluZU9m
ZnNldCk7CiAKLSAgICBJbnRSZWN0IG91dGVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lcik7
CisgICAgSW50UmVjdCBvdXRlciA9IHNuYXBwZWRJbnRSZWN0KGlubmVyKTsKICAgICBvdXRlci5p
bmZsYXRlKG91dGxpbmVXaWR0aCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBwcmV2ZW50cyBvdXRs
aW5lcyBmcm9tIHBhaW50aW5nIGluc2lkZSB0aGUgb2JqZWN0LiBTZWUgYnVnIDEyMDQyCkBAIC0x
MTY2LDcgKzExNjYsNyBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogICAgIExheW91dFJlY3QgcmVzdWx0ID0g
cmVjdHNbMF07CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBuOyArK2kpCiAgICAgICAgIHJl
c3VsdC51bml0ZShyZWN0c1tpXSk7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVz
dWx0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3QocmVzdWx0KTsKIH0KIAogdm9pZCBSZW5k
ZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
KQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q28KICAgICAgICAg
QVNTRVJUKHJlcGFpbnRDb250YWluZXIgPT0gJnYpOwogICAgICAgICBib29sIHZpZXdIYXNDb21w
b3NpdGVkTGF5ZXIgPSB2Lmhhc0xheWVyKCkgJiYgdi5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsK
ICAgICAgICAgaWYgKCF2aWV3SGFzQ29tcG9zaXRlZExheWVyIHx8IHYubGF5ZXIoKS0+YmFja2lu
ZygpLT5wYWludHNJbnRvV2luZG93KCkpIHsKLSAgICAgICAgICAgIHYucmVwYWludFZpZXdSZWN0
YW5nbGUodmlld0hhc0NvbXBvc2l0ZWRMYXllciAmJiB2LmxheWVyKCktPnRyYW5zZm9ybSgpID8g
TGF5b3V0UmVjdCh2LmxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEZv
clBhaW50aW5nKHIsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpKSA6IHIpOworICAg
ICAgICAgICAgdi5yZXBhaW50Vmlld1JlY3RhbmdsZSh2aWV3SGFzQ29tcG9zaXRlZExheWVyICYm
IHYubGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBMYXlvdXRSZWN0KHYubGF5ZXIoKS0+dHJhbnNmb3Jt
KCktPm1hcFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhyLCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKSkgOiByKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTEzNTYsMTYgKzEzNTYsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRTbG93
UmVwYWludE9iamVjdCgpIGNvbnN0CiAgICAgLy8gdGhlcmUgaXMsIHRoZW4gd2Ugc2hvdWxkIG5v
dCBhbGxvdyBwYWludGluZyB0byBjbGlwIHRvIHRoZSBsYXllciBzaXplLgogICAgIGlmIChpc1Jv
b3QoKSB8fCBpc0JvZHkoKSkgewogICAgICAgICBzaG91bGRDbGlwVG9MYXllciA9ICF2aWV3LT5m
cmFtZVZpZXcoKS5oYXNFeHRlbmRlZEJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcoKTsKLSAgICAg
ICAgcmVwYWludFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHZpZXctPmJhY2tncm91bmRSZWN0
KHZpZXcpKTsKKyAgICAgICAgcmVwYWludFJlY3QgPSBzbmFwcGVkSW50UmVjdCh2aWV3LT5iYWNr
Z3JvdW5kUmVjdCh2aWV3KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGFpbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyKSk7CisgICAgICAgIHJlcGFpbnRSZWN0ID0gc25hcHBlZEludFJlY3QoY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwogCiAgICAgcmVwYWludFVz
aW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBzaG91bGRDbGlwVG9M
YXllcik7CiB9CiAKIEludFJlY3QgUmVuZGVyT2JqZWN0OjpwaXhlbFNuYXBwZWRBYnNvbHV0ZUNs
aXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewotICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKKyAgICByZXR1cm4gc25hcHBlZElu
dFJlY3QoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCiBib29sIFJlbmRlck9i
amVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IGNiOGIxYmE2ODI4Mjc2N2UzNzNm
Nzk5YjhlNDYwOGQ3Y2RlOWMyMjUuLjI0MjVmMDYyMzFmZTg5MTViZTg5MTZkZTkyMTI3YWMxZGUx
MDIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVz
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApA
QCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbAogICAgICAgICBmcmFtZS5z
ZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJh
bWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVT
aXplID0gdGhlbWUoKS5wcm9ncmVzc0JhclJlY3RGb3JCb3VuZHMoKnRoaXMsIHBpeGVsU25hcHBl
ZEludFJlY3QoZnJhbWUpKS5zaXplKCk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgp
LnByb2dyZXNzQmFyUmVjdEZvckJvdW5kcygqdGhpcywgc25hcHBlZEludFJlY3QoZnJhbWUpKS5z
aXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDk3NGU3NzJj
NzM5NGU2Mjc2MDZhZDY1NWY0YzQ2YzUwZTNhMGM3MzcuLjQ1ZTE3MWE2NGU4ZDYwNmU0Y2NkZWY0
MTFiZjllOTI5ZjhlN2E3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAg
ICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVjdGlvblBh
aW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5n
UmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxl
Y3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDEwN2M1YzEzZjU1M2VhYmQzMzA1MjMzYjFm
YTNhZGI2YjMyNjk5MTIuLjY2ZGZkMmY2ODA2Y2JkMWM4MTBmYjVmNjJiNjlhZmRlOTQ0NjkwYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5j
cHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50
b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0CiAgICAgfQogICAg
IAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCi0gICAgUGFpbnRJbmZvIHBhaW50SW5mbyhncmFw
aGljc0NvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QocmVjdCksIFBhaW50UGhhc2VCbG9ja0Jh
Y2tncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwpOworICAgIFBhaW50SW5mbyBwYWludEluZm8o
Z3JhcGhpY3NDb250ZXh0LCBzbmFwcGVkSW50UmVjdChyZWN0KSwgUGFpbnRQaGFzZUJsb2NrQmFj
a2dyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7CiAgICAgcGFpbnQocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNr
Z3JvdW5kczsKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDhmMDg5OWYxNzIw
ODIwOGY5MjBhNTkxMmU5ZGIyNzVhY2E5MmY2NjUuLmRmZmY3NWNkYTY2MmQzYTZhMDdhZWU3OWY0
YTA0NTZkOTljZDg2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6
OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhu
YW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJjaFBvcHVwLT5wb3B1
cE1lbnUoKS0+c2hvdyhwaXhlbFNuYXBwZWRJbnRSZWN0KGFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkpLCAmdmlldygpLmZyYW1lVmlldygpLCAtMSk7CisgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBN
ZW51KCktPnNob3coc25hcHBlZEludFJlY3QoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSksICZ2
aWV3KCkuZnJhbWVWaWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6aGlk
ZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCmluZGV4IDc2YzZiMDc0N2U3YjZjZDNhYmQyYzM0ZmVkZTA0MDc5ODY0
NTk4MDcuLjc5NzhmZTIxZTRkY2Q2ZDc5ZmI0YjRmYjQwMDkyZTkyMWZhYmNmMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgY29udGVu
dExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwg
Y29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpOworICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0
KTsKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdo
dCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBhYWU1NWE2OWQxNjI1NWM3OWYxNDVkMTgzOWJkODIx
MDJhMjg2YmFmLi4wZjJiNzRiNGY3ZWEwZTc3MDc1M2FkZjRlMGYyNTM0Y2VkZDBlZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTE2OSw3
ICsxMTY5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpbnQgbGVmdFdpZHRoID0g
bGVmdFZhbC53aWR0aCgpOwogICAgIGludCByaWdodFdpZHRoID0gcmlnaHRWYWwud2lkdGgoKTsK
IAotICAgIEludFJlY3QgYm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0
LngoKSAtIGxlZnRXaWR0aCAvIDIsCisgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gc25hcHBlZElu
dFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC55
KCkgLSB0b3BXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC53aWR0aCgpICsgbGVmdFdpZHRo
IC8gMiArIChyaWdodFdpZHRoICsgMSkgLyAyLAogICAgICAgICBwYWludFJlY3QuaGVpZ2h0KCkg
KyB0b3BXaWR0aCAvIDIgKyAoYm90dG9tV2lkdGggKyAxKSAvIDIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggYWU1YjBhNjc2OWNiOGIz
YWViMDBkY2UyYWNhYTFiMWU4NjE3Zjg0Zi4uOGIwZDBlZmJiM2Q1ZmI2MGVjNWE4MjE3OGEyMzMx
NDRmOGI1MjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRk
Rm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAg
IGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBl
ZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVu
ZChzbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogUmVuZGVy
T2JqZWN0KiBSZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9v
bCByZWxheW91dENoaWxkcmVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCA0YTM5ZTI1NzdhOTJkZmJi
MjAxZmZlZmEzMjcyNWE3ODM1NzIxNTI0Li41OTU3ZWU3YTY4YjkyYmRiYzI2ZDAyY2FiMDBiZmM5
ZGI5MmFkNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JgogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0aGUgY29v
cmRzIHVzZWQgZm9yIHBhaW50aW5nIHRoZSBjb250ZW50CiAgICAgICAgIGNvbnRlbnRzUmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKLSAgICAgICAgdGhlbWUoKS5wYWludENh
cHNMb2NrSW5kaWNhdG9yKCp0aGlzLCBwYWludEluZm8sIHBpeGVsU25hcHBlZEludFJlY3QoY29u
dGVudHNSZWN0KSk7CisgICAgICAgIHRoZW1lKCkucGFpbnRDYXBzTG9ja0luZGljYXRvcigqdGhp
cywgcGFpbnRJbmZvLCBzbmFwcGVkSW50UmVjdChjb250ZW50c1JlY3QpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGZlMjc5YWIzODFh
MzRkNDYxNDQ5NmI0NmFhOTFlZjBlMmZkNGQ0OTguLjM4MzZlZDgyNTAzMDlhMmE0MGQ5NmViODRk
MGZiNjM0ZDY3MTZhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMjY3LDggKzI2Nyw4IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlcywgY29uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvLnN0eWxlKCkuYXBwZWFyYW5j
ZSgpOwotICAgIEludFJlY3QgaW50ZWdyYWxTbmFwcGVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3Qocik7Ci0gICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBw
ZWRGb3JQYWludGluZyhyLCBvLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAg
SW50UmVjdCBpbnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3Qocik7CisgICAgRmxv
YXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIs
IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogI2lmIFVTRShORVdfVEhFTUUp
CiAgICAgc3dpdGNoIChwYXJ0KSB7CkBAIC00MDAsNyArNDAwLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZTo6cGFpbnRCb3JkZXJPbmx5KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICBVTlVTRURfUEFSQU0ocik7CiAgICAgcmV0dXJuIG8uc3R5bGUoKS5hcHBl
YXJhbmNlKCkgIT0gTm9Db250cm9sUGFydDsKICNlbHNlCi0gICAgRmxvYXRSZWN0IGRldmljZVBp
eGVsU25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyLCBvLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRmxvYXRSZWN0IGRldmljZVBpeGVsU25hcHBlZFJl
Y3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHIsIG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKICAgICAvLyBDYWxsIHRoZSBhcHByb3ByaWF0ZSBwYWludCBtZXRob2QgYmFzZWQg
b2ZmIHRoZSBhcHBlYXJhbmNlIHZhbHVlLgogICAgIHN3aXRjaCAoby5zdHlsZSgpLmFwcGVhcmFu
Y2UoKSkgewogICAgIGNhc2UgVGV4dEZpZWxkUGFydDoKQEAgLTQ1MCw4ICs0NTAsOCBAQCBib29s
IFJlbmRlclRoZW1lOjpwYWludERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IGludGVncmFs
U25hcHBlZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOwotICAgIEZsb2F0UmVjdCBk
ZXZpY2VQaXhlbFNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcocmVjdCwgcmVu
ZGVyZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBJbnRSZWN0IGludGVn
cmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBGbG9hdFJlY3QgZGV2
aWNlUGl4ZWxTbmFwcGVkUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgcmVuZGVy
ZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIENhbGwgdGhlIGFw
cHJvcHJpYXRlIHBhaW50IG1ldGhvZCBiYXNlZCBvZmYgdGhlIGFwcGVhcmFuY2UgdmFsdWUuCiAg
ICAgc3dpdGNoIChyZW5kZXJlci5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGEwOTBkOWFmMDkyODNkOGRlYzk3
NjNkZGJjNTc2MjEyOWE5ZTcxN2EuLjk3ZDcyYjkyNzM1NDI2YzAzZGQyNmQwOTFhNGI1NWIzZWUz
MTYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAg
LTE4MzgsNyArMTgzOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQ
bHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBjb250ZW50TG9j
YXRpb24ubW92ZShyZW5kZXJCbG9jay5ib3JkZXJMZWZ0KCkgKyByZW5kZXJCbG9jay5wYWRkaW5n
TGVmdCgpLCByZW5kZXJCbG9jay5ib3JkZXJUb3AoKSArIHJlbmRlckJsb2NrLnBhZGRpbmdUb3Ao
KSk7CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7
Ci0gICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7Cisg
ICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlY3QpOwogICAgIGlmIChh
bGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTE4ODQsNyArMTg4NCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QKIAogICAgIExheW91dFNpemUgcGx1Z2luU2l6ZShwbHVnSW5SZW5kZXJlci0+Y29u
dGVudFdpZHRoKCksIHBsdWdJblJlbmRlcmVyLT5jb250ZW50SGVpZ2h0KCkpOwogICAgIExheW91
dFJlY3QgcGx1Z2luUmVjdChzbmFwc2hvdEFic1BvcywgcGx1Z2luU2l6ZSk7Ci0gICAgSW50UmVj
dCBhbGlnbmVkUGx1Z2luUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVjdCk7Cisg
ICAgSW50UmVjdCBhbGlnbmVkUGx1Z2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHBsdWdpblJlY3Qp
OwogCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1
Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA2ZTk1MTllMzk5MGIx
YWU2NDgwNWQ5NDAzMjYzYTAyOTYyMzhiODMyLi40MDExNGQ5ZDM0N2UxNTUwZTI4YTJkNWZlNmVj
MDM5ZTJhZWQ1M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCkBAIC01ODcsMTAgKzU4NywxMCBAQCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0U3Ry
ZWFtJiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgYmFja2dyb3VuZENsaXBSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb3V0bGluZUNsaXBS
ZWN0LAogICAgICAgICAgICAgICAgICAgTGF5ZXJQYWludFBoYXNlIHBhaW50UGhhc2UgPSBMYXll
clBhaW50UGhhc2VBbGwsIGludCBpbmRlbnQgPSAwLCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhh
dmlvciA9IFJlbmRlckFzVGV4dEJlaGF2aW9yTm9ybWFsKQogewotICAgIEludFJlY3QgYWRqdXN0
ZWRMYXlvdXRCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyQm91bmRzKTsKLSAgICBJ
bnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChi
YWNrZ3JvdW5kQ2xpcFJlY3QpOwotICAgIEludFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QoY2xpcFJlY3QpOwotICAgIEludFJlY3QgYWRqdXN0ZWRPdXRsaW5lQ2xp
cFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG91dGxpbmVDbGlwUmVjdCk7CisgICAgSW50UmVj
dCBhZGp1c3RlZExheW91dEJvdW5kcyA9IHNuYXBwZWRJbnRSZWN0KGxheWVyQm91bmRzKTsKKyAg
ICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBSZWN0ID0gc25hcHBlZEludFJlY3QoYmFj
a2dyb3VuZENsaXBSZWN0KTsKKyAgICBJbnRSZWN0IGFkanVzdGVkQ2xpcFJlY3QgPSBzbmFwcGVk
SW50UmVjdChjbGlwUmVjdCk7CisgICAgSW50UmVjdCBhZGp1c3RlZE91dGxpbmVDbGlwUmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG91dGxpbmVDbGlwUmVjdCk7CiAKICAgICB3cml0ZUluZGVudCh0cywg
aW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXgg
NzcxNWQwNDljN2JkMDJkZjIxNWM4N2FhODMxMWM2ZjI3NjJmZTlmZC4uNWM5NjA2ZmI2OGM0ZWFm
ZWE3NjhlNzAxZmEzNmM5YjM0NTBjYjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgSW50UmVjdCBSZW5kZXJWaWRlbzo6dmlk
ZW9Cb3goKSBjb25zdAogICAgIGlmICh2aWRlb0VsZW1lbnQoKS5zaG91bGREaXNwbGF5UG9zdGVy
SW1hZ2UoKSkKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IG1fY2FjaGVkSW1hZ2VTaXplOwogCi0g
ICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVwbGFjZWRDb250ZW50UmVjdChpbnRyaW5z
aWNTaXplKSk7CisgICAgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KHJlcGxhY2VkQ29udGVudFJlY3Qo
aW50cmluc2ljU2l6ZSkpOwogfQogCiBib29sIFJlbmRlclZpZGVvOjpzaG91bGREaXNwbGF5Vmlk
ZW8oKSBjb25zdApAQCAtMTkxLDkgKzE5MSw5IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAg
ICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwg
cmVjdCk7CiAgICAgZWxzZSBpZiAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgIG1lZGlhUGxh
eWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpKTsKKyAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KGNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICBlbHNlCi0gICAgICAgIG1l
ZGlhUGxheWVyLT5wYWludChjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAg
ICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KGNvbnRleHQsIHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsK
IH0KIAogdm9pZCBSZW5kZXJWaWRlbzo6bGF5b3V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCBkMjcyNTI4MmRlZDViMjI0MDRjZGVkM2ZjNzg4ODU4YjYzOTI1
MzFhLi5iNWNiMTEzMzQ1ZWU1YzRkNTQ4NjhlOTE0NWRhMDZiMjBjZjZiNDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50
UmVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZyYW1lVmlldygpLmFk
ZFRyYWNrZWRSZXBhaW50UmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyZXBhaW50UmVjdCwg
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZnJhbWVWaWV3KCkuYWRkVHJh
Y2tlZFJlcGFpbnRSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVwYWludFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgLy8gRklYTUU6IGNvbnZlcnQgYWxs
IHJlcGFpbnQgcmVjdCBkZXBlbmRlbmNpZXMgdG8gRmxvYXRSZWN0LgogICAgIEludFJlY3QgZW5j
bG9zaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVwYWludFJlY3QpOwpAQCAtNzA3LDcgKzcw
Nyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAgICAgICAgIAogICAgIC8vIEFwcGx5IG91
ciB0cmFuc2Zvcm0gaWYgd2UgaGF2ZSBvbmUgKGJlY2F1c2Ugb2YgZnVsbCBwYWdlIHpvb21pbmcp
LgogICAgIGlmICghcmVwYWludENvbnRhaW5lciAmJiBsYXllcigpICYmIGxheWVyKCktPnRyYW5z
Zm9ybSgpKQotICAgICAgICByZWN0ID0gTGF5b3V0UmVjdChsYXllcigpLT50cmFuc2Zvcm0oKS0+
bWFwUmVjdChwaXhlbFNuYXBwZWRGb3JQYWludGluZyhyZWN0LCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKSk7CisgICAgICAgIHJlY3QgPSBMYXlvdXRSZWN0KGxheWVyKCktPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKSkpOwogfQogCiBib29sIFJlbmRlclZpZXc6OmlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBjb25zdApAQCAtNzIwLDcgKzcyMCw3IEBAIGJvb2wgUmVuZGVy
Vmlldzo6aXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIGNvbnN0CiAKIHZvaWQgUmVuZGVy
Vmlldzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVs
U25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUoKSkpOworICAg
IHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbGF5ZXIoKS0+
c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdApAQCAtNzUwLDcgKzc1MCw3IEBA
IEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVk
SW50UmVjdChzZWxSZWN0KTsKKyAgICByZXR1cm4gc25hcHBlZEludFJlY3Qoc2VsUmVjdCk7CiB9
CiAKIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlvbkJvdW5kcyhjb25zdCBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29u
c3QKQEAgLTExMzAsNyArMTEzMCw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6dW5zY2FsZWREb2N1
bWVudFJlY3QoKSBjb25zdAogewogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0KGxheW91dE92
ZXJmbG93UmVjdCgpKTsKICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dSZWN0KTsKLSAg
ICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOworICAgIHJldHVybiBz
bmFwcGVkSW50UmVjdChvdmVyZmxvd1JlY3QpOwogfQogCiBib29sIFJlbmRlclZpZXc6OnJvb3RC
YWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCmluZGV4IGNiOWY0NTcxODkxNWM1OWY2ODA3Y2MzZDhhMjk0OTRmZmU2Mjc0MDAu
LmZjYzk4ZjBhNDI3MDhmZWNkM2YzNjMxMjE2OTU5Njg5MmVlNGJjNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVJlbmRlckNvdW50ZXIoKSB7IEFTU0VSVChtX3JlbmRlckNvdW50ZXJDb3VudCA+
IDApOyBtX3JlbmRlckNvdW50ZXJDb3VudC0tOyB9CiAgICAgYm9vbCBoYXNSZW5kZXJDb3VudGVy
cygpIHsgcmV0dXJuIG1fcmVuZGVyQ291bnRlckNvdW50OyB9CiAgICAgCi0gICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFw
cGVkTGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gc25hcHBlZEludFJlY3QobGF5
b3V0T3ZlcmZsb3dSZWN0KCkpOyB9CiAKICAgICBJbWFnZVF1YWxpdHlDb250cm9sbGVyJiBpbWFn
ZVF1YWxpdHlDb250cm9sbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKaW5kZXggMWZmODNhOGE1ZWU1M2U1M2U1MjI3MTNkZmFlMDQxYzU4YjIwNzY1My4u
M2NiMTk4YzFmZDllZTcxNTg5YTEzYzA2MmM3NjE3ZTY3ZTVmMzQ0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFJl
bmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdp
ZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zm
c2V0KTsKICAgICB9Ci0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOworICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdl
dFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNs
YXRlKC13aWRnZXRQYWludE9mZnNldCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVy
IHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5w
cmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJz
b2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSks
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAg
fQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAKaW5kZXggMjY2ODMzYWJhM2NiNjk4MzBjMmUzYzY5ZjU2Mjc2ZjVkYzQ1MTgyZi4uMWNmZGYz
MTYxMWZhNTgyNjhhZDJjODQ0OThjZGI2NDZjZDUxODk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNDks
NyArNDksNyBAQCBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiBzdGF0aWMgdm9pZCBwYWlu
dERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheW91dFJlY3QgYm9yZGVy
UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGJvcmRlclJlY3Qu
bW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBJbnRSZWN0IHNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChib3JkZXJSZWN0KTsKKyAgICBJbnRSZWN0IHNuYXBwZWRSZWN0ID0gc25hcHBl
ZEludFJlY3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKHNuYXBwZWRSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXgg
NGJmOGM2ZTVkNGViZjYxNzk1ZWY4ODk0MmUwMjZlN2IyOTU0NjgyZC4uODJmMmEyODZhMDhiZDhk
OWFlMWM1MDQ1NDA1OGFmZmY2YjlkNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKQEAgLTE3Niw4ICsxNzYsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBM
YQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFn
ZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VSLCBjb25z
dCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgbWFy
Z2luKQogewotICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbWFn
ZVIpOwotICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobWFyZ2lu
Uik7CisgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOworICAg
IEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8g
aW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2lu
UmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6
ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcAppbmRleCAwY2M0ZTA3ZDc4ZjE3YmQwYWRlYzE2NjExOGU5OTUyMjY5
ZTcxY2MzLi5mYzdjODA0OGMyODIzMTVjZmY2MWFkZTM2ZTU4YjgyOTZjNjBhNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpv
dXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGFkanVz
dFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KGJveCk7CiAKICAgICBGbG9hdFF1YWQgY29udGFpbmVy
UmVsYXRpdmVRdWFkID0gbG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRSZWN0KGJveCksIHJlcGFp
bnRDb250YWluZXIpOwotICAgIHJldHVybiBMYXlvdXRSZWN0KHBpeGVsU25hcHBlZEZvclBhaW50
aW5nKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRpdmVRdWFkLmJvdW5kaW5nQm94KCkpLCBkb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QoY29udGFpbmVyUmVsYXRpdmVRdWFkLmJvdW5k
aW5nQm94KCkpLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAogdm9pZCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAwMjhiMDc5Yjgy
ZTVkMDUwOTNhZGJkYmM4ZmQ3NjM5NmM2MTZmNjlhLi5mYjIyOWE0OTNhMTdiYWQ0OWQxZTQ2ZTM2
N2FhOTdmNGYxZTVjYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dAogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAgICAgaWYgKHNob3VsZEFw
cGx5Vmlld3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAo
cGl4ZWxTbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29u
dGV4dC0+Y2xpcChzbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBj
dXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKIAogICAgIC8vIENvbnZlcnQgZnJv
bSBjb250YWluZXIgb2Zmc2V0cyAoaHRtbCByZW5kZXJlcnMpIHRvIGEgcmVsYXRpdmUgdHJhbnNm
b3JtIChzdmcgcmVuZGVyZXJzKS4KICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBvdXIgcGFpbnQgY29u
dGFpbmVyJ3MgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gb3VyIGxvY2FsIGNvb3Jkcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGIy
MTExOTZmZDJiNWM1OTdmMmU1ZTE3MDUwMTRlMjFkOTcwN2IwNGEuLmQ0MGJhYzMyYjYzZWY2MWRl
YzVlNWIzY2YzYzNjODYzNzM2YzlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIEZsb2F0UmVj
dCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNvbnN0IFNW
R1RleHRGcmFnbWVudCYKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0
KHRleHRPcmlnaW4sIExheW91dFNpemUoMCwgZnJhZ21lbnQuaGVpZ2h0ICogc2NhbGluZ0ZhY3Rv
cikpOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQp
OwogICAgIHNjYWxlZEZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rp
b25SZWN0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgRmxvYXRSZWN0IHNuYXBw
ZWRTZWxlY3Rpb25SZWN0ID0gZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxl
Y3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVu
Lmx0cigpKTsKKyAgICBGbG9hdFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QgPSBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIo
KS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSk7CiAgICAgaWYgKHNj
YWxpbmdGYWN0b3IgPT0gMSkKICAgICAgICAgcmV0dXJuIHNuYXBwZWRTZWxlY3Rpb25SZWN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDM4ODI0ZDJhNTZiMjczMWU1
Yzc2YjUyNDQxYjIyMGQ1YWRjY2NmYy4uMjZjY2E0NGFiMGNmNmM3NWQwOWQ2ZjFmMWQ5MzBmYmRl
OGE4MDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzA2MCw3ICsz
MDYwLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgICAg
ICAgICAgW3JlZ2lvblZhbHVlcyByZWxlYXNlXTsKICAgICAgICAgfQogCi0gICAgICAgIFdlYkRh
c2hib2FyZFJlZ2lvbiAqd2ViUmVnaW9uID0gW1tXZWJEYXNoYm9hcmRSZWdpb24gYWxsb2NdIGlu
aXRXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6cGl4ZWxT
bmFwcGVkSW50UmVjdChyZWdpb24uY2xpcCkgdHlwZTp0eXBlXTsKKyAgICAgICAgV2ViRGFzaGJv
YXJkUmVnaW9uICp3ZWJSZWdpb24gPSBbW1dlYkRhc2hib2FyZFJlZ2lvbiBhbGxvY10gaW5pdFdp
dGhSZWN0OnNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6c25hcHBlZEludFJlY3Qo
cmVnaW9uLmNsaXApIHR5cGU6dHlwZV07CiAgICAgICAgIFtyZWdpb25WYWx1ZXMgYWRkT2JqZWN0
OndlYlJlZ2lvbl07CiAgICAgICAgIFt3ZWJSZWdpb24gcmVsZWFzZV07CiAgICAgfQpAQCAtMzkx
Myw3ICszOTEzLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQog
ICAgIE5TTXV0YWJsZUFycmF5KiByZWN0c0FycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpyZXBhaW50UmVjdHMuc2l6ZSgpXTsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVwYWludFJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBbcmVj
dHNBcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRS
ZWN0KExheW91dFJlY3QocmVwYWludFJlY3RzW2ldKSldXTsKKyAgICAgICAgW3JlY3RzQXJyYXkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6c25hcHBlZEludFJlY3QoTGF5b3V0UmVj
dChyZXBhaW50UmVjdHNbaV0pKV1dOwogCiAgICAgcmV0dXJuIFtyZWN0c0FycmF5IGF1dG9yZWxl
YXNlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
CmluZGV4IDRjOWYyNTI0YTk0Y2I1OTAwYTM3YzgwOThjMzgwOTdiNjA1YjUwNjkuLmNkZGRjODE2
YWJiODE3ZTgzNTc3YjkxMGM2MzNlMzBhMGVlNjA1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFw
c2hvdE9wdGlvbnMgb3B0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTGF5b3V0UmVjdCB0b3BM
ZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0
KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3Qg
cGFpbnRpbmdSZWN0ID0gc25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3Qo
dG9wTGV2ZWxSZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobV9ub2RlLmdl
dCgpKTsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gaW1hZ2VGb3JSZWN0KGZyYW1lVmll
dywgcGFpbnRpbmdSZWN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMmEwNmU2MGM0MTBhOTk0YWY1NDY3Nzg0NGRlZTIw
M2MyMDMyNDVkLi5iNmM3ZTBkODExNDU1YzZlODA1N2ZjMDBkMWM4MWI0NjJjMzk1ODhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzA1
LDcgKzE3MDUsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUo
V2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBzbmFwc2hv
dFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290
UmVjdCh0b3BMZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsK
IAogICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IDE7CiAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemUg
PSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CmluZGV4IDE2ZjcyMjIyNTFmODQ4MGYwNjY1Y2E3MDhiY2JkMzljNDVlZWQzMGQuLmZiNjhiN2Ex
MDI3ZmYzZjI0MmE4YzFkOGM4YmMwYmMxYWZjMmEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIubW0KQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCkKICAgICAgICAgRnJhbWVWaWV3KiB2
aWV3Rm9yUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS0+b3duZXJEb2N1bWVudCgpLnZpZXcoKTsKIAog
ICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cykgewotICAg
ICAgICAgICAgSW50UmVjdCBjdXJyZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7
CisgICAgICAgICAgICBJbnRSZWN0IGN1cnJlbnRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7
CiAgICAgICAgICAgICBjdXJyZW50UmVjdC5zZXRMb2NhdGlvbihtYWluRnJhbWVWaWV3LndpbmRv
d1RvQ29udGVudHModmlld0ZvclJhbmdlLT5jb250ZW50c1RvV2luZG93KGN1cnJlbnRSZWN0Lmxv
Y2F0aW9uKCkpKSk7CiAgICAgICAgICAgICBjZ1JlY3RzLmFwcGVuZCgoQ0dSZWN0KWN1cnJlbnRS
ZWN0KTsKICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>