<?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>73610</bug_id>
          
          <creation_ts>2011-12-01 18:49:17 -0800</creation_ts>
          <short_desc>[chromium] Move WebLayer and WebFloat(Point|Quad|Rect) APIs to platform directory</short_desc>
          <delta_ts>2011-12-02 17:42:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513384</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-01 18:49:17 -0800</bug_when>
    <thetext>[chromium] Move WebLayer and WebFloat(Point|Quad|Rect) APIs to platform directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513385</commentid>
    <comment_count>1</comment_count>
      <attachid>117540</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-01 18:50:53 -0800</bug_when>
    <thetext>Created attachment 117540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513386</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-01 18:51:13 -0800</bug_when>
    <thetext>After this lands and rolls I&apos;ll remove the downstream users of the old header locations then remove the forwarding headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513387</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 18:53:02 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513422</commentid>
    <comment_count>4</comment_count>
      <attachid>117540</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-12-01 20:09:07 -0800</bug_when>
    <thetext>Comment on attachment 117540
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514304</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-02 17:42:36 -0800</bug_when>
    <thetext>Committed r101885: &lt;http://trac.webkit.org/changeset/101885&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117540</attachid>
            <date>2011-12-01 18:50:53 -0800</date>
            <delta_ts>2011-12-01 22:34:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73610-20111201185052.patch</filename>
            <type>text/plain</type>
            <size>73040</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDBkYjcyYjQ0ZmUyMDg5MjUzMjU5Y2Y2ZjZiMmYxZjZkYzJkYmJjNjIuLjgzMDdhNDc4NDkwZDhi
YTdlZmRiNzFhY2NkOTYyMjM0YmYyZjA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzggQEAKKzIwMTEtMTItMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1vdmUgV2ViTGF5ZXIgYW5kIFdlYkZsb2F0
KFBvaW50fFF1YWR8UmVjdCkgQVBJcyB0byBwbGF0Zm9ybSBkaXJlY3RvcnkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29udGVudExh
eWVyLmg6CisgICAgICAgICogcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oOgorICAgICAg
ICAqIHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGbG9hdFBvaW50Lmg6CisgICAgICAgICogcHVibGljL1dlYkZsb2F0UXVhZC5oOgorICAgICAg
ICAqIHB1YmxpYy9XZWJGbG9hdFJlY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTGF5ZXIuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViTGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50
Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkNvbnRlbnRMYXllci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6On5XZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcHVibGljL3Bs
YXRmb3JtL1dlYkNvbnRlbnRMYXllckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGVudExheWVyQ2xpZW50Ojp+V2ViQ29udGVudExheWVyQ2xpZW50KToKKyAgICAg
ICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
aC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
On5XZWJFeHRlcm5hbFRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJG
bG9hdFBvaW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZsb2F0UG9pbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmxvYXRQb2ludDo6V2ViRmxvYXRQ
b2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZsb2F0UG9pbnQ6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZsb2F0UG9pbnQ6Om9wZXJhdG9yIFdlYkNvcmU6OkZsb2F0UG9pbnQp
OgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0
b3IhPSk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1YWQuaC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRmxvYXRRdWFkOjpXZWJGbG9hdFF1YWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGbG9hdFF1YWQ6Om9wZXJhdG9yPSk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YkZsb2F0UmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGbG9hdFJlY3QuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmxvYXRSZWN0Ojppc0VtcHR5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRmxvYXRSZWN0OjpXZWJGbG9hdFJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGbG9hdFJlY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZs
b2F0UmVjdDo6b3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHB1
YmxpYy9wbGF0Zm9ybS9XZWJMYXllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllci5oLgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6V2ViTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6fldlYkxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpp
c051bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6dG8pOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6dG9Db25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjp1bndyYXAp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y29uc3RVbndyYXApOgorICAgICAgICAoV2Vi
S2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAgICAg
ICogcHVibGljL3BsYXRmb3JtL1dlYkxheWVyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyQ2xpZW50LmguCisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyQ2xpZW50Ojp+V2ViTGF5ZXJDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJMYXllclRyZWVWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6V2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXc6On5XZWJMYXllclRyZWVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlldzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3Q2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlld0NsaWVudDo6fldlYkxheWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmg6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRMYXll
ci5jcHA6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAq
IHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHA6CisgICAgICAgICogc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHA6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisKIDIwMTEt
MTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2ViRGV2VG9vbHNBZ2VudDo6ZnJvbnRl
bmRMb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bnRlbnRMYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExh
eWVyLmgKaW5kZXggZTNjMTk3YTMzYTg5MjQ3MGM3OWMwMTcwNGE4NWUxZTBmY2M0ZmRjZC4uZDEy
ODM0N2Q0M2QxYzliNDQ5ZWYyZDg2OTdkYjdjNWY0ZTg4YWViZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKQEAgLTIzLDUzICsyMyw1IEBA
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29udGVudExheWVyX2gKLSNkZWZpbmUg
V2ViQ29udGVudExheWVyX2gKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXIuaCIK
IAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwotY2xh
c3MgV2ViQ29udGVudExheWVySW1wbDsKLXN0cnVjdCBXZWJGbG9hdFJlY3Q7Ci1jbGFzcyBXZWJM
YXllckNsaWVudDsKLQotY2xhc3MgV2ViQ29udGVudExheWVyIDogcHVibGljIFdlYkxheWVyIHsK
LXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRl
KFdlYkxheWVyQ2xpZW50KiwgV2ViQ29udGVudExheWVyQ2xpZW50Kik7Ci0KLSAgICBXZWJDb250
ZW50TGF5ZXIoKSB7IH0KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29udGVudExheWVy
JiBsYXllcikgOiBXZWJMYXllcihsYXllcikgeyB9Ci0gICAgdmlydHVhbCB+V2ViQ29udGVudExh
eWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29udGVu
dExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBs
YXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0OwotCi0gICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIg
YXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCi0gICAgLy8gVGhl
IHZpc2libGUgYXJlYSBvZiB0aGUgZGlydHkgcmVjdCB3aWxsIGJlIHBhc3NlZCB0byBvbmUgb3Ig
bW9yZSBjYWxscyB0bwotICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50
cyBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgb2NjdXJzLgotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKLQotICAgIC8vIFNldHMg
dGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29u
dGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwotCi0gICAgLy8gUmV0
dXJucyB0aGUgcmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IGlzIGN1cnJlbnRseSBpbnZhbGlkLgot
ICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRSZWN0IGludmFsaWRSZWN0KCkgY29uc3Q7Ci0KLSNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+Jik7Ci0gICAgV2ViQ29udGVudExheWVyJiBv
cGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+Jik7Ci0g
ICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+KCkgY29uc3Q7
Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQ29u
dGVudExheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNvbnRlbnRMYXllckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29udGVudExheWVyQ2xpZW50LmgKaW5kZXggOTNkMmVhZjY4ZDU5ZTRkYWE1NDU2OWFhZGZiZmY4
MGEzNTY3NjMwMC4uNThlNGVhMDYxMDYxZTAyOWU1MTk0ZDYyY2M2ZjJjNzk3NmUwMmZkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVy
Q2xpZW50LmgKQEAgLTIzLDI2ICsyMyw1IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
V2ViQ29udGVudExheWVyQ2xpZW50X2gKLSNkZWZpbmUgV2ViQ29udGVudExheWVyQ2xpZW50X2gK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXJDbGllbnQuaCIKIAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNhbnZhcy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBXZWJS
ZWN0OwotCi1jbGFzcyBXZWJDb250ZW50TGF5ZXJDbGllbnQgewotcHVibGljOgotICAgIC8vIFBh
aW50cyB0aGUgY29udGVudCBhcmVhIGZvciB0aGUgbGF5ZXIsIHR5cGljYWxseSBkaXJ0eSByZWN0
cyBzdWJtaXR0ZWQKLSAgICAvLyB0aHJvdWdoIFdlYkNvbnRlbnRMYXllcjo6c2V0TmVlZHNEaXNw
bGF5LCBzdWJtaXR0aW5nIGRyYXdpbmcgY29tbWFuZHMKLSAgICAvLyB0aHJvdWdoIHRoZSBXZWJD
YW52YXMuCi0gICAgLy8gVGhlIGNhbnZhcyBpcyBhbHJlYWR5IGNsaXBwZWQgdG8gdGhlIHxjbGlw
fCByZWN0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNhbnZhcyosIGNvbnN0
IFdlYlJlY3QmIGNsaXApID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkNvbnRl
bnRMYXllckNsaWVudCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBXZWJDb250ZW50TGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgKaW5kZXggMjQzZjljODM2
NmNiMDY0NjY5ZGE3ZTI5ZWUwNTM2YmZjOTdhOTY3My4uM2JhM2Y5YmNmOTU5ZWNlZWY1ODhmNzNk
NjA4MDczZjAzZGY1OTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCkBAIC0yMyw1OCArMjMsNSBAQAogICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKLSNkZWZp
bmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJfaAorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmgiCiAKLSNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJXZWJMYXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDsKLWNsYXNzIFdl
YkxheWVyQ2xpZW50OwotCi0vLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsYXllciB0aGF0IHJl
bmRlcnMgYSB0ZXh0dXJlIHRoYXQgaXMgZ2VuZXJhdGVkCi0vLyBleHRlcm5hbGx5IChub3QgbWFu
YWdlZCBieSB0aGUgV2ViTGF5ZXJUcmVlVmlldykuCi0vLyBUaGUgdGV4dHVyZSB3aWxsIGJlIHVz
ZWQgYnkgdGhlIFdlYkxheWVyVHJlZVZpZXcgZHVyaW5nIGNvbXBvc2l0aW5nIHBhc3Nlcy4KLS8v
IFdoZW4gaW4gc2luZ2xlLXRocmVhZCBtb2RlLCB0aGlzIG1lYW5zIGR1cmluZyBXZWJMYXllclRy
ZWVWaWV3Ojpjb21wb3NpdGUoKS4KLS8vIFdoZW4gdXNpbmcgdGhlIHRocmVhZGVkIGNvbXBvc2l0
b3IsIHRoaXMgY2FuIG1lYW4gYXQgYW4gYXJiaXRyYXJ5IHRpbWUgdW50aWwKLS8vIHRoZSBXZWJM
YXllclRyZWVWaWV3IGlzIGRlc3Ryb3llZC4KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
IDogcHVibGljIFdlYkxheWVyIHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllciBjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKTsKLQotICAgIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIo
Y29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7
IH0KLSAgICB2aXJ0dWFsIH5XZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQotICAgIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIGlkIHRo
YXQgcmVwcmVzZW50cyB0aGUgbGF5ZXIsIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlCi0gICAgLy8g
Y29tcG9zaXRvciBjb250ZXh0LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0dXJlSWQo
dW5zaWduZWQpOwotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7
Ci0KLSAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlw
cGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCi0gICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEZsaXBwZWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGZs
aXBwZWQoKSBjb25zdDsKLQotICAgIC8vIFNldHMgdGhlIHJlY3QgaW4gVVYgc3BhY2Ugb2YgdGhl
IHRleHR1cmUgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIGxheWVyCi0gICAgLy8gYm91bmRzLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7Ci0gICAg
V0VCS0lUX0VYUE9SVCBXZWJGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3Q7Ci0KLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOwotICAgIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbD4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpIGNvbnN0OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaAppbmRleCBmMTBjZmQ1
N2ZjMmU4NGZhMTA0ZWEzNWEwMTQxYWYwNTBhYzEzODI2Li5hYzUyMjgxODExZTk0NWNiNzNmZjI1
YzU3MTM5ZTUxZDY4ZTg2NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmxvYXRQb2ludC5oCkBAIC0xLDkxICsxLDI2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKICAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJGbG9hdFBvaW50X2gKLSNkZWZpbmUgV2ViRmxvYXRQb2ludF9oCi0KLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RydWN0IFdlYkZsb2F0UG9pbnQgewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQgeTsKLQot
ICAgIFdlYkZsb2F0UG9pbnQoKQotICAgICAgICA6IHgoMC4wZikKLSAgICAgICAgLCB5KDAuMGYp
Ci0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkKLSAg
ICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5KQotICAgIHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIHApCi0gICAgICAgIDogeChwLngoKSkKLSAgICAgICAgLCB5KHAueSgpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBXZWJGbG9hdFBvaW50JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgcCkKLSAgICB7Ci0gICAgICAgIHggPSBwLngoKTsKLSAgICAgICAgeSA9IHAueSgpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6Rmxv
YXRQb2ludCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2lu
dCh4LCB5KTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgV2ViRmxvYXRQb2ludCYgYSwgY29uc3QgV2ViRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1
cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFdlYkZsb2F0UG9pbnQmIGEsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgKaW5kZXggYzAzMjU5ODE0ZDViNmQ5ZjRiMTdkMmM5
NzEwMGE5MjM4YjgzZDkyMy4uNzI5MjRmZTAxYTM1YzIwODRhNGM3YmE1NTBkNzQ5MmJlYmNjOTY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFk
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgKQEAg
LTIsODEgKzIsMjUgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZsb2F0UXVh
ZF9oCi0jZGVmaW5lIFdlYkZsb2F0UXVhZF9oCi0KLSNpbmNsdWRlICJXZWJGbG9hdFBvaW50Lmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
UmVjdC5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNtYXRoPgotCi0jaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0jZW5kaWYKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJGbG9hdFF1YWQgewotICAgIFdlYkZsb2F0
UG9pbnQgcFs0XTsKLQotICAgIFdlYkZsb2F0UXVhZCgpCi0gICAgewotICAgIH0KLQotICAgIFdl
YkZsb2F0UXVhZChjb25zdCBXZWJGbG9hdFBvaW50JiBwMCwgY29uc3QgV2ViRmxvYXRQb2ludCYg
cDEsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAyLCBjb25zdCBXZWJGbG9hdFBvaW50JiBwMykKLSAg
ICB7Ci0gICAgICAgIHBbMF0gPSBwMDsKLSAgICAgICAgcFsxXSA9IHAxOwotICAgICAgICBwWzJd
ID0gcDI7Ci0gICAgICAgIHBbM10gPSBwMzsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlJlY3QgZW5jbG9zaW5nUmVjdCgpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgV2ViRmxvYXRRdWFkJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBx
KQotICAgIHsKLSAgICAgICAgcFswXSA9IHEucDEoKTsKLSAgICAgICAgcFsxXSA9IHEucDIoKTsK
LSAgICAgICAgcFsyXSA9IHEucDMoKTsKLSAgICAgICAgcFszXSA9IHEucDQoKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBXZWJGbG9hdFF1YWQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRRdWFkJiBxKQotICAgIHsKLSAgICAgICAgKnRoaXMgPSBxOwotICAgIH0KLSNlbmRpZgotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkZsb2F0UXVhZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmxvYXRSZWN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJl
Y3QuaAppbmRleCAwODkyYmE4ZWI0OWQ2MzI1MmZhN2FkZmJjZDFiZWMzMGNiMGJiNzczLi42Y2Jk
MTZkMjdkNjk0OWJkMmM2Y2FhOWFkNTJjNDYxMGRhMTA1YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaApAQCAtMSwxMDMgKzEsMjYgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZsb2F0UmVjdF9oCi0jZGVmaW5lIFdlYkZs
b2F0UmVjdF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxvYXRSZWN0IHsKLSAgICBmbG9hdCB4OwotICAg
IGZsb2F0IHk7Ci0gICAgZmxvYXQgd2lkdGg7Ci0gICAgZmxvYXQgaGVpZ2h0OwotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gd2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMDsgfQot
Ci0gICAgV2ViRmxvYXRSZWN0KCkKLSAgICAgICAgOiB4KDAuMGYpCi0gICAgICAgICwgeSgwLjBm
KQotICAgICAgICAsIHdpZHRoKDAuMGYpCi0gICAgICAgICwgaGVpZ2h0KDAuMGYpCi0gICAgewot
ICAgIH0KLQotICAgIFdlYkZsb2F0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IHgoeCkKLSAgICAgICAgLCB5KHkpCi0gICAgICAgICwg
d2lkdGgod2lkdGgpCi0gICAgICAgICwgaGVpZ2h0KGhlaWdodCkKLSAgICB7Ci0gICAgfQotCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViRmxvYXRSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgcikKLSAgICAgICAgOiB4KHIueCgpKQotICAgICAgICAsIHkoci55KCkpCi0g
ICAgICAgICwgd2lkdGgoci53aWR0aCgpKQotICAgICAgICAsIGhlaWdodChyLmhlaWdodCgpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9hdFJlY3QmIG9wZXJhdG9yPShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHIpCi0gICAgewotICAgICAgICB4ID0gci54KCk7Ci0gICAgICAgIHkgPSBy
LnkoKTsKLSAgICAgICAgd2lkdGggPSByLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHIuaGVp
Z2h0KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJD
b3JlOjpGbG9hdFJlY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZs
b2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViRmxvYXRSZWN0JiBhLCBjb25zdCBXZWJGbG9hdFJl
Y3QmIGIpCi17Ci0gICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueSAmJiBhLndpZHRo
ID09IGIud2lkdGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQ7Ci19Ci0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgV2ViRmxvYXRSZWN0JiBhLCBjb25zdCBXZWJGbG9hdFJlY3QmIGIpCi17
Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggODYzNDY1YjIzZGQ5MWUyOWRkNmUwMzRmM2I1
YmU0YmVlODJjNTNjOS4uYjgwZTVjNjkzODk5ZjEzMmUwZGRkMTQzMTE2ODM1YWRmNDlhYzU3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC0yMywxMjIgKzIz
LDUgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJMYXllcl9oCi0jZGVmaW5lIFdl
YkxheWVyX2gKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgogCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLWNsYXNzIFNrTWF0cml4NDQ7Ci1uYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1zdHJ1Y3QgV2ViRmxvYXRQb2ludDsKLWNsYXNzIFdlYkxheWVyQ2xpZW50Owotc3RydWN0
IFdlYlNpemU7Ci0KLWNsYXNzIFdlYkxheWVyIHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJMYXllciBjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKTsKLQotICAgIFdlYkxheWVy
KCkgeyB9Ci0gICAgV2ViTGF5ZXIoY29uc3QgV2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXll
cik7IH0KLSAgICB2aXJ0dWFsIH5XZWJMYXllcigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVy
JiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWdu
KGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgp
IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsK
LSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIHJvb3RMYXllcigpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgV2ViTGF5ZXIgcGFyZW50KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluc2Vy
dENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVuY2UsIGNvbnN0IFdlYkxh
eWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUZyb21QYXJlbnQo
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Q7Ci0KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KTsKLSAgICBXRUJLSVRf
RVhQT1JUIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldEJvdW5kcyhjb25zdCBXZWJTaXplJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXpl
IGJvdW5kcygpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE1hc2tzVG9Cb3Vu
ZHMoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdDsK
LQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIoY29uc3QgV2ViTGF5ZXImKTsK
LSAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIG1hc2tMYXllcigpIGNvbnN0OwotCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShi
b29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgb3BhcXVlKCkgY29uc3Q7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYpOwotICAgIFdF
QktJVF9FWFBPUlQgV2ViRmxvYXRQb2ludCBwb3NpdGlvbigpIGNvbnN0OwotCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsKLQot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYpOwot
ICAgIFdFQktJVF9FWFBPUlQgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpOwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCB0bygpCi0gICAgewotICAgICAgICBUIHJlczsKLSAgICAg
ICAgcmVzLldlYkxheWVyOjphc3NpZ24oKnRoaXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQgdG9Db25zdCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBUIHJlczsKLSAgICAgICAgcmVzLldlYkxheWVyOjphc3NpZ24oKnRoaXMp
OwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIFdlYkxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9t
aXVtPiYpOwotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkxheWVyQ2hyb21pdW0+KCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCogdW53cmFwKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wcml2
YXRlLmdldCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiBj
b25zdFVud3JhcCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgVCo+KG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+IG1fcHJpdmF0ZTsKLX07Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXImIGEsIGNvbnN0IFdlYkxheWVy
JiBiKQotewotICAgIHJldHVybiBhLmVxdWFscyhiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCi17Ci0gICAgcmV0dXJu
ICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJM
YXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJDbGllbnQu
aAppbmRleCA5ZjE0OGJhMmVlMTM3ODQyYjExMmRjMzI5MmM5ODA0OWU1NWNlOTZlLi43MzQyMzA0
NWRjMjc2N2NjY2U4NmIzMzc1ODMyZmVhYmVlMjZjMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyQ2xpZW50LmgKQEAgLTIzLDI2ICsyMyw1IEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViTGF5ZXJDbGllbnRfaAotI2RlZmluZSBXZWJMYXll
ckNsaWVudF9oCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJDbGllbnQuaCIKIAotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkxheWVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICAvLyBO
b3RpZmllcyB0aGUgY2xpZW50IHRoYXQgdGhlIGxheWVyIGhhcyBjaGFuZ2VkIGluIGEgd2F5IHRo
YXQgbmVlZHMgYQotICAgIC8vIGNvbXBvc2l0aW5nIHBhc3MgdG8gdmlzdWFsbHkgdXBkYXRlLiBU
aGUgY2xpZW50IHNob3VsZCBldmVudHVhbGx5IGNhbGwKLSAgICAvLyBXZWJMYXllclRyZWVWaWV3
Ojpjb21wb3NpdGUuCi0gICAgLy8gTm90ZTogc29tZSBjb21wbGV4IG9wZXJhdGlvbnMgKGUuZyBs
YXllciByZXBhcmVudGluZykgY2FuIGNhdXNlIHRoaXMgdG8KLSAgICAvLyBiZSBjYWxsZWQgd2hp
bGUgdGhlIGxheWVyIHRyZWUgaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB0byBnZXQK
LSAgICAvLyBjb3JyZWN0IHJlc3VsdHMsIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSBzaG91
bGQgYmUgY2FsbGVkIGFmdGVyIHRoZQotICAgIC8vIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQgKGUu
Zy4gYnkgcG9zdGluZyBhIHRhc2spLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZWVkc0NvbXBv
c2l0ZSgpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkxheWVyQ2xpZW50KCkg
eyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyQ2xp
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZp
ZXcuaAppbmRleCBlNmQwMDIyNDIwMDA2YWRkZjVjMmRmNGVjZmE5ODA0ODFhNWUxYzM1Li5kZWI1
ZDM0YjVkMjU3YmRlYjQwMzgzY2Q2ZTMzYTYzMzA0ODYwNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0yMyw5NyArMjMsNSBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdfaAotI2RlZmlu
ZSBXZWJMYXllclRyZWVWaWV3X2gKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3
LmgiCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDTGF5ZXJU
cmVlSG9zdDsKLXN0cnVjdCBDQ1NldHRpbmdzOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNs
YXNzIFdlYkxheWVyOwotY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVudDsKLXN0cnVjdCBXZWJS
ZWN0Owotc3RydWN0IFdlYlNpemU7Ci0KLWNsYXNzIFdlYkxheWVyVHJlZVZpZXcgewotcHVibGlj
OgotICAgIHN0cnVjdCBTZXR0aW5ncyB7Ci0gICAgICAgIFNldHRpbmdzKCkKLSAgICAgICAgICAg
IDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZz
Y3JlZW4oZmFsc2UpCi0gICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2Up
Ci0gICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQotICAgICAgICAgICAgLCBzaG93
UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpIHsgfQotCi0gICAgICAgIGJvb2wgYWNjZWxlcmF0ZVBh
aW50aW5nOwotICAgICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKLSAgICAgICAgYm9vbCBl
bmFibGVDb21wb3NpdG9yVGhyZWFkOwotICAgICAgICBib29sIHNob3dGUFNDb3VudGVyOwotICAg
ICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwotI2VuZGlm
Ci0gICAgfTsKLQotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyVHJlZVZpZXcgY3Jl
YXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3Qg
U2V0dGluZ3MmKTsKLQotICAgIFdlYkxheWVyVHJlZVZpZXcoKSB7IH0KLSAgICBXZWJMYXllclRy
ZWVWaWV3KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0K
LSAgICB+V2ViTGF5ZXJUcmVlVmlldygpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyVHJlZVZp
ZXcmIG9wZXJhdG9yPShjb25zdCBXZWJMYXllclRyZWVWaWV3JiBsYXllcikKLSAgICB7Ci0gICAg
ICAgIGFzc2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJMYXllclRyZWVWaWV3Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhj
b25zdCBXZWJMYXllclRyZWVWaWV3JikgY29uc3Q7Ci0KLSAgICAvLyBUcmlnZ2VycyBhIGNvbXBv
c2l0aW5nIHBhc3MuIElmIHRoZSBjb21wb3NpdG9yIHRocmVhZCBpcyBkaXNhYmxlZAotICAgIC8v
IChlbmFibGVDb21wb3NpdG9yVGhyZWFkID09IGZhbHNlKSwgdGhlIGNvbXBvc2l0aW5nIHBhc3Mg
aGFwcGVucwotICAgIC8vIGltbWVkaWF0ZWx5LiBJZiBpdCBpcyBlbmFibGVkLCB0aGUgY29tcG9z
aXRpbmcgcGFzcyB3aWxsIGhhcHBlbiBhdCBhCi0gICAgLy8gbGF0ZXIgdGltZS4gQmVmb3JlIHRo
ZSBjb21wb3NpdGluZyBwYXNzIGhhcHBlbnMgKGkuZS4gYmVmb3JlIGNvbXBvc2l0ZSgpCi0gICAg
Ly8gcmV0dXJucyB3aGVuIHRoZSBjb21wb3NpdG9yIHRocmVhZCBpcyBkaXNhYmxlZCksIFdlYkNv
bnRlbnRMYXllcnMgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHBhaW50IHRoZWlyIGRpcnR5IHJl
Z2lvbiwgdGhyb3VnaAotICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY29tcG9zaXRlKCk7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlNpemUgdmlld3BvcnRTaXplKCkgY29uc3Q7Ci0KLSAgICAvLyBDb21wb3NpdGVzIGFu
ZCBhdHRlbXB0cyB0byByZWFkIGJhY2sgdGhlIHJlc3VsdCBpbnRvIHRoZSBwcm92aWRlZAotICAg
IC8vIGJ1ZmZlci4gSWYgaXQgd2Fzbid0IHBvc3NpYmxlLCBlLmcuIGR1ZSB0byBjb250ZXh0IGxv
c3QsIHdpbGwgcmV0dXJuCi0gICAgLy8gZmFsc2UuIFBpeGVsIGZvcm1hdCBpcyAzMmJpdCAoUkdC
QSksIGFuZCB0aGUgcHJvdmlkZWQgYnVmZmVyIG11c3QgYmUKLSAgICAvLyBsYXJnZSBlbm91Z2gg
Y29udGFpbiB2aWV3cG9ydFNpemUoKS53aWR0aCgpICogdmlld3BvcnRTaXplKCkuaGVpZ2h0KCkK
LSAgICAvLyBwaXhlbHMuIFRoZSBXZWJMYXllclRyZWVWaWV3IGRvZXMgbm90IGFzc3VtZSBvd25l
cnNoaXAgb2YgdGhlIGJ1ZmZlci4KLSAgICAvLyBUaGUgYnVmZmVyIGlzIG5vdCBtb2RpZmllZCBp
ZiB0aGUgZmFsc2UgaXMgcmV0dXJuZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVjdCYpOwotCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0gICAgV2ViTGF5ZXJUcmVlVmlldyhjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiYpOwotICAgIFdlYkxheWVyVHJlZVZpZXcmIG9w
ZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiYp
OwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+
KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0PiBtX3ByaXZhdGU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGEsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGIp
Ci17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGEsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGIpCi17
Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJMYXllclRyZWVWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaAppbmRleCA2ZjUwMDk2MDc2Y2Rm
NjYyYjcyNGEwMTgzNDUzNzRjNGIwZDZhZDc4Li43MDViODMxOGEwZTQ2NDU0YzVjOWY3YmY5MDNk
ZjlkYTQ3YTgyYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0yMyw0NCArMjMsNSBAQAogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAotI2RlZmluZSBXZWJM
YXllclRyZWVWaWV3Q2xpZW50X2gKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3
Q2xpZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0
M0Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKLWNsYXNzIFdlYlRocmVhZDsKLQotY2xhc3MgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gVXBkYXRlcyBhbmltYXRpb24gYW5kIGxh
eW91dC4gVGhpcyBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjb21wb3NpdGluZyBwYXNzCi0gICAgLy8g
c28gdGhhdCBsYXllcnMgY2FuIGJlIHVwZGF0ZWQgYXQgdGhlIGdpdmVuIGZyYW1lIHRpbWUuCi0g
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9
IDA7Ci0KLSAgICAvLyBBcHBsaWVzIGEgc2Nyb2xsIGRlbHRhIHRvIHRoZSByb290IGxheWVyLCB3
aGljaCBpcyBidW5kbGVkIHdpdGggYSBwYWdlCi0gICAgLy8gc2NhbGUgZmFjdG9yIHRoYXQgbWF5
IGFwcGx5IGEgQ1NTIHRyYW5zZm9ybSBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgKHVzZWQKLSAgICAv
LyBmb3IgbW9iaWxlLWRldmljZSBwaW5jaCB6b29taW5nKS4gVGhpcyBpcyB0cmlnZ2VyZWQgYnkg
ZXZlbnRzIHNlbnQgdG8gdGhlCi0gICAgLy8gY29tcG9zaXRvciB0aHJlYWQgdGhyb3VnaCB0aGUg
V2ViQ29tcG9zaXRvciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5k
U2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjdG9yKSA9IDA7
Ci0KLSAgICAvLyBDcmVhdGVzIGEgM0QgY29udGV4dCBzdWl0YWJsZSBmb3IgdGhlIGNvbXBvc2l0
aW5nLiBUaGlzIG1heSBiZSBjYWxsZWQKLSAgICAvLyBtb3JlIHRoYW4gb25jZSBpZiB0aGUgY29u
dGV4dCBnZXRzIGxvc3QuCi0gICAgdmlydHVhbCBXZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRl
Q29udGV4dDNEKCkgPSAwOwotCi0gICAgLy8gU2lnbmFscyBhIHN1Y2Nlc3NmdWwgcmViaW5kaW5n
IG9mIHRoZSAzRCBjb250ZXh0IChlLmcuIGFmdGVyIGEgbG9zdAotICAgIC8vIGNvbnRleHQgZXZl
bnQpLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNj
ZXNzKSA9IDA7Ci0KLSAgICAvLyBTY2hlZHVsZXMgYSBjb21wb3NpdGluZyBwYXNzLCBtZWFuaW5n
IHRoZSBjbGllbnQgc2hvdWxkIGNhbGwKLSAgICAvLyBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3Np
dGUgYXQgYSBsYXRlciB0aW1lLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHRoZQotICAgIC8vIGNv
bXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkOyB3aGVuIGVuYWJsZWQsIHRoZSBjb21wb3NpdG9y
IHdpbGwKLSAgICAvLyBpbnRlcm5hbGx5IHNjaGVkdWxlIGEgY29tcG9zaXRpbmcgcGFzcyB3aGVu
IG5lZWRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7Ci0KLXBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3Q2xpZW50KCkgeyB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyVHJlZVZpZXdDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQ29udGVudExheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJDb250ZW50TGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzBhNWU5YWZiNjMxYmY5ODZiNTIyYTFj
NGY2MDNhYTBhMDQ1ZmQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyLmgKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViQ29udGVudExheWVyX2gKKyNkZWZpbmUgV2ViQ29udGVudExheWVyX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkxheWVyLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OworY2xhc3MgV2ViQ29u
dGVudExheWVySW1wbDsKK3N0cnVjdCBXZWJGbG9hdFJlY3Q7CitjbGFzcyBXZWJMYXllckNsaWVu
dDsKKworY2xhc3MgV2ViQ29udGVudExheWVyIDogcHVibGljIFdlYkxheWVyIHsKK3B1YmxpYzoK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdlYkxheWVy
Q2xpZW50KiwgV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisKKyAgICBXZWJDb250ZW50TGF5ZXIo
KSB7IH0KKyAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikg
OiBXZWJMYXllcihsYXllcikgeyB9CisgICAgdmlydHVhbCB+V2ViQ29udGVudExheWVyKCkgeyB9
CisgICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29udGVudExheWVyJiBs
YXllcikKKyAgICB7CisgICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBsYXllciBkcmF3
cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0OworCisgICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgYXMgaW52YWxp
ZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCisgICAgLy8gVGhlIHZpc2libGUg
YXJlYSBvZiB0aGUgZGlydHkgcmVjdCB3aWxsIGJlIHBhc3NlZCB0byBvbmUgb3IgbW9yZSBjYWxs
cyB0bworICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50cyBiZWZvcmUg
dGhlIGNvbXBvc2l0aW5nIHBhc3Mgb2NjdXJzLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKworICAgIC8vIFNldHMgdGhlIGVudGly
ZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgLy8gUmV0dXJucyB0aGUg
cmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IGlzIGN1cnJlbnRseSBpbnZhbGlkLgorICAgIFdFQktJ
VF9FWFBPUlQgV2ViRmxvYXRSZWN0IGludmFsaWRSZWN0KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvbnRlbnRMYXllckltcGw+Jik7CisgICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+Jik7CisgICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+KCkgY29uc3Q7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29udGVudExheWVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkNvbnRlbnRMYXllckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViQ29udGVudExheWVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNkMmVhZjY4ZDU5ZTRk
YWE1NDU2OWFhZGZiZmY4MGEzNTY3NjMwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbnRlbnRMYXllckNsaWVudC5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRlbnRMYXllckNsaWVudF9oCisjZGVm
aW5lIFdlYkNvbnRlbnRMYXllckNsaWVudF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52
YXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3QgV2ViUmVjdDsKKworY2xhc3MgV2Vi
Q29udGVudExheWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBQYWludHMgdGhlIGNvbnRlbnQg
YXJlYSBmb3IgdGhlIGxheWVyLCB0eXBpY2FsbHkgZGlydHkgcmVjdHMgc3VibWl0dGVkCisgICAg
Ly8gdGhyb3VnaCBXZWJDb250ZW50TGF5ZXI6OnNldE5lZWRzRGlzcGxheSwgc3VibWl0dGluZyBk
cmF3aW5nIGNvbW1hbmRzCisgICAgLy8gdGhyb3VnaCB0aGUgV2ViQ2FudmFzLgorICAgIC8vIFRo
ZSBjYW52YXMgaXMgYWxyZWFkeSBjbGlwcGVkIHRvIHRoZSB8Y2xpcHwgcmVjdC4KKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiBjbGlwKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJDb250ZW50TGF5ZXJDbGllbnQoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29udGVudExh
eWVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBh
OTAyZjFlZWU0MWM4MDBjOWNjNTIwZDQzNTFjYTk4YjgyOWEwYjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiV2Vi
TGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw7CitjbGFzcyBXZWJMYXllckNsaWVudDsKKworLy8gVGhpcyBjbGFzcyByZXByZXNl
bnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJzIGEgdGV4dHVyZSB0aGF0IGlzIGdlbmVyYXRlZAorLy8g
ZXh0ZXJuYWxseSAobm90IG1hbmFnZWQgYnkgdGhlIFdlYkxheWVyVHJlZVZpZXcpLgorLy8gVGhl
IHRleHR1cmUgd2lsbCBiZSB1c2VkIGJ5IHRoZSBXZWJMYXllclRyZWVWaWV3IGR1cmluZyBjb21w
b3NpdGluZyBwYXNzZXMuCisvLyBXaGVuIGluIHNpbmdsZS10aHJlYWQgbW9kZSwgdGhpcyBtZWFu
cyBkdXJpbmcgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkuCisvLyBXaGVuIHVzaW5nIHRo
ZSB0aHJlYWRlZCBjb21wb3NpdG9yLCB0aGlzIGNhbiBtZWFuIGF0IGFuIGFyYml0cmFyeSB0aW1l
IHVudGlsCisvLyB0aGUgV2ViTGF5ZXJUcmVlVmlldyBpcyBkZXN0cm95ZWQuCitjbGFzcyBXZWJF
eHRlcm5hbFRleHR1cmVMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitwdWJsaWM6CisgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkxheWVy
Q2xpZW50Kik7CisKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQorICAgIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBsYXllcikg
OiBXZWJMYXllcihsYXllcikgeyB9CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIoKSB7IH0KKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyJiBsYXllcikKKyAgICB7CisgICAgICAgIFdlYkxheWVyOjph
c3NpZ24obGF5ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8gU2V0
cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNw
YWNlIG9mIHRoZQorICAgIC8vIGNvbXBvc2l0b3IgY29udGV4dC4KKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsKKyAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0OworCisgICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4
dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUgWSBkaXJlY3Rpb24gd2hlbgorICAgIC8vIHJl
bmRlcmVkLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGbGlwcGVkKGJvb2wpOworICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBmbGlwcGVkKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIHRoZSByZWN0
IGluIFVWIHNwYWNlIG9mIHRoZSB0ZXh0dXJlIHRoYXQgaXMgbWFwcGVkIHRvIHRoZSBsYXllcgor
ICAgIC8vIGJvdW5kcy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VVZSZWN0KGNvbnN0IFdl
YkZsb2F0UmVjdCYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRSZWN0IHV2UmVjdCgpIGNv
bnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4m
KTsKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+Jik7CisgICAgb3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKSBjb25zdDsKKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGbG9hdFBvaW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFmYzE2YjljODRlNmY1ZWEzMDQw
M2ViM2U3N2VjNGYzZThmOWZiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaApAQCAtMCwwICsxLDkxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJGbG9hdFBvaW50X2gKKyNkZWZpbmUgV2ViRmxvYXRQb2ludF9oCisKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkZs
b2F0UG9pbnQgeworICAgIGZsb2F0IHg7CisgICAgZmxvYXQgeTsKKworICAgIFdlYkZsb2F0UG9p
bnQoKQorICAgICAgICA6IHgoMC4wZikKKyAgICAgICAgLCB5KDAuMGYpCisgICAgeworICAgIH0K
KworICAgIFdlYkZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkKKyAgICAgICAgOiB4KHgpCisg
ICAgICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJGbG9hdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHApCisgICAgICAg
IDogeChwLngoKSkKKyAgICAgICAgLCB5KHAueSgpKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJG
bG9hdFBvaW50JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKKyAgICB7
CisgICAgICAgIHggPSBwLngoKTsKKyAgICAgICAgeSA9IHAueSgpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRQb2ludCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludCh4LCB5KTsKKyAgICB9
CisjZW5kaWYKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViRmxvYXRQb2lu
dCYgYSwgY29uc3QgV2ViRmxvYXRQb2ludCYgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAm
JiBhLnkgPT0gYi55OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkZsb2F0
UG9pbnQmIGEsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBi
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYTVlYjA1NDIwMmZhZTVhYjcxYjdjODlkYjFmMzE0NWNkNzY5M2MxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRR
dWFkLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxvYXRRdWFkX2gKKyNkZWZpbmUgV2Vi
RmxvYXRRdWFkX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZsb2F0
UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJSZWN0LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8Y21hdGg+CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkZs
b2F0UXVhZCB7CisgICAgV2ViRmxvYXRQb2ludCBwWzRdOworCisgICAgV2ViRmxvYXRRdWFkKCkK
KyAgICB7CisgICAgfQorCisgICAgV2ViRmxvYXRRdWFkKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAw
LCBjb25zdCBXZWJGbG9hdFBvaW50JiBwMSwgY29uc3QgV2ViRmxvYXRQb2ludCYgcDIsIGNvbnN0
IFdlYkZsb2F0UG9pbnQmIHAzKQorICAgIHsKKyAgICAgICAgcFswXSA9IHAwOworICAgICAgICBw
WzFdID0gcDE7CisgICAgICAgIHBbMl0gPSBwMjsKKyAgICAgICAgcFszXSA9IHAzOworICAgIH0K
KworICAgIFdFQktJVF9FWFBPUlQgV2ViUmVjdCBlbmNsb3NpbmdSZWN0KCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJGbG9hdFF1YWQmIG9wZXJhdG9yPShjb25z
dCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCisgICAgeworICAgICAgICBwWzBdID0gcS5wMSgpOwor
ICAgICAgICBwWzFdID0gcS5wMigpOworICAgICAgICBwWzJdID0gcS5wMygpOworICAgICAgICBw
WzNdID0gcS5wNCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIFdlYkZsb2F0
UXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCisgICAgeworICAgICAgICAqdGhpcyA9
IHE7CisgICAgfQorI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJG
bG9hdFJlY3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZs
b2F0UmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODM1MTNmY2RhYzU0M2U5MDAzNzcyZTU0MjIwNWIyMWM3
M2JhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGbG9hdFJlY3QuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxvYXRS
ZWN0X2gKKyNkZWZpbmUgV2ViRmxvYXRSZWN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJGbG9hdFJlY3QgeworICAgIGZs
b2F0IHg7CisgICAgZmxvYXQgeTsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7
CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB3aWR0aCA8PSAwIHx8IGhlaWdo
dCA8PSAwOyB9CisKKyAgICBXZWJGbG9hdFJlY3QoKQorICAgICAgICA6IHgoMC4wZikKKyAgICAg
ICAgLCB5KDAuMGYpCisgICAgICAgICwgd2lkdGgoMC4wZikKKyAgICAgICAgLCBoZWlnaHQoMC4w
ZikKKyAgICB7CisgICAgfQorCisgICAgV2ViRmxvYXRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCisgICAgICAgIDogeCh4KQorICAgICAgICAsIHkoeSkK
KyAgICAgICAgLCB3aWR0aCh3aWR0aCkKKyAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQorICAgIHsK
KyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJGbG9hdFJlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQorICAgICAgICA6IHgoci54KCkpCisgICAgICAgICwg
eShyLnkoKSkKKyAgICAgICAgLCB3aWR0aChyLndpZHRoKCkpCisgICAgICAgICwgaGVpZ2h0KHIu
aGVpZ2h0KCkpCisgICAgeworICAgIH0KKworICAgIFdlYkZsb2F0UmVjdCYgb3BlcmF0b3I9KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcikKKyAgICB7CisgICAgICAgIHggPSByLngoKTsKKyAg
ICAgICAgeSA9IHIueSgpOworICAgICAgICB3aWR0aCA9IHIud2lkdGgoKTsKKyAgICAgICAgaGVp
Z2h0ID0gci5oZWlnaHQoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIG9w
ZXJhdG9yIFdlYkNvcmU6OkZsb2F0UmVjdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyNlbmRpZgor
fTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0
IFdlYkZsb2F0UmVjdCYgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55
ICYmIGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZsb2F0
UmVjdCYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJMYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjU2NzFjM2JjOTMwMmY3MGM0OWE1MjU1Y2Ex
ZTAzMzRjMjgxNjgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXIuaApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViTGF5ZXJfaAorI2RlZmluZSBXZWJMYXllcl9oCisKKyNpbmNsdWRlICJXZWJDb2xvci5o
IgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKwor
Y2xhc3MgU2tNYXRyaXg0NDsKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgTGF5ZXJDaHJvbWl1
bTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJGbG9hdFBvaW50OworY2xhc3Mg
V2ViTGF5ZXJDbGllbnQ7CitzdHJ1Y3QgV2ViU2l6ZTsKKworY2xhc3MgV2ViTGF5ZXIgeworcHVi
bGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyIGNyZWF0ZShXZWJMYXllckNs
aWVudCopOworCisgICAgV2ViTGF5ZXIoKSB7IH0KKyAgICBXZWJMYXllcihjb25zdCBXZWJMYXll
ciYgbGF5ZXIpIHsgYXNzaWduKGxheWVyKTsgfQorICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyBy
ZXNldCgpOyB9CisgICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJMYXllciYgbGF5ZXIp
CisgICAgeworICAgICAgICBhc3NpZ24obGF5ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Cisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFz
c2lnbihjb25zdCBXZWJMYXllciYpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29u
c3QgV2ViTGF5ZXImKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgcm9vdExh
eWVyKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJMYXllciBwYXJlbnQoKSBjb25zdDsK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImKTsKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgaW5zZXJ0Q2hpbGQoY29uc3QgV2ViTGF5ZXImLCBzaXplX3QgaW5k
ZXgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXBsYWNlQ2hpbGQoY29uc3QgV2ViTGF5ZXIm
IHJlZmVyZW5jZSwgY29uc3QgV2ViTGF5ZXImIG5ld0xheWVyKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZW1vdmVB
bGxDaGlsZHJlbigpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBvaW50KGNv
bnN0IFdlYkZsb2F0UG9pbnQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkZsb2F0UG9pbnQgYW5j
aG9yUG9pbnQoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2lu
dFooZmxvYXQpOworICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3Q7
CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgYm91bmRzKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
bWFza3NUb0JvdW5kcygpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE1hc2tM
YXllcihjb25zdCBXZWJMYXllciYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgbWFza0xh
eWVyKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7
CisgICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBvcGFjaXR5KCkgY29uc3Q7CisKKyAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0T3BhcXVlKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBvcGFx
dWUoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBX
ZWJGbG9hdFBvaW50Jik7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IHBvc2l0aW9u
KCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0o
Y29uc3QgU2tNYXRyaXg0NCYpOworICAgIFdFQktJVF9FWFBPUlQgU2tNYXRyaXg0NCBzdWJsYXll
clRyYW5zZm9ybSgpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBTa01hdHJpeDQ0Jik7CisgICAgV0VCS0lUX0VYUE9SVCBTa01hdHJpeDQ0IHRyYW5z
Zm9ybSgpIGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9yZGVyQ29s
b3IoY29uc3QgV2ViQ29sb3ImKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVidWdCb3Jk
ZXJXaWR0aChmbG9hdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKKyAgICB7
CisgICAgICAgIFQgcmVzOworICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Cisg
ICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29u
c3QgVCB0b0NvbnN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFQgcmVzOworICAgICAgICByZXMu
V2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7CisgICAgV2ViTGF5ZXImIG9wZXJhdG9yPShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKKyAgICBvcGVy
YXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndyYXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihtX3ByaXZhdGUuZ2V0KCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKKyAgICB9Cisj
ZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJM
YXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCit7CisgICAgcmV0dXJuIGEuZXF1YWxzKGIpOwor
fQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJM
YXllciYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYkxheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkxheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllckNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
MTQ4YmEyZWUxMzc4NDJiMTEyZGMzMjkyYzk4MDQ5ZTU1Y2U5NmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllckNsaWVudC5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkxheWVyQ2xpZW50X2gKKyNkZWZp
bmUgV2ViTGF5ZXJDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTGF5
ZXJDbGllbnQgeworcHVibGljOgorICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgdGhhdCB0aGUg
bGF5ZXIgaGFzIGNoYW5nZWQgaW4gYSB3YXkgdGhhdCBuZWVkcyBhCisgICAgLy8gY29tcG9zaXRp
bmcgcGFzcyB0byB2aXN1YWxseSB1cGRhdGUuIFRoZSBjbGllbnQgc2hvdWxkIGV2ZW50dWFsbHkg
Y2FsbAorICAgIC8vIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZS4KKyAgICAvLyBOb3RlOiBz
b21lIGNvbXBsZXggb3BlcmF0aW9ucyAoZS5nIGxheWVyIHJlcGFyZW50aW5nKSBjYW4gY2F1c2Ug
dGhpcyB0bworICAgIC8vIGJlIGNhbGxlZCB3aGlsZSB0aGUgbGF5ZXIgdHJlZSBpcyBpbiBhbiBp
bmNvbnNpc3RlbnQgc3RhdGUsIHNvIHRvIGdldAorICAgIC8vIGNvcnJlY3QgcmVzdWx0cywgV2Vi
TGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlCisgICAg
Ly8gb3BlcmF0aW9uIGhhcyBmaW5pc2hlZCAoZS5nLiBieSBwb3N0aW5nIGEgdGFzaykuCisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeU5lZWRzQ29tcG9zaXRlKCkgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+V2ViTGF5ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiNWE4ZTlhYmM5ZTBhZWRiOWQ2MTgwMTQwZTQ0NzEwNzNlN2I2MmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3LmgKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkxheWVyVHJl
ZVZpZXdfaAorI2RlZmluZSBXZWJMYXllclRyZWVWaWV3X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0Oworc3RydWN0IENDU2V0dGluZ3M7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXI7CitjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
Oworc3RydWN0IFdlYlJlY3Q7CitzdHJ1Y3QgV2ViU2l6ZTsKKworY2xhc3MgV2ViTGF5ZXJUcmVl
VmlldyB7CitwdWJsaWM6CisgICAgc3RydWN0IFNldHRpbmdzIHsKKyAgICAgICAgU2V0dGluZ3Mo
KQorICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCisgICAgICAgICAgICAs
IGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKKyAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRv
clRocmVhZChmYWxzZSkKKyAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCisgICAg
ICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkgeyB9CisKKyAgICAgICAgYm9v
bCBhY2NlbGVyYXRlUGFpbnRpbmc7CisgICAgICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwor
ICAgICAgICBib29sIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CisgICAgICAgIGJvb2wgc2hvd0ZQ
U0NvdW50ZXI7CisgICAgICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOworI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkg
Y29uc3Q7CisjZW5kaWYKKyAgICB9OworCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5
ZXJUcmVlVmlldyBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVy
JiByb290LCBjb25zdCBTZXR0aW5ncyYpOworCisgICAgV2ViTGF5ZXJUcmVlVmlldygpIHsgfQor
ICAgIFdlYkxheWVyVHJlZVZpZXcoY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgbGF5ZXIpIHsgYXNz
aWduKGxheWVyKTsgfQorICAgIH5XZWJMYXllclRyZWVWaWV3KCkgeyByZXNldCgpOyB9CisgICAg
V2ViTGF5ZXJUcmVlVmlldyYgb3BlcmF0b3I9KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGxheWVy
KQorICAgIHsKKyAgICAgICAgYXNzaWduKGxheWVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXNzaWduKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmKTsKKyAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmKSBjb25zdDsKKworICAgIC8vIFRy
aWdnZXJzIGEgY29tcG9zaXRpbmcgcGFzcy4gSWYgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRp
c2FibGVkCisgICAgLy8gKGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPT0gZmFsc2UpLCB0aGUgY29t
cG9zaXRpbmcgcGFzcyBoYXBwZW5zCisgICAgLy8gaW1tZWRpYXRlbHkuIElmIGl0IGlzIGVuYWJs
ZWQsIHRoZSBjb21wb3NpdGluZyBwYXNzIHdpbGwgaGFwcGVuIGF0IGEKKyAgICAvLyBsYXRlciB0
aW1lLiBCZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3MgaGFwcGVucyAoaS5lLiBiZWZvcmUgY29t
cG9zaXRlKCkKKyAgICAvLyByZXR1cm5zIHdoZW4gdGhlIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRp
c2FibGVkKSwgV2ViQ29udGVudExheWVycyB3aWxsIGJlCisgICAgLy8gYXNrZWQgdG8gcGFpbnQg
dGhlaXIgZGlydHkgcmVnaW9uLCB0aHJvdWdoCisgICAgLy8gV2ViQ29udGVudExheWVyQ2xpZW50
OjpwYWludENvbnRlbnRzLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjb21wb3NpdGUoKTsKKwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYpOwor
ICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKworICAgIC8v
IENvbXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0IGludG8gdGhl
IHByb3ZpZGVkCisgICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUsIGUuZy4gZHVl
IHRvIGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KKyAgICAvLyBmYWxzZS4gUGl4ZWwgZm9ybWF0
IGlzIDMyYml0IChSR0JBKSwgYW5kIHRoZSBwcm92aWRlZCBidWZmZXIgbXVzdCBiZQorICAgIC8v
IGxhcmdlIGVub3VnaCBjb250YWluIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiB2aWV3cG9ydFNp
emUoKS5oZWlnaHQoKQorICAgIC8vIHBpeGVscy4gVGhlIFdlYkxheWVyVHJlZVZpZXcgZG9lcyBu
b3QgYXNzdW1lIG93bmVyc2hpcCBvZiB0aGUgYnVmZmVyLgorICAgIC8vIFRoZSBidWZmZXIgaXMg
bm90IG1vZGlmaWVkIGlmIHRoZSBmYWxzZSBpcyByZXR1cm5lZC4KKyAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBXZWJSZWN0Jik7
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJMYXllclRyZWVWaWV3KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+Jik7CisgICAgV2ViTGF5
ZXJUcmVlVmlldyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdD4oKSBjb25zdDsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgV2ViUHJp
dmF0ZVB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+IG1fcHJpdmF0ZTsKK307CisKK2lubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2ViTGF5
ZXJUcmVlVmlldyYgYikKK3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisKK2lubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2ViTGF5ZXJU
cmVlVmlldyYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkxheWVyVHJlZVZpZXdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNTAwOTYwNzZjZGY2NjJiNzI0YTAxODM0NTM3NGM0
YjBkNmFkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViTGF5ZXJUcmVlVmlld0NsaWVudF9oCisjZGVmaW5lIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29u
dGV4dDNEOworc3RydWN0IFdlYlNpemU7CitjbGFzcyBXZWJUaHJlYWQ7CisKK2NsYXNzIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQgeworcHVibGljOgorICAgIC8vIFVwZGF0ZXMgYW5pbWF0aW9uIGFu
ZCBsYXlvdXQuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9zaXRpbmcgcGFzcworICAg
IC8vIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBnaXZlbiBmcmFtZSB0aW1l
LgorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgPSAwOworCisgICAgLy8gQXBwbGllcyBhIHNjcm9sbCBkZWx0YSB0byB0aGUgcm9vdCBsYXll
ciwgd2hpY2ggaXMgYnVuZGxlZCB3aXRoIGEgcGFnZQorICAgIC8vIHNjYWxlIGZhY3RvciB0aGF0
IG1heSBhcHBseSBhIENTUyB0cmFuc2Zvcm0gb24gdGhlIHdob2xlIGRvY3VtZW50ICh1c2VkCisg
ICAgLy8gZm9yIG1vYmlsZS1kZXZpY2UgcGluY2ggem9vbWluZykuIFRoaXMgaXMgdHJpZ2dlcmVk
IGJ5IGV2ZW50cyBzZW50IHRvIHRoZQorICAgIC8vIGNvbXBvc2l0b3IgdGhyZWFkIHRocm91Z2gg
dGhlIFdlYkNvbXBvc2l0b3IgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZUZhY3Rvcikg
PSAwOworCisgICAgLy8gQ3JlYXRlcyBhIDNEIGNvbnRleHQgc3VpdGFibGUgZm9yIHRoZSBjb21w
b3NpdGluZy4gVGhpcyBtYXkgYmUgY2FsbGVkCisgICAgLy8gbW9yZSB0aGFuIG9uY2UgaWYgdGhl
IGNvbnRleHQgZ2V0cyBsb3N0LgorICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNy
ZWF0ZUNvbnRleHQzRCgpID0gMDsKKworICAgIC8vIFNpZ25hbHMgYSBzdWNjZXNzZnVsIHJlYmlu
ZGluZyBvZiB0aGUgM0QgY29udGV4dCAoZS5nLiBhZnRlciBhIGxvc3QKKyAgICAvLyBjb250ZXh0
IGV2ZW50KS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wg
c3VjY2VzcykgPSAwOworCisgICAgLy8gU2NoZWR1bGVzIGEgY29tcG9zaXRpbmcgcGFzcywgbWVh
bmluZyB0aGUgY2xpZW50IHNob3VsZCBjYWxsCisgICAgLy8gV2ViTGF5ZXJUcmVlVmlldzo6Y29t
cG9zaXRlIGF0IGEgbGF0ZXIgdGltZS4gVGhpcyBpcyBvbmx5IGNhbGxlZCBpZiB0aGUKKyAgICAv
LyBjb21wb3NpdG9yIHRocmVhZCBpcyBkaXNhYmxlZDsgd2hlbiBlbmFibGVkLCB0aGUgY29tcG9z
aXRvciB3aWxsCisgICAgLy8gaW50ZXJuYWxseSBzY2hlZHVsZSBhIGNvbXBvc2l0aW5nIHBhc3Mg
d2hlbiBuZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgPSAwOwor
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViTGF5ZXJUcmVlVmlld0NsaWVudCgpIHsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlByaXZhdGVQdHIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlByaXZhdGVQdHIuaAppbmRleCAwNzM5ZThiYjhmNjgyMjE1M2RiYTk2NjRmNWFhZjEw
MDY3ZmQ4NDBhLi4zMWQwOWE5MGJkYWNmMmRlYjM5MzcyMWUxMTAzMzU5ODQwY2Q3Y2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQcml2YXRl
UHRyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUHJp
dmF0ZVB0ci5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIFdlYlByaXZhdGVQdHJfaAogI2Rl
ZmluZSBXZWJQcml2YXRlUHRyX2gKIAorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKaW5kZXgg
ZGU4ZDk5OGFlOThjNGMxY2RlZDU2YjdhNDg3OGM4ZjM0NGUyOGFkOC4uZDk0MTIzNDIxYmYyYzJm
YmFmZDM2ODZkOTgxYTYwOGY1ZjU0NDEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCkBAIC0yNCwxMCArMjQsMTAgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ29udGVudExheWVyLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29udGVudExheWVyLmgiCiAKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiV2Vi
RmxvYXRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4IGU1M2FjZmRjNTli
MTRlMmRmNzEwYTNhMWM2OWQyMWI2NDlhYTQ1ZmUuLjNhNDA4OGJhM2M1Nzc0NzI1YTAyNDVjZTUz
ZmJjNmQ2M2NiMTBkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb250ZW50TGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXll
ckNsaWVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKLSNpbmNsdWRlICJXZWJDb250
ZW50TGF5ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJMYXllckNsaWVudC5oIgotI2luY2x1ZGUg
IldlYlJlY3QuaCIKICNpZiBXRUJLSVRfVVNJTkdfU0tJQQogI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCmluZGV4IGI5ZDI1ODkyZTNiODcwODdiYzA1
MmI1Y2U3NmQ4YWI4YmJiMDc5OTguLjgzZmE5Y2NlYTg0ZWY5ZWVjNDE1MzE5NWYxMjA1Mjc5MWIw
YzRlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI0LDEwICsyNCwxMCBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgiCiAKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwuaCIKLSNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGwuY3BwCmluZGV4IDc0Mzc4NmY0MDE4MTE0NjI1NThkMWRlMWNlMjQzZTA5
ZTEwN2E3MDAuLjRiOGM2YjJkY2Y4YTNkNmVmNzk2MTE4MWU2NjgwOThlYzNiNDc2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgogCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJXZWJDYW52YXMuaCIKLSNpbmNsdWRlICJXZWJMYXllckNsaWVudC5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIu
Y3BwCmluZGV4IGQzYWYzYjY1NTNlNjVmNDg1ZWM5M2U1NDMxZDRlZjFmYzI4NTI0ZDcuLmUwNDY3
OWEyYmQzYjAxOGJkODBiODFhMzJlZDEwOWYwZDYzZDMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJMYXllci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCiAKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2tNYXRy
aXg0NC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCi0jaW5jbHVkZSAiV2Vi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgogI2luY2x1ZGUgIldlYlNp
emUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5k
ZXggZTM0NjI4ZmFjZDMyN2Y3NDVhNzM0Mjg5YWE2MDE2YTAxNDFhZTFiNC4uZGRjMDYxMTIwOTQx
NmY5NTA0NTExNmMwYWZkNzI5NzdmOGY4YTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJXZWJMYXllckNsaWVu
dC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyQ2xpZW50LmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwCmluZGV4IGU3NzlhZmE2MzcxZjYzZGNlNTg3NjA1MjVhNmQxYjNlMzJlMzc5
Y2IuLmY5NThkNWE1MmM0MGViNDYxYTllYzVlZDAzOGNkZjdmNzlmZDlmNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkxheWVyVHJl
ZVZpZXcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCiAKICNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCmluZGV4
IDBjZmMyODM3ODk1MGU4MmE4M2E4YjgxN2Y4N2JlMmIxNjgwMjI4ZDUuLjJlMTQ1ZmE3MWVmOWM5
ODA4YTcwZTk5MjE5MjVlNjE5ZGI0ZGFjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRl
ZiBXZWJMYXllclRyZWVWaWV3SW1wbF9oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gK
IAotI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJM
YXllclRyZWVWaWV3LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAo=
</data>
<flag name="review"
          id="117000"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>