<?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>43347</bug_id>
          
          <creation_ts>2010-08-02 07:26:37 -0700</creation_ts>
          <short_desc>Speculative revert of 64425 due to Chromium instability</short_desc>
          <delta_ts>2010-08-02 18:18:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42592</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258855</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-02 07:26:37 -0700</bug_when>
    <thetext>Speculative revert of 64425 due to Chromium instability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258866</commentid>
    <comment_count>1</comment_count>
      <attachid>63217</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-02 07:44:09 -0700</bug_when>
    <thetext>Created attachment 63217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258868</commentid>
    <comment_count>2</comment_count>
      <attachid>63218</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-02 07:47:06 -0700</bug_when>
    <thetext>Created attachment 63218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258872</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 07:51:30 -0700</bug_when>
    <thetext>Attachment 63217 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/PopupMenu.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/wx/PopupMenuWx.cpp:81:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/wx/PopupMenuWx.cpp:83:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 3 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258873</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 07:53:39 -0700</bug_when>
    <thetext>Attachment 63218 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/PopupMenu.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/wx/PopupMenuWx.cpp:81:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/wx/PopupMenuWx.cpp:83:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 3 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258874</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-02 07:54:08 -0700</bug_when>
    <thetext>Committed r64462: &lt;http://trac.webkit.org/changeset/64462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258973</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-02 10:46:34 -0700</bug_when>
    <thetext>So did it fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259062</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-02 13:05:10 -0700</bug_when>
    <thetext>Looks like yes.  :-(

I commented in the original bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259240</commentid>
    <comment_count>8</comment_count>
      <attachid>63218</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-02 18:18:15 -0700</bug_when>
    <thetext>Comment on attachment 63218
Patch

removing the patch from the review queue</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63217</attachid>
            <date>2010-08-02 07:44:09 -0700</date>
            <delta_ts>2010-08-02 07:46:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43347-20100802154406.patch</filename>
            <type>text/plain</type>
            <size>168378</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM0ZTZhYjI0MzNjNDM1MWUxYjRkZTM2NGNiOTU2MGY5NDcwYzE2OC4uZjQyZjliNzRhNDczNzI5
NWNlZDAyMjU5NDllM2ZiNzg3YTVhOWVhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMDcgQEAKKzIwMTAtMDgtMDIgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlY3VsYXRpdmUg
cmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lLmNwcDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OmRpc2Nvbm5lY3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51OjppdGVtSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6d2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnBvcHVwSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2V0V2FzQ2xpY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cE1lbnU6Ondhc0NsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojpz
Y3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp3aGVlbERlbHRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2Nyb2xsYmFyQ2FwdHVyaW5nTW91c2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudTo6c2Nyb2xsYmFyQ29ybmVyUHJlc2VudCk6CisgICAgICAgICogcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVCcmV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudTo6flBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNo
b3cpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCk6CisgICAgICAgICogcGxhdGZv
cm0vYnJldy9Qb3B1cE1lbnVCcmV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYnJl
dy9TZWFyY2hQb3B1cE1lbnVCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dTo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9TZWFyY2hQb3B1cE1lbnVCcmV3
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1NlYXJjaFBvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvUG9wdXBNZW51RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6UG9w
dXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVudSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBN
ZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklz
TmF0dXJhbCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjplbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvU2VhcmNoUG9wdXBNZW51RWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BvcHVwTWVudUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OlBvcHVwTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6On5Qb3B1cE1lbnUpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6
aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVy
YWwpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjptZW51SXRlbUFjdGl2YXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Om1lbnVVbm1hcHBlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnU6Om1lbnVQb3NpdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudTo6bWVudVJlbW92ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Qb3B1
cE1lbnVHdGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VhcmNoUG9wdXBN
ZW51R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9w
dXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L1BvcHVwTWVudUhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudUhhaWt1OjpQb3B1cE1lbnVIYWlrdSk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cE1lbnVIYWlrdTo6flBvcHVwTWVudUhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVw
TWVudTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6dXBkYXRl
RnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCk6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFp
a3UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9TZWFyY2hQb3B1cE1lbnVI
YWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVw
TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L1NlYXJjaFBvcHVwTWVudUhhaWt1Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1hYy5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnU6OlBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6On5Qb3B1cE1lbnUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpQb3B1cE1lbnU6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hv
dyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNl
bnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hv
dyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0QWJz
dHJhY3RXZWJQb3B1cC5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVudSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnBvcHVwQ2xhc3NOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzZXRGb2N1c2VkSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp2aXNpYmxlSXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51OjpsaXN0SW5kZXhBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudTo6Zm9jdXNlZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6Zm9j
dXNGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmZvY3VzTGFzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBN
ZW51Ojp1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmludmFsaWRhdGVJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6Y2xpZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnU6OmluY3JlbWVudFdoZWVsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBNZW51OjpyZWR1Y2VXaGVlbERlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6c2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1X
cml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp2YWx1ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnJlZ2lzdGVyQ2xhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51OjpQb3B1cE1lbnVXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVw
TWVudTo6d25kUHJvYyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvUG9wdXBNZW51V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1
cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnU6Ok9uTWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Omhp
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvU2VhcmNoUG9w
dXBNZW51V3guaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRTZWFyY2hSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9w
dXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRl
UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1
cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oOgorCiAyMDEwLTA4LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGM1NTdhYjFjNGE3NmMzMjUyOThkOGJhNGQ5OTcyYWVlNDAxMDRiZTkuLmQzNWI3NGEy
YmQ2YjI5YWRjMThjZTM3NzMzYTAyZjRjNDQ0Y2VmZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ2NSw3ICsyNDY1
LDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3Rr
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBcCi0JV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
aCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcCBcCkBAIC0yNDc0LDcg
KzI0NzMsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdH
dGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuY3BwIFwK
LQlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2hhcmVkVGltZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Tb3VuZEd0ay5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggY2VlYWQzMWRiZTMwOWRmOWE2ZGQzYTZkNTdmM2VkNTE0YTZhMWVmNi4uOWYz
M2UzNmZmMDZjOWJiZDUyMjNhOTQ0NGI1MGY4ZDljNmNlYWE5MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNTAsNyAr
MjUwLDYgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UyN2NoZWNrSW50ZWdyaXR5QmVmb3Jl
T3BlbmluZ0V2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTRvcGVuRVJLTlNfNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRh
dGFiYXNlOXNldENsaWVudEVQTlNfMThJY29uRGF0YWJhc2VDbGllbnRFCi1fX1pON1dlYkNvcmUx
MlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUHJp
bnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5TXzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKIF9f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTZpc1BhZ2VCb3hWaXNpYmxlRVBOU181RnJhbWVFaQpA
QCAtNDEyLDcgKzQxMSw2IEBAIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUEtjUmkK
IF9fWk43V2ViQ29yZTE4ZGVwcmVjYXRlZFBhcnNlVVJMRVJLTlNfNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dl
YkNvcmUxOHBsdWdpblNjcmlwdE9iamVjdEVQTjNKU0M5RXhlY1N0YXRlRVBOU18xM0pTSFRNTEVs
ZW1lbnRFCi1fX1pON1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVu
dUNsaWVudEUKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0
aW9uc0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMTdz
dXNwZW5kQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOU182
U3RyaW5nRWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMjA0ODJiYmUwZDMzOWI5OGQxMTY4MzMyYTM1MjlmMWVkMmI2NTcyZi4u
ZjUwMmNiNGExY2FmMjMzODEzMWY2MjIxMzI4N2EyODJkNjgwY2I5ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIxMzAsNyAr
MjEzMCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Nl
YXJjaFBvcHVwTWVudUNocm9taXVtLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vU2hhcmVkVGltZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1NvdW5kQ2hyb21pdW1Qb3NpeC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1NvdW5kQ2hyb21pdW1XaW4uY3BwJywKQEAgLTI2MjMsNyArMjYyMiw2IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0nLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbScsCi0gICAgICAgICAgICAncGxhdGZvcm0vbWFj
L1BvcHVwTWVudU1hYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbScsCkBAIC0y
NjMxLDcgKzI2MjksNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21hYy9TZWFyY2hQb3B1cE1lbnVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21hYy9TaGFyZWRCdWZmZXJNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9TaGFy
ZWRUaW1lck1hYy5tbScsCkBAIC0yNzgyLDcgKzI3NzksNiBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
cXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1BvcHVw
TWVudVF0LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vcXQvUVdlYlBvcHVwLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vcXQvUVdlYlBvcHVwLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuY3BwJywKQEAgLTI3OTMsNyArMjc4OSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1Njcm9s
bGJhclRoZW1lUXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51
UXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9TZWFyY2hQb3B1cE1lbnVRdC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Tb3VuZFF0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCBmZTI2MWFjYmZjNzJiYmRjMzFmZTBkZmY2MWI2YWI2ODlm
Y2ZlYTE0Li4xMjhhYzRlNWFiOTkwNzc0M2JmY2ZkZjBmYjBkMjliZjRhZWE5ZTJjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE3
MDksNyArMTcwOSw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmggXAog
ICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIFwKLSAgICBwbGF0Zm9ybS9Qb3B1cE1l
bnUuaCBcCiAgICAgcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBcCiAgICAgcGxhdGZvcm0vcXQv
UVdlYlBhZ2VDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgg
XApAQCAtMTcxOSw3ICsxNzE4LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vU2Nyb2xs
YmFyLmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggXAogICAgIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaCBcCi0gICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggXAog
ICAgIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIFwKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaCBcCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBcCkBAIC0zMjk5
LDggKzMyOTcsNiBAQCBIRUFERVJTICs9IFwKICAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRXJyb3JzLmggXAogICAgIC4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIFwKICAgICAuLi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggXAotICAgIC4uL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBcCi0gICAgLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oIFwKICAg
ICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEu
aCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBcCiAg
ICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCkBAIC0zMzczLDgg
KzMzNjksNiBAQCBTT1VSQ0VTICs9IFwKICAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIFwKICAgICAuLi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBcCiAgICAgLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNs
aWVudC5jcHAgXAotICAgIC4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
b3B1cE1lbnUuY3BwIFwKLSAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3F0L1dlYkVycm9yc1F0LmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDMyMjIwYTAzYTdkMDU0ZjlkMTY2MzczMjE4MzFlZDllYWQ1OWI3
NTEuLjdmZTg3MDU4YzUzZDE2OTA2MzI1OWJlZTIyOGVmMDg0MjM1ZWMwZWEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjM3MjAsMTAgKzIzNzIwLDYgQEAKIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXHdpblxQb3B1cE1lbnVXaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8Rmls
ZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMjM3NDQsMTAgKzIzNzQwLDYgQEAK
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXHdpblxTZWFyY2hQb3B1cE1lbnVXaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxl
Pg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cU2hhcmVk
QnVmZmVyV2luLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGY0OTcyNmQxMmZlYzFkMmRlNWZkMDA3ZmE3
MDM3OTA1ZDQ3OGYwZS4uODlkYTRhYTk2ZTc3ODA1NTAxNDg3ZTQ0N2U4YjA1MDJiZjVhYjgwNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyLDcgKzQy
LDcgQEAKIAkJMDY1QUQ0RjUwQjBDMkVEQTAwNUEyQjFEIC8qIENvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjVBRDRGMjBC
MEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQg
LyogQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA2NUFENEYzMEIwQzJFREEwMDVBMkIxRCAvKiBDb250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkwNjVBRDRGNzBCMEMyRURBMDA1QTJCMUQgLyogQ29u
dGV4dE1lbnVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNjVBRDRGNDBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDb250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OEUxODkwQUREOTYyNDAwNDEyOEUwIC8q
IFBvcHVwTWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA2NjhFMThCMEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NjhFMTg5MEFERDk2MjQwMDQx
MjhFMCAvKiBQb3B1cE1lbnUuaCAqLzsgfTsKIAkJMDY2OEUxOTAwQUREOTY0MDAwNDEyOEUwIC8q
IFBvcHVwTWVudU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA2NjhFMThFMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1cE1lbnVNYWMubW0gKi87IH07
CiAJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2Qzc3MkEwQUI2MDNCNzAwMjM4
Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDY2Qzc3MkQwQUI2MDNEMjAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2Qzc3
MkMwQUI2MDNEMjAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyTWFjLm1tICovOyB9OwpAQCAtMzU5Niwx
MiArMzU5NiwxMiBAQAogCQlBQjRDQjRFQjBCOEJEQTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uaCAqLzsgfTsKIAkJQUI2N0QxQTgwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250
cm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFC
NjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5jcHAgKi87IH07CiAJ
CUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI2N0QxQTcwOTdGM0FFMzAw
RjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmggKi87IH07Ci0JCUFCNzE3MDg5MEIzMTE4MDgw
MDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFCNzE3MDg4MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQb3B1
cE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBQjcxNzA4OTBCMzExODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjcxNzA4ODBCMzExODA4MDAx
NzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggKi87IH07CiAJCUFCNzE3MEEwMEIzMTE5M0IwMDE3
MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQjcxNzA5RjBCMzExOTNCMDAxNzEyM0UgLyogU2VhcmNoUG9w
dXBNZW51TWFjLm1tICovOyB9OwogCQlBQkFGMjIwODBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21l
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJB
RjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1hYy5tbSAqLzsgfTsKIAkJQUJCNTQxOUUw
QUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJCNTQxOUMwQUNEREZFNDAwMjgyMEVCIC8qIFJl
bmRlckxpc3RCb3guY3BwICovOyB9OwogCQlBQkI1NDE5RjBBQ0RERkU0MDAyODIwRUIgLyogUmVu
ZGVyTGlzdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUJCNTQxOUQwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guaCAqLzsgfTsKLQkJ
QUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJDMTI4NzYwQjMzQUE2RDAwQzY5
M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUFCQzEyODc3MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFC
QzEyODc2MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJQUJE
REZFNzkwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRERGRTczMEE1QzZFNkYwMEEzRTEx
RCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi87IH07CiAJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTEx
RCAvKiBSZW5kZXJNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0Lmgg
Ki87IH07CiAJCUFCRkU3RTEyMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZF
N0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OwpA
QCAtNTAyMiw4ICs1MDIyLDYgQEAKIAkJRDIzQ0E1NUQwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQyM0NBNTVDMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi87IH07
CiAJCUQyM0NBNTVGMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTVFMEFCMEVB
QjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRDIzQ0E1NkMwQUIw
RUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjNDQTU2QjBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VF
eGNlcHRpb24uaCAqLzsgfTsKLQkJRDM5RDAwNkQxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVu
dU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDM5
RDAwNkMxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVudU1hYy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUQzOUQwMDlEMTFGOTA3RTYwMDYwNDFG
MiAvKiBTZWFyY2hQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQzOUQwMDlDMTFGOTA3RTYwMDYwNDFGMiAvKiBTZWFyY2hQb3B1cE1l
bnVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlEOEI2MTUyRjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyog
Q29va2llLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJREIyM0MyQ0IwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkM5MEE1
MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgKi87IH07CiAJCURCMjND
MkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREIyM0MyQ0EwQTUwOEQyOTAwMjQ4
OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggKi87IH07CkBAIC0xMDczNiw4ICsxMDczNCw2
IEBACiAJCUQyM0NBNTVDMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JhbmdlRXhjZXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTVFMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1Jh
bmdlRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JhbmdlRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIzQ0E1
NkIwQUIwRUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMzlEMDA2QzExRjhFMzA4MDA2MDQxRjIgLyogUG9wdXBNZW51TWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwTWVudU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMzlEMDA5QzExRjkwN0U2MDA2MDQxRjIgLyogU2VhcmNoUG9wdXBN
ZW51TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVu
dU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEOEI2MTUyRTEwMzI0OTUxMDBD
ODU1NEEgLyogQ29va2llLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQjIzQzJDOTBBNTA4RDI5MDAyNDg5
RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluZGVudE91dGRlbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29t
bWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzMDgsMTIgKzEyMzA0LDEw
IEBACiAJCQkJNEIyNzA5ODEwQUYyRTVFMDAwNjUxMjdGIC8qIFBhc3RlYm9hcmRNYWMubW0gKi8s
CiAJCQkJOTM1QzQ3NkYwOUFDNEQ3MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudE1hYy5t
bSAqLywKIAkJCQlCQzk0RDEwNzBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMu
bW0gKi8sCi0JCQkJRDM5RDAwNkMxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVudU1hYy5oICov
LAogCQkJCTA2NjhFMThFMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1cE1lbnVNYWMubW0gKi8sCiAJ
CQkJRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgKi8s
CiAJCQkJNDQ3RDY5MDEwRkE2MjY4MTAwMTVDQ0IxIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oICovLAogCQkJCTQ0N0Q2OTAyMEZBNjI2ODEwMDE1Q0NCMSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MubW0gKi8sCi0JCQkJRDM5RDAwOUMxMUY5MDdFNjAwNjA0MUYyIC8qIFNlYXJjaFBv
cHVwTWVudU1hYy5oICovLAogCQkJCTFDRTI0Rjk2MEQ3Q0FGMEUwMDdFMDRDMiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gKi8sCiAJCQkJQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJh
ci5jcHAgKi8sCiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1l
TWFjLmggKi8sCkBAIC0xOTk2MSw4ICsxOTk1NSw2IEBACiAJCQkJQzU3MkVFMEUxMjAxQzczNjAw
N0Q4RjgyIC8qIElEQkluZGV4QmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzJF
RTBGMTIwMUM3MzYwMDdEOEY4MiAvKiBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM1NzJFRTFGMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggaW4g
SGVhZGVycyAqLywKLQkJCQlEMzlEMDA2RDExRjhFMzA4MDA2MDQxRjIgLyogUG9wdXBNZW51TWFj
LmggaW4gSGVhZGVycyAqLywKLQkJCQlEMzlEMDA5RDExRjkwN0U2MDA2MDQxRjIgLyogU2VhcmNo
UG9wdXBNZW51TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0
MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBi
YTc4NDFjNDllNjUyYjQzMTMxNjQxMTk0YTdiMjI0YTBiNDQ0NzVjLi5lY2EwMWU4MTFhY2U4MGRl
MDQyZjE2M2ZhNjdhNjhhYTNiYTVlZTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMSw3ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0
Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw5ICszOSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5IYWx0ZXJDbGllbnQu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0j
aW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKICNpZiBVU0UoR0xFUzJfUkVOREVSSU5HKQog
I2luY2x1ZGUgIkdMRVMyQ29udGV4dC5oIgpAQCAtNjMsMjUgKzYwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBFbXB0eVBvcHVwTWVudSA6IHB1YmxpYyBQb3B1cE1lbnUgewot
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcq
LCBpbnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpIHt9Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQo
KSB7fQotfTsKLQotY2xhc3MgRW1wdHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNoUG9w
dXBNZW51IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgeyBy
ZXR1cm4gJm1fcG9wdXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikge30KLSAgICB2aXJ0dWFs
IHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJp
bmc+Jikge30KLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0K
LXByaXZhdGU6Ci0gICAgRW1wdHlQb3B1cE1lbnUgbV9wb3B1cDsKLX07Ci0KIGNsYXNzIEVtcHR5
Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RW1wdHlDaHJvbWVDbGllbnQoKSB7IH0KQEAgLTEzNCwxMCArMTEyLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1w
dHlQb3B1cE1lbnUoKSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgeyByZXR1cm4g
YWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOyB9Ci0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCB0YWJzVG9MaW5rcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGJmZjAx
MDAyNTdiMThmZjNmNGVmYWRmZDk2Y2YwMWE0ODViMWU5ODIuLjBjNjY5MjU0MmNiMjY4ODc3NWUz
ZDdlZjI4OWJjYzAyY2Y3NmY1NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTQ4MiwxOSArNDgyLDUgQEAgYm9vbCBDaHJvbWVDbGllbnQ6OnBhaW50Q3VzdG9tU2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQotewotICAgIHJldHVybiBtX2NsaWVudC0+c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwoKTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVu
dC0+Y3JlYXRlUG9wdXBNZW51KGNsaWVudCk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBN
ZW51PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQtPmNyZWF0ZVNlYXJjaFBvcHVwTWVudShj
bGllbnQpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMzBlZGYyODZiNWQw
MTY0MDhhYTU2ZmQ5YWU2YWQyNzI1NjE3YmRlMC4uNTM3NDY4YTBmMzY3ZWJiZTU5ZDZiMWY4YWM1
MGZhM2VmNmNlMzkwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsOCArMjQsNiBAQAogI2luY2x1
ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTQ3LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKICAgICBjbGFzcyBTdHJpbmc7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwpAQCAtMTQ4LDEwICsxNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7IAogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBzZWxl
Y3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgICAgICBQYXNzUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgICAg
ICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdl
OwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDI4
ZTBiNGZmOWZjZjUxNDgzMjUyOGQ5MWZkMTk2ZmQxNzM1MjgxZTguLjM5YTQxYWUzNWU5YThhODU0
NzFjMWI2MDFmZmU4YjcyZmI0NjE3MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTEsNiArMSw1IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNywxMCArMjYsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJRdWlya3MuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAi
UG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNTgsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
Tm9kZTsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotICAgIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV2lkZ2V0
OwogCkBAIC0yNjcsMTAgKzI2Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSA9IDA7CiAjZW5kaWYKIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1
cE1lbnVDbGllbnQqKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCA9IDA7Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgp
IHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnUuaAppbmRleCA4ZWJiYTAzMWZhZjg4MWMyNjJkM2U5
N2M1NjQzN2RhZTgzZGEzMjFhLi5kOWQyNzQwYjcxY2Q0ODI4YmE2NDFmZThhMmVhMTQxOGFjYmVi
NDdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDIyICsyMSwxODAgQEAKICNpZm5kZWYgUG9w
dXBNZW51X2gKICNkZWZpbmUgUG9wdXBNZW51X2gKIAorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNQb3BVcEJ1dHRv
bkNlbGw7CisjZWxzZQorY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CisjZW5kaWYKKyNlbGlmIFBM
QVRGT1JNKFdJTikKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBIV05EX18q
IEhXTkQ7Cit0eXBlZGVmIHN0cnVjdCBIRENfXyogSERDOwordHlwZWRlZiBzdHJ1Y3QgSEJJVE1B
UF9fKiBIQklUTUFQOworI2VsaWYgUExBVEZPUk0oUVQpCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBRdEFic3RyYWN0V2ViUG9wdXA7Cit9CisjZWxpZiBQTEFURk9STShHVEspCit0eXBlZGVm
IHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwordHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVtIEd0
a01lbnVJdGVtOwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7CisjaW5jbHVk
ZSAiR1JlZlB0ckd0ay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2VsaWYgUExBVEZPUk0oV1gpCisjaWZkZWYgX19XWE1TV19fCisjaW5jbHVkZSA8d3gv
bXN3L3dpbnVuZGVmLmg+CisjZW5kaWYKK2NsYXNzIHd4TWVudTsKKyNpbmNsdWRlIDx3eC9kZWZz
Lmg+CisjaW5jbHVkZSA8d3gvZXZlbnQuaD4KKyNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQorI2lu
Y2x1ZGUgIlBvcHVwTWVudVByaXZhdGUuaCIKKyNlbGlmIFBMQVRGT1JNKEhBSUtVKQorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUG9wdXBNZW51SGFpa3U7Cit9CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBJbnRSZWN0OworY2xhc3Mg
U2Nyb2xsYmFyOwogCi1jbGFzcyBQb3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3B1cE1l
bnU+IHsKK2NsYXNzIFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFBvcHVwTWVudT4KKyNp
ZiBQTEFURk9STShXSU4pCisgICAgICAgICAgICAgICAgLCBwcml2YXRlIFNjcm9sbGJhckNsaWVu
dAorI2VuZGlmCisjaWYgUExBVEZPUk0oV1gpCisgICAgICAgICAgICAgICAgLCBwdWJsaWMgd3hF
dnRIYW5kbGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Qb3B1cE1lbnUoKSB7
fQotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQg
aW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RD
bGllbnQoKSA9IDA7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGUoUG9w
dXBNZW51Q2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnUoY2xp
ZW50KSk7IH0KKyAgICB+UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBkaXNjb25uZWN0Q2xp
ZW50KCkgeyBtX3BvcHVwQ2xpZW50ID0gMDsgfQorCisgICAgdm9pZCBzaG93KGNvbnN0IEludFJl
Y3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOworICAgIHZvaWQgaGlkZSgpOworCisgICAgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIAorICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudDsgfQorCisgICAgc3RhdGljIGJvb2wgaXRl
bVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBT
Y3JvbGxiYXIqIHNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9
CisKKyAgICBzdGF0aWMgTFBDVFNUUiBwb3B1cENsYXNzTmFtZSgpOworCisgICAgYm9vbCB1cCh1
bnNpZ25lZCBsaW5lcyA9IDEpOworICAgIGJvb2wgZG93bih1bnNpZ25lZCBsaW5lcyA9IDEpOwor
CisgICAgaW50IGl0ZW1IZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1IZWlnaHQ7IH0KKyAg
ICBjb25zdCBJbnRSZWN0JiB3aW5kb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dSZWN0
OyB9CisgICAgSW50UmVjdCBjbGllbnRSZWN0KCkgY29uc3Q7CisKKyAgICBpbnQgdmlzaWJsZUl0
ZW1zKCkgY29uc3Q7CisKKyAgICBpbnQgbGlzdEluZGV4QXRQb2ludChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OworCisgICAgYm9vbCBzZXRGb2N1c2VkSW5kZXgoaW50IGluZGV4LCBib29sIGhvdFRy
YWNraW5nID0gZmFsc2UpOworICAgIGludCBmb2N1c2VkSW5kZXgoKSBjb25zdDsKKyAgICB2b2lk
IGZvY3VzRmlyc3QoKTsKKyAgICB2b2lkIGZvY3VzTGFzdCgpOworCisgICAgdm9pZCBwYWludChj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgPSAwKTsKKworICAgIEhXTkQgcG9wdXBIYW5k
bGUoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwOyB9CisKKyAgICB2b2lkIHNldFdhc0NsaWNrZWQo
Ym9vbCBiID0gdHJ1ZSkgeyBtX3dhc0NsaWNrZWQgPSBiOyB9CisgICAgYm9vbCB3YXNDbGlja2Vk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNDbGlja2VkOyB9CisKKyAgICB2b2lkIHNldFNjcm9sbE9m
ZnNldChpbnQgb2Zmc2V0KSB7IG1fc2Nyb2xsT2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgaW50IHNj
cm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0OyB9CisKKyAgICBib29s
IHNjcm9sbFRvUmV2ZWFsU2VsZWN0aW9uKCk7CisKKyAgICB2b2lkIGluY3JlbWVudFdoZWVsRGVs
dGEoaW50IGRlbHRhKTsKKyAgICB2b2lkIHJlZHVjZVdoZWVsRGVsdGEoaW50IGRlbHRhKTsKKyAg
ICBpbnQgd2hlZWxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YTsgfQorCisgICAg
Ym9vbCBzY3JvbGxiYXJDYXB0dXJpbmdNb3VzZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFy
Q2FwdHVyaW5nTW91c2U7IH0KKyAgICB2b2lkIHNldFNjcm9sbGJhckNhcHR1cmluZ01vdXNlKGJv
b2wgYikgeyBtX3Njcm9sbGJhckNhcHR1cmluZ01vdXNlID0gYjsgfQorI2VuZGlmCisKK3Byb3Rl
Y3RlZDoKKyAgICBQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kik7CisgICAgCitwcml2YXRlOgor
ICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKKyAgICAKKyNpZiBQTEFURk9STShN
QUMpCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgcG9wdWxhdGUoKTsKKworICAgIFJldGFp
blB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAg
IFF0QWJzdHJhY3RXZWJQb3B1cCogbV9wb3B1cDsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAgICAv
LyBTY3JvbGxCYXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKFNjcm9sbGJh
ciopOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJDb3JuZXJQcmVzZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZvaWQgY2FsY3VsYXRlUG9zaXRpb25BbmRT
aXplKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqKTsKKyAgICB2b2lkIGludmFsaWRhdGVJdGVt
KGludCBpbmRleCk7CisKKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQb3B1cE1lbnVXbmRQ
cm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICBMUkVTVUxUIHduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOworICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xhc3MoKTsKKworICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1f
c2Nyb2xsYmFyOworICAgIEhXTkQgbV9wb3B1cDsKKyAgICBIREMgbV9EQzsKKyAgICBIQklUTUFQ
IG1fYm1wOworICAgIGJvb2wgbV93YXNDbGlja2VkOworICAgIEludFJlY3QgbV93aW5kb3dSZWN0
OworICAgIGludCBtX2l0ZW1IZWlnaHQ7CisgICAgaW50IG1fc2Nyb2xsT2Zmc2V0OworICAgIGlu
dCBtX3doZWVsRGVsdGE7CisgICAgaW50IG1fZm9jdXNlZEluZGV4OworICAgIGJvb2wgbV9zY3Jv
bGxiYXJDYXB0dXJpbmdNb3VzZTsKKyAgICBib29sIG1fc2hvd1BvcHVwOworI2VsaWYgUExBVEZP
Uk0oR1RLKQorICAgIEludFBvaW50IG1fbWVudVBvc2l0aW9uOworICAgIEdSZWZQdHI8R3RrTWVu
dT4gbV9wb3B1cDsKKyAgICBIYXNoTWFwPEd0a1dpZGdldCosIGludD4gbV9pbmRleE1hcDsKKyAg
ICBzdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2YXRlZChHdGtNZW51SXRlbSogaXRlbSwgUG9wdXBN
ZW51Kik7CisgICAgc3RhdGljIHZvaWQgbWVudVVubWFwcGVkKEd0a1dpZGdldCosIFBvcHVwTWVu
dSopOworICAgIHN0YXRpYyB2b2lkIG1lbnVQb3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50
KiwgZ2ludCosIGdib29sZWFuKiwgUG9wdXBNZW51Kik7CisgICAgc3RhdGljIHZvaWQgbWVudVJl
bW92ZUl0ZW0oR3RrV2lkZ2V0KiwgUG9wdXBNZW51Kik7CisjZWxpZiBQTEFURk9STShFRkwpIHx8
IFBMQVRGT1JNKEJSRVdNUCkKKyAgICBGcmFtZVZpZXcqIG1fdmlldzsKKyNlbGlmIFBMQVRGT1JN
KFdYKQorICAgIHd4TWVudSogbV9tZW51OworICAgIHZvaWQgT25NZW51SXRlbVNlbGVjdGVkKHd4
Q29tbWFuZEV2ZW50Jik7CisjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBQb3B1cE1lbnVQ
cml2YXRlIHA7CisjZWxpZiBQTEFURk9STShIQUlLVSkKKyAgICBQb3B1cE1lbnVIYWlrdSogbV9t
ZW51OworI2VuZGlmCisKIH07CiAKIH0KIAotI2VuZGlmIC8vIFBvcHVwTWVudV9oCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IGQxZWNkMGZmY2U4Mjc2ZTc1ZWFhMmMx
MTIzZTlkOWIzZWJiOWMzZmIuLjQyODVjZGY5NmI5ZDlhZjk1NzNhMzZkOWM4YWZjNGI1ZDdhNjJm
ZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMjEgKzIzLDI0IEBACiAK
ICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QXRvbWljU3RyaW5nOwogCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTZWFyY2hQb3B1cE1lbnU+IHsKK2NsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBQb3B1
cE1lbnUgewogcHVibGljOgotICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9Ci0gICAg
dmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51KGNsaWVudCkpOyB9CisKKyAgICB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwor
CisgICAgYm9vbCBlbmFibGVkKCk7CisgICAgCitwcml2YXRlOgorICAgIFNlYXJjaFBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqKTsKIH07CiAKIH0KIAotI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVu
dV9oCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVC
cmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVCcmV3LmNwcAppbmRleCAx
OGIyYjQ1MTE4YjRmOGYxOGE0ZDE1N2M5ZmY4ZWM1MTUxYzIyZDQ3Li5lYjAzYzY2MjJjNGFlNDNi
ZTA0MWNhMjZmNWNjOGM4ZjcwZWNiNjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Jy
ZXcvUG9wdXBNZW51QnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L1BvcHVwTWVu
dUJyZXcuY3BwCkBAIC00LDcgKzQsNiBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKICAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNyArMjMsNyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVCcmV3LmgiCisjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnRCcmV3LmgiCkBAIC0zMywyNSArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Qb3B1cE1lbnVCcmV3OjpQb3B1cE1lbnVCcmV3KFBvcHVwTWVudUNsaWVudCogbWVudUxpc3Qp
CitQb3B1cE1lbnU6OlBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIG1lbnVMaXN0KQogICAgIDog
bV9wb3B1cENsaWVudChtZW51TGlzdCkKICAgICAsIG1fdmlldygwKQogewogfQogCi1Qb3B1cE1l
bnVCcmV3Ojp+UG9wdXBNZW51QnJldygpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAg
IC8vIFRlbGwgY2xpZW50IHRvIGRlc3Ryb3kgZGF0YSByZWxhdGVkIHRvIHRoaXMgcG9wdXAgc2lu
Y2UgdGhpcyBvYmplY3QgaXMKICAgICAvLyBnb2luZyBhd2F5LgogICAgIGhpZGUoKTsKIH0KIAot
dm9pZCBQb3B1cE1lbnVCcmV3OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xp
ZW50ID0gMDsKLX0KLQotdm9pZCBQb3B1cE1lbnVCcmV3OjpzaG93KGNvbnN0IEludFJlY3QmIHJl
Y3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OnNob3coY29u
c3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7CiAgICAgQVNT
RVJUKG1fcG9wdXBDbGllbnQpOwogICAgIENocm9tZUNsaWVudEJyZXcqIGNocm9tZUNsaWVudCA9
IHN0YXRpY19jYXN0PENocm9tZUNsaWVudEJyZXcqPih2aWV3LT5mcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKSk7CkBAIC02MSw3ICs1NSw3IEBAIHZvaWQgUG9wdXBNZW51QnJldzo6
c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKICAg
ICBjaHJvbWVDbGllbnQtPmNyZWF0ZVNlbGVjdFBvcHVwKG1fcG9wdXBDbGllbnQsIGluZGV4LCBy
ZWN0KTsKIH0KIAotdm9pZCBQb3B1cE1lbnVCcmV3OjpoaWRlKCkKK3ZvaWQgUG9wdXBNZW51Ojpo
aWRlKCkKIHsKICAgICBBU1NFUlQobV92aWV3KTsKICAgICBDaHJvbWVDbGllbnRCcmV3KiBjaHJv
bWVDbGllbnQgPSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRCcmV3Kj4obV92aWV3LT5mcmFtZSgp
LT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKSk7CkBAIC03MCwxOCArNjQsMTQgQEAgdm9pZCBQ
b3B1cE1lbnVCcmV3OjpoaWRlKCkKICAgICBjaHJvbWVDbGllbnQtPmRlc3Ryb3lTZWxlY3RQb3B1
cCgpOwogfQogCi12b2lkIFBvcHVwTWVudUJyZXc6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQg
UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgY2xpZW50KCktPnNldFRleHRG
cm9tSXRlbShjbGllbnQoKS0+c2VsZWN0ZWRJbmRleCgpKTsKIH0KIAotLy8gVGhpcyBjb2RlIG11
c3QgYmUgbW92ZWQgdG8gdGhlIGNvbmNyZXRlIGJyZXcgQ2hyb21lQ2xpZW50IHRoYXQgaXMgbm90
IGluIHJlcG9zaXRvcnkuCi0vLyBJIGtlcHQgdGhpcyBjb2RlIGNvbW1lbnRlZCBvdXQgaGVyZSB0
byBwcmV2ZW50IGxvb3NpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHdoYXQKLS8vIG11c3QgYmUgdGhl
IHJldHVybiB2YWx1ZSBmb3IgYnJldy4KLQotLy8gYm9vbCBQb3B1cE1lbnVCcmV3OjppdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi0vLyB7Ci0vLyAgICAgcmV0dXJuIHRydWU7Ci0vLyB9
Citib29sIFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQoreworICAg
IHJldHVybiB0cnVlOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvUG9wdXBNZW51QnJldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9i
cmV3L1BvcHVwTWVudUJyZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxNzFk
ZjNmMTA1OWRjZTE4NTI3NjUwMTk1MmI0ZWU4YjMzMWEwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvUG9wdXBNZW51
QnJldy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgUG9wdXBNZW51QnJld19oCi0jZGVmaW5lIFBvcHVwTWVudUJyZXdfaAotCi0jaW5jbHVk
ZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBvcHVwTWVudS5oIgotI2luY2x1ZGUgIlBvcHVwTWVu
dUNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1j
bGFzcyBTY3JvbGxiYXI7Ci0KLWNsYXNzIFBvcHVwTWVudUJyZXcgOiBwdWJsaWMgUG9wdXBNZW51
IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVCcmV3KFBvcHVwTWVudUNsaWVudCopOwotICAgIH5Q
b3B1cE1lbnVCcmV3KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0Jiwg
RnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9Ci0KLSAgICBQb3B1cE1lbnVDbGllbnQqIG1f
cG9wdXBDbGllbnQ7Ci0gICAgRnJhbWVWaWV3KiBtX3ZpZXc7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBQb3B1cE1lbnVCcmV3X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9TZWFy
Y2hQb3B1cE1lbnVCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9TZWFyY2hQb3B1cE1l
bnVCcmV3LmNwcAppbmRleCBjMjJjYjc4MjA4YmI0NTBkODlkNTQ3NWUyMjQzZDc4ZDk5MjdhYjNj
Li43ODBjN2U1ZDY2ZDRlNTEzYTg0MzVjZmUwNmU4YTkxMGFkODRjNmUzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvU2VhcmNoUG9wdXBNZW51QnJldy5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9icmV3L1NlYXJjaFBvcHVwTWVudUJyZXcuY3BwCkBAIC0xLDYgKzEsNSBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMzQgKzI0LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudUJyZXcuaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTYXZlIHRoZSBwYXN0IHNlYXJjaGVzIHN0b3JlZCBpbiAn
c2VhcmNoSXRlbXMnIHRvIGEgZGF0YWJhc2UgYXNzb2NpYXRlZCB3aXRoICduYW1lJwotdm9pZCBT
ZWFyY2hQb3B1cE1lbnVCcmV3OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBv
cHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQogewogfQogCiAvLyBMb2FkIHBhc3Qgc2Vh
cmNoZXMgYXNzb2NpYXRlZCB3aXRoICduYW1lJyBmcm9tIHRoZSBkYXRhYmFzZSB0byAnc2VhcmNo
SXRlbXMnCi12b2lkIFNlYXJjaFBvcHVwTWVudUJyZXc6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQg
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCiB7CiB9CiAKIC8vIENyZWF0ZSBhIHNl
YXJjaCBwb3B1cCBtZW51IC0gbm90IHN1cmUgd2hhdCBlbHNlIHdlIGhhdmUgdG8gZG8gaGVyZQot
U2VhcmNoUG9wdXBNZW51QnJldzo6U2VhcmNoUG9wdXBNZW51QnJldyhQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50
KQogewogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudUJyZXc6OmVuYWJsZWQoKQorYm9vbCBTZWFy
Y2hQb3B1cE1lbnU6OmVuYWJsZWQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUG9wdXBN
ZW51KiBTZWFyY2hQb3B1cE1lbnVCcmV3Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9w
b3B1cDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L1NlYXJjaFBvcHVwTWVudUJyZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJl
dy9TZWFyY2hQb3B1cE1lbnVCcmV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4
ZWExMDJmMjczOTcxNjlkYmYwNDQ3MWRjZjNkZTU0OTlkMWQwYTYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L1NlYXJj
aFBvcHVwTWVudUJyZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVCcmV3X2gKLSNkZWZpbmUgU2VhcmNo
UG9wdXBNZW51QnJld19oCi0KLSNpbmNsdWRlICJQb3B1cE1lbnVCcmV3LmgiCi0jaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNo
UG9wdXBNZW51QnJldyA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNl
YXJjaFBvcHVwTWVudUJyZXcoUG9wdXBNZW51Q2xpZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFBvcHVw
TWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCBib29s
IGVuYWJsZWQoKTsKLQotcHJpdmF0ZToKLSAgICBQb3B1cE1lbnVCcmV3IG1fcG9wdXA7Ci19Owot
Ci19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVCcmV3X2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggOWM3M2E5YzY5YTc1ZDAz
ODk1NmMxODlmMWJiYzZlOTU0ZmEyNmI2OS4uZDA3YmEyZWZiYjc3Y2I0YjQ0NWQxYmFkZjE4NDcz
YjI3OGQyODNiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1l
bnVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIAog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCkBAIC0xMzQwLDIwICsxMzQwLDIwIEBAIGJvb2wgUG9w
dXBMaXN0Qm94Ojppc1BvaW50SW5Cb3VuZHMoY29uc3QgSW50UG9pbnQmIHBvaW50KQogfQogCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQb3B1cE1lbnVDaHJvbWl1bSBpbXBsZW1lbnRhdGlv
bgorLy8gUG9wdXBNZW51IGltcGxlbWVudGF0aW9uCiAvLyAKIC8vIE5vdGU6IHlvdSBjYW5ub3Qg
YWRkIG1ldGhvZHMgdG8gdGhpcyBjbGFzcywgc2luY2UgaXQgaXMgZGVmaW5lZCBhYm92ZSB0aGUg
CiAvLyAgICAgICBwb3J0YWJpbGl0eSBsYXllci4gVG8gYWNjZXNzIG1ldGhvZHMgYW5kIHByb3Bl
cnRpZXMgb24gdGhlCiAvLyAgICAgICBwb3B1cCB3aWRnZXRzLCB1c2UgfHBvcHVwV2luZG93fCBh
Ym92ZS4gCiAKLVBvcHVwTWVudUNocm9taXVtOjpQb3B1cE1lbnVDaHJvbWl1bShQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSAKICAgICA6IG1fcG9wdXBDbGllbnQoY2xpZW50KQogewogfQogCi1Qb3B1cE1lbnVDaHJv
bWl1bTo6flBvcHVwTWVudUNocm9taXVtKCkKK1BvcHVwTWVudTo6flBvcHVwTWVudSgpCiB7Ci0g
ICAgLy8gV2hlbiB0aGUgUG9wdXBNZW51Q2hyb21pdW0gaXMgZGVzdHJveWVkLCB0aGUgY2xpZW50
IGNvdWxkIGFscmVhZHkgaGF2ZSBiZWVuCisgICAgLy8gV2hlbiB0aGUgUG9wdXBNZW51IGlzIGRl
c3Ryb3llZCwgdGhlIGNsaWVudCBjb3VsZCBhbHJlYWR5IGhhdmUgYmVlbgogICAgIC8vIGRlbGV0
ZWQuCiAgICAgaWYgKHAucG9wdXApCiAgICAgICAgIHAucG9wdXAtPmxpc3RCb3goKS0+ZGlzY29u
bmVjdENsaWVudCgpOwpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgUG9wdXBNZW51Q2hyb21pdW06On5Q
b3B1cE1lbnVDaHJvbWl1bSgpCiAvLyB0byBkaXNwbGF5LCBoYW5kbGUgdGhlIGlucHV0IHRyYWNr
aW5nIGFuZCBtZW51IGl0ZW0gc2VsZWN0aW9uIGZvciB0aGUgcG9wdXAuCiAvLyBXaW5kb3dzIGFu
ZCBMaW51eCBDaHJvbWl1bSBsZXQgb3VyIFdlYktpdCBwb3J0IGhhbmRsZSB0aGUgZGlzcGxheSwg
d2hpbGUKIC8vIGFub3RoZXIgcHJvY2VzcyBtYW5hZ2VzIHRoZSBwb3B1cCB3aW5kb3cgYW5kIGlu
cHV0IGhhbmRsaW5nLgotdm9pZCBQb3B1cE1lbnVDaHJvbWl1bTo6c2hvdyhjb25zdCBJbnRSZWN0
JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0
IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQogewogICAgIGlmICghcC5wb3B1
cCkKICAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIFBv
cHVwQ29udGFpbmVyOjpTZWxlY3QsIGRyb3BEb3duU2V0dGluZ3MpOwpAQCAtMTM3NSwyMSArMTM3
NSwyMCBAQCB2b2lkIFBvcHVwTWVudUNocm9taXVtOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZy
YW1lVmlldyogdiwgaW50IGluZGV4KQogI2VuZGlmCiB9CiAKLXZvaWQgUG9wdXBNZW51Q2hyb21p
dW06OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAgIGlmIChwLnBvcHVwKQog
ICAgICAgICBwLnBvcHVwLT5oaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51Q2hyb21pdW06OnVw
ZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQgUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7
CiAgICAgcC5wb3B1cC0+bGlzdEJveCgpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi0KLXZv
aWQgUG9wdXBNZW51Q2hyb21pdW06OmRpc2Nvbm5lY3RDbGllbnQoKQotewotICAgIG1fcG9wdXBD
bGllbnQgPSAwOworYm9vbCBQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgCit7IAorICAgIHJldHVybiBmYWxzZTsgCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAppbmRleCAw
ZDBlMjNjZTM1YTVkNzYzODMzMzMxOWFhOTUwMGQxMWE5NmUxMTk2Li5hODVjZjQ5MDBlOTVmYTEw
MGFjZTEyZTNiNmE0NmM5NmU1ZTVkZTgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRlICJGcmFt
ZWxlc3NTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBvcHVw
TWVudS5oIgotI2luY2x1ZGUgIlBvcHVwTWVudVByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0yMDMsMjMgKzIwMSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BvcHVwT3Bl
bjsKIH07CiAKLWNsYXNzIFBvcHVwTWVudUNocm9taXVtIDogcHVibGljIFBvcHVwTWVudSB7Ci1w
dWJsaWM6Ci0gICAgUG9wdXBNZW51Q2hyb21pdW0oUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBv
cHVwTWVudUNocm9taXVtKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0
JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9Ci0KLSAgICBQb3B1cE1lbnVDbGllbnQq
IG1fcG9wdXBDbGllbnQ7Ci0gICAgUG9wdXBNZW51UHJpdmF0ZSBwOwotfTsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggMThlODZjNmQzNTYzNzJhYTMw
MzlkYWVkMzgxMzJhNmExOTA4NmU2NS4uODliZmRkZDIxNzE2ZDljOTkxOTg3ZDU1YWUyOTlmZTVj
M2YyY2Q5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1
cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQ
b3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChj
KSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMCwzNCArMjksMjkg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIkF0
b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2VhcmNoUG9wdXBNZW51Q2hyb21pdW06OlNlYXJjaFBvcHVwTWVudUNocm9t
aXVtKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCitTZWFy
Y2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IFBvcHVwTWVudShjbGllbnQpCiB7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51
Q2hyb21pdW06OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuICZtX3BvcHVwOwotfQotCi1ib29s
IFNlYXJjaFBvcHVwTWVudUNocm9taXVtOjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51
OjplbmFibGVkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBN
ZW51Q2hyb21pdW06OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1cE1lbnVD
aHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1cE1lbnVDaHJv
bWl1bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTJiOThjZjNhNDA1ZDk3NTA1
Y2YyNDgwZDc4NmVlZjUxODg4YThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2VhcmNoUG9wdXBNZW51Q2hy
b21pdW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bV9oCi0jZGVmaW5lIFNlYXJjaFBvcHVw
TWVudUNocm9taXVtX2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Vh
cmNoUG9wdXBNZW51Q2hyb21pdW0gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoK
LSAgICBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bShQb3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZp
cnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2
aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVudUNocm9taXVt
IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bV9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZsLmNwcAppbmRleCA0MDFmMjRmZWFmYjI4NDhm
MGQ0Y2E2NGEyM2YwODM4NWRkMTk4YjcwLi45ZGM2OTg2OTZhOWUxM2Q5ZmVjMTg3MDg4M2ZiYzE0
ZTYyZTllNjU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5jcHAKQEAgLTMsNyAr
Myw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBU
ZWNub2xvZ2lhCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQg
c3lzdGVtcwogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzAgKzIyLDI5IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgorI2luY2x1
ZGUgIlBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1Qb3B1cE1lbnVFZmw6OlBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDog
bV9wb3B1cENsaWVudChjbGllbnQpCiAgICAgLCBtX3ZpZXcoMCkKIHsKIH0KIAotUG9wdXBNZW51
RWZsOjp+UG9wdXBNZW51RWZsKCkKK1BvcHVwTWVudTo6flBvcHVwTWVudSgpCiB7CiAgICAgLy8g
VGVsbCBjbGllbnQgdG8gZGVzdHJveSBkYXRhIHJlbGF0ZWQgdG8gdGhpcyBwb3B1cCBzaW5jZSB0
aGlzIG9iamVjdCBpcwogICAgIC8vIGdvaW5nIGF3YXkuCiAgICAgaGlkZSgpOwogfQogCi12b2lk
IFBvcHVwTWVudUVmbDo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcs
IGludCBpbmRleCkKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZy
YW1lVmlldyogdmlldywgaW50IGluZGV4KQogewogICAgIEFTU0VSVChtX3BvcHVwQ2xpZW50KTsK
ICAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNs
aWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKQEAg
LTU2LDcgKzU0LDcgQEAgdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVj
dCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgY2hyb21lQ2xpZW50LT5jcmVhdGVT
ZWxlY3RQb3B1cChtX3BvcHVwQ2xpZW50LCBpbmRleCwgcmVjdCk7CiB9CiAKLXZvaWQgUG9wdXBN
ZW51RWZsOjpoaWRlKCkKK3ZvaWQgUG9wdXBNZW51OjpoaWRlKCkKIHsKICAgICBBU1NFUlQobV92
aWV3KTsKICAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENo
cm9tZUNsaWVudEVmbCo+KG1fdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCkpOwpAQCAtNjUsMTQgKzYzLDE0IEBAIHZvaWQgUG9wdXBNZW51RWZsOjpoaWRlKCkKICAgICBj
aHJvbWVDbGllbnQtPmRlc3Ryb3lTZWxlY3RQb3B1cCgpOwogfQogCi12b2lkIFBvcHVwTWVudUVm
bDo6dXBkYXRlRnJvbUVsZW1lbnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50
KCkKIHsKICAgICBjbGllbnQoKS0+c2V0VGV4dEZyb21JdGVtKGNsaWVudCgpLT5zZWxlY3RlZElu
ZGV4KCkpOwogfQogCi12b2lkIFBvcHVwTWVudUVmbDo6ZGlzY29ubmVjdENsaWVudCgpCitib29s
IFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQogewotICAgIG1fcG9w
dXBDbGllbnQgPSAwOworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bv
cHVwTWVudUVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTJkYmZjODQ3MDRj
ODQ2Yjc4ZDk5MjcxMDRlNTA3ODc1OGI0NGQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9w
dXBNZW51RWZsX2gKLSNkZWZpbmUgUG9wdXBNZW51RWZsX2gKLQotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRnJhbWVWaWV3OwotY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgUG9wdXBNZW51Q2xpZW50Owot
Ci1jbGFzcyBQb3B1cE1lbnVFZmwgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQ
b3B1cE1lbnVFZmwoUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudUVmbCgpOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRl
eCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2
YXRlOgotICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1
cENsaWVudDsgfQotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIEZy
YW1lVmlldyogbV92aWV3OwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51RWZsX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NlYXJjaFBvcHVwTWVudUVmbC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwCmluZGV4IGNhZmZlNTQ4
NTQyYzg1ZTk5NzRlNGM3ZjQ2MDk2NjFlNDZhZWIxYjMuLmQxODE3NGZhZGZkNzQ0ZWU4NjE3NjQ4
YmExMTZhZGRiOGNkMjk3OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NlYXJj
aFBvcHVwTWVudUVmbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2VhcmNoUG9wdXBN
ZW51RWZsLmNwcApAQCAtMiw3ICsyLDYgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAt
IEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjAsMzQgKzE5LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlYXJjaFBvcHVwTWVudUVmbC5oIgorI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZWFy
Y2hQb3B1cE1lbnVFZmw6OlNlYXJjaFBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51RWZs
Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQotdm9pZCBTZWFyY2hQ
b3B1cE1lbnVFZmw6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUVmbDo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgU2VhcmNo
UG9wdXBNZW51RWZsOjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2VhcmNoUG9wdXBNZW51RWZsLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDRjYjJlNThjZDc1ZDJkMDEzODZmZDA0MDBmOGIzMjEzNjk2NWU1Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9T
ZWFyY2hQb3B1cE1lbnVFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVFZmxfaAotI2RlZmluZSBTZWFy
Y2hQb3B1cE1lbnVFZmxfaAotCi0jaW5jbHVkZSAiUG9wdXBNZW51RWZsLmgiCi0jaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNo
UG9wdXBNZW51RWZsIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0gICAgU2Vh
cmNoUG9wdXBNZW51RWZsKFBvcHVwTWVudUNsaWVudCopOwotCi0gICAgdmlydHVhbCBQb3B1cE1l
bnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
OwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51RWZsIG1fcG9wdXA7Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVFZmxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVw
TWVudUd0ay5jcHAKaW5kZXggY2EwNjdkOWFhY2Y4OTUzZTAzNGFkMDlkMDJmZDFlYTkxNTM5MDg3
ZS4uYmY4Y2ZiNDVhM2U3NmE1NmYyNTk5MDExYTNkN2FmYjRkN2U2YjkxYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwCkBAIC00LDcgKzQsNiBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDcgKzIzLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUG9wdXBNZW51R3RrLmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCkBAIC0zNSwxMiAr
MzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb3B1cE1lbnVHdGs6OlBvcHVwTWVu
dUd0ayhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChjbGllbnQpCiB7CiB9CiAK
LVBvcHVwTWVudUd0azo6flBvcHVwTWVudUd0aygpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQog
ewogICAgIGlmIChtX3BvcHVwKSB7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfbWF0Y2hlZChtX3BvcHVwLmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAw
LCB0aGlzKTsKQEAgLTQ4LDcgKzQ3LDcgQEAgUG9wdXBNZW51R3RrOjp+UG9wdXBNZW51R3RrKCkK
ICAgICB9CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3Qs
IEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3Qg
SW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7CiAgICAgQVNTRVJU
KGNsaWVudCgpKTsKIApAQCAtMTExLDQzICsxMTAsNDMgQEAgdm9pZCBQb3B1cE1lbnVHdGs6OnNo
b3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAg
Z3RrX21lbnVfcG9wdXAobV9wb3B1cC5nZXQoKSwgMCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHdGtN
ZW51UG9zaXRpb25GdW5jPihtZW51UG9zaXRpb25GdW5jdGlvbiksIHRoaXMsIDAsIGd0a19nZXRf
Y3VycmVudF9ldmVudF90aW1lKCkpOwogfQogCi12b2lkIFBvcHVwTWVudUd0azo6aGlkZSgpCit2
b2lkIFBvcHVwTWVudTo6aGlkZSgpCiB7CiAgICAgQVNTRVJUKG1fcG9wdXApOwogICAgIGd0a19t
ZW51X3BvcGRvd24obV9wb3B1cC5nZXQoKSk7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjp1cGRh
dGVGcm9tRWxlbWVudCgpCit2b2lkIFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewog
ICAgIGNsaWVudCgpLT5zZXRUZXh0RnJvbUl0ZW0oY2xpZW50KCktPnNlbGVjdGVkSW5kZXgoKSk7
CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjpkaXNjb25uZWN0Q2xpZW50KCkKK2Jvb2wgUG9wdXBN
ZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0gICAgbV9wb3B1cENsaWVu
dCA9IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51SXRl
bUFjdGl2YXRlZChHdGtNZW51SXRlbSogaXRlbSwgUG9wdXBNZW51R3RrKiB0aGF0KQordm9pZCBQ
b3B1cE1lbnU6Om1lbnVJdGVtQWN0aXZhdGVkKEd0a01lbnVJdGVtKiBpdGVtLCBQb3B1cE1lbnUq
IHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPmNsaWVudCgpKTsKICAgICBBU1NFUlQodGhhdC0+
bV9pbmRleE1hcC5jb250YWlucyhHVEtfV0lER0VUKGl0ZW0pKSk7CiAgICAgdGhhdC0+Y2xpZW50
KCktPnZhbHVlQ2hhbmdlZCh0aGF0LT5tX2luZGV4TWFwLmdldChHVEtfV0lER0VUKGl0ZW0pKSk7
CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51VW5tYXBwZWQoR3RrV2lkZ2V0KiwgUG9wdXBN
ZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVVbm1hcHBlZChHdGtXaWRnZXQqLCBQ
b3B1cE1lbnUqIHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPmNsaWVudCgpKTsKICAgICB0aGF0
LT5jbGllbnQoKS0+cG9wdXBEaWRIaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51
UG9zaXRpb25GdW5jdGlvbihHdGtNZW51KiwgZ2ludCogeCwgZ2ludCogeSwgZ2Jvb2xlYW4qIHB1
c2hJbiwgUG9wdXBNZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVQb3NpdGlvbkZ1
bmN0aW9uKEd0a01lbnUqLCBnaW50KiB4LCBnaW50KiB5LCBnYm9vbGVhbiogcHVzaEluLCBQb3B1
cE1lbnUqIHRoYXQpCiB7CiAgICAgKnggPSB0aGF0LT5tX21lbnVQb3NpdGlvbi54KCk7CiAgICAg
KnkgPSB0aGF0LT5tX21lbnVQb3NpdGlvbi55KCk7CiAgICAgKnB1c2hJbiA9IHRydWU7CiB9CiAK
LXZvaWQgUG9wdXBNZW51R3RrOjptZW51UmVtb3ZlSXRlbShHdGtXaWRnZXQqIHdpZGdldCwgUG9w
dXBNZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVSZW1vdmVJdGVtKEd0a1dpZGdl
dCogd2lkZ2V0LCBQb3B1cE1lbnUqIHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPm1fcG9wdXAp
OwogICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIodGhhdC0+bV9wb3B1cC5n
ZXQoKSksIHdpZGdldCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1l
bnVHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmYjRlN2RkOWZlMzk3ZTc5NDA4NzcyNjY5MjExNDRmYTNhZmE1
ZGI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9wdXBNZW51R3RrX2gKLSNkZWZpbmUgUG9w
dXBNZW51R3RrX2gKLQotI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50Lmgi
Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBlZGVm
IHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwotdHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVtIEd0
a01lbnVJdGVtOwotdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWVWaWV3OwotY2xhc3MgU2Nyb2xsYmFyOwotCi1j
bGFzcyBQb3B1cE1lbnVHdGsgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQb3B1
cE1lbnVHdGsoUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudUd0aygpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7
Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2YXRl
OgotICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENs
aWVudDsgfQotCi0gICAgc3RhdGljIHZvaWQgbWVudUl0ZW1BY3RpdmF0ZWQoR3RrTWVudUl0ZW0q
IGl0ZW0sIFBvcHVwTWVudUd0ayopOwotICAgIHN0YXRpYyB2b2lkIG1lbnVVbm1hcHBlZChHdGtX
aWRnZXQqLCBQb3B1cE1lbnVHdGsqKTsKLSAgICBzdGF0aWMgdm9pZCBtZW51UG9zaXRpb25GdW5j
dGlvbihHdGtNZW51KiwgZ2ludCosIGdpbnQqLCBnYm9vbGVhbiosIFBvcHVwTWVudUd0ayopOwot
ICAgIHN0YXRpYyB2b2lkIG1lbnVSZW1vdmVJdGVtKEd0a1dpZGdldCosIFBvcHVwTWVudUd0ayop
OwotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIEludFBvaW50IG1f
bWVudVBvc2l0aW9uOwotICAgIEdSZWZQdHI8R3RrTWVudT4gbV9wb3B1cDsKLSAgICBIYXNoTWFw
PEd0a1dpZGdldCosIGludD4gbV9pbmRleE1hcDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVw
TWVudUd0a19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1l
bnVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VhcmNoUG9wdXBNZW51R3RrLmNwcApp
bmRleCBkZmI4NGFhZmJhNjYzMmNkZTkzNTBkZjM4NmZkZDVjOTJjMTViNDFmLi5mYmFhNTI3MjZk
YzFhNjQzM2E4Yjc1MTAzY2RiNDE0ZWFlOThhOGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlYXJjaFBvcHVwTWVudUd0ay5jcHAKQEAgLTEsNiArMSw0IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
LSAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDM0ICsxNSwyOSBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVHdGsuaCIKKyNp
bmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VhcmNoUG9wdXBNZW51R3RrOjpTZWFyY2hQb3B1
cE1lbnVHdGsoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGNsaWVudCkK
K1NlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQorICAgIDogUG9wdXBNZW51KGNsaWVudCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1Qb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUd0azo6cG9wdXBNZW51KCkKLXsKLSAgICByZXR1
cm4gJm1fcG9wdXA7Ci19Ci0KLXZvaWQgU2VhcmNoUG9wdXBNZW51R3RrOjpzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBTZWFyY2hQb3B1cE1lbnVHdGs6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudUd0azo6ZW5hYmxlZCgpCiti
b29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFy
Y2hQb3B1cE1lbnVHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0
ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGMxN2I0NzI3NWY1NDJhYmI0Njdi
MGU5NzM3YWFkM2RjNGNkOGE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFNl
YXJjaFBvcHVwTWVudUd0a19oCi0jZGVmaW5lIFNlYXJjaFBvcHVwTWVudUd0a19oCi0KLSNpbmNs
dWRlICJQb3B1cE1lbnVHdGsuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnVHdGsgOiBwdWJsaWMgU2Vh
cmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBTZWFyY2hQb3B1cE1lbnVHdGsoUG9wdXBNZW51
Q2xpZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKLQotcHJpdmF0ZToKLSAg
ICBQb3B1cE1lbnVHdGsgbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFNlYXJjaFBvcHVw
TWVudUd0a19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1BvcHVwTWVudUhh
aWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFpa3UuY3BwCmluZGV4
IGUzZWRiODMxNmRiYzI4ZTliZTRkN2Y0YTE0YzlhZmU5ZGYwODE5MjAuLjVhZGJjNjYyMGNkMjFj
MzgzNjVkMjZiOTk3YWFjMmIzMTI4MTIyODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
aGFpa3UvUG9wdXBNZW51SGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9w
dXBNZW51SGFpa3UuY3BwCkBAIC0yLDcgKzIsNiBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIHBvcHVwIG1lbnUgaW1wbGVtZW50YXRpb24gZm9yIDxzZWxlY3Q+IGVsZW1lbnRzIGluIFdl
YkNvcmUuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0
aXBwaUBnbXguZGU+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsy
MSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUhh
aWt1LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
IApAQCAtNzMsOSArNzIsOSBAQCBwcml2YXRlOgogICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1
cENsaWVudDsKIH07CiAKLWNsYXNzIEhhaWt1UG9wdXAgOiBwdWJsaWMgQlBvcFVwTWVudSB7Citj
bGFzcyBQb3B1cE1lbnVIYWlrdSA6IHB1YmxpYyBCUG9wVXBNZW51IHsKIHB1YmxpYzoKLSAgICBI
YWlrdVBvcHVwKFBvcHVwTWVudUNsaWVudCogcG9wdXBDbGllbnQpCisgICAgUG9wdXBNZW51SGFp
a3UoUG9wdXBNZW51Q2xpZW50KiBwb3B1cENsaWVudCkKICAgICAgICAgOiBCUG9wVXBNZW51KCJX
ZWJDb3JlIFBvcHVwIiwgdHJ1ZSwgZmFsc2UpCiAgICAgICAgICwgbV9wb3B1cENsaWVudChwb3B1
cENsaWVudCkKICAgICAgICAgLCBtX0hhbmRsZXIocG9wdXBDbGllbnQpCkBAIC04Nyw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgU2V0QXN5bmNBdXRvRGVzdHJ1Y3QoZmFsc2UpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgfkhhaWt1UG9wdXAoKQorICAgIHZpcnR1YWwgflBvcHVwTWVudUhhaWt1
KCkKICAgICB7CiAgICAgICAgIGlmIChiZV9hcHAtPkxvY2soKSkgewogICAgICAgICAgICAgYmVf
YXBwLT5SZW1vdmVIYW5kbGVyKCZtX0hhbmRsZXIpOwpAQCAtMTU0LDM5ICsxNTMsMzkgQEAgcHJp
dmF0ZToKICAgICBQb3B1cE1lbnVIYW5kbGVyIG1fSGFuZGxlcjsKIH07CiAKLVBvcHVwTWVudUhh
aWt1OjpQb3B1cE1lbnVIYWlrdShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChj
bGllbnQpCi0gICAgLCBtX21lbnUobmV3IEhhaWt1UG9wdXAoY2xpZW50KSkKKyAgICAsIG1fbWVu
dShuZXcgUG9wdXBNZW51SGFpa3UoY2xpZW50KSkKIHsKICAgICAvLyBXZSBkb24ndCBuZWVkIGFk
ZGl0aW9uYWwgcmVmZXJlbmNlcyB0byB0aGUgY2xpZW50LCBzaW5jZSB3ZSBjb21wbGV0ZWx5CiAg
ICAgLy8gY29udHJvbCBhbnkgc3ViLW9iamVjdHMgd2UgY3JlYXRlIHRoYXQgbmVlZCBpdCBhcyB3
ZWxsLgogfQogCi1Qb3B1cE1lbnVIYWlrdTo6flBvcHVwTWVudUhhaWt1KCkKK1BvcHVwTWVudTo6
flBvcHVwTWVudSgpCiB7CiAgICAgZGVsZXRlIG1fbWVudTsKIH0KIAotdm9pZCBQb3B1cE1lbnVI
YWlrdTo6ZGlzY29ubmVjdENsaWVudCgpCi17Ci0gICAgbV9wb3B1cENsaWVudCA9IDA7Ci19Ci0K
LXZvaWQgUG9wdXBNZW51SGFpa3U6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3
KiB2aWV3LCBpbnQgaW5kZXgpCit2b2lkIFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiBy
ZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKIHsKICAgICAvLyBUaGUgbWVudSB3aWxs
IHVwZGF0ZSBpdHNlbGYgZnJvbSB0aGUgUG9wdXBNZW51Q2xpZW50IGJlZm9yZSBzaG93aW5nLgog
ICAgIG1fbWVudS0+c2hvdyhyZWN0LCB2aWV3LCBpbmRleCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51
SGFpa3U6OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAgIG1fbWVudS0+aGlk
ZSgpOwogfQogCi12b2lkIFBvcHVwTWVudUhhaWt1Ojp1cGRhdGVGcm9tRWxlbWVudCgpCit2b2lk
IFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIGNsaWVudCgpLT5zZXRUZXh0
RnJvbUl0ZW0obV9wb3B1cENsaWVudC0+c2VsZWN0ZWRJbmRleCgpKTsKIH0KIAorYm9vbCBQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9oYWlrdS9Qb3B1cE1lbnVIYWlrdS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Q
b3B1cE1lbnVIYWlrdS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjA3OTIzMTYy
NTQyOTU1ZTNmNmU1OGNkYTFhODJjOTAzZjNlNjk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFp
a3UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBQb3B1cE1lbnVIYWlrdV9oCi0jZGVmaW5lIFBvcHVwTWVudUhhaWt1X2gKLQotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlICJQb3B1
cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWVWaWV3
OwotY2xhc3MgSGFpa3VQb3B1cDsKLWNsYXNzIFNjcm9sbGJhcjsKLQotY2xhc3MgUG9wdXBNZW51
SGFpa3UgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVIYWlrdShQ
b3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51SGFpa3UoKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwotICAgIHZp
cnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICBQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0K
LQotICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLSAgICBIYWlrdVBvcHVwKiBt
X21lbnU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBQb3B1cE1lbnVIYWlrdV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1NlYXJjaFBvcHVwTWVudUhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNoUG9wdXBNZW51SGFpa3UuY3BwCmluZGV4IDQ0MzM4ZTUy
NGE0NGQ2YjM3MjkyZDdiMWFkYjUwNWEyYjc5YzFiMzIuLmZkNWQ5NmM0MzVmMWRiMmQzOWMxYzk3
MjIzZmRjZjQ2MTQ3MzI2ZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2Vh
cmNoUG9wdXBNZW51SGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNo
UG9wdXBNZW51SGFpa3UuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksNyArMTgsNyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVIYWlrdS5oIgorI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKQEAgLTI3LDMxICsyNiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNlYXJjaFBvcHVwTWVudUhhaWt1OjpTZWFyY2hQb3B1cE1lbnVIYWlrdShQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51
OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1l
bnUoY2xpZW50KQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUhhaWt1OjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51SGFp
a3U6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBTZWFyY2hQb3B1cE1lbnVI
YWlrdTo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBvcHVwTWVudSogU2Vh
cmNoUG9wdXBNZW51SGFpa3U6OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuIG1fcG9wdXA7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9TZWFyY2hQb3B1cE1lbnVIYWlrdS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9T
ZWFyY2hQb3B1cE1lbnVIYWlrdS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTMy
ZDNjYzkxMjhiMzkxMWM0NTQ2MDg1M2Y0MWIzZmQ2MDk5M2M2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNo
UG9wdXBNZW51SGFpa3UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVIYWlrdV9oCi0jZGVmaW5lIFNlYXJj
aFBvcHVwTWVudUhhaWt1X2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUhhaWt1LmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Vh
cmNoUG9wdXBNZW51SGFpa3UgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAg
ICBTZWFyY2hQb3B1cE1lbnVIYWlrdShQb3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwg
UG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVudUhhaWt1IG1fcG9wdXA7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVIYWlrdV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BvcHVwTWVudU1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTY5ZmZm
NWY4MmJhMmVmZWFjMGM2OWM2ZTZlNTVlNmM4NDY4NTE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1h
Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgUG9wdXBNZW51TWFjX2gKLSNkZWZpbmUgUG9wdXBNZW51TWFjX2gKLQotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1jbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBTY3JvbGxi
YXI7Ci0KLWNsYXNzIFBvcHVwTWVudU1hYyA6IHB1YmxpYyBQb3B1cE1lbnUgewotcHVibGljOgot
ICAgIFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51TWFjKCk7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50
IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgcG9wdWxhdGUoKTsKLSAgICBQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0K
LQotICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNQ
b3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBQb3B1cE1lbnVN
YWNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tCmluZGV4IDFiZjUwMGI4MzNjNDE3
MDA0YjgyOWYyMDA0MjAyMzAxNTU0NzFkZDEuLjZjMDY3YjkyYTJiY2IxNTBjNDVkZGJjMjgyZWM5
MWUyNGE4MTQwZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1h
Yy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW0KQEAgLTEsNiAr
MSw1IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDcg
KzE4LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBvcHVwTWVudU1h
Yy5oIgorI2ltcG9ydCAiUG9wdXBNZW51LmgiCiAKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbXBvcnQgIkNocm9tZS5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2ltcG9ydCAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW1wb3J0ICJQYWdl
LmgiCi0jaW1wb3J0ICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIlNpbXBsZUZvbnREYXRh
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKQEAgLTQwLDI0ICszOCwy
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVBvcHVwTWVudU1hYzo6UG9wdXBNZW51TWFjKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQorUG9w
dXBNZW51OjpQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3BvcHVw
Q2xpZW50KGNsaWVudCkKIHsKIH0KIAotUG9wdXBNZW51TWFjOjp+UG9wdXBNZW51TWFjKCkKK1Bv
cHVwTWVudTo6flBvcHVwTWVudSgpCiB7CiAgICAgaWYgKG1fcG9wdXApCiAgICAgICAgIFttX3Bv
cHVwLmdldCgpIHNldENvbnRyb2xWaWV3Om5pbF07CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFjOjpj
bGVhcigpCit2b2lkIFBvcHVwTWVudTo6Y2xlYXIoKQogewogICAgIGlmIChtX3BvcHVwKQogICAg
ICAgICBbbV9wb3B1cC5nZXQoKSByZW1vdmVBbGxJdGVtc107CiB9CiAKLXZvaWQgUG9wdXBNZW51
TWFjOjpwb3B1bGF0ZSgpCit2b2lkIFBvcHVwTWVudTo6cG9wdWxhdGUoKQogewogICAgIGlmICht
X3BvcHVwKQogICAgICAgICBjbGVhcigpOwpAQCAtMTE2LDcgKzExNCw3IEBAIHZvaWQgUG9wdXBN
ZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgW1ttX3BvcHVwLmdldCgpIG1lbnVdIHNldE1lbnVDaGFu
Z2VkTWVzc2FnZXNFbmFibGVkOm1lc3NhZ2VzRW5hYmxlZF07CiB9CiAKLXZvaWQgUG9wdXBNZW51
TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQordm9p
ZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5k
ZXgpCiB7CiAgICAgcG9wdWxhdGUoKTsKICAgICBpbnQgbnVtSXRlbXMgPSBbbV9wb3B1cC5nZXQo
KSBudW1iZXJPZkl0ZW1zXTsKQEAgLTE2NCw3ICsxNjIsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6
c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lID0gdi0+ZnJhbWUoKTsKICAgICBOU0V2ZW50KiBldmVudCA9IFtmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnROU0V2ZW50KCkgcmV0YWluXTsKICAgICAKLSAgICBS
ZWZQdHI8UG9wdXBNZW51TWFjPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFBvcHVwTWVu
dT4gcHJvdGVjdG9yKHRoaXMpOwogCiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3KEFk
b3B0TlMsIFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJdKTsKICAgICBbdmlldyBhZGRT
dWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CkBAIC0xOTYsMTggKzE5NCwxOCBAQCB2b2lkIFBvcHVw
TWVudU1hYzo6c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkK
ICAgICBbZXZlbnQgcmVsZWFzZV07CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFjOjpoaWRlKCkKK3Zv
aWQgUG9wdXBNZW51OjpoaWRlKCkKIHsKICAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBd
OwogfQogICAgIAotdm9pZCBQb3B1cE1lbnVNYWM6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQg
UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFj
OjpkaXNjb25uZWN0Q2xpZW50KCkKK2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpCiB7Ci0gICAgbV9wb3B1cENsaWVudCA9IDA7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVu
dU1hYy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZjkxYTBjY2I4YzUxMWJiM2M2NzNhYjg2MmQxYmU3
NTc4NDYzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgU2VhcmNoUG9wdXBN
ZW51TWFjX2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51TWFjX2gKLQotI2luY2x1ZGUgIlBvcHVw
TWVudU1hYy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNlYXJjaFBvcHVwTWVudU1hYyA6IHB1YmxpYyBTZWFyY2hQb3B1cE1l
bnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqKTsK
LQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVu
dU1hYyBtX3BvcHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51TWFjX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbSBi
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbQppbmRleCA3OGIyOWE3
MzZmNjE0NDk3ZWQ0ODQ0MmZjOWJkYTM3NmUzZmEzZTdjLi4yNjI3MzRkMGM2Y2Q4YTRkY2I2ZGU2
NjlkNDAwZmJiM2EwOTk0ZDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZWFy
Y2hQb3B1cE1lbnVNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBN
ZW51TWFjLm1tCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTks
MTQgKzE4LDE0IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTZWFyY2hQ
b3B1cE1lbnVNYWMuaCIKKyNpbXBvcnQgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAjaW1wb3J0ICJB
dG9taWNTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZWFyY2hQb3B1cE1lbnVN
YWM6OlNlYXJjaFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1f
cG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewogfQogCkBAIC0zNSwx
NyArMzQsMTIgQEAgc3RhdGljIE5TU3RyaW5nKiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIFtAImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpuYW1lXTsKIH0KIAotUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVN
YWM6OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuICZtX3BvcHVwOwotfQotCi1ib29sIFNlYXJj
aFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjIsNyArNTYsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIH0KIH0KIAotdm9pZCBT
ZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCmluZGV4IDU1OTA1NTZkZjI2MGQ0
MTcwOWZmMGY5NjMwYWRiMjhlY2EwYmQ0ZjguLjMxNWI4OTE3MzI1MmM1MjIzNmRiOTUzOTgxNDdk
NDZhMTcyODE2MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudVF0
LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnRRdC5oIgpAQCAtMzUsMjQgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUG9wdXBNZW51UXQ6OlBvcHVwTWVudVF0KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KQorUG9wdXBNZW51OjpQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX3BvcHVwQ2xpZW50KGNsaWVudCkKICAgICAsIG1fcG9wdXAoMCkKIHsKIH0KIAotUG9wdXBN
ZW51UXQ6On5Qb3B1cE1lbnVRdCgpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAgIGRl
bGV0ZSBtX3BvcHVwOwogfQogCi0KLXZvaWQgUG9wdXBNZW51UXQ6OmRpc2Nvbm5lY3RDbGllbnQo
KQotewotICAgIG1fcG9wdXBDbGllbnQgPSAwOwotfQotCi12b2lkIFBvcHVwTWVudVF0OjpzaG93
KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQ
b3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQg
aW5kZXgpCiB7CiAgICAgQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudFF0Kj4oCiAgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKQEAgLTczLDE0ICs2NywxOSBAQCB2b2lkIFBvcHVwTWVudVF0OjpzaG93
KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogCiB9CiAK
LXZvaWQgUG9wdXBNZW51UXQ6OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAg
IG1fcG9wdXAtPmhpZGUoKTsKIH0KIAotdm9pZCBQb3B1cE1lbnVRdDo6dXBkYXRlRnJvbUVsZW1l
bnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3sKKyAgICBjbGllbnQo
KS0+c2V0VGV4dEZyb21JdGVtKG1fcG9wdXBDbGllbnQtPnNlbGVjdGVkSW5kZXgoKSk7Cit9CisK
K2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0gICAg
bV9wb3B1cENsaWVudC0+c2V0VGV4dEZyb21JdGVtKG1fcG9wdXBDbGllbnQtPnNlbGVjdGVkSW5k
ZXgoKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BvcHVwTWVudVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YTlmNzZkYmI1OTg5OGE5YWQzZTBi
MzFjNzA2MGQ2MTE0MzhhNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9wdXBNZW51UXRfaAot
I2RlZmluZSBQb3B1cE1lbnVRdF9oCi0KLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBRdEFic3RyYWN0V2ViUG9w
dXA7Ci1jbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci0KLWNsYXNzIFBv
cHVwTWVudVF0IDogcHVibGljIFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0gICAgUG9wdXBNZW51UXQo
UG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudVF0KCk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0
dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9w
dXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogbV9w
b3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVwTWVudVF0X2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCmluZGV4IDVmNmY2MTlmYjRkZThiMjFjZDQ2NzU3MDA4
ODkwMzE3MGU4N2M0YTMuLmRhZDQ5OTdkMTYyYjU1NmEwYmFiODdmNTg2YzRhN2ZkMWJjZjg2NzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgUUZvbnQgZm9udCgpIHsgcmV0dXJuIG1fcG9wdXBDbGllbnQtPm1l
bnVTdHlsZSgpLmZvbnQoKS5mb250KCk7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
UG9wdXBNZW51UXQ7CisgICAgZnJpZW5kIGNsYXNzIFBvcHVwTWVudTsKICAgICBQb3B1cE1lbnVD
bGllbnQqIG1fcG9wdXBDbGllbnQ7CiAgICAgUVdlYlBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsK
ICAgICBpbnQgbV9jdXJyZW50SW5kZXg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1NlYXJjaFBvcHVwTWVudVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBN
ZW51UXQuY3BwCmluZGV4IDg2OGI5YTc4MWM4YzljMzUxNjJhOTA4MThmZjJiYTg3MTRhMzIzY2Iu
LjE4N2E1ZGUxMmEzNzNiMTNhYTVmZmNhZTY3YWE2NDI3MmE0MjM5NzUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENv
cHlyaWdodCBDIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMjkgKzE4LDI2IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVF0LmgiCisjaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbmNsdWRlICJBdG9taWNTdHJp
bmcuaCIKIAotU2VhcmNoUG9wdXBNZW51UXQ6OlNlYXJjaFBvcHVwTWVudVF0KFBvcHVwTWVudUNs
aWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCi17Ci19CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51UXQ6OnBvcHVwTWVudSgpCitTZWFy
Y2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IFBvcHVwTWVudShjbGllbnQpCiB7Ci0gICAgcmV0dXJuICZtX3BvcHVwOwogfQogCi12b2lk
IFNlYXJjaFBvcHVwTWVudVF0OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7
CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51UXQ6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6bG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKIHsK
IH0KIAotYm9vbCBTZWFyY2hQb3B1cE1lbnVRdDo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVw
TWVudTo6ZW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1NlYXJjaFBvcHVwTWVudVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMWMw
OWQzZTExNDlhYTZmODRhZDU1ZjkwMDIzNjg3N2MzMWE2ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TZWFyY2hQb3B1
cE1lbnVRdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAq
LwotCi0jaWZuZGVmIFNlYXJjaFBvcHVwTWVudVF0X2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51
UXRfaAotCi0jaW5jbHVkZSAiUG9wdXBNZW51UXQuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1l
bnUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnVRdCA6
IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudVF0
KFBvcHVwTWVudUNsaWVudCopOwotCi0gICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgp
OwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgUG9wdXBNZW51UXQgbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFNl
YXJjaFBvcHVwTWVudVF0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVw
TWVudVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4
IGFhYWRjNTNkNjJkNDBjMDUzM2JiY2EyYmFjNTRlNjIwOGUxMjFkODAuLjRiYzZkYzdmODc5NWY5
MWEzZmZhOTY2OWU3NDhjYmRhYTZlNDIwMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcApAQCAtMSw3ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMDkgVG9yY2ggTW9iaWxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIxLDcgKzIwLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUG9wdXBNZW51V2luLmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJC
aXRtYXBJbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTg3LDcgKzg2LDcgQEAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlUG9pbnQoTFBBUkFNJiBsUGFyYW0sIEhXTkQgZnJvbSwgSFdORCB0
bykKICAgICBsUGFyYW0gPSBNQUtFTFBBUkFNKHB0LngsIHB0LnkpOwogfQogCi1Qb3B1cE1lbnVX
aW46OlBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChjbGll
bnQpCiAgICAgLCBtX3Njcm9sbGJhcigwKQogICAgICwgbV9wb3B1cCgwKQpAQCAtMTAzLDcgKzEw
Miw3IEBAIFBvcHVwTWVudVdpbjo6UG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQogewogfQogCi1Qb3B1cE1lbnVXaW46On5Qb3B1cE1lbnVXaW4oKQorUG9wdXBNZW51Ojp+UG9w
dXBNZW51KCkKIHsKICAgICBpZiAobV9ibXApCiAgICAgICAgIDo6RGVsZXRlT2JqZWN0KG1fYm1w
KTsKQEAgLTExNSwxNyArMTE0LDEyIEBAIFBvcHVwTWVudVdpbjo6flBvcHVwTWVudVdpbigpCiAg
ICAgICAgIG1fc2Nyb2xsYmFyLT5zZXRQYXJlbnQoMCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51V2lu
OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xpZW50ID0gMDsKLX0KLQotTFBD
VFNUUiBQb3B1cE1lbnVXaW46OnBvcHVwQ2xhc3NOYW1lKCkKK0xQQ1RTVFIgUG9wdXBNZW51Ojpw
b3B1cENsYXNzTmFtZSgpCiB7CiAgICAgcmV0dXJuIGtQb3B1cFdpbmRvd0NsYXNzTmFtZTsKIH0K
IAotdm9pZCBQb3B1cE1lbnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2
aWV3LCBpbnQgaW5kZXgpCit2b2lkIFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByLCBG
cmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKIHsKICAgICBjYWxjdWxhdGVQb3NpdGlvbkFuZFNp
emUociwgdmlldyk7CiAgICAgaWYgKGNsaWVudFJlY3QoKS5pc0VtcHR5KCkpCkBAIC0yNzMsNyAr
MjY3LDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVW
aWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgaGlkZSgpOwogfQogCi12b2lkIFBvcHVwTWVudVdp
bjo6aGlkZSgpCit2b2lkIFBvcHVwTWVudTo6aGlkZSgpCiB7CiAgICAgaWYgKCFtX3Nob3dQb3B1
cCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg5LDcgKzI4Myw3IEBAIHZvaWQgUG9wdXBNZW51V2lu
OjpoaWRlKCkKICAgICA6OlBvc3RNZXNzYWdlKG1fcG9wdXAsIFdNX05VTEwsIDAsIDApOwogfQog
Ci12b2lkIFBvcHVwTWVudVdpbjo6Y2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKGNvbnN0IEludFJl
Y3QmIHIsIEZyYW1lVmlldyogdikKK3ZvaWQgUG9wdXBNZW51OjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUoY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2KQogewogICAgIC8vIHIgaXMgaW4g
YWJzb2x1dGUgZG9jdW1lbnQgY29vcmRpbmF0ZXMsIGJ1dCB3ZSB3YW50IHRvIGJlIGluIHNjcmVl
biBjb29yZGluYXRlcwogCkBAIC0zNzksNyArMzczLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNh
bGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAg
ICAgcmV0dXJuOwogfQogCi1ib29sIFBvcHVwTWVudVdpbjo6c2V0Rm9jdXNlZEluZGV4KGludCBp
LCBib29sIGhvdFRyYWNraW5nKQorYm9vbCBQb3B1cE1lbnU6OnNldEZvY3VzZWRJbmRleChpbnQg
aSwgYm9vbCBob3RUcmFja2luZykKIHsKICAgICBpZiAoaSA8IDAgfHwgaSA+PSBjbGllbnQoKS0+
bGlzdFNpemUoKSB8fCBpID09IGZvY3VzZWRJbmRleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MDEsMjIgKzM5NSwyMiBAQCBib29sIFBvcHVwTWVudVdpbjo6c2V0Rm9jdXNlZEluZGV4
KGludCBpLCBib29sIGhvdFRyYWNraW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgUG9w
dXBNZW51V2luOjp2aXNpYmxlSXRlbXMoKSBjb25zdAoraW50IFBvcHVwTWVudTo6dmlzaWJsZUl0
ZW1zKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50UmVjdCgpLmhlaWdodCgpIC8gbV9pdGVt
SGVpZ2h0OwogfQogCi1pbnQgUG9wdXBNZW51V2luOjpsaXN0SW5kZXhBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK2ludCBQb3B1cE1lbnU6Omxpc3RJbmRleEF0UG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbE9mZnNldCAr
IHBvaW50LnkoKSAvIG1faXRlbUhlaWdodDsKIH0KIAotaW50IFBvcHVwTWVudVdpbjo6Zm9jdXNl
ZEluZGV4KCkgY29uc3QKK2ludCBQb3B1cE1lbnU6OmZvY3VzZWRJbmRleCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZm9jdXNlZEluZGV4OwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6Zm9jdXNG
aXJzdCgpCit2b2lkIFBvcHVwTWVudTo6Zm9jdXNGaXJzdCgpCiB7CiAgICAgaWYgKCFjbGllbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMwLDcgKzQyNCw3IEBAIHZvaWQgUG9wdXBNZW51V2lu
Ojpmb2N1c0ZpcnN0KCkKICAgICAgICAgfQogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6Zm9jdXNM
YXN0KCkKK3ZvaWQgUG9wdXBNZW51Ojpmb2N1c0xhc3QoKQogewogICAgIGlmICghY2xpZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ0NCw3ICs0MzgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
Zm9jdXNMYXN0KCkKICAgICAgICAgfQogfQogCi1ib29sIFBvcHVwTWVudVdpbjo6ZG93bih1bnNp
Z25lZCBsaW5lcykKK2Jvb2wgUG9wdXBNZW51Ojpkb3duKHVuc2lnbmVkIGxpbmVzKQogewogICAg
IGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2Myw3ICs0NTcsNyBA
QCBib29sIFBvcHVwTWVudVdpbjo6ZG93bih1bnNpZ25lZCBsaW5lcykKICAgICByZXR1cm4gc2V0
Rm9jdXNlZEluZGV4KGxhc3RTZWxlY3RhYmxlSW5kZXgpOwogfQogCi1ib29sIFBvcHVwTWVudVdp
bjo6dXAodW5zaWduZWQgbGluZXMpCitib29sIFBvcHVwTWVudTo6dXAodW5zaWduZWQgbGluZXMp
CiB7CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgyLDcg
KzQ3Niw3IEBAIGJvb2wgUG9wdXBNZW51V2luOjp1cCh1bnNpZ25lZCBsaW5lcykKICAgICByZXR1
cm4gc2V0Rm9jdXNlZEluZGV4KGxhc3RTZWxlY3RhYmxlSW5kZXgpOwogfQogCi12b2lkIFBvcHVw
TWVudVdpbjo6aW52YWxpZGF0ZUl0ZW0oaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OmludmFs
aWRhdGVJdGVtKGludCBpbmRleCkKIHsKICAgICBpZiAoIW1fcG9wdXApCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ5Nyw3ICs0OTEsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZUl0ZW0o
aW50IGluZGV4KQogICAgIDo6SW52YWxpZGF0ZVJlY3QobV9wb3B1cCwgJnIsIFRSVUUpOwogfQog
Ci1JbnRSZWN0IFBvcHVwTWVudVdpbjo6Y2xpZW50UmVjdCgpIGNvbnN0CitJbnRSZWN0IFBvcHVw
TWVudTo6Y2xpZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gbV93
aW5kb3dSZWN0OwogICAgIGNsaWVudFJlY3QuaW5mbGF0ZSgtcG9wdXBXaW5kb3dCb3JkZXJXaWR0
aCk7CkBAIC01MDUsMTIgKzQ5OSwxMiBAQCBJbnRSZWN0IFBvcHVwTWVudVdpbjo6Y2xpZW50UmVj
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudFJlY3Q7CiB9CiAKLXZvaWQgUG9wdXBNZW51V2lu
OjppbmNyZW1lbnRXaGVlbERlbHRhKGludCBkZWx0YSkKK3ZvaWQgUG9wdXBNZW51OjppbmNyZW1l
bnRXaGVlbERlbHRhKGludCBkZWx0YSkKIHsKICAgICBtX3doZWVsRGVsdGEgKz0gZGVsdGE7CiB9
CiAKLXZvaWQgUG9wdXBNZW51V2luOjpyZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSkKK3ZvaWQg
UG9wdXBNZW51OjpyZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSkKIHsKICAgICBBU1NFUlQoZGVs
dGEgPj0gMCk7CiAgICAgQVNTRVJUKGRlbHRhIDw9IGFicyhtX3doZWVsRGVsdGEpKTsKQEAgLTUy
Myw3ICs1MTcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cmVkdWNlV2hlZWxEZWx0YShpbnQgZGVs
dGEpCiAgICAgICAgIHJldHVybjsKIH0KIAotYm9vbCBQb3B1cE1lbnVXaW46OnNjcm9sbFRvUmV2
ZWFsU2VsZWN0aW9uKCkKK2Jvb2wgUG9wdXBNZW51OjpzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigp
CiB7CiAgICAgaWYgKCFtX3Njcm9sbGJhcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQz
LDcgKzUzNyw3IEBAIGJvb2wgUG9wdXBNZW51V2luOjpzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKICAgICBpZiAo
IW1fcG9wdXApCiAgICAgICAgIHJldHVybjsKQEAgLTU1NSw5ICs1NDksMTQgQEAgdm9pZCBQb3B1
cE1lbnVXaW46OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgOjpVcGRhdGVXaW5kb3cobV9w
b3B1cCk7CiB9CiAKK2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpIAoreyAKKyAgICByZXR1cm4gdHJ1ZTsgCit9CisKIGNvbnN0IGludCBzZXBhcmF0b3JQYWRk
aW5nID0gNDsKIGNvbnN0IGludCBzZXBhcmF0b3JIZWlnaHQgPSAxOwotdm9pZCBQb3B1cE1lbnVX
aW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCit2b2lkIFBvcHVw
TWVudTo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIHsKICAgICBp
ZiAoIW1fcG9wdXApCiAgICAgICAgIHJldHVybjsKQEAgLTY2NCw3ICs2NjMsNyBAQCB2b2lkIFBv
cHVwTWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAg
ICAgICAgOjpSZWxlYXNlREMobV9wb3B1cCwgbG9jYWxEQyk7CiB9CiAKLXZvaWQgUG9wdXBNZW51
V2luOjp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKiBzY3JvbGxCYXIpCit2b2lkIFBvcHVwTWVudTo6
dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogc2Nyb2xsQmFyKQogewogICAgIEFTU0VSVChtX3Njcm9s
bGJhcik7CiAKQEAgLTcwMCw3ICs2OTksNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6dmFsdWVDaGFu
Z2VkKFNjcm9sbGJhciogc2Nyb2xsQmFyKQogICAgIDo6VXBkYXRlV2luZG93KG1fcG9wdXApOwog
fQogCi12b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFBvcHVwTWVudTo6aW52YWxp
ZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgSW50UmVjdCBzY3JvbGxSZWN0ID0gcmVjdDsKICAgICBzY3JvbGxSZWN0Lm1v
dmUoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsKQEAgLTcwOCw3ICs3MDcsNyBAQCB2
b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJbnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwg
ZmFsc2UpOwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6cmVnaXN0ZXJDbGFzcygpCit2b2lkIFBv
cHVwTWVudTo6cmVnaXN0ZXJDbGFzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2ZVJlZ2lzdGVy
ZWRXaW5kb3dDbGFzcyA9IGZhbHNlOwogCkBAIC03NDQsNyArNzQzLDcgQEAgdm9pZCBQb3B1cE1l
bnVXaW46OnJlZ2lzdGVyQ2xhc3MoKQogfQogCiAKLUxSRVNVTFQgQ0FMTEJBQ0sgUG9wdXBNZW51
V2luOjpQb3B1cE1lbnVXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1Bh
cmFtLCBMUEFSQU0gbFBhcmFtKQorTFJFU1VMVCBDQUxMQkFDSyBQb3B1cE1lbnU6OlBvcHVwTWVu
dVduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiB7CiAjaWYgT1MoV0lOQ0UpCiAgICAgTE9ORyBsb25nUHRyID0gR2V0V2luZG93TG9u
ZyhoV25kLCAwKTsKQEAgLTc1Miw3ICs3NTEsNyBAQCBMUkVTVUxUIENBTExCQUNLIFBvcHVwTWVu
dVdpbjo6UG9wdXBNZW51V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNCiAg
ICAgTE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmdQdHIoaFduZCwgMCk7CiAjZW5kaWYK
ICAgICAKLSAgICBpZiAoUG9wdXBNZW51V2luKiBwb3B1cCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UG9w
dXBNZW51V2luKj4obG9uZ1B0cikpCisgICAgaWYgKFBvcHVwTWVudSogcG9wdXAgPSByZWludGVy
cHJldF9jYXN0PFBvcHVwTWVudSo+KGxvbmdQdHIpKQogICAgICAgICByZXR1cm4gcG9wdXAtPndu
ZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgIAogICAgIGlmIChtZXNz
YWdlID09IFdNX0NSRUFURSkgewpAQCAtNzcyLDcgKzc3MSw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sg
UG9wdXBNZW51V2luOjpQb3B1cE1lbnVXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0KIAogY29uc3QgaW50IHNtb290aFNjcm9sbEFuaW1hdGlvbkR1cmF0aW9uID0gNTAwMDsK
IAotTFJFU1VMVCBQb3B1cE1lbnVXaW46OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCitMUkVTVUxUIFBvcHVwTWVudTo6d25kUHJv
YyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
IHsKICAgICBMUkVTVUxUIGxSZXN1bHQgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uaCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdp
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGE0MjU1MmIxYjE0ODczZjMzMjIx
MGQxNzk5YThkNWE2MzQ4MmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFBvcHVwTWVudVdp
bl9oCi0jZGVmaW5lIFBvcHVwTWVudVdpbl9oCi0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyQ2xpZW50LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwotdHlwZWRlZiBz
dHJ1Y3QgSERDX18qIEhEQzsKLXR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBTY3JvbGxiYXI7
Ci0KLWNsYXNzIFBvcHVwTWVudVdpbiA6IHB1YmxpYyBQb3B1cE1lbnUsIHByaXZhdGUgU2Nyb2xs
YmFyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50Kik7
Ci0gICAgflBvcHVwTWVudVdpbigpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50
UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdENsaWVudCgpOwotCi0gICAgc3RhdGljIExQQ1RTVFIgcG9wdXBDbGFzc05hbWUo
KTsKLQotcHJpdmF0ZToKLSAgICBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9wdXBDbGllbnQ7IH0KLQotICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KLQotICAgIGJvb2wgdXAodW5zaWduZWQgbGlu
ZXMgPSAxKTsKLSAgICBib29sIGRvd24odW5zaWduZWQgbGluZXMgPSAxKTsKLQotICAgIGludCBp
dGVtSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtSGVpZ2h0OyB9Ci0gICAgY29uc3QgSW50
UmVjdCYgd2luZG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93UmVjdDsgfQotICAgIElu
dFJlY3QgY2xpZW50UmVjdCgpIGNvbnN0OwotCi0gICAgaW50IHZpc2libGVJdGVtcygpIGNvbnN0
OwotCi0gICAgaW50IGxpc3RJbmRleEF0UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLQot
ICAgIGJvb2wgc2V0Rm9jdXNlZEluZGV4KGludCBpbmRleCwgYm9vbCBob3RUcmFja2luZyA9IGZh
bHNlKTsKLSAgICBpbnQgZm9jdXNlZEluZGV4KCkgY29uc3Q7Ci0gICAgdm9pZCBmb2N1c0ZpcnN0
KCk7Ci0gICAgdm9pZCBmb2N1c0xhc3QoKTsKLQotICAgIHZvaWQgcGFpbnQoY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgSERDID0gMCk7Ci0KLSAgICBIV05EIHBvcHVwSGFuZGxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3B1cDsgfQotCi0gICAgdm9pZCBzZXRXYXNDbGlja2VkKGJvb2wgYiA9IHRy
dWUpIHsgbV93YXNDbGlja2VkID0gYjsgfQotICAgIGJvb2wgd2FzQ2xpY2tlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2FzQ2xpY2tlZDsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxPZmZzZXQoaW50IG9m
ZnNldCkgeyBtX3Njcm9sbE9mZnNldCA9IG9mZnNldDsgfQotICAgIGludCBzY3JvbGxPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldDsgfQotCi0gICAgYm9vbCBzY3JvbGxUb1Jl
dmVhbFNlbGVjdGlvbigpOwotCi0gICAgdm9pZCBpbmNyZW1lbnRXaGVlbERlbHRhKGludCBkZWx0
YSk7Ci0gICAgdm9pZCByZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSk7Ci0gICAgaW50IHdoZWVs
RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGE7IH0KLQotICAgIGJvb2wgc2Nyb2xs
YmFyQ2FwdHVyaW5nTW91c2UoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhckNhcHR1cmluZ01v
dXNlOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9z
Y3JvbGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0KLQotICAgIC8vIFNjcm9sbEJhckNsaWVudAot
ICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgdm9pZCBjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYs
IEZyYW1lVmlldyopOwotICAgIHZvaWQgaW52YWxpZGF0ZUl0ZW0oaW50IGluZGV4KTsKLQotICAg
IHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBvcHVwTWVudVduZFByb2MoSFdORCwgVUlOVCwgV1BB
UkFNLCBMUEFSQU0pOwotICAgIExSRVNVTFQgd25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJDbGFzcygpOwotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIFJl
ZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOwotICAgIEhXTkQgbV9wb3B1cDsKLSAgICBIREMg
bV9EQzsKLSAgICBIQklUTUFQIG1fYm1wOwotICAgIGJvb2wgbV93YXNDbGlja2VkOwotICAgIElu
dFJlY3QgbV93aW5kb3dSZWN0OwotICAgIGludCBtX2l0ZW1IZWlnaHQ7Ci0gICAgaW50IG1fc2Ny
b2xsT2Zmc2V0OwotICAgIGludCBtX3doZWVsRGVsdGE7Ci0gICAgaW50IG1fZm9jdXNlZEluZGV4
OwotICAgIGJvb2wgbV9zY3JvbGxiYXJDYXB0dXJpbmdNb3VzZTsKLSAgICBib29sIG1fc2hvd1Bv
cHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51V2luX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4IDRhNWNiMjI5MWYzMzk4YzdhYTk4
ZjI4NzkxNzkxZWE2YjIwZWJkMWIuLmYyNzA5YmJlNzY3ZjU0YTkxZDVhNjZlMGJmOWVjNWI0N2Ex
MGI3MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApA
QCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMjQgKzE4LDE5IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVdpbi5o
IgorI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCitTZWFyY2hQb3B1cE1lbnU6OlNlYXJjaFBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAgICA6IFBvcHVwTWVudShjbGllbnQp
CiB7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQotewot
ICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQotYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJs
ZWQoKQorYm9vbCBTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQoKQogewogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNDcsNyArNDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRv
c2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwogfQogCi12b2lkIFNlYXJjaFBv
cHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTY3LDcgKzYxLDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAg
ICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGlj
YXRpb24pOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQor
dm9pZCBTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlODdkNzYxZWEwZGM4
MzE3YWNhMTA5MDM0YWI4ZGVlMzkyY2ViNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNp
Zm5kZWYgU2VhcmNoUG9wdXBNZW51V2luX2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51V2luX2gK
LQotI2luY2x1ZGUgIlBvcHVwTWVudVdpbi5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlYXJjaFBvcHVwTWVudVdpbiA6IHB1
YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudVdpbihQ
b3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2
YXRlOgotICAgIFBvcHVwTWVudVdpbiBtX3BvcHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2Vh
cmNoUG9wdXBNZW51V2luX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvUG9wdXBN
ZW51V3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5jcHAKaW5kZXggZTg4
ZDFlNTlkYmViYjgyZjE1YzFmZDE2MjVjNzg2N2M2NzU1MWZjZS4uOWIwZGViYTRmODljMTE0MzA2
ZmNkYzY5OTg0OTkzYWY0MDA0M2FmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9Q
b3B1cE1lbnVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5jcHAK
QEAgLTIsNyArMiw2IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgcG9wdXAgbWVudSBp
bXBsZW1lbnRhdGlvbiBmb3IgPHNlbGVjdD4gZWxlbWVudHMgaW4gV2ViQ29yZS4KICAqCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTIyLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51V3guaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC00MiwyMyArNDEs
MTggQEAgc3RhdGljIGludCBzX21lbnVTdGFydElkID0gd3hOZXdJZCgpOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBvcHVwTWVudVd4OjpQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAg
IDogbV9wb3B1cENsaWVudChjbGllbnQpCiAgICAgLCBtX21lbnUoTlVMTCkKIHsKIH0KIAotUG9w
dXBNZW51V3g6On5Qb3B1cE1lbnVXeCgpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAg
IGRlbGV0ZSBtX21lbnU7CiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OmRpc2Nvbm5lY3RDbGllbnQo
KQotewotICAgIG1fcG9wdXBDbGllbnQgPSAwOwotfQotCi12b2lkIFBvcHVwTWVudVd4OjpzaG93
KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQordm9pZCBQb3B1cE1l
bnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAg
ICAgLy8ganVzdCBkZWxldGUgYW5kIHJlY3JlYXRlCiAgICAgZGVsZXRlIG1fbWVudTsKQEAgLTg0
LDEzICs3OCwxMyBAQCB2b2lkIFBvcHVwTWVudVd4OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZy
YW1lVmlldyogdiwgaW50IGluZGV4KQogICAgICAgICAgICAgICAgICAgICBtX21lbnUtPkFwcGVu
ZChzX21lbnVTdGFydElkICsgaSwgY2xpZW50KCktPml0ZW1UZXh0KGkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBuYXRpdmVXaW4tPkNvbm5lY3Qoc19tZW51U3RhcnRJZCwg
c19tZW51U3RhcnRJZCArIChzaXplLTEpLCB3eEVWVF9DT01NQU5EX01FTlVfU0VMRUNURUQsIHd4
Q29tbWFuZEV2ZW50SGFuZGxlcihQb3B1cE1lbnVXeDo6T25NZW51SXRlbVNlbGVjdGVkKSwgMCwg
dGhpcyk7CisgICAgICAgIG5hdGl2ZVdpbi0+Q29ubmVjdChzX21lbnVTdGFydElkLCBzX21lbnVT
dGFydElkICsgKHNpemUtMSksIHd4RVZUX0NPTU1BTkRfTUVOVV9TRUxFQ1RFRCwgd3hDb21tYW5k
RXZlbnRIYW5kbGVyKFBvcHVwTWVudTo6T25NZW51SXRlbVNlbGVjdGVkKSwgTlVMTCwgdGhpcyk7
CiAgICAgICAgIG5hdGl2ZVdpbi0+UG9wdXBNZW51KG1fbWVudSwgci54KCkgLSB2LT5zY3JvbGxY
KCksIHIueSgpIC0gdi0+c2Nyb2xsWSgpKTsKLSAgICAgICAgbmF0aXZlV2luLT5EaXNjb25uZWN0
KHNfbWVudVN0YXJ0SWQsIHNfbWVudVN0YXJ0SWQgKyAoc2l6ZS0xKSwgd3hFVlRfQ09NTUFORF9N
RU5VX1NFTEVDVEVELCB3eENvbW1hbmRFdmVudEhhbmRsZXIoUG9wdXBNZW51V3g6Ok9uTWVudUl0
ZW1TZWxlY3RlZCksIDAsIHRoaXMpOworICAgICAgICBuYXRpdmVXaW4tPkRpc2Nvbm5lY3Qoc19t
ZW51U3RhcnRJZCwgc19tZW51U3RhcnRJZCArIChzaXplLTEpLCB3eEVWVF9DT01NQU5EX01FTlVf
U0VMRUNURUQsIHd4Q29tbWFuZEV2ZW50SGFuZGxlcihQb3B1cE1lbnU6Ok9uTWVudUl0ZW1TZWxl
Y3RlZCksIE5VTEwsIHRoaXMpOwogICAgIH0KIH0KIAotdm9pZCBQb3B1cE1lbnVXeDo6T25NZW51
SXRlbVNlbGVjdGVkKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgUG9wdXBNZW51OjpPbk1l
bnVJdGVtU2VsZWN0ZWQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChjbGllbnQo
KSkgewogICAgICAgICBjbGllbnQoKS0+dmFsdWVDaGFuZ2VkKGV2ZW50LkdldElkKCkgLSBzX21l
bnVTdGFydElkKTsKQEAgLTk5LDE1ICs5MywyMCBAQCB2b2lkIFBvcHVwTWVudVd4OjpPbk1lbnVJ
dGVtU2VsZWN0ZWQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQogICAgIC8vIFRPRE86IERvIHdlIG5l
ZWQgdG8gY2FsbCBEaXNjb25uZWN0IGhlcmU/IERvIHdlIGhhdmUgYSByZWYgdG8gdGhlIG5hdGl2
ZSB3aW5kb3cgc3RpbGw/CiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OmhpZGUoKQordm9pZCBQb3B1
cE1lbnU6OmhpZGUoKQogewogICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVy
ZSwgdGhlIG5hdGl2ZSBjb250cm9sIG9ubHkgZXhpc3RzIGR1cmluZyB0aGUgdGltZQogICAgIC8v
IHNob3cgaXMgY2FsbGVkCiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OnVwZGF0ZUZyb21FbGVtZW50
KCkKK3ZvaWQgUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgY2xpZW50KCkt
PnNldFRleHRGcm9tSXRlbShtX3BvcHVwQ2xpZW50LT5zZWxlY3RlZEluZGV4KCkpOwogfQogCiti
b29sIFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1
cE1lbnVXeC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMjU3M2ZjMDNmMGVkYTdkOTQ3MmRlN2QyMGViMTc2ZmRiZThh
NzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd3gvUG9wdXBNZW51V3guaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBQb3B1cE1lbnVXeF9oCi0jZGVmaW5lIFBv
cHVwTWVudVd4X2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpZmRlZiBfX1dYTVNXX18KLSNp
bmNsdWRlIDx3eC9tc3cvd2ludW5kZWYuaD4KLSNlbmRpZgotY2xhc3Mgd3hNZW51OwotI2luY2x1
ZGUgPHd4L2RlZnMuaD4KLSNpbmNsdWRlIDx3eC9ldmVudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFNjcm9sbGJhcjsKLQotY2xhc3MgUG9wdXBN
ZW51V3ggOiBwdWJsaWMgUG9wdXBNZW51LCBwdWJsaWMgd3hFdnRIYW5kbGVyIHsKLXB1YmxpYzoK
LSAgICBQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51V3goKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQg
aW5kZXgpOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKLQot
cHJpdmF0ZToKLSAgICB2b2lkIE9uTWVudUl0ZW1TZWxlY3RlZCh3eENvbW1hbmRFdmVudCYpOwot
ICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVu
dDsgfQotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIHd4TWVudSog
bV9tZW51OwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51V3hfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93eC9TZWFyY2hQb3B1cE1lbnVXeC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcAppbmRleCBhNWFlYjFiMzQ1NTYwNjkxM2Y4YjUw
MGQzNmU5OGY5ZTUwMmM4MDQyLi5kYmJlMzM5MTk2NGQ0NzczZWYxNWJmNzNmMzM1MDQ2Y2ZhZmRk
ZTJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcApAQCAtMSw2
ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMzcgKzI0LDMyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlYXJjaFBvcHVwTWVudVd4LmgiCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlYXJj
aFBvcHVwTWVudVd4OjpTZWFyY2hQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V3g6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVX
eDo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudVd4
OjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVXeDo6cG9wdXBNZW51KCkK
LXsKLSAgICByZXR1cm4gJm1fcG9wdXA7Ci19Ci0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93eC9TZWFyY2hQb3B1cE1lbnVXeC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9TZWFy
Y2hQb3B1cE1lbnVXeC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGM3N2JhYjYy
MGViNGZhYTMzZjU4ZDdlYzhmM2I2NmEyYzNjMDMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2VhcmNoUG9wdXBNZW51
V3guaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVXeF9oCi0jZGVmaW5lIFNlYXJjaFBvcHVwTWVudVd4X2gK
LQotI2luY2x1ZGUgIlBvcHVwTWVudVd4LmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNoUG9wdXBNZW51V3ggOiBwdWJs
aWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBTZWFyY2hQb3B1cE1lbnVXeChQb3B1
cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQg
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRl
OgotICAgIFBvcHVwTWVudVd4IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQ
b3B1cE1lbnVXeF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggYjZhOTdh
OTcxNjgyOWZkYmM0MDI0M2JjMjQ5YjhhMWM3ZTJhMTgyMi4uZmYxNmU3ZTM5MGM5MzFjOGUxZGE5
YjhiOTY1YmMxNjgxNzJmMGQwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCiAKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC04OSw4ICs4OCw4IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUo
KQogICAgIG1faW5uZXJCbG9jay0+c3R5bGUoKS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCh0aGVt
ZSgpLT5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KHN0eWxlKCkpLCBGaXhlZCkpOwogICAgIG1f
aW5uZXJCbG9jay0+c3R5bGUoKS0+c2V0UGFkZGluZ1RvcChMZW5ndGgodGhlbWUoKS0+cG9wdXBJ
bnRlcm5hbFBhZGRpbmdUb3Aoc3R5bGUoKSksIEZpeGVkKSk7CiAgICAgbV9pbm5lckJsb2NrLT5z
dHlsZSgpLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCh0aGVtZSgpLT5wb3B1cEludGVybmFsUGFk
ZGluZ0JvdHRvbShzdHlsZSgpKSwgRml4ZWQpKTsKLQotICAgIGlmIChkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLT5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpKSB7Cisg
ICAgICAgIAorICAgIGlmIChQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkpIHsKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhl
IENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKICAgICAgICAgLy8gc28g
d2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBtYXRjaC4KICAgICAgICAgbV9pbm5lckJs
b2NrLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oTEVGVCk7CkBAIC0yNzksNyArMjc4LDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBpbnNpZGUgdGhlIHNob3dQb3B1
cCBjYWxsIGFuZCBpdCB3b3VsZCBmYWlsLgogICAgIGNyZWF0ZUlubmVyQmxvY2soKTsKICAgICBp
ZiAoIW1fcG9wdXApCi0gICAgICAgIG1fcG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9t
ZSgpLT5jcmVhdGVQb3B1cE1lbnUodGhpcyk7CisgICAgICAgIG1fcG9wdXAgPSBQb3B1cE1lbnU6
OmNyZWF0ZSh0aGlzKTsKICAgICBTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwogICAgIG1fcG9wdXBJc1Zpc2libGUg
PSB0cnVlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCA1MTJmYTliNTc5YWZm
YTNiMTYxYTk4MWNiMzIyMGFhYzE5YTU4OTU5Li5hZWY4ZDRmZWRmOGFiNmM2OGU2MTRlYThhMmZj
OTNlOTNhMGU0MGZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTI0LDcgKzI0
LDYgQEAKICNpZm5kZWYgUmVuZGVyTWVudUxpc3RfaAogI2RlZmluZSBSZW5kZXJNZW51TGlzdF9o
CiAKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgogCkBAIC0zNiw2ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUG9wdXBNZW51OwogY2xhc3MgUmVuZGVyVGV4dDsK
IAogI2lmIEVOQUJMRShOT19MSVNUQk9YX1JFTkRFUklORykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGJjZDM3MjkyODgzY2Vi
MTgyZWRhNjRhMjUwYWRiYzgwMGQwYTc4ODYuLmY0MGZiZjBmNWY5OGNlOTc0Njk2NDU3ODRjNjY3
NTdkZWQxMjBiODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcApAQCAtMiw3ICsyLDYgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykgCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI0LDcgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNT
U1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKQEAgLTQwLDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKQEAgLTYz
LDcgKzYyLDcgQEAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFjZWgKIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCiB7CiAgICAgaWYgKG1fc2Vh
cmNoUG9wdXApIHsKLSAgICAgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPmRpc2Nvbm5l
Y3RDbGllbnQoKTsKKyAgICAgICAgbV9zZWFyY2hQb3B1cC0+ZGlzY29ubmVjdENsaWVudCgpOwog
ICAgICAgICBtX3NlYXJjaFBvcHVwID0gMDsKICAgICB9CiAgCkBAIC0xMDgsNyArMTA3LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkZFNlYXJjaFJlc3VsdCgpCiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBhdXRvc2F2ZU5hbWUoKTsKICAgICBpZiAoIW1f
c2VhcmNoUG9wdXApCi0gICAgICAgIG1fc2VhcmNoUG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CisgICAgICAgIG1fc2VhcmNo
UG9wdXAgPSBTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZSh0aGlzKTsKIAogICAgIG1fc2VhcmNoUG9w
dXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKIH0KQEAgLTEy
Niw3ICsxMjUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hvd1BvcHVw
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBt
X3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNo
UG9wdXBNZW51KHRoaXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gU2VhcmNoUG9wdXBNZW51
OjpjcmVhdGUodGhpcyk7CiAKICAgICBpZiAoIW1fc2VhcmNoUG9wdXAtPmVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ2LDE0ICsxNDUsMTQgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNl
bnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJj
aFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwg
ZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CisgICAgbV9zZWFyY2hQb3B1cC0+c2hvdyhhYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZv
aWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQogewogICAgIEFTU0VS
VChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgaWYgKG1fc2VhcmNoUG9wdXApCi0gICAg
ICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5oaWRlKCk7CisgICAgICAgIG1fc2VhcmNo
UG9wdXAtPmhpZGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN1
YnRyZWVIYXNDaGFuZ2VkKCkKQEAgLTY4Niw3ICs2ODUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIH0KIAogICAgIGlmIChtX3Nl
YXJjaFBvcHVwSXNWaXNpYmxlKQotICAgICAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICAgICAgbV9zZWFyY2hQb3B1cC0+dXBkYXRlRnJvbUVs
ZW1lbnQoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNhY2hlU2Vs
ZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKQEAgLTg4NCw3ICs4ODMsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwg
Ym9vbCBmaXJlRXZlbgogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gYXV0
b3NhdmVOYW1lKCk7CiAgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICAgICAgICAgICAgICBtX3NlYXJj
aFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KHRoaXMpOworICAgICAgICAgICAgICAgICAgICBtX3NlYXJjaFBvcHVwID0gU2VhcmNoUG9w
dXBNZW51OjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2
ZVJlY2VudFNlYXJjaGVzKG5hbWUsIG1fcmVjZW50U2VhcmNoZXMpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oCmluZGV4IDRiYzgwY2YzNmUwZmNjOTRlOTAxNmI2MTczZGYwMDYxMTRjMWY4ZWIuLjhj
N2U4NDRmMWE0YTdjZDIyZDQxMjNjNzQ0MDM4Nzk2MGE4ZjQwY2EgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC0xLDcgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsNiArMzIsNyBAQCBjbGFzcyBJbnB1dEVsZW1lbnQ7CiBjbGFzcyBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDsKIGNsYXNzIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDsKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ7CitjbGFzcyBT
ZWFyY2hQb3B1cE1lbnU7CiBjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKIGNsYXNzIFRleHRDb250
cm9sSW5uZXJFbGVtZW50OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhMzg5NTI1NDQyMzk3N2RiZjU2ZjFj
MWE0ZDNhMDYxYjM2NzQ0MzViLi4yMjA0MDA5YTExNTIwMzkxZWRkN2M2ZTU4NmFjYWEzMGQwMDEx
ZmI1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0wMiAgSmVyZW15IE9y
bG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQgb2YgNjQ0MjUgZHVlIHRvIENo
cm9taXVtIGluc3RhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MzM0NworCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICogdGVzdHMvUG9wdXBN
ZW51VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OlNldFVw
KToKKwogMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyYTVjMzJlOWMwMjE2YjI3MjFlNjQwMTUz
ZDAxYzAwMDQwOGUzYWI5Li5mYzA4YjVkNzI4Mjk5MzFkYzcyNWRjNDAyODgwYzZlNWY4NjRlM2I3
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTEsNiArMSw1
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtNTYsNyArNTUsNiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKLSNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uU2VydmljZS5oIgpAQCAtNzc1LDE5ICs3NzMsNCBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6
OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgICAgICBtX3dl
YlZpZXctPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViTm9kZShub2RlKSk7CiB9
CiAKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+
IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudUNocm9taXVtKGNs
aWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1w
bDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0oY2xpZW50
KSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAppbmRleCA3ZjNmZWJmYzk4ZmU0YzhiYTZiMjgwYmNhYjU3NjhkMzRjOWZjOTBj
Li5mZTE5YjhiYmFiNWYxZTY0MGNmNTIyN2RkZDM2ZWUwZWRiYmRlOWU2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMywxNSArMzIsMTIgQEAK
ICNkZWZpbmUgQ2hyb21lQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRDaHJv
bWl1bS5oIgotI2luY2x1ZGUgIlBvcHVwTWVudS5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVu
dS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0Owog
Y2xhc3MgRmlsZUNob29zZXI7CiBjbGFzcyBIVE1MUGFyc2VyUXVpcmtzOwogY2xhc3MgUG9wdXBD
b250YWluZXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KQEAgLTE3MiwxMCArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkN1cnNvckluZm8mIGN1cnNvcik7CiAgICAgdm9p
ZCBzZXRDdXJzb3JGb3JQbHVnaW4oY29uc3QgV2ViQ3Vyc29ySW5mbyYgY3Vyc29yKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQb3B1cE1l
bnVJbmZvKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiwgV2ViUG9wdXBNZW51SW5mbyopOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKaW5kZXggYmM0OTk0NzdlMDQzYzli
MjMwMTczM2M5ZDJkMGQ3MjljNDJmMTkzMy4uNDRiMjYyZDVhMGI0NTVhNzk5OGFkNmY0MWQ2OWJk
OWMwNDJiYWU3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRl
c3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApAQCAt
MTgwLDcgKzE4MCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIG1fd2ViVmlldyA9IHN0
YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oV2ViVmlldzo6Y3JlYXRlKCZtX3dlYnZpZXdDbGllbnQs
IDApKTsKICAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZtX3dlYkZyYW1l
Q2xpZW50KTsKLSAgICAgICAgbV9wb3B1cE1lbnUgPSBuZXcgUG9wdXBNZW51Q2hyb21pdW0oJm1f
cG9wdXBNZW51Q2xpZW50KTsKKyAgICAgICAgbV9wb3B1cE1lbnUgPSBQb3B1cE1lbnU6OmNyZWF0
ZSgmbV9wb3B1cE1lbnVDbGllbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCmluZGV4IDFlZmI1MzA0NjE5M2ZkYjU1YzIzODdlOWRmMzgzMzZiOWM2ZWM5NTIuLmU2ZDUw
YTZhMzhiMWVlOTFjNTc3Yzk5ZmJiYTY4N2YxYjQ0NWE1MjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDgtMDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlY3VsYXRpdmUgcmV2
ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmg6CisKIDIwMTAtMDctMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFn
b3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVy
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4
IDIxNzQ3YTFiMGRkNDczM2UwOGVjMTQ4NDY0MDFlN2EyMmNmNTkxMTcuLmZhNGQzN2E3YzgxMjlj
YmVhMTdlYTNiODE2YTViMjVmYzE5NzI0ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTUsNyArNSw2IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggRGllZ28gR29uemFsZXoKICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lP
TiBlbWJlZGRlZCBzeXN0ZW1zCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtNDksOCArNDgsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
IlBvcHVwTWVudUVmbC5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudUVmbC5oIgogI2luY2x1
ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNp
bmNsdWRlICJld2tfcHJpdmF0ZS5oIgpAQCAtNTIyLDE5ICs1MTksNCBAQCB2b2lkIENocm9tZUNs
aWVudEVmbDo6ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3Qg
Vmlld3BvcnRBcgogICAgIGV3a192aWV3X3ZpZXdwb3J0X3NldChtX3ZpZXcsIGFyZ3VtZW50cy53
aWR0aCwgYXJndW1lbnRzLmhlaWdodCwgYXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRz
Lm1pbmltdW1TY2FsZSwgYXJndW1lbnRzLm1heGltdW1TY2FsZSwgYXJndW1lbnRzLnVzZXJTY2Fs
YWJsZSk7CiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50RWZsOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8UG9w
dXBNZW51PiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudUVmbChj
bGllbnQpKTsKLX0KLQotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEVm
bDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51RWZsKGNsaWVudCkpOwot
fQotCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRl
eCBkOTM5YWU2ZDY5MzFmNDdjOTMyZTc1YmM3MDAxYzYzNDVlYmI1M2FkLi4yZjNmZDNlNDRlODVm
ZDcwYzU1YjkyNTg3ZTQ2NzVkOTBjZWNlMjgyIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTMsNyArMyw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTM5LDEwICsxMzgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1
bWVudHMmIGFyZ3VtZW50cykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdy
aXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBN
ZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0OwotCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKICAgICBLVVJM
IG1faG92ZXJlZExpbmtVUkw7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBlYmU3N2MyMzZjYmEwZDZiNGFhM2JjNDY3N2Rl
ZmVjYzc0MGY2NWNmLi43NmFiYzAzNjhkYzZhMTY5OWU5ZjA1YzhkOWI2MjE5MDE5Yjk3ZTQ4IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNwZWN1bGF0aXZlIHJldmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAyMDEwLTA3LTI3ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAppbmRleCAwODFjOTQyMTU4YmMxNTNjNjYyNzI1ODE2ZDQ0NzBiMGI5MDNh
NmZjLi4zZWIyMWY4YjI2NjZjZDRhZjNhMzcwMjVkOTRmNzc5NTdkY2JlZGM2IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC00LDcgKzQsNiBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzUsOSArMzQsNiBAQAogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJQb3B1cE1l
bnVDbGllbnQuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVHdGsuaCIKLSNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnVHdGsuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIndl
YmtpdGdlb2xvY2F0aW9ucG9saWN5ZGVjaXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3
LmgiCkBAIC02MjYsMTkgKzYyMiw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVjaXNpb24t
Y2FuY2VsbGVkIiwgd2ViRnJhbWUpOwogfQogCi1ib29sIENocm9tZUNsaWVudDo6c2VsZWN0SXRl
bVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVHdGsoY2xpZW50KSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUd0ayhjbGllbnQpKTsKLX0KLQogfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggOGM2NjdjNGViNTg4
M2IyMWJhYmFkOWFlYzU0Mjk5M2Y1NmQ2OWZmNC4uMTZhOWY1ZDk1MDkxNzVlMzhiYTgyNTlhMDNm
ZjAwMjdhNDUyZTQyNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjMsMTUgKzIyLDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUu
aCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUG9wdXBNZW51Q2xpZW50OwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogICAgIGNsYXNzIENocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJv
bWVDbGllbnQgewpAQCAtMTMwLDEwICsxMjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJD
b3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZWxl
Y3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1f
d2ViVmlldzsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBtX2hvdmVyZWRMaW5rVVJMOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5k
ZXggYTNlNzY5ZDhkYWM3YTcxNjg2MzFkMjZmMjZhZjcwODdjMGU4NjkzYy4uZjBiY2I2Y2MxNmNk
MTBjNzE2Mzg1ODY0MDRlMTE3M2Q0ZWQ1OWU2OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMDgtMDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlY3VsYXRpdmUgcmV2ZXJ0
IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5oOgorCiAyMDEwLTA3LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRI
YWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3Uu
Y3BwCmluZGV4IDZjNTQ0MjQzZTQxZTYyNGVjNzg1NThiMzgzOGI3YTdiY2E2M2VmMGYuLmMzY2Rh
YTAwN2NhNjhmMDYzMTRkMjg3MzAzMTk2MzNiNmE1MWRlZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMiw3ICsyLDYgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWls
LmNvbT4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2lu
Y2x1ZGUgIlBvcHVwTWVudUhhaWt1LmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51SGFpa3Uu
aCIKIAogI2luY2x1ZGUgPEFsZXJ0Lmg+CiAjaW5jbHVkZSA8U3RyaW5nLmg+CkBAIC0zODksMjAg
KzM4Niw1IEBAIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gQ2hyb21lQ2xpZW50SGFpa3U6
OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogICAgIHJldHVybiAwOwogfQogCi1ib29sIENocm9t
ZUNsaWVudEhhaWt1OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50
SGFpa3U6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudUhhaWt1KGNsaWVudCkpOwotfQotCi1Q
YXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZVNlYXJj
aFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUhhaWt1KGNsaWVudCkpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKaW5kZXggODIwMWZhZTBiNzU3OGVmZTU0MmQ2ZDlhZmMyNjBkMDgxYWUx
MjdhNy4uNDYzZDY2NzRmM2NiMDk2MDY0M2U2N2NjZWJkNmIzYWFkNDQ3ZGUyOSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKQEAgLTEsNyAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21h
aWwuY29tPiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0xMjksMTAgKzEyOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKTsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3Q7Ci0KICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWU0ZmIyYzZiNGVkZjBlOTFlNDMyM2Nl
OWExMWIzODA4MTMxYjBlYi4uNjdiOWJiNWFlNDdjYjJiNmUwMDE5ZWM5Y2Y2YTNiMGRlZmJlOTNl
OSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOC0wMiAgSmVyZW15IE9ybG93ICA8am9ybG93
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQgb2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3Rh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MzM0NworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorCiAyMDEwLTA3LTI3ICBM
dWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCmluZGV4IDUwYzE1OWNhNDFiZTY1Y2E1MTg5NmIxMjczYjAxZjdmMGU5OWNj
YmQuLmY0NTRjNjA2ODQ0MTVjOTdjNTAyNTgzNTc3NWU1MWUwN2U5ZDQ4ZWUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjgsMTAgKzE2OCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMWEzNzM2ZTcyNGVmMGZlYWNhMzgw
MWU4NTc5YTM4NjcxYjQ0ODI0OC4uYWMzNGJjMDI2N2ZhMTIxNjA1MTZlNWJhZjI3MDUyOTkwMjNh
YzI5OSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0K
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTYg
KzY0LDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvUG9wdXBNZW51TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVNYWMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAj
aW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCi0KLQog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhp
Y3NMYXllci5oPgogI2VuZGlmCkBAIC03NDEsMjEgKzczNyw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50Ojpmb3JtRGlkQmx1cihjb25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Zm9ybURpZEJsdXJOb2RlOiksIGtp
dChjb25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihub2RlKSkpOwogfQogCi1ib29sIFdlYkNocm9t
ZUNsaWVudDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJl
dHVybiB0cnVlOwotfQotCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVNYWMoY2xpZW50KSk7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudU1hYyhj
bGllbnQpKTsKLX0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDIxMWM5ZjQ1NTMyOGM5NjUwNTg2MWM5OTM2
ZTc0MzViYjJkOGI1ZDUuLmE2ODJlMGU2NDI5ZmVkYmM3YjkyZGUzZWFjMGY0NTljOTEwMDlmOTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNwZWN1bGF0aXZlIHJldmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKwogMjAxMC0wNy0yNyAgTHVpeiBB
Z29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcAppbmRleCBhMGJhYzcyMmI2Y2E0YmE3N2MzNzk5YzA0ZWY5MTI3NjQwODg2NmM4Li4y
ZGY4Yzc4ODUxMGFlNjk1ODUxYjgzOWEyOTExZjg1M2Y5MDM1YjA4IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTEsNyArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Niw3ICs0NSw2
IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRRdC5oIgotI2luY2x1ZGUg
IlBvcHVwTWVudVF0LmgiCiAjaWYgZGVmaW5lZChRX1dTX01BRU1PXzUpCiAjaW5jbHVkZSAiUXRN
YWVtb1dlYlBvcHVwLmgiCiAjZWxzZQpAQCAtNTQsNyArNTIsNiBAQAogI2VuZGlmCiAjaW5jbHVk
ZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgotI2luY2x1
ZGUgIlNlYXJjaFBvcHVwTWVudVF0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgi
CkBAIC02MjUsMTkgKzYyMiw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmRpZFJlY2VpdmVWaWV3
cG9ydEFyZ3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJnCiAgICAgZW1pdCBt
X3dlYlBhZ2UtPnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKGhpbnRzKTsKIH0KIAotYm9vbCBDaHJv
bWVDbGllbnRRdDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudFF0
OjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVRdChjbGllbnQpKTsKLX0KLQotUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZWFyY2hQb3B1cE1lbnVRdChjbGllbnQpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmgg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBhYWIyODEz
NDFhNDYzZTZjYTE1NTFlYzBlY2MyNTMzOGRmN2VkMGUwLi45OGFiZjVmMDFmOTFmNGFmYjM0NjA2
Mjc2YTlhNzZlMzY3MjgyZDg3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBS
dXNpbiA8emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKQEAgLTE3MCwxMCArMTY5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1l
KiwgR2VvbG9jYXRpb24qKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgeyB9CiAKLSAg
ICAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7
Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJj
aFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0
OwotCiAgICAgICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogY3JlYXRlU2VsZWN0UG9wdXAoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiwg
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDJiY2M3MmYyMzAyNTMxMmJm
Mzc0NGFlYmE3ZTUxZTFjNWI2YjgyOC4uOWUxNzVmZmRjZDE3ZDU4OGQyZmMxYmQyZGZmNTFjZjNk
YWJlY2FhZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0wMiAgSmVyZW15IE9ybG93ICA8
am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQgb2YgNjQ0MjUgZHVlIHRvIENocm9taXVt
IGluc3RhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzM0NworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om1vdXNlV2hlZWwpOgorCiAyMDEwLTA3
LTMxICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIEJ1aWxkIGZpeDogV2luZG93cy4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCAwOGQ0ZWU5NDM2YmVjYWYyYzc2MzljN2VlNzUwMDBhMTIx
MjZhZDk5Li40ZTE1YmU3MGE3MDg3NTA1ZTM5N2I4ZDlmYjA1NjBkMmU5OWZjZDNhIDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xLDYgKzEs
NSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Nyw4ICs1Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudVdpbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dG
ZWF0dXJlcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIApAQCAtODc3LDE4ICs4NzQsMyBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKQogCiAjZW5k
aWYKIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNO
YXR1cmFsKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBNZW51V2luKGNsaWVudCkp
OwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7Ci19Ci0KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNlYTExYzcx
N2I5ZDA3ZjM2NmViMWZiODIyYzdiMmJlZDBkMGRlZmIuLjdhNjBmYjYyNDk5MjI1ZDY5N2JmNGZi
NTg5NGQ0YzYxZjYxNWIzZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY3LDEwICsxNjYsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlm
aWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKj4obV9ub3RpZmljYXRpb25zRGVsZWdhdGUuZ2V0KCkp
OyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDhkZmI3
ZTc2YWZiOGRhYzIwNjY0Y2ZjZTljOTBiMmMwMjBkNWI0NzYuLjQxYWUwNzk0NWViYjYwOWY5YmVi
YmJlODVjZmE4OTUwMzg2NWRhNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTEwLDcgKzExMCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luVmll
dy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
b3B1cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRo
ZW1lLmg+CkBAIC0xNjE0LDkgKzE2MTMsOSBAQCBib29sIFdlYlZpZXc6Om1vdXNlV2hlZWwoV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVsKQogICAgICAgICBU
Q0hBUiBjbGFzc05hbWVbMjU2XTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgdHJ1bmNhdGlvbiB3
b24ndCBhZmZlY3QgdGhlIGNvbXBhcmlzb24uCi0gICAgICAgIEFTU0VSVChBUlJBWVNJWkUoY2xh
c3NOYW1lKSA+IF90Y3NsZW4oUG9wdXBNZW51V2luOjpwb3B1cENsYXNzTmFtZSgpKSk7CisgICAg
ICAgIEFTU0VSVChBUlJBWVNJWkUoY2xhc3NOYW1lKSA+IF90Y3NsZW4oUG9wdXBNZW51Ojpwb3B1
cENsYXNzTmFtZSgpKSk7CiAKLSAgICAgICAgaWYgKEdldENsYXNzTmFtZShmb2N1c2VkV2luZG93
LCBjbGFzc05hbWUsIEFSUkFZU0laRShjbGFzc05hbWUpKSAmJiAhX3Rjc2NtcChjbGFzc05hbWUs
IFBvcHVwTWVudVdpbjo6cG9wdXBDbGFzc05hbWUoKSkpIHsKKyAgICAgICAgaWYgKEdldENsYXNz
TmFtZShmb2N1c2VkV2luZG93LCBjbGFzc05hbWUsIEFSUkFZU0laRShjbGFzc05hbWUpKSAmJiAh
X3Rjc2NtcChjbGFzc05hbWUsIFBvcHVwTWVudTo6cG9wdXBDbGFzc05hbWUoKSkpIHsKICAgICAg
ICAgICAgIC8vIFdlIGRvbid0IGxldCB0aGUgV2ViVmlldyBzY3JvbGwgaGVyZSBmb3IgdHdvIHJl
YXNvbnMgLSAxKSBUbyBtYXRjaCBGaXJlZm94IGJlaGF2aW9yLCAyKSBJZiB3ZSBkbyBzY3JvbGws
IHdlIGxvc2UgdGhlCiAgICAgICAgICAgICAvLyBmb2N1cyByaW5nIGFyb3VuZCB0aGUgc2VsZWN0
IG1lbnUuCiAgICAgICAgICAgICBTZXRGb2N1cyhtX3ZpZXdXaW5kb3cpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggNjZjY2UxNWYx
MGViNGVhZDIzZjQyYWZlMzJmYmRjZDk4ZGU2YmQ1Yi4uYzNiOThkYTZkZDE0Yzk3M2M5NmE3MWVi
NjE2MWRjY2FiODc5MjlhMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDgtMDIgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3BlY3VsYXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBD
aHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKKwogMjAx
MC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5jcHAKaW5kZXggOWM5MDU5NmRhN2YwMzBjNzQxNzhkZTMxOTM5MWI0
MjViY2NmOGQ0Ny4uNzY0NjQ4Y2E0NmMzNjU4YmU5Y2IwZTA1YjdlZjkzN2I0M2ZhMDY0OSAxMDA2
NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCisrKyBi
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcApAQCAtMSw2ICsxLDUg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKQEAgLTQwLDggKzM5LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJQb3B1cE1lbnVXeC5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVd4LmgiCiAjaW5j
bHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00NjcsMTkg
KzQ2NCw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1ib29sIENocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0
dXJhbCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4g
Q2hyb21lQ2xpZW50V3g6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudVd4KGNsaWVudCkpOwot
fQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudVd4KGNsaWVudCkpOwotfQotCiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oIGIvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCA1YjYwNDQ2NjVhNDZlNjZi
ZmNkYjNiNzVlNWM1NDVlNDVkMjRhNzgwLi41MmVjMGQ4MTE5ZGEyZjE2NDQ3ZmVlNTMzNDQ1NTVh
MmUzZmUyMmRhIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAg
LTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9sbGl2aWVyIDxr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0xNDMsMTAgKzE0Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRp
b24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBz
ZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgd3hXZWJWaWV3
KiBtX3dlYlZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA3ZWMxMGE1NGU5ZjJmOGIxN2ViNWVkZTU5NmU4YTdhMmQ5MDU3ZWUw
Li5lZDVkNzRiZWI1MzdjMTgyNjA5NTM4YWMxYWExMWQ4NGExOTBmZjA1IDEwMDY0NAotLS0gYS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWN1bGF0aXZlIHJl
dmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3CisKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6
IFJlbW92ZWQuCisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTA4LTAxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTQ0NGU0M2I5OWQxNzVmZWFmZDUzYWE5OTY2ZGEzMWEzNGEzMDUyYi4uMTVmZTQyMTVj
ZDM2MTE1OGViZjU3ZjBjNmUwZWU1NTk3NzZiOWRiMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2NiwxMCArMjY2LDYgQEAKIAkJQkNGNjlGQTMxMTc2
RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBX
ZWJOYXZpZ2F0aW9uRGF0YS5jcHAgKi87IH07CiAJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3MUE1MiAv
KiBXS05hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNGNjlG
QUExMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUy
IC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwICovOyB9OwotCQlEM0I5NDg0NjExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3Bw
ICovOyB9OwotCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07Ci0JCUQzQjk0ODQ4MTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5jcHAgKi87IH07Ci0JCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUu
aCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oICovOyB9OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwICovOyB9OwogCQlFMUVFNTVGNDExRjhGMTg5MDBDQ0JFRTQg
LyogV0tCdW5kbGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFFRTU1RjMxMUY4RjE4OTAwQ0NCRUU0IC8qIFdLQnVuZGxlUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC01NzAsMTAgKzU2
Niw2IEBACiAJCUJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3
MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLTmF2aWdhdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNG
NjlGQTgxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tOYXZpZ2F0aW9uRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1
cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBN
ZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDNCOTQ4NDQx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBv
cHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVFNTNEQzExRjhDRjlG
MDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyog
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRUU1NUYzMTFGOEYxODkwMENDQkVFNCAvKiBXS0J1
bmRsZVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUmFu
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2OCwxMCArODYwLDYgQEAKIAkJ
CQlCQzAzMkQ2RDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJ
CQkJMUEzRTczNjAxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
Ki8sCiAJCQkJMUEzRTczNUYxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oICovLAotCQkJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3Bw
ICovLAotCQkJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLywK
LQkJCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAq
LywKLQkJCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51Lmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkNvcmVTdXBwb3J0OwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTEzMzcsOCArMTMyNSw2IEBACiAJCQkJQkNEQjg2QzExMjAwRkI5NzAwNzI1
NEJFIC8qIFdlYlVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMjhDQzAxMjAyMzNEOTAwN0Q5
OUJDIC8qIEluamVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0NCNzVDNjEyMDNBMUNFMDAyMjJEMUIgLyogV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJj
aFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTQwLDggKzE1MjYsNiBAQAogCQkJCTFB
RTQ5ODc5MTFGRjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTQ5QTRBMTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDREI4NTgzMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmMDU4MGNlMmJmZjhj
NjMyYzU5MDA3NmMxMzBkZjVjOTE1ODMyYjU1Li40ZGVmN2M1M2U5NTFiMTVlZTAxMWRiM2MyNTA3
MTU2ZGNmOWM0ZTdiIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTEgKzM0LDkgQEAKICNpbmNs
dWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1lbnUu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oIgotI2luY2x1ZGUg
IldlYlNlYXJjaFBvcHVwTWVudS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRl
ci5oPgpAQCAtNDc4LDIxICs0NzUsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9ybURpZEJs
dXIoY29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBXZWJDaHJv
bWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKLXsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51KGNsaWVudCkp
OwotfQotCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGll
bnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTZWFyY2hQb3B1cE1lbnUo
Y2xpZW50KSk7Ci19Ci0KIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IDM1YjlmOTYwODQ5ZTVjNjMzYjIxZDJlZThhYjlmZWYwM2Q1ZDQ5YmQuLmQyNmE0
ZWU4ZWI2NGJiNTFmMGE2YzgwZTU0ZDA1ZGNjOTZmNzUxMjUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEsNiArMSw1
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2
NCwxMCArMTYzLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
Q29yZTo6SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpOwogCi0gICAg
dmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
T25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQyZjdkMzIzY2U4MjM0YmExNDI4NDYxMTcxZGZiZjJjNzYxYjA3MjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0jaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBN
ZW51Q2xpZW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQb3B1cE1lbnU6OldlYlBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXBD
bGllbnQoY2xpZW50KQotewotfQotCi1XZWJQb3B1cE1lbnU6On5XZWJQb3B1cE1lbnUoKQotewot
fQotCi0KLXZvaWQgV2ViUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3Bv
cHVwQ2xpZW50ID0gMDsKLX0KLQotdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCi17
Ci0KLX0KLQotdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQotewotfQotCi12b2lkIFdlYlBvcHVw
TWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGUyZWEzYTFjMDQzNDAwNGMxNTYyYWRiN2U3ZWI4MDc2MDEzMjk2NGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFdlYlBvcHVwTWVudV9oCi0jZGVm
aW5lIFdlYlBvcHVwTWVudV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudS5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQb3B1cE1lbnUgOiBwdWJsaWMgV2ViQ29yZTo6UG9wdXBN
ZW51IHsKLXB1YmxpYzoKLSAgICBXZWJQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
Kik7Ci0gICAgfldlYlBvcHVwTWVudSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7Ci0gICAg
dmlydHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2YXRlOgotICAg
IFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLX07Ci0KLX0KLQotI2Vu
ZGlmIC8vIFdlYlBvcHVwTWVudV9oCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNjQ5OWNiODYxYjZkNDUwY2M4MDRhMzQ1NjMxMmNjZmY3YTVkYjI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0KLSNpbmNsdWRlICJXZWJTZWFy
Y2hQb3B1cE1lbnUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlNlYXJjaFBvcHVwTWVu
dTo6V2ViU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KQot
ICAgIDogbV9wb3B1cChjbGllbnQpCi17Ci19Ci0KLVdlYkNvcmU6OlBvcHVwTWVudSogV2ViU2Vh
cmNoUG9wdXBNZW51Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQot
dm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXZWJDb3Jl
OjpBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYpCi17Ci19Ci0K
LXZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29y
ZTo6QXRvbWljU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mKQotewotfQotCi1ib29s
IFdlYlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci19CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNmZjMzk3NTc0
ZGYyZTViNTYwMDVkYjZmMTRhODQ5ODllYmYyZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNlYXJjaFBvcHVwTWVudS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaWZuZGVmIFdlYlNlYXJjaFBvcHVwTWVudV9oCi0jZGVmaW5lIFdlYlNl
YXJjaFBvcHVwTWVudV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgot
I2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViU2VhcmNoUG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7Ci1w
dWJsaWM6Ci0gICAgV2ViU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
OwotCi0gICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZp
cnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29yZTo6QXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZp
cnR1YWwgYm9vbCBlbmFibGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51IG1fcG9w
dXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBXZWJTZWFyY2hQb3B1cE1lbnVfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agppbmRleCA5YzUwY2EyZjk5OWY4ZTVjODk4ODUxODc3NTE4OWNkNjY3ZmY3MDljLi5hMzg0MmZk
OGUwMzIwMDkyYjRjZTE2ZjAzODBiMDRhODcxZGUyNWVlIDEwMDc1NQotLS0gYS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvagorKysgYi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNTgz
LDIyICs1ODMsNiBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1
cHBvcnRcV2ViSW5zcGVjdG9yQ2xpZW50LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCi0JCQkJ
PEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydFxX
ZWJQb3B1cE1lbnUuY3BwIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcV2ViUG9wdXBNZW51
LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydFxXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIg0K
LQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcV2ViU2VhcmNoUG9wdXBNZW51LmgiDQotCQkJCQk+
DQotCQkJCTwvRmlsZT4NCiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0id2luIg0KIAkJCQkJPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63218</attachid>
            <date>2010-08-02 07:47:06 -0700</date>
            <delta_ts>2010-08-02 18:18:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43347-20100802154703.patch</filename>
            <type>text/plain</type>
            <size>168027</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM0ZTZhYjI0MzNjNDM1MWUxYjRkZTM2NGNiOTU2MGY5NDcwYzE2OC4uZjQyZjliNzRhNDczNzI5
NWNlZDAyMjU5NDllM2ZiNzg3YTVhOWVhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMDcgQEAKKzIwMTAtMDgtMDIgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlY3VsYXRpdmUg
cmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lLmNwcDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OmRpc2Nvbm5lY3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51OjppdGVtSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6d2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnBvcHVwSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2V0V2FzQ2xpY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cE1lbnU6Ondhc0NsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojpz
Y3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp3aGVlbERlbHRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2Nyb2xsYmFyQ2FwdHVyaW5nTW91c2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudTo6c2Nyb2xsYmFyQ29ybmVyUHJlc2VudCk6CisgICAgICAgICogcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVCcmV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudTo6flBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNo
b3cpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCk6CisgICAgICAgICogcGxhdGZv
cm0vYnJldy9Qb3B1cE1lbnVCcmV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vYnJl
dy9TZWFyY2hQb3B1cE1lbnVCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dTo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9TZWFyY2hQb3B1cE1lbnVCcmV3
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1NlYXJjaFBvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvUG9wdXBNZW51RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6UG9w
dXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVudSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBN
ZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklz
TmF0dXJhbCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjplbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvU2VhcmNoUG9wdXBNZW51RWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BvcHVwTWVudUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OlBvcHVwTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6On5Qb3B1cE1lbnUpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6
aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVy
YWwpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjptZW51SXRlbUFjdGl2YXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Om1lbnVVbm1hcHBlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnU6Om1lbnVQb3NpdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudTo6bWVudVJlbW92ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Qb3B1
cE1lbnVHdGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VhcmNoUG9wdXBN
ZW51R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9w
dXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNl
YXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L1BvcHVwTWVudUhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudUhhaWt1OjpQb3B1cE1lbnVIYWlrdSk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cE1lbnVIYWlrdTo6flBvcHVwTWVudUhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVw
TWVudTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6dXBkYXRl
RnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCk6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFp
a3UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9TZWFyY2hQb3B1cE1lbnVI
YWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVw
TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFy
Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L1NlYXJjaFBvcHVwTWVudUhhaWt1Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1hYy5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnU6OlBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6On5Qb3B1cE1lbnUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpQb3B1cE1lbnU6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hv
dyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNl
bnRTZWFyY2hlcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hv
dyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmhpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0QWJz
dHJhY3RXZWJQb3B1cC5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6UG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6flBvcHVwTWVudSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnBvcHVwQ2xhc3NOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzZXRGb2N1c2VkSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp2aXNpYmxlSXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51OjpsaXN0SW5kZXhBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudTo6Zm9jdXNlZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6Zm9j
dXNGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmZvY3VzTGFzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBN
ZW51Ojp1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmludmFsaWRhdGVJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6Y2xpZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnU6OmluY3JlbWVudFdoZWVsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBNZW51OjpyZWR1Y2VXaGVlbERlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dTo6c2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1X
cml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp2YWx1ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnJlZ2lzdGVyQ2xhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51OjpQb3B1cE1lbnVXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVw
TWVudTo6d25kUHJvYyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvUG9wdXBNZW51V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1
cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnU6Ok9uTWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Omhp
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvU2VhcmNoUG9w
dXBNZW51V3guaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRTZWFyY2hSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzaG93UG9w
dXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRl
UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1
cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oOgorCiAyMDEwLTA4LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGM1NTdhYjFjNGE3NmMzMjUyOThkOGJhNGQ5OTcyYWVlNDAxMDRiZTkuLmQzNWI3NGEy
YmQ2YjI5YWRjMThjZTM3NzMzYTAyZjRjNDQ0Y2VmZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ2NSw3ICsyNDY1
LDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3Rr
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBcCi0JV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
aCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcCBcCkBAIC0yNDc0LDcg
KzI0NzMsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdH
dGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuY3BwIFwK
LQlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2hhcmVkVGltZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Tb3VuZEd0ay5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggY2VlYWQzMWRiZTMwOWRmOWE2ZGQzYTZkNTdmM2VkNTE0YTZhMWVmNi4uOWYz
M2UzNmZmMDZjOWJiZDUyMjNhOTQ0NGI1MGY4ZDljNmNlYWE5MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNTAsNyAr
MjUwLDYgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2UyN2NoZWNrSW50ZWdyaXR5QmVmb3Jl
T3BlbmluZ0V2CiBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTRvcGVuRVJLTlNfNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlNWNsb3NlRXYKIF9fWk43V2ViQ29yZTEySWNvbkRh
dGFiYXNlOXNldENsaWVudEVQTlNfMThJY29uRGF0YWJhc2VDbGllbnRFCi1fX1pON1dlYkNvcmUx
MlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUHJp
bnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5TXzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKIF9f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTZpc1BhZ2VCb3hWaXNpYmxlRVBOU181RnJhbWVFaQpA
QCAtNDEyLDcgKzQxMSw2IEBAIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUEtjUmkK
IF9fWk43V2ViQ29yZTE4ZGVwcmVjYXRlZFBhcnNlVVJMRVJLTlNfNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dl
YkNvcmUxOHBsdWdpblNjcmlwdE9iamVjdEVQTjNKU0M5RXhlY1N0YXRlRVBOU18xM0pTSFRNTEVs
ZW1lbnRFCi1fX1pON1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVu
dUNsaWVudEUKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0
aW9uc0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMTdz
dXNwZW5kQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOU182
U3RyaW5nRWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMjA0ODJiYmUwZDMzOWI5OGQxMTY4MzMyYTM1MjlmMWVkMmI2NTcyZi4u
ZjUwMmNiNGExY2FmMjMzODEzMWY2MjIxMzI4N2EyODJkNjgwY2I5ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIxMzAsNyAr
MjEzMCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Nl
YXJjaFBvcHVwTWVudUNocm9taXVtLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vU2hhcmVkVGltZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1NvdW5kQ2hyb21pdW1Qb3NpeC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1NvdW5kQ2hyb21pdW1XaW4uY3BwJywKQEAgLTI2MjMsNyArMjYyMiw2IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0nLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbScsCi0gICAgICAgICAgICAncGxhdGZvcm0vbWFj
L1BvcHVwTWVudU1hYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbScsCkBAIC0y
NjMxLDcgKzI2MjksNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21hYy9TZWFyY2hQb3B1cE1lbnVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21hYy9TaGFyZWRCdWZmZXJNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9TaGFy
ZWRUaW1lck1hYy5tbScsCkBAIC0yNzgyLDcgKzI3NzksNiBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
cXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1BvcHVw
TWVudVF0LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vcXQvUVdlYlBvcHVwLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vcXQvUVdlYlBvcHVwLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuY3BwJywKQEAgLTI3OTMsNyArMjc4OSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1Njcm9s
bGJhclRoZW1lUXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51
UXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9TZWFyY2hQb3B1cE1lbnVRdC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Tb3VuZFF0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCBmZTI2MWFjYmZjNzJiYmRjMzFmZTBkZmY2MWI2YWI2ODlm
Y2ZlYTE0Li4xMjhhYzRlNWFiOTkwNzc0M2JmY2ZkZjBmYjBkMjliZjRhZWE5ZTJjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE3
MDksNyArMTcwOSw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmggXAog
ICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIFwKLSAgICBwbGF0Zm9ybS9Qb3B1cE1l
bnUuaCBcCiAgICAgcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBcCiAgICAgcGxhdGZvcm0vcXQv
UVdlYlBhZ2VDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgg
XApAQCAtMTcxOSw3ICsxNzE4LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vU2Nyb2xs
YmFyLmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggXAogICAgIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaCBcCi0gICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggXAog
ICAgIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIFwKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaCBcCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBcCkBAIC0zMjk5
LDggKzMyOTcsNiBAQCBIRUFERVJTICs9IFwKICAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRXJyb3JzLmggXAogICAgIC4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIFwKICAgICAuLi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggXAotICAgIC4uL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBcCi0gICAgLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oIFwKICAg
ICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEu
aCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBcCiAg
ICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCkBAIC0zMzczLDgg
KzMzNjksNiBAQCBTT1VSQ0VTICs9IFwKICAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIFwKICAgICAuLi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBcCiAgICAgLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNs
aWVudC5jcHAgXAotICAgIC4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
b3B1cE1lbnUuY3BwIFwKLSAgICAuLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3F0L1dlYkVycm9yc1F0LmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCBcCiAgICAgLi4vV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDMyMjIwYTAzYTdkMDU0ZjlkMTY2MzczMjE4MzFlZDllYWQ1OWI3
NTEuLjdmZTg3MDU4YzUzZDE2OTA2MzI1OWJlZTIyOGVmMDg0MjM1ZWMwZWEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjM3MjAsMTAgKzIzNzIwLDYgQEAKIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXHdpblxQb3B1cE1lbnVXaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8Rmls
ZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMjM3NDQsMTAgKzIzNzQwLDYgQEAK
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXHdpblxTZWFyY2hQb3B1cE1lbnVXaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxl
Pg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cU2hhcmVk
QnVmZmVyV2luLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGY0OTcyNmQxMmZlYzFkMmRlNWZkMDA3ZmE3
MDM3OTA1ZDQ3OGYwZS4uODlkYTRhYTk2ZTc3ODA1NTAxNDg3ZTQ0N2U4YjA1MDJiZjVhYjgwNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyLDcgKzQy
LDcgQEAKIAkJMDY1QUQ0RjUwQjBDMkVEQTAwNUEyQjFEIC8qIENvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjVBRDRGMjBC
MEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQg
LyogQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA2NUFENEYzMEIwQzJFREEwMDVBMkIxRCAvKiBDb250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkwNjVBRDRGNzBCMEMyRURBMDA1QTJCMUQgLyogQ29u
dGV4dE1lbnVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNjVBRDRGNDBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDb250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MDY2OEUxOEIwQUREOTYyNDAwNDEyOEUwIC8qIFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OEUxODkwQUREOTYyNDAwNDEyOEUwIC8q
IFBvcHVwTWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTA2NjhFMThCMEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NjhFMTg5MEFERDk2MjQwMDQx
MjhFMCAvKiBQb3B1cE1lbnUuaCAqLzsgfTsKIAkJMDY2OEUxOTAwQUREOTY0MDAwNDEyOEUwIC8q
IFBvcHVwTWVudU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA2NjhFMThFMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1cE1lbnVNYWMubW0gKi87IH07
CiAJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2Qzc3MkEwQUI2MDNCNzAwMjM4
Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDY2Qzc3MkQwQUI2MDNEMjAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2Qzc3
MkMwQUI2MDNEMjAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyTWFjLm1tICovOyB9OwpAQCAtMzU5Niwx
MiArMzU5NiwxMiBAQAogCQlBQjRDQjRFQjBCOEJEQTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uaCAqLzsgfTsKIAkJQUI2N0QxQTgwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250
cm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFC
NjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5jcHAgKi87IH07CiAJ
CUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI2N0QxQTcwOTdGM0FFMzAw
RjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmggKi87IH07Ci0JCUFCNzE3MDg5MEIzMTE4MDgw
MDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFCNzE3MDg4MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQb3B1
cE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBQjcxNzA4OTBCMzExODA4MDAxNzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjcxNzA4ODBCMzExODA4MDAx
NzEyM0UgLyogU2VhcmNoUG9wdXBNZW51LmggKi87IH07CiAJCUFCNzE3MEEwMEIzMTE5M0IwMDE3
MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQjcxNzA5RjBCMzExOTNCMDAxNzEyM0UgLyogU2VhcmNoUG9w
dXBNZW51TWFjLm1tICovOyB9OwogCQlBQkFGMjIwODBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21l
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJB
RjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1hYy5tbSAqLzsgfTsKIAkJQUJCNTQxOUUw
QUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJCNTQxOUMwQUNEREZFNDAwMjgyMEVCIC8qIFJl
bmRlckxpc3RCb3guY3BwICovOyB9OwogCQlBQkI1NDE5RjBBQ0RERkU0MDAyODIwRUIgLyogUmVu
ZGVyTGlzdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUJCNTQxOUQwQUNEREZFNDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guaCAqLzsgfTsKLQkJ
QUJDMTI4NzcwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJDMTI4NzYwQjMzQUE2RDAwQzY5
M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUFCQzEyODc3MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFC
QzEyODc2MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJQUJE
REZFNzkwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRERGRTczMEE1QzZFNkYwMEEzRTEx
RCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi87IH07CiAJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTEx
RCAvKiBSZW5kZXJNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0Lmgg
Ki87IH07CiAJCUFCRkU3RTEyMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZF
N0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OwpA
QCAtNTAyMiw4ICs1MDIyLDYgQEAKIAkJRDIzQ0E1NUQwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQyM0NBNTVDMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi87IH07
CiAJCUQyM0NBNTVGMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTVFMEFCMEVB
QjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRDIzQ0E1NkMwQUIw
RUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjNDQTU2QjBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VF
eGNlcHRpb24uaCAqLzsgfTsKLQkJRDM5RDAwNkQxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVu
dU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDM5
RDAwNkMxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVudU1hYy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUQzOUQwMDlEMTFGOTA3RTYwMDYwNDFG
MiAvKiBTZWFyY2hQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQzOUQwMDlDMTFGOTA3RTYwMDYwNDFGMiAvKiBTZWFyY2hQb3B1cE1l
bnVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlEOEI2MTUyRjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyog
Q29va2llLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJREIyM0MyQ0IwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkM5MEE1
MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgKi87IH07CiAJCURCMjND
MkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREIyM0MyQ0EwQTUwOEQyOTAwMjQ4
OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggKi87IH07CkBAIC0xMDczNiw4ICsxMDczNCw2
IEBACiAJCUQyM0NBNTVDMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JhbmdlRXhjZXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTVFMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1Jh
bmdlRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JhbmdlRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIzQ0E1
NkIwQUIwRUI4RDAwNTEwOEE1IC8qIFJhbmdlRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMzlEMDA2QzExRjhFMzA4MDA2MDQxRjIgLyogUG9wdXBNZW51TWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwTWVudU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEMzlEMDA5QzExRjkwN0U2MDA2MDQxRjIgLyogU2VhcmNoUG9wdXBN
ZW51TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVu
dU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEOEI2MTUyRTEwMzI0OTUxMDBD
ODU1NEEgLyogQ29va2llLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQjIzQzJDOTBBNTA4RDI5MDAyNDg5
RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluZGVudE91dGRlbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29t
bWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzMDgsMTIgKzEyMzA0LDEw
IEBACiAJCQkJNEIyNzA5ODEwQUYyRTVFMDAwNjUxMjdGIC8qIFBhc3RlYm9hcmRNYWMubW0gKi8s
CiAJCQkJOTM1QzQ3NkYwOUFDNEQ3MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudE1hYy5t
bSAqLywKIAkJCQlCQzk0RDEwNzBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMu
bW0gKi8sCi0JCQkJRDM5RDAwNkMxMUY4RTMwODAwNjA0MUYyIC8qIFBvcHVwTWVudU1hYy5oICov
LAogCQkJCTA2NjhFMThFMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1cE1lbnVNYWMubW0gKi8sCiAJ
CQkJRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgKi8s
CiAJCQkJNDQ3RDY5MDEwRkE2MjY4MTAwMTVDQ0IxIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oICovLAogCQkJCTQ0N0Q2OTAyMEZBNjI2ODEwMDE1Q0NCMSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MubW0gKi8sCi0JCQkJRDM5RDAwOUMxMUY5MDdFNjAwNjA0MUYyIC8qIFNlYXJjaFBv
cHVwTWVudU1hYy5oICovLAogCQkJCTFDRTI0Rjk2MEQ3Q0FGMEUwMDdFMDRDMiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gKi8sCiAJCQkJQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJh
ci5jcHAgKi8sCiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1l
TWFjLmggKi8sCkBAIC0xOTk2MSw4ICsxOTk1NSw2IEBACiAJCQkJQzU3MkVFMEUxMjAxQzczNjAw
N0Q4RjgyIC8qIElEQkluZGV4QmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzJF
RTBGMTIwMUM3MzYwMDdEOEY4MiAvKiBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM1NzJFRTFGMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggaW4g
SGVhZGVycyAqLywKLQkJCQlEMzlEMDA2RDExRjhFMzA4MDA2MDQxRjIgLyogUG9wdXBNZW51TWFj
LmggaW4gSGVhZGVycyAqLywKLQkJCQlEMzlEMDA5RDExRjkwN0U2MDA2MDQxRjIgLyogU2VhcmNo
UG9wdXBNZW51TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0
MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBi
YTc4NDFjNDllNjUyYjQzMTMxNjQxMTk0YTdiMjI0YTBiNDQ0NzVjLi5lY2EwMWU4MTFhY2U4MGRl
MDQyZjE2M2ZhNjdhNjhhYTNiYTVlZTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMSw3ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0
Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw5ICszOSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5IYWx0ZXJDbGllbnQu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0j
aW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKICNpZiBVU0UoR0xFUzJfUkVOREVSSU5HKQog
I2luY2x1ZGUgIkdMRVMyQ29udGV4dC5oIgpAQCAtNjMsMjUgKzYwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBFbXB0eVBvcHVwTWVudSA6IHB1YmxpYyBQb3B1cE1lbnUgewot
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcq
LCBpbnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpIHt9Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQo
KSB7fQotfTsKLQotY2xhc3MgRW1wdHlTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgU2VhcmNoUG9w
dXBNZW51IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgeyBy
ZXR1cm4gJm1fcG9wdXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikge30KLSAgICB2aXJ0dWFs
IHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJp
bmc+Jikge30KLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0K
LXByaXZhdGU6Ci0gICAgRW1wdHlQb3B1cE1lbnUgbV9wb3B1cDsKLX07Ci0KIGNsYXNzIEVtcHR5
Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RW1wdHlDaHJvbWVDbGllbnQoKSB7IH0KQEAgLTEzNCwxMCArMTEyLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1w
dHlQb3B1cE1lbnUoKSk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgeyByZXR1cm4g
YWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOyB9Ci0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCB0YWJzVG9MaW5rcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGJmZjAx
MDAyNTdiMThmZjNmNGVmYWRmZDk2Y2YwMWE0ODViMWU5ODIuLjBjNjY5MjU0MmNiMjY4ODc3NWUz
ZDdlZjI4OWJjYzAyY2Y3NmY1NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTQ4MiwxOSArNDgyLDUgQEAgYm9vbCBDaHJvbWVDbGllbnQ6OnBhaW50Q3VzdG9tU2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIENocm9tZTo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQotewotICAgIHJldHVybiBtX2NsaWVudC0+c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwoKTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVu
dC0+Y3JlYXRlUG9wdXBNZW51KGNsaWVudCk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBN
ZW51PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQtPmNyZWF0ZVNlYXJjaFBvcHVwTWVudShj
bGllbnQpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMzBlZGYyODZiNWQw
MTY0MDhhYTU2ZmQ5YWU2YWQyNzI1NjE3YmRlMC4uNTM3NDY4YTBmMzY3ZWJiZTU5ZDZiMWY4YWM1
MGZhM2VmNmNlMzkwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsOCArMjQsNiBAQAogI2luY2x1
ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTQ3LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKICAgICBjbGFzcyBTdHJpbmc7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwpAQCAtMTQ4LDEwICsxNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7IAogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBzZWxl
Y3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgICAgICBQYXNzUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgICAg
ICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdl
OwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDI4
ZTBiNGZmOWZjZjUxNDgzMjUyOGQ5MWZkMTk2ZmQxNzM1MjgxZTguLjM5YTQxYWUzNWU5YThhODU0
NzFjMWI2MDFmZmU4YjcyZmI0NjE3MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTEsNiArMSw1IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNywxMCArMjYsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJRdWlya3MuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAi
UG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNTgsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
Tm9kZTsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotICAgIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV2lkZ2V0
OwogCkBAIC0yNjcsMTAgKzI2Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSA9IDA7CiAjZW5kaWYKIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1
cE1lbnVDbGllbnQqKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCA9IDA7Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgp
IHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnUuaAppbmRleCA4ZWJiYTAzMWZhZjg4MWMyNjJkM2U5
N2M1NjQzN2RhZTgzZGEzMjFhLi5kOWQyNzQwYjcxY2Q0ODI4YmE2NDFmZThhMmVhMTQxOGFjYmVi
NDdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDIyICsyMSwxODAgQEAKICNpZm5kZWYgUG9w
dXBNZW51X2gKICNkZWZpbmUgUG9wdXBNZW51X2gKIAorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNQb3BVcEJ1dHRv
bkNlbGw7CisjZWxzZQorY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CisjZW5kaWYKKyNlbGlmIFBM
QVRGT1JNKFdJTikKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBIV05EX18q
IEhXTkQ7Cit0eXBlZGVmIHN0cnVjdCBIRENfXyogSERDOwordHlwZWRlZiBzdHJ1Y3QgSEJJVE1B
UF9fKiBIQklUTUFQOworI2VsaWYgUExBVEZPUk0oUVQpCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBRdEFic3RyYWN0V2ViUG9wdXA7Cit9CisjZWxpZiBQTEFURk9STShHVEspCit0eXBlZGVm
IHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwordHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVtIEd0
a01lbnVJdGVtOwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7CisjaW5jbHVk
ZSAiR1JlZlB0ckd0ay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2VsaWYgUExBVEZPUk0oV1gpCisjaWZkZWYgX19XWE1TV19fCisjaW5jbHVkZSA8d3gv
bXN3L3dpbnVuZGVmLmg+CisjZW5kaWYKK2NsYXNzIHd4TWVudTsKKyNpbmNsdWRlIDx3eC9kZWZz
Lmg+CisjaW5jbHVkZSA8d3gvZXZlbnQuaD4KKyNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQorI2lu
Y2x1ZGUgIlBvcHVwTWVudVByaXZhdGUuaCIKKyNlbGlmIFBMQVRGT1JNKEhBSUtVKQorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUG9wdXBNZW51SGFpa3U7Cit9CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBJbnRSZWN0OworY2xhc3Mg
U2Nyb2xsYmFyOwogCi1jbGFzcyBQb3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3B1cE1l
bnU+IHsKK2NsYXNzIFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFBvcHVwTWVudT4KKyNp
ZiBQTEFURk9STShXSU4pCisgICAgICAgICAgICAgICAgLCBwcml2YXRlIFNjcm9sbGJhckNsaWVu
dAorI2VuZGlmCisjaWYgUExBVEZPUk0oV1gpCisgICAgICAgICAgICAgICAgLCBwdWJsaWMgd3hF
dnRIYW5kbGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Qb3B1cE1lbnUoKSB7
fQotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQg
aW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RD
bGllbnQoKSA9IDA7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGUoUG9w
dXBNZW51Q2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnUoY2xp
ZW50KSk7IH0KKyAgICB+UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBkaXNjb25uZWN0Q2xp
ZW50KCkgeyBtX3BvcHVwQ2xpZW50ID0gMDsgfQorCisgICAgdm9pZCBzaG93KGNvbnN0IEludFJl
Y3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOworICAgIHZvaWQgaGlkZSgpOworCisgICAgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIAorICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudDsgfQorCisgICAgc3RhdGljIGJvb2wgaXRl
bVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBT
Y3JvbGxiYXIqIHNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9
CisKKyAgICBzdGF0aWMgTFBDVFNUUiBwb3B1cENsYXNzTmFtZSgpOworCisgICAgYm9vbCB1cCh1
bnNpZ25lZCBsaW5lcyA9IDEpOworICAgIGJvb2wgZG93bih1bnNpZ25lZCBsaW5lcyA9IDEpOwor
CisgICAgaW50IGl0ZW1IZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1IZWlnaHQ7IH0KKyAg
ICBjb25zdCBJbnRSZWN0JiB3aW5kb3dSZWN0KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dSZWN0
OyB9CisgICAgSW50UmVjdCBjbGllbnRSZWN0KCkgY29uc3Q7CisKKyAgICBpbnQgdmlzaWJsZUl0
ZW1zKCkgY29uc3Q7CisKKyAgICBpbnQgbGlzdEluZGV4QXRQb2ludChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OworCisgICAgYm9vbCBzZXRGb2N1c2VkSW5kZXgoaW50IGluZGV4LCBib29sIGhvdFRy
YWNraW5nID0gZmFsc2UpOworICAgIGludCBmb2N1c2VkSW5kZXgoKSBjb25zdDsKKyAgICB2b2lk
IGZvY3VzRmlyc3QoKTsKKyAgICB2b2lkIGZvY3VzTGFzdCgpOworCisgICAgdm9pZCBwYWludChj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgPSAwKTsKKworICAgIEhXTkQgcG9wdXBIYW5k
bGUoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwOyB9CisKKyAgICB2b2lkIHNldFdhc0NsaWNrZWQo
Ym9vbCBiID0gdHJ1ZSkgeyBtX3dhc0NsaWNrZWQgPSBiOyB9CisgICAgYm9vbCB3YXNDbGlja2Vk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNDbGlja2VkOyB9CisKKyAgICB2b2lkIHNldFNjcm9sbE9m
ZnNldChpbnQgb2Zmc2V0KSB7IG1fc2Nyb2xsT2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgaW50IHNj
cm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0OyB9CisKKyAgICBib29s
IHNjcm9sbFRvUmV2ZWFsU2VsZWN0aW9uKCk7CisKKyAgICB2b2lkIGluY3JlbWVudFdoZWVsRGVs
dGEoaW50IGRlbHRhKTsKKyAgICB2b2lkIHJlZHVjZVdoZWVsRGVsdGEoaW50IGRlbHRhKTsKKyAg
ICBpbnQgd2hlZWxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YTsgfQorCisgICAg
Ym9vbCBzY3JvbGxiYXJDYXB0dXJpbmdNb3VzZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFy
Q2FwdHVyaW5nTW91c2U7IH0KKyAgICB2b2lkIHNldFNjcm9sbGJhckNhcHR1cmluZ01vdXNlKGJv
b2wgYikgeyBtX3Njcm9sbGJhckNhcHR1cmluZ01vdXNlID0gYjsgfQorI2VuZGlmCisKK3Byb3Rl
Y3RlZDoKKyAgICBQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kik7CisgICAgCitwcml2YXRlOgor
ICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKKyAgICAKKyNpZiBQTEFURk9STShN
QUMpCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgcG9wdWxhdGUoKTsKKworICAgIFJldGFp
blB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAg
IFF0QWJzdHJhY3RXZWJQb3B1cCogbV9wb3B1cDsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAgICAv
LyBTY3JvbGxCYXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKFNjcm9sbGJh
ciopOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJDb3JuZXJQcmVzZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZvaWQgY2FsY3VsYXRlUG9zaXRpb25BbmRT
aXplKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqKTsKKyAgICB2b2lkIGludmFsaWRhdGVJdGVt
KGludCBpbmRleCk7CisKKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQb3B1cE1lbnVXbmRQ
cm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICBMUkVTVUxUIHduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOworICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xhc3MoKTsKKworICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1f
c2Nyb2xsYmFyOworICAgIEhXTkQgbV9wb3B1cDsKKyAgICBIREMgbV9EQzsKKyAgICBIQklUTUFQ
IG1fYm1wOworICAgIGJvb2wgbV93YXNDbGlja2VkOworICAgIEludFJlY3QgbV93aW5kb3dSZWN0
OworICAgIGludCBtX2l0ZW1IZWlnaHQ7CisgICAgaW50IG1fc2Nyb2xsT2Zmc2V0OworICAgIGlu
dCBtX3doZWVsRGVsdGE7CisgICAgaW50IG1fZm9jdXNlZEluZGV4OworICAgIGJvb2wgbV9zY3Jv
bGxiYXJDYXB0dXJpbmdNb3VzZTsKKyAgICBib29sIG1fc2hvd1BvcHVwOworI2VsaWYgUExBVEZP
Uk0oR1RLKQorICAgIEludFBvaW50IG1fbWVudVBvc2l0aW9uOworICAgIEdSZWZQdHI8R3RrTWVu
dT4gbV9wb3B1cDsKKyAgICBIYXNoTWFwPEd0a1dpZGdldCosIGludD4gbV9pbmRleE1hcDsKKyAg
ICBzdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2YXRlZChHdGtNZW51SXRlbSogaXRlbSwgUG9wdXBN
ZW51Kik7CisgICAgc3RhdGljIHZvaWQgbWVudVVubWFwcGVkKEd0a1dpZGdldCosIFBvcHVwTWVu
dSopOworICAgIHN0YXRpYyB2b2lkIG1lbnVQb3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50
KiwgZ2ludCosIGdib29sZWFuKiwgUG9wdXBNZW51Kik7CisgICAgc3RhdGljIHZvaWQgbWVudVJl
bW92ZUl0ZW0oR3RrV2lkZ2V0KiwgUG9wdXBNZW51Kik7CisjZWxpZiBQTEFURk9STShFRkwpIHx8
IFBMQVRGT1JNKEJSRVdNUCkKKyAgICBGcmFtZVZpZXcqIG1fdmlldzsKKyNlbGlmIFBMQVRGT1JN
KFdYKQorICAgIHd4TWVudSogbV9tZW51OworICAgIHZvaWQgT25NZW51SXRlbVNlbGVjdGVkKHd4
Q29tbWFuZEV2ZW50Jik7CisjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBQb3B1cE1lbnVQ
cml2YXRlIHA7CisjZWxpZiBQTEFURk9STShIQUlLVSkKKyAgICBQb3B1cE1lbnVIYWlrdSogbV9t
ZW51OworI2VuZGlmCisKIH07CiAKIH0KIAotI2VuZGlmIC8vIFBvcHVwTWVudV9oCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IGQxZWNkMGZmY2U4Mjc2ZTc1ZWFhMmMx
MTIzZTlkOWIzZWJiOWMzZmIuLjQyODVjZGY5NmI5ZDlhZjk1NzNhMzZkOWM4YWZjNGI1ZDdhNjJm
ZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMjEgKzIzLDI0IEBACiAK
ICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QXRvbWljU3RyaW5nOwogCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTZWFyY2hQb3B1cE1lbnU+IHsKK2NsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBQb3B1
cE1lbnUgewogcHVibGljOgotICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgpIHt9Ci0gICAg
dmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51KGNsaWVudCkpOyB9CisKKyAgICB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwor
CisgICAgYm9vbCBlbmFibGVkKCk7CisgICAgCitwcml2YXRlOgorICAgIFNlYXJjaFBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqKTsKIH07CiAKIH0KIAotI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVu
dV9oCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVC
cmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9Qb3B1cE1lbnVCcmV3LmNwcAppbmRleCAx
OGIyYjQ1MTE4YjRmOGYxOGE0ZDE1N2M5ZmY4ZWM1MTUxYzIyZDQ3Li5lYjAzYzY2MjJjNGFlNDNi
ZTA0MWNhMjZmNWNjOGM4ZjcwZWNiNjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Jy
ZXcvUG9wdXBNZW51QnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L1BvcHVwTWVu
dUJyZXcuY3BwCkBAIC00LDcgKzQsNiBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKICAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNyArMjMsNyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVCcmV3LmgiCisjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnRCcmV3LmgiCkBAIC0zMywyNSArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Qb3B1cE1lbnVCcmV3OjpQb3B1cE1lbnVCcmV3KFBvcHVwTWVudUNsaWVudCogbWVudUxpc3Qp
CitQb3B1cE1lbnU6OlBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIG1lbnVMaXN0KQogICAgIDog
bV9wb3B1cENsaWVudChtZW51TGlzdCkKICAgICAsIG1fdmlldygwKQogewogfQogCi1Qb3B1cE1l
bnVCcmV3Ojp+UG9wdXBNZW51QnJldygpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAg
IC8vIFRlbGwgY2xpZW50IHRvIGRlc3Ryb3kgZGF0YSByZWxhdGVkIHRvIHRoaXMgcG9wdXAgc2lu
Y2UgdGhpcyBvYmplY3QgaXMKICAgICAvLyBnb2luZyBhd2F5LgogICAgIGhpZGUoKTsKIH0KIAot
dm9pZCBQb3B1cE1lbnVCcmV3OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xp
ZW50ID0gMDsKLX0KLQotdm9pZCBQb3B1cE1lbnVCcmV3OjpzaG93KGNvbnN0IEludFJlY3QmIHJl
Y3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OnNob3coY29u
c3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7CiAgICAgQVNT
RVJUKG1fcG9wdXBDbGllbnQpOwogICAgIENocm9tZUNsaWVudEJyZXcqIGNocm9tZUNsaWVudCA9
IHN0YXRpY19jYXN0PENocm9tZUNsaWVudEJyZXcqPih2aWV3LT5mcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKSk7CkBAIC02MSw3ICs1NSw3IEBAIHZvaWQgUG9wdXBNZW51QnJldzo6
c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKICAg
ICBjaHJvbWVDbGllbnQtPmNyZWF0ZVNlbGVjdFBvcHVwKG1fcG9wdXBDbGllbnQsIGluZGV4LCBy
ZWN0KTsKIH0KIAotdm9pZCBQb3B1cE1lbnVCcmV3OjpoaWRlKCkKK3ZvaWQgUG9wdXBNZW51Ojpo
aWRlKCkKIHsKICAgICBBU1NFUlQobV92aWV3KTsKICAgICBDaHJvbWVDbGllbnRCcmV3KiBjaHJv
bWVDbGllbnQgPSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRCcmV3Kj4obV92aWV3LT5mcmFtZSgp
LT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKSk7CkBAIC03MCwxOCArNjQsMTQgQEAgdm9pZCBQ
b3B1cE1lbnVCcmV3OjpoaWRlKCkKICAgICBjaHJvbWVDbGllbnQtPmRlc3Ryb3lTZWxlY3RQb3B1
cCgpOwogfQogCi12b2lkIFBvcHVwTWVudUJyZXc6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQg
UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgY2xpZW50KCktPnNldFRleHRG
cm9tSXRlbShjbGllbnQoKS0+c2VsZWN0ZWRJbmRleCgpKTsKIH0KIAotLy8gVGhpcyBjb2RlIG11
c3QgYmUgbW92ZWQgdG8gdGhlIGNvbmNyZXRlIGJyZXcgQ2hyb21lQ2xpZW50IHRoYXQgaXMgbm90
IGluIHJlcG9zaXRvcnkuCi0vLyBJIGtlcHQgdGhpcyBjb2RlIGNvbW1lbnRlZCBvdXQgaGVyZSB0
byBwcmV2ZW50IGxvb3NpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHdoYXQKLS8vIG11c3QgYmUgdGhl
IHJldHVybiB2YWx1ZSBmb3IgYnJldy4KLQotLy8gYm9vbCBQb3B1cE1lbnVCcmV3OjppdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi0vLyB7Ci0vLyAgICAgcmV0dXJuIHRydWU7Ci0vLyB9
Citib29sIFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQoreworICAg
IHJldHVybiB0cnVlOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvUG9wdXBNZW51QnJldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9i
cmV3L1BvcHVwTWVudUJyZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxNzFk
ZjNmMTA1OWRjZTE4NTI3NjUwMTk1MmI0ZWU4YjMzMWEwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvUG9wdXBNZW51
QnJldy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgUG9wdXBNZW51QnJld19oCi0jZGVmaW5lIFBvcHVwTWVudUJyZXdfaAotCi0jaW5jbHVk
ZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBvcHVwTWVudS5oIgotI2luY2x1ZGUgIlBvcHVwTWVu
dUNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1j
bGFzcyBTY3JvbGxiYXI7Ci0KLWNsYXNzIFBvcHVwTWVudUJyZXcgOiBwdWJsaWMgUG9wdXBNZW51
IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVCcmV3KFBvcHVwTWVudUNsaWVudCopOwotICAgIH5Q
b3B1cE1lbnVCcmV3KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0Jiwg
RnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9Ci0KLSAgICBQb3B1cE1lbnVDbGllbnQqIG1f
cG9wdXBDbGllbnQ7Ci0gICAgRnJhbWVWaWV3KiBtX3ZpZXc7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBQb3B1cE1lbnVCcmV3X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9TZWFy
Y2hQb3B1cE1lbnVCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9TZWFyY2hQb3B1cE1l
bnVCcmV3LmNwcAppbmRleCBjMjJjYjc4MjA4YmI0NTBkODlkNTQ3NWUyMjQzZDc4ZDk5MjdhYjNj
Li43ODBjN2U1ZDY2ZDRlNTEzYTg0MzVjZmUwNmU4YTkxMGFkODRjNmUzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvU2VhcmNoUG9wdXBNZW51QnJldy5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9icmV3L1NlYXJjaFBvcHVwTWVudUJyZXcuY3BwCkBAIC0xLDYgKzEsNSBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMzQgKzI0LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudUJyZXcuaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTYXZlIHRoZSBwYXN0IHNlYXJjaGVzIHN0b3JlZCBpbiAn
c2VhcmNoSXRlbXMnIHRvIGEgZGF0YWJhc2UgYXNzb2NpYXRlZCB3aXRoICduYW1lJwotdm9pZCBT
ZWFyY2hQb3B1cE1lbnVCcmV3OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBv
cHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQogewogfQogCiAvLyBMb2FkIHBhc3Qgc2Vh
cmNoZXMgYXNzb2NpYXRlZCB3aXRoICduYW1lJyBmcm9tIHRoZSBkYXRhYmFzZSB0byAnc2VhcmNo
SXRlbXMnCi12b2lkIFNlYXJjaFBvcHVwTWVudUJyZXc6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQg
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCiB7CiB9CiAKIC8vIENyZWF0ZSBhIHNl
YXJjaCBwb3B1cCBtZW51IC0gbm90IHN1cmUgd2hhdCBlbHNlIHdlIGhhdmUgdG8gZG8gaGVyZQot
U2VhcmNoUG9wdXBNZW51QnJldzo6U2VhcmNoUG9wdXBNZW51QnJldyhQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50
KQogewogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudUJyZXc6OmVuYWJsZWQoKQorYm9vbCBTZWFy
Y2hQb3B1cE1lbnU6OmVuYWJsZWQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUG9wdXBN
ZW51KiBTZWFyY2hQb3B1cE1lbnVCcmV3Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9w
b3B1cDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L1NlYXJjaFBvcHVwTWVudUJyZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJl
dy9TZWFyY2hQb3B1cE1lbnVCcmV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4
ZWExMDJmMjczOTcxNjlkYmYwNDQ3MWRjZjNkZTU0OTlkMWQwYTYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L1NlYXJj
aFBvcHVwTWVudUJyZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVCcmV3X2gKLSNkZWZpbmUgU2VhcmNo
UG9wdXBNZW51QnJld19oCi0KLSNpbmNsdWRlICJQb3B1cE1lbnVCcmV3LmgiCi0jaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNo
UG9wdXBNZW51QnJldyA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNl
YXJjaFBvcHVwTWVudUJyZXcoUG9wdXBNZW51Q2xpZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFBvcHVw
TWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCBib29s
IGVuYWJsZWQoKTsKLQotcHJpdmF0ZToKLSAgICBQb3B1cE1lbnVCcmV3IG1fcG9wdXA7Ci19Owot
Ci19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVCcmV3X2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggOWM3M2E5YzY5YTc1ZDAz
ODk1NmMxODlmMWJiYzZlOTU0ZmEyNmI2OS4uZDA3YmEyZWZiYjc3Y2I0YjQ0NWQxYmFkZjE4NDcz
YjI3OGQyODNiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1l
bnVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIAog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCkBAIC0xMzQwLDIwICsxMzQwLDIwIEBAIGJvb2wgUG9w
dXBMaXN0Qm94Ojppc1BvaW50SW5Cb3VuZHMoY29uc3QgSW50UG9pbnQmIHBvaW50KQogfQogCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQb3B1cE1lbnVDaHJvbWl1bSBpbXBsZW1lbnRhdGlv
bgorLy8gUG9wdXBNZW51IGltcGxlbWVudGF0aW9uCiAvLyAKIC8vIE5vdGU6IHlvdSBjYW5ub3Qg
YWRkIG1ldGhvZHMgdG8gdGhpcyBjbGFzcywgc2luY2UgaXQgaXMgZGVmaW5lZCBhYm92ZSB0aGUg
CiAvLyAgICAgICBwb3J0YWJpbGl0eSBsYXllci4gVG8gYWNjZXNzIG1ldGhvZHMgYW5kIHByb3Bl
cnRpZXMgb24gdGhlCiAvLyAgICAgICBwb3B1cCB3aWRnZXRzLCB1c2UgfHBvcHVwV2luZG93fCBh
Ym92ZS4gCiAKLVBvcHVwTWVudUNocm9taXVtOjpQb3B1cE1lbnVDaHJvbWl1bShQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSAKICAgICA6IG1fcG9wdXBDbGllbnQoY2xpZW50KQogewogfQogCi1Qb3B1cE1lbnVDaHJv
bWl1bTo6flBvcHVwTWVudUNocm9taXVtKCkKK1BvcHVwTWVudTo6flBvcHVwTWVudSgpCiB7Ci0g
ICAgLy8gV2hlbiB0aGUgUG9wdXBNZW51Q2hyb21pdW0gaXMgZGVzdHJveWVkLCB0aGUgY2xpZW50
IGNvdWxkIGFscmVhZHkgaGF2ZSBiZWVuCisgICAgLy8gV2hlbiB0aGUgUG9wdXBNZW51IGlzIGRl
c3Ryb3llZCwgdGhlIGNsaWVudCBjb3VsZCBhbHJlYWR5IGhhdmUgYmVlbgogICAgIC8vIGRlbGV0
ZWQuCiAgICAgaWYgKHAucG9wdXApCiAgICAgICAgIHAucG9wdXAtPmxpc3RCb3goKS0+ZGlzY29u
bmVjdENsaWVudCgpOwpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgUG9wdXBNZW51Q2hyb21pdW06On5Q
b3B1cE1lbnVDaHJvbWl1bSgpCiAvLyB0byBkaXNwbGF5LCBoYW5kbGUgdGhlIGlucHV0IHRyYWNr
aW5nIGFuZCBtZW51IGl0ZW0gc2VsZWN0aW9uIGZvciB0aGUgcG9wdXAuCiAvLyBXaW5kb3dzIGFu
ZCBMaW51eCBDaHJvbWl1bSBsZXQgb3VyIFdlYktpdCBwb3J0IGhhbmRsZSB0aGUgZGlzcGxheSwg
d2hpbGUKIC8vIGFub3RoZXIgcHJvY2VzcyBtYW5hZ2VzIHRoZSBwb3B1cCB3aW5kb3cgYW5kIGlu
cHV0IGhhbmRsaW5nLgotdm9pZCBQb3B1cE1lbnVDaHJvbWl1bTo6c2hvdyhjb25zdCBJbnRSZWN0
JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0
IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQogewogICAgIGlmICghcC5wb3B1
cCkKICAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIFBv
cHVwQ29udGFpbmVyOjpTZWxlY3QsIGRyb3BEb3duU2V0dGluZ3MpOwpAQCAtMTM3NSwyMSArMTM3
NSwyMCBAQCB2b2lkIFBvcHVwTWVudUNocm9taXVtOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZy
YW1lVmlldyogdiwgaW50IGluZGV4KQogI2VuZGlmCiB9CiAKLXZvaWQgUG9wdXBNZW51Q2hyb21p
dW06OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAgIGlmIChwLnBvcHVwKQog
ICAgICAgICBwLnBvcHVwLT5oaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51Q2hyb21pdW06OnVw
ZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQgUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7
CiAgICAgcC5wb3B1cC0+bGlzdEJveCgpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi0KLXZv
aWQgUG9wdXBNZW51Q2hyb21pdW06OmRpc2Nvbm5lY3RDbGllbnQoKQotewotICAgIG1fcG9wdXBD
bGllbnQgPSAwOworYm9vbCBQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgCit7IAorICAgIHJldHVybiBmYWxzZTsgCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAppbmRleCAw
ZDBlMjNjZTM1YTVkNzYzODMzMzMxOWFhOTUwMGQxMWE5NmUxMTk2Li5hODVjZjQ5MDBlOTVmYTEw
MGFjZTEyZTNiNmE0NmM5NmU1ZTVkZTgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRlICJGcmFt
ZWxlc3NTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBvcHVw
TWVudS5oIgotI2luY2x1ZGUgIlBvcHVwTWVudVByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0yMDMsMjMgKzIwMSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BvcHVwT3Bl
bjsKIH07CiAKLWNsYXNzIFBvcHVwTWVudUNocm9taXVtIDogcHVibGljIFBvcHVwTWVudSB7Ci1w
dWJsaWM6Ci0gICAgUG9wdXBNZW51Q2hyb21pdW0oUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBv
cHVwTWVudUNocm9taXVtKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0
JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9Ci0KLSAgICBQb3B1cE1lbnVDbGllbnQq
IG1fcG9wdXBDbGllbnQ7Ci0gICAgUG9wdXBNZW51UHJpdmF0ZSBwOwotfTsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2VhcmNoUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggMThlODZjNmQzNTYzNzJhYTMw
MzlkYWVkMzgxMzJhNmExOTA4NmU2NS4uODliZmRkZDIxNzE2ZDljOTkxOTg3ZDU1YWUyOTlmZTVj
M2YyY2Q5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1
cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQ
b3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChj
KSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMCwzNCArMjksMjkg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIkF0
b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2VhcmNoUG9wdXBNZW51Q2hyb21pdW06OlNlYXJjaFBvcHVwTWVudUNocm9t
aXVtKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCitTZWFy
Y2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IFBvcHVwTWVudShjbGllbnQpCiB7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51
Q2hyb21pdW06OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuICZtX3BvcHVwOwotfQotCi1ib29s
IFNlYXJjaFBvcHVwTWVudUNocm9taXVtOjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51
OjplbmFibGVkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBN
ZW51Q2hyb21pdW06OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1cE1lbnVD
aHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1cE1lbnVDaHJv
bWl1bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTJiOThjZjNhNDA1ZDk3NTA1
Y2YyNDgwZDc4NmVlZjUxODg4YThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2VhcmNoUG9wdXBNZW51Q2hy
b21pdW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bV9oCi0jZGVmaW5lIFNlYXJjaFBvcHVw
TWVudUNocm9taXVtX2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Vh
cmNoUG9wdXBNZW51Q2hyb21pdW0gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoK
LSAgICBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bShQb3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZp
cnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2
aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVudUNocm9taXVt
IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bV9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUG9wdXBNZW51RWZsLmNwcAppbmRleCA0MDFmMjRmZWFmYjI4NDhm
MGQ0Y2E2NGEyM2YwODM4NWRkMTk4YjcwLi45ZGM2OTg2OTZhOWUxM2Q5ZmVjMTg3MDg4M2ZiYzE0
ZTYyZTllNjU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5jcHAKQEAgLTMsNyAr
Myw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBU
ZWNub2xvZ2lhCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQg
c3lzdGVtcwogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwot
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzAgKzIyLDI5IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgorI2luY2x1
ZGUgIlBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1Qb3B1cE1lbnVFZmw6OlBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDog
bV9wb3B1cENsaWVudChjbGllbnQpCiAgICAgLCBtX3ZpZXcoMCkKIHsKIH0KIAotUG9wdXBNZW51
RWZsOjp+UG9wdXBNZW51RWZsKCkKK1BvcHVwTWVudTo6flBvcHVwTWVudSgpCiB7CiAgICAgLy8g
VGVsbCBjbGllbnQgdG8gZGVzdHJveSBkYXRhIHJlbGF0ZWQgdG8gdGhpcyBwb3B1cCBzaW5jZSB0
aGlzIG9iamVjdCBpcwogICAgIC8vIGdvaW5nIGF3YXkuCiAgICAgaGlkZSgpOwogfQogCi12b2lk
IFBvcHVwTWVudUVmbDo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcs
IGludCBpbmRleCkKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZy
YW1lVmlldyogdmlldywgaW50IGluZGV4KQogewogICAgIEFTU0VSVChtX3BvcHVwQ2xpZW50KTsK
ICAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNs
aWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKQEAg
LTU2LDcgKzU0LDcgQEAgdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVj
dCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgY2hyb21lQ2xpZW50LT5jcmVhdGVT
ZWxlY3RQb3B1cChtX3BvcHVwQ2xpZW50LCBpbmRleCwgcmVjdCk7CiB9CiAKLXZvaWQgUG9wdXBN
ZW51RWZsOjpoaWRlKCkKK3ZvaWQgUG9wdXBNZW51OjpoaWRlKCkKIHsKICAgICBBU1NFUlQobV92
aWV3KTsKICAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENo
cm9tZUNsaWVudEVmbCo+KG1fdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCkpOwpAQCAtNjUsMTQgKzYzLDE0IEBAIHZvaWQgUG9wdXBNZW51RWZsOjpoaWRlKCkKICAgICBj
aHJvbWVDbGllbnQtPmRlc3Ryb3lTZWxlY3RQb3B1cCgpOwogfQogCi12b2lkIFBvcHVwTWVudUVm
bDo6dXBkYXRlRnJvbUVsZW1lbnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50
KCkKIHsKICAgICBjbGllbnQoKS0+c2V0VGV4dEZyb21JdGVtKGNsaWVudCgpLT5zZWxlY3RlZElu
ZGV4KCkpOwogfQogCi12b2lkIFBvcHVwTWVudUVmbDo6ZGlzY29ubmVjdENsaWVudCgpCitib29s
IFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQogewotICAgIG1fcG9w
dXBDbGllbnQgPSAwOworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9Qb3B1cE1lbnVFZmwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bv
cHVwTWVudUVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTJkYmZjODQ3MDRj
ODQ2Yjc4ZDk5MjcxMDRlNTA3ODc1OGI0NGQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9w
dXBNZW51RWZsX2gKLSNkZWZpbmUgUG9wdXBNZW51RWZsX2gKLQotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRnJhbWVWaWV3OwotY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgUG9wdXBNZW51Q2xpZW50Owot
Ci1jbGFzcyBQb3B1cE1lbnVFZmwgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQ
b3B1cE1lbnVFZmwoUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudUVmbCgpOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRl
eCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2
YXRlOgotICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1
cENsaWVudDsgfQotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIEZy
YW1lVmlldyogbV92aWV3OwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51RWZsX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NlYXJjaFBvcHVwTWVudUVmbC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuY3BwCmluZGV4IGNhZmZlNTQ4
NTQyYzg1ZTk5NzRlNGM3ZjQ2MDk2NjFlNDZhZWIxYjMuLmQxODE3NGZhZGZkNzQ0ZWU4NjE3NjQ4
YmExMTZhZGRiOGNkMjk3OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NlYXJj
aFBvcHVwTWVudUVmbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2VhcmNoUG9wdXBN
ZW51RWZsLmNwcApAQCAtMiw3ICsyLDYgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAt
IEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjAsMzQgKzE5LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlYXJjaFBvcHVwTWVudUVmbC5oIgorI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZWFy
Y2hQb3B1cE1lbnVFZmw6OlNlYXJjaFBvcHVwTWVudUVmbChQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51RWZs
Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQotdm9pZCBTZWFyY2hQ
b3B1cE1lbnVFZmw6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUVmbDo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgU2VhcmNo
UG9wdXBNZW51RWZsOjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2VhcmNoUG9wdXBNZW51RWZsLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9TZWFyY2hQb3B1cE1lbnVFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDRjYjJlNThjZDc1ZDJkMDEzODZmZDA0MDBmOGIzMjEzNjk2NWU1Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9T
ZWFyY2hQb3B1cE1lbnVFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVFZmxfaAotI2RlZmluZSBTZWFy
Y2hQb3B1cE1lbnVFZmxfaAotCi0jaW5jbHVkZSAiUG9wdXBNZW51RWZsLmgiCi0jaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNo
UG9wdXBNZW51RWZsIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0gICAgU2Vh
cmNoUG9wdXBNZW51RWZsKFBvcHVwTWVudUNsaWVudCopOwotCi0gICAgdmlydHVhbCBQb3B1cE1l
bnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMp
OwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgYm9vbCBl
bmFibGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9wdXBNZW51RWZsIG1fcG9wdXA7Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVFZmxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVw
TWVudUd0ay5jcHAKaW5kZXggY2EwNjdkOWFhY2Y4OTUzZTAzNGFkMDlkMDJmZDFlYTkxNTM5MDg3
ZS4uYmY4Y2ZiNDVhM2U3NmE1NmYyNTk5MDExYTNkN2FmYjRkN2U2YjkxYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwCkBAIC00LDcgKzQsNiBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDcgKzIzLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUG9wdXBNZW51R3RrLmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCkBAIC0zNSwxMiAr
MzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb3B1cE1lbnVHdGs6OlBvcHVwTWVu
dUd0ayhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChjbGllbnQpCiB7CiB9CiAK
LVBvcHVwTWVudUd0azo6flBvcHVwTWVudUd0aygpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQog
ewogICAgIGlmIChtX3BvcHVwKSB7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfbWF0Y2hlZChtX3BvcHVwLmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAw
LCB0aGlzKTsKQEAgLTQ4LDcgKzQ3LDcgQEAgUG9wdXBNZW51R3RrOjp+UG9wdXBNZW51R3RrKCkK
ICAgICB9CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3Qs
IEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3Qg
SW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7CiAgICAgQVNTRVJU
KGNsaWVudCgpKTsKIApAQCAtMTExLDQzICsxMTAsNDMgQEAgdm9pZCBQb3B1cE1lbnVHdGs6OnNo
b3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAg
Z3RrX21lbnVfcG9wdXAobV9wb3B1cC5nZXQoKSwgMCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHdGtN
ZW51UG9zaXRpb25GdW5jPihtZW51UG9zaXRpb25GdW5jdGlvbiksIHRoaXMsIDAsIGd0a19nZXRf
Y3VycmVudF9ldmVudF90aW1lKCkpOwogfQogCi12b2lkIFBvcHVwTWVudUd0azo6aGlkZSgpCit2
b2lkIFBvcHVwTWVudTo6aGlkZSgpCiB7CiAgICAgQVNTRVJUKG1fcG9wdXApOwogICAgIGd0a19t
ZW51X3BvcGRvd24obV9wb3B1cC5nZXQoKSk7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjp1cGRh
dGVGcm9tRWxlbWVudCgpCit2b2lkIFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewog
ICAgIGNsaWVudCgpLT5zZXRUZXh0RnJvbUl0ZW0oY2xpZW50KCktPnNlbGVjdGVkSW5kZXgoKSk7
CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjpkaXNjb25uZWN0Q2xpZW50KCkKK2Jvb2wgUG9wdXBN
ZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0gICAgbV9wb3B1cENsaWVu
dCA9IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51SXRl
bUFjdGl2YXRlZChHdGtNZW51SXRlbSogaXRlbSwgUG9wdXBNZW51R3RrKiB0aGF0KQordm9pZCBQ
b3B1cE1lbnU6Om1lbnVJdGVtQWN0aXZhdGVkKEd0a01lbnVJdGVtKiBpdGVtLCBQb3B1cE1lbnUq
IHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPmNsaWVudCgpKTsKICAgICBBU1NFUlQodGhhdC0+
bV9pbmRleE1hcC5jb250YWlucyhHVEtfV0lER0VUKGl0ZW0pKSk7CiAgICAgdGhhdC0+Y2xpZW50
KCktPnZhbHVlQ2hhbmdlZCh0aGF0LT5tX2luZGV4TWFwLmdldChHVEtfV0lER0VUKGl0ZW0pKSk7
CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51VW5tYXBwZWQoR3RrV2lkZ2V0KiwgUG9wdXBN
ZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVVbm1hcHBlZChHdGtXaWRnZXQqLCBQ
b3B1cE1lbnUqIHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPmNsaWVudCgpKTsKICAgICB0aGF0
LT5jbGllbnQoKS0+cG9wdXBEaWRIaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51R3RrOjptZW51
UG9zaXRpb25GdW5jdGlvbihHdGtNZW51KiwgZ2ludCogeCwgZ2ludCogeSwgZ2Jvb2xlYW4qIHB1
c2hJbiwgUG9wdXBNZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVQb3NpdGlvbkZ1
bmN0aW9uKEd0a01lbnUqLCBnaW50KiB4LCBnaW50KiB5LCBnYm9vbGVhbiogcHVzaEluLCBQb3B1
cE1lbnUqIHRoYXQpCiB7CiAgICAgKnggPSB0aGF0LT5tX21lbnVQb3NpdGlvbi54KCk7CiAgICAg
KnkgPSB0aGF0LT5tX21lbnVQb3NpdGlvbi55KCk7CiAgICAgKnB1c2hJbiA9IHRydWU7CiB9CiAK
LXZvaWQgUG9wdXBNZW51R3RrOjptZW51UmVtb3ZlSXRlbShHdGtXaWRnZXQqIHdpZGdldCwgUG9w
dXBNZW51R3RrKiB0aGF0KQordm9pZCBQb3B1cE1lbnU6Om1lbnVSZW1vdmVJdGVtKEd0a1dpZGdl
dCogd2lkZ2V0LCBQb3B1cE1lbnUqIHRoYXQpCiB7CiAgICAgQVNTRVJUKHRoYXQtPm1fcG9wdXAp
OwogICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIodGhhdC0+bV9wb3B1cC5n
ZXQoKSksIHdpZGdldCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1l
bnVHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmYjRlN2RkOWZlMzk3ZTc5NDA4NzcyNjY5MjExNDRmYTNhZmE1
ZGI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9wdXBNZW51R3RrX2gKLSNkZWZpbmUgUG9w
dXBNZW51R3RrX2gKLQotI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50Lmgi
Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBlZGVm
IHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwotdHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVtIEd0
a01lbnVJdGVtOwotdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWVWaWV3OwotY2xhc3MgU2Nyb2xsYmFyOwotCi1j
bGFzcyBQb3B1cE1lbnVHdGsgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQb3B1
cE1lbnVHdGsoUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudUd0aygpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7
Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2YXRl
OgotICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENs
aWVudDsgfQotCi0gICAgc3RhdGljIHZvaWQgbWVudUl0ZW1BY3RpdmF0ZWQoR3RrTWVudUl0ZW0q
IGl0ZW0sIFBvcHVwTWVudUd0ayopOwotICAgIHN0YXRpYyB2b2lkIG1lbnVVbm1hcHBlZChHdGtX
aWRnZXQqLCBQb3B1cE1lbnVHdGsqKTsKLSAgICBzdGF0aWMgdm9pZCBtZW51UG9zaXRpb25GdW5j
dGlvbihHdGtNZW51KiwgZ2ludCosIGdpbnQqLCBnYm9vbGVhbiosIFBvcHVwTWVudUd0ayopOwot
ICAgIHN0YXRpYyB2b2lkIG1lbnVSZW1vdmVJdGVtKEd0a1dpZGdldCosIFBvcHVwTWVudUd0ayop
OwotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIEludFBvaW50IG1f
bWVudVBvc2l0aW9uOwotICAgIEdSZWZQdHI8R3RrTWVudT4gbV9wb3B1cDsKLSAgICBIYXNoTWFw
PEd0a1dpZGdldCosIGludD4gbV9pbmRleE1hcDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVw
TWVudUd0a19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1l
bnVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VhcmNoUG9wdXBNZW51R3RrLmNwcApp
bmRleCBkZmI4NGFhZmJhNjYzMmNkZTkzNTBkZjM4NmZkZDVjOTJjMTViNDFmLi5mYmFhNTI3MjZk
YzFhNjQzM2E4Yjc1MTAzY2RiNDE0ZWFlOThhOGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlYXJjaFBvcHVwTWVudUd0ay5jcHAKQEAgLTEsNiArMSw0IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
LSAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDM0ICsxNSwyOSBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVHdGsuaCIKKyNp
bmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VhcmNoUG9wdXBNZW51R3RrOjpTZWFyY2hQb3B1
cE1lbnVHdGsoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGNsaWVudCkK
K1NlYXJjaFBvcHVwTWVudTo6U2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQorICAgIDogUG9wdXBNZW51KGNsaWVudCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1Qb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUd0azo6cG9wdXBNZW51KCkKLXsKLSAgICByZXR1
cm4gJm1fcG9wdXA7Ci19Ci0KLXZvaWQgU2VhcmNoUG9wdXBNZW51R3RrOjpzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBTZWFyY2hQb3B1cE1lbnVHdGs6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudUd0azo6ZW5hYmxlZCgpCiti
b29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWFy
Y2hQb3B1cE1lbnVHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0
ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGMxN2I0NzI3NWY1NDJhYmI0Njdi
MGU5NzM3YWFkM2RjNGNkOGE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFNl
YXJjaFBvcHVwTWVudUd0a19oCi0jZGVmaW5lIFNlYXJjaFBvcHVwTWVudUd0a19oCi0KLSNpbmNs
dWRlICJQb3B1cE1lbnVHdGsuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnVHdGsgOiBwdWJsaWMgU2Vh
cmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBTZWFyY2hQb3B1cE1lbnVHdGsoUG9wdXBNZW51
Q2xpZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBz
ZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKLQotcHJpdmF0ZToKLSAg
ICBQb3B1cE1lbnVHdGsgbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFNlYXJjaFBvcHVw
TWVudUd0a19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1BvcHVwTWVudUhh
aWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFpa3UuY3BwCmluZGV4
IGUzZWRiODMxNmRiYzI4ZTliZTRkN2Y0YTE0YzlhZmU5ZGYwODE5MjAuLjVhZGJjNjYyMGNkMjFj
MzgzNjVkMjZiOTk3YWFjMmIzMTI4MTIyODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
aGFpa3UvUG9wdXBNZW51SGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9w
dXBNZW51SGFpa3UuY3BwCkBAIC0yLDcgKzIsNiBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIHBvcHVwIG1lbnUgaW1wbGVtZW50YXRpb24gZm9yIDxzZWxlY3Q+IGVsZW1lbnRzIGluIFdl
YkNvcmUuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0
aXBwaUBnbXguZGU+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsy
MSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUhh
aWt1LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
IApAQCAtNzMsOSArNzIsOSBAQCBwcml2YXRlOgogICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1
cENsaWVudDsKIH07CiAKLWNsYXNzIEhhaWt1UG9wdXAgOiBwdWJsaWMgQlBvcFVwTWVudSB7Citj
bGFzcyBQb3B1cE1lbnVIYWlrdSA6IHB1YmxpYyBCUG9wVXBNZW51IHsKIHB1YmxpYzoKLSAgICBI
YWlrdVBvcHVwKFBvcHVwTWVudUNsaWVudCogcG9wdXBDbGllbnQpCisgICAgUG9wdXBNZW51SGFp
a3UoUG9wdXBNZW51Q2xpZW50KiBwb3B1cENsaWVudCkKICAgICAgICAgOiBCUG9wVXBNZW51KCJX
ZWJDb3JlIFBvcHVwIiwgdHJ1ZSwgZmFsc2UpCiAgICAgICAgICwgbV9wb3B1cENsaWVudChwb3B1
cENsaWVudCkKICAgICAgICAgLCBtX0hhbmRsZXIocG9wdXBDbGllbnQpCkBAIC04Nyw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgU2V0QXN5bmNBdXRvRGVzdHJ1Y3QoZmFsc2UpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgfkhhaWt1UG9wdXAoKQorICAgIHZpcnR1YWwgflBvcHVwTWVudUhhaWt1
KCkKICAgICB7CiAgICAgICAgIGlmIChiZV9hcHAtPkxvY2soKSkgewogICAgICAgICAgICAgYmVf
YXBwLT5SZW1vdmVIYW5kbGVyKCZtX0hhbmRsZXIpOwpAQCAtMTU0LDM5ICsxNTMsMzkgQEAgcHJp
dmF0ZToKICAgICBQb3B1cE1lbnVIYW5kbGVyIG1fSGFuZGxlcjsKIH07CiAKLVBvcHVwTWVudUhh
aWt1OjpQb3B1cE1lbnVIYWlrdShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChj
bGllbnQpCi0gICAgLCBtX21lbnUobmV3IEhhaWt1UG9wdXAoY2xpZW50KSkKKyAgICAsIG1fbWVu
dShuZXcgUG9wdXBNZW51SGFpa3UoY2xpZW50KSkKIHsKICAgICAvLyBXZSBkb24ndCBuZWVkIGFk
ZGl0aW9uYWwgcmVmZXJlbmNlcyB0byB0aGUgY2xpZW50LCBzaW5jZSB3ZSBjb21wbGV0ZWx5CiAg
ICAgLy8gY29udHJvbCBhbnkgc3ViLW9iamVjdHMgd2UgY3JlYXRlIHRoYXQgbmVlZCBpdCBhcyB3
ZWxsLgogfQogCi1Qb3B1cE1lbnVIYWlrdTo6flBvcHVwTWVudUhhaWt1KCkKK1BvcHVwTWVudTo6
flBvcHVwTWVudSgpCiB7CiAgICAgZGVsZXRlIG1fbWVudTsKIH0KIAotdm9pZCBQb3B1cE1lbnVI
YWlrdTo6ZGlzY29ubmVjdENsaWVudCgpCi17Ci0gICAgbV9wb3B1cENsaWVudCA9IDA7Ci19Ci0K
LXZvaWQgUG9wdXBNZW51SGFpa3U6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3
KiB2aWV3LCBpbnQgaW5kZXgpCit2b2lkIFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiBy
ZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKIHsKICAgICAvLyBUaGUgbWVudSB3aWxs
IHVwZGF0ZSBpdHNlbGYgZnJvbSB0aGUgUG9wdXBNZW51Q2xpZW50IGJlZm9yZSBzaG93aW5nLgog
ICAgIG1fbWVudS0+c2hvdyhyZWN0LCB2aWV3LCBpbmRleCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51
SGFpa3U6OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAgIG1fbWVudS0+aGlk
ZSgpOwogfQogCi12b2lkIFBvcHVwTWVudUhhaWt1Ojp1cGRhdGVGcm9tRWxlbWVudCgpCit2b2lk
IFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIGNsaWVudCgpLT5zZXRUZXh0
RnJvbUl0ZW0obV9wb3B1cENsaWVudC0+c2VsZWN0ZWRJbmRleCgpKTsKIH0KIAorYm9vbCBQb3B1
cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9oYWlrdS9Qb3B1cE1lbnVIYWlrdS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Q
b3B1cE1lbnVIYWlrdS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjA3OTIzMTYy
NTQyOTU1ZTNmNmU1OGNkYTFhODJjOTAzZjNlNjk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUG9wdXBNZW51SGFp
a3UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBQb3B1cE1lbnVIYWlrdV9oCi0jZGVmaW5lIFBvcHVwTWVudUhhaWt1X2gKLQotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlICJQb3B1
cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWVWaWV3
OwotY2xhc3MgSGFpa3VQb3B1cDsKLWNsYXNzIFNjcm9sbGJhcjsKLQotY2xhc3MgUG9wdXBNZW51
SGFpa3UgOiBwdWJsaWMgUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVIYWlrdShQ
b3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51SGFpa3UoKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwotICAgIHZp
cnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICBQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0K
LQotICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLSAgICBIYWlrdVBvcHVwKiBt
X21lbnU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBQb3B1cE1lbnVIYWlrdV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1NlYXJjaFBvcHVwTWVudUhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNoUG9wdXBNZW51SGFpa3UuY3BwCmluZGV4IDQ0MzM4ZTUy
NGE0NGQ2YjM3MjkyZDdiMWFkYjUwNWEyYjc5YzFiMzIuLmZkNWQ5NmM0MzVmMWRiMmQzOWMxYzk3
MjIzZmRjZjQ2MTQ3MzI2ZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2Vh
cmNoUG9wdXBNZW51SGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNo
UG9wdXBNZW51SGFpa3UuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksNyArMTgsNyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVIYWlrdS5oIgorI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKQEAgLTI3LDMxICsyNiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNlYXJjaFBvcHVwTWVudUhhaWt1OjpTZWFyY2hQb3B1cE1lbnVIYWlrdShQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51
OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1l
bnUoY2xpZW50KQogewogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudUhhaWt1OjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51SGFp
a3U6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBTZWFyY2hQb3B1cE1lbnVI
YWlrdTo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBvcHVwTWVudSogU2Vh
cmNoUG9wdXBNZW51SGFpa3U6OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuIG1fcG9wdXA7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9TZWFyY2hQb3B1cE1lbnVIYWlrdS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9T
ZWFyY2hQb3B1cE1lbnVIYWlrdS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTMy
ZDNjYzkxMjhiMzkxMWM0NTQ2MDg1M2Y0MWIzZmQ2MDk5M2M2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvU2VhcmNo
UG9wdXBNZW51SGFpa3UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVIYWlrdV9oCi0jZGVmaW5lIFNlYXJj
aFBvcHVwTWVudUhhaWt1X2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUhhaWt1LmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Vh
cmNoUG9wdXBNZW51SGFpa3UgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAg
ICBTZWFyY2hQb3B1cE1lbnVIYWlrdShQb3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwg
UG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVudUhhaWt1IG1fcG9wdXA7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVIYWlrdV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BvcHVwTWVudU1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTY5ZmZm
NWY4MmJhMmVmZWFjMGM2OWM2ZTZlNTVlNmM4NDY4NTE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1h
Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgUG9wdXBNZW51TWFjX2gKLSNkZWZpbmUgUG9wdXBNZW51TWFjX2gKLQotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1jbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBTY3JvbGxi
YXI7Ci0KLWNsYXNzIFBvcHVwTWVudU1hYyA6IHB1YmxpYyBQb3B1cE1lbnUgewotcHVibGljOgot
ICAgIFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51TWFjKCk7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50
IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgcG9wdWxhdGUoKTsKLSAgICBQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0K
LQotICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNQ
b3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBQb3B1cE1lbnVN
YWNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tCmluZGV4IDFiZjUwMGI4MzNjNDE3
MDA0YjgyOWYyMDA0MjAyMzAxNTU0NzFkZDEuLjZjMDY3YjkyYTJiY2IxNTBjNDVkZGJjMjgyZWM5
MWUyNGE4MTQwZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BvcHVwTWVudU1h
Yy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW0KQEAgLTEsNiAr
MSw1IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDcg
KzE4LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBvcHVwTWVudU1h
Yy5oIgorI2ltcG9ydCAiUG9wdXBNZW51LmgiCiAKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbXBvcnQgIkNocm9tZS5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2ltcG9ydCAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW1wb3J0ICJQYWdl
LmgiCi0jaW1wb3J0ICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIlNpbXBsZUZvbnREYXRh
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKQEAgLTQwLDI0ICszOCwy
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVBvcHVwTWVudU1hYzo6UG9wdXBNZW51TWFjKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQorUG9w
dXBNZW51OjpQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3BvcHVw
Q2xpZW50KGNsaWVudCkKIHsKIH0KIAotUG9wdXBNZW51TWFjOjp+UG9wdXBNZW51TWFjKCkKK1Bv
cHVwTWVudTo6flBvcHVwTWVudSgpCiB7CiAgICAgaWYgKG1fcG9wdXApCiAgICAgICAgIFttX3Bv
cHVwLmdldCgpIHNldENvbnRyb2xWaWV3Om5pbF07CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFjOjpj
bGVhcigpCit2b2lkIFBvcHVwTWVudTo6Y2xlYXIoKQogewogICAgIGlmIChtX3BvcHVwKQogICAg
ICAgICBbbV9wb3B1cC5nZXQoKSByZW1vdmVBbGxJdGVtc107CiB9CiAKLXZvaWQgUG9wdXBNZW51
TWFjOjpwb3B1bGF0ZSgpCit2b2lkIFBvcHVwTWVudTo6cG9wdWxhdGUoKQogewogICAgIGlmICht
X3BvcHVwKQogICAgICAgICBjbGVhcigpOwpAQCAtMTE2LDcgKzExNCw3IEBAIHZvaWQgUG9wdXBN
ZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgW1ttX3BvcHVwLmdldCgpIG1lbnVdIHNldE1lbnVDaGFu
Z2VkTWVzc2FnZXNFbmFibGVkOm1lc3NhZ2VzRW5hYmxlZF07CiB9CiAKLXZvaWQgUG9wdXBNZW51
TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQordm9p
ZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5k
ZXgpCiB7CiAgICAgcG9wdWxhdGUoKTsKICAgICBpbnQgbnVtSXRlbXMgPSBbbV9wb3B1cC5nZXQo
KSBudW1iZXJPZkl0ZW1zXTsKQEAgLTE2NCw3ICsxNjIsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6
c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lID0gdi0+ZnJhbWUoKTsKICAgICBOU0V2ZW50KiBldmVudCA9IFtmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnROU0V2ZW50KCkgcmV0YWluXTsKICAgICAKLSAgICBS
ZWZQdHI8UG9wdXBNZW51TWFjPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFBvcHVwTWVu
dT4gcHJvdGVjdG9yKHRoaXMpOwogCiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3KEFk
b3B0TlMsIFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJdKTsKICAgICBbdmlldyBhZGRT
dWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CkBAIC0xOTYsMTggKzE5NCwxOCBAQCB2b2lkIFBvcHVw
TWVudU1hYzo6c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkK
ICAgICBbZXZlbnQgcmVsZWFzZV07CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFjOjpoaWRlKCkKK3Zv
aWQgUG9wdXBNZW51OjpoaWRlKCkKIHsKICAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBd
OwogfQogICAgIAotdm9pZCBQb3B1cE1lbnVNYWM6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3ZvaWQg
UG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgUG9wdXBNZW51TWFj
OjpkaXNjb25uZWN0Q2xpZW50KCkKK2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpCiB7Ci0gICAgbV9wb3B1cENsaWVudCA9IDA7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVu
dU1hYy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZjkxYTBjY2I4YzUxMWJiM2M2NzNhYjg2MmQxYmU3
NTc4NDYzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBNZW51TWFjLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgU2VhcmNoUG9wdXBN
ZW51TWFjX2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51TWFjX2gKLQotI2luY2x1ZGUgIlBvcHVw
TWVudU1hYy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNlYXJjaFBvcHVwTWVudU1hYyA6IHB1YmxpYyBTZWFyY2hQb3B1cE1l
bnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqKTsK
LQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1z
KTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFBvcHVwTWVu
dU1hYyBtX3BvcHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51TWFjX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbSBi
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVudU1hYy5tbQppbmRleCA3OGIyOWE3
MzZmNjE0NDk3ZWQ0ODQ0MmZjOWJkYTM3NmUzZmEzZTdjLi4yNjI3MzRkMGM2Y2Q4YTRkY2I2ZGU2
NjlkNDAwZmJiM2EwOTk0ZDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZWFy
Y2hQb3B1cE1lbnVNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VhcmNoUG9wdXBN
ZW51TWFjLm1tCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTks
MTQgKzE4LDE0IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTZWFyY2hQ
b3B1cE1lbnVNYWMuaCIKKyNpbXBvcnQgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAjaW1wb3J0ICJB
dG9taWNTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZWFyY2hQb3B1cE1lbnVN
YWM6OlNlYXJjaFBvcHVwTWVudU1hYyhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1f
cG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewogfQogCkBAIC0zNSwx
NyArMzQsMTIgQEAgc3RhdGljIE5TU3RyaW5nKiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIFtAImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpuYW1lXTsKIH0KIAotUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVN
YWM6OnBvcHVwTWVudSgpCi17Ci0gICAgcmV0dXJuICZtX3BvcHVwOwotfQotCi1ib29sIFNlYXJj
aFBvcHVwTWVudU1hYzo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjIsNyArNTYsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIH0KIH0KIAotdm9pZCBT
ZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCmluZGV4IDU1OTA1NTZkZjI2MGQ0
MTcwOWZmMGY5NjMwYWRiMjhlY2EwYmQ0ZjguLjMxNWI4OTE3MzI1MmM1MjIzNmRiOTUzOTgxNDdk
NDZhMTcyODE2MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudVF0
LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnRRdC5oIgpAQCAtMzUsMjQgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUG9wdXBNZW51UXQ6OlBvcHVwTWVudVF0KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KQorUG9wdXBNZW51OjpQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX3BvcHVwQ2xpZW50KGNsaWVudCkKICAgICAsIG1fcG9wdXAoMCkKIHsKIH0KIAotUG9wdXBN
ZW51UXQ6On5Qb3B1cE1lbnVRdCgpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAgIGRl
bGV0ZSBtX3BvcHVwOwogfQogCi0KLXZvaWQgUG9wdXBNZW51UXQ6OmRpc2Nvbm5lY3RDbGllbnQo
KQotewotICAgIG1fcG9wdXBDbGllbnQgPSAwOwotfQotCi12b2lkIFBvcHVwTWVudVF0OjpzaG93
KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQordm9pZCBQ
b3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQg
aW5kZXgpCiB7CiAgICAgQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudFF0Kj4oCiAgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKQEAgLTczLDE0ICs2NywxOSBAQCB2b2lkIFBvcHVwTWVudVF0OjpzaG93
KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogCiB9CiAK
LXZvaWQgUG9wdXBNZW51UXQ6OmhpZGUoKQordm9pZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAg
IG1fcG9wdXAtPmhpZGUoKTsKIH0KIAotdm9pZCBQb3B1cE1lbnVRdDo6dXBkYXRlRnJvbUVsZW1l
bnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3sKKyAgICBjbGllbnQo
KS0+c2V0VGV4dEZyb21JdGVtKG1fcG9wdXBDbGllbnQtPnNlbGVjdGVkSW5kZXgoKSk7Cit9CisK
K2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0gICAg
bV9wb3B1cENsaWVudC0+c2V0VGV4dEZyb21JdGVtKG1fcG9wdXBDbGllbnQtPnNlbGVjdGVkSW5k
ZXgoKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BvcHVwTWVudVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YTlmNzZkYmI1OTg5OGE5YWQzZTBi
MzFjNzA2MGQ2MTE0MzhhNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgUG9wdXBNZW51UXRfaAot
I2RlZmluZSBQb3B1cE1lbnVRdF9oCi0KLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBRdEFic3RyYWN0V2ViUG9w
dXA7Ci1jbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci0KLWNsYXNzIFBv
cHVwTWVudVF0IDogcHVibGljIFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0gICAgUG9wdXBNZW51UXQo
UG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudVF0KCk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKLSAgICB2aXJ0
dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgUG9w
dXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogbV9w
b3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVwTWVudVF0X2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCmluZGV4IDVmNmY2MTlmYjRkZThiMjFjZDQ2NzU3MDA4
ODkwMzE3MGU4N2M0YTMuLmRhZDQ5OTdkMTYyYjU1NmEwYmFiODdmNTg2YzRhN2ZkMWJjZjg2NzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgUUZvbnQgZm9udCgpIHsgcmV0dXJuIG1fcG9wdXBDbGllbnQtPm1l
bnVTdHlsZSgpLmZvbnQoKS5mb250KCk7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
UG9wdXBNZW51UXQ7CisgICAgZnJpZW5kIGNsYXNzIFBvcHVwTWVudTsKICAgICBQb3B1cE1lbnVD
bGllbnQqIG1fcG9wdXBDbGllbnQ7CiAgICAgUVdlYlBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsK
ICAgICBpbnQgbV9jdXJyZW50SW5kZXg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1NlYXJjaFBvcHVwTWVudVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBN
ZW51UXQuY3BwCmluZGV4IDg2OGI5YTc4MWM4YzljMzUxNjJhOTA4MThmZjJiYTg3MTRhMzIzY2Iu
LjE4N2E1ZGUxMmEzNzNiMTNhYTVmZmNhZTY3YWE2NDI3MmE0MjM5NzUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENv
cHlyaWdodCBDIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMjkgKzE4LDI2IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVF0LmgiCisjaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbmNsdWRlICJBdG9taWNTdHJp
bmcuaCIKIAotU2VhcmNoUG9wdXBNZW51UXQ6OlNlYXJjaFBvcHVwTWVudVF0KFBvcHVwTWVudUNs
aWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCi17Ci19CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51UXQ6OnBvcHVwTWVudSgpCitTZWFy
Y2hQb3B1cE1lbnU6OlNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IFBvcHVwTWVudShjbGllbnQpCiB7Ci0gICAgcmV0dXJuICZtX3BvcHVwOwogfQogCi12b2lk
IFNlYXJjaFBvcHVwTWVudVF0OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7
CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51UXQ6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6bG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikKIHsK
IH0KIAotYm9vbCBTZWFyY2hQb3B1cE1lbnVRdDo6ZW5hYmxlZCgpCitib29sIFNlYXJjaFBvcHVw
TWVudTo6ZW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1NlYXJjaFBvcHVwTWVudVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMWMw
OWQzZTExNDlhYTZmODRhZDU1ZjkwMDIzNjg3N2MzMWE2ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TZWFyY2hQb3B1
cE1lbnVRdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAq
LwotCi0jaWZuZGVmIFNlYXJjaFBvcHVwTWVudVF0X2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51
UXRfaAotCi0jaW5jbHVkZSAiUG9wdXBNZW51UXQuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1l
bnUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWFyY2hQb3B1cE1lbnVRdCA6
IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudVF0
KFBvcHVwTWVudUNsaWVudCopOwotCi0gICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgp
OwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgUG9wdXBNZW51UXQgbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFNl
YXJjaFBvcHVwTWVudVF0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVw
TWVudVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4
IGFhYWRjNTNkNjJkNDBjMDUzM2JiY2EyYmFjNTRlNjIwOGUxMjFkODAuLjRiYzZkYzdmODc5NWY5
MWEzZmZhOTY2OWU3NDhjYmRhYTZlNDIwMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcApAQCAtMSw3ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMDkgVG9yY2ggTW9iaWxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIxLDcgKzIwLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUG9wdXBNZW51V2luLmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJC
aXRtYXBJbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTg3LDcgKzg2LDcgQEAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlUG9pbnQoTFBBUkFNJiBsUGFyYW0sIEhXTkQgZnJvbSwgSFdORCB0
bykKICAgICBsUGFyYW0gPSBNQUtFTFBBUkFNKHB0LngsIHB0LnkpOwogfQogCi1Qb3B1cE1lbnVX
aW46OlBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK1BvcHVwTWVudTo6UG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAgIDogbV9wb3B1cENsaWVudChjbGll
bnQpCiAgICAgLCBtX3Njcm9sbGJhcigwKQogICAgICwgbV9wb3B1cCgwKQpAQCAtMTAzLDcgKzEw
Miw3IEBAIFBvcHVwTWVudVdpbjo6UG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQogewogfQogCi1Qb3B1cE1lbnVXaW46On5Qb3B1cE1lbnVXaW4oKQorUG9wdXBNZW51Ojp+UG9w
dXBNZW51KCkKIHsKICAgICBpZiAobV9ibXApCiAgICAgICAgIDo6RGVsZXRlT2JqZWN0KG1fYm1w
KTsKQEAgLTExNSwxNyArMTE0LDEyIEBAIFBvcHVwTWVudVdpbjo6flBvcHVwTWVudVdpbigpCiAg
ICAgICAgIG1fc2Nyb2xsYmFyLT5zZXRQYXJlbnQoMCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51V2lu
OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xpZW50ID0gMDsKLX0KLQotTFBD
VFNUUiBQb3B1cE1lbnVXaW46OnBvcHVwQ2xhc3NOYW1lKCkKK0xQQ1RTVFIgUG9wdXBNZW51Ojpw
b3B1cENsYXNzTmFtZSgpCiB7CiAgICAgcmV0dXJuIGtQb3B1cFdpbmRvd0NsYXNzTmFtZTsKIH0K
IAotdm9pZCBQb3B1cE1lbnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2
aWV3LCBpbnQgaW5kZXgpCit2b2lkIFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByLCBG
cmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKIHsKICAgICBjYWxjdWxhdGVQb3NpdGlvbkFuZFNp
emUociwgdmlldyk7CiAgICAgaWYgKGNsaWVudFJlY3QoKS5pc0VtcHR5KCkpCkBAIC0yNzMsNyAr
MjY3LDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVW
aWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgaGlkZSgpOwogfQogCi12b2lkIFBvcHVwTWVudVdp
bjo6aGlkZSgpCit2b2lkIFBvcHVwTWVudTo6aGlkZSgpCiB7CiAgICAgaWYgKCFtX3Nob3dQb3B1
cCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg5LDcgKzI4Myw3IEBAIHZvaWQgUG9wdXBNZW51V2lu
OjpoaWRlKCkKICAgICA6OlBvc3RNZXNzYWdlKG1fcG9wdXAsIFdNX05VTEwsIDAsIDApOwogfQog
Ci12b2lkIFBvcHVwTWVudVdpbjo6Y2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKGNvbnN0IEludFJl
Y3QmIHIsIEZyYW1lVmlldyogdikKK3ZvaWQgUG9wdXBNZW51OjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUoY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2KQogewogICAgIC8vIHIgaXMgaW4g
YWJzb2x1dGUgZG9jdW1lbnQgY29vcmRpbmF0ZXMsIGJ1dCB3ZSB3YW50IHRvIGJlIGluIHNjcmVl
biBjb29yZGluYXRlcwogCkBAIC0zNzksNyArMzczLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNh
bGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAg
ICAgcmV0dXJuOwogfQogCi1ib29sIFBvcHVwTWVudVdpbjo6c2V0Rm9jdXNlZEluZGV4KGludCBp
LCBib29sIGhvdFRyYWNraW5nKQorYm9vbCBQb3B1cE1lbnU6OnNldEZvY3VzZWRJbmRleChpbnQg
aSwgYm9vbCBob3RUcmFja2luZykKIHsKICAgICBpZiAoaSA8IDAgfHwgaSA+PSBjbGllbnQoKS0+
bGlzdFNpemUoKSB8fCBpID09IGZvY3VzZWRJbmRleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MDEsMjIgKzM5NSwyMiBAQCBib29sIFBvcHVwTWVudVdpbjo6c2V0Rm9jdXNlZEluZGV4
KGludCBpLCBib29sIGhvdFRyYWNraW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgUG9w
dXBNZW51V2luOjp2aXNpYmxlSXRlbXMoKSBjb25zdAoraW50IFBvcHVwTWVudTo6dmlzaWJsZUl0
ZW1zKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50UmVjdCgpLmhlaWdodCgpIC8gbV9pdGVt
SGVpZ2h0OwogfQogCi1pbnQgUG9wdXBNZW51V2luOjpsaXN0SW5kZXhBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK2ludCBQb3B1cE1lbnU6Omxpc3RJbmRleEF0UG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbE9mZnNldCAr
IHBvaW50LnkoKSAvIG1faXRlbUhlaWdodDsKIH0KIAotaW50IFBvcHVwTWVudVdpbjo6Zm9jdXNl
ZEluZGV4KCkgY29uc3QKK2ludCBQb3B1cE1lbnU6OmZvY3VzZWRJbmRleCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZm9jdXNlZEluZGV4OwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6Zm9jdXNG
aXJzdCgpCit2b2lkIFBvcHVwTWVudTo6Zm9jdXNGaXJzdCgpCiB7CiAgICAgaWYgKCFjbGllbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMwLDcgKzQyNCw3IEBAIHZvaWQgUG9wdXBNZW51V2lu
Ojpmb2N1c0ZpcnN0KCkKICAgICAgICAgfQogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6Zm9jdXNM
YXN0KCkKK3ZvaWQgUG9wdXBNZW51Ojpmb2N1c0xhc3QoKQogewogICAgIGlmICghY2xpZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ0NCw3ICs0MzgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
Zm9jdXNMYXN0KCkKICAgICAgICAgfQogfQogCi1ib29sIFBvcHVwTWVudVdpbjo6ZG93bih1bnNp
Z25lZCBsaW5lcykKK2Jvb2wgUG9wdXBNZW51Ojpkb3duKHVuc2lnbmVkIGxpbmVzKQogewogICAg
IGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2Myw3ICs0NTcsNyBA
QCBib29sIFBvcHVwTWVudVdpbjo6ZG93bih1bnNpZ25lZCBsaW5lcykKICAgICByZXR1cm4gc2V0
Rm9jdXNlZEluZGV4KGxhc3RTZWxlY3RhYmxlSW5kZXgpOwogfQogCi1ib29sIFBvcHVwTWVudVdp
bjo6dXAodW5zaWduZWQgbGluZXMpCitib29sIFBvcHVwTWVudTo6dXAodW5zaWduZWQgbGluZXMp
CiB7CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgyLDcg
KzQ3Niw3IEBAIGJvb2wgUG9wdXBNZW51V2luOjp1cCh1bnNpZ25lZCBsaW5lcykKICAgICByZXR1
cm4gc2V0Rm9jdXNlZEluZGV4KGxhc3RTZWxlY3RhYmxlSW5kZXgpOwogfQogCi12b2lkIFBvcHVw
TWVudVdpbjo6aW52YWxpZGF0ZUl0ZW0oaW50IGluZGV4KQordm9pZCBQb3B1cE1lbnU6OmludmFs
aWRhdGVJdGVtKGludCBpbmRleCkKIHsKICAgICBpZiAoIW1fcG9wdXApCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ5Nyw3ICs0OTEsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZUl0ZW0o
aW50IGluZGV4KQogICAgIDo6SW52YWxpZGF0ZVJlY3QobV9wb3B1cCwgJnIsIFRSVUUpOwogfQog
Ci1JbnRSZWN0IFBvcHVwTWVudVdpbjo6Y2xpZW50UmVjdCgpIGNvbnN0CitJbnRSZWN0IFBvcHVw
TWVudTo6Y2xpZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gbV93
aW5kb3dSZWN0OwogICAgIGNsaWVudFJlY3QuaW5mbGF0ZSgtcG9wdXBXaW5kb3dCb3JkZXJXaWR0
aCk7CkBAIC01MDUsMTIgKzQ5OSwxMiBAQCBJbnRSZWN0IFBvcHVwTWVudVdpbjo6Y2xpZW50UmVj
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudFJlY3Q7CiB9CiAKLXZvaWQgUG9wdXBNZW51V2lu
OjppbmNyZW1lbnRXaGVlbERlbHRhKGludCBkZWx0YSkKK3ZvaWQgUG9wdXBNZW51OjppbmNyZW1l
bnRXaGVlbERlbHRhKGludCBkZWx0YSkKIHsKICAgICBtX3doZWVsRGVsdGEgKz0gZGVsdGE7CiB9
CiAKLXZvaWQgUG9wdXBNZW51V2luOjpyZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSkKK3ZvaWQg
UG9wdXBNZW51OjpyZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSkKIHsKICAgICBBU1NFUlQoZGVs
dGEgPj0gMCk7CiAgICAgQVNTRVJUKGRlbHRhIDw9IGFicyhtX3doZWVsRGVsdGEpKTsKQEAgLTUy
Myw3ICs1MTcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cmVkdWNlV2hlZWxEZWx0YShpbnQgZGVs
dGEpCiAgICAgICAgIHJldHVybjsKIH0KIAotYm9vbCBQb3B1cE1lbnVXaW46OnNjcm9sbFRvUmV2
ZWFsU2VsZWN0aW9uKCkKK2Jvb2wgUG9wdXBNZW51OjpzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigp
CiB7CiAgICAgaWYgKCFtX3Njcm9sbGJhcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQz
LDcgKzUzNyw3IEBAIGJvb2wgUG9wdXBNZW51V2luOjpzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQordm9pZCBQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKICAgICBpZiAo
IW1fcG9wdXApCiAgICAgICAgIHJldHVybjsKQEAgLTU1NSw5ICs1NDksMTQgQEAgdm9pZCBQb3B1
cE1lbnVXaW46OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgOjpVcGRhdGVXaW5kb3cobV9w
b3B1cCk7CiB9CiAKK2Jvb2wgUG9wdXBNZW51OjppdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpIAoreyAKKyAgICByZXR1cm4gdHJ1ZTsgCit9CisKIGNvbnN0IGludCBzZXBhcmF0b3JQYWRk
aW5nID0gNDsKIGNvbnN0IGludCBzZXBhcmF0b3JIZWlnaHQgPSAxOwotdm9pZCBQb3B1cE1lbnVX
aW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCit2b2lkIFBvcHVw
TWVudTo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIHsKICAgICBp
ZiAoIW1fcG9wdXApCiAgICAgICAgIHJldHVybjsKQEAgLTY2NCw3ICs2NjMsNyBAQCB2b2lkIFBv
cHVwTWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAg
ICAgICAgOjpSZWxlYXNlREMobV9wb3B1cCwgbG9jYWxEQyk7CiB9CiAKLXZvaWQgUG9wdXBNZW51
V2luOjp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKiBzY3JvbGxCYXIpCit2b2lkIFBvcHVwTWVudTo6
dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogc2Nyb2xsQmFyKQogewogICAgIEFTU0VSVChtX3Njcm9s
bGJhcik7CiAKQEAgLTcwMCw3ICs2OTksNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6dmFsdWVDaGFu
Z2VkKFNjcm9sbGJhciogc2Nyb2xsQmFyKQogICAgIDo6VXBkYXRlV2luZG93KG1fcG9wdXApOwog
fQogCi12b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFBvcHVwTWVudTo6aW52YWxp
ZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgSW50UmVjdCBzY3JvbGxSZWN0ID0gcmVjdDsKICAgICBzY3JvbGxSZWN0Lm1v
dmUoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpKTsKQEAgLTcwOCw3ICs3MDcsNyBAQCB2
b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJbnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwg
ZmFsc2UpOwogfQogCi12b2lkIFBvcHVwTWVudVdpbjo6cmVnaXN0ZXJDbGFzcygpCit2b2lkIFBv
cHVwTWVudTo6cmVnaXN0ZXJDbGFzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2ZVJlZ2lzdGVy
ZWRXaW5kb3dDbGFzcyA9IGZhbHNlOwogCkBAIC03NDQsNyArNzQzLDcgQEAgdm9pZCBQb3B1cE1l
bnVXaW46OnJlZ2lzdGVyQ2xhc3MoKQogfQogCiAKLUxSRVNVTFQgQ0FMTEJBQ0sgUG9wdXBNZW51
V2luOjpQb3B1cE1lbnVXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1Bh
cmFtLCBMUEFSQU0gbFBhcmFtKQorTFJFU1VMVCBDQUxMQkFDSyBQb3B1cE1lbnU6OlBvcHVwTWVu
dVduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiB7CiAjaWYgT1MoV0lOQ0UpCiAgICAgTE9ORyBsb25nUHRyID0gR2V0V2luZG93TG9u
ZyhoV25kLCAwKTsKQEAgLTc1Miw3ICs3NTEsNyBAQCBMUkVTVUxUIENBTExCQUNLIFBvcHVwTWVu
dVdpbjo6UG9wdXBNZW51V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNCiAg
ICAgTE9OR19QVFIgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmdQdHIoaFduZCwgMCk7CiAjZW5kaWYK
ICAgICAKLSAgICBpZiAoUG9wdXBNZW51V2luKiBwb3B1cCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UG9w
dXBNZW51V2luKj4obG9uZ1B0cikpCisgICAgaWYgKFBvcHVwTWVudSogcG9wdXAgPSByZWludGVy
cHJldF9jYXN0PFBvcHVwTWVudSo+KGxvbmdQdHIpKQogICAgICAgICByZXR1cm4gcG9wdXAtPndu
ZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgIAogICAgIGlmIChtZXNz
YWdlID09IFdNX0NSRUFURSkgewpAQCAtNzcyLDcgKzc3MSw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sg
UG9wdXBNZW51V2luOjpQb3B1cE1lbnVXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0KIAogY29uc3QgaW50IHNtb290aFNjcm9sbEFuaW1hdGlvbkR1cmF0aW9uID0gNTAwMDsK
IAotTFJFU1VMVCBQb3B1cE1lbnVXaW46OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCitMUkVTVUxUIFBvcHVwTWVudTo6d25kUHJv
YyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
IHsKICAgICBMUkVTVUxUIGxSZXN1bHQgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uaCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdp
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGE0MjU1MmIxYjE0ODczZjMzMjIx
MGQxNzk5YThkNWE2MzQ4MmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFBvcHVwTWVudVdp
bl9oCi0jZGVmaW5lIFBvcHVwTWVudVdpbl9oCi0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyQ2xpZW50LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwotdHlwZWRlZiBz
dHJ1Y3QgSERDX18qIEhEQzsKLXR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBTY3JvbGxiYXI7
Ci0KLWNsYXNzIFBvcHVwTWVudVdpbiA6IHB1YmxpYyBQb3B1cE1lbnUsIHByaXZhdGUgU2Nyb2xs
YmFyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50Kik7
Ci0gICAgflBvcHVwTWVudVdpbigpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgSW50
UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdENsaWVudCgpOwotCi0gICAgc3RhdGljIExQQ1RTVFIgcG9wdXBDbGFzc05hbWUo
KTsKLQotcHJpdmF0ZToKLSAgICBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9wdXBDbGllbnQ7IH0KLQotICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KLQotICAgIGJvb2wgdXAodW5zaWduZWQgbGlu
ZXMgPSAxKTsKLSAgICBib29sIGRvd24odW5zaWduZWQgbGluZXMgPSAxKTsKLQotICAgIGludCBp
dGVtSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtSGVpZ2h0OyB9Ci0gICAgY29uc3QgSW50
UmVjdCYgd2luZG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93UmVjdDsgfQotICAgIElu
dFJlY3QgY2xpZW50UmVjdCgpIGNvbnN0OwotCi0gICAgaW50IHZpc2libGVJdGVtcygpIGNvbnN0
OwotCi0gICAgaW50IGxpc3RJbmRleEF0UG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLQot
ICAgIGJvb2wgc2V0Rm9jdXNlZEluZGV4KGludCBpbmRleCwgYm9vbCBob3RUcmFja2luZyA9IGZh
bHNlKTsKLSAgICBpbnQgZm9jdXNlZEluZGV4KCkgY29uc3Q7Ci0gICAgdm9pZCBmb2N1c0ZpcnN0
KCk7Ci0gICAgdm9pZCBmb2N1c0xhc3QoKTsKLQotICAgIHZvaWQgcGFpbnQoY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgSERDID0gMCk7Ci0KLSAgICBIV05EIHBvcHVwSGFuZGxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3B1cDsgfQotCi0gICAgdm9pZCBzZXRXYXNDbGlja2VkKGJvb2wgYiA9IHRy
dWUpIHsgbV93YXNDbGlja2VkID0gYjsgfQotICAgIGJvb2wgd2FzQ2xpY2tlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2FzQ2xpY2tlZDsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxPZmZzZXQoaW50IG9m
ZnNldCkgeyBtX3Njcm9sbE9mZnNldCA9IG9mZnNldDsgfQotICAgIGludCBzY3JvbGxPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldDsgfQotCi0gICAgYm9vbCBzY3JvbGxUb1Jl
dmVhbFNlbGVjdGlvbigpOwotCi0gICAgdm9pZCBpbmNyZW1lbnRXaGVlbERlbHRhKGludCBkZWx0
YSk7Ci0gICAgdm9pZCByZWR1Y2VXaGVlbERlbHRhKGludCBkZWx0YSk7Ci0gICAgaW50IHdoZWVs
RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGE7IH0KLQotICAgIGJvb2wgc2Nyb2xs
YmFyQ2FwdHVyaW5nTW91c2UoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhckNhcHR1cmluZ01v
dXNlOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9z
Y3JvbGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0KLQotICAgIC8vIFNjcm9sbEJhckNsaWVudAot
ICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgdm9pZCBjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYs
IEZyYW1lVmlldyopOwotICAgIHZvaWQgaW52YWxpZGF0ZUl0ZW0oaW50IGluZGV4KTsKLQotICAg
IHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBvcHVwTWVudVduZFByb2MoSFdORCwgVUlOVCwgV1BB
UkFNLCBMUEFSQU0pOwotICAgIExSRVNVTFQgd25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJDbGFzcygpOwotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIFJl
ZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOwotICAgIEhXTkQgbV9wb3B1cDsKLSAgICBIREMg
bV9EQzsKLSAgICBIQklUTUFQIG1fYm1wOwotICAgIGJvb2wgbV93YXNDbGlja2VkOwotICAgIElu
dFJlY3QgbV93aW5kb3dSZWN0OwotICAgIGludCBtX2l0ZW1IZWlnaHQ7Ci0gICAgaW50IG1fc2Ny
b2xsT2Zmc2V0OwotICAgIGludCBtX3doZWVsRGVsdGE7Ci0gICAgaW50IG1fZm9jdXNlZEluZGV4
OwotICAgIGJvb2wgbV9zY3JvbGxiYXJDYXB0dXJpbmdNb3VzZTsKLSAgICBib29sIG1fc2hvd1Bv
cHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51V2luX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4IDRhNWNiMjI5MWYzMzk4YzdhYTk4
ZjI4NzkxNzkxZWE2YjIwZWJkMWIuLmYyNzA5YmJlNzY3ZjU0YTkxZDVhNjZlMGJmOWVjNWI0N2Ex
MGI3MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApA
QCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMjQgKzE4LDE5IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVdpbi5o
IgorI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KQotICAgIDogbV9wb3B1cChjbGllbnQpCitTZWFyY2hQb3B1cE1lbnU6OlNlYXJjaFBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKKyAgICA6IFBvcHVwTWVudShjbGllbnQp
CiB7CiB9CiAKLVBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQotewot
ICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQotYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJs
ZWQoKQorYm9vbCBTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQoKQogewogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNDcsNyArNDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRv
c2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwogfQogCi12b2lkIFNlYXJjaFBv
cHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTY3LDcgKzYxLDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAg
ICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoa0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGlj
YXRpb24pOwogfQogCi12b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9hZFJlY2VudFNlYXJjaGVz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQor
dm9pZCBTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlODdkNzYxZWEwZGM4
MzE3YWNhMTA5MDM0YWI4ZGVlMzkyY2ViNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNp
Zm5kZWYgU2VhcmNoUG9wdXBNZW51V2luX2gKLSNkZWZpbmUgU2VhcmNoUG9wdXBNZW51V2luX2gK
LQotI2luY2x1ZGUgIlBvcHVwTWVudVdpbi5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlYXJjaFBvcHVwTWVudVdpbiA6IHB1
YmxpYyBTZWFyY2hQb3B1cE1lbnUgewotcHVibGljOgotICAgIFNlYXJjaFBvcHVwTWVudVdpbihQ
b3B1cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2
YXRlOgotICAgIFBvcHVwTWVudVdpbiBtX3BvcHVwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2Vh
cmNoUG9wdXBNZW51V2luX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvUG9wdXBN
ZW51V3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5jcHAKaW5kZXggZTg4
ZDFlNTlkYmViYjgyZjE1YzFmZDE2MjVjNzg2N2M2NzU1MWZjZS4uOWIwZGViYTRmODljMTE0MzA2
ZmNkYzY5OTg0OTkzYWY0MDA0M2FmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9Q
b3B1cE1lbnVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5jcHAK
QEAgLTIsNyArMiw2IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgcG9wdXAgbWVudSBp
bXBsZW1lbnRhdGlvbiBmb3IgPHNlbGVjdD4gZWxlbWVudHMgaW4gV2ViQ29yZS4KICAqCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTIyLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51V3guaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC00MiwyMyArNDEs
MTggQEAgc3RhdGljIGludCBzX21lbnVTdGFydElkID0gd3hOZXdJZCgpOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBvcHVwTWVudVd4OjpQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkKK1BvcHVwTWVudTo6UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQogICAg
IDogbV9wb3B1cENsaWVudChjbGllbnQpCiAgICAgLCBtX21lbnUoTlVMTCkKIHsKIH0KIAotUG9w
dXBNZW51V3g6On5Qb3B1cE1lbnVXeCgpCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogewogICAg
IGRlbGV0ZSBtX21lbnU7CiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OmRpc2Nvbm5lY3RDbGllbnQo
KQotewotICAgIG1fcG9wdXBDbGllbnQgPSAwOwotfQotCi12b2lkIFBvcHVwTWVudVd4OjpzaG93
KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQordm9pZCBQb3B1cE1l
bnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAg
ICAgLy8ganVzdCBkZWxldGUgYW5kIHJlY3JlYXRlCiAgICAgZGVsZXRlIG1fbWVudTsKQEAgLTg0
LDEzICs3OCwxMyBAQCB2b2lkIFBvcHVwTWVudVd4OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZy
YW1lVmlldyogdiwgaW50IGluZGV4KQogICAgICAgICAgICAgICAgICAgICBtX21lbnUtPkFwcGVu
ZChzX21lbnVTdGFydElkICsgaSwgY2xpZW50KCktPml0ZW1UZXh0KGkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBuYXRpdmVXaW4tPkNvbm5lY3Qoc19tZW51U3RhcnRJZCwg
c19tZW51U3RhcnRJZCArIChzaXplLTEpLCB3eEVWVF9DT01NQU5EX01FTlVfU0VMRUNURUQsIHd4
Q29tbWFuZEV2ZW50SGFuZGxlcihQb3B1cE1lbnVXeDo6T25NZW51SXRlbVNlbGVjdGVkKSwgMCwg
dGhpcyk7CisgICAgICAgIG5hdGl2ZVdpbi0+Q29ubmVjdChzX21lbnVTdGFydElkLCBzX21lbnVT
dGFydElkICsgKHNpemUtMSksIHd4RVZUX0NPTU1BTkRfTUVOVV9TRUxFQ1RFRCwgd3hDb21tYW5k
RXZlbnRIYW5kbGVyKFBvcHVwTWVudTo6T25NZW51SXRlbVNlbGVjdGVkKSwgTlVMTCwgdGhpcyk7
CiAgICAgICAgIG5hdGl2ZVdpbi0+UG9wdXBNZW51KG1fbWVudSwgci54KCkgLSB2LT5zY3JvbGxY
KCksIHIueSgpIC0gdi0+c2Nyb2xsWSgpKTsKLSAgICAgICAgbmF0aXZlV2luLT5EaXNjb25uZWN0
KHNfbWVudVN0YXJ0SWQsIHNfbWVudVN0YXJ0SWQgKyAoc2l6ZS0xKSwgd3hFVlRfQ09NTUFORF9N
RU5VX1NFTEVDVEVELCB3eENvbW1hbmRFdmVudEhhbmRsZXIoUG9wdXBNZW51V3g6Ok9uTWVudUl0
ZW1TZWxlY3RlZCksIDAsIHRoaXMpOworICAgICAgICBuYXRpdmVXaW4tPkRpc2Nvbm5lY3Qoc19t
ZW51U3RhcnRJZCwgc19tZW51U3RhcnRJZCArIChzaXplLTEpLCB3eEVWVF9DT01NQU5EX01FTlVf
U0VMRUNURUQsIHd4Q29tbWFuZEV2ZW50SGFuZGxlcihQb3B1cE1lbnU6Ok9uTWVudUl0ZW1TZWxl
Y3RlZCksIE5VTEwsIHRoaXMpOwogICAgIH0KIH0KIAotdm9pZCBQb3B1cE1lbnVXeDo6T25NZW51
SXRlbVNlbGVjdGVkKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgUG9wdXBNZW51OjpPbk1l
bnVJdGVtU2VsZWN0ZWQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChjbGllbnQo
KSkgewogICAgICAgICBjbGllbnQoKS0+dmFsdWVDaGFuZ2VkKGV2ZW50LkdldElkKCkgLSBzX21l
bnVTdGFydElkKTsKQEAgLTk5LDE1ICs5MywyMCBAQCB2b2lkIFBvcHVwTWVudVd4OjpPbk1lbnVJ
dGVtU2VsZWN0ZWQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQogICAgIC8vIFRPRE86IERvIHdlIG5l
ZWQgdG8gY2FsbCBEaXNjb25uZWN0IGhlcmU/IERvIHdlIGhhdmUgYSByZWYgdG8gdGhlIG5hdGl2
ZSB3aW5kb3cgc3RpbGw/CiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OmhpZGUoKQordm9pZCBQb3B1
cE1lbnU6OmhpZGUoKQogewogICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVy
ZSwgdGhlIG5hdGl2ZSBjb250cm9sIG9ubHkgZXhpc3RzIGR1cmluZyB0aGUgdGltZQogICAgIC8v
IHNob3cgaXMgY2FsbGVkCiB9CiAKLXZvaWQgUG9wdXBNZW51V3g6OnVwZGF0ZUZyb21FbGVtZW50
KCkKK3ZvaWQgUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgY2xpZW50KCkt
PnNldFRleHRGcm9tSXRlbShtX3BvcHVwQ2xpZW50LT5zZWxlY3RlZEluZGV4KCkpOwogfQogCiti
b29sIFBvcHVwTWVudTo6aXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1
cE1lbnVXeC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9Qb3B1cE1lbnVXeC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMjU3M2ZjMDNmMGVkYTdkOTQ3MmRlN2QyMGViMTc2ZmRiZThh
NzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd3gvUG9wdXBNZW51V3guaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBQb3B1cE1lbnVXeF9oCi0jZGVmaW5lIFBv
cHVwTWVudVd4X2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnUu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpZmRlZiBfX1dYTVNXX18KLSNp
bmNsdWRlIDx3eC9tc3cvd2ludW5kZWYuaD4KLSNlbmRpZgotY2xhc3Mgd3hNZW51OwotI2luY2x1
ZGUgPHd4L2RlZnMuaD4KLSNpbmNsdWRlIDx3eC9ldmVudC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFNjcm9sbGJhcjsKLQotY2xhc3MgUG9wdXBN
ZW51V3ggOiBwdWJsaWMgUG9wdXBNZW51LCBwdWJsaWMgd3hFdnRIYW5kbGVyIHsKLXB1YmxpYzoK
LSAgICBQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqKTsKLSAgICB+UG9wdXBNZW51V3goKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQg
aW5kZXgpOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKLQot
cHJpdmF0ZToKLSAgICB2b2lkIE9uTWVudUl0ZW1TZWxlY3RlZCh3eENvbW1hbmRFdmVudCYpOwot
ICAgIFBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVu
dDsgfQotCi0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIHd4TWVudSog
bV9tZW51OwotfTsKLQotfQotCi0jZW5kaWYgLy8gUG9wdXBNZW51V3hfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93eC9TZWFyY2hQb3B1cE1lbnVXeC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcAppbmRleCBhNWFlYjFiMzQ1NTYwNjkxM2Y4YjUw
MGQzNmU5OGY5ZTUwMmM4MDQyLi5kYmJlMzM5MTk2NGQ0NzczZWYxNWJmNzNmMzM1MDQ2Y2ZhZmRk
ZTJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcApAQCAtMSw2
ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMzcgKzI0LDMyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlYXJjaFBvcHVwTWVudVd4LmgiCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlYXJj
aFBvcHVwTWVudVd4OjpTZWFyY2hQb3B1cE1lbnVXeChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fcG9wdXAoY2xpZW50KQorU2VhcmNoUG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAgOiBQb3B1cE1lbnUoY2xpZW50KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51V3g6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVX
eDo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0
cmluZz4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVt
cykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFNlYXJjaFBvcHVwTWVudVd4
OjplbmFibGVkKCkKK2Jvb2wgU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVXeDo6cG9wdXBNZW51KCkK
LXsKLSAgICByZXR1cm4gJm1fcG9wdXA7Ci19Ci0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93eC9TZWFyY2hQb3B1cE1lbnVXeC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9TZWFy
Y2hQb3B1cE1lbnVXeC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGM3N2JhYjYy
MGViNGZhYTMzZjU4ZDdlYzhmM2I2NmEyYzNjMDMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2VhcmNoUG9wdXBNZW51
V3guaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBTZWFyY2hQb3B1cE1lbnVXeF9oCi0jZGVmaW5lIFNlYXJjaFBvcHVwTWVudVd4X2gK
LQotI2luY2x1ZGUgIlBvcHVwTWVudVd4LmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNoUG9wdXBNZW51V3ggOiBwdWJs
aWMgU2VhcmNoUG9wdXBNZW51IHsKLXB1YmxpYzoKLSAgICBTZWFyY2hQb3B1cE1lbnVXeChQb3B1
cE1lbnVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQg
bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRl
OgotICAgIFBvcHVwTWVudVd4IG1fcG9wdXA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTZWFyY2hQ
b3B1cE1lbnVXeF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggYjZhOTdh
OTcxNjgyOWZkYmM0MDI0M2JjMjQ5YjhhMWM3ZTJhMTgyMi4uZmYxNmU3ZTM5MGM5MzFjOGUxZGE5
YjhiOTY1YmMxNjgxNzJmMGQwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCiAKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC04OSw4ICs4OCw4IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUo
KQogICAgIG1faW5uZXJCbG9jay0+c3R5bGUoKS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCh0aGVt
ZSgpLT5wb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KHN0eWxlKCkpLCBGaXhlZCkpOwogICAgIG1f
aW5uZXJCbG9jay0+c3R5bGUoKS0+c2V0UGFkZGluZ1RvcChMZW5ndGgodGhlbWUoKS0+cG9wdXBJ
bnRlcm5hbFBhZGRpbmdUb3Aoc3R5bGUoKSksIEZpeGVkKSk7CiAgICAgbV9pbm5lckJsb2NrLT5z
dHlsZSgpLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCh0aGVtZSgpLT5wb3B1cEludGVybmFsUGFk
ZGluZ0JvdHRvbShzdHlsZSgpKSwgRml4ZWQpKTsKLQotICAgIGlmIChkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLT5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpKSB7Cisg
ICAgICAgIAorICAgIGlmIChQb3B1cE1lbnU6Oml0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkpIHsKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhl
IENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKICAgICAgICAgLy8gc28g
d2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBtYXRjaC4KICAgICAgICAgbV9pbm5lckJs
b2NrLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oTEVGVCk7CkBAIC0yNzksNyArMjc4LDcgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICAvLyBpbnNpZGUgdGhlIHNob3dQb3B1
cCBjYWxsIGFuZCBpdCB3b3VsZCBmYWlsLgogICAgIGNyZWF0ZUlubmVyQmxvY2soKTsKICAgICBp
ZiAoIW1fcG9wdXApCi0gICAgICAgIG1fcG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9t
ZSgpLT5jcmVhdGVQb3B1cE1lbnUodGhpcyk7CisgICAgICAgIG1fcG9wdXAgPSBQb3B1cE1lbnU6
OmNyZWF0ZSh0aGlzKTsKICAgICBTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOwogICAgIG1fcG9wdXBJc1Zpc2libGUg
PSB0cnVlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCA1MTJmYTliNTc5YWZm
YTNiMTYxYTk4MWNiMzIyMGFhYzE5YTU4OTU5Li5hZWY4ZDRmZWRmOGFiNmM2OGU2MTRlYThhMmZj
OTNlOTNhMGU0MGZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTI0LDcgKzI0
LDYgQEAKICNpZm5kZWYgUmVuZGVyTWVudUxpc3RfaAogI2RlZmluZSBSZW5kZXJNZW51TGlzdF9o
CiAKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgogCkBAIC0zNiw2ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUG9wdXBNZW51OwogY2xhc3MgUmVuZGVyVGV4dDsK
IAogI2lmIEVOQUJMRShOT19MSVNUQk9YX1JFTkRFUklORykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGJjZDM3MjkyODgzY2Vi
MTgyZWRhNjRhMjUwYWRiYzgwMGQwYTc4ODYuLmY0MGZiZjBmNWY5OGNlOTc0Njk2NDU3ODRjNjY3
NTdkZWQxMjBiODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcApAQCAtMiw3ICsyLDYgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykgCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI0LDcgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNT
U1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKQEAgLTQwLDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKQEAgLTYz
LDcgKzYyLDcgQEAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFjZWgKIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCiB7CiAgICAgaWYgKG1fc2Vh
cmNoUG9wdXApIHsKLSAgICAgICAgbV9zZWFyY2hQb3B1cC0+cG9wdXBNZW51KCktPmRpc2Nvbm5l
Y3RDbGllbnQoKTsKKyAgICAgICAgbV9zZWFyY2hQb3B1cC0+ZGlzY29ubmVjdENsaWVudCgpOwog
ICAgICAgICBtX3NlYXJjaFBvcHVwID0gMDsKICAgICB9CiAgCkBAIC0xMDgsNyArMTA3LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkZFNlYXJjaFJlc3VsdCgpCiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBhdXRvc2F2ZU5hbWUoKTsKICAgICBpZiAoIW1f
c2VhcmNoUG9wdXApCi0gICAgICAgIG1fc2VhcmNoUG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CisgICAgICAgIG1fc2VhcmNo
UG9wdXAgPSBTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZSh0aGlzKTsKIAogICAgIG1fc2VhcmNoUG9w
dXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKIH0KQEAgLTEy
Niw3ICsxMjUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2hvd1BvcHVw
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBt
X3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNo
UG9wdXBNZW51KHRoaXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gU2VhcmNoUG9wdXBNZW51
OjpjcmVhdGUodGhpcyk7CiAKICAgICBpZiAoIW1fc2VhcmNoUG9wdXAtPmVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ2LDE0ICsxNDUsMTQgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OnNob3dQb3B1cCgpCiAgICAgICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNl
bnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKICAgICB9CiAKLSAgICBtX3NlYXJj
aFBvcHVwLT5wb3B1cE1lbnUoKS0+c2hvdyhhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwg
ZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CisgICAgbV9zZWFyY2hQb3B1cC0+c2hvdyhhYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSwgZG9jdW1lbnQoKS0+dmlldygpLCAtMSk7CiB9CiAKIHZv
aWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoaWRlUG9wdXAoKQogewogICAgIEFTU0VS
VChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgaWYgKG1fc2VhcmNoUG9wdXApCi0gICAg
ICAgIG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT5oaWRlKCk7CisgICAgICAgIG1fc2VhcmNo
UG9wdXAtPmhpZGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN1
YnRyZWVIYXNDaGFuZ2VkKCkKQEAgLTY4Niw3ICs2ODUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIH0KIAogICAgIGlmIChtX3Nl
YXJjaFBvcHVwSXNWaXNpYmxlKQotICAgICAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1lbnUoKS0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICAgICAgbV9zZWFyY2hQb3B1cC0+dXBkYXRlRnJvbUVs
ZW1lbnQoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNhY2hlU2Vs
ZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKQEAgLTg4NCw3ICs4ODMsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwg
Ym9vbCBmaXJlRXZlbgogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gYXV0
b3NhdmVOYW1lKCk7CiAgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICAgICAgICAgICAgICBtX3NlYXJj
aFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KHRoaXMpOworICAgICAgICAgICAgICAgICAgICBtX3NlYXJjaFBvcHVwID0gU2VhcmNoUG9w
dXBNZW51OjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1cC0+c2F2
ZVJlY2VudFNlYXJjaGVzKG5hbWUsIG1fcmVjZW50U2VhcmNoZXMpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oCmluZGV4IDRiYzgwY2YzNmUwZmNjOTRlOTAxNmI2MTczZGYwMDYxMTRjMWY4ZWIuLjhj
N2U4NDRmMWE0YTdjZDIyZDQxMjNjNzQ0MDM4Nzk2MGE4ZjQwY2EgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC0xLDcgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCi0jaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsNiArMzIsNyBAQCBjbGFzcyBJbnB1dEVsZW1lbnQ7CiBjbGFzcyBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDsKIGNsYXNzIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDsKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ7CitjbGFzcyBT
ZWFyY2hQb3B1cE1lbnU7CiBjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKIGNsYXNzIFRleHRDb250
cm9sSW5uZXJFbGVtZW50OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhMzg5NTI1NDQyMzk3N2RiZjU2ZjFj
MWE0ZDNhMDYxYjM2NzQ0MzViLi45NGNjY2JkNDUxZjZkNmE1YjRjMDE0OWVkNjI5MzIzNWRmMzgz
N2I5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOC0wMiAgSmVyZW15IE9y
bG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQg
b2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3RhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM0NworCisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAg
ICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBv
cHVwTWVudVRlc3Q6OlNldFVwKToKKwogMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyYTVjMzJl
OWMwMjE2YjI3MjFlNjQwMTUzZDAxYzAwMDQwOGUzYWI5Li5mYzA4YjVkNzI4Mjk5MzFkYzcyNWRj
NDAyODgwYzZlNWY4NjRlM2I3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtNTYsNyArNTUsNiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51
Q2hyb21pdW0uaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uU2VydmljZS5oIgpAQCAtNzc1LDE5ICs3NzMsNCBAQCB2b2lk
IENocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBu
b2RlKQogICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUo
V2ViTm9kZShub2RlKSk7CiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbVdy
aXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFz
c1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudShQb3B1
cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cHVwTWVudUNocm9taXVtKGNsaWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVu
dT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVu
dCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBN
ZW51Q2hyb21pdW0oY2xpZW50KSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCA3ZjNmZWJmYzk4ZmU0YzhiYTZiMjgw
YmNhYjU3NjhkMzRjOWZjOTBjLi5mZTE5YjhiYmFiNWYxZTY0MGNmNTIyN2RkZDM2ZWUwZWRiYmRl
OWU2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMSw2ICsxLDUg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0zMywxNSArMzIsMTIgQEAKICNkZWZpbmUgQ2hyb21lQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnRDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlBvcHVwTWVudS5oIgotI2luY2x1
ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgRmlsZUNob29zZXI7CiBjbGFzcyBIVE1MUGFyc2VyUXVp
cmtzOwogY2xhc3MgUG9wdXBDb250YWluZXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KQEAgLTE3MiwxMCAr
MTY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkN1cnNvckluZm8m
IGN1cnNvcik7CiAgICAgdm9pZCBzZXRDdXJzb3JGb3JQbHVnaW4oY29uc3QgV2ViQ3Vyc29ySW5m
byYgY3Vyc29yKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRQb3B1cE1lbnVJbmZvKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiwgV2ViUG9w
dXBNZW51SW5mbyopOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBN
ZW51VGVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKaW5k
ZXggYmM0OTk0NzdlMDQzYzliMjMwMTczM2M5ZDJkMGQ3MjljNDJmMTkzMy4uNDRiMjYyZDVhMGI0
NTVhNzk5OGFkNmY0MWQ2OWJkOWMwNDJiYWU3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1
cE1lbnVUZXN0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAg
ICAgIG1fd2ViVmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oV2ViVmlldzo6Y3JlYXRl
KCZtX3dlYnZpZXdDbGllbnQsIDApKTsKICAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFp
bkZyYW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKLSAgICAgICAgbV9wb3B1cE1lbnUgPSBuZXcgUG9w
dXBNZW51Q2hyb21pdW0oJm1fcG9wdXBNZW51Q2xpZW50KTsKKyAgICAgICAgbV9wb3B1cE1lbnUg
PSBQb3B1cE1lbnU6OmNyZWF0ZSgmbV9wb3B1cE1lbnVDbGllbnQpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDFlZmI1MzA0NjE5M2ZkYjU1YzIzODdlOWRmMzgz
MzZiOWM2ZWM5NTIuLmUwNmJjMzk5YmZjZTY3YjJmNGJhMjFiNWNkMjIzMmRhMzE4MzVkM2QgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDgtMDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU3BlY3VsYXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBD
aHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisK
IDIwMTAtMDctMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDIxNzQ3YTFiMGRkNDczM2UwOGVj
MTQ4NDY0MDFlN2EyMmNmNTkxMTcuLmZhNGQzN2E3YzgxMjljYmVhMTdlYTNiODE2YTViMjVmYzE5
NzI0ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHAKQEAgLTUsNyArNSw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRGllZ28gR29uemFsZXoK
ICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDksOCArNDgsNiBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgotI2lu
Y2x1ZGUgIlNlYXJjaFBvcHVwTWVudUVmbC5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5o
IgpAQCAtNTIyLDE5ICs1MTksNCBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6ZGlkUmVjZWl2ZVZp
ZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcgogICAgIGV3a192
aWV3X3ZpZXdwb3J0X3NldChtX3ZpZXcsIGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdo
dCwgYXJndW1lbnRzLmluaXRpYWxTY2FsZSwgYXJndW1lbnRzLm1pbmltdW1TY2FsZSwgYXJndW1l
bnRzLm1heGltdW1TY2FsZSwgYXJndW1lbnRzLnVzZXJTY2FsYWJsZSk7CiB9CiAKLWJvb2wgQ2hy
b21lQ2xpZW50RWZsOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRF
Zmw6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudUVmbChjbGllbnQpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudEVmbDo6Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2VhcmNoUG9wdXBNZW51RWZsKGNsaWVudCkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCBkOTM5YWU2ZDY5MzFmNDdjOTMy
ZTc1YmM3MDAxYzYzNDVlYmI1M2FkLi4yZjNmZDNlNDRlODVmZDcwYzU1YjkyNTg3ZTQ2NzVkOTBj
ZWNlMjgyIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgK
QEAgLTMsNyArMyw2IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBO
b2tpYSBkZSBUZWNub2xvZ2lhCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcwogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcwotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTM5LDEwICsxMzgs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1l
bnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVy
YWwoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0Owot
CiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKICAgICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CiB9
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBlYmU3N2MyMzZjYmEwZDZiNGFhM2JjNDY3N2RlZmVjYzc0MGY2NWNmLi5mZDBmZDdj
NzlkNjFjZjgyZWZiYzRkNzZlMTQ0NjE3ZDdmYTg3MWY2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisy
MDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNwZWN1bGF0aXZlIHJldmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3CisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAyMDEwLTA3LTI3ICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAppbmRleCAwODFjOTQyMTU4YmMxNTNjNjYyNzI1ODE2ZDQ0NzBiMGI5MDNhNmZj
Li4zZWIyMWY4YjI2NjZjZDRhZjNhMzcwMjVkOTRmNzc5NTdkY2JlZGM2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC00LDcgKzQsNiBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsOSArMzQsNiBAQAogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVD
bGllbnQuaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVHdGsuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1
cE1lbnVHdGsuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIndlYmtp
dGdlb2xvY2F0aW9ucG9saWN5ZGVjaXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3Lmgi
CkBAIC02MjYsMTkgKzYyMiw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVjaXNpb24tY2Fu
Y2VsbGVkIiwgd2ViRnJhbWUpOwogfQogCi1ib29sIENocm9tZUNsaWVudDo6c2VsZWN0SXRlbVdy
aXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1QYXNz
UmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQb3B1cE1lbnVHdGsoY2xpZW50KSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUd0ayhjbGllbnQpKTsKLX0KLQogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggOGM2NjdjNGViNTg4M2Iy
MWJhYmFkOWFlYzU0Mjk5M2Y1NmQ2OWZmNC4uMTZhOWY1ZDk1MDkxNzVlMzhiYTgyNTlhMDNmZjAw
MjdhNDUyZTQyNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMs
MTUgKzIyLDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIktVUkwu
aCIKLSNpbmNsdWRlICJQb3B1cE1lbnUuaCIKLSNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIK
IAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgUG9wdXBNZW51Q2xpZW50OwotfQotCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogICAgIGNsYXNzIENocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVD
bGllbnQgewpAQCAtMTMwLDEwICsxMjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUq
LCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJ
dGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2Vi
VmlldzsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBtX2hvdmVyZWRMaW5rVVJMOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXgg
YTNlNzY5ZDhkYWM3YTcxNjg2MzFkMjZmMjZhZjcwODdjMGU4NjkzYy4uM2IzZGU5ZWUzNjRhNmNm
NDA3NmNlNjRjNmJiZWQxOTJjOTk4NTFhZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAt
MDgtMDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Bl
Y3VsYXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorCiAyMDEwLTA3LTI3ICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IDZjNTQ0MjQzZTQxZTYyNGVjNzg1NThiMzgzOGI3YTdi
Y2E2M2VmMGYuLmMzY2RhYTAwN2NhNjhmMDYzMTRkMjg3MzAzMTk2MzNiNmE1MWRlZTQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAK
KysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApA
QCAtMiw3ICsyLDYgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAg
KgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzcsOCArMzYsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUhhaWt1LmgiCi0jaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51SGFpa3UuaCIKIAogI2luY2x1ZGUgPEFsZXJ0Lmg+CiAjaW5jbHVkZSA8U3RyaW5n
Lmg+CkBAIC0zODksMjAgKzM4Niw1IEBAIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gQ2hy
b21lQ2xpZW50SGFpa3U6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogICAgIHJldHVybiAwOwog
fQogCi1ib29sIENocm9tZUNsaWVudEhhaWt1OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklz
TmF0dXJhbCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPFBvcHVwTWVu
dT4gQ2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudUhhaWt1KGNs
aWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SGFp
a3U6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUhhaWt1KGNsaWVudCkp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5kZXggODIwMWZhZTBiNzU3OGVmZTU0MmQ2
ZDlhZmMyNjBkMDgxYWUxMjdhNy4uNDYzZDY2NzRmM2NiMDk2MDY0M2U2N2NjZWJkNmIzYWFkNDQ3
ZGUyOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmgKQEAgLTEsNyArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVz
aW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBSeWFuIExlYXZlbmdvb2Qg
PGxlYXZlbmdvb2RAZ21haWwuY29tPiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjksMTAgKzEyOCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRl
bVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KICNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6
ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWU0ZmIyYzZi
NGVkZjBlOTFlNDMyM2NlOWExMWIzODA4MTMxYjBlYi4uNGE4ZWI3YjMyMzNmZjEyNTg4MjZlYzhm
ZDU0ZWIzNGY3OTYxNDNkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAxMC0wOC0wMiAgSmVyZW15
IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVjdWxhdGl2ZSByZXZl
cnQgb2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3RhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM0NworCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tOgorCiAyMDEwLTA3LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDUwYzE1
OWNhNDFiZTY1Y2E1MTg5NmIxMjczYjAxZjdmMGU5OWNjYmQuLmY0NTRjNjA2ODQ0MTVjOTdjNTAy
NTgzNTc3NWU1MWUwN2U5ZDQ4ZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNjgsMTAgKzE2OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9j
YXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKSB7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgp
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgV2ViVmlldyAq
bV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KaW5kZXggMWEzNzM2ZTcyNGVmMGZlYWNhMzgwMWU4NTc5YTM4NjcxYjQ0ODI0OC4uYWMz
NGJjMDI2N2ZhMTIxNjA1MTZlNWJhZjI3MDUyOTkwMjNhYzI5OSAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTYgKzY0LDEyIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUG9wdXBNZW51TWFj
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9TZWFyY2hQb3B1cE1lbnVNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5o
PgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCi0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2VuZGlmCkBAIC03
NDEsMjEgKzczNyw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtRGlkQmx1cihjb25zdCBX
ZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXc6Zm9ybURpZEJsdXJOb2RlOiksIGtpdChjb25zdF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihub2RlKSkpOwogfQogCi1ib29sIFdlYkNocm9tZUNsaWVudDo6c2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1QYXNzUmVm
UHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQb3B1cE1lbnVNYWMoY2xpZW50KSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudU1hYyhjbGllbnQpKTsKLX0KLQogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJv
b3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CmluZGV4IDIxMWM5ZjQ1NTMyOGM5NjUwNTg2MWM5OTM2ZTc0MzViYjJkOGI1ZDUuLjRiNWRkYWQ1
OWY5ZTFiOWY0N2Y1N2I5NWQzYjU4YzNiNTc4OTc3MGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDEw
LTA4LTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNw
ZWN1bGF0aXZlIHJldmVydCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKwogMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGlu
aSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAppbmRleCBhMGJhYzcyMmI2Y2E0YmE3N2MzNzk5YzA0ZWY5MTI3NjQwODg2NmM4Li4yZGY4Yzc4
ODUxMGFlNjk1ODUxYjgzOWEyOTExZjg1M2Y5MDM1YjA4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTEsNyArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Niw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRRdC5oIgotI2luY2x1ZGUgIlBvcHVw
TWVudVF0LmgiCiAjaWYgZGVmaW5lZChRX1dTX01BRU1PXzUpCiAjaW5jbHVkZSAiUXRNYWVtb1dl
YlBvcHVwLmgiCiAjZWxzZQpAQCAtNTQsNyArNTIsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiUVdl
YlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgotI2luY2x1ZGUgIlNl
YXJjaFBvcHVwTWVudVF0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBAIC02
MjUsMTkgKzYyMiw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFy
Z3VtZW50cyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpZXdwb3J0QXJnCiAgICAgZW1pdCBtX3dlYlBh
Z2UtPnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKGhpbnRzKTsKIH0KIAotYm9vbCBDaHJvbWVDbGll
bnRRdDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudFF0OjpjcmVh
dGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVRdChjbGllbnQpKTsKLX0KLQotUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFy
Y2hQb3B1cE1lbnVRdChjbGllbnQpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBhYWIyODEzNDFhNDYz
ZTZjYTE1NTFlYzBlY2MyNTMzOGRmN2VkMGUwLi45OGFiZjVmMDFmOTFmNGFmYjM0NjA2Mjc2YTlh
NzZlMzY3MjgyZDg3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8
emFja0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKQEAgLTE3MCwxMCArMTY5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2Vv
bG9jYXRpb24qKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgeyB9CiAKLSAgICAgICAg
dmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVw
TWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotCiAg
ICAgICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogY3JlYXRlU2VsZWN0UG9wdXAoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiwgY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdl
TG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDJiY2M3MmYyMzAyNTMxMmJmMzc0NGFl
YmE3ZTUxZTFjNWI2YjgyOC4uMzFmOGJjZTc0M2UwNDU0MDNiZWEyYWYxNWUwNDU4ZDNhNjgxMjkx
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wOC0wMiAgSmVyZW15IE9ybG93ICA8am9ybG93
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQgb2YgNjQ0MjUgZHVl
IHRvIENocm9taXVtIGluc3RhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzM0NworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om1vdXNlV2hlZWwp
OgorCiAyMDEwLTA3LTMxICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeDogV2luZG93cy4KZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAwOGQ0ZWU5NDM2YmVjYWYyYzc2Mzlj
N2VlNzUwMDBhMTIxMjZhZDk5Li40ZTE1YmU3MGE3MDg3NTA1ZTM5N2I4ZDlmYjA1NjBkMmU5OWZj
ZDNhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0xLDYgKzEsNSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw4ICs1Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudVdpbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIApAQCAtODc3LDE4
ICs4NzQsMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5v
ZGUqKQogCiAjZW5kaWYKIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5n
RGlyZWN0aW9uSXNOYXR1cmFsKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUGFzc1JlZlB0
cjxQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBNZW51
V2luKGNsaWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVXaW4oY2xpZW50
KSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IGNlYTExYzcxN2I5ZDA3ZjM2NmViMWZiODIyYzdiMmJlZDBkMGRlZmIuLjdhNjBmYjYyNDk5
MjI1ZDY5N2JmNGZiNTg5NGQ0YzYxZjYxNWIzZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY3LDEw
ICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKj4obV9ub3RpZmljYXRpb25zRGVs
ZWdhdGUuZ2V0KCkpOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlKCk7CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CmluZGV4IDhkZmI3ZTc2YWZiOGRhYzIwNjY0Y2ZjZTljOTBiMmMwMjBkNWI0NzYuLjQxYWUwNzk0
NWViYjYwOWY5YmViYmJlODVjZmE4OTUwMzg2NWRhNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTEwLDcgKzExMCw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Qb3B1cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJh
Y2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlclRoZW1lLmg+CkBAIC0xNjE0LDkgKzE2MTMsOSBAQCBib29sIFdlYlZpZXc6Om1v
dXNlV2hlZWwoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVs
KQogICAgICAgICBUQ0hBUiBjbGFzc05hbWVbMjU2XTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUg
dHJ1bmNhdGlvbiB3b24ndCBhZmZlY3QgdGhlIGNvbXBhcmlzb24uCi0gICAgICAgIEFTU0VSVChB
UlJBWVNJWkUoY2xhc3NOYW1lKSA+IF90Y3NsZW4oUG9wdXBNZW51V2luOjpwb3B1cENsYXNzTmFt
ZSgpKSk7CisgICAgICAgIEFTU0VSVChBUlJBWVNJWkUoY2xhc3NOYW1lKSA+IF90Y3NsZW4oUG9w
dXBNZW51Ojpwb3B1cENsYXNzTmFtZSgpKSk7CiAKLSAgICAgICAgaWYgKEdldENsYXNzTmFtZShm
b2N1c2VkV2luZG93LCBjbGFzc05hbWUsIEFSUkFZU0laRShjbGFzc05hbWUpKSAmJiAhX3Rjc2Nt
cChjbGFzc05hbWUsIFBvcHVwTWVudVdpbjo6cG9wdXBDbGFzc05hbWUoKSkpIHsKKyAgICAgICAg
aWYgKEdldENsYXNzTmFtZShmb2N1c2VkV2luZG93LCBjbGFzc05hbWUsIEFSUkFZU0laRShjbGFz
c05hbWUpKSAmJiAhX3Rjc2NtcChjbGFzc05hbWUsIFBvcHVwTWVudTo6cG9wdXBDbGFzc05hbWUo
KSkpIHsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGxldCB0aGUgV2ViVmlldyBzY3JvbGwgaGVy
ZSBmb3IgdHdvIHJlYXNvbnMgLSAxKSBUbyBtYXRjaCBGaXJlZm94IGJlaGF2aW9yLCAyKSBJZiB3
ZSBkbyBzY3JvbGwsIHdlIGxvc2UgdGhlCiAgICAgICAgICAgICAvLyBmb2N1cyByaW5nIGFyb3Vu
ZCB0aGUgc2VsZWN0IG1lbnUuCiAgICAgICAgICAgICBTZXRGb2N1cyhtX3ZpZXdXaW5kb3cpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5k
ZXggNjZjY2UxNWYxMGViNGVhZDIzZjQyYWZlMzJmYmRjZDk4ZGU2YmQ1Yi4uMWNkNTY0NmQ1NmMx
OTFmMzM2MTczMjFmYjQ0MjA4OTNjNjBlNWEwNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDgt
MDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlY3Vs
YXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAgICAgICAqIFdlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKKwogMjAxMC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1
aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKaW5kZXgg
OWM5MDU5NmRhN2YwMzBjNzQxNzhkZTMxOTM5MWI0MjViY2NmOGQ0Ny4uNzY0NjQ4Y2E0NmMzNjU4
YmU5Y2IwZTA1YjdlZjkzN2I0M2ZhMDY0OSAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQwLDggKzM5LDYgQEAKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJQb3B1cE1lbnVXeC5oIgotI2luY2x1
ZGUgIlNlYXJjaFBvcHVwTWVudVd4LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAog
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00NjcsMTkgKzQ2NCw0IEBAIHZvaWQgQ2hyb21lQ2xpZW50
V3g6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0
aW9uKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIENocm9tZUNsaWVudFd4Ojpz
ZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFBvcHVwTWVudVd4KGNsaWVudCkpOwotfQotCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVw
TWVudT4gQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVw
TWVudVd4KGNsaWVudCkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5oIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guaAppbmRleCA1YjYwNDQ2NjVhNDZlNjZiZmNkYjNiNzVlNWM1NDVlNDVkMjRhNzgwLi41
MmVjMGQ4MTE5ZGEyZjE2NDQ3ZmVlNTMzNDQ1NTVhMmUzZmUyMmRhIDEwMDY0NAotLS0gYS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAgLTEsNiArMSw1IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0xNDMsMTAgKzE0
Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRp
b24qKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklz
TmF0dXJhbCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2Vh
cmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3Q7Ci0KIHByaXZhdGU6CiAgICAgd3hXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3ZWMxMGE1NGU5
ZjJmOGIxN2ViNWVkZTU5NmU4YTdhMmQ5MDU3ZWUwLi4xYjM5NzY5ODMyZDc4MzgzYWYxZThiMThj
OTBlMTc5ZWZlZDc3YzM2IDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA4LTAyICBKZXJlbXkgT3Jsb3cg
IDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWN1bGF0aXZlIHJldmVydCBvZiA2
NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzQ3CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQb3B1cE1lbnUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6IFJlbW92ZWQu
CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTA4LTAxICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQ0
NGU0M2I5OWQxNzVmZWFmZDUzYWE5OTY2ZGEzMWEzNGEzMDUyYi4uMTVmZTQyMTVjZDM2MTE1OGVi
ZjU3ZjBjNmUwZWU1NTk3NzZiOWRiMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI2NiwxMCArMjY2LDYgQEAKIAkJQkNGNjlGQTMxMTc2RDAxNDAwNDcx
QTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0
aW9uRGF0YS5jcHAgKi87IH07CiAJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmln
YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNGNjlGQUExMTc2RDFD
QjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2
aWdhdGlvbkRhdGEuY3BwICovOyB9OwotCQlEM0I5NDg0NjExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
UG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovOyB9Owot
CQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07Ci0JCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAv
KiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVw
TWVudS5jcHAgKi87IH07Ci0JCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsK
IAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFF
RTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
ICovOyB9OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwICovOyB9OwogCQlFMUVFNTVGNDExRjhGMTg5MDBDQ0JFRTQgLyogV0tCdW5k
bGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFRTU1RjMxMUY4RjE4OTAwQ0NCRUU0IC8qIFdLQnVuZGxlUmFuZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC01NzAsMTAgKzU2Niw2IEBACiAJ
CUJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3MUE1MiAvKiBX
S05hdmlnYXRpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2
aWdhdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGNjlGQTgxMTc2
RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tOYXZpZ2F0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8q
IFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1
cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDNCOTQ4NDQxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxRUU1NUYzMTFGOEYxODkwMENDQkVFNCAvKiBXS0J1bmRsZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUmFuZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2OCwxMCArODYwLDYgQEAKIAkJCQlCQzAzMkQ2
RDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJMUEzRTcz
NjAxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi8sCiAJCQkJ
MUEzRTczNUYxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICovLAot
CQkJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovLAotCQkJ
CUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLywKLQkJCQlEM0I5
NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLywKLQkJCQlE
M0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFdlYkNvcmVTdXBwb3J0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzMzcsOCArMTMyNSw2IEBACiAJCQkJQkNEQjg2QzExMjAwRkI5NzAwNzI1NEJFIC8qIFdl
YlVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMjhDQzAxMjAyMzNEOTAwN0Q5OUJDIC8qIElu
amVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NCNzVDNjEy
MDNBMUNFMDAyMjJEMUIgLyogV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVu
dS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTQwLDggKzE1MjYsNiBAQAogCQkJCTFBRTQ5ODc5MTFG
RjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTQ5
QTRBMTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDREI4NTgzMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmMDU4MGNlMmJmZjhjNjMyYzU5MDA3
NmMxMzBkZjVjOTE1ODMyYjU1Li40ZGVmN2M1M2U5NTFiMTVlZTAxMWRiM2MyNTA3MTU2ZGNmOWM0
ZTdiIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTEgKzM0LDkgQEAKICNpbmNsdWRlICJXZWJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlNZXNzYWdlS2luZHMuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oIgotI2luY2x1ZGUgIldlYlNlYXJj
aFBvcHVwTWVudS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpAQCAt
NDc4LDIxICs0NzUsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9ybURpZEJsdXIoY29uc3Qg
Tm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBXZWJDaHJvbWVDbGllbnQ6
OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKLXsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51KGNsaWVudCkpOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTZWFyY2hQb3B1cE1lbnUoY2xpZW50KSk7
Ci19Ci0KIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVIVE1MUGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDM1YjlmOTYwODQ5ZTVjNjMzYjIxZDJlZThhYjlmZWYwM2Q1ZDQ5YmQuLmQyNmE0ZWU4ZWI2NGJi
NTFmMGE2YzgwZTU0ZDA1ZGNjOTZmNzUxMjUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEsNiArMSw1IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCwxMCArMTYz
LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRN
TFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpOwogCi0gICAgdmlydHVhbCBi
b29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqKSBjb25zdDsKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERy
YXdpbmdTeW5jaHJvbml6YXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQyZjdkMzIzY2U4MjM0YmExNDI4NDYxMTcxZGZiZjJjNzYxYjA3MjIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKgotICovCi0jaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQb3B1cE1lbnU6OldlYlBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXBDbGllbnQoY2xp
ZW50KQotewotfQotCi1XZWJQb3B1cE1lbnU6On5XZWJQb3B1cE1lbnUoKQotewotfQotCi0KLXZv
aWQgV2ViUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKLXsKLSAgICBtX3BvcHVwQ2xpZW50
ID0gMDsKLX0KLQotdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCwgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCi17Ci0KLX0KLQot
dm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQotewotfQotCi12b2lkIFdlYlBvcHVwTWVudTo6dXBk
YXRlRnJvbUVsZW1lbnQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGUyZWEzYTFjMDQzNDAwNGMxNTYyYWRiN2U3ZWI4MDc2MDEzMjk2NGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFdlYlBvcHVwTWVudV9oCi0jZGVmaW5lIFdlYlBv
cHVwTWVudV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJQb3B1cE1lbnUgOiBwdWJsaWMgV2ViQ29yZTo6UG9wdXBNZW51IHsKLXB1
YmxpYzoKLSAgICBXZWJQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7Ci0gICAg
fldlYlBvcHVwTWVudSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7Ci0gICAgdmlydHVhbCB2
b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwotCi1wcml2YXRlOgotICAgIFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFdl
YlBvcHVwTWVudV9oCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiNjQ5OWNiODYxYjZkNDUwY2M4MDRhMzQ1NjMxMmNjZmY3YTVkYjI3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0KLSNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1l
bnUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlNlYXJjaFBvcHVwTWVudTo6V2ViU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9w
b3B1cChjbGllbnQpCi17Ci19Ci0KLVdlYkNvcmU6OlBvcHVwTWVudSogV2ViU2VhcmNoUG9wdXBN
ZW51Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiAmbV9wb3B1cDsKLX0KLQotdm9pZCBXZWJT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXZWJDb3JlOjpBdG9taWNT
dHJpbmcmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYpCi17Ci19Ci0KLXZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29yZTo6QXRvbWlj
U3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mKQotewotfQotCi1ib29sIFdlYlNlYXJj
aFBvcHVwTWVudTo6ZW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19CmRpZmYg
LS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBN
ZW51LmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBN
ZW51LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNmZjMzk3NTc0ZGYyZTViNTYw
MDVkYjZmMTRhODQ5ODllYmYyZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAq
LwotCi0jaWZuZGVmIFdlYlNlYXJjaFBvcHVwTWVudV9oCi0jZGVmaW5lIFdlYlNlYXJjaFBvcHVw
TWVudV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgotI2luY2x1ZGUg
IldlYlBvcHVwTWVudS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU2VhcmNo
UG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0g
ICAgV2ViU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwotCi0gICAg
dmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgYm9v
bCBlbmFibGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51IG1fcG9wdXA7Ci19Owot
Ci19Ci0KLSNlbmRpZiAvLyBXZWJTZWFyY2hQb3B1cE1lbnVfaApkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCA5
YzUwY2EyZjk5OWY4ZTVjODk4ODUxODc3NTE4OWNkNjY3ZmY3MDljLi5hMzg0MmZkOGUwMzIwMDky
YjRjZTE2ZjAzODBiMDRhODcxZGUyNWVlIDEwMDc1NQotLS0gYS9XZWJLaXQyL3dpbi9XZWJLaXQy
LnZjcHJvagorKysgYi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNTgzLDIyICs1ODMs
NiBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcV2Vi
SW5zcGVjdG9yQ2xpZW50LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydFxXZWJQb3B1cE1l
bnUuY3BwIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcV2ViUG9wdXBNZW51LmgiDQotCQkJ
CQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2Vi
UHJvY2Vzc1xXZWJDb3JlU3VwcG9ydFxXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIg0KLQkJCQkJPg0K
LQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcV2ViQ29yZVN1cHBvcnRcV2ViU2VhcmNoUG9wdXBNZW51LmgiDQotCQkJCQk+DQotCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0id2luIg0KIAkJCQkJPg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>