<?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>127808</bug_id>
          
          <creation_ts>2014-01-28 15:36:02 -0800</creation_ts>
          <short_desc>Subpixel Rendering: Rename pixelSnappedIntRect* to pixelSnappedRect*.</short_desc>
          <delta_ts>2014-01-30 15:33:27 -0800</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>INVALID</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>127524</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973162</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 15:36:02 -0800</bug_when>
    <thetext>as a preparation for changing the return type to FloatRect and deciding which call sites need to stick to integral snapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973167</commentid>
    <comment_count>1</comment_count>
      <attachid>222515</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 15:42:07 -0800</bug_when>
    <thetext>Created attachment 222515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973193</commentid>
    <comment_count>2</comment_count>
      <attachid>222515</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 16:05:08 -0800</bug_when>
    <thetext>Comment on attachment 222515
Patch

ews testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973255</commentid>
    <comment_count>3</comment_count>
      <attachid>222542</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-01-28 18:50:17 -0800</bug_when>
    <thetext>Created attachment 222542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974068</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-01-30 15:33:13 -0800</bug_when>
    <thetext>unnecessary noise.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222515</attachid>
            <date>2014-01-28 15:42:07 -0800</date>
            <delta_ts>2014-01-28 18:50:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127808-20140128154211.patch</filename>
            <type>text/plain</type>
            <size>131174</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkYmNhZjVlYzkwZTNl
NmMxZjUzNDRiOGE3NTFhNzA5MWMwZDZlNi4uMjQzOWY0NDVhNmFlMThhNjM0MzBmNGNiMjBlZGVk
YzBmY2M2OTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMiBAQAorMjAxNC0wMS0yOCAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIFJlbmRlcmlu
ZzogUmVuYW1lIHBpeGVsU25hcHBlZEludFJlY3QqIHRvIHBpeGVsU25hcHBlZFJlY3QqLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBwcmVw
YXJhdGlvbiBmb3IgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIHRvIEZsb2F0UmVjdCBhbmQKKyAg
ICAgICAgZGVjaWRpbmcgd2hpY2ggY2FsbCBzaXRlIHN0aWxsIG5lZWQgdG8gZG8gaW50ZWdyYWwg
c25hcHBpbmcuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGl4ZWxTbmFwcGVkRWxlbWVudFJlY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZHNGb3JWaXNp
YmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
Q29tcG9uZW50R2V0RXh0ZW50cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVJ
bWFnZUdldEltYWdlUG9zaXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QWN0aXZhdGlvblBvaW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlGcmFtZV0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlv
bl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5U2hvd0NvbnRleHRNZW51XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4
dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBib3VuZGluZ0JveFdp
dGhPd25lcjpdKToKKyAgICAgICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZFdp
dGhPd25lcjpdKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkVHJhbnNmb3JtKToKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdCk6CisgICAg
ICAgICogZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRnJh
bWVTZWxlY3Rpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90
aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6
cGFpbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OnVwZGF0ZVNpemVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90
Tm9kZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6d2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6Y29udmVydEZyb21SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KToKKyAg
ICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9y
UmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnBp
eGVsU25hcHBlZFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6cGl4ZWxTbmFwcGVkUmVjdEZyb21FZGdlcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENvbHVtbkNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRp
bmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNS
aW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dFJ1bnNBbmRGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBpeGVsU25hcHBlZEZyYW1lUmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRO
aW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNN
YXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGbGF0dGVuaW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5w
dXRTcGVlY2g6OnBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRv
UGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9W
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xz
Rm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxk
TGF5ZXJJbnRvQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVz
dFJlc2l6ZXJJbkZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRlbnRzUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpiYWNrZ3JvdW5kQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUlu
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1Jp
bmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJh
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5k
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1ldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjp1cGRhdGVMb2dp
Y2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludFJlY3Rh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBpeGVsU25hcHBlZEFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNh
bEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpzaG93UG9w
dXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFw
c2hvdHRlZFBsdWdpbk92ZXJsYXkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnZpZGVvQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3Rhbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3
QW5kQ29tcG9zaXRlZExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVjdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludERlYnVnQm9yZGVycyk6CisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3Jl
YXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisKIDIwMTQtMDEtMjggIE1h
cmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTI3NzY3PiBEaXNhYmxlIHNvbWUgZGVwcmVjYXRpb24gd2FybmluZ3MgdG8gZml4IHRoZSBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2NjE4MDEyYzg1OGU4ZjI4MzAyZWE1Y2QyNzk1Y2Q1
NmRjMmFjNmQ3Li5iMTU3NTJjMWE5MjQ1N2Q0YjcwZDQyODdiYmVkYTAyMjdlZmMxODI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDEtMjggIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdWJwaXhlbCBSZW5kZXJpbmc6IFJlbmFtZSBw
aXhlbFNuYXBwZWRJbnRSZWN0KiB0byBwaXhlbFNuYXBwZWRSZWN0Ki4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzgwOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcHJlcGFyYXRpb24gZm9y
IGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSB0byBGbG9hdFJlY3QgYW5kCisgICAgICAgIGRlY2lk
aW5nIHdoaWNoIGNhbGwgc2l0ZSBzdGlsbCBuZWVkIHRvIGRvIGludGVncmFsIHNuYXBwaW5nLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZGFzaGJvYXJkUmVnaW9uc10pOgorICAgICAg
ICAoLVtXZWJWaWV3IHRyYWNrZWRSZXBhaW50UmVjdHNdKToKKwogMjAxNC0wMS0yOCAgTWFyayBS
b3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
Mjc3Njc+IERpc2FibGUgc29tZSBkZXByZWNhdGlvbiB3YXJuaW5ncyB0byBmaXggdGhlIGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGJlOGZjMGI1ZDIwMjkxNzNmZWU5ZmQ1NzI2MTQ3Nzk4NWI5OTczNTIu
LmQ2NWJhOGU4YzQwNjVhYWZjMGZkZTc2MjZlZTQ2NWM5MTY5MTBkMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxNC0wMS0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN1YnBpeGVsIFJlbmRlcmluZzogUmVuYW1lIHBpeGVsU25hcHBlZEludFJl
Y3QqIHRvIHBpeGVsU25hcHBlZFJlY3QqLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBwcmVwYXJhdGlvbiBmb3IgY2hhbmdpbmcgdGhlIHJl
dHVybiB0eXBlIHRvIEZsb2F0UmVjdCBhbmQKKyAgICAgICAgZGVjaWRpbmcgd2hpY2ggY2FsbCBz
aXRlIHN0aWxsIG5lZWQgdG8gZG8gaW50ZWdyYWwgc25hcHBpbmcuCisKKyAgICAgICAgTm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKwogMjAxNC0wMS0yOCAgTWFyayBS
b3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
Mjc3Njc+IERpc2FibGUgc29tZSBkZXByZWNhdGlvbiB3YXJuaW5ncyB0byBmaXggdGhlIGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKaW5kZXggYzNlNzk0NjI2ZWE3MDc2MWNiNjcwMjI1YTUzMDg2MTE1Nzk5ODEyYi4u
OTYwN2E5Zjg2ZTdmNmYzOWU3MzhjM2ZmZjc4NjEzMTM2NWNiYmU1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0x
ODg0LDggKzE4ODQsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBj
b25zdAogICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvdXRlciA9IG9iamVjdHNb
aV07CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGlubmVyID0gb2JqZWN0c1tp
IC0gMV07CiAgICAgICAgIC8vIEZJWE1FOiB1bmNsZWFyIGlmIHdlIG5lZWQgTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdC4KLSAgICAgICAgY29uc3QgSW50UmVjdCBvdXRlclJlY3QgPSBpIDwg
bGV2ZWxzID8gcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRlci0+Ym91bmRpbmdCb3hSZWN0KCkpIDog
b3V0ZXItPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCktPnZpc2libGVDb250ZW50UmVj
dChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7Ci0gICAgICAg
IGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lci0+aXNB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5uZXItPnBhcmVudE9iamVjdCgpLT5ib3VuZGlu
Z0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIGNvbnN0IElu
dFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/IHBpeGVsU25hcHBlZFJlY3Qob3V0ZXItPmJv
dW5kaW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgp
LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpOworICAgICAgICBjb25zdCBJbnRSZWN0IGlubmVyUmVjdCA9IHBpeGVsU25hcHBl
ZFJlY3QoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJlbnRP
YmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkgOiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFvdXRlclJlY3QuaW50ZXJzZWN0cyhpbm5lclJlY3QpKSB7
CiAgICAgICAgICAgICBpc09uc2NyZWVuID0gZmFsc2U7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAogCiB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAogewotICAgIEludFJl
Y3Qgb2JqZWN0UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3hSZWN0KCkpOwor
ICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoYm91bmRpbmdCb3hSZWN0
KCkpOwogICAgIG9iamVjdFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQoKSk7CiAgICAgc2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggOTU5ZmJj
YTNiOTgyMmZkZGZlY2YxOWRiNDcwYzhkOWY3NGJjZWVmMC4uMDAyOGMzOTcwYjBlZTcwZmQ4MDM1
ZmI2ZDYxMDc0ZmNhZjUyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTY0MSw5ICs2NDEsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4g
TGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3Qo
KSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsg
fQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gcGl4ZWxTbmFwcGVkUmVjdChib3VuZGluZ0JveFJlY3QoKSk7IH0KICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCA9IDA7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBw
ZWRFbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoZWxlbWVu
dFJlY3QoKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEVsZW1lbnRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChlbGVtZW50UmVjdCgpKTsgfQogICAgIExheW91dFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCkuc2l6ZSgpOyB9CiAgICAgSW50
U2l6ZSBwaXhlbFNuYXBwZWRTaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudFJlY3QoKS5waXhl
bFNuYXBwZWRTaXplKCk7IH0KICAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDYwZDA4OTkxNzAyYWE3NmUxZDE5ZDg1ZmZhZjg2NTNiZjNl
NmNjMGIuLjNhMjliNmI4MmU1MDU3NDJlZWJmMGE0OGY3NzhkZTZiZTgxODIyYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNSZWFkT25seSgpIGNvbnN0CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAg
SW50UmVjdCBjb250ZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9yZW5kZXJlci0+YWJz
b2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOworICAgIEludFJlY3QgY29udGVudFJlY3QgPSBw
aXhlbFNuYXBwZWRSZWN0KG1fcmVuZGVyZXItPmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgp
KTsKICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QuCiAgICAgSW50UmVjdCB2aWV3UmVjdCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFt
ZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QpOwogICAgIHZpZXdSZWN0LmludGVyc2VjdChjb250ZW50UmVjdCk7CkBA
IC0xOTM3LDkgKzE5MzcsOSBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJv
dW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQbwogICAgIH0KICAgICAK
ICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIG1fcmVuZGVy
ZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50c1RvU2NyZWVuKHBpeGVsU25hcHBlZEludFJl
Y3Qob3VycmVjdCkpOworICAgIHJldHVybiBtX3JlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCku
Y29udGVudHNUb1NjcmVlbihwaXhlbFNuYXBwZWRSZWN0KG91cnJlY3QpKTsKICNlbHNlCi0gICAg
cmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qob3VycmVjdCk7CisgICAgcmV0dXJuIHBpeGVsU25h
cHBlZFJlY3Qob3VycmVjdCk7CiAjZW5kaWYKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZUNvbXBvbmVudC5jcHAKaW5kZXggYjkzZDhjMzlkNTE3YzRiOTNmZTA5OGJiMjBk
ZGNhZmQ0Yzg4N2RhNi4uODhmMDVhZjIyOTIxOTQwNDY2Njk1YTczNDI4YjhjMmJiNTZkZGU1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudEdldEV4dGVudHMo
QXRrQ29tcG9uZW50KiBjb21wb25lbnQsIGdpbnQqIHgKICAgICBnX3JldHVybl9pZl9mYWlsKEFU
S19JU19DT01QT05FTlQoY29tcG9uZW50KSk7CiAgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGNvbXBvbmVudCkpOwogCi0gICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3JlKGNvbXBvbmVudCktPmVsZW1lbnRSZWN0KCkp
OworICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoY29yZShjb21wb25lbnQpLT5l
bGVtZW50UmVjdCgpKTsKICAgICBjb250ZW50c1JlbGF0aXZlVG9BdGtDb29yZGluYXRlVHlwZShj
b3JlKGNvbXBvbmVudCksIGNvb3JkVHlwZSwgcmVjdCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSW1hZ2UuY3BwCmluZGV4IGJhYjc1OTk1YTVh
Y2EyZmE0Y2IwMTI4ZGViZjE2ZDM1NzhmYzA4ZDEuLjRkMmMwZjQxNTZhM2Q1ODg5NjUyNDIyNjgw
NGU5ZDQxOWIyNTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFn
ZVBvc2l0aW9uKEF0a0ltYWdlKiBpbWFnZSwgZ2ludCogeCwgZ2ludAogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoQVRLX0lNQUdFKGltYWdlKSk7CiAgICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGltYWdlKSk7CiAKLSAgICBJbnRSZWN0IHJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGNvcmUoaW1hZ2UpLT5lbGVtZW50UmVjdCgpKTsKKyAgICBJbnRS
ZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGNvcmUoaW1hZ2UpLT5lbGVtZW50UmVjdCgpKTsK
ICAgICBjb250ZW50c1JlbGF0aXZlVG9BdGtDb29yZGluYXRlVHlwZShjb3JlKGltYWdlKSwgY29v
cmRUeXBlLCByZWN0LCB4LCB5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCA5NGI0Nzg0MWQxZjE0NzQ0ZWY5ZTUyMDY3ZWMwNzVkODg3N2UwMTBlLi5k
MzNkMGEyOWRiYzk2MDMzNjkzOWIxMjBiYjFlMmE0N2RlZWZiMTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5n
ICpzdHJpbmcpCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAg
ICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAgIAotICAgIEludFJlY3QgcmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QobV9vYmplY3QtPmJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICBJbnRSZWN0
IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KG1fb2JqZWN0LT5ib3VuZGluZ0JveFJlY3QoKSk7CiAg
ICAgQ0dSZWN0IGNnUmVjdCA9IFtzZWxmIGNvbnZlcnRSZWN0VG9TY3JlZW5TcGFjZTpyZWN0XTsK
ICAgICByZXR1cm4gQ0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChjZ1JlY3QpLCBDR1JlY3RHZXRN
aWRZKGNnUmVjdCkpOwogfQpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5k
U3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcp
CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0
dXJuIENHUmVjdFplcm87CiAgICAgCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxT
bmFwcGVkUmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CiAgICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRSZWN0VG9TY3JlZW5TcGFjZTpyZWN0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQppbmRleCAwNTY1MjkxOTQ4MDE1ZmRjODM0ZTRkNDM5NDZiYWMzMWY1
YTM4NDI3Li4wYTlmODJjZGE2ZmRhODFmOThjNWE1MGMyMGM0YTc4NzJkYTZiZDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTY4Myw3ICsxNjgzLDcgQEAg
c3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCAqaW5mbywg
Y29uc3QgQ0dQYXRoRWxlbWVudCAqZWwKIAogLSAoTlNWYWx1ZSAqKXBvc2l0aW9uCiB7Ci0gICAg
SW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3Qo
KSk7CisgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChtX29iamVjdC0+ZWxlbWVu
dFJlY3QoKSk7CiAgICAgCiAgICAgLy8gVGhlIENvY29hIGFjY2Vzc2liaWxpdHkgQVBJIHdhbnRz
IHRoZSBsb3dlci1sZWZ0IGNvcm5lci4KICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQgPSBGbG9h
dFBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7CkBAIC0zMDI0LDcgKzMwMjQsNyBAQCBzdGF0
aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUp
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSW50UmVjdCByZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAgSW50
UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CiAg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsK
ICAgICAKICAgICAvLyBPbiBXSzIsIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIHNjcm9sbCBw
b3NpdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlL
aXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4
dGVuc2lvbnMubW0KaW5kZXggM2JhYmZhODZiOTk2NzNjZTJjMGNiNzFjZjhiOTMwYzMyZWFhODQz
NS4uMDFlOGM0NTUzYzk0YTA5YjMxYmMwNjE2ODM3YWNkNjVlMDg1NzEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTQx
OSw3ICs0MTksNyBAQCB1c2luZyBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb247CiAtIChDR1JlY3Qp
Ym91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCiB7CiAgICAgLy8gaWdub3Jl
cyB0cmFuc2Zvcm1zCi0gICAgcmV0dXJuIGFuT3duZXIgPyBwaXhlbFNuYXBwZWRJbnRSZWN0KGNv
cmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVj
dFplcm87CisgICAgcmV0dXJuIGFuT3duZXIgPyBwaXhlbFNuYXBwZWRSZWN0KGNvcmUoc2VsZikt
PmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVjdFplcm87CiB9
CiAKIC0gKFdLUXVhZClhYnNvbHV0ZVF1YWRXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCkBA
IC00MjcsNyArNDI3LDcgQEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIGlm
IChhbk93bmVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBFQ0xBSVIKICAgICAgICAgLy9XZWJDb3Jl
OjpGbG9hdFF1YWQgdGhlUXVhZCA9IGNvcmUoc2VsZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFu
T3duZXIpLT5yZW5kZXJlcigpKTsKLSAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5y
ZW5kZXJlcigpKSk7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBl
ZFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkp
OwogICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAgICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJl
Y3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1h
eFgoKSwgcmVjdC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkMmUwNTU0MjMzYmIyY2ZjNzg3M2FhZTFmN2UyZjg4
OTE1ZGFhOTZkLi44YmY5MDhjNDllZjE3ZGFjZWJhOGMwNzJhMWYxOTM5YmJkOTM2OWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRy
YW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTCiAKICAgICBJbnRS
ZWN0IGJveDsKICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAgIGJveCA9IHBpeGVs
U25hcHBlZEludFJlY3QodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5ib3JkZXJCb3hSZWN0KCkpOwor
ICAgICAgICBib3ggPSBwaXhlbFNuYXBwZWRSZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9y
ZGVyQm94UmVjdCgpKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3guc2l6ZSgpLCBSZW5kZXJTdHls
ZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkZmY0OWZmOTZiZTIz
NjM5MTM4MTM4YmIyMzk2OTk3OGYxMzU5YzlkLi4wZDI1NjAzMDcyZDA4YzMzNDkzYWQ0Y2I1ZDk4
ZjMzNjcwYTIyNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM2OCw5ICszNjgsOSBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7Ci0gICAg
SW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25h
cHBlZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJv
dW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChib3VuZGluZ0JveCgp
KTsgfQogICAgIExheW91dFJlY3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKLSAgICBJ
bnRSZWN0IHBpeGVsU25hcHBlZFJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJSZWN0KGlzUmVwbGFjZWQpKTsgfQorICAgIEludFJl
Y3QgcGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKSB7IHJldHVybiBwaXhl
bFNuYXBwZWRSZWN0KHJlbmRlclJlY3QoaXNSZXBsYWNlZCkpOyB9CiAKICAgICB1bnNpZ25lZCBu
b2RlSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3Np
dGlvbi5jcHAKaW5kZXggNGQ2MjhmOWRiNzQ2YTQ3ZTY5MGJiYTlhNjYxMjRmMmVlYTFhMzJkNi4u
ZGNkOTY2OGIxNjMwMTRhYzY1ZGEyZWFhYTc3MDBhMWI0Mjc2NTI1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSW50
UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lKSBjb25zdAogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIElu
dFJlY3QoKTsKIAotICAgIEludFJlY3QgbG9jYWxSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCht
X3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lk
dGhUb0VuZE9mTGluZSkpOworICAgIEludFJlY3QgbG9jYWxSZWN0ID0gcGl4ZWxTbmFwcGVkUmVj
dChtX3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSkpOwogICAgIHJldHVybiBsb2NhbFJlY3QgPT0gSW50UmVjdCgpID8g
SW50UmVjdCgpIDogbV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9j
YWxSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQppbmRleCBiYTRjMGNmOGFmNjlkN2Q4
OGIyYzJmMTU5ZDA3ZWU2ZmZlYzBlYjA2Li4yNWY5ZGVkZTgxOWIzNjFhM2E4YzIwMDU3MGI1OWE2
YzhjN2VhYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNl
bGVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVj
dGlvbk1hYy5tbQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlB
Y2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50UmVjdCBzZWxlY3Rpb25SZWN0ID0gYWJzb2x1dGVDYXJldEJvdW5kcygpOwotICAgIEludFJl
Y3Qgdmlld1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclZpZXctPnZpZXdSZWN0KCkp
OworICAgIEludFJlY3Qgdmlld1JlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KHJlbmRlclZpZXctPnZp
ZXdSZWN0KCkpOwogCiAgICAgc2VsZWN0aW9uUmVjdCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1Nj
cmVlbihzZWxlY3Rpb25SZWN0KTsKICAgICB2aWV3UmVjdCA9IGZyYW1lVmlldy0+Y29udGVudHNU
b1NjcmVlbih2aWV3UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDUxOGEzNDIzMzMwZDJkMjk2NDc5NDhlY2I2ZjllODBjYWFhMGM0ZDQuLmM2OGE2
NTAwZjJkYmIzYjdiNTJiZGQyYzlkMzBkY2M0NTgzNzFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00MjAsOSArNDIwLDkgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRS
ZWN0JiByLCBib28KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAg
ICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVu
ZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmIAotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGVOb3JtYWwsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAppbmRleCA5MWRmMmQ5N2JjMmE1MjcyOWYyMGNjMzhkMDY4MzJmMGY4YzJiZGYwLi5hZGQ2
MTdhMzg3NDc4Y2Y0MzdkYjA5MTQ1MjhiYzU0Y2Y5YzY1MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xMzgyLDcg
KzEzODIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKGJvb2wgZm9yY2VVcGRhdGUpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCiAgICAgICAgIGlmICghbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVs
ZW1lbnQtPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHZpZGVvQm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b1JlbmRlcldpZGdldChtZWRpYUVs
ZW1lbnQtPnJlbmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpKTsKKyAgICAgICAgdmlkZW9Cb3gg
PSBwaXhlbFNuYXBwZWRSZWN0KHRvUmVuZGVyV2lkZ2V0KG1lZGlhRWxlbWVudC0+cmVuZGVyZXIo
KSktPmNvbnRlbnRCb3hSZWN0KCkpOwogI2Vsc2UKICAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQt
PnJlbmRlcmVyKCkgfHwgIW1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+aXNWaWRlbygpKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCmluZGV4IGYzMzRmNDU2ZGVjMWVmMmZiNDI3YzFhN2MzMTE2MTI0YmQxMjQ4Zjku
LjkzZmYwM2M1YTM3MDFiNGViMTU2YjBhYjk3MWZjM2M0MjMwMWVhYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVu
dEluZm8oTm9kZSogbm9kZSkKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQt
PnJlbmRlcmVyKCk7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50
KCkuZnJhbWUoKTsKICAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0Zy
YW1lLT52aWV3KCk7Ci0gICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHBpeGVsU25hcHBlZEludFJl
Y3QoY29udGFpbmluZ1ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKSkpOworICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBwaXhlbFNuYXBw
ZWRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbW9kZWxP
YmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlcikgOiBudWxscHRyOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoIm5v
ZGVXaWR0aCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2JqZWN0ID8gYWRqdXN0Rm9yQWJzb2x1dGVa
b29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCAqbW9kZWxPYmplY3Qp
IDogYm91bmRpbmdCb3gud2lkdGgoKSkpOwogICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoIm5v
ZGVIZWlnaHQiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRl
Wm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCksICptb2RlbE9iamVj
dCkgOiBib3VuZGluZ0JveC5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAppbmRleCA0OTU0MDZiODJhYjQwZjk1NGJmMGVhMjY3MGVlMDlkNTg4ZTIw
ZWU0Li4zMWJkZjZlOTQxYTU1M2E2YmFiZTY5MzYwZjQ1MzhkNzliMmIyZDI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9k
ZSYgbm9kZSkKICAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAgICAg
TGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZy
YW1lLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVj
dCh0b3BMZXZlbFJlY3QpKSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBw
aXhlbFNuYXBwZWRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZl
bFJlY3QpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAyZmU1MjcwNzc0NjczMDY2ZTU0NDY4YjAzNDZmNTJkY2NlNzYyNmZmLi45
Mjg2ODZhZTViMWMxZmI1YmQ2YzZlNjZjZDg0YmVlNzEyNWY3NjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xNjk4LDcgKzE2OTgsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xs
Q29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVj
dAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAg
SW50UmVjdCB1cGRhdGVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsYXllci0+cmVwYWludFJl
Y3RJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKCkpOworICAgICAgICBJbnRSZWN0
IHVwZGF0ZVJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGxheWVyLT5yZXBhaW50UmVjdEluY2x1ZGlu
Z05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoKSk7CiAgICAgICAgIHVwZGF0ZVJlY3QgPSBjb250
ZW50c1RvUm9vdFZpZXcodXBkYXRlUmVjdCk7CiAgICAgICAgIGlmICghaXNDb21wb3NpdGVkQ29u
dGVudExheWVyICYmIGNsaXBzUmVwYWludHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50
ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CkBAIC0yOTk0LDkgKzI5OTQsOSBAQCBJbnRSZWN0IEZyYW1l
Vmlldzo6d2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZQogICAgIC8vIEFwcGx5IHRoZSBjbGlwIGZyb20gdGhlIGxheWVyLgogICAgIElu
dFJlY3QgY2xpcFJlY3Q7CiAgICAgaWYgKGNsaXBUb0xheWVyQ29udGVudHMpCi0gICAgICAgIGNs
aXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChlbmNsb3NpbmdMYXllci0+Y2hpbGRyZW5DbGlw
UmVjdCgpKTsKKyAgICAgICAgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGVuY2xvc2luZ0xh
eWVyLT5jaGlsZHJlbkNsaXBSZWN0KCkpOwogICAgIGVsc2UKLSAgICAgICAgY2xpcFJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheWVyLT5zZWxmQ2xpcFJlY3QoKSk7CisgICAg
ICAgIGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChlbmNsb3NpbmdMYXllci0+c2VsZkNsaXBS
ZWN0KCkpOwogICAgIGNsaXBSZWN0ID0gY29udGVudHNUb1dpbmRvdyhjbGlwUmVjdCk7IAogICAg
IHJldHVybiBpbnRlcnNlY3Rpb24oY2xpcFJlY3QsIHdpbmRvd0NsaXBSZWN0KCkpOwogfQpAQCAt
Mzc3Nyw3ICszNzc3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNh
dGVkKGZsb2F0ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKIAogSW50UmVjdCBGcmFt
ZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEludFJlY3QmIHJlbmRlcmVyUmVjdCkgY29uc3QKIHsKLSAgICBJbnRSZWN0IHJlY3Qg
PSBwaXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXItPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlbmRlcmVyUmVjdCkpLmJvdW5kaW5nQm94KCkpKTsK
KyAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3Qo
cmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlbmRlcmVyUmVjdCkpLmJv
dW5kaW5nQm94KCkpKTsKIAogICAgIC8vIENvbnZlcnQgZnJvbSBwYWdlICgiYWJzb2x1dGUiKSB0
byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMuCiAgICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQ0NjM4ZTlkMGNlMzU3MzZkZjM3MmMzNDgyMTcxZTc2YTli
OGNmMjUuLjU2ZWUxZWJiODFmYmJiZmFhMWRkZjc5NzdiODAzODljNGNlZjkxMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMTM0NiwxMCArMTM0NiwxMCBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50
UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBv
YgogICAgIExheW91dFJlY3QgcmVsZXZhbnRSZWN0ID0gcmVsZXZhbnRWaWV3UmVjdCgmb2JqZWN0
LT52aWV3KCkpOwogCiAgICAgLy8gVGhlIG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhl
eSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhlIHZpZXdSZWN0KCkuCi0gICAgaWYgKCFvYmpl
Y3RQYWludFJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbGV2YW50UmVjdCkp
KQorICAgIGlmICghb2JqZWN0UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkUmVjdChy
ZWxldmFudFJlY3QpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBzbmFwcGVkUGFp
bnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChvYmplY3RQYWludFJlY3QpOworICAgIEludFJl
Y3Qgc25hcHBlZFBhaW50UmVjdCA9IHBpeGVsU25hcHBlZFJlY3Qob2JqZWN0UGFpbnRSZWN0KTsK
IAogICAgIC8vIElmIHRoaXMgb2JqZWN0IHdhcyBwcmV2aW91c2x5IGNvdW50ZWQgYXMgYW4gdW5w
YWludGVkIG9iamVjdCwgcmVtb3ZlIGl0IGZyb20gdGhhdCBIYXNoU2V0CiAgICAgLy8gYW5kIGNv
cnJlc3BvbmRpbmcgUmVnaW9uLiBGSVhNRTogVGhpcyBkb2Vzbid0IGRvIHRoZSByaWdodCB0aGlu
ZyBpZiB0aGUgb2JqZWN0cyBvdmVybGFwLgpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIFBh
Z2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
dCBMYXlvdXRSZWN0JiBvYgogICAgIC8vIElmIHRoZSByZWN0IHN0cmFkZGxlcyBib3RoIFJlZ2lv
bnMsIHNwbGl0IGl0IGFwcHJvcHJpYXRlbHkuCiAgICAgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRl
cnNlY3RzKHNuYXBwZWRQYWludFJlY3QpICYmIGJvdHRvbVJlbGV2YW50UmVjdC5pbnRlcnNlY3Rz
KHNuYXBwZWRQYWludFJlY3QpKSB7CiAgICAgICAgIEludFJlY3QgdG9wSW50ZXJzZWN0aW9uID0g
c25hcHBlZFBhaW50UmVjdDsKLSAgICAgICAgdG9wSW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhl
bFNuYXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVjdCkpOworICAgICAgICB0b3BJbnRlcnNlY3Rp
b24uaW50ZXJzZWN0KHBpeGVsU25hcHBlZFJlY3QodG9wUmVsZXZhbnRSZWN0KSk7CiAgICAgICAg
IG1fdG9wUmVsZXZhbnRQYWludGVkUmVnaW9uLnVuaXRlKHRvcEludGVyc2VjdGlvbik7CiAKICAg
ICAgICAgSW50UmVjdCBib3R0b21JbnRlcnNlY3Rpb24gPSBzbmFwcGVkUGFpbnRSZWN0OwotICAg
ICAgICBib3R0b21JbnRlcnNlY3Rpb24uaW50ZXJzZWN0KHBpeGVsU25hcHBlZEludFJlY3QoYm90
dG9tUmVsZXZhbnRSZWN0KSk7CisgICAgICAgIGJvdHRvbUludGVyc2VjdGlvbi5pbnRlcnNlY3Qo
cGl4ZWxTbmFwcGVkUmVjdChib3R0b21SZWxldmFudFJlY3QpKTsKICAgICAgICAgbV9ib3R0b21S
ZWxldmFudFBhaW50ZWRSZWdpb24udW5pdGUoYm90dG9tSW50ZXJzZWN0aW9uKTsKICAgICB9IGVs
c2UgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRQYWludFJlY3QpKQogICAg
ICAgICBtX3RvcFJlbGV2YW50UGFpbnRlZFJlZ2lvbi51bml0ZShzbmFwcGVkUGFpbnRSZWN0KTsK
QEAgLTE0MDEsMTEgKzE0MDEsMTEgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFVucGFpbnRlZE9i
amVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb2IKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gVGhlIG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBh
cmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhlIHJlbGV2YW50Vmlld1JlY3QoKS4KLSAgICBpZiAo
IW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3QocmVsZXZhbnRW
aWV3UmVjdCgmb2JqZWN0LT52aWV3KCkpKSkpCisgICAgaWYgKCFvYmplY3RQYWludFJlY3QuaW50
ZXJzZWN0cyhwaXhlbFNuYXBwZWRSZWN0KHJlbGV2YW50Vmlld1JlY3QoJm9iamVjdC0+dmlldygp
KSkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2Jq
ZWN0cy5hZGQob2JqZWN0KTsKLSAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnVuaXRlKHBp
eGVsU25hcHBlZEludFJlY3Qob2JqZWN0UGFpbnRSZWN0KSk7CisgICAgbV9yZWxldmFudFVucGFp
bnRlZFJlZ2lvbi51bml0ZShwaXhlbFNuYXBwZWRSZWN0KG9iamVjdFBhaW50UmVjdCkpOwogfQog
CiB2b2lkIFBhZ2U6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDE0OTY4YjZjODM1M2YzMjZjMDJlNjM5NWJh
M2QyNWRmMjI3ODYxM2MuLjY0MGRhZDNhYzc5Y2EzMDc0MmY2ZDhkYjVlOTU3YjFlMTYyMTc4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0zNTUsNyArMzU1LDcgQEAgc3Rh
dGljIE5vZGUqIGFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMoY29uc3QgSGl0VGVzdFJl
c3VsdCYgaGl0VGVzdFJlc3VsdCwKICAgICAgICAgICAgIGlmIChub2RlQm91bmRzKSB7CiAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoaXMgbm9kZSBp
cyBhbiBhcmVhIGVsZW1lbnQuICBUaGUgb25seSB3YXkgdGhpcyBjYW4gaGFwcGVuIGlzIGlmIHRo
aXMgaXMgdGhlIGZpcnN0IGNoZWNrLgogICAgICAgICAgICAgICAgIGlmIChub2RlID09IGhpdFRl
c3RSZXN1bHQuaW5uZXJOb2RlKCkgJiYgbm9kZSAhPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hh
cmVkTm9kZSgpICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphcmVhVGFnKSkKLSAgICAg
ICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvSFRNTEFy
ZWFFbGVtZW50KG5vZGUpLT5jb21wdXRlUmVjdChoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpLT5yZW5kZXJlcigpKSk7CisgICAgICAgICAgICAgICAgICAgICpub2RlQm91bmRzID0g
cGl4ZWxTbmFwcGVkUmVjdCh0b0hUTUxBcmVhRWxlbWVudChub2RlKS0+Y29tcHV0ZVJlY3QoaGl0
VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVuZGVyZXIoKSkpOwogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICAgICAgKm5vZGVCb3VuZHMgPSBub2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCh0cnVlKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCmluZGV4IDNhZjZiMzAzYjIyYjBkZTgwM2E0YTk4M2UwMDJiNDZlOGVjYmU1M2MuLjNlMzg4
ZjA3ZjBhZjVmNTRiNjUwYWEzZWRiMGY0YWRmNDRkMWViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcApAQCAtMTkwLDEyICsxOTAsMTIgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSwgSW50UmVjdCYgaW1h
Z2VSZWMKIAogICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxlbWVudCBtZXRyaWNzIGZvciB0
aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgogICAgIExheW91dFJlY3QgdG9wTGV2
ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChy
ZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHBh
aW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3Qo
dG9wTGV2ZWxSZWN0KSk7CiAKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QodG9wTGV2ZWxSZWN0KTsKKyAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZFJlY3QodG9w
TGV2ZWxSZWN0KTsKICAgICBpbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7CiAKICAgICByZXR1cm4g
Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHNuYXBzaG90Tm9kZShmcmFtZSwgbm9kZSksICZu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5o
CmluZGV4IDc4ZWNkOTIyZWJkMTViMmZjZjVkYzRmNzM1ZTlmMmIxZDljMzVkYmIuLjRiNmRmMzNi
YmUyZjAwZTYzNGNlMmNhYjQ0Yjg0NDU0NWE3MTFjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaApAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGlu
ZSBMYXlvdXRQb2ludCBjZWlsZWRMYXlvdXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBwKQogICAg
IHJldHVybiBMYXlvdXRQb2ludChMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKHAueCgpKSwgTGF5
b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChwLnkoKSkpOwogfQogCi1pbmxpbmUgSW50U2l6ZSBwaXhl
bFNuYXBwZWRJbnRTaXplKGNvbnN0IExheW91dFNpemUmIHMsIGNvbnN0IExheW91dFBvaW50JiBw
KQoraW5saW5lIEludFNpemUgcGl4ZWxTbmFwcGVkU2l6ZShjb25zdCBMYXlvdXRTaXplJiBzLCBj
b25zdCBMYXlvdXRQb2ludCYgcCkKIHsKICAgICByZXR1cm4gSW50U2l6ZShzbmFwU2l6ZVRvUGl4
ZWwocy53aWR0aCgpLCBwLngoKSksIHNuYXBTaXplVG9QaXhlbChzLmhlaWdodCgpLCBwLnkoKSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmlu
ZGV4IDY2YTE5YmRmMTFiYzE1MjdmM2I1MDc2NzFjOWVkOWM3ZmRhNWY4MjQuLjdlYTNlYzAwNTEy
MTZmNjNiOTdlMmY1YzI4M2NiZTkzYmM1NmMyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTIwMSw3ICsyMDEsNyBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExheW91dFJlY3QmIGIpCiAg
ICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5z
aXplKCk7CiB9CiAKLWlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCkKK2lubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQogICAgIHJldHVy
biBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChyZWN0LmxvY2F0aW9uKCkpLCBJbnRTaXplKHNuYXBT
aXplVG9QaXhlbChyZWN0LndpZHRoKCksIHJlY3QueCgpKSwKQEAgLTIxNSwyMCArMjE1LDE5IEBA
IGlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCkKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBMYXlvdXRSZWN0Jik7CiBMYXlvdXRS
ZWN0IGVuY2xvc2luZ0xheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLQotaW5saW5lIElu
dFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9w
LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKK2lubGluZSBJbnRSZWN0IHBp
eGVsU25hcHBlZFJlY3QoTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5p
dCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIEludFJlY3QobGVmdC5y
b3VuZCgpLCB0b3Aucm91bmQoKSwgc25hcFNpemVUb1BpeGVsKHdpZHRoLCBsZWZ0KSwgc25hcFNp
emVUb1BpeGVsKGhlaWdodCwgdG9wKSk7CiB9CiAKLWlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBl
ZEludFJlY3RGcm9tRWRnZXMoTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0
VW5pdCByaWdodCwgTGF5b3V0VW5pdCBib3R0b20pCitpbmxpbmUgSW50UmVjdCBwaXhlbFNuYXBw
ZWRSZWN0RnJvbUVkZ2VzKExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCB0b3AsIExheW91dFVu
aXQgcmlnaHQsIExheW91dFVuaXQgYm90dG9tKQogewogICAgIHJldHVybiBJbnRSZWN0KGxlZnQu
cm91bmQoKSwgdG9wLnJvdW5kKCksIHNuYXBTaXplVG9QaXhlbChyaWdodCAtIGxlZnQsIGxlZnQp
LCBzbmFwU2l6ZVRvUGl4ZWwoYm90dG9tIC0gdG9wLCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJl
Y3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRQb2ludCBsb2NhdGlvbiwgTGF5b3V0U2l6ZSBz
aXplKQoraW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkUmVjdChMYXlvdXRQb2ludCBsb2NhdGlv
biwgTGF5b3V0U2l6ZSBzaXplKQogewotICAgIHJldHVybiBJbnRSZWN0KHJvdW5kZWRJbnRQb2lu
dChsb2NhdGlvbiksIHBpeGVsU25hcHBlZEludFNpemUoc2l6ZSwgbG9jYXRpb24pKTsKKyAgICBy
ZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBwaXhlbFNuYXBwZWRTaXpl
KHNpemUsIGxvY2F0aW9uKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCmluZGV4IGQwN2JmZmQwOWUyNDY5
OGQwNGM0MzhkMzIwNTZmMjZjYWM5YWFkNmUuLmFmMTUzN2I2MTBiNzg0MjJjNGJiOGRjYmZmYjYz
NjNlN2EyYWY1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFt
LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9y
PDwoY29uc3QgTGF5b3V0UG9pbnQmIHApCiBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRv
cjw8KGNvbnN0IExheW91dFJlY3QmIHIpCiB7CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwcmludGVkIGFzIGZsb2F0cy4gS2VlcGluZyB0aGVtIGludHMgZm9yIGNvbnNpc3RlbmN5IHdp
dGggcHJldmlvdXMgdGVzdCBleHBlY3RhdGlvbnMuCi0gICAgcmV0dXJuICp0aGlzIDw8IHBpeGVs
U25hcHBlZEludFJlY3Qocik7CisgICAgcmV0dXJuICp0aGlzIDw8IHBpeGVsU25hcHBlZFJlY3Qo
cik7CiB9CiAKIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxlYXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDZlZWFmMjU0NDhh
ZjRhMDljMmY3NGI4NDNlOWM4ZjEyNWZhMGUwMTUuLjFhYWI2NThmYzlmNGU2MDdiMGMwMTcxZWQ1
NWQ3MGIwY2QzYTI2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0
UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGlu
YXRpb25DCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwog
ICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsK
ICAgICAKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91
dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBw
aXhlbFNuYXBwZWRJbnRSZWN0KGRlc3RSZWN0KSwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
ZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9y
ZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVk
UmVjdChkZXN0UmVjdCksIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIAogICAgIGZpbHRlci0+
Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggNmEwNjM0YzYzMjFkNjA1YmE1MDBhZWZkNzExZDZiNDJm
MDBhZGQyYi4uOTFjZTg1NzYxZWMxYjZiZjQ0NWMxMjk2NmQ2ZDNhZWZjMmI1Mjc1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTEwMSw3ICsxMTAx
LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGZsaXBGb3JXcml0aW5nTW9kZShvdmVy
Zmxvd1JlY3QpOwogICAgIG92ZXJmbG93UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIAot
ICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KG92
ZXJmbG93UmVjdCkpKQorICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhlbFNu
YXBwZWRSZWN0KG92ZXJmbG93UmVjdCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBiNWJhMmNjODNkMGMwM2M3YjA3OGMwMTUy
YTkxMWFlZWM0MDk3OWRkLi40MmRlMDMxOWExNjllMWQxZGM1MzlmZDYxN2ZjN2VlOTExNTQxNGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIxOTIsNyAr
MjE5Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50
IGFmdGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tncm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3Jv
bGxiYXJzIHdpbGwKICAgICAvLyBzaXQgYWJvdmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAg
IGlmIChoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
ICYmIChwaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBoYXNlID09IFBhaW50
UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGlu
Um9vdCgqdGhpcykgJiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQotICAg
ICAgICBsYXllcigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJv
dW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgcGl4ZWxTbmFwcGVkSW50UmVjdChw
YWludEluZm8ucmVjdCkpOworICAgICAgICBsYXllcigpLT5wYWludE92ZXJmbG93Q29udHJvbHMo
cGFpbnRJbmZvLmNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwg
cGl4ZWxTbmFwcGVkUmVjdChwYWludEluZm8ucmVjdCkpOwogfQogCiB2b2lkIFJlbmRlckJsb2Nr
OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCkBAIC0yMjQwLDcgKzIyNDAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpw
YWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbgogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRoaWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29u
dGVudFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpIDogcGFpbnRPZmZzZXQueSgpICsgcnVsZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNr
bmVzcyAvIDIgKyBydWxlQWRkOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcnVsZUJvdHRv
bSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBydWxlVG9wICsgY29udGVudEhlaWdodCgp
IDogcnVsZVRvcCArIHJ1bGVUaGlja25lc3M7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMocnVsZUxlZnQs
IHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7CisgICAgICAgICAgICAgICAgSW50UmVj
dCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZFJlY3RGcm9tRWRnZXMocnVsZUxl
ZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7CiAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54
KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgp
LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0
eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0y
Mjc3LDcgKzIyNzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBydWxlUmVj
dC5tb3ZlKHN0ZXApOwotICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QocnVsZVJlY3QpOworICAgICAgICAgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocnVsZVJlY3QpOwogICAgICAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxl
UmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3Qu
bWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwg
cnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjMzMyw3
ICsyMzMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5Db250ZW50cyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHAKICAgICAgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0U2l6ZShsb2dpY2FsTGVm
dE9mZnNldCwgY3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShjdXJyTG9naWNhbFRv
cE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQpOwogICAgICAgICBjb2xSZWN0Lm1vdmVCeShwYWlu
dE9mZnNldCk7CiAgICAgICAgIFBhaW50SW5mbyBpbmZvKHBhaW50SW5mbyk7Ci0gICAgICAgIGlu
Zm8ucmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChjb2xSZWN0KSk7CisgICAgICAg
IGluZm8ucmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkUmVjdChjb2xSZWN0KSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoIWluZm8ucmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CkBAIC0yMzQ5LDcgKzIz
NDksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbHVtbkNvbnRlbnRzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcAogICAgICAgICAgICAgLy8gbGlrZSBvdmVy
ZmxvdzpoaWRkZW4uCiAgICAgICAgICAgICAvLyBGSVhNRTogQ29udGVudCBhbmQgY29sdW1uIHJ1
bGVzIHRoYXQgZXh0ZW5kIG91dHNpZGUgY29sdW1uIGJveGVzIGF0IHRoZSBlZGdlcyBvZiB0aGUg
bXVsdGktY29sdW1uIGVsZW1lbnQKICAgICAgICAgICAgIC8vIGFyZSBjbGlwcGVkIGFjY29yZGlu
ZyB0byB0aGUgJ292ZXJmbG93JyBwcm9wZXJ0eS4KLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXAo
cGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC0+Y2xp
cChwaXhlbFNuYXBwZWRSZWN0KGNsaXBSZWN0KSk7CiAKICAgICAgICAgICAgIC8vIEFkanVzdCBv
dXIgeCBhbmQgeSB3aGVuIHBhaW50aW5nLgogICAgICAgICAgICAgTGF5b3V0UG9pbnQgYWRqdXN0
ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgb2Zmc2V0OwpAQCAtMjg5NCw3ICsyODk0LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJv
b3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24sIExheW91dFJlY3QobG9naWNhbExlZnQsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxXaWR0aCwgbG9n
aWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChnYXBSZWN0KSwgc2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KGdhcFJlY3QpLCBzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBS
ZWN0OwogfQogCkBAIC0yOTExLDcgKzI5MTEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjps
b2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQog
CiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNh
bFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dp
Y2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dp
Y2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250
ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGdhcFJlY3QpLCBzZWxPYmotPnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KGdhcFJl
Y3QpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIApAQCAtMjkyOCw3ICsyOTI4
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJl
bmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9
IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9z
aXRpb24sIExheW91dFJlY3Qocm9vdEJsb2NrTG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxU
b3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWlu
dEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChnYXBSZWN0KSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2Vs
T2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdChnYXBSZWN0KSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJu
IGdhcFJlY3Q7CiB9CiAKQEAgLTUwMzgsMTIgKzUwMzgsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW0KICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBibG9jay1mbG93cyB0aGF0IGFyZSBob3Jpem9u
dGFsLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDY3ODEKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0
ZWRPZmZzZXQueCgpLCBhY2N1bXVsYXRlZE9mZnNldC55KCkgLSBjb2xsYXBzZWRNYXJnaW5CZWZv
cmUoKSwKKyAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZFJlY3QoYWNjdW11bGF0ZWRP
ZmZzZXQueCgpLCBhY2N1bXVsYXRlZE9mZnNldC55KCkgLSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSwgaGVpZ2h0KCkgKyBj
b2xsYXBzZWRNYXJnaW5CZWZvcmUoKSArIGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkpKTsKICAgICAg
ICAgY29udGludWF0aW9uKCktPmFic29sdXRlUmVjdHMocmVjdHMsIGFjY3VtdWxhdGVkT2Zmc2V0
IC0gdG9MYXlvdXRTaXplKGxvY2F0aW9uKCkgKwogICAgICAgICAgICAgICAgIGlubGluZUVsZW1l
bnRDb250aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0
ZWRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkUmVj
dChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKQEAgLTUxNDQsOSArNTE0NCw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAgICAgICAg
IGZsb2F0IGJvdHRvbU1hcmdpbiA9IG5leHRJbmxpbmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFy
Z2luQWZ0ZXIoKSA6IExheW91dFVuaXQoKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0KGFkZGl0
aW9uYWxPZmZzZXQueCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSAtIHRvcE1hcmdpbiwgd2lkdGgo
KSwgaGVpZ2h0KCkgKyB0b3BNYXJnaW4gKyBib3R0b21NYXJnaW4pOwogICAgICAgICBpZiAoIXJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJl
Y3QocmVjdCkpOworICAgICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZFJlY3QocmVj
dCkpOwogICAgIH0gZWxzZSBpZiAod2lkdGgoKSAmJiBoZWlnaHQoKSkKLSAgICAgICAgcmVjdHMu
YXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7Cisg
ICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNp
emUoKSkpOwogCiAgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSAmJiAhaGFzQ29udHJvbENsaXAo
KSkgewogICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOWU5Yzk2MjJkNDAzZjM0OTJkODk2YzRi
OTliMzQ2YzUzOGFmMTI3ZS4uYjI5YTk4NWVlNjE4NTI5MjUwOTA1MDA5YTIzNTE4OTJkMTU1YzI1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAg
LTIwMzcsNyArMjAzNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdP
YmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAgICAgICAgICAgICAg
ICAgZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkud2lkdGgoKSwgZmxvYXRpbmdPYmplY3QtPnJl
bmRlcmVyKCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgcm9vdEJsb2NrLmZsaXBGb3JXcml0aW5n
TW9kZShmbG9hdEJveCk7CiAgICAgICAgICAgICBmbG9hdEJveC5tb3ZlKHJvb3RCbG9ja1BoeXNp
Y2FsUG9zaXRpb24ueCgpLCByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLnkoKSk7Ci0gICAgICAg
ICAgICBwYWludEluZm8tPmNvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVkSW50UmVjdChmbG9h
dEJveCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwT3V0KHBpeGVsU25h
cHBlZFJlY3QoZmxvYXRCb3gpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTMyMDEsNyArMzIw
MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNo
aWxkcmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsCiAgICAgICAgIExheW91dFVuaXQgYm90dG9t
ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oY3Vyci0+bGluZUJvdHRvbSgpLCBjdXJyLT50b3AoKSAr
IGN1cnItPmhlaWdodCgpKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZz
ZXQueCgpICsgY3Vyci0+eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSArIHRvcCwgY3Vyci0+d2lk
dGgoKSwgYm90dG9tIC0gdG9wKTsKICAgICAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAg
ICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRSZWN0KHJlY3QpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAK
aW5kZXggZTQ2OTQwOGYxNDMyNWZmYzljN2UyODBkMWE0MTYyNTBlNDk2MzRjMS4uMDNlYzIyNjYy
YWQyNDMwNDlhNjJjNDU2YjgxOTJhODQ5OTVmNGFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEwNjIsNyArMTA2Miw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxvYXRzKExpbmVMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIGJvb2wgaGFzCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBibG9j
ayByZWFsbHkgbmVlZGVkIGEgZnVsbCBsYXlvdXQsIHdlIG1pc3NlZCBvdXIgY2hhbmNlIHRvIHJl
cGFpbnQgdGhlIGxheWVyCiAgICAgICAgICAgICAvLyBiZWZvcmUgbGF5b3V0IHN0YXJ0ZWQuICBM
dWNraWx5IHRoZSBsYXllciBoYXMgY2FjaGVkIHRoZSByZXBhaW50IHJlY3QgZm9yIGl0cyBvcmln
aW5hbAogICAgICAgICAgICAgLy8gcG9zaXRpb24gYW5kIHNpemUsIGFuZCBzbyB3ZSBjYW4gdXNl
IHRoYXQgdG8gbWFrZSBhIHJlcGFpbnQgaGFwcGVuIG5vdy4KLSAgICAgICAgICAgIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihjb250YWluZXJGb3JSZXBhaW50KCksIHBpeGVsU25hcHBlZEludFJlY3Qo
bGF5ZXIoKS0+cmVwYWludFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFp
bmVyKGNvbnRhaW5lckZvclJlcGFpbnQoKSwgcGl4ZWxTbmFwcGVkUmVjdChsYXllcigpLT5yZXBh
aW50UmVjdCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggNzZlZTZhMDA4OWZkNDc5ZDEwZmVhNmE5ZTA0NzM0Yjc3MTUxZWNm
Ni4uYWIzODdlMmQ1YWNhMDU1ZDc0NzI5OTRiZDFjMzMyMWQwYjEwODc1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFJlbmRl
ckJveDo6c2V0U2Nyb2xsVG9wKGludCBuZXdUb3ApCiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVj
dChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CisgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25h
cHBlZFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlckJv
eDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdApAQCAtNjE4LDcgKzYxOCw3IEBAIFJvdW5kZWRSZWN0OjpSYWRpaSBSZW5kZXJCb3g6
OmJvcmRlclJhZGlpKCkgY29uc3QKIEludFJlY3QgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRC
b3goKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMgd3Jvbmcgd2l0aCB0cmFuc2Zvcm1zIGFuZCBm
bGlwcGVkIHdyaXRpbmcgbW9kZXMuCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChjb250ZW50Qm94UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRS
ZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fi
c29sdXRlKCk7CiAgICAgcmVjdC5tb3ZlKGFic1Bvcy54KCksIGFic1Bvcy55KCkpOwogICAgIHJl
dHVybiByZWN0OwpAQCAtNjU1LDcgKzY1NSw3IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpvdXRs
aW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiB2
b2lkIFJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqKQogewogICAgIGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMu
YXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7Cisg
ICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNp
emUoKSkpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6cmVmbGVjdGlvbkJveCgpIGNvbnN0
CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogCiAgICAgLy8g
SWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWludCB0aGF0IGJlZm9yZSBw
YWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdo
ZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1MgYmFja2dyb3VuZC4KLSAg
ICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3Qp
KTsKKyAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4ZWxTbmFwcGVkUmVjdChwYWludFJl
Y3QpKTsKICAgICBib29sIHRoZW1lUGFpbnRlZCA9IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYm
ICF0aGVtZSgpLnBhaW50KHRoaXMsIHBhaW50SW5mbywgc25hcHBlZFBhaW50UmVjdCk7CiAgICAg
aWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tn
cm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyKQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGEKIGJvb2wgUmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRl
ZEV4dGVudChMYXlvdXRSZWN0JiBwYWludGVkRXh0ZW50KSBjb25zdAogewogICAgIEFTU0VSVCho
YXNCYWNrZ3JvdW5kKCkpOwotICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KGJvcmRlckJveFJlY3QoKSk7CisgICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5k
UmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoYm9yZGVyQm94UmVjdCgpKTsKIAogICAgIENvbG9yIGJh
Y2tncm91bmRDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBi
YWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSkgewpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgYm9vbCBSZW5k
ZXJCb3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXUKICAgICAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBhY2N1bXVsYXRl
ZE9mZnNldCk7CiAgICAgICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2Nr
QmFja2dyb3VuZHM7CiAgICAgfQotICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQp
IDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlclJl
Z2lvbiwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkpOworICAg
IEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250
cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVs
YXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbiwgSWdub3JlT3ZlcmxheVNjcm9sbGJh
clNpemUsIHBhaW50SW5mby5waGFzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7
CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Io
TGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkpOwpAQCAtMjA3OCw3ICsyMDc4
LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAgICAgTGF5b3V0U3RhdGUqIGxheW91
dFN0YXRlID0gdmlldygpLmxheW91dFN0YXRlKCk7CiAKICAgICAgICAgaWYgKGxheWVyKCkgJiYg
bGF5ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAgICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNm
b3JtKCktPm1hcFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgICAgICAgICBy
ZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocGl4ZWxTbmFwcGVkUmVjdChyZWN0
KSk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgdHJ1c3QgdGhlIGJpdHMgb24gUmVuZGVyT2JqZWN0
LCBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbGVkIHdoaWxlIHJlLXJlc29sdmluZyBzdHlsZS4K
ICAgICAgICAgaWYgKHN0eWxlVG9Vc2UuaGFzSW5GbG93UG9zaXRpb24oKSAmJiBsYXllcigpKQpA
QCAtMjEyNSw3ICsyMTI1LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAvLyBpbiB0
aGUgcGFyZW50J3MgY29vcmRpbmF0ZSBzcGFjZSB0aGF0IGVuY2xvc2VzIHVzLgogICAgIGlmICho
YXNMYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpKSB7CiAgICAgICAgIGZpeGVkID0gcG9z
aXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKLSAgICAgICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9y
bSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICByZWN0ID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAg
ICAgICAgIHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgIHRvcExlZnQubW92ZShs
b2NhdGlvbk9mZnNldCgpKTsKICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IEZpeGVkUG9zaXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZjcyMmNkNzhiZWRmZWJl
NTc1MjljMzNiODBiYjI0ODk4ODI3MmQyYS4uOWZmNzZjMDU4MTliNWQ2Njk3Y2NmYmNlOWQ4ZjI5
ZTdiNzY4YzEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTQ5LDcg
KzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmUoTGF5b3V0VW5pdCBkeCwgTGF5b3V0VW5p
dCBkeSkgeyBtX2ZyYW1lUmVjdC5tb3ZlKGR4LCBkeSk7IH0KIAogICAgIExheW91dFJlY3QgZnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QobV9m
cmFtZVJlY3QpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRGcmFtZVJlY3QoKSBjb25zdCB7
IHJldHVybiBwaXhlbFNuYXBwZWRSZWN0KG1fZnJhbWVSZWN0KTsgfQogICAgIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mcmFtZVJlY3QgPSByZWN0OyB9CiAK
ICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KExheW91dFBvaW50KCksIHNpemUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDc2N2ZhOTE5YmI0MTYwZGZhNDUzMDQ0
MjIyY2FiMTAxY2Y3YjBiOWEuLjhjYzRjN2RhNDA3YWNiZDVjZWE5Y2ZiNWU4OGY2ZTNjYTU5M2I0
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qo
cmVjdCksIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QocmVjdCksIGJnQ29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzE5LDggKzcxOSw4IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gZHJhdyBvdXIg
dGV4dCBpbnRvIGEgbWFzayB0aGF0IGNhbiB0aGVuIGJlIHVzZWQgdG8gY2xpcCBiYWNrZ3JvdW5k
IGRyYXdpbmcuCiAgICAgICAgIC8vIEZpcnN0IGZpZ3VyZSBvdXQgaG93IGJpZyB0aGUgbWFzayBo
YXMgdG8gYmUuICBJdCBzaG91bGQgYmUgbm8gYmlnZ2VyIHRoYW4gd2hhdCB3ZSBuZWVkCiAgICAg
ICAgIC8vIHRvIGFjdHVhbGx5IHJlbmRlciwgc28gd2Ugc2hvdWxkIGludGVyc2VjdCB0aGUgZGly
dHkgcmVjdCB3aXRoIHRoZSBib3JkZXIgYm94IG9mIHRoZSBiYWNrZ3JvdW5kLgotICAgICAgICBt
YXNrUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7Ci0gICAgICAgIG1hc2tSZWN0Lmlu
dGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CisgICAgICAgIG1h
c2tSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChyZWN0KTsKKyAgICAgICAgbWFza1JlY3QuaW50ZXJz
ZWN0KHBpeGVsU25hcHBlZFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cg
Y3JlYXRlIHRoZSBtYXNrLgogICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21w
YXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CkBAIC03NjksMTEgKzc2OSwxMSBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIC8vIEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmlu
aXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0CiAgICAg
Ly8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJzIHRoZSBl
bnRpcmUgbGF5b3V0IHJlY3QuCiAgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAg
SW50UmVjdCBiYWNrZ3JvdW5kUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNjcm9sbGVkUGFpbnRS
ZWN0KSk7CisgICAgICAgIEludFJlY3QgYmFja2dyb3VuZFJlY3QocGl4ZWxTbmFwcGVkUmVjdChz
Y3JvbGxlZFBhaW50UmVjdCkpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGll
ZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3Vu
ZChibGVlZEF2b2lkYW5jZSwgYm94KTsKICAgICAgICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZCB8fCAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgfHwgIWJnTGF5
ZXItPmhhc09wYXF1ZUltYWdlKHRoaXMpIHx8ICFiZ0xheWVyLT5oYXNSZXBlYXRYWSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKLSAg
ICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVj
dChwYWludEluZm8ucmVjdCkpOworICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZWN0LmludGVy
c2VjdChwaXhlbFNuYXBwZWRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAgICAgICAgICAgIC8v
IElmIHdlIGhhdmUgYW4gYWxwaGEgYW5kIHdlIGFyZSBwYWludGluZyB0aGUgcm9vdCBlbGVtZW50
LCBnbyBhaGVhZCBhbmQgYmxlbmQgd2l0aCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yLgogICAg
ICAgICAgICAgQ29sb3IgYmFzZUNvbG9yOwpAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgaWYgKHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlKSB7CiAgICAg
ICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5OwogICAgICAgICBjYWxjdWxhdGVC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludEluZm8ucGFpbnRDb250YWluZXIsIGJnTGF5ZXIs
IHNjcm9sbGVkUGFpbnRSZWN0LCBnZW9tZXRyeSwgYmFja2dyb3VuZE9iamVjdCk7Ci0gICAgICAg
IGdlb21ldHJ5LmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAg
ICAgICBnZW9tZXRyeS5jbGlwKHBpeGVsU25hcHBlZFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKICAg
ICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
ID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9y
QmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0
aGlzOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2Fs
Y3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2QKICAgICBM
YXlvdXRVbml0IGxlZnQgPSAwOwogICAgIExheW91dFVuaXQgdG9wID0gMDsKICAgICBJbnRTaXpl
IHBvc2l0aW9uaW5nQXJlYVNpemU7Ci0gICAgSW50UmVjdCBzbmFwcGVkUGFpbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpOworICAgIEludFJlY3Qgc25hcHBlZFBhaW50UmVj
dCA9IHBpeGVsU25hcHBlZFJlY3QocGFpbnRSZWN0KTsKIAogICAgIC8vIERldGVybWluZSB0aGUg
YmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhIGFuZCBzZXQgZGVzdFJlY3QgdG8gdGhlIGJhY2tn
cm91bmQgcGFpbnRpbmcgYXJlYS4KICAgICAvLyBkZXN0UmVjdCB3aWxsIGJlIGFkanVzdGVkIGxh
dGVyIGlmIHRoZSBiYWNrZ3JvdW5kIGlzIG5vbi1yZXBlYXRpbmcuCkBAIC0xMTAyLDE4ICsxMTAy
LDE4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kCiAgICAgICAgIC8vIGl0cyBtYXJnaW5zLiBT
aW5jZSB0aG9zZSB3ZXJlIGFkZGVkIGluIGFscmVhZHksIHdlIGhhdmUgdG8gZmFjdG9yIHRoZW0g
b3V0IHdoZW4gY29tcHV0aW5nCiAgICAgICAgIC8vIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5n
IGFyZWEuCiAgICAgICAgIGlmIChpc1Jvb3QoKSkgewotICAgICAgICAgICAgcG9zaXRpb25pbmdB
cmVhU2l6ZSA9IHBpeGVsU25hcHBlZEludFNpemUodG9SZW5kZXJCb3godGhpcyktPnNpemUoKSAt
IExheW91dFNpemUobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pLCB0b1JlbmRlckJveCh0aGlz
KS0+bG9jYXRpb24oKSk7CisgICAgICAgICAgICBwb3NpdGlvbmluZ0FyZWFTaXplID0gcGl4ZWxT
bmFwcGVkU2l6ZSh0b1JlbmRlckJveCh0aGlzKS0+c2l6ZSgpIC0gTGF5b3V0U2l6ZShsZWZ0ICsg
cmlnaHQsIHRvcCArIGJvdHRvbSksIHRvUmVuZGVyQm94KHRoaXMpLT5sb2NhdGlvbigpKTsKICAg
ICAgICAgICAgIGlmICh2aWV3KCkuZnJhbWVWaWV3KCkuaGFzRXh0ZW5kZWRCYWNrZ3JvdW5kKCkp
IHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGV4dGVuZGVkQmFja2dyb3VuZFJlY3QgPSB2aWV3
KCkuZnJhbWVWaWV3KCkuZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdCgpOwogICAgICAgICAgICAgICAg
IGxlZnQgKz0gKG1hcmdpbkxlZnQoKSAtIGV4dGVuZGVkQmFja2dyb3VuZFJlY3QueCgpKTsKICAg
ICAgICAgICAgICAgICB0b3AgKz0gKG1hcmdpblRvcCgpIC0gZXh0ZW5kZWRCYWNrZ3JvdW5kUmVj
dC55KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBvc2l0
aW9uaW5nQXJlYVNpemUgPSBwaXhlbFNuYXBwZWRJbnRTaXplKHBhaW50UmVjdC5zaXplKCkgLSBM
YXlvdXRTaXplKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKSwgcGFpbnRSZWN0LmxvY2F0aW9u
KCkpOworICAgICAgICAgICAgcG9zaXRpb25pbmdBcmVhU2l6ZSA9IHBpeGVsU25hcHBlZFNpemUo
cGFpbnRSZWN0LnNpemUoKSAtIExheW91dFNpemUobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20p
LCBwYWludFJlY3QubG9jYXRpb24oKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZ2VvbWV0cnku
c2V0SGFzTm9uTG9jYWxHZW9tZXRyeSgpOwogCi0gICAgICAgIEludFJlY3Qgdmlld3BvcnRSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh2aWV3KCkudmlld1JlY3QoKSk7CisgICAgICAgIEludFJl
Y3Qgdmlld3BvcnRSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdCh2aWV3KCkudmlld1JlY3QoKSk7CiAg
ICAgICAgIGlmIChmaXhlZEJhY2tncm91bmRQYWludHNJbkxvY2FsQ29vcmRpbmF0ZXMoKSkKICAg
ICAgICAgICAgIHZpZXdwb3J0UmVjdC5zZXRMb2NhdGlvbihJbnRQb2ludCgpKTsKICAgICAgICAg
ZWxzZQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2Fs
Y3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2QKICAgICAg
ICAgICAgIHZpZXdwb3J0UmVjdC5tb3ZlQnkoLWFic29sdXRlQ29udGFpbmVyT2Zmc2V0KTsKICAg
ICAgICAgfQogCi0gICAgICAgIGdlb21ldHJ5LnNldERlc3RSZWN0KHBpeGVsU25hcHBlZEludFJl
Y3Qodmlld3BvcnRSZWN0KSk7CisgICAgICAgIGdlb21ldHJ5LnNldERlc3RSZWN0KHBpeGVsU25h
cHBlZFJlY3Qodmlld3BvcnRSZWN0KSk7CiAgICAgICAgIHBvc2l0aW9uaW5nQXJlYVNpemUgPSBn
ZW9tZXRyeS5kZXN0UmVjdCgpLnNpemUoKTsKICAgICB9CiAKQEAgLTEyNTEsNyArMTI1MSw3IEBA
IGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgLy8gZG9lc24ndCBoYXZlIGFueSB1bmRlcnN0
YW5kaW5nIG9mIHRoZSB6b29tIHRoYXQgaXMgaW4gZWZmZWN0IG9uIHRoZSB0aWxlLgogICAgIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRzZXRzID0gcmVjdDsKICAgICByZWN0V2l0aE91dHNldHMuZXhw
YW5kKHN0eWxlLT5pbWFnZU91dHNldHMobmluZVBpZWNlSW1hZ2UpKTsKLSAgICBJbnRSZWN0IGJv
cmRlckltYWdlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdFdpdGhPdXRzZXRzKTsKKyAg
ICBJbnRSZWN0IGJvcmRlckltYWdlUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocmVjdFdpdGhPdXRz
ZXRzKTsKIAogICAgIEludFNpemUgaW1hZ2VTaXplID0gY2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNE
aW1lbnNpb25zKHN0eWxlSW1hZ2UsIGJvcmRlckltYWdlUmVjdC5zaXplKCksIERvTm90U2NhbGVC
eUVmZmVjdGl2ZVpvb20pOwogCkBAIC0yMTI1LDcgKzIxMjUsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLT5jb2xvclNw
YWNlKCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkSW50UmVj
dChib3JkZXJSZWN0KSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBw
ZWRSZWN0KGJvcmRlclJlY3QpKTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNv
bnN0IEZsb2F0UG9pbnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5l
ciwgY29uc3QgRmxvYXRQb2ludCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRl
eCA0NTVkNzk3YjcxZDRjN2MwZGFkMTRkNmE4N2QwNGQ4MzY5NmFkNTczLi5mMzUwOThlMGE0NjUz
NzczMGQxY2QzMzUwZTVlZmJmZWI5ZGIwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBS
ZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2YKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAg
ICAgb3ZlcmZsb3dSZWN0LmluZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFz
ZSkpOwogCi0gICAgaWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZElu
dFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAgaWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3Rz
KHBpeGVsU25hcHBlZFJlY3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCAxMDg3OTFkYjM2NjliOGE2ZjQ3MzdhNjRiNjU2MWFiZWZjZjljNDFlLi5kMzg3Y2JlNzkw
MTI5M2UwYmM5YTdiNzY4MzAxZjY1MjE1YjhmYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMTkxLDkgKzExOTEsOSBAQCBib29sIFJlbmRlckVs
ZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcAogICAgICAgICByZXBhaW50Q29udGFpbmVyID0gJnZpZXcoKTsKIAogICAgIGlm
IChmdWxsUmVwYWludCkgewotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENv
bnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChvbGRCb3VuZHMpKTsKKyAgICAgICAgcmVwYWlu
dFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3Qob2xkQm91
bmRzKSk7CiAgICAgICAgIGlmIChuZXdCb3VuZHMgIT0gb2xkQm91bmRzKQotICAgICAgICAgICAg
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZEludFJl
Y3QobmV3Qm91bmRzKSk7CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkUmVjdChuZXdCb3VuZHMpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xMjAyLDI3ICsxMjAyLDI3IEBAIGJvb2wgUmVuZGVyRWxlbWVu
dDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwCiAKICAgICBMYXlvdXRVbml0IGRlbHRhTGVmdCA9IG5ld0JvdW5kcy54KCkgLSBvbGRC
b3VuZHMueCgpOwogICAgIGlmIChkZWx0YUxlZnQgPiAwKQotICAgICAgICByZXBhaW50VXNpbmdD
b250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChvbGRCb3VuZHMu
eCgpLCBvbGRCb3VuZHMueSgpLCBkZWx0YUxlZnQsIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAg
ICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVk
UmVjdChvbGRCb3VuZHMueCgpLCBvbGRCb3VuZHMueSgpLCBkZWx0YUxlZnQsIG9sZEJvdW5kcy5o
ZWlnaHQoKSkpOwogICAgIGVsc2UgaWYgKGRlbHRhTGVmdCA8IDApCi0gICAgICAgIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5ld0Jv
dW5kcy54KCksIG5ld0JvdW5kcy55KCksIC1kZWx0YUxlZnQsIG5ld0JvdW5kcy5oZWlnaHQoKSkp
OworICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxT
bmFwcGVkUmVjdChuZXdCb3VuZHMueCgpLCBuZXdCb3VuZHMueSgpLCAtZGVsdGFMZWZ0LCBuZXdC
b3VuZHMuaGVpZ2h0KCkpKTsKIAogICAgIExheW91dFVuaXQgZGVsdGFSaWdodCA9IG5ld0JvdW5k
cy5tYXhYKCkgLSBvbGRCb3VuZHMubWF4WCgpOwogICAgIGlmIChkZWx0YVJpZ2h0ID4gMCkKLSAg
ICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBl
ZEludFJlY3Qob2xkQm91bmRzLm1heFgoKSwgbmV3Qm91bmRzLnkoKSwgZGVsdGFSaWdodCwgbmV3
Qm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZEJvdW5kcy5tYXhYKCksIG5ld0JvdW5kcy55
KCksIGRlbHRhUmlnaHQsIG5ld0JvdW5kcy5oZWlnaHQoKSkpOwogICAgIGVsc2UgaWYgKGRlbHRh
UmlnaHQgPCAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5l
ciwgcGl4ZWxTbmFwcGVkSW50UmVjdChuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMueSgpLCAt
ZGVsdGFSaWdodCwgb2xkQm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG5ld0JvdW5kcy5tYXhY
KCksIG9sZEJvdW5kcy55KCksIC1kZWx0YVJpZ2h0LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKIAog
ICAgIExheW91dFVuaXQgZGVsdGFUb3AgPSBuZXdCb3VuZHMueSgpIC0gb2xkQm91bmRzLnkoKTsK
ICAgICBpZiAoZGVsdGFUb3AgPiAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChvbGRCb3VuZHMueCgpLCBvbGRCb3Vu
ZHMueSgpLCBvbGRCb3VuZHMud2lkdGgoKSwgZGVsdGFUb3ApKTsKKyAgICAgICAgcmVwYWludFVz
aW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3Qob2xkQm91bmRz
LngoKSwgb2xkQm91bmRzLnkoKSwgb2xkQm91bmRzLndpZHRoKCksIGRlbHRhVG9wKSk7CiAgICAg
ZWxzZSBpZiAoZGVsdGFUb3AgPCAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChuZXdCb3VuZHMueCgpLCBuZXdCb3Vu
ZHMueSgpLCBuZXdCb3VuZHMud2lkdGgoKSwgLWRlbHRhVG9wKSk7CisgICAgICAgIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG5ld0JvdW5k
cy54KCksIG5ld0JvdW5kcy55KCksIG5ld0JvdW5kcy53aWR0aCgpLCAtZGVsdGFUb3ApKTsKIAog
ICAgIExheW91dFVuaXQgZGVsdGFCb3R0b20gPSBuZXdCb3VuZHMubWF4WSgpIC0gb2xkQm91bmRz
Lm1heFkoKTsKICAgICBpZiAoZGVsdGFCb3R0b20gPiAwKQotICAgICAgICByZXBhaW50VXNpbmdD
b250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChuZXdCb3VuZHMu
eCgpLCBvbGRCb3VuZHMubWF4WSgpLCBuZXdCb3VuZHMud2lkdGgoKSwgZGVsdGFCb3R0b20pKTsK
KyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25h
cHBlZFJlY3QobmV3Qm91bmRzLngoKSwgb2xkQm91bmRzLm1heFkoKSwgbmV3Qm91bmRzLndpZHRo
KCksIGRlbHRhQm90dG9tKSk7CiAgICAgZWxzZSBpZiAoZGVsdGFCb3R0b20gPCAwKQotICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50
UmVjdChvbGRCb3VuZHMueCgpLCBuZXdCb3VuZHMubWF4WSgpLCBvbGRCb3VuZHMud2lkdGgoKSwg
LWRlbHRhQm90dG9tKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZEJvdW5kcy54KCksIG5ld0JvdW5kcy5tYXhZKCks
IG9sZEJvdW5kcy53aWR0aCgpLCAtZGVsdGFCb3R0b20pKTsKIAogICAgIGlmIChuZXdPdXRsaW5l
Qm94ID09IG9sZE91dGxpbmVCb3gpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNDksNyAr
MTI0OSw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAgICAgICAgIExheW91dFVuaXQgcmln
aHQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4
WCgpKTsKICAgICAgICAgaWYgKHJpZ2h0UmVjdC54KCkgPCByaWdodCkgewogICAgICAgICAgICAg
cmlnaHRSZWN0LnNldFdpZHRoKHN0ZDo6bWluKHJpZ2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJp
Z2h0UmVjdC54KCkpKTsKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJpZ2h0UmVjdCkpOworICAgICAgICAgICAg
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3Qo
cmlnaHRSZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBh
YnNvbHV0ZVZhbHVlKG5ld091dGxpbmVCb3guaGVpZ2h0KCkgLSBvbGRPdXRsaW5lQm94LmhlaWdo
dCgpKTsKQEAgLTEyNjksNyArMTI2OSw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFm
dGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4obmV3Qm91bmRzLm1heFkoKSwgb2xkQm91
bmRzLm1heFkoKSk7CiAgICAgICAgIGlmIChib3R0b21SZWN0LnkoKSA8IGJvdHRvbSkgewogICAg
ICAgICAgICAgYm90dG9tUmVjdC5zZXRIZWlnaHQoc3RkOjptaW4oYm90dG9tUmVjdC5oZWlnaHQo
KSwgYm90dG9tIC0gYm90dG9tUmVjdC55KCkpKTsKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdHRvbVJlY3Qp
KTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBw
aXhlbFNuYXBwZWRSZWN0KGJvdHRvbVJlY3QpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAppbmRleCA1MTY1ZWYyODYzYjg5YTNkZDA1NjU0MTM4YWNmMzY5ODI1NjEzZWYx
Li45MjU0YjE5NTIxNjg2ZTdmYTUwODU4OWM0MjVlMmExNzBkNzQxZjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2Uo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogICAgIGNvbnRlbnRMb2NhdGlvbi5t
b3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1Rv
cCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXpl
KTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsK
KyAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChyZWN0KTsKICAgICBp
ZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDAp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0CiAgICAgaWYgKCFyb290UmVu
ZGVyVmlldykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBJbnRSZWN0IHJvb3RWaWV3UmVj
dCA9IHZpZXcoKS5mcmFtZVZpZXcoKS5jb252ZXJ0VG9Sb290VmlldyhwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpKTsKKyAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXcoKS5mcmFtZVZpZXco
KS5jb252ZXJ0VG9Sb290VmlldyhwaXhlbFNuYXBwZWRSZWN0KHJlY3QpKTsKICAgICAKICAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggYTg0NGU0MzI1ODc0YzUzZjYy
M2U2OGE3OTYwZGNhNDJiOTg5ZWRmMC4uMmU5MDRlZDllZDRmYTgxMDBmNzRlMDNmOTZjOGM2YmYz
NzRkNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxk
c2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3Bw
CkBAIC0xNzcsMTEgKzE3NywxMSBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29y
YXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgIGlmIChz
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
bGlwVG9wID0gcGFpbnRSZWN0LnkoKTsKICAgICAgICAgTGF5b3V0VW5pdCBjbGlwSGVpZ2h0ID0g
c3RkOjptYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS5ib3JkZXJUb3BXaWR0aCgp
KSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5kLT5oZWlnaHQoKSAtIGJvcmRlclRvcCgpKSAv
IDIpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHBpeGVsU25hcHBlZEludFJl
Y3QocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpLCBjbGlwVG9wLCBsZWdlbmQtPndpZHRoKCks
IGNsaXBIZWlnaHQpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHBpeGVsU25h
cHBlZFJlY3QocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpLCBjbGlwVG9wLCBsZWdlbmQtPndp
ZHRoKCksIGNsaXBIZWlnaHQpKTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IGNs
aXBMZWZ0ID0gcGFpbnRSZWN0LngoKTsKICAgICAgICAgTGF5b3V0VW5pdCBjbGlwV2lkdGggPSBz
dGQ6Om1heChzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgp
KSwgbGVnZW5kLT53aWR0aCgpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHBp
eGVsU25hcHBlZEludFJlY3QoY2xpcExlZnQsIHBhaW50UmVjdC55KCkgKyBsZWdlbmQtPnkoKSwg
Y2xpcFdpZHRoLCBsZWdlbmQtPmhlaWdodCgpKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcE91dChwaXhlbFNuYXBwZWRSZWN0KGNsaXBMZWZ0LCBwYWludFJlY3QueSgpICsgbGVnZW5k
LT55KCksIGNsaXBXaWR0aCwgbGVnZW5kLT5oZWlnaHQoKSkpOwogICAgIH0KIAogICAgIHBhaW50
Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCAmc3R5bGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggOGQ1NTJlN2E4YWFkMjE5Njky
ZmFiMzc2NzNlNzQyMmIwZDU0Y2I0ZS4uZTVkNmU2NDg1NDk1MzkzZGY0ZGU5MWZlZTQ4NzkyMTBh
Zjc3YmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcApAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdp
b25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2MKICAgICAg
ICAgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSBibG9jay0+Ym9yZGVyQm94UmVjdEluUmVnaW9uKHJl
Z2lvbik7CiAgICAgICAgIGJvcmRlckJveCA9IHJlZ2lvbi0+cmVjdEZsb3dQb3J0aW9uRm9yQm94
KGJsb2NrLCBib3JkZXJCb3gpOwogCi0gICAgICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChib3JkZXJCb3gpOworICAgICAgICBJbnRSZWN0IGluZmxhdGVkUmVj
dCA9IHBpeGVsU25hcHBlZFJlY3QoYm9yZGVyQm94KTsKICAgICAgICAgYmxvY2stPnRoZW1lKCku
YWRqdXN0UmVwYWludFJlY3QoYmxvY2ssIGluZmxhdGVkUmVjdCk7CiAKICAgICAgICAgcmVnaW9u
LT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9jaywgaW5mbGF0ZWRSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDI2ZDY2ZGIyNmVmODdi
YTI1YzY4YmI5ZmJhNmIyOWUzZjUxY2UyYjMuLjMyMTY1MjUyZWZiZTU3NmU0Mjk0NjM1ZDJkY2Vh
NGVjZjNiN2YwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
ICAgICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5wYWludChwYWludEluZm8sIGFkanVzdGVkUGFp
bnRPZmZzZXQpOwogICAgICAgICAgICAgeFBvcyArPSBtX2NvbHMubV9zaXplc1tjXTsKICAgICAg
ICAgICAgIGlmIChib3JkZXJUaGlja25lc3MgJiYgbV9jb2xzLm1fYWxsb3dCb3JkZXJbYyArIDFd
KSB7Ci0gICAgICAgICAgICAgICAgcGFpbnRDb2x1bW5Cb3JkZXIocGFpbnRJbmZvLCBwaXhlbFNu
YXBwZWRJbnRSZWN0KExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyB4UG9zLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIGJvcmRlclRoaWNrbmVzcywgaGVpZ2h0KCkp
KSk7CisgICAgICAgICAgICAgICAgcGFpbnRDb2x1bW5Cb3JkZXIocGFpbnRJbmZvLCBwaXhlbFNu
YXBwZWRSZWN0KExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyB4UG9zLCBhZGp1
c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIGJvcmRlclRoaWNrbmVzcywgaGVpZ2h0KCkpKSk7
CiAgICAgICAgICAgICAgICAgeFBvcyArPSBib3JkZXJUaGlja25lc3M7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwpAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIH0KICAgICAgICAgeVBvcyAr
PSBtX3Jvd3MubV9zaXplc1tyXTsKICAgICAgICAgaWYgKGJvcmRlclRoaWNrbmVzcyAmJiBtX3Jv
d3MubV9hbGxvd0JvcmRlcltyICsgMV0pIHsKLSAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBh
aW50SW5mbywgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRo
aWNrbmVzcykpKTsKKyAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgcGl4ZWxT
bmFwcGVkUmVjdChMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRoaWNrbmVzcykpKTsKICAgICAg
ICAgICAgIHlQb3MgKz0gYm9yZGVyVGhpY2tuZXNzOwogICAgICAgICB9CiAgICAgfQpAQCAtNDgz
LDEwICs0ODMsMTAgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5b3V0KCkKICAgICB1cGRhdGVM
YXllclRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGRvRnVsbFJlcGFpbnQpIHsKLSAgICAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3Qo
b2xkQm91bmRzKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZEJvdW5kcykpOwogICAgICAgICBMYXlvdXRSZWN0IG5l
d0JvdW5kcyA9IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIp
OwogICAgICAgICBpZiAobmV3Qm91bmRzICE9IG9sZEJvdW5kcykKLSAgICAgICAgICAgIHJlcGFp
bnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5l
d0JvdW5kcykpOworICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIHBpeGVsU25hcHBlZFJlY3QobmV3Qm91bmRzKSk7CiAgICAgfQogCiAgICAgY2xlYXJO
ZWVkc0xheW91dCgpOwpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBv
c2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dz
Lm1fc2l6ZXNbcl07CiAKICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsK
LSAgICAgICAgICAgIEludFJlY3Qgb2xkRnJhbWVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChj
aGlsZC0+ZnJhbWVSZWN0KCkpOworICAgICAgICAgICAgSW50UmVjdCBvbGRGcmFtZVJlY3QgPSBw
aXhlbFNuYXBwZWRSZWN0KGNoaWxkLT5mcmFtZVJlY3QoKSk7CiAKICAgICAgICAgICAgIGludCB3
aWR0aCA9IG1fY29scy5tX3NpemVzW2NdOwogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBSZW5k
ZXJGcmFtZVNldDo6cG9zaXRpb25GcmFtZXNXaXRoRmxhdHRlbmluZygpCiAgICAgICAgIHhQb3Mg
PSAwOwogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7IGMrKykgewogICAgICAgICAg
ICAgLy8gZW5zdXJlIHRoZSByb3dzIGFuZCBjb2x1bW5zIGFyZSBmaWxsZWQKLSAgICAgICAgICAg
IEludFJlY3Qgb2xkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoY2hpbGQtPmZyYW1lUmVjdCgp
KTsKKyAgICAgICAgICAgIEludFJlY3Qgb2xkUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoY2hpbGQt
PmZyYW1lUmVjdCgpKTsKIAogICAgICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKEludFBvaW50
KHhQb3MsIHlQb3MpKTsKICAgICAgICAgICAgIGNoaWxkLT5zZXRIZWlnaHQobV9yb3dzLm1fc2l6
ZXNbcl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3Bw
CmluZGV4IDAzNGYzNzg4ZmU2NzIyYTM3ZjZkZWU5NGM3NjQxNWRiMDg0YjdiZjUuLjJkNDI2YzA5
NTY5YmU3ZTIwMzg1NWIwZGE5OGYyNGUwZjg0ZDk1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSZW5k
ZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGEKICAgICBib29sIGNsaXAgPSAhY29udGVudFJlY3QuY29udGFpbnMocGFp
bnRSZWN0KTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0LCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50UmVjdCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRSZWN0KGNvbnRlbnRSZWN0KSk7CiAK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBkMjUzNDlkNzE5MGQ4YTY1ZjFhZjhhMTFiOTViMmRi
NTQyYmEzYWU2Li40ZjkyOGQ5NmMyODk1NGUyMjYxN2NiYWUwYzdiMDYwMzEyOThiZDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQxNiw3ICs0MTYsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChM
YXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9m
ZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdodCkpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZFJlY3QoTGF5b3V0UmVjdChwYWlu
dE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9w
Qm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpKSk7CiAKICAgICAgICAgICAgIGJvb2wg
ZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VP
ZmZzZXQ7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNl
ZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICNpZiBF
TkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRS
ZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSkpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBw
ZWRSZWN0KExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSks
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAg
ICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTY2
LDcgKzU2Niw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmFyZWFFbGVtZW50Rm9jdXNDaGFuZ2VkKEhU
TUxBcmVhRWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVj
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0g
ICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7CisgICAg
SW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocmVjdCk7CiAgICAgaWYgKCFp
bWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJl
ZCgpIHx8IGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8
PSAwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKaW5kZXggMWZiMWIwNGNlYWExMmNlNmIwODQyNGI2OGVlNjBlNWNkODk4ZWVlOC4u
MTYwZWE1NjZhMmMxMDVkMGRmNTE1MTE3ZTJiNWZmMGNlOGM5NDhlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTE1NTUsMTEgKzE1NTUsMTEgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBMYXlvdXRSZWN0IGJveChMYXlvdXRQb2ludChwYWlu
dE9mZnNldC54KCkgKyB0aGlzbGluZS54KCkgLSBvZmZzZXQsIHBhaW50T2Zmc2V0LnkoKSArIHRo
aXNsaW5lLnkoKSAtIG9mZnNldCksCiAgICAgICAgIExheW91dFNpemUodGhpc2xpbmUud2lkdGgo
KSArIG9mZnNldCwgdGhpc2xpbmUuaGVpZ2h0KCkgKyBvZmZzZXQpKTsKIAotICAgIEludFJlY3Qg
cGl4ZWxTbmFwcGVkQm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3gpOworICAgIEludFJlY3Qg
cGl4ZWxTbmFwcGVkQm94ID0gcGl4ZWxTbmFwcGVkUmVjdChib3gpOwogICAgIGlmIChwaXhlbFNu
YXBwZWRCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgSW50UmVjdCBwaXhlbFNu
YXBwZWRMYXN0TGluZSA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGFz
dGxpbmUueCgpLCAwLCBsYXN0bGluZS53aWR0aCgpLCAwKTsKLSAgICBJbnRSZWN0IHBpeGVsU25h
cHBlZE5leHRMaW5lID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54KCkgKyBuZXh0
bGluZS54KCksIDAsIG5leHRsaW5lLndpZHRoKCksIDApOworICAgIEludFJlY3QgcGl4ZWxTbmFw
cGVkTGFzdExpbmUgPSBwaXhlbFNuYXBwZWRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxhc3RsaW5l
LngoKSwgMCwgbGFzdGxpbmUud2lkdGgoKSwgMCk7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRO
ZXh0TGluZSA9IHBpeGVsU25hcHBlZFJlY3QocGFpbnRPZmZzZXQueCgpICsgbmV4dGxpbmUueCgp
LCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAvLyBsZWZ0IGVkZ2UKICAgICBk
cmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3BlZWNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAKaW5kZXggYmJhYjI3OWI3MWU3N2ViNjYwMTAy
NzIxNjc3YTAwNDY5M2RiYjVmYi4uMzJkYjczNDE3N2E5OGY3NTNhODI1M2MyNTU0YWQzOWQ3YzEy
MmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3Bl
ZWNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2gu
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgUmVuZGVySW5wdXRTcGVlY2g6OnBhaW50SW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QKICAgICAgICAgaW1h
Z2UgPSBpbWFnZVN0YXRlUmVjb3JkaW5nLmdldCgpOwogICAgIGVsc2UgaWYgKHNwZWVjaEJ1dHRv
bi0+c3RhdGUoKSA9PSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6UmVjb2duaXppbmcp
CiAgICAgICAgIGltYWdlID0gaW1hZ2VTdGF0ZVdhaXRpbmcuZ2V0KCk7Ci0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgb2JqZWN0LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
cGl4ZWxTbmFwcGVkSW50UmVjdChidXR0b25SZWN0KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZSwgb2JqZWN0LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFw
cGVkUmVjdChidXR0b25SZWN0KSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2NWUwZDIzMWRmZjNkMGU1ODVkYzlj
ZjY1ZWVmNDg4ZjRjNmQ5YmQzLi5jOWI1OTVlZmQ0YmY2Mjg3MTdiNDcxZTU0ZTY3NWFkMmZiOWRl
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQzOSw5
ICs0MzksOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJH
ZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXAsIFVwZGF0ZUxheQogICAgICAgICAgICAgaWYgKCFyZW5k
ZXJlcigpLnZpZXcoKS5wcmludGluZygpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBkaWRSZXBh
aW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKG1fcmVwYWludFN0YXR1cyAmIE5lZWRz
RnVsbFJlcGFpbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS5yZXBhaW50VXNp
bmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChvbGRSZXBh
aW50UmVjdCkpOworICAgICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZFJlcGFpbnRSZWN0
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3JlcGFpbnRSZWN0ICE9IG9sZFJlcGFpbnRS
ZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fcmVwYWludFJl
Y3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkucmVwYWludFVzaW5nQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3QobV9yZXBhaW50UmVjdCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVwYWludCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNob3VsZFJlcGFpbnRBZnRl
ckxheW91dCgpKSB7CkBAIC0xMjM5LDcgKzEyMzksNyBAQCBib29sIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9uKCkKICAgICAgICAgbG9jYWxQb2ludCArPSBpbmxpbmVCb3VuZGluZ0Jv
eE9mZnNldDsKICAgICB9IGVsc2UgaWYgKFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IElzIHNuYXBwaW5nIHRoZSBzaXplIHJlYWxseSBuZWVkZWQgaGVy
ZSBmb3IgdGhlIFJlbmRlckJveCBjYXNlPwotICAgICAgICBzZXRTaXplKHBpeGVsU25hcHBlZElu
dFNpemUoYm94LT5zaXplKCksIGJveC0+bG9jYXRpb24oKSkpOworICAgICAgICBzZXRTaXplKHBp
eGVsU25hcHBlZFNpemUoYm94LT5zaXplKCksIGJveC0+bG9jYXRpb24oKSkpOwogICAgICAgICBs
b2NhbFBvaW50ICs9IGJveC0+dG9wTGVmdExvY2F0aW9uT2Zmc2V0KCk7CiAgICAgfQogCkBAIC0x
OTIwLDcgKzE5MjAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb252ZXJ0VG9QaXhlbFNuYXBwZWRM
YXllckNvb3Jkcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYQogewogICAgIExheW91dFJl
Y3QgcmVjdCA9IHJvdW5kZWRSZWN0OwogICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9y
TGF5ZXIsIHJlY3QsIGFkanVzdEZvckNvbHVtbnMpOwotICAgIHJvdW5kZWRSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICByb3VuZGVkUmVjdCA9IHBpeGVsU25hcHBlZFJlY3Qo
cmVjdCk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGxheWVyIHJlYWNoZWQgb24gdGhlIHdhbGsgdXAg
dG93YXJkcyB0aGUgYW5jZXN0b3IuCkBAIC0yMzY0LDcgKzIzNjQsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAjZWxzZQogICAgIGlmIChyZXF1aXJlc1JlcGFp
bnQpCiAjZW5kaWYKLSAgICAgICAgcmVuZGVyZXIoKS5yZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlcGFpbnRSZWN0KSk7CisgICAg
ICAgIHJlbmRlcmVyKCkucmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBp
eGVsU25hcHBlZFJlY3QobV9yZXBhaW50UmVjdCkpOwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNj
cm9sbCBET00gZXZlbnQuCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmVs
ZW1lbnQoKSkKQEAgLTI0NzMsNyArMjQ3Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJl
Y3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAg
ICAgICAgICAgICAvLyB0aGF0IHB1dCB3ZWIgdmlld3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVy
cywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgogICAgICAgICAgICAgLy8gVGhlIGNhbkF1dG9zY3Jv
bGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3MgYWJvdXQgdGhpcy4KICAgICAg
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpKQotICAgICAg
ICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnNjcm9sbFJlY3RJbnRvVmlldyhwaXhlbFNuYXBwZWRJ
bnRSZWN0KHJlY3QpKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxSZWN0
SW50b1ZpZXcocGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
CkBAIC0yNzYwLDcgKzI3NjAsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJS
ZWN0KCkgY29uc3QKICAgICBib29sIGhhc1ZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIo
KTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSByZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkgIT0g
UkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNIb3Jpem9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFy
KSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9yaXpvbnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikp
KQotICAgICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3JuZXJSZWN0KHRoaXMsIHJl
bmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgcmV0dXJuIHBpeGVsU25hcHBl
ZFJlY3QoY29ybmVyUmVjdCh0aGlzLCByZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKSk7CiAg
ICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIApAQCAtMzUwOSw3ICszNTA5LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5b3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMYXlvdXRSZWN0IGlt
YWdlUmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXpl
clNpemUsIGNvcm5lclJlc2l6ZXJTaXplKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXpl
Q29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIHBpeGVs
U25hcHBlZEludFJlY3QoaW1hZ2VSZWN0KSk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc2l6
ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhl
bFNuYXBwZWRSZWN0KGltYWdlUmVjdCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpwYWludFJl
c2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpCkBAIC0zNTQ3LDcgKzM1NDcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZEludFJlY3QobGFyZ2VyQ29y
bmVyKSk7CisgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHBpeGVsU25hcHBlZFJlY3QobGFyZ2Vy
Q29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNTc1LDcgKzM1NzUsNyBAQCBib29sIFJlbmRlckxh
eWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0
IEludFBvaW50JgogICAgIAogICAgIEludFJlY3QgcmVzaXplQ29udHJvbFJlY3Q7CiAgICAgaWYg
KHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORSkgewotICAgICAgICBy
ZXNpemVDb250cm9sUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVzaXplckNvcm5lclJlY3Qo
dGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgcmVzaXplQ29udHJvbFJlY3Qg
PSBwaXhlbFNuYXBwZWRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94
UmVjdCgpKSk7CiAgICAgICAgIGlmIChyZXNpemVDb250cm9sUmVjdC5jb250YWlucyhsb2NhbFBv
aW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM2NTcsNyArMzY1Nyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiB7CiAgICAgaWYgKGNsaXBSZWN0LnJlY3QoKSAh
PSBwYWludERpcnR5UmVjdCkgewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGNv
bnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwUmVjdC5yZWN0KCkpKTsKKyAgICAg
ICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRSZWN0KGNsaXBSZWN0LnJlY3QoKSkpOwogICAg
IH0KIAogICAgIGlmICghY2xpcFJlY3QuaGFzUmFkaXVzKCkpCkBAIC00Mzk4LDcgKzQzOTgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhl
IGJhY2tncm91bmQuCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVj
dCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJv
bSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBw
aXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50
UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0lu
Zm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhj
b250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSks
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWlu
dGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWlu
dChwYWludEluZm8sIHRvUG9pbnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJl
bmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhlbEFjY3VtdWxhdGlv
bikpOwogCiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCkBA
IC00NDcxLDcgKzQ0NzEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgICAgICBpZiAo
c2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBUb1JlY3QobG9jYWxQYWludGluZ0luZm8ucm9v
dExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZnJhZ21l
bnQuZm9yZWdyb3VuZFJlY3QpOwogICAgIAotICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNv
bnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgp
KSwgcGhhc2UsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9j
YWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVy
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhl
bFNuYXBwZWRSZWN0KGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSksIHBoYXNlLCBwYWlu
dEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZv
LnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7
CiAgICAgICAgIGlmIChwaGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgICAg
IHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzID0gbG9jYWxQYWludGluZ0luZm8ub3Zlcmxh
cFRlc3RSZXF1ZXN0czsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHRvUG9p
bnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkg
KyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhlbEFjY3VtdWxhdGlvbikpOwpAQCAtNDQ5MCw3ICs0
NDkwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgIAogICAgICAgICAvLyBQYWludCBvdXIgb3duIG91dGxpbmUKLSAgICAgICAgUGFpbnRJbmZv
IHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50Lm91dGxpbmVS
ZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3VidHJl
ZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdpb24sIDAsIDAsICZs
b2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICBQYWludElu
Zm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QoZnJhZ21lbnQub3V0bGluZVJl
Y3QucmVjdCgpKSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVl
UGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxv
Y2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGNsaXBUb1Jl
Y3QobG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQub3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZG
b3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9Q
b2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24o
KSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAgICAgICAgIHJl
c3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFn
bWVudC5vdXRsaW5lUmVjdCk7CkBAIC00NTEwLDcgKzQ1MTAsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21l
bnRzLCBHcgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2suCiAgICAgICAgIC8v
IEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZy
YWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAg
ICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdt
ZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VNYXNrLCBQYWludEJlaGF2aW9y
Tm9ybWFsLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJl
Z2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7Cisg
ICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdChmcmFn
bWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlTWFzaywgUGFpbnRCZWhhdmlv
ck5vcm1hbCwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5y
ZWdpb24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwog
ICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9Qb2ludChmcmFnbWVudC5sYXll
ckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJ
bmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBpZiAobG9jYWxQ
YWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQpAQCAtNDUyNCw3ICs0NTI0LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckYKICAgICAgICAgY29uc3QgTGF5ZXJGcmFnbWVudCYgZnJhZ21lbnQg
PSBsYXllckZyYWdtZW50cy5hdChpKTsKICAgICAgICAgY2xpcFRvUmVjdChsb2NhbFBhaW50aW5n
SW5mby5yb290TGF5ZXIsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCk7CiAgICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9s
cyhjb250ZXh0LCByb3VuZGVkSW50UG9pbnQodG9Qb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5s
b2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBp
eGVsQWNjdW11bGF0aW9uKSksCi0gICAgICAgICAgICBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdt
ZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIHRydWUpOworICAgICAgICAgICAgcGl4ZWxTbmFw
cGVkUmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpLCB0cnVlKTsKICAgICAgICAg
cmVzdG9yZUNsaXAoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGZy
YWdtZW50LmJhY2tncm91bmRSZWN0KTsKICAgICB9CiB9CkBAIC00NTg2LDcgKzQ1ODYsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciog
Y2hpbGRMYXllciwgR3JhcGhpY3NDbwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBFYWNo
IHN0cmlwIHB1c2hlcyBhIGNsaXAsIHNpbmNlIGNvbHVtbiBib3hlcyBhcmUgc3BlY2lmaWVkIGFz
IGJlaW5nCiAgICAgICAgICAgICAvLyBsaWtlIG92ZXJmbG93OmhpZGRlbi4KLSAgICAgICAgICAg
IGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChjb2xSZWN0KSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZFJlY3QoY29sUmVjdCkpOwogCiAgICAgICAgICAg
ICBpZiAoIWNvbEluZGV4KSB7CiAgICAgICAgICAgICAgICAgLy8gQXBwbHkgYSB0cmFuc2xhdGlv
biB0cmFuc2Zvcm0gdG8gY2hhbmdlIHdoZXJlIHRoZSBsYXllciBwYWludHMuCkBAIC01MDMxLDcg
KzUwMzEsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0UmVzaXplckluRnJhZ21lbnRzKGNv
bnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cwogCiAgICAgZm9yIChpbnQgaSA9IGxh
eWVyRnJhZ21lbnRzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGNvbnN0IExh
eWVyRnJhZ21lbnQmIGZyYWdtZW50ID0gbGF5ZXJGcmFnbWVudHMuYXQoaSk7Ci0gICAgICAgIGlm
IChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RMb2NhdGlvbikgJiYg
cmVzaXplckNvcm5lclJlY3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFnbWVudC5sYXll
ckJvdW5kcykpLmNvbnRhaW5zKGhpdFRlc3RMb2NhdGlvbi5yb3VuZGVkUG9pbnQoKSkpCisgICAg
ICAgIGlmIChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RMb2NhdGlv
bikgJiYgcmVzaXplckNvcm5lclJlY3QodGhpcywgcGl4ZWxTbmFwcGVkUmVjdChmcmFnbWVudC5s
YXllckJvdW5kcykpLmNvbnRhaW5zKGhpdFRlc3RMb2NhdGlvbi5yb3VuZGVkUG9pbnQoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC01NzU4LDcgKzU3NTgsNyBA
QCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3VuZGluZ0JveChjb25zdCBSZW5kZXJMYXllciog
YW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTAogCiBJbnRSZWN0IFJlbmRlckxheWVyOjphYnNvbHV0
ZUJvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChi
b3VuZGluZ0JveChyb290KCkpKTsKKyAgICByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChib3VuZGlu
Z0JveChyb290KCkpKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5
ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNvbnN0IExheW91dFBv
aW50KiBvZmZzZXRGcm9tUm9vdCwgQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncyBmbGFncykgY29u
c3QKQEAgLTYzMDQsMTMgKzYzMDQsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05l
ZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaGljc0xheWUKIAogICAg
ICAgICByZW5kZXJlcigpLnZpZXcoKS5yZXBhaW50Vmlld1JlY3RhbmdsZShhYnNSZWN0KTsKICAg
ICB9IGVsc2UKLSAgICAgICAgYmFja2luZygpLT5zZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0
KHBpeGVsU25hcHBlZEludFJlY3QociksIHNob3VsZENsaXApOworICAgICAgICBiYWNraW5nKCkt
PnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QocGl4ZWxTbmFwcGVkUmVjdChyKSwgc2hvdWxk
Q2xpcCk7CiB9CiAKIC8vIFNpbmNlIHdlJ3JlIG9ubHkgcGFpbnRpbmcgbm9uLWNvbXBvc2l0ZWQg
bGF5ZXJzLCB3ZSBrbm93IHRoYXQgdGhleSBhbGwgc2hhcmUgdGhlIHNhbWUgcmVwYWludENvbnRh
aW5lci4KIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rl
c2NlbmRhbnRzKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7Ci0g
ICAgcmVuZGVyZXIoKS5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4
ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlcigpLmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpKSk7CisgICAgcmVuZGVyZXIoKS5yZXBhaW50VXNpbmdDb250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkUmVjdChyZW5kZXJlcigpLmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKSk7CiAKICAgICBmb3IgKFJl
bmRlckxheWVyKiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoIWN1cnItPmlzQ29tcG9zaXRlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA5ZDdiZGRl
YTYxOWIzOGRjYzRlMmMzZDBlYzk0MzMyYzY0OTZjNzFmLi5hZWExNjYwNGNkZDM3YjEwNDg1ZmZj
NTkxM2IwYWNlM2Q0OTVlMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyBJbnRSZWN0IGNs
aXBCb3goUmVuZGVyQm94JiByZW5kZXJlcikKICAgICBpZiAocmVuZGVyZXIuaGFzQ2xpcCgpKQog
ICAgICAgICByZXN1bHQuaW50ZXJzZWN0KHJlbmRlcmVyLmNsaXBSZWN0KExheW91dFBvaW50KCks
IDApKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAKLSAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZXN1bHQpOworICAgIHJldHVybiBwaXhlbFNuYXBwZWRSZWN0
KHJlc3VsdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xh
eWVyR2VvbWV0cnkoKQpAQCAtNzA2LDcgKzcwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIEludFJlY3QgYW5jZXN0b3JDb21w
b3NpdGluZ0JvdW5kczsKICAgICBpZiAoY29tcEFuY2VzdG9yKSB7CiAgICAgICAgIEFTU0VSVChj
b21wQW5jZXN0b3ItPmJhY2tpbmcoKSk7Ci0gICAgICAgIGFuY2VzdG9yQ29tcG9zaXRpbmdCb3Vu
ZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbXBBbmNlc3Rvci0+YmFja2luZygpLT5jb21wb3Np
dGVkQm91bmRzKCkpOworICAgICAgICBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzID0gcGl4ZWxT
bmFwcGVkUmVjdChjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+Y29tcG9zaXRlZEJvdW5kcygpKTsK
ICAgICB9CiAKICAgICBMYXlvdXRSZWN0IGxvY2FsUmF3Q29tcG9zaXRpbmdCb3VuZHMgPSBjb21w
b3NpdGVkQm91bmRzKCk7CkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgLy8gTW92ZSB0aGUgYm91bmRz
IGJ5IHRoZSBzdWJwaXhlbCBhY2N1bXVsYXRpb24gc28gdGhhdCBpdCBwaXhlbC1zbmFwcyByZWxh
dGl2ZSB0byBhYnNvbHV0ZSBwaXhlbHMgaW5zdGVhZCBvZiBsb2NhbCBjb29yZGluYXRlcy4KICAg
ICBsb2NhbFJhd0NvbXBvc2l0aW5nQm91bmRzLm1vdmUobV9zdWJwaXhlbEFjY3VtdWxhdGlvbik7
CiAKLSAgICBJbnRSZWN0IGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGxvY2FsUmF3Q29tcG9zaXRpbmdCb3VuZHMpOworICAgIEludFJlY3QgbG9jYWxDb21wb3Np
dGluZ0JvdW5kcyA9IHBpeGVsU25hcHBlZFJlY3QobG9jYWxSYXdDb21wb3NpdGluZ0JvdW5kcyk7
CiAgICAgSW50UmVjdCByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzKGxvY2FsQ29tcG9zaXRpbmdC
b3VuZHMpOwogICAgIHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMubW92ZUJ5KGRlbHRhKTsKIApA
QCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGlj
c0xheWVyR2VvbWV0cnkoKQogICAgICAgICAvLyBsYXllci4gTm90ZSB0aGF0IHdlIGNhbGwgaXQg
d2l0aCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSB0cnVlIGJlY2F1c2Ugbm9ybWFsbHkgd2hlbiBjb21w
dXRpbmcgY2xpcCByZWN0cwogICAgICAgICAvLyBmb3IgYSBjb21wb3NpdGluZyBsYXllciwgcm9v
dExheWVyIGlzIHRoZSBsYXllciBpdHNlbGYuCiAgICAgICAgIFJlbmRlckxheWVyOjpDbGlwUmVj
dHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQoY29tcEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlw
UmVjdHMsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBJZ25vcmVPdmVyZmxvd0NsaXApOwot
ICAgICAgICBJbnRSZWN0IHBhcmVudENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293
bmluZ0xheWVyLmJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHNDb250ZXh0KS5yZWN0KCkpOyAv
LyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KKyAgICAgICAgSW50UmVjdCBwYXJl
bnRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QobV9vd25pbmdMYXllci5iYWNrZ3JvdW5kQ2xp
cFJlY3QoY2xpcFJlY3RzQ29udGV4dCkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3Ig
Q1NTIHJlZ2lvbnMuCiAgICAgICAgIEFTU0VSVChwYXJlbnRDbGlwUmVjdCAhPSBJbnRSZWN0Ojpp
bmZpbml0ZVJlY3QoKSk7CiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRQb3Np
dGlvbihGbG9hdFBvaW50KHBhcmVudENsaXBSZWN0LmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVy
UGFyZW50TG9jYXRpb24pKTsKICAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFNp
emUocGFyZW50Q2xpcFJlY3Quc2l6ZSgpKTsKQEAgLTEwOTcsMTQgKzEwOTcsMTQgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUludGVybmFsSGllcmFyY2h5KCkKIAogdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNSZWN0KCkKIHsKLSAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94KCkpKTsK
KyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChwaXhlbFNuYXBwZWRSZWN0KGNv
bnRlbnRzQm94KCkpKTsKICAgICAKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0
OwogICAgIGlmIChyZW5kZXJlcigpLmlzQm94KCkpCiAgICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdS
ZWN0ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY29udGVudEJveFJlY3QoKTsKIAogICAgIGNv
bnRlbnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVyKCkp
OwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QocGl4ZWxTbmFw
cGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0Q29udGVudHNDbGlwcGluZ1JlY3QocGl4ZWxTbmFwcGVkUmVjdChjb250ZW50c0NsaXBwaW5n
UmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXplKEludFNp
emUoKSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShJbnRQb2lu
dCgpKTsKQEAgLTE5MjgsMTEgKzE5MjgsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUltYWdlQ29udGVudHMoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEg
bm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGlt
YWdlLgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZElu
dFJlY3QoY29udGVudHNCb3goKSkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNS
ZWN0KHBpeGVsU25hcHBlZFJlY3QoY29udGVudHNCb3goKSkpOwogCiAgICAgTGF5b3V0UmVjdCBj
b250ZW50c0NsaXBwaW5nUmVjdCA9IGltYWdlUmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKICAg
ICBjb250ZW50c0NsaXBwaW5nUmVjdC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXll
cigpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KHBpeGVs
U25hcHBlZEludFJlY3QoY29udGVudHNDbGlwcGluZ1JlY3QpKTsKKyAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KHBpeGVsU25hcHBlZFJlY3QoY29udGVudHNDbGlw
cGluZ1JlY3QpKTsKIAogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKICAgICBib29sIGlzU2ltcGxlQ29udGFpbmVyID0gZmFsc2U7CkBAIC0yMDIyLDcgKzIw
MjIsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyQmFja2luZzo6YmFja2dyb3VuZEJveCgpIGNvbnN0
CiAKICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRCb3ggPSBiYWNrZ3JvdW5kUmVjdEZvckJveCh0
b1JlbmRlckJveChyZW5kZXJlcigpKSk7CiAgICAgYmFja2dyb3VuZEJveC5tb3ZlKGNvbnRlbnRP
ZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVj
dChiYWNrZ3JvdW5kQm94KTsKKyAgICByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChiYWNrZ3JvdW5k
Qm94KTsKIH0KIAogR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJCYWNraW5nOjpwYXJlbnRGb3JT
dWJsYXllcnMoKSBjb25zdApAQCAtMjEyNyw3ICsyMTI3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgciwgR3Jh
cGhpY3MKIAogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gb3duaW5nTGF5ZXIoKS5yZW5kZXJl
cigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdM
YXllciAmJiBmcmFtZVZpZXcuaXNUcmFja2luZ1JlcGFpbnRzKCkpCi0gICAgICAgIGZyYW1lVmll
dy5hZGRUcmFja2VkUmVwYWludFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChyKSk7CisgICAgICAg
IGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWludFJlY3QocGl4ZWxTbmFwcGVkUmVjdChyKSk7CiAK
ICAgICBpZiAobV9ncmFwaGljc0xheWVyICYmIG1fZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50
KCkpIHsKICAgICAgICAgSW50UmVjdCBsYXllckRpcnR5UmVjdCA9IHI7CkBAIC0yMjU4LDcgKzIy
NTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnko
KSk7CiAgICAgICAgIExheW91dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICAgICAg
dHJhbnNmb3JtZWRDbGlwLm1vdmVCeShzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkp
OwotICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBJbnRQ
b2ludCgpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBt
X293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCBwaXhl
bFNuYXBwZWRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOwogICAgICAgICBtX293bmluZ0xheWVyLnBh
aW50UmVzaXplcigmY29udGV4dCwgSW50UG9pbnQoKSwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4NGEyNzFkOGNlYmY1NjY0OGRk
ODNlMGMzMzVhZDZlYmEyNmRiNmE1Li5lYzdiMzRjOTNkYThkZTY2OWE3OTgwNWVkMWQxMzQyMjll
MTEzYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjphZGRUb092ZXJsYXBNYXAoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuZGVyTGF5ZXIm
CiAgICAgICAgIGJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBJbnRSZWN0IGNs
aXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsYXllci5iYWNrZ3JvdW5kQ2xpcFJlY3QoUmVu
ZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQoJnJvb3RSZW5kZXJMYXllcigpLCAwLCBBYnNvbHV0
ZUNsaXBSZWN0cykpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25z
LgorICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGxheWVyLmJhY2tncm91
bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJlY3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVy
KCksIDAsIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBm
b3IgQ1NTIHJlZ2lvbnMuCiAKICAgICAvLyBPbiBpT1MsIHBhZ2VTY2FsZUZhY3RvcigpIGlzIG5v
dCBhcHBsaWVkIGJ5IFJlbmRlclZpZXcsIHNvIHdlIHNob3VsZCBub3Qgc2NhbGUgaGVyZS4KICAg
ICAvLyBGSVhNRTogU2V0IFNldHRpbmdzOjpkZWxlZ2F0ZXNQYWdlU2NhbGluZyB0byB0cnVlIGZv
ciBpT1MuCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAg
ICAgICByZXR1cm4gcGx1Z2luUmVuZGVyZXIuaGFzTGF5ZXIoKSAmJiBwbHVnaW5SZW5kZXJlci5s
YXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAgIC8vIERvbid0IGdvIGludG8gY29tcG9zaXRp
bmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHplcm8sIG9yIHNpemUgaXMgMXgxLgotICAg
IEludFJlY3QgY29udGVudEJveCA9IHBpeGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXIu
Y29udGVudEJveFJlY3QoKSk7CisgICAgSW50UmVjdCBjb250ZW50Qm94ID0gcGl4ZWxTbmFwcGVk
UmVjdChwbHVnaW5SZW5kZXJlci5jb250ZW50Qm94UmVjdCgpKTsKICAgICByZXR1cm4gY29udGVu
dEJveC5oZWlnaHQoKSAqIGNvbnRlbnRCb3gud2lkdGgoKSA+IDE7CiB9CiAKQEAgLTIzNzgsNyAr
MjM3OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yRnJhbWUoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYKICAgICAgICAgcmV0dXJuIGZyYW1lUmVu
ZGVyZXIuaGFzTGF5ZXIoKSAmJiBmcmFtZVJlbmRlcmVyLmxheWVyKCktPmlzQ29tcG9zaXRlZCgp
OwogICAgIAogICAgIC8vIERvbid0IGdvIGludG8gY29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQg
b3Igd2lkdGggYXJlIHplcm8uCi0gICAgcmV0dXJuICFwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1l
UmVuZGVyZXIuY29udGVudEJveFJlY3QoKSkuaXNFbXB0eSgpOworICAgIHJldHVybiAhcGl4ZWxT
bmFwcGVkUmVjdChmcmFtZVJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCkpLmlzRW1wdHkoKTsKIH0K
IAogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmlt
YXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYzVlYjk4MTgzZjI3YWEzMjk4
NWU2NzZlNjI4YzBjMjhjYjhhYTFlZS4uMTA4MTNkODQxMzkwZWI0MWYyYzY3MmFiOGNmZTYzYzQ5
NTY3Mzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApA
QCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgLy8gRm9jdXMg
dGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4KICAgICBpbnQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0RWxl
bWVudCgpLmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpOwogICAgIGlmIChzZWxlY3RlZEl0
ZW0gPj0gMCkgewotICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVt
Qm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNlbGVjdGVkSXRlbSkpKTsKKyAgICAg
ICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRp
dGlvbmFsT2Zmc2V0LCBzZWxlY3RlZEl0ZW0pKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBIVE1M
RWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKICAgICAgICAgaWYgKGlzSFRNTE9wdGlv
bkVsZW1lbnQoZWxlbWVudCkgJiYgIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7
CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50KCkuc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgo
aSk7Ci0gICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVtQm91
bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIGkpKSk7CisgICAgICAgICAgICByZWN0cy5h
cHBlbmQocGl4ZWxTbmFwcGVkUmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZz
ZXQsIGkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDUs
MTIgKzM0NSwxMiBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50Jgogdm9pZCBSZW5kZXJMaXN0Qm94
OjpwYWludFNjcm9sbGJhcihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewogICAgIGlmIChtX3ZCYXIpIHsKLSAgICAgICAgSW50UmVjdCBzY3Jv
bGxSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54KCkgKyB3aWR0aCgpIC0g
Ym9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKKyAgICAgICAgSW50UmVjdCBzY3JvbGxS
ZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChwYWludE9mZnNldC54KCkgKyB3aWR0aCgpIC0gYm9yZGVy
UmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKICAgICAgICAgICAgIHBhaW50T2Zmc2V0LnkoKSAr
IGJvcmRlclRvcCgpLAogICAgICAgICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAg
aGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkpOwogICAgICAgICBtX3ZC
YXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92QmFyLT5wYWludChwYWlu
dEluZm8uY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAg
ICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KHBh
aW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gbGlzdEl0ZW1F
bGVtZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5j
b2xvclNwYWNlKCkgOiBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBp
dGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAg
ICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qo
aXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29s
b3JTcGFjZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAKaW5kZXggZjI4NGU0MzkyZDg2ZTQ4Yzg5NmRmMDEwNmU5YWFmYTllMTA2
OGIyOS4uYWIyZmNiZjFkNzEzNjFiMmVjMDI2NjcxMmNmZmI5Yzc2NjQxNzVkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE4NSw3ICsx
MTg1LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5
KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dSZWN0LmluZmxhdGUobWF4aW1hbE91dGxpbmVTaXpl
KHBhaW50SW5mby5waGFzZSkpOwogCi0gICAgaWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3Rz
KHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAgaWYgKCFwYWludEluZm8u
cmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZFJlY3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFJlY3QgYm94KGJveE9yaWdpbiwgc2l6ZSgpKTsKQEAgLTEy
MDQsNyArMTIwNCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGlmIChzZWxl
Y3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qg
c2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3Zl
QnkoYm94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEludFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRS
ZWN0KHNlbFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjE4LDcgKzEy
MTgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgp
ICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxT
ZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCksIHNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgY29uc3Qg
Q29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKaW5kZXggNzJlYjZm
NzFjZWI5ZWZlMzZjZjZkNDBkN2FmOGQ5Y2QwZjBmZTgxZi4uOTEyMDdhNTRjMDE1ZjRlMjEwZjE2
NGQwMjlhZGYzMDA0MWVjMjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0
ZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OnVwZGF0ZUxvZ2ljYWxX
aWR0aCgpCiB7CiAgICAgUmVuZGVyQm94Ojp1cGRhdGVMb2dpY2FsV2lkdGgoKTsKIAotICAgIElu
dFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxT
bmFwcGVkSW50UmVjdChmcmFtZVJlY3QoKSkpOworICAgIEludFNpemUgZnJhbWVTaXplID0gdGhl
bWUoKS5tZXRlclNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkUmVjdChmcmFtZVJlY3Qo
KSkpOwogICAgIHNldExvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJh
bWVTaXplLndpZHRoKCkgOiBmcmFtZVNpemUuaGVpZ2h0KCkpOwogfQogCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpCiAgICAgICAgIGZyYW1lLnNldEhlaWdodChjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxzZQogICAgICAgICBmcmFtZS5zZXRXaWR0aChj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgp
Lm1ldGVyU2l6ZUZvckJvdW5kcyh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lKSk7Cisg
ICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVyU2l6ZUZvckJvdW5kcyh0aGlzLCBw
aXhlbFNuYXBwZWRSZWN0KGZyYW1lKSk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXpl
LndpZHRoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwCmluZGV4IGVkMzA5ZGFlYTg1YzgzOWMyZDU3NDAyNWQ4MWZlZGMyMTk1
NTI2MmQuLjFmYmJmY2RkNTg1ZjNmMTJlMTI2ZjM2MGUyY2ViOGRlNzMzMzg4ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAt
NDQyLDcgKzQ0Miw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVs
ZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBydWxlUmlnaHQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcnVsZUxl
ZnQgKyBydWxlVGhpY2tuZXNzIDogcnVsZUxlZnQgKyBjb250ZW50V2lkdGgoKTsKICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNl
dC55KCkgKyBydWxlTG9naWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHJ1bGVUb3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNr
bmVzczsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdEZyb21FZGdlcyhydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0LCBy
dWxlQm90dG9tKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0
ID0gcGl4ZWxTbmFwcGVkUmVjdEZyb21FZGdlcyhydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0
LCBydWxlQm90dG9tKTsKICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUocGFpbnRJ
bmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVSZWN0LngoKSwgcGl4ZWxTbmFwcGVkUnVsZVJl
Y3QueSgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhYKCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0
Lm1heFkoKSwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIFJl
bmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xD
b3VudDsgaSsrKSB7CiAgICAgICAgICAgICBydWxlUmVjdC5tb3ZlKHN0ZXApOwotICAgICAgICAg
ICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocnVs
ZVJlY3QpOworICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVs
U25hcHBlZFJlY3QocnVsZVJlY3QpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBh
aW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1
bGVSZWN0LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxl
UmVjdC5tYXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxp
YXMpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCBjMzBiNTI1YmI0ZjNhYmE3MDQ3NWFjNDUzYzAxMzNiMDZlMDA3MmE1Li45
YzE3ZDdmMDJkYjRkZmNmNmU3MGI3YTAxOTVjNTllZjUwZmNlZGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5b3V0UmVjdCYgcmVjCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gdG9FbGVtZW50
KG4pLT5nZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwogICAgIGlmIChocmVmLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICBjb250ZXh0
LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIHBpeGVsU25h
cHBlZFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCkBAIC0xMDA3
LDEwICsxMDA3LDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjCiAgICAgaWYgKHN0eWxlVG9V
c2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGUoKSA9PSBC
Tk9ORSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBpbm5lciA9IHBpeGVsU25hcHBl
ZEludFJlY3QocGFpbnRSZWN0KTsKKyAgICBJbnRSZWN0IGlubmVyID0gcGl4ZWxTbmFwcGVkUmVj
dChwYWludFJlY3QpOwogICAgIGlubmVyLmluZmxhdGUob3V0bGluZU9mZnNldCk7CiAKLSAgICBJ
bnRSZWN0IG91dGVyID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lcik7CisgICAgSW50UmVjdCBv
dXRlciA9IHBpeGVsU25hcHBlZFJlY3QoaW5uZXIpOwogICAgIG91dGVyLmluZmxhdGUob3V0bGlu
ZVdpZHRoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByZXZlbnRzIG91dGxpbmVzIGZyb20gcGFp
bnRpbmcgaW5zaWRlIHRoZSBvYmplY3QuIFNlZSBidWcgMTIwNDIKQEAgLTExMzIsNyArMTEzMiw3
IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVz
ZVRyYW5zZm9ybXMpIGNvbnN0CiAgICAgTGF5b3V0UmVjdCByZXN1bHQgPSByZWN0c1swXTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICAgcmVzdWx0LnVuaXRlKHJl
Y3RzW2ldKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChyZXN1bHQpOworICAgIHJl
dHVybiBwaXhlbFNuYXBwZWRSZWN0KHJlc3VsdCk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0Ojph
YnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKQEAgLTEyODcs
NyArMTI4Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZXBhaW50KGJvb2wgaW1tZWRpYXRlKSBj
b25zdAogICAgICAgICByZXR1cm47IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcu
CiAKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gY29udGFp
bmVyRm9yUmVwYWludCgpOwotICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIHBpeGVsU25hcHBlZEludFJlY3QoY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpLCBpbW1lZGlhdGUpOwor
ICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRh
aW5lciA6IHZpZXcsIHBpeGVsU25hcHBlZFJlY3QoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lcikpLCBpbW1lZGlhdGUpOwogfQogCiB2b2lkIFJlbmRlck9iamVj
dDo6cmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSwg
Ym9vbCBzaG91bGRDbGlwVG9MYXllcikgY29uc3QKQEAgLTEzMDgsMTIgKzEzMDgsMTIgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgciwgYm9v
bCBpbW1lZGlhdGUsIGJvb2wgc2gKIAogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBhaW50KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KHJlcGFpbnRDb250YWluZXIsIGRpcnR5UmVjdCk7Ci0gICAgcmVwYWludFVzaW5nQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBhaW50Q29udGFpbmVyIDogdmlldywgcGl4ZWxT
bmFwcGVkSW50UmVjdChkaXJ0eVJlY3QpLCBpbW1lZGlhdGUsIHNob3VsZENsaXBUb0xheWVyKTsK
KyAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciA/IHJlcGFpbnRDb250
YWluZXIgOiB2aWV3LCBwaXhlbFNuYXBwZWRSZWN0KGRpcnR5UmVjdCksIGltbWVkaWF0ZSwgc2hv
dWxkQ2xpcFRvTGF5ZXIpOwogfQogCiBJbnRSZWN0IFJlbmRlck9iamVjdDo6cGl4ZWxTbmFwcGVk
QWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGl4ZWxT
bmFwcGVkSW50UmVjdChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CisgICAgcmV0dXJu
IHBpeGVsU25hcHBlZFJlY3QoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCiBi
b29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IDZhNDE5N2Fj
YmQzNzMxZWM4Yjk3ODA3NDE1YmE5NmNkYjA0NTEzYzcuLjQwYjJjMmM3NjJiYjFmYzAwNTMzYjI3
YTVmNDdkNjQ3ODFlZjM4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBy
b2dyZXNzLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbAogICAg
ICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UK
ICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIElu
dFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5wcm9ncmVzc0JhclJlY3RGb3JCb3VuZHModGhpcywg
cGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkpLnNpemUoKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6
ZSA9IHRoZW1lKCkucHJvZ3Jlc3NCYXJSZWN0Rm9yQm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZFJl
Y3QoZnJhbWUpKS5zaXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRo
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmlu
ZGV4IDg0ODFiZDg0ZjUyODY1MGNjMTlmNTBmZjRjMTRkNTlhMjUwNzhlNWIuLmEzYjAyMmVlYWMw
MjJmYjQ0NGYxNWNjMTZlMTllN2UxNjk5ZmIwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVuZGVyUmVw
bGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJl
Y3Qgc2VsZWN0aW9uUGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAg
IHNlbGVjdGlvblBhaW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVj
dGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNu
YXBwZWRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggZDA1YjhlYzgyMGFk
NmVhNWE0NzdlMWFlYjFlMzU0ZmQxNjUzYzhmMy4uYWY4MTc2NDExNGJiMzhiODI3NTQ5NGUwYmFi
MjhmOTFiMzUxMGRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFy
UGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QKICAgICB9CiAgICAgCiAgICAgLy8gTm93IGRvIHRoZSBwYWludC4KLSAgICBQYWludEluZm8g
cGFpbnRJbmZvKGdyYXBoaWNzQ29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSwgUGFp
bnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgUGFpbnRCZWhhdmlvck5vcm1hbCk7CisgICAgUGFpbnRJ
bmZvIHBhaW50SW5mbyhncmFwaGljc0NvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QocmVjdCksIFBh
aW50UGhhc2VCbG9ja0JhY2tncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwpOwogICAgIHBhaW50
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhh
c2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CiAgICAgcGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApp
bmRleCBjMWIyMzdjMzBhMTAwMDNmMzcxNGI4NzI3MDJkYTYxNzM0NjBmOGIzLi44Y2VkMjQ4ZmM4
YjY5MTZhYmEzM2U0ZWUxZWY1MDg3MmQ2ZTcyMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJl
bmRlclNlYXJjaEZpZWxkOjpzaG93UG9wdXAoKQogICAgICAgICBtX3NlYXJjaFBvcHVwLT5zYXZl
UmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRTZWFyY2hlcyk7CiAgICAgfQogCi0gICAgbV9z
ZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3cocGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCgpKSwgJnZpZXcoKS5mcmFtZVZpZXcoKSwgLTEpOworICAgIG1fc2Vh
cmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KHBpeGVsU25hcHBlZFJlY3QoYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSksICZ2aWV3KCkuZnJhbWVWaWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5k
ZXJTZWFyY2hGaWVsZDo6aGlkZVBvcHVwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDQyZWVjNDMwYjcxOTEyOGE1
OGNhZjAzYzc1ZDM3YmYzNTI5ZmViY2EuLjJhMDA0ZWE0YjM1YTNhZjg5NGI1OTM4NjQxOWVkYWJl
OTJkZGNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvCiAgICAgY29udGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0
KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxpZ25lZFJlY3Qg
PSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOworICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBw
aXhlbFNuYXBwZWRSZWN0KHJlY3QpOwogICAgIGlmIChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAg
fHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IGUwNmE0NjliNDA2
MzJhNjZmYWYwZmVhYmFlMjczYTcwMjMwN2Y2NDEuLmNhNTc3OGRlYTk3ZTZkOTFiM2E4ZWRjZGY4
OGY1MmM0MzIzMTFmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCkBAIC0xMjI0LDkgKzEyMjQsOSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFp
bnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwog
ICAgIGlmIChSZW5kZXJUYWJsZUNlbGwqIHJpZ2h0ID0gY2VsbEF0UmlnaHQoJnN0eWxlRm9yQ2Vs
bEZsb3cpKQogICAgICAgICBzaG91bGREcmF3UmlnaHRCb3JkZXIgPSByaWdodC0+YWxpZ25Ub3BC
b3R0b21Cb3JkZXJQYWludFJlY3QodG9wWU9mZnNldFJpZ2h0LCBib3R0b21ZT2Zmc2V0UmlnaHQp
OwogCi0gICAgSW50UmVjdCBjZWxsUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0
LngoKSwgcGFpbnRSZWN0LnkoKSwgcGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQo
KSk7CisgICAgSW50UmVjdCBjZWxsUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocGFpbnRSZWN0Lngo
KSwgcGFpbnRSZWN0LnkoKSwgcGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSk7
CiAKLSAgICBJbnRSZWN0IGJvcmRlclJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVj
dC54KCkgLSBsZWZ0V2lkdGggLyAyLAorICAgIEludFJlY3QgYm9yZGVyUmVjdCA9IHBpeGVsU25h
cHBlZFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVj
dC55KCkgLSB0b3BXaWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC53aWR0aCgpICsgbGVmdFdp
ZHRoIC8gMiArIChyaWdodFdpZHRoICsgMSkgLyAyLAogICAgICAgICBwYWludFJlY3QuaGVpZ2h0
KCkgKyB0b3BXaWR0aCAvIDIgKyAoYm90dG9tV2lkdGggKyAxKSAvIDIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggYWNlNWZjNmI5NjE2
YTVjMzc3OTk0NzYxOGU0NzBlYjc4OTVkZDE0NS4uM2RiNDFhM2JhNDRkOTMwZmVhMTA0YTJjNmU4
MTNkZGQxNDE4YzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewog
ICAgIGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25h
cHBlZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFw
cGVuZChwaXhlbFNuYXBwZWRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNpemUoKSkpOwogfQogCiBS
ZW5kZXJPYmplY3QqIFJlbmRlclRleHRDb250cm9sOjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGls
ZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDc1NDIyMWU1MTFh
ZjM0MDA3ZjMzNzI5ZDg2NTNiNGMyM2JiM2FkMDkuLmZlNGE1MjM4MjM5YjA5MWI4YzQyYzI4Njcw
YzY1NWExNGE3NGNjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgcmVjdCBpbnRvIHRo
ZSBjb29yZHMgdXNlZCBmb3IgcGFpbnRpbmcgdGhlIGNvbnRlbnQKICAgICAgICAgY29udGVudHNS
ZWN0Lm1vdmVCeShwYWludE9mZnNldCArIGxvY2F0aW9uKCkpOwotICAgICAgICB0aGVtZSgpLnBh
aW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0
KGNvbnRlbnRzUmVjdCkpOworICAgICAgICB0aGVtZSgpLnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3Io
dGhpcywgcGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRSZWN0KGNvbnRlbnRzUmVjdCkpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDY1
YTU5MGMyNGIyY2IxNGVhOWMzYWRlMGRjM2MwYTI3MzJmYWE0YWUuLmM5MDMwZGM4YjcwNTNiZjI2
YTIzYzBiMGViZTdiYTRiODdmOTFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KQEAgLTE3NjAsNyArMTc2MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJCiAgICAgY29udGVudExvY2F0aW9uLm1vdmUocmVuZGVyQmxvY2stPmJvcmRlckxlZnQoKSAr
IHJlbmRlckJsb2NrLT5wYWRkaW5nTGVmdCgpLCByZW5kZXJCbG9jay0+Ym9yZGVyVG9wKCkgKyBy
ZW5kZXJCbG9jay0+cGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChjb250ZW50
TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxTbmFw
cGVkUmVjdChyZWN0KTsKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWdu
ZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xODA2LDcg
KzE4MDYsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3Zl
cmxheShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SQogCiAgICAgTGF5b3V0U2l6ZSBwbHVn
aW5TaXplKHBsdWdJblJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcGx1Z0luUmVuZGVyZXItPmNv
bnRlbnRIZWlnaHQoKSk7CiAgICAgTGF5b3V0UmVjdCBwbHVnaW5SZWN0KHNuYXBzaG90QWJzUG9z
LCBwbHVnaW5TaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRQbHVnaW5SZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChwbHVnaW5SZWN0KTsKKyAgICBJbnRSZWN0IGFsaWduZWRQbHVnaW5SZWN0ID0g
cGl4ZWxTbmFwcGVkUmVjdChwbHVnaW5SZWN0KTsKIAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVj
dC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggZDg2NmJjNjRkMGJhNjM2ODAwNzc5YTcxYjRjMjg0ZGE2MDg1NDQ0MC4u
MDIyMmViYmE4MWZiYWE0ZjZhOWJiNTA0NGQzMjQyNGM0ZmUxOWRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNjAxLDEwICs2MDEsMTAg
QEAgc3RhdGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAg
ICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91
dFJlY3QmIGJhY2tncm91bmRDbGlwUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QsIGNv
bnN0IExheW91dFJlY3QmIG91dGxpbmVDbGlwUmVjdCwKICAgICAgICAgICAgICAgICAgIExheWVy
UGFpbnRQaGFzZSBwYWludFBoYXNlID0gTGF5ZXJQYWludFBoYXNlQWxsLCBpbnQgaW5kZW50ID0g
MCwgUmVuZGVyQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IgPSBSZW5kZXJBc1RleHRCZWhhdmlvck5v
cm1hbCkKIHsKLSAgICBJbnRSZWN0IGFkanVzdGVkTGF5b3V0Qm91bmRzID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChsYXllckJvdW5kcyk7Ci0gICAgSW50UmVjdCBhZGp1c3RlZEJhY2tncm91bmRDbGlw
UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoYmFja2dyb3VuZENsaXBSZWN0KTsKLSAgICBJbnRS
ZWN0IGFkanVzdGVkQ2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBSZWN0KTsKLSAg
ICBJbnRSZWN0IGFkanVzdGVkT3V0bGluZUNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChv
dXRsaW5lQ2xpcFJlY3QpOworICAgIEludFJlY3QgYWRqdXN0ZWRMYXlvdXRCb3VuZHMgPSBwaXhl
bFNuYXBwZWRSZWN0KGxheWVyQm91bmRzKTsKKyAgICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3Vu
ZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChiYWNrZ3JvdW5kQ2xpcFJlY3QpOworICAgIElu
dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoY2xpcFJlY3QpOworICAg
IEludFJlY3QgYWRqdXN0ZWRPdXRsaW5lQ2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KG91dGxp
bmVDbGlwUmVjdCk7CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKIApAQCAtNzQ2LDcg
Kzc0Niw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAgaWYgKHJvb3RMYXllciA9PSBs
KSB7CiAgICAgICAgIHBhaW50RGlydHlSZWN0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+
KHBhaW50RGlydHlSZWN0LndpZHRoKCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxheW91dE92
ZXJmbG93UmVjdCgpLm1heFgoKSkpOwogICAgICAgICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQo
c3RkOjptYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0eVJlY3QuaGVpZ2h0KCksIHJvb3RMYXllci0+
cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFkoKSkpOwotICAgICAgICBsLT5z
ZXRTaXplKGwtPnNpemUoKS5leHBhbmRlZFRvKHBpeGVsU25hcHBlZEludFNpemUobWF4TGF5b3V0
T3ZlcmZsb3cobC0+cmVuZGVyQm94KCkpLCBMYXlvdXRQb2ludCgwLCAwKSkpKTsKKyAgICAgICAg
bC0+c2V0U2l6ZShsLT5zaXplKCkuZXhwYW5kZWRUbyhwaXhlbFNuYXBwZWRTaXplKG1heExheW91
dE92ZXJmbG93KGwtPnJlbmRlckJveCgpKSwgTGF5b3V0UG9pbnQoMCwgMCkpKSk7CiAgICAgfQog
ICAgIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggZjYzOTgyYzBiYzA0NmQx
NzAxYTQxNjdmYjI4NzcyMjUwOWYyMDQzNi4uOGY5NmMwYWZhNmUzMjJiOTVhZjFkYmUzN2RjYWMy
NTA0MDgxMTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBA
IC0xNDgsNyArMTQ4LDcgQEAgSW50UmVjdCBSZW5kZXJWaWRlbzo6dmlkZW9Cb3goKSBjb25zdAog
ICAgIGlmICh2aWRlb0VsZW1lbnQoKS5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkKICAgICAg
ICAgaW50cmluc2ljU2l6ZSA9IG1fY2FjaGVkSW1hZ2VTaXplOwogCi0gICAgcmV0dXJuIHBpeGVs
U25hcHBlZEludFJlY3QocmVwbGFjZWRDb250ZW50UmVjdChpbnRyaW5zaWNTaXplKSk7CisgICAg
cmV0dXJuIHBpeGVsU25hcHBlZFJlY3QocmVwbGFjZWRDb250ZW50UmVjdChpbnRyaW5zaWNTaXpl
KSk7CiB9CiAKIGJvb2wgUmVuZGVyVmlkZW86OnNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0CkBA
IC0xOTEsOSArMTkxLDkgQEAgdm9pZCBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoZGlzcGxh
eWluZ1Bvc3RlcikKICAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCByZWN0KTsKICAgICBl
bHNlIGlmICh2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOwor
ICAgICAgICBtZWRpYVBsYXllci0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwg
cGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAgICAgZWxzZQotICAgICAgICBtZWRpYVBsYXllci0+
cGFpbnQoY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgICAgIG1lZGlh
UGxheWVyLT5wYWludChjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KHJlY3QpKTsKIH0KIAogdm9p
ZCBSZW5kZXJWaWRlbzo6bGF5b3V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCBmYzI4MGVkMDczMDYwYTdkZDU1ZjJmZTMxYzE4OGUxZTlmYjAxMGNkLi44YWVh
NWU0NzZiNDdkMjA5MzgxODdiNGE4ZGE5YTJiNDZmYzNjYjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02MTQsNyArNjE0LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiB1ciwgYm9vbCBpbW1lZGlh
dGUpIGNvbnMKICAgICAvLyBvciBldmVuIGludmlzaWJsZS4KICAgICBFbGVtZW50KiBlbHQgPSBk
b2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmICghZWx0KQotICAgICAgICBmcmFtZVZp
ZXcoKS5yZXBhaW50Q29udGVudFJlY3RhbmdsZShwaXhlbFNuYXBwZWRJbnRSZWN0KHVyKSwgaW1t
ZWRpYXRlKTsKKyAgICAgICAgZnJhbWVWaWV3KCkucmVwYWludENvbnRlbnRSZWN0YW5nbGUocGl4
ZWxTbmFwcGVkUmVjdCh1ciksIGltbWVkaWF0ZSk7CiAgICAgZWxzZSBpZiAoUmVuZGVyQm94KiBv
YmogPSBlbHQtPnJlbmRlckJveCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgdnIgPSB2aWV3UmVj
dCgpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIFJlbmRlclZp
ZXc6OnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IExheW91
dFJlY3QmIHVyLAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBSZW5kZXJM
YXllckNvbXBvc2l0b3ImIGNvbXBvc2l0b3IgPSB0aGlzLT5jb21wb3NpdG9yKCk7CiAgICAgaWYg
KGNvbXBvc2l0b3IuaW5Db21wb3NpdGluZ01vZGUoKSkgewotICAgICAgICBJbnRSZWN0IHJlcGFp
bnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh1cik7CisgICAgICAgIEludFJlY3QgcmVwYWlu
dFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KHVyKTsKICAgICAgICAgY29tcG9zaXRvci5yZXBhaW50
Q29tcG9zaXRlZExheWVycygmcmVwYWludFJlY3QpOwogICAgIH0KICNlbmRpZgpAQCAtNzAxLDcg
KzcwMSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZElu
dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUoKSkpOworICAgIHJlY3RzLmFw
cGVuZChwaXhlbFNuYXBwZWRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsYXllcigpLT5zaXplKCkp
KTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CkBAIC03NTcsNyArNzU3LDcgQEAgSW50UmVj
dCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKICAgICAgICAgfQogICAgICAgICBzZWxSZWN0LnVuaXRlKGN1cnJSZWN0KTsKICAgICB9
Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCk7CisgICAgcmV0dXJuIHBp
eGVsU25hcHBlZFJlY3Qoc2VsUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFNl
bGVjdGlvbigpIGNvbnN0CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6
OnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93
UmVjdChsYXlvdXRPdmVyZmxvd1JlY3QoKSk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJm
bG93UmVjdCk7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KTsK
KyAgICByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChvdmVyZmxvd1JlY3QpOwogfQogCiBib29sIFJl
bmRlclZpZXc6OnJvb3RCYWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGRhMDVhMjliMjMxODE4ZmVjMmI4M2U3MjVm
MDA2NTkzYjRiMzI3NzEuLjMzMmQyZmI0ZDhmNDNmMDcwNDVhZjdjYzNmNmU5OTBjOTFiMTY3OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjIxLDcgKzIyMSw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBu
ZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogCi0gICAg
SW50UmVjdCBwaXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVybiBw
aXhlbFNuYXBwZWRJbnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsgfQorICAgIEludFJlY3Qg
cGl4ZWxTbmFwcGVkTGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFw
cGVkUmVjdChsYXlvdXRPdmVyZmxvd1JlY3QoKSk7IH0KIAogICAgIEltYWdlUXVhbGl0eUNvbnRy
b2xsZXImIGltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCBlZjgwNGIyYmU2YzMwNWU2OTIwZjBjNmU1MjVmYzJl
ZmRiMmQzMmU5Li4yNWFhNzZlNjlhOGEzNjJiODc1YTEwYTZmYzIxMzg3ZDg2ODVjZTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjM2LDcgKzIzNiw3
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50
cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludFJlY3QubW92ZSgtd2lk
Z2V0UGFpbnRPZmZzZXQpOwogICAgIH0KLSAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNv
bnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CisgICAgbV93aWRnZXQtPnBh
aW50KHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KHBhaW50UmVjdCkpOwogCiAg
ICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMjk5LDcgKzI5OSw3IEBA
IHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFy
ZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYg
IWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVj
dCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJl
Y3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KHNl
bGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CiAgICAgfQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVz
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMzQ2ODc5NTY5ODJjOTQ5ZjIyNjY1MzkyODBlNTMxNGIx
Mzg1YjY3ZS4uZWQ0NjZiZmNlZWJhODlkZWE1OWMwYzk1ZWNkNjNiN2JiODQ0NjA1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGJvcmRlcgogICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgTGF5b3V0UmVjdCByZWN0KGJvcmRlclJlY3QpOwogICAgIHJlY3QubW92ZUJ5KHBh
aW50T2Zmc2V0KTsKLSAgICBjb250ZXh0LmRyYXdSZWN0KHBpeGVsU25hcHBlZEludFJlY3QocmVj
dCkpOworICAgIGNvbnRleHQuZHJhd1JlY3QocGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiB9CiAK
IHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0
JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDAx
MjMyNDk5NzI0MmY5NTliZDc3MTVkZGJlMTNmMzljMTc1ZTgzNjAuLjdkYTk4YTFlZGFmMzY5MmJm
ZmZkZjhmMTBhYWE2NzQwYmJiMzc1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6
OmNyZWF0ZVJhc3RlclNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHQK
ICAgICBBU1NFUlQoc3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpKTsKICAgICBBU1NFUlQoc3R5bGVJ
bWFnZS5jYWNoZWRJbWFnZSgpLT5oYXNJbWFnZSgpKTsKIAotICAgIEludFJlY3QgdG9SZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChpbWFnZVJlY3QpOworICAgIEludFJlY3QgdG9SZWN0ID0gcGl4
ZWxTbmFwcGVkUmVjdChpbWFnZVJlY3QpOwogICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IHRvUmVj
dC5zaXplKCk7CiAgICAgSW50U2l6ZSByYXN0ZXJTaXplID0gSW50U2l6ZSh0b1JlY3QubWF4WCgp
LCB0b1JlY3QubWF4WSgpKTsKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVy
dmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhyYXN0ZXJTaXplLmhlaWdo
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCBmMTcxODAzNDE4ZjExOGRiMzViMTRhM2UzMmJjNDE2MGVjODYxN2FjLi4xNTg4ODc1
ZTliMjRjMmVhMDFjNmUzZmM5NTQyNWQ2NGUyODRmNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTExNDksNyArMTE0OSw3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzaG9ydCB2KSB7IFNFVF9W
QVIoaW5oZXJpdGVkLCB2ZXJ0aWNhCiAKIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3Vu
ZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSkgY29uc3QKIHsKLSAgICBJbnRSZWN0IHNuYXBwZWRCb3JkZXJSZWN0KHBpeGVs
U25hcHBlZEludFJlY3QoYm9yZGVyUmVjdCkpOworICAgIEludFJlY3Qgc25hcHBlZEJvcmRlclJl
Y3QocGl4ZWxTbmFwcGVkUmVjdChib3JkZXJSZWN0KSk7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRl
ZFJlY3Qoc25hcHBlZEJvcmRlclJlY3QpOwogICAgIGlmIChoYXNCb3JkZXJSYWRpdXMoKSkgewog
ICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQt
PmJvcmRlciwgc25hcHBlZEJvcmRlclJlY3Quc2l6ZSgpLCByZW5kZXJWaWV3KTsKQEAgLTExNzks
NyArMTE3OSw3IEBAIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwKICAgICAgICAgICAgICAgIGJvcmRl
clJlY3Qud2lkdGgoKSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAogICAgICAgICAgICAgICAg
Ym9yZGVyUmVjdC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwogCi0gICAgUm91
bmRlZFJlY3Qgcm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lclJlY3QpKTsKKyAg
ICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRSZWN0KGlubmVyUmVjdCkpOwog
CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7CiAgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRp
aSByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFkaWkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDZkZTNh
YTNjNmI4MGZjMjNmYTVlY2MyYTQ5YzRkNjFkNGViN2E5MDguLjQzYTI0ZTI5ZDc3ODAxNGVjMDVj
ZTNjOGE2NDc4NTRhMDRmODdhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9v
dDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50CiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCiAgICAgLy8gQXBw
bHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwIC0gbm90IGFmZmVjdGVkIGJ5IG92ZXJmbG93IGhhbmRs
aW5nCi0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRJbnRSZWN0
KG92ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKSk7
CisgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRSZWN0KG92ZXJm
bG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKSk7CiAKICAg
ICAvLyBDb252ZXJ0IGZyb20gY29udGFpbmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBh
IHJlbGF0aXZlIHRyYW5zZm9ybSAoc3ZnIHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZy
b20gb3VyIHBhaW50IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBj
b29yZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzA4MmY5MmY3ZWQw
OGE1ZGQ3NjFmZDY4N2FjNTI1N2E4OTdhMjQ1MC4uYzNiNzRmNTg1ODFkOTVkYTQwNWU0ZDlmNjFm
NTZiYzY5YjFiMzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzA5
Miw3ICszMDkyLDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQog
ICAgICAgICAgICAgW3JlZ2lvblZhbHVlcyByZWxlYXNlXTsKICAgICAgICAgfQogCi0gICAgICAg
IFdlYkRhc2hib2FyZFJlZ2lvbiAqd2ViUmVnaW9uID0gW1tXZWJEYXNoYm9hcmRSZWdpb24gYWxs
b2NdIGluaXRXaXRoUmVjdDpwaXhlbFNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6
cGl4ZWxTbmFwcGVkSW50UmVjdChyZWdpb24uY2xpcCkgdHlwZTp0eXBlXTsKKyAgICAgICAgV2Vi
RGFzaGJvYXJkUmVnaW9uICp3ZWJSZWdpb24gPSBbW1dlYkRhc2hib2FyZFJlZ2lvbiBhbGxvY10g
aW5pdFdpdGhSZWN0OnBpeGVsU25hcHBlZFJlY3QocmVnaW9uLmJvdW5kcykgY2xpcDpwaXhlbFNu
YXBwZWRSZWN0KHJlZ2lvbi5jbGlwKSB0eXBlOnR5cGVdOwogICAgICAgICBbcmVnaW9uVmFsdWVz
IGFkZE9iamVjdDp3ZWJSZWdpb25dOwogICAgICAgICBbd2ViUmVnaW9uIHJlbGVhc2VdOwogICAg
IH0KQEAgLTM5ODMsNyArMzk4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBv
LCBTRUwgcykKICAgICBOU011dGFibGVBcnJheSogcmVjdHNBcnJheSA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVwYWludFJlY3RzLnNpemUoKV07CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgW3JlY3RzQXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGl4ZWxT
bmFwcGVkSW50UmVjdChyZXBhaW50UmVjdHNbaV0pXV07CisgICAgICAgIFtyZWN0c0FycmF5IGFk
ZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnBpeGVsU25hcHBlZFJlY3QocmVwYWludFJl
Y3RzW2ldKV1dOwogCiAgICAgcmV0dXJuIFtyZWN0c0FycmF5IGF1dG9yZWxlYXNlXTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNjZmYy
YjM2ZjMwMTczMjI4MGMzMWE4ZGE2YmFhMWU3OTI5Zjk0YmQuLmU0MzZlZTcxNTc0YzI0ZDliZDEz
MmVkZjg3Y2ZjOWUzNGRiYWM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMg
b3B0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0g
ICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5w
YWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0
ID0gcGl4ZWxTbmFwcGVkUmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKIAogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhtX25vZGUuZ2V0KCkpOwogICAg
IFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGlu
Z1JlY3QsIG9wdGlvbnMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222542</attachid>
            <date>2014-01-28 18:50:17 -0800</date>
            <delta_ts>2014-01-30 15:33:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127808-20140128185016.patch</filename>
            <type>text/plain</type>
            <size>131333</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5NjhhMDkxMGEyMDIx
YWIwZjAyMTMyZjYyZTY2ZWY1ZTU3MTA2MC4uNzgwMTFhOGE5YmU0MzE1YWY1ZTBlNzBkMzk1OTUy
NWU1N2IxNWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMiBAQAorMjAxNC0wMS0yOCAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIFJlbmRlcmlu
ZzogUmVuYW1lIHBpeGVsU25hcHBlZEludFJlY3QqIHRvIHBpeGVsU25hcHBlZFJlY3QqLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBwcmVw
YXJhdGlvbiBmb3IgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIHRvIEZsb2F0UmVjdCBhbmQKKyAg
ICAgICAgZGVjaWRpbmcgd2hpY2ggY2FsbCBzaXRlIHN0aWxsIG5lZWQgdG8gZG8gaW50ZWdyYWwg
c25hcHBpbmcuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25zY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGl4ZWxTbmFwcGVkRWxlbWVudFJlY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZHNGb3JWaXNp
YmxlUG9zaXRpb25SYW5nZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
Q29tcG9uZW50R2V0RXh0ZW50cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVJ
bWFnZUdldEltYWdlUG9zaXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QWN0aXZhdGlvblBvaW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlGcmFtZV0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlv
bl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5U2hvd0NvbnRleHRNZW51XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4
dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBib3VuZGluZ0JveFdp
dGhPd25lcjpdKToKKyAgICAgICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZFdp
dGhPd25lcjpdKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkVHJhbnNmb3JtKToKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdCk6CisgICAg
ICAgICogZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRnJh
bWVTZWxlY3Rpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90
aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6
cGFpbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OnVwZGF0ZVNpemVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90
Tm9kZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6d2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6Y29udmVydEZyb21SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KToKKyAg
ICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9y
UmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnBp
eGVsU25hcHBlZFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6cGl4ZWxTbmFwcGVkUmVjdEZyb21FZGdlcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENvbHVtbkNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRp
bmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNS
aW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dFJ1bnNBbmRGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBpeGVsU25hcHBlZEZyYW1lUmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRO
aW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNN
YXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpw
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGbGF0dGVuaW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5w
dXRTcGVlY2g6OnBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRv
UGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9W
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xz
Rm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxk
TGF5ZXJJbnRvQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVz
dFJlc2l6ZXJJbkZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRlbnRzUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpiYWNrZ3JvdW5kQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUlu
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1Jp
bmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJh
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5k
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1ldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjp1cGRhdGVMb2dp
Y2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludFJlY3Rh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBpeGVsU25hcHBlZEFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNh
bEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpzaG93UG9w
dXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFw
c2hvdHRlZFBsdWdpbk92ZXJsYXkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnZpZGVvQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3Rhbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3
QW5kQ29tcG9zaXRlZExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3VtZW50UmVjdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludERlYnVnQm9yZGVycyk6CisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3Jl
YXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisKIDIwMTQtMDEtMjggIFpv
bHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NTUyBTaGFwZXNd
IEFkanVzdCBpbnNldCBzaXppbmcgc3ludGF4IHRvIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDY2MTgwMTJjODU4ZThmMjgzMDJlYTVjZDI3OTVjZDU2ZGMyYWM2
ZDcuLmIxNTc1MmMxYTkyNDU3ZDRiNzBkNDI4N2JiZWRhMDIyN2VmYzE4MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMS0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgorCisgICAgICAgIFN1YnBpeGVsIFJlbmRlcmluZzogUmVuYW1lIHBpeGVsU25h
cHBlZEludFJlY3QqIHRvIHBpeGVsU25hcHBlZFJlY3QqLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBwcmVwYXJhdGlvbiBmb3IgY2hhbmdp
bmcgdGhlIHJldHVybiB0eXBlIHRvIEZsb2F0UmVjdCBhbmQKKyAgICAgICAgZGVjaWRpbmcgd2hp
Y2ggY2FsbCBzaXRlIHN0aWxsIG5lZWQgdG8gZG8gaW50ZWdyYWwgc25hcHBpbmcuCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9kYXNoYm9hcmRSZWdpb25zXSk6CisgICAgICAgICgtW1dl
YlZpZXcgdHJhY2tlZFJlcGFpbnRSZWN0c10pOgorCiAyMDE0LTAxLTI4ICBNYXJrIFJvd2UgIDxt
cm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyNzc2Nz4g
RGlzYWJsZSBzb21lIGRlcHJlY2F0aW9uIHdhcm5pbmdzIHRvIGZpeCB0aGUgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNDk3M2FjODA0ZmM1OTNiOTAzYjhhM2NkNWVjNDlkODU3YWEwMWU0Yi4uYjY2ZjMz
M2VlNTMxN2ZhYzFkNmU4NjQzN2E1MjkxOTA1ZjMyZjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE0LTAxLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VicGl4ZWwgUmVuZGVyaW5nOiBSZW5hbWUgcGl4ZWxTbmFwcGVkSW50UmVjdCogdG8g
cGl4ZWxTbmFwcGVkUmVjdCouCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIHByZXBhcmF0aW9uIGZvciBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5
cGUgdG8gRmxvYXRSZWN0IGFuZAorICAgICAgICBkZWNpZGluZyB3aGljaCBjYWxsIHNpdGUgc3Rp
bGwgbmVlZCB0byBkbyBpbnRlZ3JhbCBzbmFwcGluZy4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorCiAyMDE0LTAxLTI4ICBDYXJsb3MgQWxiZXJ0
byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
R1RLIGJ1aWxkIGZpeCBhZnRlciByMTYyOTUxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggOGU2ZDM5NTQ0ZWQwZTk3
NzZiMjQ0MWJjYzU5ZjBmNmZlMDAxMmIxNC4uMDRlN2Y4NzY1MjE1MGU0NTU0NWU4N2EwMWJjZDhh
YjgwNGM5MDY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xODg0LDggKzE4ODQsOCBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzT25zY3JlZW4oKSBjb25zdAogICAgICAgICBjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvdXRlciA9IG9iamVjdHNbaV07CiAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QqIGlubmVyID0gb2JqZWN0c1tpIC0gMV07CiAgICAgICAgIC8vIEZJWE1FOiB1bmNs
ZWFyIGlmIHdlIG5lZWQgTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdC4KLSAgICAgICAgY29u
c3QgSW50UmVjdCBvdXRlclJlY3QgPSBpIDwgbGV2ZWxzID8gcGl4ZWxTbmFwcGVkSW50UmVjdChv
dXRlci0+Ym91bmRpbmdCb3hSZWN0KCkpIDogb3V0ZXItPmdldFNjcm9sbGFibGVBcmVhSWZTY3Jv
bGxhYmxlKCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCk7Ci0gICAgICAgIGNvbnN0IEludFJlY3QgaW5uZXJSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChpbm5lci0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpID8gaW5u
ZXItPnBhcmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKSA6IGlubmVyLT5ib3VuZGluZ0Jv
eFJlY3QoKSk7CisgICAgICAgIGNvbnN0IEludFJlY3Qgb3V0ZXJSZWN0ID0gaSA8IGxldmVscyA/
IHBpeGVsU25hcHBlZFJlY3Qob3V0ZXItPmJvdW5kaW5nQm94UmVjdCgpKSA6IG91dGVyLT5nZXRT
Y3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJs
ZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOworICAgICAgICBjb25zdCBJbnRS
ZWN0IGlubmVyUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcoKSA/IGlubmVyLT5wYXJlbnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkgOiBp
bm5lci0+Ym91bmRpbmdCb3hSZWN0KCkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFvdXRlclJl
Y3QuaW50ZXJzZWN0cyhpbm5lclJlY3QpKSB7CiAgICAgICAgICAgICBpc09uc2NyZWVuID0gZmFs
c2U7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT25z
Y3JlZW4oKSBjb25zdAogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZp
c2libGUoKSBjb25zdAogewotICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QoYm91bmRpbmdCb3hSZWN0KCkpOworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IHBpeGVs
U25hcHBlZFJlY3QoYm91bmRpbmdCb3hSZWN0KCkpOwogICAgIG9iamVjdFJlY3Quc2V0TG9jYXRp
b24oSW50UG9pbnQoKSk7CiAgICAgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmpl
Y3RSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggOTU5ZmJjYTNiOTgyMmZkZGZlY2YxOWRiNDcwYzhkOWY3NGJj
ZWVmMC4uMDAyOGMzOTcwYjBlZTcwZmQ4MDM1ZmI2ZDYxMDc0ZmNhZjUyYWFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAg
LTY0MSw5ICs2NDEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRp
bmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChib3VuZGluZ0Jv
eFJlY3QoKSk7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCA9
IDA7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRFbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IHBpeGVsU25hcHBlZEludFJlY3QoZWxlbWVudFJlY3QoKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZEVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChlbGVt
ZW50UmVjdCgpKTsgfQogICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1l
bnRSZWN0KCkuc2l6ZSgpOyB9CiAgICAgSW50U2l6ZSBwaXhlbFNuYXBwZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gZWxlbWVudFJlY3QoKS5waXhlbFNuYXBwZWRTaXplKCk7IH0KICAgICB2aXJ0dWFs
IEludFBvaW50IGNsaWNrUG9pbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDYwZDA4OTkx
NzAyYWE3NmUxZDE5ZDg1ZmZhZjg2NTNiZjNlNmNjMGIuLjNhMjliNmI4MmU1MDU3NDJlZWJmMGE0
OGY3NzhkZTZiZTgxODIyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTQ5LDcgKzU0OSw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSgpIGNvbnN0CiBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAgSW50UmVjdCBjb250ZW50UmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QobV9yZW5kZXJlci0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwor
ICAgIEludFJlY3QgY29udGVudFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KG1fcmVuZGVyZXItPmFi
c29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3
ZSBuZWVkIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCiAgICAgSW50UmVjdCB2aWV3UmVj
dCA9IG1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoU2Ny
b2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwogICAgIHZpZXdSZWN0
LmludGVyc2VjdChjb250ZW50UmVjdCk7CkBAIC0xOTM3LDkgKzE5MzcsOSBAQCBJbnRSZWN0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQbwogICAgIH0KICAgICAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCi0gICAgcmV0dXJuIG1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50
c1RvU2NyZWVuKHBpeGVsU25hcHBlZEludFJlY3Qob3VycmVjdCkpOworICAgIHJldHVybiBtX3Jl
bmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkuY29udGVudHNUb1NjcmVlbihwaXhlbFNuYXBwZWRS
ZWN0KG91cnJlY3QpKTsKICNlbHNlCi0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qob3Vy
cmVjdCk7CisgICAgcmV0dXJuIHBpeGVsU25hcHBlZFJlY3Qob3VycmVjdCk7CiAjZW5kaWYKIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKaW5kZXgg
YjkzZDhjMzlkNTE3YzRiOTNmZTA5OGJiMjBkZGNhZmQ0Yzg4N2RhNi4uODhmMDVhZjIyOTIxOTQw
NDY2Njk1YTczNDI4YjhjMmJiNTZkZGU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZUNvbXBvbmVudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNj
ZXNzaWJsZUNvbXBvbmVudEdldEV4dGVudHMoQXRrQ29tcG9uZW50KiBjb21wb25lbnQsIGdpbnQq
IHgKICAgICBnX3JldHVybl9pZl9mYWlsKEFUS19JU19DT01QT05FTlQoY29tcG9uZW50KSk7CiAg
ICAgcmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGNv
bXBvbmVudCkpOwogCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3Jl
KGNvbXBvbmVudCktPmVsZW1lbnRSZWN0KCkpOworICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25h
cHBlZFJlY3QoY29yZShjb21wb25lbnQpLT5lbGVtZW50UmVjdCgpKTsKICAgICBjb250ZW50c1Jl
bGF0aXZlVG9BdGtDb29yZGluYXRlVHlwZShjb3JlKGNvbXBvbmVudCksIGNvb3JkVHlwZSwgcmVj
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
SW1hZ2UuY3BwCmluZGV4IGJhYjc1OTk1YTVhY2EyZmE0Y2IwMTI4ZGViZjE2ZDM1NzhmYzA4ZDEu
LjRkMmMwZjQxNTZhM2Q1ODg5NjUyNDIyNjgwNGU5ZDQxOWIyNTQxMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZVBvc2l0aW9uKEF0a0ltYWdlKiBpbWFnZSwgZ2lu
dCogeCwgZ2ludAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoQVRLX0lNQUdFKGltYWdlKSk7CiAgICAg
cmV0dXJuSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGltYWdl
KSk7CiAKLSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvcmUoaW1hZ2Up
LT5lbGVtZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGNv
cmUoaW1hZ2UpLT5lbGVtZW50UmVjdCgpKTsKICAgICBjb250ZW50c1JlbGF0aXZlVG9BdGtDb29y
ZGluYXRlVHlwZShjb3JlKGltYWdlKSwgY29vcmRUeXBlLCByZWN0LCB4LCB5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA1MjZkNjQ0MjVlYWYwMmQ4
OGViY2IyOGFmMGRlYzdhYzk5MDViZjIwLi4xYjdlZjQxZWUyNDgyMWI4ZjFjOTk3MWVjOWUxOGFk
ODdjODA4NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAt
MTA1MSw3ICsxMDUxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRh
YmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAg
IAotICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9vYmplY3QtPmJvdW5k
aW5nQm94UmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KG1fb2Jq
ZWN0LT5ib3VuZGluZ0JveFJlY3QoKSk7CiAgICAgQ0dSZWN0IGNnUmVjdCA9IFtzZWxmIGNvbnZl
cnRSZWN0VG9TY3JlZW5TcGFjZTpyZWN0XTsKICAgICByZXR1cm4gQ0dQb2ludE1ha2UoQ0dSZWN0
R2V0TWlkWChjZ1JlY3QpLCBDR1JlY3RHZXRNaWRZKGNnUmVjdCkpOwogfQpAQCAtMTA2MSw3ICsx
MDYxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5n
ICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vz
c2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAgICAgCi0gICAgSW50
UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7
CisgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChtX29iamVjdC0+ZWxlbWVudFJl
Y3QoKSk7CiAgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0VG9TY3JlZW5TcGFjZTpyZWN0XTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1NjZjNWE0
Y2JjZTA2YTVhMzc1MjRmNTJjN2NhN2NjNTgyODIxMTVlLi4wYmQ5OGE0NWJhZGU4ODAwNzBjNWU5
NDBlZTUxYmIwNTYyYmNmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMTY4MSw3ICsxNjgxLDcgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRo
VG9OU0JlemllclBhdGgodm9pZCAqaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwKIAogLSAo
TlNWYWx1ZSAqKXBvc2l0aW9uCiB7Ci0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxT
bmFwcGVkUmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CiAgICAgCiAgICAgLy8gVGhlIENv
Y29hIGFjY2Vzc2liaWxpdHkgQVBJIHdhbnRzIHRoZSBsb3dlci1sZWZ0IGNvcm5lci4KICAgICBG
bG9hdFBvaW50IGZsb2F0UG9pbnQgPSBGbG9hdFBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7
CkBAIC0zMDMyLDcgKzMwMzIsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJp
bmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVj
dC0+ZWxlbWVudFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdCht
X29iamVjdC0+ZWxlbWVudFJlY3QoKSk7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29i
amVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAKICAgICAvLyBPbiBXSzIsIHdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgdGhlIHNjcm9sbCBwb3NpdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggM2JhYmZhODZiOTk2
NzNjZTJjMGNiNzFjZjhiOTMwYzMyZWFhODQzNS4uMDFlOGM0NTUzYzk0YTA5YjMxYmMwNjE2ODM3
YWNkNjVlMDg1NzEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB1c2luZyBXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb247CiAtIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5vZGUg
Kilhbk93bmVyCiB7CiAgICAgLy8gaWdub3JlcyB0cmFuc2Zvcm1zCi0gICAgcmV0dXJuIGFuT3du
ZXIgPyBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5P
d25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVjdFplcm87CisgICAgcmV0dXJuIGFuT3duZXIgPyBw
aXhlbFNuYXBwZWRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJl
bmRlcmVyKCkpKSA6IENHUmVjdFplcm87CiB9CiAKIC0gKFdLUXVhZClhYnNvbHV0ZVF1YWRXaXRo
T3duZXI6KERPTU5vZGUgKilhbk93bmVyCkBAIC00MjcsNyArNDI3LDcgQEAgdXNpbmcgV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIGlmIChhbk93bmVyKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBFQ0xBSVIKICAgICAgICAgLy9XZWJDb3JlOjpGbG9hdFF1YWQgdGhlUXVhZCA9IGNvcmUoc2Vs
ZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKTsKLSAgICAgICAg
V2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5j
b21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSk7CisgICAgICAgIFdlYkNvcmU6
OkludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3Qo
Y29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOwogICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAg
ICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1
YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgoKSwgcmVjdC55KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkMmUw
NTU0MjMzYmIyY2ZjNzg3M2FhZTFmN2UyZjg4OTE1ZGFhOTZkLi44YmY5MDhjNDllZjE3ZGFjZWJh
OGMwNzJhMWYxOTM5YmJkOTM2OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTCiAKICAgICBJbnRSZWN0IGJveDsKICAgICBpZiAocmVuZGVyZXItPmlz
Qm94KCkpCi0gICAgICAgIGJveCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5ib3JkZXJCb3hSZWN0KCkpOworICAgICAgICBib3ggPSBwaXhlbFNuYXBwZWRSZWN0
KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpKTsKIAogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNm
b3JtLCBib3guc2l6ZSgpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCBkZmY0OWZmOTZiZTIzNjM5MTM4MTM4YmIyMzk2OTk3OGYxMzU5YzlkLi4w
ZDI1NjAzMDcyZDA4YzMzNDkzYWQ0Y2I1ZDk4ZjMzNjcwYTIyNGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTM2OCw5ICszNjgsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGJvdW5kaW5nQm94KCkgY29uc3Q7Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3goKSk7IH0K
KyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gcGl4
ZWxTbmFwcGVkUmVjdChib3VuZGluZ0JveCgpKTsgfQogICAgIExheW91dFJlY3QgcmVuZGVyUmVj
dChib29sKiBpc1JlcGxhY2VkKTsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlbmRlclJlY3Qo
Ym9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJSZWN0
KGlzUmVwbGFjZWQpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChib29s
KiBpc1JlcGxhY2VkKSB7IHJldHVybiBwaXhlbFNuYXBwZWRSZWN0KHJlbmRlclJlY3QoaXNSZXBs
YWNlZCkpOyB9CiAKICAgICB1bnNpZ25lZCBub2RlSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggNGQ2MjhmOWRiNzQ2YTQ3
ZTY5MGJiYTlhNjYxMjRmMmVlYTFhMzJkNi4uZGNkOTY2OGIxNjMwMTRhYzY1ZGEyZWFhYTc3MDBh
MWI0Mjc2NTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
Y3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSW50UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0
ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAogICAgIGlmIChp
c051bGwoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIEludFJlY3QgbG9jYWxS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChtX2lu
bGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkpOworICAgIEludFJlY3Qg
bG9jYWxSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChtX3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdCht
X2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkpOwogICAgIHJldHVy
biBsb2NhbFJlY3QgPT0gSW50UmVjdCgpID8gSW50UmVjdCgpIDogbV9yZW5kZXJlci0+bG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3go
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxl
Y3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1h
Yy5tbQppbmRleCBiYTRjMGNmOGFmNjlkN2Q4OGIyYzJmMTU5ZDA3ZWU2ZmZlYzBlYjA2Li4yNWY5
ZGVkZTgxOWIzNjFhM2E4YzIwMDU3MGI1OWE2YzhjN2VhYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpAQCAtNjksNyArNjksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0ID0gYWJzb2x1
dGVDYXJldEJvdW5kcygpOwotICAgIEludFJlY3Qgdmlld1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlbmRlclZpZXctPnZpZXdSZWN0KCkpOworICAgIEludFJlY3Qgdmlld1JlY3QgPSBwaXhl
bFNuYXBwZWRSZWN0KHJlbmRlclZpZXctPnZpZXdSZWN0KCkpOwogCiAgICAgc2VsZWN0aW9uUmVj
dCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihzZWxlY3Rpb25SZWN0KTsKICAgICB2aWV3
UmVjdCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbih2aWV3UmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDUxOGEzNDIzMzMwZDJkMjk2NDc5
NDhlY2I2ZjllODBjYWFhMGM0ZDQuLmM2OGE2NTAwZjJkYmIzYjdiNTJiZGQyYzlkMzBkY2M0NTgz
NzFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00
MjAsOSArNDIwLDkgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByLCBib28KICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24u
c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCkpOwogI2VuZGlmIAotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3By
ZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3By
ZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRSZWN0
KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWws
IHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRSZWN0
KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIHVzZUxvd1F1YWxpdHlT
Y2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5MWRmMmQ5N2JjMmE1MjcyOWYy
MGNjMzhkMDY4MzJmMGY4YzJiZGYwLi5hZGQ2MTdhMzg3NDc4Y2Y0MzdkYjA5MTQ1MjhiYzU0Y2Y5
YzY1MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCkBAIC0xMzgyLDcgKzEzODIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VVcGRhdGUpCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgICAgIGlmICghbWVkaWFFbGVt
ZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZpZGVvQm94ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdCh0b1JlbmRlcldpZGdldChtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLT5jb250ZW50Qm94
UmVjdCgpKTsKKyAgICAgICAgdmlkZW9Cb3ggPSBwaXhlbFNuYXBwZWRSZWN0KHRvUmVuZGVyV2lk
Z2V0KG1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKSktPmNvbnRlbnRCb3hSZWN0KCkpOwogI2Vsc2UK
ICAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkgfHwgIW1lZGlhRWxlbWVudC0+
cmVuZGVyZXIoKS0+aXNWaWRlbygpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGYzMzRmNDU2ZGVjMWVm
MmZiNDI3YzFhN2MzMTE2MTI0YmQxMjQ4ZjkuLjkzZmYwM2M1YTM3MDFiNGViMTU2YjBhYjk3MWZj
M2M0MjMwMWVhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICBSZW5kZXJF
bGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgRnJhbWUqIGNvbnRh
aW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBGcmFtZVZpZXcqIGNv
bnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7Ci0gICAgSW50UmVjdCBib3Vu
ZGluZ0JveCA9IHBpeGVsU25hcHBlZEludFJlY3QoY29udGFpbmluZ1ZpZXctPmNvbnRlbnRzVG9S
b290VmlldyhyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpOworICAgIEludFJl
Y3QgYm91bmRpbmdCb3ggPSBwaXhlbFNuYXBwZWRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50
c1RvUm9vdFZpZXcocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogbW9kZWxPYmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiBudWxscHRyOwogICAg
IGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoIm5vZGVXaWR0aCIsIFN0cmluZzo6bnVtYmVyKG1vZGVs
T2JqZWN0ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRP
ZmZzZXRXaWR0aCgpLCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3gud2lkdGgoKSkpOwogICAg
IGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoIm5vZGVIZWlnaHQiLCBTdHJpbmc6Om51bWJlcihtb2Rl
bE9iamVjdCA/IGFkanVzdEZvckFic29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVk
T2Zmc2V0SGVpZ2h0KCksICptb2RlbE9iamVjdCkgOiBib3VuZGluZ0JveC5oZWlnaHQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCA0OTU0MDZiODJh
YjQwZjk1NGJmMGVhMjY3MGVlMDlkNTg4ZTIwZWU0Li4zMWJkZjZlOTQxYTU1M2E2YmFiZTY5MzYw
ZjQ1MzhkNzliMmIyZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKICAgICBmcmFtZS52aWV3KCktPnNl
dE5vZGVUb0RyYXcoJm5vZGUpOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
cmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUu
cmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKSk7CisgICAgcmV0dXJu
IHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBwaXhlbFNuYXBwZWRSZWN0KG5vZGUucmVuZGVyZXIo
KS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhMDIxZDk3MDJlYzRhZmMw
OTkwNWY0NzE2ZGQ2Mzk1YmQzMDFjNGNjLi5lYzU0Njk1ZjZkMWUwZTZhNTEzZGE5OTVhMGMyN2U2
M2E2MzFhNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNjk5LDcgKzE2OTks
NyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChsYXllci0+cmVwYWludFJlY3RJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKCkpOworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0
KGxheWVyLT5yZXBhaW50UmVjdEluY2x1ZGluZ05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoKSk7
CiAgICAgICAgIHVwZGF0ZVJlY3QgPSBjb250ZW50c1RvUm9vdFZpZXcodXBkYXRlUmVjdCk7CiAg
ICAgICAgIGlmICghaXNDb21wb3NpdGVkQ29udGVudExheWVyICYmIGNsaXBzUmVwYWludHMoKSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CkBAIC0yOTk1
LDkgKzI5OTUsOSBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2luZG93Q2xpcFJlY3RGb3JGcmFtZU93
bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZQogICAgIC8vIEFwcGx5IHRoZSBj
bGlwIGZyb20gdGhlIGxheWVyLgogICAgIEludFJlY3QgY2xpcFJlY3Q7CiAgICAgaWYgKGNsaXBU
b0xheWVyQ29udGVudHMpCi0gICAgICAgIGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChl
bmNsb3NpbmdMYXllci0+Y2hpbGRyZW5DbGlwUmVjdCgpKTsKKyAgICAgICAgY2xpcFJlY3QgPSBw
aXhlbFNuYXBwZWRSZWN0KGVuY2xvc2luZ0xheWVyLT5jaGlsZHJlbkNsaXBSZWN0KCkpOwogICAg
IGVsc2UKLSAgICAgICAgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2luZ0xh
eWVyLT5zZWxmQ2xpcFJlY3QoKSk7CisgICAgICAgIGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkUmVj
dChlbmNsb3NpbmdMYXllci0+c2VsZkNsaXBSZWN0KCkpOwogICAgIGNsaXBSZWN0ID0gY29udGVu
dHNUb1dpbmRvdyhjbGlwUmVjdCk7IAogICAgIHJldHVybiBpbnRlcnNlY3Rpb24oY2xpcFJlY3Qs
IHdpbmRvd0NsaXBSZWN0KCkpOwogfQpAQCAtMzc3OCw3ICszNzc4LDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0ICpuZXdCb3R0b20sIGZsb2F0IG9s
ZFRvcCwgZmxvYXQKIAogSW50UmVjdCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFJlY3QmIHJlbmRlcmVyUmVjdCkg
Y29uc3QKIHsKLSAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGVuY2xvc2lu
Z0xheW91dFJlY3QocmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlbmRl
cmVyUmVjdCkpLmJvdW5kaW5nQm94KCkpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBw
ZWRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQo
RmxvYXRSZWN0KHJlbmRlcmVyUmVjdCkpLmJvdW5kaW5nQm94KCkpKTsKIAogICAgIC8vIENvbnZl
cnQgZnJvbSBwYWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMuCiAgICAg
aWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQ0NjM4ZTlk
MGNlMzU3MzZkZjM3MmMzNDgyMTcxZTc2YTliOGNmMjUuLjU2ZWUxZWJiODFmYmJiZmFhMWRkZjc5
NzdiODAzODljNGNlZjkxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTM0NiwxMCArMTM0Niwx
MCBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogICAgIExheW91dFJlY3QgcmVsZXZhbnRSZWN0
ID0gcmVsZXZhbnRWaWV3UmVjdCgmb2JqZWN0LT52aWV3KCkpOwogCiAgICAgLy8gVGhlIG9iamVj
dHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhl
IHZpZXdSZWN0KCkuCi0gICAgaWYgKCFvYmplY3RQYWludFJlY3QuaW50ZXJzZWN0cyhwaXhlbFNu
YXBwZWRJbnRSZWN0KHJlbGV2YW50UmVjdCkpKQorICAgIGlmICghb2JqZWN0UGFpbnRSZWN0Lmlu
dGVyc2VjdHMocGl4ZWxTbmFwcGVkUmVjdChyZWxldmFudFJlY3QpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgSW50UmVjdCBzbmFwcGVkUGFpbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChv
YmplY3RQYWludFJlY3QpOworICAgIEludFJlY3Qgc25hcHBlZFBhaW50UmVjdCA9IHBpeGVsU25h
cHBlZFJlY3Qob2JqZWN0UGFpbnRSZWN0KTsKIAogICAgIC8vIElmIHRoaXMgb2JqZWN0IHdhcyBw
cmV2aW91c2x5IGNvdW50ZWQgYXMgYW4gdW5wYWludGVkIG9iamVjdCwgcmVtb3ZlIGl0IGZyb20g
dGhhdCBIYXNoU2V0CiAgICAgLy8gYW5kIGNvcnJlc3BvbmRpbmcgUmVnaW9uLiBGSVhNRTogVGhp
cyBkb2Vzbid0IGRvIHRoZSByaWdodCB0aGluZyBpZiB0aGUgb2JqZWN0cyBvdmVybGFwLgpAQCAt
MTM2NywxMSArMTM2NywxMSBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgogICAgIC8vIElmIHRo
ZSByZWN0IHN0cmFkZGxlcyBib3RoIFJlZ2lvbnMsIHNwbGl0IGl0IGFwcHJvcHJpYXRlbHkuCiAg
ICAgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRQYWludFJlY3QpICYmIGJv
dHRvbVJlbGV2YW50UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRQYWludFJlY3QpKSB7CiAgICAgICAg
IEludFJlY3QgdG9wSW50ZXJzZWN0aW9uID0gc25hcHBlZFBhaW50UmVjdDsKLSAgICAgICAgdG9w
SW50ZXJzZWN0aW9uLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHRvcFJlbGV2YW50UmVj
dCkpOworICAgICAgICB0b3BJbnRlcnNlY3Rpb24uaW50ZXJzZWN0KHBpeGVsU25hcHBlZFJlY3Qo
dG9wUmVsZXZhbnRSZWN0KSk7CiAgICAgICAgIG1fdG9wUmVsZXZhbnRQYWludGVkUmVnaW9uLnVu
aXRlKHRvcEludGVyc2VjdGlvbik7CiAKICAgICAgICAgSW50UmVjdCBib3R0b21JbnRlcnNlY3Rp
b24gPSBzbmFwcGVkUGFpbnRSZWN0OwotICAgICAgICBib3R0b21JbnRlcnNlY3Rpb24uaW50ZXJz
ZWN0KHBpeGVsU25hcHBlZEludFJlY3QoYm90dG9tUmVsZXZhbnRSZWN0KSk7CisgICAgICAgIGJv
dHRvbUludGVyc2VjdGlvbi5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkUmVjdChib3R0b21SZWxldmFu
dFJlY3QpKTsKICAgICAgICAgbV9ib3R0b21SZWxldmFudFBhaW50ZWRSZWdpb24udW5pdGUoYm90
dG9tSW50ZXJzZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKHRvcFJlbGV2YW50UmVjdC5pbnRlcnNl
Y3RzKHNuYXBwZWRQYWludFJlY3QpKQogICAgICAgICBtX3RvcFJlbGV2YW50UGFpbnRlZFJlZ2lv
bi51bml0ZShzbmFwcGVkUGFpbnRSZWN0KTsKQEAgLTE0MDEsMTEgKzE0MDEsMTEgQEAgdm9pZCBQ
YWdlOjphZGRSZWxldmFudFVucGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgTGF5b3V0UmVjdCYgb2IKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIG9iamVjdHMg
YXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhlIHJl
bGV2YW50Vmlld1JlY3QoKS4KLSAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHBp
eGVsU25hcHBlZEludFJlY3QocmVsZXZhbnRWaWV3UmVjdCgmb2JqZWN0LT52aWV3KCkpKSkpCisg
ICAgaWYgKCFvYmplY3RQYWludFJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRSZWN0KHJlbGV2
YW50Vmlld1JlY3QoJm9iamVjdC0+dmlldygpKSkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5hZGQob2JqZWN0KTsKLSAgICBtX3JlbGV2
YW50VW5wYWludGVkUmVnaW9uLnVuaXRlKHBpeGVsU25hcHBlZEludFJlY3Qob2JqZWN0UGFpbnRS
ZWN0KSk7CisgICAgbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbi51bml0ZShwaXhlbFNuYXBwZWRS
ZWN0KG9iamVjdFBhaW50UmVjdCkpOwogfQogCiB2b2lkIFBhZ2U6OnN1c3BlbmRBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4
IDE0OTY4YjZjODM1M2YzMjZjMDJlNjM5NWJhM2QyNWRmMjI3ODYxM2MuLjY0MGRhZDNhYzc5Y2Ez
MDc0MmY2ZDhkYjVlOTU3YjFlMTYyMTc4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tCkBAIC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIE5vZGUqIGFuY2VzdG9yUmVzcG9uZGluZ1Rv
Q2xpY2tFdmVudHMoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwKICAgICAgICAg
ICAgIGlmIChub2RlQm91bmRzKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGNoZWNr
IHRvIHNlZSB3aGV0aGVyIHRoaXMgbm9kZSBpcyBhbiBhcmVhIGVsZW1lbnQuICBUaGUgb25seSB3
YXkgdGhpcyBjYW4gaGFwcGVuIGlzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGNoZWNrLgogICAgICAg
ICAgICAgICAgIGlmIChub2RlID09IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkgJiYgbm9kZSAh
PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpICYmIG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjphcmVhVGFnKSkKLSAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KHRvSFRNTEFyZWFFbGVtZW50KG5vZGUpLT5jb21wdXRlUmVjdCho
aXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CisgICAgICAg
ICAgICAgICAgICAgICpub2RlQm91bmRzID0gcGl4ZWxTbmFwcGVkUmVjdCh0b0hUTUxBcmVhRWxl
bWVudChub2RlKS0+Y29tcHV0ZVJlY3QoaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KS0+cmVuZGVyZXIoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUgJiYgbm9kZS0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBub2RlLT5yZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmluZGV4IDNhZjZiMzAzYjIyYjBkZTgwM2E0
YTk4M2UwMDJiNDZlOGVjYmU1M2MuLjNlMzg4ZjA3ZjBhZjVmNTRiNjUwYWEzZWRiMGY0YWRmNDRk
MWViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTkwLDEyICsx
OTAsMTIgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSwgSW50UmVjdCYgaW1hZ2VSZWMKIAogICAgIC8vIENhbGN1bGF0ZSBpbWFn
ZSBhbmQgZWxlbWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGlt
YWdlLgogICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKTsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZFJlY3Qo
cmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CiAKICAgICBpZiAocGFp
bnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBlbGVt
ZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBlbGVtZW50
UmVjdCA9IHBpeGVsU25hcHBlZFJlY3QodG9wTGV2ZWxSZWN0KTsKICAgICBpbWFnZVJlY3QgPSBw
YWludGluZ1JlY3Q7CiAKICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHNu
YXBzaG90Tm9kZShmcmFtZSwgbm9kZSksICZub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5oCmluZGV4IDc4ZWNkOTIyZWJkMTViMmZjZjVkYzRm
NzM1ZTlmMmIxZDljMzVkYmIuLjRiNmRmMzNiYmUyZjAwZTYzNGNlMmNhYjQ0Yjg0NDU0NWE3MTFj
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBv
aW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQu
aApAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGluZSBMYXlvdXRQb2ludCBjZWlsZWRMYXlvdXRQb2lu
dChjb25zdCBGbG9hdFBvaW50JiBwKQogICAgIHJldHVybiBMYXlvdXRQb2ludChMYXlvdXRVbml0
Ojpmcm9tRmxvYXRDZWlsKHAueCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChwLnkoKSkp
OwogfQogCi1pbmxpbmUgSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplKGNvbnN0IExheW91dFNp
emUmIHMsIGNvbnN0IExheW91dFBvaW50JiBwKQoraW5saW5lIEludFNpemUgcGl4ZWxTbmFwcGVk
U2l6ZShjb25zdCBMYXlvdXRTaXplJiBzLCBjb25zdCBMYXlvdXRQb2ludCYgcCkKIHsKICAgICBy
ZXR1cm4gSW50U2l6ZShzbmFwU2l6ZVRvUGl4ZWwocy53aWR0aCgpLCBwLngoKSksIHNuYXBTaXpl
VG9QaXhlbChzLmhlaWdodCgpLCBwLnkoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4IDY2YTE5YmRmMTFiYzE1MjdmM2I1MDc2NzFj
OWVkOWM3ZmRhNWY4MjQuLjdlYTNlYzAwNTEyMTZmNjNiOTdlMmY1YzI4M2NiZTkzYmM1NmMyOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAg
LTIwMSw3ICsyMDEsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheW91dFJlY3Qm
IGEsIGNvbnN0IExheW91dFJlY3QmIGIpCiAgICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxv
Y2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7CiB9CiAKLWlubGluZSBJbnRSZWN0IHBp
eGVsU25hcHBlZEludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK2lubGluZSBJbnRSZWN0
IHBpeGVsU25hcHBlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUo
U1VCUElYRUxfTEFZT1VUKQogICAgIHJldHVybiBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChyZWN0
LmxvY2F0aW9uKCkpLCBJbnRTaXplKHNuYXBTaXplVG9QaXhlbChyZWN0LndpZHRoKCksIHJlY3Qu
eCgpKSwKQEAgLTIxNSwyMCArMjE1LDE5IEBAIGlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZElu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiBMYXlvdXRSZWN0IGVuY2xvc2luZ0xheW91dFJlY3QoY29uc3Qg
RmxvYXRSZWN0Jik7CiAKLQotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlv
dXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0
IGhlaWdodCkKK2lubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3QoTGF5b3V0VW5pdCBsZWZ0
LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpCiB7
CiAgICAgcmV0dXJuIEludFJlY3QobGVmdC5yb3VuZCgpLCB0b3Aucm91bmQoKSwgc25hcFNpemVU
b1BpeGVsKHdpZHRoLCBsZWZ0KSwgc25hcFNpemVUb1BpeGVsKGhlaWdodCwgdG9wKSk7CiB9CiAK
LWlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMoTGF5b3V0VW5pdCBs
ZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCByaWdodCwgTGF5b3V0VW5pdCBib3R0b20p
CitpbmxpbmUgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0RnJvbUVkZ2VzKExheW91dFVuaXQgbGVm
dCwgTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgcmlnaHQsIExheW91dFVuaXQgYm90dG9tKQog
ewogICAgIHJldHVybiBJbnRSZWN0KGxlZnQucm91bmQoKSwgdG9wLnJvdW5kKCksIHNuYXBTaXpl
VG9QaXhlbChyaWdodCAtIGxlZnQsIGxlZnQpLCBzbmFwU2l6ZVRvUGl4ZWwoYm90dG9tIC0gdG9w
LCB0b3ApKTsKIH0KIAotaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRQ
b2ludCBsb2NhdGlvbiwgTGF5b3V0U2l6ZSBzaXplKQoraW5saW5lIEludFJlY3QgcGl4ZWxTbmFw
cGVkUmVjdChMYXlvdXRQb2ludCBsb2NhdGlvbiwgTGF5b3V0U2l6ZSBzaXplKQogewotICAgIHJl
dHVybiBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIHBpeGVsU25hcHBlZEludFNp
emUoc2l6ZSwgbG9jYXRpb24pKTsKKyAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQo
bG9jYXRpb24pLCBwaXhlbFNuYXBwZWRTaXplKHNpemUsIGxvY2F0aW9uKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJl
YW0uY3BwCmluZGV4IGQwN2JmZmQwOWUyNDY5OGQwNGM0MzhkMzIwNTZmMjZjYWM5YWFkNmUuLmFm
MTUzN2I2MTBiNzg0MjJjNGJiOGRjYmZmYjYzNjNlN2EyYWY1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFRleHRT
dHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgTGF5b3V0UG9pbnQmIHApCiBUZXh0
U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IExheW91dFJlY3QmIHIpCiB7CiAg
ICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwcmludGVkIGFzIGZsb2F0cy4gS2VlcGluZyB0
aGVtIGludHMgZm9yIGNvbnNpc3RlbmN5IHdpdGggcHJldmlvdXMgdGVzdCBleHBlY3RhdGlvbnMu
Ci0gICAgcmV0dXJuICp0aGlzIDw8IHBpeGVsU25hcHBlZEludFJlY3Qocik7CisgICAgcmV0dXJu
ICp0aGlzIDw8IHBpeGVsU25hcHBlZFJlY3Qocik7CiB9CiAKIFN0cmluZyBUZXh0U3RyZWFtOjpy
ZWxlYXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCmluZGV4IDZlZWFmMjU0NDhhZjRhMDljMmY3NGI4NDNlOWM4ZjEyNWZhMGUwMTUu
LjFhYWI2NThmYzlmNGU2MDdiMGMwMTcxZWQ1NWQ3MGIwY2QzYTI2YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDUyLDcg
KzQ1Miw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZm
ZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25DCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVj
dCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNl
dC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKICAgICAKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRlc3RSZWN0KSwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkUmVjdChkZXN0UmVjdCksIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwogICAgIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggNmEwNjM0
YzYzMjFkNjA1YmE1MDBhZWZkNzExZDZiNDJmMDBhZGQyYi4uOTFjZTg1NzYxZWMxYjZiZjQ0NWMx
Mjk2NmQ2ZDNhZWZjMmI1Mjc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcApAQCAtMTEwMSw3ICsxMTAxLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAog
ICAgIGZsaXBGb3JXcml0aW5nTW9kZShvdmVyZmxvd1JlY3QpOwogICAgIG92ZXJmbG93UmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJz
ZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93UmVjdCkpKQorICAgIGlmICghcGFpbnRJ
bmZvLnJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRSZWN0KG92ZXJmbG93UmVjdCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDaGls
ZE91dGxpbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRl
eCBiNWJhMmNjODNkMGMwM2M3YjA3OGMwMTUyYTkxMWFlZWM0MDk3OWRkLi40MmRlMDMxOWExNjll
MWQxZGM1MzlmZDYxN2ZjN2VlOTExNTQxNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50IGFmdGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tncm91
bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxiYXJzIHdpbGwKICAgICAvLyBzaXQgYWJvdmUg
dGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIChwaGFzZSA9PSBQYWludFBoYXNlQmxvY2tC
YWNrZ3JvdW5kIHx8IHBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYg
cGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgJiYgIXBhaW50SW5mby5wYWlu
dFJvb3RCYWNrZ3JvdW5kT25seSgpKQotICAgICAgICBsYXllcigpLT5wYWludE92ZXJmbG93Q29u
dHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0KSwgcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICBsYXll
cigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJvdW5kZWRJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgcGl4ZWxTbmFwcGVkUmVjdChwYWludEluZm8ucmVj
dCkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0yMjQwLDcgKzIy
NDAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICAgICAgICAgIExheW91dFVu
aXQgcnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVs
ZVRoaWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zm
c2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogcGFpbnRPZmZzZXQueSgpICsg
cnVsZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkOwogICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBydWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVsZVRvcCArIHJ1bGVUaGlja25lc3M7Ci0g
ICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRv
bSk7CisgICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVs
U25hcHBlZFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJv
dHRvbSk7CiAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250
ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwg
cGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCks
IGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbgogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsg
aSsrKSB7CiAgICAgICAgICAgICBydWxlUmVjdC5tb3ZlKHN0ZXApOwotICAgICAgICAgICAgSW50
UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocnVsZVJlY3Qp
OworICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBl
ZFJlY3QocnVsZVJlY3QpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5m
by5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0
LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5t
YXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjMzMyw3ICsyMzMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
cGFpbnRDb2x1bW5Db250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHAKICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gTGF5b3V0U2l6ZShsb2dpY2FsTGVmdE9mZnNldCwgY3VyckxvZ2ljYWxUb3BPZmZzZXQp
IDogTGF5b3V0U2l6ZShjdXJyTG9naWNhbFRvcE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQpOwog
ICAgICAgICBjb2xSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgICAgIFBhaW50SW5mbyBp
bmZvKHBhaW50SW5mbyk7Ci0gICAgICAgIGluZm8ucmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChjb2xSZWN0KSk7CisgICAgICAgIGluZm8ucmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFw
cGVkUmVjdChjb2xSZWN0KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWluZm8ucmVjdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7CkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dENvbHVtbkNvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cAogICAgICAgICAgICAgLy8gbGlrZSBvdmVyZmxvdzpoaWRkZW4uCiAgICAgICAgICAgICAvLyBG
SVhNRTogQ29udGVudCBhbmQgY29sdW1uIHJ1bGVzIHRoYXQgZXh0ZW5kIG91dHNpZGUgY29sdW1u
IGJveGVzIGF0IHRoZSBlZGdlcyBvZiB0aGUgbXVsdGktY29sdW1uIGVsZW1lbnQKICAgICAgICAg
ICAgIC8vIGFyZSBjbGlwcGVkIGFjY29yZGluZyB0byB0aGUgJ292ZXJmbG93JyBwcm9wZXJ0eS4K
LSAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwUmVjdCkp
OworICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRSZWN0KGNsaXBSZWN0KSk7
CiAKICAgICAgICAgICAgIC8vIEFkanVzdCBvdXIgeCBhbmQgeSB3aGVuIHBhaW50aW5nLgogICAg
ICAgICAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsg
b2Zmc2V0OwpAQCAtMjg5NCw3ICsyODk0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6Ymxv
Y2tTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KIAog
ICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxS
ZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3QobG9naWNhbExlZnQsIGxv
Z2ljYWxUb3AsIGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludElu
Zm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50
UmVjdChnYXBSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBw
ZWRSZWN0KGdhcFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0yOTExLDcgKzI5MTEsNyBA
QCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJC
bG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9v
dEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlv
biwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwg
cm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5m
bykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRS
ZWN0KGdhcFJlY3QpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmot
PnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxs
UmVjdChwaXhlbFNuYXBwZWRSZWN0KGdhcFJlY3QpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpLCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gZ2Fw
UmVjdDsKIH0KIApAQCAtMjkyOCw3ICsyOTI4LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6
bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IEwK
IAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2lj
YWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2NrTG9n
aWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwgbG9n
aWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChnYXBSZWN0KSwgc2VsT2JqLT5zZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdChnYXBS
ZWN0KSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTUwMzgsMTIgKzUw
MzgsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW0KICAgICBpZiAoaXNBbm9ueW1vdXNCbG9j
a0NvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBi
bG9jay1mbG93cyB0aGF0IGFyZSBob3Jpem9udGFsLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3ODEKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBp
eGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQueCgpLCBhY2N1bXVsYXRlZE9mZnNl
dC55KCkgLSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwKKyAgICAgICAgcmVjdHMuYXBwZW5kKHBp
eGVsU25hcHBlZFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQueCgpLCBhY2N1bXVsYXRlZE9mZnNldC55
KCkgLSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgoKSwgaGVpZ2h0KCkgKyBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSArIGNvbGxh
cHNlZE1hcmdpbkFmdGVyKCkpKTsKICAgICAgICAgY29udGludWF0aW9uKCktPmFic29sdXRlUmVj
dHMocmVjdHMsIGFjY3VtdWxhdGVkT2Zmc2V0IC0gdG9MYXlvdXRTaXplKGxvY2F0aW9uKCkgKwog
ICAgICAgICAgICAgICAgIGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+Y29udGFpbmluZ0Js
b2NrKCktPmxvY2F0aW9uKCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBp
eGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICBy
ZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7
CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKQEAgLTUxNDQsOSArNTE0NCw5IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhCiAgICAgICAgIGZsb2F0IGJvdHRvbU1hcmdpbiA9IG5leHRJbmxp
bmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6IExheW91dFVuaXQoKTsKICAg
ICAgICAgTGF5b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpLCBhZGRpdGlvbmFsT2Zm
c2V0LnkoKSAtIHRvcE1hcmdpbiwgd2lkdGgoKSwgaGVpZ2h0KCkgKyB0b3BNYXJnaW4gKyBib3R0
b21NYXJnaW4pOwogICAgICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVj
dHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAgICAgcmVjdHMu
YXBwZW5kKHBpeGVsU25hcHBlZFJlY3QocmVjdCkpOwogICAgIH0gZWxzZSBpZiAod2lkdGgoKSAm
JiBoZWlnaHQoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRk
aXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBw
ZWRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNpemUoKSkpOwogCiAgICAgaWYgKCFoYXNPdmVyZmxv
d0NsaXAoKSAmJiAhaGFzQ29udHJvbENsaXAoKSkgewogICAgICAgICBpZiAoY2hpbGRyZW5Jbmxp
bmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggOWU5Yzk2MjJkNDAzZjM0OTJkODk2YzRiOTliMzQ2YzUzOGFmMTI3ZS4uYjI5YTk4NWVlNjE4
NTI5MjUwOTA1MDA5YTIzNTE4OTJkMTU1YzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIwMzcsNyArMjAzNyw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IFBhaW50CiAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCku
d2lkdGgoKSwgZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkuaGVpZ2h0KCkpOwogICAgICAgICAg
ICAgcm9vdEJsb2NrLmZsaXBGb3JXcml0aW5nTW9kZShmbG9hdEJveCk7CiAgICAgICAgICAgICBm
bG9hdEJveC5tb3ZlKHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueCgpLCByb290QmxvY2tQaHlz
aWNhbFBvc2l0aW9uLnkoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmNsaXBP
dXQocGl4ZWxTbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOworICAgICAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5jbGlwT3V0KHBpeGVsU25hcHBlZFJlY3QoZmxvYXRCb3gpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTMyMDEsNyArMzIwMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojph
ZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
CiAgICAgICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW48TGF5b3V0VW5pdD4oY3Vyci0+
bGluZUJvdHRvbSgpLCBjdXJyLT50b3AoKSArIGN1cnItPmhlaWdodCgpKTsKICAgICAgICAgTGF5
b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgY3Vyci0+eCgpLCBhZGRpdGlvbmFs
T2Zmc2V0LnkoKSArIHRvcCwgY3Vyci0+d2lkdGgoKSwgYm90dG9tIC0gdG9wKTsKICAgICAgICAg
aWYgKCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBw
ZWRJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRS
ZWN0KHJlY3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggYTYwODAxNGIyYTJiZGI4YjYxMTM0NTUz
MDcxZTJkMTVhYzMyNDg3MC4uMjIxZGM4ODljNzE1N2IxZWFlMTk2ZTZhZDI4MTY3YjdkZWQ3YTU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKQEAgLTEwNjgsNyArMTA2OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlv
dXRSdW5zQW5kRmxvYXRzKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGJvb2wgaGFzCiAg
ICAgICAgICAgICAvLyB0aGF0IHRoZSBibG9jayByZWFsbHkgbmVlZGVkIGEgZnVsbCBsYXlvdXQs
IHdlIG1pc3NlZCBvdXIgY2hhbmNlIHRvIHJlcGFpbnQgdGhlIGxheWVyCiAgICAgICAgICAgICAv
LyBiZWZvcmUgbGF5b3V0IHN0YXJ0ZWQuICBMdWNraWx5IHRoZSBsYXllciBoYXMgY2FjaGVkIHRo
ZSByZXBhaW50IHJlY3QgZm9yIGl0cyBvcmlnaW5hbAogICAgICAgICAgICAgLy8gcG9zaXRpb24g
YW5kIHNpemUsIGFuZCBzbyB3ZSBjYW4gdXNlIHRoYXQgdG8gbWFrZSBhIHJlcGFpbnQgaGFwcGVu
IG5vdy4KLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihjb250YWluZXJGb3JSZXBh
aW50KCksIHBpeGVsU25hcHBlZEludFJlY3QobGF5ZXIoKS0+cmVwYWludFJlY3QoKSkpOworICAg
ICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKGNvbnRhaW5lckZvclJlcGFpbnQoKSwgcGl4
ZWxTbmFwcGVkUmVjdChsYXllcigpLT5yZXBhaW50UmVjdCgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggY2I5MDVhNjVlYmIw
MjVkNzUwYTJlNjVkYjYxZmQxMDIwZDNlZWMyNC4uZWMwZWE0M2M5NTlmM2EyMGU4M2JjNzg3ZDFm
MTY2MDk1NjFhZGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTU1OCw3ICs1NTgsNyBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKGludCBuZXdUb3Ap
CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICByZWN0
cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7
CisgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNp
emUoKSkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdApAQCAtNjE4LDcgKzYxOCw3IEBAIFJv
dW5kZWRSZWN0OjpSYWRpaSBSZW5kZXJCb3g6OmJvcmRlclJhZGlpKCkgY29uc3QKIEludFJlY3Qg
UmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMg
d3Jvbmcgd2l0aCB0cmFuc2Zvcm1zIGFuZCBmbGlwcGVkIHdyaXRpbmcgbW9kZXMuCi0gICAgSW50
UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50Qm94UmVjdCgpKTsKKyAgICBJ
bnRSZWN0IHJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwogICAgIEZs
b2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAgICAgcmVjdC5tb3ZlKGFic1Bv
cy54KCksIGFic1Bvcy55KCkpOwogICAgIHJldHVybiByZWN0OwpAQCAtNjU1LDcgKzY1NSw3IEBA
IExheW91dFJlY3QgUmVuZGVyQm94OjpvdXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiB2b2lkIFJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxP
ZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6ZSgp
LmlzRW1wdHkoKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRk
aXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBw
ZWRSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNpemUoKSkpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRl
ckJveDo6cmVmbGVjdGlvbkJveCgpIGNvbnN0CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJl
bmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaQogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2ZSB0aGVtZSBhcHBl
YXJhbmNlLCBwYWludCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dyb3VuZC4KICAgICAv
LyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBh
aW50IHRoZSBDU1MgYmFja2dyb3VuZC4KLSAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJlY3QocGl4
ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpKTsKKyAgICBJbnRSZWN0IHNuYXBwZWRQYWludFJl
Y3QocGl4ZWxTbmFwcGVkUmVjdChwYWludFJlY3QpKTsKICAgICBib29sIHRoZW1lUGFpbnRlZCA9
IHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLnBhaW50KHRoaXMsIHBhaW50SW5m
bywgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgaWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAgICAg
aWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVy
KQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEKIGJvb2wgUmVu
ZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudChMYXlvdXRSZWN0JiBwYWludGVkRXh0
ZW50KSBjb25zdAogewogICAgIEFTU0VSVChoYXNCYWNrZ3JvdW5kKCkpOwotICAgIExheW91dFJl
Y3QgYmFja2dyb3VuZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvcmRlckJveFJlY3QoKSk7
CisgICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoYm9yZGVy
Qm94UmVjdCgpKTsKIAogICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmFj
a2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSkgewpAQCAt
MTY1MSw3ICsxNjUxLDcgQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXUKICAgICAgICAgcGFpbnRP
YmplY3QocGFpbnRJbmZvLCBhY2N1bXVsYXRlZE9mZnNldCk7CiAgICAgICAgIHBhaW50SW5mby5w
aGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CiAgICAgfQotICAgIEludFJl
Y3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250cm9s
Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbiwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNp
emUsIHBhaW50SW5mby5waGFzZSkpOworICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBw
ZWRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQp
IDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlclJl
Z2lvbiwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUo
KS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSkpOwpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEK
ICAgICAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmlldygpLmxheW91dFN0YXRlKCk7
CiAKICAgICAgICAgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAg
ICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3QocGl4ZWxTbmFwcGVkSW50
UmVjdChyZWN0KSk7CisgICAgICAgICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1h
cFJlY3QocGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgdHJ1
c3QgdGhlIGJpdHMgb24gUmVuZGVyT2JqZWN0LCBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbGVk
IHdoaWxlIHJlLXJlc29sdmluZyBzdHlsZS4KICAgICAgICAgaWYgKHN0eWxlVG9Vc2UuaGFzSW5G
bG93UG9zaXRpb24oKSAmJiBsYXllcigpKQpAQCAtMjEyNSw3ICsyMTI1LDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGEKICAgICAvLyBpbiB0aGUgcGFyZW50J3MgY29vcmRpbmF0ZSBzcGFjZSB0
aGF0IGVuY2xvc2VzIHVzLgogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9y
bSgpKSB7CiAgICAgICAgIGZpeGVkID0gcG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKLSAgICAg
ICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHBpeGVsU25hcHBlZEludFJl
Y3QocmVjdCkpOworICAgICAgICByZWN0ID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCktPm1hcFJlY3Qo
cGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAgICAgICAgIHRvcExlZnQgPSByZWN0LmxvY2F0aW9u
KCk7CiAgICAgICAgIHRvcExlZnQubW92ZShsb2NhdGlvbk9mZnNldCgpKTsKICAgICB9IGVsc2Ug
aWYgKHBvc2l0aW9uID09IEZpeGVkUG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKaW5kZXggZjcyMmNkNzhiZWRmZWJlNTc1MjljMzNiODBiYjI0ODk4ODI3MmQyYS4uOWZm
NzZjMDU4MTliNWQ2Njk3Y2NmYmNlOWQ4ZjI5ZTdiNzY4YzEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1v
dmUoTGF5b3V0VW5pdCBkeCwgTGF5b3V0VW5pdCBkeSkgeyBtX2ZyYW1lUmVjdC5tb3ZlKGR4LCBk
eSk7IH0KIAogICAgIExheW91dFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZVJlY3Q7IH0KLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QobV9mcmFtZVJlY3QpOyB9CisgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRSZWN0KG1fZnJh
bWVSZWN0KTsgfQogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
IHsgbV9mcmFtZVJlY3QgPSByZWN0OyB9CiAKICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3Qo
KSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KCksIHNpemUoKSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmlu
ZGV4IDc2N2ZhOTE5YmI0MTYwZGZhNDUzMDQ0MjIyY2FiMTAxY2Y3YjBiOWEuLjhjYzRjN2RhNDA3
YWNiZDVjZWE5Y2ZiNWU4OGY2ZTNjYTU5M2I0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNjYwLDcgKzY2MCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCksIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3Qo
cmVjdCksIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNzE5LDggKzcxOSw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gZHJhdyBvdXIgdGV4dCBpbnRvIGEgbWFzayB0aGF0IGNhbiB0aGVu
IGJlIHVzZWQgdG8gY2xpcCBiYWNrZ3JvdW5kIGRyYXdpbmcuCiAgICAgICAgIC8vIEZpcnN0IGZp
Z3VyZSBvdXQgaG93IGJpZyB0aGUgbWFzayBoYXMgdG8gYmUuICBJdCBzaG91bGQgYmUgbm8gYmln
Z2VyIHRoYW4gd2hhdCB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGFjdHVhbGx5IHJlbmRlciwgc28g
d2Ugc2hvdWxkIGludGVyc2VjdCB0aGUgZGlydHkgcmVjdCB3aXRoIHRoZSBib3JkZXIgYm94IG9m
IHRoZSBiYWNrZ3JvdW5kLgotICAgICAgICBtYXNrUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
cmVjdCk7Ci0gICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHBh
aW50SW5mby5yZWN0KSk7CisgICAgICAgIG1hc2tSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChyZWN0
KTsKKyAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHBpeGVsU25hcHBlZFJlY3QocGFpbnRJbmZv
LnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgogICAgICAgICBtYXNr
SW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7
CkBAIC03NjksMTEgKzc2OSwxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1w
cm92ZSB0aGUgY3VsbGluZyB0ZXN0CiAgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJh
Y2tncm91bmQgaW1hZ2UgY292ZXJzIHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCiAgICAgaWYgKCFi
Z0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgSW50UmVjdCBiYWNrZ3JvdW5kUmVjdChwaXhlbFNu
YXBwZWRJbnRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0KSk7CisgICAgICAgIEludFJlY3QgYmFja2dy
b3VuZFJlY3QocGl4ZWxTbmFwcGVkUmVjdChzY3JvbGxlZFBhaW50UmVjdCkpOwogICAgICAgICBi
b29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRv
d1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChibGVlZEF2b2lkYW5jZSwgYm94KTsKICAgICAg
ICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCB8fCAhc2hvdWxkUGFp
bnRCYWNrZ3JvdW5kSW1hZ2UgfHwgIWJnTGF5ZXItPmhhc09wYXF1ZUltYWdlKHRoaXMpIHx8ICFi
Z0xheWVyLT5oYXNSZXBlYXRYWSgpKSB7CiAgICAgICAgICAgICBpZiAoIWJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKLSAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVjdC5p
bnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICAg
ICAgICAgIGJhY2tncm91bmRSZWN0LmludGVyc2VjdChwaXhlbFNuYXBwZWRSZWN0KHBhaW50SW5m
by5yZWN0KSk7CiAKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gYWxwaGEgYW5kIHdlIGFy
ZSBwYWludGluZyB0aGUgcm9vdCBlbGVtZW50LCBnbyBhaGVhZCBhbmQgYmxlbmQgd2l0aCB0aGUg
YmFzZSBiYWNrZ3JvdW5kIGNvbG9yLgogICAgICAgICAgICAgQ29sb3IgYmFzZUNvbG9yOwpAQCAt
ODA1LDcgKzgwNSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgaWYgKHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlKSB7CiAgICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdl
b21ldHJ5OwogICAgICAgICBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludElu
Zm8ucGFpbnRDb250YWluZXIsIGJnTGF5ZXIsIHNjcm9sbGVkUGFpbnRSZWN0LCBnZW9tZXRyeSwg
YmFja2dyb3VuZE9iamVjdCk7Ci0gICAgICAgIGdlb21ldHJ5LmNsaXAocGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICBnZW9tZXRyeS5jbGlwKHBpeGVsU25hcHBl
ZFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ag
PSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsK
ICAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9i
amVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnko
Y29uc3QgUmVuZGVyTGF5ZXJNb2QKICAgICBMYXlvdXRVbml0IGxlZnQgPSAwOwogICAgIExheW91
dFVuaXQgdG9wID0gMDsKICAgICBJbnRTaXplIHBvc2l0aW9uaW5nQXJlYVNpemU7Ci0gICAgSW50
UmVjdCBzbmFwcGVkUGFpbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QpOwor
ICAgIEludFJlY3Qgc25hcHBlZFBhaW50UmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocGFpbnRSZWN0
KTsKIAogICAgIC8vIERldGVybWluZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhIGFu
ZCBzZXQgZGVzdFJlY3QgdG8gdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4KICAgICAvLyBk
ZXN0UmVjdCB3aWxsIGJlIGFkanVzdGVkIGxhdGVyIGlmIHRoZSBiYWNrZ3JvdW5kIGlzIG5vbi1y
ZXBlYXRpbmcuCkBAIC0xMTAyLDE4ICsxMTAyLDE4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9k
CiAgICAgICAgIC8vIGl0cyBtYXJnaW5zLiBTaW5jZSB0aG9zZSB3ZXJlIGFkZGVkIGluIGFscmVh
ZHksIHdlIGhhdmUgdG8gZmFjdG9yIHRoZW0gb3V0IHdoZW4gY29tcHV0aW5nCiAgICAgICAgIC8v
IHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuCiAgICAgICAgIGlmIChpc1Jvb3QoKSkg
ewotICAgICAgICAgICAgcG9zaXRpb25pbmdBcmVhU2l6ZSA9IHBpeGVsU25hcHBlZEludFNpemUo
dG9SZW5kZXJCb3godGhpcyktPnNpemUoKSAtIExheW91dFNpemUobGVmdCArIHJpZ2h0LCB0b3Ag
KyBib3R0b20pLCB0b1JlbmRlckJveCh0aGlzKS0+bG9jYXRpb24oKSk7CisgICAgICAgICAgICBw
b3NpdGlvbmluZ0FyZWFTaXplID0gcGl4ZWxTbmFwcGVkU2l6ZSh0b1JlbmRlckJveCh0aGlzKS0+
c2l6ZSgpIC0gTGF5b3V0U2l6ZShsZWZ0ICsgcmlnaHQsIHRvcCArIGJvdHRvbSksIHRvUmVuZGVy
Qm94KHRoaXMpLT5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIGlmICh2aWV3KCkuZnJhbWVWaWV3
KCkuaGFzRXh0ZW5kZWRCYWNrZ3JvdW5kKCkpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGV4
dGVuZGVkQmFja2dyb3VuZFJlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuZXh0ZW5kZWRCYWNrZ3Jv
dW5kUmVjdCgpOwogICAgICAgICAgICAgICAgIGxlZnQgKz0gKG1hcmdpbkxlZnQoKSAtIGV4dGVu
ZGVkQmFja2dyb3VuZFJlY3QueCgpKTsKICAgICAgICAgICAgICAgICB0b3AgKz0gKG1hcmdpblRv
cCgpIC0gZXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdC55KCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHBvc2l0aW9uaW5nQXJlYVNpemUgPSBwaXhlbFNuYXBwZWRJ
bnRTaXplKHBhaW50UmVjdC5zaXplKCkgLSBMYXlvdXRTaXplKGxlZnQgKyByaWdodCwgdG9wICsg
Ym90dG9tKSwgcGFpbnRSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgcG9zaXRpb25pbmdB
cmVhU2l6ZSA9IHBpeGVsU25hcHBlZFNpemUocGFpbnRSZWN0LnNpemUoKSAtIExheW91dFNpemUo
bGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pLCBwYWludFJlY3QubG9jYXRpb24oKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgZ2VvbWV0cnkuc2V0SGFzTm9uTG9jYWxHZW9tZXRyeSgpOwogCi0g
ICAgICAgIEludFJlY3Qgdmlld3BvcnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh2aWV3KCku
dmlld1JlY3QoKSk7CisgICAgICAgIEludFJlY3Qgdmlld3BvcnRSZWN0ID0gcGl4ZWxTbmFwcGVk
UmVjdCh2aWV3KCkudmlld1JlY3QoKSk7CiAgICAgICAgIGlmIChmaXhlZEJhY2tncm91bmRQYWlu
dHNJbkxvY2FsQ29vcmRpbmF0ZXMoKSkKICAgICAgICAgICAgIHZpZXdwb3J0UmVjdC5zZXRMb2Nh
dGlvbihJbnRQb2ludCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnko
Y29uc3QgUmVuZGVyTGF5ZXJNb2QKICAgICAgICAgICAgIHZpZXdwb3J0UmVjdC5tb3ZlQnkoLWFi
c29sdXRlQ29udGFpbmVyT2Zmc2V0KTsKICAgICAgICAgfQogCi0gICAgICAgIGdlb21ldHJ5LnNl
dERlc3RSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qodmlld3BvcnRSZWN0KSk7CisgICAgICAgIGdl
b21ldHJ5LnNldERlc3RSZWN0KHBpeGVsU25hcHBlZFJlY3Qodmlld3BvcnRSZWN0KSk7CiAgICAg
ICAgIHBvc2l0aW9uaW5nQXJlYVNpemUgPSBnZW9tZXRyeS5kZXN0UmVjdCgpLnNpemUoKTsKICAg
ICB9CiAKQEAgLTEyNTEsNyArMTI1MSw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
Ly8gZG9lc24ndCBoYXZlIGFueSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB6b29tIHRoYXQgaXMgaW4g
ZWZmZWN0IG9uIHRoZSB0aWxlLgogICAgIExheW91dFJlY3QgcmVjdFdpdGhPdXRzZXRzID0gcmVj
dDsKICAgICByZWN0V2l0aE91dHNldHMuZXhwYW5kKHN0eWxlLT5pbWFnZU91dHNldHMobmluZVBp
ZWNlSW1hZ2UpKTsKLSAgICBJbnRSZWN0IGJvcmRlckltYWdlUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QocmVjdFdpdGhPdXRzZXRzKTsKKyAgICBJbnRSZWN0IGJvcmRlckltYWdlUmVjdCA9IHBp
eGVsU25hcHBlZFJlY3QocmVjdFdpdGhPdXRzZXRzKTsKIAogICAgIEludFNpemUgaW1hZ2VTaXpl
ID0gY2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNEaW1lbnNpb25zKHN0eWxlSW1hZ2UsIGJvcmRlcklt
YWdlUmVjdC5zaXplKCksIERvTm90U2NhbGVCeUVmZmVjdGl2ZVpvb20pOwogCkBAIC0yMTI1LDcg
KzIxMjUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRo
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxs
Q29sb3IoY29sb3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChib3JkZXJSZWN0KSk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChwaXhlbFNuYXBwZWRSZWN0KGJvcmRlclJlY3QpKTsKIH0KIAogc3Rh
dGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVyQ29ybmVyLCBj
b25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgY2VudGVyUG9p
bnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCA0NTVkNzk3YjcxZDRjN2MwZGFkMTRkNmE4N2Qw
NGQ4MzY5NmFkNTczLi5mMzUwOThlMGE0NjUzNzczMGQxY2QzMzUwZTVlZmJmZWI5ZGIwNmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBvdmVyZmxv
d1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dSZWN0LmluZmxhdGUobWF4aW1h
bE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogCi0gICAgaWYgKCFwYWludEluZm8ucmVj
dC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KSkpCisgICAgaWYg
KCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZFJlY3Qob3ZlcmZsb3dSZWN0
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxMDg3OTFkYjM2NjliOGE2ZjQ3MzdhNjRi
NjU2MWFiZWZjZjljNDFlLi5kMzg3Y2JlNzkwMTI5M2UwYmM5YTdiNzY4MzAxZjY1MjE1YjhmYjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMTkx
LDkgKzExOTEsOSBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVl
ZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcAogICAgICAgICByZXBhaW50Q29u
dGFpbmVyID0gJnZpZXcoKTsKIAogICAgIGlmIChmdWxsUmVwYWludCkgewotICAgICAgICByZXBh
aW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChv
bGRCb3VuZHMpKTsKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWlu
ZXIsIHBpeGVsU25hcHBlZFJlY3Qob2xkQm91bmRzKSk7CiAgICAgICAgIGlmIChuZXdCb3VuZHMg
IT0gb2xkQm91bmRzKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3QobmV3Qm91bmRzKSk7CisgICAgICAgICAgICBy
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkUmVjdChu
ZXdCb3VuZHMpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMjAyLDI3ICsx
MjAyLDI3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAKICAgICBMYXlvdXRVbml0IGRlbHRh
TGVmdCA9IG5ld0JvdW5kcy54KCkgLSBvbGRCb3VuZHMueCgpOwogICAgIGlmIChkZWx0YUxlZnQg
PiAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4
ZWxTbmFwcGVkSW50UmVjdChvbGRCb3VuZHMueCgpLCBvbGRCb3VuZHMueSgpLCBkZWx0YUxlZnQs
IG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkUmVjdChvbGRCb3VuZHMueCgpLCBvbGRCb3VuZHMu
eSgpLCBkZWx0YUxlZnQsIG9sZEJvdW5kcy5oZWlnaHQoKSkpOwogICAgIGVsc2UgaWYgKGRlbHRh
TGVmdCA8IDApCi0gICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5ld0JvdW5kcy54KCksIG5ld0JvdW5kcy55KCksIC1kZWx0
YUxlZnQsIG5ld0JvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICByZXBhaW50VXNpbmdDb250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkUmVjdChuZXdCb3VuZHMueCgpLCBuZXdC
b3VuZHMueSgpLCAtZGVsdGFMZWZ0LCBuZXdCb3VuZHMuaGVpZ2h0KCkpKTsKIAogICAgIExheW91
dFVuaXQgZGVsdGFSaWdodCA9IG5ld0JvdW5kcy5tYXhYKCkgLSBvbGRCb3VuZHMubWF4WCgpOwog
ICAgIGlmIChkZWx0YVJpZ2h0ID4gMCkKLSAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJl
cGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3Qob2xkQm91bmRzLm1heFgoKSwgbmV3
Qm91bmRzLnkoKSwgZGVsdGFSaWdodCwgbmV3Qm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgIHJl
cGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9s
ZEJvdW5kcy5tYXhYKCksIG5ld0JvdW5kcy55KCksIGRlbHRhUmlnaHQsIG5ld0JvdW5kcy5oZWln
aHQoKSkpOwogICAgIGVsc2UgaWYgKGRlbHRhUmlnaHQgPCAwKQotICAgICAgICByZXBhaW50VXNp
bmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChuZXdCb3Vu
ZHMubWF4WCgpLCBvbGRCb3VuZHMueSgpLCAtZGVsdGFSaWdodCwgb2xkQm91bmRzLmhlaWdodCgp
KSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhl
bFNuYXBwZWRSZWN0KG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy55KCksIC1kZWx0YVJpZ2h0
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKIAogICAgIExheW91dFVuaXQgZGVsdGFUb3AgPSBuZXdC
b3VuZHMueSgpIC0gb2xkQm91bmRzLnkoKTsKICAgICBpZiAoZGVsdGFUb3AgPiAwKQotICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50
UmVjdChvbGRCb3VuZHMueCgpLCBvbGRCb3VuZHMueSgpLCBvbGRCb3VuZHMud2lkdGgoKSwgZGVs
dGFUb3ApKTsKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IHBpeGVsU25hcHBlZFJlY3Qob2xkQm91bmRzLngoKSwgb2xkQm91bmRzLnkoKSwgb2xkQm91bmRz
LndpZHRoKCksIGRlbHRhVG9wKSk7CiAgICAgZWxzZSBpZiAoZGVsdGFUb3AgPCAwKQotICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50
UmVjdChuZXdCb3VuZHMueCgpLCBuZXdCb3VuZHMueSgpLCBuZXdCb3VuZHMud2lkdGgoKSwgLWRl
bHRhVG9wKSk7CisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBwaXhlbFNuYXBwZWRSZWN0KG5ld0JvdW5kcy54KCksIG5ld0JvdW5kcy55KCksIG5ld0JvdW5k
cy53aWR0aCgpLCAtZGVsdGFUb3ApKTsKIAogICAgIExheW91dFVuaXQgZGVsdGFCb3R0b20gPSBu
ZXdCb3VuZHMubWF4WSgpIC0gb2xkQm91bmRzLm1heFkoKTsKICAgICBpZiAoZGVsdGFCb3R0b20g
PiAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4
ZWxTbmFwcGVkSW50UmVjdChuZXdCb3VuZHMueCgpLCBvbGRCb3VuZHMubWF4WSgpLCBuZXdCb3Vu
ZHMud2lkdGgoKSwgZGVsdGFCb3R0b20pKTsKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVy
KHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3QobmV3Qm91bmRzLngoKSwgb2xkQm91
bmRzLm1heFkoKSwgbmV3Qm91bmRzLndpZHRoKCksIGRlbHRhQm90dG9tKSk7CiAgICAgZWxzZSBp
ZiAoZGVsdGFCb3R0b20gPCAwKQotICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChvbGRCb3VuZHMueCgpLCBuZXdCb3VuZHMu
bWF4WSgpLCBvbGRCb3VuZHMud2lkdGgoKSwgLWRlbHRhQm90dG9tKSk7CisgICAgICAgIHJlcGFp
bnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZEJv
dW5kcy54KCksIG5ld0JvdW5kcy5tYXhZKCksIG9sZEJvdW5kcy53aWR0aCgpLCAtZGVsdGFCb3R0
b20pKTsKIAogICAgIGlmIChuZXdPdXRsaW5lQm94ID09IG9sZE91dGxpbmVCb3gpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyNDksNyArMTI0OSw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6
cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwCiAgICAgICAgIExheW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdC
b3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKICAgICAgICAgaWYgKHJpZ2h0UmVjdC54
KCkgPCByaWdodCkgewogICAgICAgICAgICAgcmlnaHRSZWN0LnNldFdpZHRoKHN0ZDo6bWluKHJp
Z2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJpZ2h0UmVjdC54KCkpKTsKLSAgICAgICAgICAgIHJl
cGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0
KHJpZ2h0UmVjdCkpOworICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHBpeGVsU25hcHBlZFJlY3QocmlnaHRSZWN0KSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBhYnNvbHV0ZVZhbHVlKG5ld091dGxpbmVCb3guaGVp
Z2h0KCkgLSBvbGRPdXRsaW5lQm94LmhlaWdodCgpKTsKQEAgLTEyNjksNyArMTI2OSw3IEBAIGJv
b2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwCiAgICAgICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjpt
aW4obmV3Qm91bmRzLm1heFkoKSwgb2xkQm91bmRzLm1heFkoKSk7CiAgICAgICAgIGlmIChib3R0
b21SZWN0LnkoKSA8IGJvdHRvbSkgewogICAgICAgICAgICAgYm90dG9tUmVjdC5zZXRIZWlnaHQo
c3RkOjptaW4oYm90dG9tUmVjdC5oZWlnaHQoKSwgYm90dG9tIC0gYm90dG9tUmVjdC55KCkpKTsK
LSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KGJvdHRvbVJlY3QpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KGJvdHRvbVJlY3QpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBjZjkwMzkwMTA2OTRi
YzFhZTRkNDI1MTk3MWI2NGZiNDBhMDZmYTg2Li4wY2UzZThkNTExYTIwN2VkOTE2YzNlODgyMmU5
NjI4Zjk4NDNiNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dAogICAgIGNvbnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChj
b250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4
ZWxTbmFwcGVkUmVjdChyZWN0KTsKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8
IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIApAQCAtNDI5LDcg
KzQyOSw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJl
ZCgpIGNvbnN0CiAgICAgaWYgKCFyb290UmVuZGVyVmlldykKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBJbnRSZWN0IHJvb3RWaWV3UmVjdCA9IHZpZXcoKS5mcmFtZVZpZXcoKS5jb252ZXJ0
VG9Sb290VmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICBJbnRSZWN0IHJvb3RW
aWV3UmVjdCA9IHZpZXcoKS5mcmFtZVZpZXcoKS5jb252ZXJ0VG9Sb290VmlldyhwaXhlbFNuYXBw
ZWRSZWN0KHJlY3QpKTsKICAgICAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVz
dDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50
IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5j
cHAKaW5kZXggYTg0NGU0MzI1ODc0YzUzZjYyM2U2OGE3OTYwZGNhNDJiOTg5ZWRmMC4uMmU5MDRl
ZDllZDRmYTgxMDBmNzRlMDNmOTZjOGM2YmYzNzRkNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBAIC0xNzcsMTEgKzE3NywxMSBAQCB2b2lkIFJl
bmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludAogICAgIGlmIChzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjbGlwVG9wID0gcGFpbnRSZWN0LnkoKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBjbGlwSGVpZ2h0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5p
dD4oc3R5bGUoKS5ib3JkZXJUb3BXaWR0aCgpKSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5k
LT5oZWlnaHQoKSAtIGJvcmRlclRvcCgpKSAvIDIpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwT3V0KHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgp
LCBjbGlwVG9wLCBsZWdlbmQtPndpZHRoKCksIGNsaXBIZWlnaHQpKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwT3V0KHBpeGVsU25hcHBlZFJlY3QocGFpbnRSZWN0LngoKSArIGxlZ2Vu
ZC0+eCgpLCBjbGlwVG9wLCBsZWdlbmQtPndpZHRoKCksIGNsaXBIZWlnaHQpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBMYXlvdXRVbml0IGNsaXBMZWZ0ID0gcGFpbnRSZWN0LngoKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBjbGlwV2lkdGggPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxMYXlvdXRVbml0
PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpKSwgbGVnZW5kLT53aWR0aCgpKTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHBpeGVsU25hcHBlZEludFJlY3QoY2xpcExlZnQsIHBh
aW50UmVjdC55KCkgKyBsZWdlbmQtPnkoKSwgY2xpcFdpZHRoLCBsZWdlbmQtPmhlaWdodCgpKSk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChwaXhlbFNuYXBwZWRSZWN0KGNsaXBM
ZWZ0LCBwYWludFJlY3QueSgpICsgbGVnZW5kLT55KCksIGNsaXBXaWR0aCwgbGVnZW5kLT5oZWln
aHQoKSkpOwogICAgIH0KIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCAm
c3R5bGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHAKaW5kZXggOGQ1NTJlN2E4YWFkMjE5NjkyZmFiMzc2NzNlNzQyMmIwZDU0Y2I0ZS4uZTVkNmU2
NDg1NDk1MzkzZGY0ZGU5MWZlZTQ4NzkyMTBhZjc3YmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29u
c3QgUmVuZGVyQmxvY2sqIGJsb2MKICAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSBibG9j
ay0+Ym9yZGVyQm94UmVjdEluUmVnaW9uKHJlZ2lvbik7CiAgICAgICAgIGJvcmRlckJveCA9IHJl
Z2lvbi0+cmVjdEZsb3dQb3J0aW9uRm9yQm94KGJsb2NrLCBib3JkZXJCb3gpOwogCi0gICAgICAg
IEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3JkZXJCb3gpOwor
ICAgICAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QoYm9yZGVyQm94
KTsKICAgICAgICAgYmxvY2stPnRoZW1lKCkuYWRqdXN0UmVwYWludFJlY3QoYmxvY2ssIGluZmxh
dGVkUmVjdCk7CiAKICAgICAgICAgcmVnaW9uLT5hZGRWaXN1YWxPdmVyZmxvd0ZvckJveChibG9j
aywgaW5mbGF0ZWRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuY3BwCmluZGV4IDI2ZDY2ZGIyNmVmODdiYTI1YzY4YmI5ZmJhNmIyOWUzZjUxY2UyYjMuLjMy
MTY1MjUyZWZiZTU3NmU0Mjk0NjM1ZDJkY2VhNGVjZjNiN2YwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQg
UmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5w
YWludChwYWludEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogICAgICAgICAgICAgeFBvcyAr
PSBtX2NvbHMubV9zaXplc1tjXTsKICAgICAgICAgICAgIGlmIChib3JkZXJUaGlja25lc3MgJiYg
bV9jb2xzLm1fYWxsb3dCb3JkZXJbYyArIDFdKSB7Ci0gICAgICAgICAgICAgICAgcGFpbnRDb2x1
bW5Cb3JkZXIocGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoYWRqdXN0
ZWRQYWludE9mZnNldC54KCkgKyB4UG9zLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3Ms
IGJvcmRlclRoaWNrbmVzcywgaGVpZ2h0KCkpKSk7CisgICAgICAgICAgICAgICAgcGFpbnRDb2x1
bW5Cb3JkZXIocGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRSZWN0KExheW91dFJlY3QoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyB4UG9zLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIGJv
cmRlclRoaWNrbmVzcywgaGVpZ2h0KCkpKSk7CiAgICAgICAgICAgICAgICAgeFBvcyArPSBib3Jk
ZXJUaGlja25lc3M7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiAgICAgICAgIH0KICAgICAgICAgeVBvcyArPSBtX3Jvd3MubV9zaXplc1tyXTsKICAgICAgICAg
aWYgKGJvcmRlclRoaWNrbmVzcyAmJiBtX3Jvd3MubV9hbGxvd0JvcmRlcltyICsgMV0pIHsKLSAg
ICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgcGl4ZWxTbmFwcGVkSW50UmVjdChM
YXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSArIHlQb3MsIHdpZHRoKCksIGJvcmRlclRoaWNrbmVzcykpKTsKKyAgICAgICAgICAgIHBhaW50
Um93Qm9yZGVyKHBhaW50SW5mbywgcGl4ZWxTbmFwcGVkUmVjdChMYXlvdXRSZWN0KGFkanVzdGVk
UGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIHdpZHRoKCks
IGJvcmRlclRoaWNrbmVzcykpKTsKICAgICAgICAgICAgIHlQb3MgKz0gYm9yZGVyVGhpY2tuZXNz
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDgzLDEwICs0ODMsMTAgQEAgdm9pZCBSZW5kZXJGcmFt
ZVNldDo6bGF5b3V0KCkKICAgICB1cGRhdGVMYXllclRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGRv
RnVsbFJlcGFpbnQpIHsKLSAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIHBpeGVsU25hcHBlZEludFJlY3Qob2xkQm91bmRzKSk7CisgICAgICAgIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRSZWN0KG9sZEJvdW5k
cykpOwogICAgICAgICBMYXlvdXRSZWN0IG5ld0JvdW5kcyA9IGNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogICAgICAgICBpZiAobmV3Qm91bmRzICE9IG9s
ZEJvdW5kcykKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KG5ld0JvdW5kcykpOworICAgICAgICAgICAgcmVwYWlu
dFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3QobmV3Qm91
bmRzKSk7CiAgICAgfQogCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwpAQCAtNTU5LDcgKzU1OSw3
IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEZsYXR0ZW5pbmcoKQog
ICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAKICAgICAgICAgZm9yIChp
bnQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKLSAgICAgICAgICAgIEludFJlY3Qgb2xkRnJhbWVS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjaGlsZC0+ZnJhbWVSZWN0KCkpOworICAgICAgICAg
ICAgSW50UmVjdCBvbGRGcmFtZVJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KGNoaWxkLT5mcmFtZVJl
Y3QoKSk7CiAKICAgICAgICAgICAgIGludCB3aWR0aCA9IG1fY29scy5tX3NpemVzW2NdOwogCkBA
IC02MDcsNyArNjA3LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cG9zaXRpb25GcmFtZXNXaXRo
RmxhdHRlbmluZygpCiAgICAgICAgIHhQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBjID0gMDsg
YyA8IGNvbHM7IGMrKykgewogICAgICAgICAgICAgLy8gZW5zdXJlIHRoZSByb3dzIGFuZCBjb2x1
bW5zIGFyZSBmaWxsZWQKLSAgICAgICAgICAgIEludFJlY3Qgb2xkUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QoY2hpbGQtPmZyYW1lUmVjdCgpKTsKKyAgICAgICAgICAgIEludFJlY3Qgb2xkUmVj
dCA9IHBpeGVsU25hcHBlZFJlY3QoY2hpbGQtPmZyYW1lUmVjdCgpKTsKIAogICAgICAgICAgICAg
Y2hpbGQtPnNldExvY2F0aW9uKEludFBvaW50KHhQb3MsIHlQb3MpKTsKICAgICAgICAgICAgIGNo
aWxkLT5zZXRIZWlnaHQobV9yb3dzLm1fc2l6ZXNbcl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCmluZGV4IDAzNGYzNzg4ZmU2NzIyYTM3ZjZkZWU5
NGM3NjQxNWRiMDg0YjdiZjUuLjJkNDI2YzA5NTY5YmU3ZTIwMzg1NWIwZGE5OGYyNGUwZjg0ZDk1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGEKICAgICBib29sIGNsaXAg
PSAhY29udGVudFJlY3QuY29udGFpbnMocGFpbnRSZWN0KTsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBjbGlwKTsKICAgICBpZiAo
Y2xpcCkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVj
dChjb250ZW50UmVjdCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNu
YXBwZWRSZWN0KGNvbnRlbnRSZWN0KSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCku
cGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4NmUz
ODdlY2VjOTVkNmZhNGFmNjNmOTBjNDE2YTllOWEzZmNkMmY3Li40OTFmZjM2YjNmMjhkN2NiODI2
ZDkzMjhlZWUzZGU3MGVjNzNmMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxl
ZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQs
IGNXaWR0aCwgY0hlaWdodCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHBpeGVs
U25hcHBlZFJlY3QoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVm
dFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNIZWln
aHQpKSk7CiAKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAg
ICAgICAgICAgIExheW91dFNpemUgaW1hZ2VPZmZzZXQ7CkBAIC00MzUsNyArNDM1LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQog
ICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlv
bkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwg
cGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQs
IGltYWdlU2l6ZSkpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRSZWN0KExheW91dFJlY3QocGFpbnRPZmZzZXQg
KyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OmFyZWFFbGVtZW50Rm9jdXNDaGFuZ2VkKEhUTUxBcmVhRWxlbWVudCogZWxlbWVudCkKIAogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QocmVjdCk7CisgICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25h
cHBlZFJlY3QocmVjdCk7CiAgICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBp
bWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHx8IGFsaWduZWRSZWN0LndpZHRoKCkgPD0g
MCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggMWZiMWIwNGNlYWExMmNl
NmIwODQyNGI2OGVlNjBlNWNkODk4ZWVlOC4uMTYwZWE1NjZhMmMxMDVkMGRmNTE1MTE3ZTJiNWZm
MGNlOGM5NDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
QEAgLTE1NTUsMTEgKzE1NTUsMTEgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZv
ckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBMYXlv
dXRSZWN0IGJveChMYXlvdXRQb2ludChwYWludE9mZnNldC54KCkgKyB0aGlzbGluZS54KCkgLSBv
ZmZzZXQsIHBhaW50T2Zmc2V0LnkoKSArIHRoaXNsaW5lLnkoKSAtIG9mZnNldCksCiAgICAgICAg
IExheW91dFNpemUodGhpc2xpbmUud2lkdGgoKSArIG9mZnNldCwgdGhpc2xpbmUuaGVpZ2h0KCkg
KyBvZmZzZXQpKTsKIAotICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm94ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChib3gpOworICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm94ID0gcGl4ZWxTbmFwcGVk
UmVjdChib3gpOwogICAgIGlmIChwaXhlbFNuYXBwZWRCb3guaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRMYXN0TGluZSA9IHBpeGVsU25hcHBlZElu
dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGFzdGxpbmUueCgpLCAwLCBsYXN0bGluZS53aWR0aCgp
LCAwKTsKLSAgICBJbnRSZWN0IHBpeGVsU25hcHBlZE5leHRMaW5lID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludE9mZnNldC54KCkgKyBuZXh0bGluZS54KCksIDAsIG5leHRsaW5lLndpZHRoKCks
IDApOworICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkTGFzdExpbmUgPSBwaXhlbFNuYXBwZWRSZWN0
KHBhaW50T2Zmc2V0LngoKSArIGxhc3RsaW5lLngoKSwgMCwgbGFzdGxpbmUud2lkdGgoKSwgMCk7
CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWROZXh0TGluZSA9IHBpeGVsU25hcHBlZFJlY3QocGFp
bnRPZmZzZXQueCgpICsgbmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAg
ICAKICAgICAvLyBsZWZ0IGVkZ2UKICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3Bl
ZWNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAK
aW5kZXggYmJhYjI3OWI3MWU3N2ViNjYwMTAyNzIxNjc3YTAwNDY5M2RiYjVmYi4uMzJkYjczNDE3
N2E5OGY3NTNhODI1M2MyNTU0YWQzOWQ3YzEyMmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3BlZWNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgUmVu
ZGVySW5wdXRTcGVlY2g6OnBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbihSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QKICAgICAgICAgaW1hZ2UgPSBpbWFnZVN0YXRlUmVjb3JkaW5nLmdldCgp
OwogICAgIGVsc2UgaWYgKHNwZWVjaEJ1dHRvbi0+c3RhdGUoKSA9PSBJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6UmVjb2duaXppbmcpCiAgICAgICAgIGltYWdlID0gaW1hZ2VTdGF0ZVdh
aXRpbmcuZ2V0KCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgb2Jq
ZWN0LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkSW50UmVjdChidXR0b25SZWN0
KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgb2JqZWN0LT5zdHls
ZSgpLmNvbG9yU3BhY2UoKSwgcGl4ZWxTbmFwcGVkUmVjdChidXR0b25SZWN0KSk7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA2NWUwZDIzMWRmZjNkMGU1ODVkYzljZjY1ZWVmNDg4ZjRjNmQ5YmQzLi5jOWI1OTVlZmQ0
YmY2Mjg3MTdiNDcxZTU0ZTY3NWFkMmZiOWRlMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTQzOSw5ICs0MzksOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXAsIFVwZGF0
ZUxheQogICAgICAgICAgICAgaWYgKCFyZW5kZXJlcigpLnZpZXcoKS5wcmludGluZygpKSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCBkaWRSZXBhaW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
aWYgKG1fcmVwYWludFN0YXR1cyAmIE5lZWRzRnVsbFJlcGFpbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyZXIoKS5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
cGl4ZWxTbmFwcGVkSW50UmVjdChvbGRSZXBhaW50UmVjdCkpOworICAgICAgICAgICAgICAgICAg
ICByZW5kZXJlcigpLnJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhl
bFNuYXBwZWRSZWN0KG9sZFJlcGFpbnRSZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICht
X3JlcGFpbnRSZWN0ICE9IG9sZFJlcGFpbnRSZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZW5kZXJlcigpLnJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KG1fcmVwYWludFJlY3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlcmVyKCkucmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVs
U25hcHBlZFJlY3QobV9yZXBhaW50UmVjdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZGlk
UmVwYWludCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpKSB7CkBAIC0xMjM5LDcgKzEyMzks
NyBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICAgICAgbG9j
YWxQb2ludCArPSBpbmxpbmVCb3VuZGluZ0JveE9mZnNldDsKICAgICB9IGVsc2UgaWYgKFJlbmRl
ckJveCogYm94ID0gcmVuZGVyQm94KCkpIHsKICAgICAgICAgLy8gRklYTUU6IElzIHNuYXBwaW5n
IHRoZSBzaXplIHJlYWxseSBuZWVkZWQgaGVyZSBmb3IgdGhlIFJlbmRlckJveCBjYXNlPwotICAg
ICAgICBzZXRTaXplKHBpeGVsU25hcHBlZEludFNpemUoYm94LT5zaXplKCksIGJveC0+bG9jYXRp
b24oKSkpOworICAgICAgICBzZXRTaXplKHBpeGVsU25hcHBlZFNpemUoYm94LT5zaXplKCksIGJv
eC0+bG9jYXRpb24oKSkpOwogICAgICAgICBsb2NhbFBvaW50ICs9IGJveC0+dG9wTGVmdExvY2F0
aW9uT2Zmc2V0KCk7CiAgICAgfQogCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpjb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhjb25zdCBSZW5kZXJMYXllciog
YW5jZXN0b3JMYQogewogICAgIExheW91dFJlY3QgcmVjdCA9IHJvdW5kZWRSZWN0OwogICAgIGNv
bnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIHJlY3QsIGFkanVzdEZvckNvbHVtbnMp
OwotICAgIHJvdW5kZWRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICByb3Vu
ZGVkUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocmVjdCk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGxh
eWVyIHJlYWNoZWQgb24gdGhlIHdhbGsgdXAgdG93YXJkcyB0aGUgYW5jZXN0b3IuCkBAIC0yMzY0
LDcgKzIzNjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAj
ZWxzZQogICAgIGlmIChyZXF1aXJlc1JlcGFpbnQpCiAjZW5kaWYKLSAgICAgICAgcmVuZGVyZXIo
KS5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50
UmVjdChtX3JlcGFpbnRSZWN0KSk7CisgICAgICAgIHJlbmRlcmVyKCkucmVwYWludFVzaW5nQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHBpeGVsU25hcHBlZFJlY3QobV9yZXBhaW50UmVjdCkp
OwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBET00gZXZlbnQuCiAgICAgaWYgKEVsZW1l
bnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKSkKQEAgLTI0NzMsNyArMjQ3Myw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYg
cmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAgICAgICAvLyB0aGF0IHB1dCB3ZWIgdmll
d3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgogICAg
ICAgICAgICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFs
c28ga25vd3MgYWJvdXQgdGhpcy4KICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWVW
aWV3LmZyYW1lKCkucGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnNjcm9s
bFJlY3RJbnRvVmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxSZWN0SW50b1ZpZXcocGl4ZWxTbmFwcGVkUmVjdChyZWN0
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0yNzYwLDcgKzI3NjAsNyBAQCBJbnRSZWN0
IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QKICAgICBib29sIGhhc1ZlcnRp
Y2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSByZW5k
ZXJlcigpLnN0eWxlKCkucmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNIb3Jp
em9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9yaXpv
bnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gcGl4ZWxTbmFwcGVk
SW50UmVjdChjb3JuZXJSZWN0KHRoaXMsIHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpKTsK
KyAgICAgICAgcmV0dXJuIHBpeGVsU25hcHBlZFJlY3QoY29ybmVyUmVjdCh0aGlzLCByZW5kZXJC
b3goKS0+Ym9yZGVyQm94UmVjdCgpKSk7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIApAQCAt
MzUwOSw3ICszNTA5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplcklt
YWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBMYXlvdXRSZWN0IGltYWdlUmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKTsKLSAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCku
c3R5bGUoKS5jb2xvclNwYWNlKCksIHBpeGVsU25hcHBlZEludFJlY3QoaW1hZ2VSZWN0KSk7Cisg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigp
LnN0eWxlKCkuY29sb3JTcGFjZSgpLCBwaXhlbFNuYXBwZWRSZWN0KGltYWdlUmVjdCkpOwogfQog
CiB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QpCkBAIC0zNTQ3LDcgKzM1NDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAyMTcp
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNr
bmVzcygxLjBmKTsKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHBp
eGVsU25hcHBlZEludFJlY3QobGFyZ2VyQ29ybmVyKSk7CisgICAgICAgIGNvbnRleHQtPmRyYXdS
ZWN0KHBpeGVsU25hcHBlZFJlY3QobGFyZ2VyQ29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNTc1
LDcgKzM1NzUsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEludFBvaW50JgogICAgIAogICAgIEludFJlY3Qg
cmVzaXplQ29udHJvbFJlY3Q7CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUoKSAh
PSBSRVNJWkVfTk9ORSkgewotICAgICAgICByZXNpemVDb250cm9sUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsK
KyAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KHJlc2l6ZXJDb3Ju
ZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKSk7CiAgICAgICAgIGlmIChyZXNpemVD
b250cm9sUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTM2NTcsNyArMzY1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1Jl
Y3QoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiB7
CiAgICAgaWYgKGNsaXBSZWN0LnJlY3QoKSAhPSBwYWludERpcnR5UmVjdCkgewogICAgICAgICBj
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50UmVj
dChjbGlwUmVjdC5yZWN0KCkpKTsKKyAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRS
ZWN0KGNsaXBSZWN0LnJlY3QoKSkpOwogICAgIH0KIAogICAgIGlmICghY2xpcFJlY3QuaGFzUmFk
aXVzKCkpCkBAIC00Mzk4LDcgKzQzOTgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tn
cm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAg
ICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCiAgICAgICAgIC8vIEZJWE1F
OiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50
IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFp
bnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVo
YXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVn
aW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAg
ICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KGZyYWdt
ZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBh
aW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0lu
Zm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigp
KTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHRvUG9pbnQoZnJhZ21lbnQu
bGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50
aW5nSW5mby5zdWJQaXhlbEFjY3VtdWxhdGlvbikpOwogCiAgICAgICAgIGlmIChsb2NhbFBhaW50
aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCkBAIC00NDcxLDcgKzQ0NzEsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBw
aGFzZSwgY29uc3QgTAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBU
b1JlY3QobG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QpOwogICAgIAotICAg
ICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZnJh
Z21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpKSwgcGhhc2UsIHBhaW50QmVoYXZpb3IsIHN1YnRy
ZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAm
bG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJ
bmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KGZyYWdtZW50LmZvcmVncm91
bmRSZWN0LnJlY3QoKSksIHBoYXNlLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9y
UmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJ
bmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChwaGFzZSA9PSBQYWludFBo
YXNlRm9yZWdyb3VuZCkKICAgICAgICAgICAgIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3Rz
ID0gbG9jYWxQYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0czsKICAgICAgICAgcmVuZGVy
ZXIoKS5wYWludChwYWludEluZm8sIHRvUG9pbnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRp
b24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhlbEFj
Y3VtdWxhdGlvbikpOwpAQCAtNDQ5MCw3ICs0NDkwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50
cywKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIAogICAgICAgICAvLyBQYWludCBvdXIgb3du
IG91dGxpbmUKLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGZyYWdtZW50Lm91dGxpbmVSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxmT3V0
bGluZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBh
aW50aW5nSW5mby5yZWdpb24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJl
bmRlcmVyKCkpOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25h
cHBlZFJlY3QoZnJhZ21lbnQub3V0bGluZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZVNlbGZPdXRs
aW5lLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFp
bnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVu
ZGVyZXIoKSk7CiAgICAgICAgIGNsaXBUb1JlY3QobG9jYWxQYWludGluZ0luZm8ucm9vdExheWVy
LCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQub3V0
bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5k
ZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9Qb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2Nh
dGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVs
QWNjdW11bGF0aW9uKSk7CiAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5vdXRsaW5lUmVjdCk7CkBAIC00NTEwLDcg
KzQ1MTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3Qg
TGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcgogICAgICAgICAKICAgICAgICAgLy8g
UGFpbnQgdGhlIG1hc2suCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29s
bGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3Qg
ZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBh
aW50UGhhc2VNYXNrLCBQYWludEJlaGF2aW9yTm9ybWFsLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVu
ZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZv
LnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29u
dGV4dCwgcGl4ZWxTbmFwcGVkUmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpLCBQ
YWludFBoYXNlTWFzaywgUGFpbnRCZWhhdmlvck5vcm1hbCwgc3VidHJlZVBhaW50Um9vdEZvclJl
bmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdpb24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5m
by5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50
SW5mbywgdG9Qb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94
TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQpA
QCAtNDUyNCw3ICs0NTI0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRy
b2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckYKICAgICAgICAgY29u
c3QgTGF5ZXJGcmFnbWVudCYgZnJhZ21lbnQgPSBsYXllckZyYWdtZW50cy5hdChpKTsKICAgICAg
ICAgY2xpcFRvUmVjdChsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCk7CiAg
ICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9scyhjb250ZXh0LCByb3VuZGVkSW50UG9pbnQodG9Q
b2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24o
KSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSksCi0gICAgICAgICAg
ICBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIHRy
dWUpOworICAgICAgICAgICAgcGl4ZWxTbmFwcGVkUmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVj
dC5yZWN0KCkpLCB0cnVlKTsKICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgbG9jYWxQYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0KTsKICAgICB9
CiB9CkBAIC00NTg2LDcgKzQ1ODYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkTGF5
ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NDbwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBFYWNoIHN0cmlwIHB1c2hlcyBhIGNsaXAsIHNpbmNlIGNv
bHVtbiBib3hlcyBhcmUgc3BlY2lmaWVkIGFzIGJlaW5nCiAgICAgICAgICAgICAvLyBsaWtlIG92
ZXJmbG93OmhpZGRlbi4KLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkSW50
UmVjdChjb2xSZWN0KSk7CisgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZFJl
Y3QoY29sUmVjdCkpOwogCiAgICAgICAgICAgICBpZiAoIWNvbEluZGV4KSB7CiAgICAgICAgICAg
ICAgICAgLy8gQXBwbHkgYSB0cmFuc2xhdGlvbiB0cmFuc2Zvcm0gdG8gY2hhbmdlIHdoZXJlIHRo
ZSBsYXllciBwYWludHMuCkBAIC01MDMxLDcgKzUwMzEsNyBAQCBib29sIFJlbmRlckxheWVyOjpo
aXRUZXN0UmVzaXplckluRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdt
ZW50cwogCiAgICAgZm9yIChpbnQgaSA9IGxheWVyRnJhZ21lbnRzLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CiAgICAgICAgIGNvbnN0IExheWVyRnJhZ21lbnQmIGZyYWdtZW50ID0gbGF5ZXJG
cmFnbWVudHMuYXQoaSk7Ci0gICAgICAgIGlmIChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5pbnRl
cnNlY3RzKGhpdFRlc3RMb2NhdGlvbikgJiYgcmVzaXplckNvcm5lclJlY3QodGhpcywgcGl4ZWxT
bmFwcGVkSW50UmVjdChmcmFnbWVudC5sYXllckJvdW5kcykpLmNvbnRhaW5zKGhpdFRlc3RMb2Nh
dGlvbi5yb3VuZGVkUG9pbnQoKSkpCisgICAgICAgIGlmIChmcmFnbWVudC5iYWNrZ3JvdW5kUmVj
dC5pbnRlcnNlY3RzKGhpdFRlc3RMb2NhdGlvbikgJiYgcmVzaXplckNvcm5lclJlY3QodGhpcywg
cGl4ZWxTbmFwcGVkUmVjdChmcmFnbWVudC5sYXllckJvdW5kcykpLmNvbnRhaW5zKGhpdFRlc3RM
b2NhdGlvbi5yb3VuZGVkUG9pbnQoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCkBAIC01NzU4LDcgKzU3NTgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3Vu
ZGluZ0JveChjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTAogCiBJ
bnRSZWN0IFJlbmRlckxheWVyOjphYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveChyb290KCkpKTsKKyAgICByZXR1
cm4gcGl4ZWxTbmFwcGVkUmVjdChib3VuZGluZ0JveChyb290KCkpKTsKIH0KIAogTGF5b3V0UmVj
dCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFu
Y2VzdG9yTGF5ZXIsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCwgQ2FsY3VsYXRl
TGF5ZXJCb3VuZHNGbGFncyBmbGFncykgY29uc3QKQEAgLTYzMDQsMTMgKzYzMDQsMTMgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludEluUmVjdChjb25zdCBMYXlvdXRS
ZWN0JiByLCBHcmFwaGljc0xheWUKIAogICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5yZXBhaW50
Vmlld1JlY3RhbmdsZShhYnNSZWN0KTsKICAgICB9IGVsc2UKLSAgICAgICAgYmFja2luZygpLT5z
ZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KHBpeGVsU25hcHBlZEludFJlY3QociksIHNob3Vs
ZENsaXApOworICAgICAgICBiYWNraW5nKCktPnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qo
cGl4ZWxTbmFwcGVkUmVjdChyKSwgc2hvdWxkQ2xpcCk7CiB9CiAKIC8vIFNpbmNlIHdlJ3JlIG9u
bHkgcGFpbnRpbmcgbm9uLWNvbXBvc2l0ZWQgbGF5ZXJzLCB3ZSBrbm93IHRoYXQgdGhleSBhbGwg
c2hhcmUgdGhlIHNhbWUgcmVwYWludENvbnRhaW5lci4KIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFp
bnRJbmNsdWRpbmdOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRzKFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpCiB7Ci0gICAgcmVuZGVyZXIoKS5yZXBhaW50VXNpbmdDb250
YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlcigpLmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKSk7CisgICAgcmVu
ZGVyZXIoKS5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcGl4ZWxTbmFw
cGVkUmVjdChyZW5kZXJlcigpLmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIpKSk7CiAKICAgICBmb3IgKFJlbmRlckxheWVyKiBjdXJyID0gZmlyc3RDaGlsZCgp
OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIWN1cnIt
PmlzQ29tcG9zaXRlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCA5ZDdiZGRlYTYxOWIzOGRjYzRlMmMzZDBlYzk0MzMyYzY0OTZj
NzFmLi5hZWExNjYwNGNkZDM3YjEwNDg1ZmZjNTkxM2IwYWNlM2Q0OTVlMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjU5LDcg
KzY1OSw3IEBAIHN0YXRpYyBJbnRSZWN0IGNsaXBCb3goUmVuZGVyQm94JiByZW5kZXJlcikKICAg
ICBpZiAocmVuZGVyZXIuaGFzQ2xpcCgpKQogICAgICAgICByZXN1bHQuaW50ZXJzZWN0KHJlbmRl
cmVyLmNsaXBSZWN0KExheW91dFBvaW50KCksIDApKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3Ig
Q1NTIHJlZ2lvbnMuCiAKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChyZXN1bHQpOwor
ICAgIHJldHVybiBwaXhlbFNuYXBwZWRSZWN0KHJlc3VsdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQpAQCAtNzA2LDcgKzcwNiw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnko
KQogICAgIEludFJlY3QgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kczsKICAgICBpZiAoY29tcEFu
Y2VzdG9yKSB7CiAgICAgICAgIEFTU0VSVChjb21wQW5jZXN0b3ItPmJhY2tpbmcoKSk7Ci0gICAg
ICAgIGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbXBB
bmNlc3Rvci0+YmFja2luZygpLT5jb21wb3NpdGVkQm91bmRzKCkpOworICAgICAgICBhbmNlc3Rv
ckNvbXBvc2l0aW5nQm91bmRzID0gcGl4ZWxTbmFwcGVkUmVjdChjb21wQW5jZXN0b3ItPmJhY2tp
bmcoKS0+Y29tcG9zaXRlZEJvdW5kcygpKTsKICAgICB9CiAKICAgICBMYXlvdXRSZWN0IGxvY2Fs
UmF3Q29tcG9zaXRpbmdCb3VuZHMgPSBjb21wb3NpdGVkQm91bmRzKCk7CkBAIC03MTcsNyArNzE3
LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRy
eSgpCiAgICAgLy8gTW92ZSB0aGUgYm91bmRzIGJ5IHRoZSBzdWJwaXhlbCBhY2N1bXVsYXRpb24g
c28gdGhhdCBpdCBwaXhlbC1zbmFwcyByZWxhdGl2ZSB0byBhYnNvbHV0ZSBwaXhlbHMgaW5zdGVh
ZCBvZiBsb2NhbCBjb29yZGluYXRlcy4KICAgICBsb2NhbFJhd0NvbXBvc2l0aW5nQm91bmRzLm1v
dmUobV9zdWJwaXhlbEFjY3VtdWxhdGlvbik7CiAKLSAgICBJbnRSZWN0IGxvY2FsQ29tcG9zaXRp
bmdCb3VuZHMgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxvY2FsUmF3Q29tcG9zaXRpbmdCb3VuZHMp
OworICAgIEludFJlY3QgbG9jYWxDb21wb3NpdGluZ0JvdW5kcyA9IHBpeGVsU25hcHBlZFJlY3Qo
bG9jYWxSYXdDb21wb3NpdGluZ0JvdW5kcyk7CiAgICAgSW50UmVjdCByZWxhdGl2ZUNvbXBvc2l0
aW5nQm91bmRzKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMpOwogICAgIHJlbGF0aXZlQ29tcG9zaXRp
bmdCb3VuZHMubW92ZUJ5KGRlbHRhKTsKIApAQCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICAvLyBs
YXllci4gTm90ZSB0aGF0IHdlIGNhbGwgaXQgd2l0aCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSB0cnVl
IGJlY2F1c2Ugbm9ybWFsbHkgd2hlbiBjb21wdXRpbmcgY2xpcCByZWN0cwogICAgICAgICAvLyBm
b3IgYSBjb21wb3NpdGluZyBsYXllciwgcm9vdExheWVyIGlzIHRoZSBsYXllciBpdHNlbGYuCiAg
ICAgICAgIFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQoY29t
cEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJT
aXplLCBJZ25vcmVPdmVyZmxvd0NsaXApOwotICAgICAgICBJbnRSZWN0IHBhcmVudENsaXBSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLmJhY2tncm91bmRDbGlwUmVjdChj
bGlwUmVjdHNDb250ZXh0KS5yZWN0KCkpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVn
aW9ucy4KKyAgICAgICAgSW50UmVjdCBwYXJlbnRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZFJlY3Qo
bV9vd25pbmdMYXllci5iYWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3RzQ29udGV4dCkucmVjdCgp
KTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAgICAgICAgIEFTU0VSVChw
YXJlbnRDbGlwUmVjdCAhPSBJbnRSZWN0OjppbmZpbml0ZVJlY3QoKSk7CiAgICAgICAgIG1fYW5j
ZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHBhcmVudENsaXBSZWN0
LmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsKICAgICAgICAgbV9h
bmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFNpemUocGFyZW50Q2xpcFJlY3Quc2l6ZSgpKTsKQEAg
LTEwOTcsMTQgKzEwOTcsMTQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUludGVy
bmFsSGllcmFyY2h5KCkKIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNS
ZWN0KCkKIHsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChwaXhlbFNuYXBw
ZWRJbnRSZWN0KGNvbnRlbnRzQm94KCkpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzUmVjdChwaXhlbFNuYXBwZWRSZWN0KGNvbnRlbnRzQm94KCkpKTsKICAgICAKICAgICBMYXlv
dXRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0OwogICAgIGlmIChyZW5kZXJlcigpLmlzQm94KCkp
CiAgICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSku
Y29udGVudEJveFJlY3QoKTsKIAogICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVu
dE9mZnNldEluQ29tcG9zdGluZ0xheWVyKCkpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNDbGlwcGluZ1JlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVj
dCkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QocGl4ZWxT
bmFwcGVkUmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1RpbGVTaXplKEludFNpemUoKSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c1RpbGVQaGFzZShJbnRQb2ludCgpKTsKQEAgLTE5MjgsMTEgKzE5MjgsMTEgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2
ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNCb3goKSkpOworICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZFJlY3QoY29udGVudHNC
b3goKSkpOwogCiAgICAgTGF5b3V0UmVjdCBjb250ZW50c0NsaXBwaW5nUmVjdCA9IGltYWdlUmVu
ZGVyZXIuY29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50c0NsaXBwaW5nUmVjdC5tb3ZlKGNv
bnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENvbnRlbnRzQ2xpcHBpbmdSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudHNDbGlwcGlu
Z1JlY3QpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KHBp
eGVsU25hcHBlZFJlY3QoY29udGVudHNDbGlwcGluZ1JlY3QpKTsKIAogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICBib29sIGlzU2ltcGxlQ29udGFp
bmVyID0gZmFsc2U7CkBAIC0yMDIyLDcgKzIwMjIsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyQmFj
a2luZzo6YmFja2dyb3VuZEJveCgpIGNvbnN0CiAKICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRC
b3ggPSBiYWNrZ3JvdW5kUmVjdEZvckJveCh0b1JlbmRlckJveChyZW5kZXJlcigpKSk7CiAgICAg
YmFja2dyb3VuZEJveC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKLSAg
ICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChiYWNrZ3JvdW5kQm94KTsKKyAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkUmVjdChiYWNrZ3JvdW5kQm94KTsKIH0KIAogR3JhcGhpY3NMYXllciogUmVu
ZGVyTGF5ZXJCYWNraW5nOjpwYXJlbnRGb3JTdWJsYXllcnMoKSBjb25zdApAQCAtMjEyNyw3ICsy
MTI3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QoY29uc3QgSW50UmVjdCYgciwgR3JhcGhpY3MKIAogICAgIEZyYW1lVmlldyYgZnJhbWVW
aWV3ID0gb3duaW5nTGF5ZXIoKS5yZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKICAgICBp
ZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcuaXNUcmFja2luZ1Jl
cGFpbnRzKCkpCi0gICAgICAgIGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWludFJlY3QocGl4ZWxT
bmFwcGVkSW50UmVjdChyKSk7CisgICAgICAgIGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWludFJl
Y3QocGl4ZWxTbmFwcGVkUmVjdChyKSk7CiAKICAgICBpZiAobV9ncmFwaGljc0xheWVyICYmIG1f
Z3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgSW50UmVjdCBsYXllckRp
cnR5UmVjdCA9IHI7CkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFw
aAogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci54KCks
IC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7CiAgICAgICAgIExheW91dFJlY3QgdHJhbnNm
b3JtZWRDbGlwID0gY2xpcDsKICAgICAgICAgdHJhbnNmb3JtZWRDbGlwLm1vdmVCeShzY3JvbGxD
b3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkpOwotICAgICAgICBtX293bmluZ0xheWVyLnBhaW50
U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHRy
YW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVy
KCZjb250ZXh0LCBJbnRQb2ludCgpLCBwaXhlbFNuYXBwZWRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkp
OwogICAgICAgICBtX293bmluZ0xheWVyLnBhaW50UmVzaXplcigmY29udGV4dCwgSW50UG9pbnQo
KSwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCA4NGEyNzFkOGNlYmY1NjY0OGRkODNlMGMzMzVhZDZlYmEyNmRiNmE1Li5lYzdiMzRj
OTNkYThkZTY2OWE3OTgwNWVkMWQxMzQyMjllMTEzYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtOTY5LDcgKzk2OSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXAoT3ZlcmxhcE1h
cCYgb3ZlcmxhcE1hcCwgUmVuZGVyTGF5ZXImCiAgICAgICAgIGJvdW5kc0NvbXB1dGVkID0gdHJ1
ZTsKICAgICB9CiAKLSAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChs
YXllci5iYWNrZ3JvdW5kQ2xpcFJlY3QoUmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQoJnJv
b3RSZW5kZXJMYXllcigpLCAwLCBBYnNvbHV0ZUNsaXBSZWN0cykpLnJlY3QoKSk7IC8vIEZJWE1F
OiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgorICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhl
bFNuYXBwZWRSZWN0KGxheWVyLmJhY2tncm91bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJl
Y3RzQ29udGV4dCgmcm9vdFJlbmRlckxheWVyKCksIDAsIEFic29sdXRlQ2xpcFJlY3RzKSkucmVj
dCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAKICAgICAvLyBPbiBp
T1MsIHBhZ2VTY2FsZUZhY3RvcigpIGlzIG5vdCBhcHBsaWVkIGJ5IFJlbmRlclZpZXcsIHNvIHdl
IHNob3VsZCBub3Qgc2NhbGUgaGVyZS4KICAgICAvLyBGSVhNRTogU2V0IFNldHRpbmdzOjpkZWxl
Z2F0ZXNQYWdlU2NhbGluZyB0byB0cnVlIGZvciBpT1MuCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgICAgICByZXR1cm4gcGx1Z2luUmVuZGVyZXIuaGFz
TGF5ZXIoKSAmJiBwbHVnaW5SZW5kZXJlci5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAg
IC8vIERvbid0IGdvIGludG8gY29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJl
IHplcm8sIG9yIHNpemUgaXMgMXgxLgotICAgIEludFJlY3QgY29udGVudEJveCA9IHBpeGVsU25h
cHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSk7CisgICAgSW50UmVj
dCBjb250ZW50Qm94ID0gcGl4ZWxTbmFwcGVkUmVjdChwbHVnaW5SZW5kZXJlci5jb250ZW50Qm94
UmVjdCgpKTsKICAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRlbnRCb3gud2lk
dGgoKSA+IDE7CiB9CiAKQEAgLTIzNzgsNyArMjM3OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCYKICAgICAgICAgcmV0dXJuIGZyYW1lUmVuZGVyZXIuaGFzTGF5ZXIoKSAmJiBmcmFtZVJlbmRl
cmVyLmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogICAgIAogICAgIC8vIERvbid0IGdvIGludG8g
Y29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHplcm8uCi0gICAgcmV0dXJu
ICFwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lUmVuZGVyZXIuY29udGVudEJveFJlY3QoKSkuaXNF
bXB0eSgpOworICAgIHJldHVybiAhcGl4ZWxTbmFwcGVkUmVjdChmcmFtZVJlbmRlcmVyLmNvbnRl
bnRCb3hSZWN0KCkpLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYg
cmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKaW5kZXggYzVlYjk4MTgzZjI3YWEzMjk4NWU2NzZlNjI4YzBjMjhjYjhhYTFlZS4uMTA4MTNk
ODQxMzkwZWI0MWYyYzY3MmFiOGNmZTYzYzQ5NTY3Mzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmCiAgICAgLy8gRm9jdXMgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4KICAgICBp
bnQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0RWxlbWVudCgpLmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJ
bmRleCgpOwogICAgIGlmIChzZWxlY3RlZEl0ZW0gPj0gMCkgewotICAgICAgICByZWN0cy5hcHBl
bmQocGl4ZWxTbmFwcGVkSW50UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZz
ZXQsIHNlbGVjdGVkSXRlbSkpKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZFJl
Y3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzZWxlY3RlZEl0ZW0pKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlbmRl
ckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0
IExheW91dFBvaW50JgogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tp
XTsKICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgIWVsZW1lbnQt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50KCku
c2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoaSk7Ci0gICAgICAgICAgICByZWN0cy5hcHBlbmQo
cGl4ZWxTbmFwcGVkSW50UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQs
IGkpKSk7CisgICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkUmVjdChpdGVtQm91
bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIGkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDUsMTIgKzM0NSwxMiBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91
dFBvaW50Jgogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmIChtX3ZC
YXIpIHsKLSAgICAgICAgSW50UmVjdCBzY3JvbGxSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChw
YWludE9mZnNldC54KCkgKyB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgo
KSwKKyAgICAgICAgSW50UmVjdCBzY3JvbGxSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChwYWludE9m
ZnNldC54KCkgKyB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKICAg
ICAgICAgICAgIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAgICAgbV92
QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3Jk
ZXJCb3R0b20oKSkpOwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsK
LSAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludEluZm8ucmVjdCkpOworICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5j
b250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBA
IC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5k
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gbGlzdEl0ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpID8gbGlzdEl0
ZW1FbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5jb2xvclNwYWNlKCkgOiBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3Qo
cGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250
cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZp
bGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3Bh
Y2UpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVj
dChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFjZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggZjI4NGU0Mzky
ZDg2ZTQ4Yzg5NmRmMDEwNmU5YWFmYTllMTA2OGIyOS4uYWIyZmNiZjFkNzEzNjFiMmVjMDI2Njcx
MmNmZmI5Yzc2NjQxNzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcApAQCAtMTE4NSw3ICsxMTg1LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2Vy
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2UKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dSZWN0
LmluZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogCi0gICAgaWYg
KCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dS
ZWN0KSkpCisgICAgaWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHBpeGVsU25hcHBlZFJl
Y3Qob3ZlcmZsb3dSZWN0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgYm94
KGJveE9yaWdpbiwgc2l6ZSgpKTsKQEAgLTEyMDQsNyArMTIwNCw3IEBAIHZvaWQgUmVuZGVyTGlz
dE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNlCiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUp
IHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgp
OwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KHNlbFJlY3QpLCBzZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAg
TGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJl
Y3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25h
cHBlZEludFJlY3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJl
Y3Qoc2VsUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZXRlci5jcHAKaW5kZXggNzJlYjZmNzFjZWI5ZWZlMzZjZjZkNDBkN2FmOGQ5Y2QwZjBm
ZTgxZi4uOTEyMDdhNTRjMDE1ZjRlMjEwZjE2NGQwMjlhZGYzMDA0MWVjMjcwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
UmVuZGVyTWV0ZXI6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiB7CiAgICAgUmVuZGVyQm94Ojp1cGRh
dGVMb2dpY2FsV2lkdGgoKTsKIAotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRl
clNpemVGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlY3QoKSkpOwor
ICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHModGhpcywg
cGl4ZWxTbmFwcGVkUmVjdChmcmFtZVJlY3QoKSkpOwogICAgIHNldExvZ2ljYWxXaWR0aChpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFtZVNpemUuaGVp
Z2h0KCkpOwogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OmNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpCiAg
ICAgICAgIGZyYW1lLnNldEhlaWdodChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgZWxz
ZQogICAgICAgICBmcmFtZS5zZXRXaWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7Ci0gICAg
SW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVyU2l6ZUZvckJvdW5kcyh0aGlzLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KGZyYW1lKSk7CisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgp
Lm1ldGVyU2l6ZUZvckJvdW5kcyh0aGlzLCBwaXhlbFNuYXBwZWRSZWN0KGZyYW1lKSk7CiAgICAg
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJh
bWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IGVkMzA5ZGFl
YTg1YzgzOWMyZDU3NDAyNWQ4MWZlZGMyMTk1NTI2MmQuLjFmYmJmY2RkNTg1ZjNmMTJlMTI2ZjM2
MGUyY2ViOGRlNzMzMzg4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgUmVuZGVyTXVs
dGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlUmlnaHQgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gcnVsZUxlZnQgKyBydWxlVGhpY2tuZXNzIDogcnVsZUxlZnQg
KyBjb250ZW50V2lkdGgoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3AgPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9naWNhbExlZnQgLSBydWxl
VGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxl
Qm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVUb3AgKyBjb250ZW50SGVp
Z2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNrbmVzczsKLSAgICAgICAgICAgICAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdEZyb21FZGdlcyhydWxl
TGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0LCBydWxlQm90dG9tKTsKKyAgICAgICAgICAgICAgICBJ
bnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdEZyb21FZGdlcyhy
dWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0LCBydWxlQm90dG9tKTsKICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVS
ZWN0LngoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QueSgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5t
YXhYKCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0Lm1heFkoKSwgYm94U2lkZSwgcnVsZUNvbG9yLCBy
dWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVt
blJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBydWxl
UmVjdC5tb3ZlKHN0ZXApOwotICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVj
dCA9IHBpeGVsU25hcHBlZEludFJlY3QocnVsZVJlY3QpOworICAgICAgICAgICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocnVsZVJlY3QpOwogICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRS
dWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJl
Y3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJveFNpZGUsIHJ1bGVDb2xv
ciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjMzBiNTI1YmI0ZjNhYmE3
MDQ3NWFjNDUzYzAxMzNiMDZlMDA3MmE1Li45YzE3ZDdmMDJkYjRkZmNmNmU3MGI3YTAxOTVjNTll
ZjUwZmNlZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjCiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBocmVmID0gdG9FbGVtZW50KG4pLT5nZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwog
ICAgIGlmIChocmVmLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+c2V0
VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBwZWRJ
bnRSZWN0KHJlY3QpKTsKKyAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCku
Y29tcGxldGVVUkwoaHJlZiksIHBpeGVsU25hcHBlZFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJl
bmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRSZWN0JiBwYWludFJlY3QpCkBAIC0xMDA3LDEwICsxMDA3LDEwIEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3Qm
IHBhaW50UmVjCiAgICAgaWYgKHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5
bGVUb1VzZS5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
SW50UmVjdCBpbm5lciA9IHBpeGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0KTsKKyAgICBJbnRS
ZWN0IGlubmVyID0gcGl4ZWxTbmFwcGVkUmVjdChwYWludFJlY3QpOwogICAgIGlubmVyLmluZmxh
dGUob3V0bGluZU9mZnNldCk7CiAKLSAgICBJbnRSZWN0IG91dGVyID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChpbm5lcik7CisgICAgSW50UmVjdCBvdXRlciA9IHBpeGVsU25hcHBlZFJlY3QoaW5uZXIp
OwogICAgIG91dGVyLmluZmxhdGUob3V0bGluZVdpZHRoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHByZXZlbnRzIG91dGxpbmVzIGZyb20gcGFpbnRpbmcgaW5zaWRlIHRoZSBvYmplY3QuIFNlZSBi
dWcgMTIwNDIKQEAgLTExMzIsNyArMTEzMiw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiAgICAgTGF5b3V0
UmVjdCByZXN1bHQgPSByZWN0c1swXTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsr
aSkKICAgICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKLSAgICByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChyZXN1bHQpOworICAgIHJldHVybiBwaXhlbFNuYXBwZWRSZWN0KHJlc3VsdCk7
CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcykKQEAgLTEyODcsNyArMTI4Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpyZXBhaW50KGJvb2wgaW1tZWRpYXRlKSBjb25zdAogICAgICAgICByZXR1cm47IC8vIERvbid0
IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcuCiAKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwotICAgIHJlcGFpbnRV
c2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcs
IHBpeGVsU25hcHBlZEludFJlY3QoY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWlu
dENvbnRhaW5lcikpLCBpbW1lZGlhdGUpOworICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIHBpeGVsU25hcHBlZFJlY3Qo
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpLCBpbW1lZGlh
dGUpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVwYWludFJlY3RhbmdsZShjb25zdCBMYXlv
dXRSZWN0JiByLCBib29sIGltbWVkaWF0ZSwgYm9vbCBzaG91bGRDbGlwVG9MYXllcikgY29uc3QK
QEAgLTEzMDgsMTIgKzEzMDgsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRSZWN0YW5n
bGUoY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUsIGJvb2wgc2gKIAogICAgIFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBjb250YWluZXJGb3JSZXBh
aW50KCk7CiAgICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIGRpcnR5
UmVjdCk7Ci0gICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIgPyByZXBh
aW50Q29udGFpbmVyIDogdmlldywgcGl4ZWxTbmFwcGVkSW50UmVjdChkaXJ0eVJlY3QpLCBpbW1l
ZGlhdGUsIHNob3VsZENsaXBUb0xheWVyKTsKKyAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVw
YWludENvbnRhaW5lciA/IHJlcGFpbnRDb250YWluZXIgOiB2aWV3LCBwaXhlbFNuYXBwZWRSZWN0
KGRpcnR5UmVjdCksIGltbWVkaWF0ZSwgc2hvdWxkQ2xpcFRvTGF5ZXIpOwogfQogCiBJbnRSZWN0
IFJlbmRlck9iamVjdDo6cGl4ZWxTbmFwcGVkQWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3QoKSk7CisgICAgcmV0dXJuIHBpeGVsU25hcHBlZFJlY3QoYWJzb2x1dGVDbGlw
cGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6Y2hlY2tGb3JSZXBh
aW50RHVyaW5nTGF5b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuY3BwCmluZGV4IDZhNDE5N2FjYmQzNzMxZWM4Yjk3ODA3NDE1YmE5NmNkYjA0NTEz
YzcuLjQwYjJjMmM3NjJiYjFmYzAwNTMzYjI3YTVmNDdkNjQ3ODFlZjM4YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbAogICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRW
YWx1ZXMubV9leHRlbnQpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQpOwotICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5wcm9n
cmVzc0JhclJlY3RGb3JCb3VuZHModGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZSkpLnNp
emUoKTsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IHRoZW1lKCkucHJvZ3Jlc3NCYXJSZWN0Rm9y
Qm91bmRzKHRoaXMsIHBpeGVsU25hcHBlZFJlY3QoZnJhbWUpKS5zaXplKCk7CiAgICAgY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXpl
LmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDg0ODFiZDg0ZjUyODY1MGNjMTlmNTBmZjRj
MTRkNTlhMjUwNzhlNWIuLmEzYjAyMmVlYWMwMjJmYjQ0NGYxNWNjMTZlMTllN2UxNjk5ZmIwMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc0
LDcgKzE3NCw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKGRyYXdTZWxlY3Rp
b25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUGFpbnRpbmdSZWN0ID0gbG9j
YWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVjdGlvblBhaW50aW5nUmVjdC5tb3ZlQnko
YWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVj
dChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVj
dCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5jcHAKaW5kZXggZDA1YjhlYzgyMGFkNmVhNWE0NzdlMWFlYjFlMzU0ZmQxNjUzYzhmMy4u
YWY4MTc2NDExNGJiMzhiODI3NTQ5NGUwYmFiMjhmOTFiMzUxMGRhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAtMTc3LDcgKzE3
Nyw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QKICAgICB9CiAgICAgCiAgICAgLy8gTm93IGRv
IHRoZSBwYWludC4KLSAgICBQYWludEluZm8gcGFpbnRJbmZvKGdyYXBoaWNzQ29udGV4dCwgcGl4
ZWxTbmFwcGVkSW50UmVjdChyZWN0KSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgUGFpbnRC
ZWhhdmlvck5vcm1hbCk7CisgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhncmFwaGljc0NvbnRleHQs
IHBpeGVsU25hcHBlZFJlY3QocmVjdCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIFBhaW50
QmVoYXZpb3JOb3JtYWwpOwogICAgIHBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAg
IHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CiAgICAg
cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCBjMWIyMzdjMzBhMTAwMDNmMzcxNGI4NzI3
MDJkYTYxNzM0NjBmOGIzLi44Y2VkMjQ4ZmM4YjY5MTZhYmEzM2U0ZWUxZWY1MDg3MmQ2ZTcyMWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjpzaG93UG9wdXAoKQog
ICAgICAgICBtX3NlYXJjaFBvcHVwLT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRT
ZWFyY2hlcyk7CiAgICAgfQogCi0gICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPnNob3co
cGl4ZWxTbmFwcGVkSW50UmVjdChhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSwgJnZpZXcoKS5m
cmFtZVZpZXcoKSwgLTEpOworICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5zaG93KHBp
eGVsU25hcHBlZFJlY3QoYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSksICZ2aWV3KCkuZnJhbWVW
aWV3KCksIC0xKTsKIH0KIAogdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6aGlkZVBvcHVwKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCmluZGV4IDQyZWVjNDMwYjcxOTEyOGE1OGNhZjAzYzc1ZDM3YmYzNTI5ZmViY2EuLjJhMDA0
ZWE0YjM1YTNhZjg5NGI1OTM4NjQxOWVkYWJlOTJkZGNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTMzLDcg
KzEzMyw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgY29udGVudExvY2F0aW9uLm1v
dmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUp
OwotICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOwor
ICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRSZWN0KHJlY3QpOwogICAgIGlm
IChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCmluZGV4IGUwNmE0NjliNDA2MzJhNjZmYWYwZmVhYmFlMjczYTcwMjMwN2Y2NDEu
LmNhNTc3OGRlYTk3ZTZkOTFiM2E4ZWRjZGY4OGY1MmM0MzIzMTFmNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjI0LDkgKzEyMjQsOSBA
QCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChSZW5kZXJUYWJsZUNlbGwqIHJpZ2h0
ID0gY2VsbEF0UmlnaHQoJnN0eWxlRm9yQ2VsbEZsb3cpKQogICAgICAgICBzaG91bGREcmF3Umln
aHRCb3JkZXIgPSByaWdodC0+YWxpZ25Ub3BCb3R0b21Cb3JkZXJQYWludFJlY3QodG9wWU9mZnNl
dFJpZ2h0LCBib3R0b21ZT2Zmc2V0UmlnaHQpOwogCi0gICAgSW50UmVjdCBjZWxsUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0LnkoKSwgcGFpbnRSZWN0
LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSk7CisgICAgSW50UmVjdCBjZWxsUmVjdCA9IHBp
eGVsU25hcHBlZFJlY3QocGFpbnRSZWN0LngoKSwgcGFpbnRSZWN0LnkoKSwgcGFpbnRSZWN0Lndp
ZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSk7CiAKLSAgICBJbnRSZWN0IGJvcmRlclJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdC54KCkgLSBsZWZ0V2lkdGggLyAyLAorICAgIElu
dFJlY3QgYm9yZGVyUmVjdCA9IHBpeGVsU25hcHBlZFJlY3QocGFpbnRSZWN0LngoKSAtIGxlZnRX
aWR0aCAvIDIsCiAgICAgICAgIHBhaW50UmVjdC55KCkgLSB0b3BXaWR0aCAvIDIsCiAgICAgICAg
IHBhaW50UmVjdC53aWR0aCgpICsgbGVmdFdpZHRoIC8gMiArIChyaWdodFdpZHRoICsgMSkgLyAy
LAogICAgICAgICBwYWludFJlY3QuaGVpZ2h0KCkgKyB0b3BXaWR0aCAvIDIgKyAoYm90dG9tV2lk
dGggKyAxKSAvIDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKaW5kZXggYWNlNWZjNmI5NjE2YTVjMzc3OTk0NzYxOGU0NzBlYjc4OTVkZDE0NS4u
M2RiNDFhM2JhNDRkOTMwZmVhMTA0YTJjNmU4MTNkZGQxNDE4YzQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6ZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRkaXRpb25hbE9mZnNldCwg
c2l6ZSgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRSZWN0KGFkZGl0aW9u
YWxPZmZzZXQsIHNpemUoKSkpOwogfQogCiBSZW5kZXJPYmplY3QqIFJlbmRlclRleHRDb250cm9s
OjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCmluZGV4IDc1NDIyMWU1MTFhZjM0MDA3ZjMzNzI5ZDg2NTNiNGMyM2JiM2FkMDku
LmZlNGE1MjM4MjM5YjA5MWI4YzQyYzI4NjcwYzY1NWExNGE3NGNjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAKICAgICAgICAg
Ly8gQ29udmVydCB0aGUgcmVjdCBpbnRvIHRoZSBjb29yZHMgdXNlZCBmb3IgcGFpbnRpbmcgdGhl
IGNvbnRlbnQKICAgICAgICAgY29udGVudHNSZWN0Lm1vdmVCeShwYWludE9mZnNldCArIGxvY2F0
aW9uKCkpOwotICAgICAgICB0aGVtZSgpLnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFp
bnRJbmZvLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzUmVjdCkpOworICAgICAgICB0aGVt
ZSgpLnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IodGhpcywgcGFpbnRJbmZvLCBwaXhlbFNuYXBwZWRS
ZWN0KGNvbnRlbnRzUmVjdCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDY1YTU5MGMyNGIyY2IxNGVhOWMzYWRlMGRjM2MwYTI3
MzJmYWE0YWUuLmM5MDMwZGM4YjcwNTNiZjI2YTIzYzBiMGViZTdiYTRiODdmOTFjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTE3NjAsNyArMTc2
MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJCiAgICAgY29udGVudExvY2F0aW9uLm1vdmUo
cmVuZGVyQmxvY2stPmJvcmRlckxlZnQoKSArIHJlbmRlckJsb2NrLT5wYWRkaW5nTGVmdCgpLCBy
ZW5kZXJCbG9jay0+Ym9yZGVyVG9wKCkgKyByZW5kZXJCbG9jay0+cGFkZGluZ1RvcCgpKTsKIAog
ICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJ
bnRSZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KTsKKyAgICBJbnRS
ZWN0IGFsaWduZWRSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChyZWN0KTsKICAgICBpZiAoYWxpZ25l
ZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAg
IHJldHVybiB0cnVlOwogCkBAIC0xODA2LDcgKzE4MDYsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SQogCiAgICAgTGF5b3V0U2l6ZSBwbHVnaW5TaXplKHBsdWdJblJlbmRlcmVyLT5jb250ZW50
V2lkdGgoKSwgcGx1Z0luUmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSk7CiAgICAgTGF5b3V0UmVj
dCBwbHVnaW5SZWN0KHNuYXBzaG90QWJzUG9zLCBwbHVnaW5TaXplKTsKLSAgICBJbnRSZWN0IGFs
aWduZWRQbHVnaW5SZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwbHVnaW5SZWN0KTsKKyAgICBJ
bnRSZWN0IGFsaWduZWRQbHVnaW5SZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChwbHVnaW5SZWN0KTsK
IAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdp
blJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZDg2NmJjNjRkMGJhNjM2
ODAwNzc5YTcxYjRjMjg0ZGE2MDg1NDQ0MC4uMDIyMmViYmE4MWZiYWE0ZjZhOWJiNTA0NGQzMjQy
NGM0ZmUxOWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcApAQCAtNjAxLDEwICs2MDEsMTAgQEAgc3RhdGljIHZvaWQgd3JpdGUoVGV4dFN0cmVh
bSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGJhY2tncm91bmRDbGlwUmVjdCwgY29u
c3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IExheW91dFJlY3QmIG91dGxpbmVDbGlwUmVj
dCwKICAgICAgICAgICAgICAgICAgIExheWVyUGFpbnRQaGFzZSBwYWludFBoYXNlID0gTGF5ZXJQ
YWludFBoYXNlQWxsLCBpbnQgaW5kZW50ID0gMCwgUmVuZGVyQXNUZXh0QmVoYXZpb3IgYmVoYXZp
b3IgPSBSZW5kZXJBc1RleHRCZWhhdmlvck5vcm1hbCkKIHsKLSAgICBJbnRSZWN0IGFkanVzdGVk
TGF5b3V0Qm91bmRzID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsYXllckJvdW5kcyk7Ci0gICAgSW50
UmVjdCBhZGp1c3RlZEJhY2tncm91bmRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoYmFj
a2dyb3VuZENsaXBSZWN0KTsKLSAgICBJbnRSZWN0IGFkanVzdGVkQ2xpcFJlY3QgPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KGNsaXBSZWN0KTsKLSAgICBJbnRSZWN0IGFkanVzdGVkT3V0bGluZUNsaXBS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRsaW5lQ2xpcFJlY3QpOworICAgIEludFJlY3Qg
YWRqdXN0ZWRMYXlvdXRCb3VuZHMgPSBwaXhlbFNuYXBwZWRSZWN0KGxheWVyQm91bmRzKTsKKyAg
ICBJbnRSZWN0IGFkanVzdGVkQmFja2dyb3VuZENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdChi
YWNrZ3JvdW5kQ2xpcFJlY3QpOworICAgIEludFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBpeGVs
U25hcHBlZFJlY3QoY2xpcFJlY3QpOworICAgIEludFJlY3QgYWRqdXN0ZWRPdXRsaW5lQ2xpcFJl
Y3QgPSBwaXhlbFNuYXBwZWRSZWN0KG91dGxpbmVDbGlwUmVjdCk7CiAKICAgICB3cml0ZUluZGVu
dCh0cywgaW5kZW50KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5
ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJM
YXllCiAgICAgaWYgKHJvb3RMYXllciA9PSBsKSB7CiAgICAgICAgIHBhaW50RGlydHlSZWN0LnNl
dFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHBhaW50RGlydHlSZWN0LndpZHRoKCksIHJvb3RM
YXllci0+cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSkpOwogICAgICAg
ICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0
eVJlY3QuaGVpZ2h0KCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVj
dCgpLm1heFkoKSkpOwotICAgICAgICBsLT5zZXRTaXplKGwtPnNpemUoKS5leHBhbmRlZFRvKHBp
eGVsU25hcHBlZEludFNpemUobWF4TGF5b3V0T3ZlcmZsb3cobC0+cmVuZGVyQm94KCkpLCBMYXlv
dXRQb2ludCgwLCAwKSkpKTsKKyAgICAgICAgbC0+c2V0U2l6ZShsLT5zaXplKCkuZXhwYW5kZWRU
byhwaXhlbFNuYXBwZWRTaXplKG1heExheW91dE92ZXJmbG93KGwtPnJlbmRlckJveCgpKSwgTGF5
b3V0UG9pbnQoMCwgMCkpKSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xp
cCByZWN0cyB3ZSBzaG91bGQgdXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRl
by5jcHAKaW5kZXggZjYzOTgyYzBiYzA0NmQxNzAxYTQxNjdmYjI4NzcyMjUwOWYyMDQzNi4uOGY5
NmMwYWZhNmUzMjJiOTVhZjFkYmUzN2RjYWMyNTA0MDgxMTkxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgSW50UmVjdCBSZW5k
ZXJWaWRlbzo6dmlkZW9Cb3goKSBjb25zdAogICAgIGlmICh2aWRlb0VsZW1lbnQoKS5zaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSkKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IG1fY2FjaGVkSW1h
Z2VTaXplOwogCi0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVwbGFjZWRDb250ZW50
UmVjdChpbnRyaW5zaWNTaXplKSk7CisgICAgcmV0dXJuIHBpeGVsU25hcHBlZFJlY3QocmVwbGFj
ZWRDb250ZW50UmVjdChpbnRyaW5zaWNTaXplKSk7CiB9CiAKIGJvb2wgUmVuZGVyVmlkZW86OnNo
b3VsZERpc3BsYXlWaWRlbygpIGNvbnN0CkBAIC0xOTEsOSArMTkxLDkgQEAgdm9pZCBSZW5kZXJW
aWRlbzo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2YKICAgICBpZiAoZGlzcGxheWluZ1Bvc3RlcikKICAgICAgICAgcGFpbnRJbnRv
UmVjdChjb250ZXh0LCByZWN0KTsKICAgICBlbHNlIGlmICh2aWV3KCkuZnJhbWVWaWV3KCkucGFp
bnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAg
ICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHBp
eGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICBtZWRpYVBsYXllci0+cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiAgICAg
ZWxzZQotICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQoY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50
UmVjdChyZWN0KSk7CisgICAgICAgIG1lZGlhUGxheWVyLT5wYWludChjb250ZXh0LCBwaXhlbFNu
YXBwZWRSZWN0KHJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWRlbzo6bGF5b3V0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBiYTkwYzI0ZDllNWFkNTJiM2I4
YzJkNDVmYTBlYzU2MDY0MGYyZDE0Li5lOGRlYTFhYTkxYTkwNzhlMzY4YTE2ODMyYTZlNTZjZWMx
ZGIwYWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02Mjgs
MTIgKzYyOCwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0
IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGltbWVkaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVj
dChyZXBhaW50UmVjdCk7CisgICAgSW50UmVjdCBzbmFwcGVkUmVjdCA9IHBpeGVsU25hcHBlZFJl
Y3QocmVwYWludFJlY3QpOwogICAgIGlmICghbV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gfHwg
aW1tZWRpYXRlKSB7Ci0gICAgICAgIGZyYW1lVmlldygpLnJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KHBpeGVsU25hcHBlZFJlY3QsIGltbWVkaWF0ZSk7CisgICAgICAgIGZyYW1lVmlldygpLnJlcGFp
bnRDb250ZW50UmVjdGFuZ2xlKHNuYXBwZWRSZWN0LCBpbW1lZGlhdGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT51bml0ZShwaXhlbFNu
YXBwZWRSZWN0KTsKKyAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+dW5pdGUoc25hcHBl
ZFJlY3QpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVn
aW9uKCkgY29uc3QKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRS
ZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IExheW91dFJlY3QmIHVyLAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBSZW5kZXJMYXllckNvbXBvc2l0
b3ImIGNvbXBvc2l0b3IgPSB0aGlzLT5jb21wb3NpdG9yKCk7CiAgICAgaWYgKGNvbXBvc2l0b3Iu
aW5Db21wb3NpdGluZ01vZGUoKSkgewotICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdCh1cik7CisgICAgICAgIEludFJlY3QgcmVwYWludFJlY3QgPSBwaXhl
bFNuYXBwZWRSZWN0KHVyKTsKICAgICAgICAgY29tcG9zaXRvci5yZXBhaW50Q29tcG9zaXRlZExh
eWVycygmcmVwYWludFJlY3QpOwogICAgIH0KICNlbmRpZgpAQCAtNzEzLDcgKzcxMyw3IEBAIHZv
aWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0CiB7Ci0gICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11
bGF0ZWRPZmZzZXQsIGxheWVyKCktPnNpemUoKSkpOworICAgIHJlY3RzLmFwcGVuZChwaXhlbFNu
YXBwZWRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsYXllcigpLT5zaXplKCkpKTsKIH0KIAogdm9p
ZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CkBAIC03NjksNyArNzY5LDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3
OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICAg
ICAgfQogICAgICAgICBzZWxSZWN0LnVuaXRlKGN1cnJSZWN0KTsKICAgICB9Ci0gICAgcmV0dXJu
IHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCk7CisgICAgcmV0dXJuIHBpeGVsU25hcHBlZFJl
Y3Qoc2VsUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFNlbGVjdGlvbigpIGNv
bnN0CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnVuc2NhbGVkRG9j
dW1lbnRSZWN0KCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdChsYXlvdXRP
dmVyZmxvd1JlY3QoKSk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93UmVjdCk7Ci0g
ICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dSZWN0KTsKKyAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkUmVjdChvdmVyZmxvd1JlY3QpOwogfQogCiBib29sIFJlbmRlclZpZXc6OnJv
b3RCYWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCmluZGV4IDBjNGY0YzNiYTdmMjNhMzhkOTliM2RhN2FkZGFlMmFjMzkzMmVm
OTEuLjE2YzVlMjM1NTI2ZDc4ZDQ4Y2Q1YzE4YTUxODYwNTZiYzg1NDM4MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogCi0gICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgpKTsgfQorICAgIEludFJlY3QgcGl4ZWxTbmFwcGVk
TGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkUmVjdChsYXlv
dXRPdmVyZmxvd1JlY3QoKSk7IH0KIAogICAgIEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIGltYWdl
UXVhbGl0eUNvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAppbmRleCBlZjgwNGIyYmU2YzMwNWU2OTIwZjBjNmU1MjVmYzJlZmRiMmQzMmU5Li4y
NWFhNzZlNjlhOGEzNjJiODc1YTEwYTZmYzIxMzg3ZDg2ODVjZTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lk
Z2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZz
ZXQpOwogICAgIH0KLSAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHBpeGVs
U25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5m
by5jb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0KHBhaW50UmVjdCkpOwogCiAgICAgaWYgKCF3aWRn
ZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5z
bGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVuZGVy
V2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3Zl
ciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCku
cHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFi
c29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0KHNlbGVjdGlvblJlY3Qo
KSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAg
ICAgfQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKaW5kZXggMzQ2ODc5NTY5ODJjOTQ5ZjIyNjY1MzkyODBlNTMxNGIxMzg1YjY3ZS4uZWQ0
NjZiZmNlZWJhODlkZWE1OWMwYzk1ZWNkNjNiN2JiODQ0NjA1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGJvcmRlcgogICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgTGF5
b3V0UmVjdCByZWN0KGJvcmRlclJlY3QpOwogICAgIHJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsK
LSAgICBjb250ZXh0LmRyYXdSZWN0KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgIGNv
bnRleHQuZHJhd1JlY3QocGl4ZWxTbmFwcGVkUmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgcGFpbnRG
bG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDAxMjMyNDk5NzI0MmY5
NTliZDc3MTVkZGJlMTNmMzljMTc1ZTgzNjAuLjdkYTk4YTFlZGFmMzY5MmJmZmZkZjhmMTBhYWE2
NzQwYmJiMzc1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CkBAIC0yNTYsNyArMjU2LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3Rl
clNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHQKICAgICBBU1NFUlQo
c3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpKTsKICAgICBBU1NFUlQoc3R5bGVJbWFnZS5jYWNoZWRJ
bWFnZSgpLT5oYXNJbWFnZSgpKTsKIAotICAgIEludFJlY3QgdG9SZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChpbWFnZVJlY3QpOworICAgIEludFJlY3QgdG9SZWN0ID0gcGl4ZWxTbmFwcGVkUmVj
dChpbWFnZVJlY3QpOwogICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IHRvUmVjdC5zaXplKCk7CiAg
ICAgSW50U2l6ZSByYXN0ZXJTaXplID0gSW50U2l6ZSh0b1JlY3QubWF4WCgpLCB0b1JlY3QubWF4
WSgpKTsKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscyA9IGFkb3B0
UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhyYXN0ZXJTaXplLmhlaWdodCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA3MWM2
Mzc2YTgzMzVjYWMwZGEwZjBmYWNkMDQ2YmEzZmU2MmRkOTNkLi43MTU4ODFmNTRlNWVlYjIzMWM5
OGY1N2Q2ZDEyMTZlMzJiNzYyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTExNjEsNyArMTE2MSw3IEBAIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzaG9ydCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVk
LCB2ZXJ0aWNhCiAKIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9y
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkg
Y29uc3QKIHsKLSAgICBJbnRSZWN0IHNuYXBwZWRCb3JkZXJSZWN0KHBpeGVsU25hcHBlZEludFJl
Y3QoYm9yZGVyUmVjdCkpOworICAgIEludFJlY3Qgc25hcHBlZEJvcmRlclJlY3QocGl4ZWxTbmFw
cGVkUmVjdChib3JkZXJSZWN0KSk7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3Qoc25hcHBl
ZEJvcmRlclJlY3QpOwogICAgIGlmIChoYXNCb3JkZXJSYWRpdXMoKSkgewogICAgICAgICBSb3Vu
ZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgc25h
cHBlZEJvcmRlclJlY3Quc2l6ZSgpLCByZW5kZXJWaWV3KTsKQEAgLTExOTEsNyArMTE5MSw3IEBA
IFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3Qg
TGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwKICAgICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgo
KSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAogICAgICAgICAgICAgICAgYm9yZGVyUmVjdC5o
ZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwogCi0gICAgUm91bmRlZFJlY3Qgcm91
bmRlZFJlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChpbm5lclJlY3QpKTsKKyAgICBSb3VuZGVkUmVj
dCByb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRSZWN0KGlubmVyUmVjdCkpOwogCiAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cygpKSB7CiAgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGdl
dFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFkaWkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDZkZTNhYTNjNmI4MGZjMjNm
YTVlY2MyYTQ5YzRkNjFkNGViN2E5MDguLjQzYTI0ZTI5ZDc3ODAxNGVjMDVjZTNjOGE2NDc4NTRh
MDRmODdhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2
aWV3cG9ydCBjbGlwIC0gbm90IGFmZmVjdGVkIGJ5IG92ZXJmbG93IGhhbmRsaW5nCi0gICAgY2hp
bGRQYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRJbnRSZWN0KG92ZXJmbG93Q2xp
cFJlY3QocGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKSk7CisgICAgY2hpbGRQ
YWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRSZWN0KG92ZXJmbG93Q2xpcFJlY3Qo
cGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKSk7CiAKICAgICAvLyBDb252ZXJ0
IGZyb20gY29udGFpbmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRy
YW5zZm9ybSAoc3ZnIHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50
IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzA4MmY5MmY3ZWQwOGE1ZGQ3NjFmZDY4
N2FjNTI1N2E4OTdhMjQ1MC4uYzNiNzRmNTg1ODFkOTVkYTQwNWU0ZDlmNjFmNTZiYzY5YjFiMzZk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzA5Miw3ICszMDkyLDcg
QEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgICAgICAgICAg
W3JlZ2lvblZhbHVlcyByZWxlYXNlXTsKICAgICAgICAgfQogCi0gICAgICAgIFdlYkRhc2hib2Fy
ZFJlZ2lvbiAqd2ViUmVnaW9uID0gW1tXZWJEYXNoYm9hcmRSZWdpb24gYWxsb2NdIGluaXRXaXRo
UmVjdDpwaXhlbFNuYXBwZWRJbnRSZWN0KHJlZ2lvbi5ib3VuZHMpIGNsaXA6cGl4ZWxTbmFwcGVk
SW50UmVjdChyZWdpb24uY2xpcCkgdHlwZTp0eXBlXTsKKyAgICAgICAgV2ViRGFzaGJvYXJkUmVn
aW9uICp3ZWJSZWdpb24gPSBbW1dlYkRhc2hib2FyZFJlZ2lvbiBhbGxvY10gaW5pdFdpdGhSZWN0
OnBpeGVsU25hcHBlZFJlY3QocmVnaW9uLmJvdW5kcykgY2xpcDpwaXhlbFNuYXBwZWRSZWN0KHJl
Z2lvbi5jbGlwKSB0eXBlOnR5cGVdOwogICAgICAgICBbcmVnaW9uVmFsdWVzIGFkZE9iamVjdDp3
ZWJSZWdpb25dOwogICAgICAgICBbd2ViUmVnaW9uIHJlbGVhc2VdOwogICAgIH0KQEAgLTM5ODMs
NyArMzk4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKICAg
ICBOU011dGFibGVBcnJheSogcmVjdHNBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6cmVwYWludFJlY3RzLnNpemUoKV07CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgW3JlY3Rz
QXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGl4ZWxTbmFwcGVkSW50UmVj
dChyZXBhaW50UmVjdHNbaV0pXV07CisgICAgICAgIFtyZWN0c0FycmF5IGFkZE9iamVjdDpbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OnBpeGVsU25hcHBlZFJlY3QocmVwYWludFJlY3RzW2ldKV1dOwog
CiAgICAgcmV0dXJuIFtyZWN0c0FycmF5IGF1dG9yZWxlYXNlXTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNjZmYyYjM2ZjMwMTczMjI4
MGMzMWE4ZGE2YmFhMWU3OTI5Zjk0YmQuLmU0MzZlZTcxNTc0YzI0ZDliZDEzMmVkZjg3Y2ZjOWUz
NGRiYWM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0CiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBw
YWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RS
ZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFw
cGVkUmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKIAogICAg
IGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhtX25vZGUuZ2V0KCkpOwogICAgIFJlZlB0cjxXZWJJ
bWFnZT4gaW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGluZ1JlY3QsIG9wdGlv
bnMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>