<?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>59637</bug_id>
          
          <creation_ts>2011-04-27 14:38:15 -0700</creation_ts>
          <short_desc>Overview of Web Introducer API</short_desc>
          <delta_ts>2022-08-06 05:07:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tyler Close">tjclose</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>393839</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Close">tjclose</who>
    <bug_when>2011-04-27 14:38:15 -0700</bug_when>
    <thetext>Overview of Web Introducer API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393847</commentid>
    <comment_count>1</comment_count>
      <attachid>91353</attachid>
    <who name="Tyler Close">tjclose</who>
    <bug_when>2011-04-27 14:43:43 -0700</bug_when>
    <thetext>Created attachment 91353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393848</commentid>
    <comment_count>2</comment_count>
    <who name="Tyler Close">tjclose</who>
    <bug_when>2011-04-27 14:45:40 -0700</bug_when>
    <thetext>This patch is not intended to be committed as is, but rather to provide an overview of all the changes needed in WebKit to support the Web Introducer API. The API syntax implemented here diverges from that in the Web Introducer spec, but has roughly the same semantics. The spec will be brought into line with what is in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394181</commentid>
    <comment_count>3</comment_count>
      <attachid>91353</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-27 21:31:51 -0700</bug_when>
    <thetext>Comment on attachment 91353
Patch

The patch is not meant to be committed per the above comment, so rejecting r?.

For discussion, please bring this up on webkit-dev mailing list. This functionality seems quite esoteric to me personally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394456</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Close">tjclose</who>
    <bug_when>2011-04-28 09:00:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; For discussion, please bring this up on webkit-dev mailing list.

Looking forward to that once some preliminary discussions have advanced. This bug is for those who want to get a head start on the discussion and to square away implementation details that might distract from the broader discussion.

&gt; This functionality seems quite esoteric to me personally.

It&apos;s probably pretty hard to understand the Introducer based only on the WebKit patch. Most of the actual functionality ends up being specific to the embedder. The corresponding Chromium patch is at:

http://codereview.chromium.org/6880275/

The Web Introducer is also a pretty low level API, just adding a discovery and user consent mechanism to the browser and letting Web applications define protocols for sharing of particular media types. Just as a transistor is a little esoteric until you see a computer, the Web Introducer is a little esoteric until you see media-type specific sharing protocols. A strawman proposal for social bookmarking is at:

http://web-send.org/bookmark/

If you have time to spot check this patch for implementation oddities that might distract people from discussing the core functionality, that would probably help the eventual mailing list discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889354</commentid>
    <comment_count>5</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-06 05:07:35 -0700</bug_when>
    <thetext>I am going to mark this as &quot;RESOLVED WONTFIX&quot; considering that Web Introducer API was not introduced widely and I only found this discussion about it online.

https://lists.w3.org/Archives/Public/public-device-apis/2011Jan/0096.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91353</attachid>
            <date>2011-04-27 14:43:43 -0700</date>
            <delta_ts>2011-04-27 21:31:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59637-20110427144342.patch</filename>
            <type>text/plain</type>
            <size>55364</size>
            <attacher name="Tyler Close">tjclose</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MDk2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMjcgIFR5bGVyIENs
b3NlICA8dGpjbG9zZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgT3ZlcnZpZXcgb2YgV2ViIEludHJvZHVjZXIgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTYzNworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRJbnRyb2R1Y2VyRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRJ
bnRyb2R1Y2VyRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG06CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om1ha2VJbnRyb2R1Y2VyKToKKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om1ha2VJbnRyb2R1Y2VyKToK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93Ojp3ZWJraXRJbnRyb2R1Y2VyKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0ludHJvZHVjZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRyb2R1Y2VyOjp+SW50cm9kdWNlcik6CisgICAg
ICAgICogcGFnZS9JbnRyb2R1Y2VyLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9JbnRyb2R1
Y2VyQWNjZXB0Q2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRyb2R1Y2Vy
QWNjZXB0Q2FsbGJhY2s6On5JbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2spOgorICAgICAgICAqIHBh
Z2UvSW50cm9kdWNlckFjY2VwdENhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9J
bnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50
cm9kdWNlckNvbm5lY3RDYWxsYmFjazo6fkludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2spOgorICAg
ICAgICAqIHBhZ2UvSW50cm9kdWNlckNvbm5lY3RDYWxsYmFjay5pZGw6IEFkZGVkLgorCiAyMDEx
LTA0LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDgyMTcyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE3LDYg
KzEzMTcsOSBAQAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uaWRsJywKICAgICAgICAg
ICAgICdwYWdlL0dlb3Bvc2l0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5Lmlk
bCcsCisgICAgICAgICAgICAncGFnZS9JbnRyb2R1Y2VyLmlkbCcsCisgICAgICAgICAgICAncGFn
ZS9JbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAncGFnZS9JbnRy
b2R1Y2VyQWNjZXB0Q2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdwYWdlL0xvY2F0aW9uLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9NZW1vcnlJbmZvLmlkbCcsCiAgICAgICAgICAgICAncGFn
ZS9OYXZpZ2F0b3IuaWRsJywKQEAgLTMzNzAsNiArMzM3Myw5IEBACiAgICAgICAgICAgICAncGFn
ZS9Hcm91cFNldHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmNwcCcsCiAg
ICAgICAgICAgICAncGFnZS9IaXN0b3J5LmgnLAorICAgICAgICAgICAgJ3BhZ2UvSW50cm9kdWNl
ci5oJywKKyAgICAgICAgICAgICdwYWdlL0ludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2suaCcsCisg
ICAgICAgICAgICAncGFnZS9JbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaCcsCiAgICAgICAgICAg
ICAncGFnZS9Mb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvTG9jYXRpb24uaCcsCiAg
ICAgICAgICAgICAncGFnZS9NZW1vcnlJbmZvLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAJKHJldmlzaW9uIDgyMTcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNM
b2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQgPSB0cnVlOworYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc1dlYmtpdEludHJvZHVjZXJFbmFibGVkID0gdHJ1ZTsKIGJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOwogYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gdHJ1ZTsK
IGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQg
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHJldmlzaW9uIDgyMTcyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFNl
c3Npb25TdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Nlc3Npb25TdG9yYWdlRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOyB9CiAKKyAgICBzdGF0aWMgdm9p
ZCBzZXRXZWJraXRJbnRyb2R1Y2VyRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1dlYmtpdElu
dHJvZHVjZXJFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0SW50
cm9kdWNlckVuYWJsZWQoKSB7IHJldHVybiBpc1dlYmtpdEludHJvZHVjZXJFbmFibGVkOyB9CisK
ICAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAg
c3RhdGljIGJvb2wgd2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc1dlYmtp
dE5vdGlmaWNhdGlvbnNFbmFibGVkOyB9CiAKQEAgLTE1Niw2ICsxNTksNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIGJvb2wgaXNMb2NhbFN0b3JhZ2VFbmFibGVkOwogICAgIHN0YXRpYyBib29s
IGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOworICAgIHN0YXRpYyBib29sIGlzV2Via2l0SW50cm9k
dWNlckVuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxl
ZDsKICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOwogICAgIHN0YXRp
YyBib29sIGlzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDgy
MTcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMwNjEsNiArMzA2MSw3IEBAIG15ICVub25fd3JhcHBlcl90
eXBlcyA9ICgKICAgICAnRXZlbnRMaXN0ZW5lcicgPT4gMSwKICAgICAnSURCS2V5JyA9PiAxLAog
ICAgICdPcHRpb25zT2JqZWN0JyA9PiAxLAorICAgICdET01TdHJpbmdMaXN0JyA9PiAxLAogICAg
ICdEYXRlJyA9PiAxLAogICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJyA9PiAxCiApOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gODIxNzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
OCw2ICsxODgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikgeyB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTlRST0RVQ0VSKQorICAgIHZpcnR1YWwgSW50cm9kdWNlciogbWFrZUludHJvZHVjZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50
ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gODIxNzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksMTMgQEAg
dm9pZCBDaHJvbWU6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KElOVFJPRFVDRVIpCitJbnRyb2R1Y2VyKiBDaHJvbWU6Om1ha2VJbnRyb2R1Y2VyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5t
YWtlSW50cm9kdWNlcihjb250ZXh0KTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZTo6bm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gODIxNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3Mg
R2VvbG9jYXRpb247CiAgICAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKKyNpZiBFTkFCTEUoSU5UUk9E
VUNFUikKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIEludHJv
ZHVjZXI7CisjZW5kaWYKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5hdmlnYXRpb25B
Y3Rpb247CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE2Miw2ICsxNjYsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGZvY3VzTlNWaWV3KE5TVmlldyopOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoSU5UUk9EVUNFUikKKyAgICAgICAgSW50cm9kdWNlciogbWFrZUludHJvZHVjZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworI2VuZGlmCisKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25Q
cmVzZW50ZXIoKSBjb25zdDsgCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAkocmV2aXNpb24gODIxNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOVFJPRFVD
RVIpCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBJbnRyb2R1
Y2VyOworI2VuZGlmCisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBjbGFzcyBOb3Rp
ZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKQEAgLTE5Myw2ICsxOTgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQo
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOVFJPRFVDRVIpCisgICAgICAgIHZpcnR1YWwgSW50
cm9kdWNlciogbWFrZUludHJvZHVjZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0ID0g
MDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwg
Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCA9IDA7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDgyMTcy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIklEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCisjaW5jbHVkZSAiSW50cm9kdWNlci5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0LmgiCkBAIC02NzksNiAr
NjgwLDI1IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKEV4Y2VwdGkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKElOVFJPRFVDRVIpCitJbnRyb2R1Y2VyKiBET01XaW5kb3c6Ondl
YmtpdEludHJvZHVjZXIoKSBjb25zdAoreworICAgIGlmIChtX2ludHJvZHVjZXIpCisgICAgICAg
IHJldHVybiBtX2ludHJvZHVjZXIuZ2V0KCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIG1faW50cm9kdWNlciA9IGFkb3B0UmVmKHBhZ2UtPmNocm9t
ZSgpLT5tYWtlSW50cm9kdWNlcihkb2N1bWVudCkpOworICAgIHJldHVybiBtX2ludHJvZHVjZXIu
Z2V0KCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogTm90aWZpY2F0
aW9uQ2VudGVyKiBET01XaW5kb3c6OndlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdAogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA4MjE3MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBIaXN0b3J5
OwogICAgIGNsYXNzIElEQkZhY3Rvcnk7CisgICAgY2xhc3MgSW50cm9kdWNlcjsKICAgICBjbGFz
cyBMb2NhdGlvbjsKICAgICBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKICAgICBjbGFzcyBOYXZpZ2F0
b3I7CkBAIC0zOTcsNiArMzk4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSURC
RmFjdG9yeSogd2Via2l0SW5kZXhlZERCKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJ
TlRST0RVQ0VSKQorICAgICAgICBJbnRyb2R1Y2VyKiB3ZWJraXRJbnRyb2R1Y2VyKCkgY29uc3Q7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRp
b25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKICNlbmRpZgpAQCAtNDgyLDYg
KzQ4NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPERP
TUFwcGxpY2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRpb25DYWNoZTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKElOVFJPRFVDRVIpCisgICAgICAgIG11dGFibGUgUmVmUHRyPEludHJvZHVjZXI+IG1faW50
cm9kdWNlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIG11
dGFibGUgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25zOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA4MjE3MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYg
KzE3NCw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWVdIFN0b3JhZ2UgbG9jYWxTdG9yYWdlCiAgICAgICAgICAgICBnZXR0ZXIg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9JTlRST0RV
Q0VSKSAmJiBFTkFCTEVfSU5UUk9EVUNFUgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWVdIEludHJvZHVjZXIgd2Via2l0SW50cm9kdWNlcjsKKyNlbmRpZgogI2lm
IGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gTm90aWZpY2F0aW9u
Q2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50cm9kdWNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50
cm9kdWNlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2Vy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludHJvZHVjZXJfaAorI2Rl
ZmluZSBJbnRyb2R1Y2VyX2gKKworI2lmIEVOQUJMRShJTlRST0RVQ0VSKQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01TdHJp
bmdMaXN0OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEludHJvZHVjZXJBY2NlcHRDYWxsYmFjazsK
K2NsYXNzIEludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2s7CitjbGFzcyBWb2lkQ2FsbGJhY2s7CisK
K2NsYXNzIEludHJvZHVjZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRyb2R1Y2VyPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+SW50cm9kdWNlcigpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5z
dGFsbCgKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgaG9tZSwKKyAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuaW5zdGFsbCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2Zm
ZXIoCisgICAgICAgIGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgbGFiZWwsCisgICAg
ICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3VwcG9ydHMsCisgICAgICAgIGNvbnN0IFN0
cmluZyYgd2luZG93LCBjb25zdCBTdHJpbmcmIGZyYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlc2NpbmQoY29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEVsZW1lbnQqIGFuY2hvciwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB3YW50ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNr
PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2NlcHQoY29uc3QgU3RyaW5nJiByZWdpc3RyYW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRyb2R1Y2VyQWNjZXB0Q2Fs
bGJhY2s+KSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UUk9EVUNFUikKKwor
I2VuZGlmIC8vIEludHJvZHVjZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1
Y2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludHJvZHVjZXIuaWRs
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyLmlkbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworbW9kdWxlIGludHJvZHVjZXIgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9SU5UUk9EVUNFUgorICAgIF0gSW50cm9kdWNlciB7CisgICAgICAgIHZv
aWQgaW5zdGFsbCgKKyAgICAgICAgICAgIGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgaWNvbiwKKyAgICAgICAgICAgIGluIFtDb252ZXJ0VW5kZWZpbmVk
T3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwKKyAgICAgICAgICAgIGluIFtDb252
ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9tZSwKKyAgICAgICAg
ICAgIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7CisgICAg
ICAgIHZvaWQgdW5pbnN0YWxsKCk7CisgICAgICAgIHZvaWQgb2ZmZXIoCisgICAgICAgICAgICBp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NU3RyaW5nIGlkLAorICAg
ICAgICAgICAgaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBsYWJlbCwKKyAgICAgICAgICAgIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBET01TdHJpbmdMaXN0IHN1cHBvcnRzLAorICAgICAgICAgICAgaW4gW0NvbnZlcnRVbmRl
ZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB3aW5kb3csCisgICAgICAgICAgICBp
biBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGZyYW1lKTsK
KyAgICAgICAgdm9pZCByZXNjaW5kKAorICAgICAgICAgICAgaW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERPTVN0cmluZyBpZCk7CisgICAgICAgIHZvaWQgY29ubmVjdCgK
KyAgICAgICAgICAgIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVt
ZW50IGFuY2hvciwKKyAgICAgICAgICAgIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBET01TdHJpbmdMaXN0IHdhbnRlZCwKKyAgICAgICAgICAgIGluIFtDYWxsYmFja10g
SW50cm9kdWNlckNvbm5lY3RDYWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIHZvaWQgYWNjZXB0
KAorICAgICAgICAgICAgaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyByZWdpc3RyYW50LAorICAgICAgICAgICAgaW4gW0NhbGxiYWNrXSBJbnRyb2R1Y2Vy
QWNjZXB0Q2FsbGJhY2sgY2FsbGJhY2spOworCisgICAgfTsKKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9JbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ludHJvZHVjZXJBY2NlcHRDYWxsYmFjay5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50cm9kdWNlckFjY2VwdENhbGxiYWNrX2gK
KyNkZWZpbmUgSW50cm9kdWNlckFjY2VwdENhbGxiYWNrX2gKKworI2lmIEVOQUJMRShJTlRST0RV
Q0VSKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgRE9NU3RyaW5nTGlzdDsKK2NsYXNzIE1lc3NhZ2VQb3J0OworCitj
bGFzcyBJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRyb2R1
Y2VyQWNjZXB0Q2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnRyb2R1Y2VyQWNj
ZXB0Q2FsbGJhY2soKSB7fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNZXNzYWdlUG9y
dCogY3VzdG9tZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IHdhbnRlZCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOVFJPRFVD
RVIpCisKKyNlbmRpZiAvLyBJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2tfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50cm9kdWNlckFjY2VwdENhbGxiYWNrLmlkbAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50cm9kdWNlckFjY2VwdENhbGxiYWNrLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworbW9kdWxlIGludHJvZHVjZXIgeworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9SU5UUk9EVUNFUiwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBd
IEludHJvZHVjZXJBY2NlcHRDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
CisgICAgICAgICAgICBpbiBNZXNzYWdlUG9ydCBjdXN0b21lciwKKyAgICAgICAgICAgIGluIERP
TVN0cmluZyBvcmlnaW4sCisgICAgICAgICAgICBpbiBET01TdHJpbmdMaXN0IHdhbnRlZCk7Cisg
ICAgfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyQ29ubmVjdENh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyQ29u
bmVjdENhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludHJv
ZHVjZXJDb25uZWN0Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUsIElu
Yy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSW50cm9kdWNlckNvbm5lY3RDYWxsYmFja19oCisjZGVmaW5lIEludHJvZHVjZXJDb25uZWN0
Q2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKElOVFJPRFVDRVIpCisKKyNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0Owor
CitjbGFzcyBJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8SW50
cm9kdWNlckNvbm5lY3RDYWxsYmFjaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfkludHJvZHVj
ZXJDb25uZWN0Q2FsbGJhY2soKSB7fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNZXNz
YWdlUG9ydCogc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBhZ3JlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZnJhbWVkKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UUk9EVUNFUikK
KworI2VuZGlmIC8vIEludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2tfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9JbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2suaWRsCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworbW9kdWxlIGludHJvZHVjZXIgeworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9SU5UUk9EVUNFUiwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBd
IEludHJvZHVjZXJDb25uZWN0Q2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50
KAorICAgICAgICAgICAgaW4gTWVzc2FnZVBvcnQgc2VydmljZSwKKyAgICAgICAgICAgIGluIERP
TVN0cmluZ0xpc3QgYWdyZWVkLAorICAgICAgICAgICAgaW4gYm9vbGVhbiBmcmFtZWQpOworICAg
IH07CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTA5NikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMTEtMDQtMjcgIFR5bGVyIENsb3NlICA8dGpjbG9zZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyAqbm90KiBpbnRlbmRlZCB0byBiZSBjb21taXR0ZWQgYXMgaXMuIEl0IGlzIG9u
bHkgaW50ZW5kZWQKKyAgICAgICAgdG8gYXNzaXN0IHRob3NlIHdobyB3YW50IHRvIHJldmlldyBh
bGwgV2ViS2l0IGNoYW5nZXMgbmVlZGVkIHRvIHN1cHBvcnQKKyAgICAgICAgdGhlIFdlYiBJbnRy
b2R1Y2VyIChodHRwOi8vd2ViLXNlbmQub3JnL2ludHJvZHVjZXIvKS4gVGhlIEFQSSBzeW50YXgK
KyAgICAgICAgaW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRjaCBkaXZlcmdlcyBmcm9tIHRoYXQgaW4g
dGhlIHNwZWNpZmljYXRpb24sIGJ1dAorICAgICAgICB0aGUgc2VtYW50aWNzIGFyZSByb3VnaGx5
IHRoZSBzYW1lLiBUaGUgc3BlYyB3aWxsIGJlIGJyb3VnaHQgaW50byBsaW5lCisgICAgICAgIHdp
dGggd2hhdCBpcyBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgIE92ZXJ2aWV3IG9mIFdlYiBJbnRy
b2R1Y2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTk2MzcKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogZmVhdHVyZXMuZ3lw
aToKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50cm9kdWNlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW50cm9kdWNlcjo6fldlYkludHJvZHVjZXIpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkludHJvZHVjZXJBY2NlcHRDYWxsYmFjazo6fldlYkludHJvZHVjZXJBY2NlcHRDYWxsYmFjayk6
CisgICAgICAgICogcHVibGljL1dlYkludHJvZHVjZXJDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50cm9kdWNlckNhbGxiYWNrOjp+V2ViSW50cm9kdWNlckNhbGxiYWNr
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50cm9kdWNlckNvbm5lY3RDYWxsYmFjay5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW50cm9kdWNlckNvbm5lY3RDYWxsYmFjazo6fldlYklu
dHJvZHVjZXJDb25uZWN0Q2FsbGJhY2spOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnRyb2R1Y2Vy
SW5zdGFsbENhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRyb2R1Y2Vy
SW5zdGFsbENhbGxiYWNrOjp+V2ViSW50cm9kdWNlckluc3RhbGxDYWxsYmFjayk6CisgICAgICAg
ICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVu
dDo6aW50cm9kdWNlckRpc3BhdGNoZXIpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6bWFrZUludHJvZHVjZXIp
OgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL0ludHJv
ZHVjZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpGb3JJbnN0YWxsQ2FsbGJh
Y2s6OkZvckluc3RhbGxDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkZvckluc3RhbGxDYWxs
YmFjazo6fkZvckluc3RhbGxDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkZvckluc3RhbGxD
YWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpGb3JJbnRyb2R1Y2VyQ29u
bmVjdENhbGxiYWNrOjpGb3JJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6Rm9ySW50cm9kdWNlckNvbm5lY3RDYWxsYmFjazo6fkZvckludHJvZHVjZXJDb25uZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpGb3JJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNr
OjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkZvckludHJvZHVjZXJBY2NlcHRDYWxs
YmFjazo6Rm9ySW50cm9kdWNlckFjY2VwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Rm9y
SW50cm9kdWNlckFjY2VwdENhbGxiYWNrOjp+Rm9ySW50cm9kdWNlckFjY2VwdENhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6Rm9ySW50cm9kdWNlckFjY2VwdENhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkZvcldlYkludHJvZHVjZXI6OkZvcldlYkludHJvZHVjZXIp
OgorICAgICAgICAoV2ViS2l0OjpGb3JXZWJJbnRyb2R1Y2VyOjppbnN0YWxsKToKKyAgICAgICAg
KFdlYktpdDo6Rm9yV2ViSW50cm9kdWNlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdlYktpdDo6
Rm9yV2ViSW50cm9kdWNlcjo6b2ZmZXIpOgorICAgICAgICAoV2ViS2l0OjpGb3JXZWJJbnRyb2R1
Y2VyOjpyZXNjaW5kKToKKyAgICAgICAgKFdlYktpdDo6Rm9yV2ViSW50cm9kdWNlcjo6Y29ubmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OkZvcldlYkludHJvZHVjZXI6OmFjY2VwdCk6CisgICAgICAg
IChXZWJLaXQ6Om1ha2VJbnRyb2R1Y2VyKToKKyAgICAgICAgKiBzcmMvSW50cm9kdWNlclByb3h5
Lmg6IEFkZGVkLgorCiAyMDExLTA0LTI3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDgyMTcyKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAxLDExIEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklucHV0RXZlbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRy
b2R1Y2VyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50cm9kdWNlckFjY2VwdENh
bGxiYWNrLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50cm9kdWNlckNhbGxiYWNr
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50cm9kdWNlckNvbm5lY3RDYWxsYmFj
ay5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkludHJvZHVjZXJJbnN0YWxsQ2FsbGJh
Y2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJLaXQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJLaXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJM
YWJlbEVsZW1lbnQuaCcsCkBAIC0zNzUsNiArMzgwLDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L0luc3BlY3RvckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbnNwZWN0b3JG
cm9udGVuZENsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0ludHJvZHVjZXJQcm94
eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0ludHJvZHVjZXJQcm94eS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQkocmV2aXNpb24gODIxNzIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2ZlYXR1cmVzLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICAgICAgICAg
J0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RT0xJywKICAgICAgICAgJ0VOQUJMRV9JTlBVVF9TUEVFQ0g9MScsCisgICAgICAgICdFTkFCTEVf
SU5UUk9EVUNFUj0xJywKICAgICAgICAgJ0VOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSPTEnLAog
ICAgICAgICAnRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTPTAnLAogICAgICAgICAnRU5BQkxF
X0xJTktfUFJFRkVUQ0g9MScsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnRyb2R1Y2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW50cm9kdWNlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW50cm9kdWNlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwg
SW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJJbnRyb2R1Y2VyX2gKKyNkZWZpbmUgV2ViSW50cm9kdWNlcl9oCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJET01TdHJpbmdMaXN0OworY2xhc3MgV2ViRWxlbWVudDsK
K2NsYXNzIFdlYkludHJvZHVjZXJBY2NlcHRDYWxsYmFjazsKK2NsYXNzIFdlYkludHJvZHVjZXJD
b25uZWN0Q2FsbGJhY2s7CitjbGFzcyBXZWJJbnRyb2R1Y2VySW5zdGFsbENhbGxiYWNrOworY2xh
c3MgV2ViU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisK
K2NsYXNzIFdlYkludHJvZHVjZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkludHJvZHVj
ZXIoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIGluc3RhbGwoY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mLAorICAgICAgICBjb25zdCBXZWJVUkwmIGljb24sIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViVVJMJiBob21lLAorICAgICAgICBXZWJJbnRyb2R1Y2VySW5zdGFsbENhbGxiYWNr
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmluc3RhbGwoY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9mZmVyKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwK
KyAgICAgICAgY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgc3VwcG9ydHMsCisgICAgICAgIGNvbnN0
IFdlYlVSTCYgd2luZG93LCBjb25zdCBXZWJVUkwmIGZyYW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlc2NpbmQoY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dChjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViRWxlbWVudCYgYW5jaG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YkRPTVN0cmluZ0xpc3QmIHdhbnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnRy
b2R1Y2VyQ29ubmVjdENhbGxiYWNrKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2NlcHQoY29u
c3QgV2ViU2VjdXJpdHlPcmlnaW4mLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiByZWdpc3RyYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW50cm9kdWNl
ckFjY2VwdENhbGxiYWNrKikgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW50cm9kdWNl
cl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRyb2R1Y2VyQWNj
ZXB0Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludHJvZHVjZXJBY2NlcHRDYWxsYmFjay5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJh
Y2tfaAorI2RlZmluZSBXZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2tfaAorCisjaW5jbHVkZSAi
V2ViSW50cm9kdWNlckNhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJET01TdHJpbmdMaXN0OworY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOworCitjbGFzcyBX
ZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2sgOiBwdWJsaWMgV2ViSW50cm9kdWNlckNhbGxiYWNr
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2soKSB7
fQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCog
Y3VzdG9tZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJET01TdHJpbmdM
aXN0JiB3YW50ZWQpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkludHJvZHVjZXJBY2Nl
cHRDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRy
b2R1Y2VyQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJbnRyb2R1Y2VyQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkludHJvZHVjZXJDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnRyb2R1Y2VyQ2FsbGJhY2tfaAorI2RlZmluZSBX
ZWJJbnRyb2R1Y2VyQ2FsbGJhY2tfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
SW50cm9kdWNlckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJbnRyb2R1Y2Vy
Q2FsbGJhY2soKSB7fQorfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW50cm9kdWNlckNhbGxiYWNr
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludHJvZHVjZXJDb25u
ZWN0Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkludHJvZHVjZXJDb25uZWN0Q2Fs
bGJhY2tfaAorI2RlZmluZSBXZWJJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrX2gKKworI2luY2x1
ZGUgIldlYkludHJvZHVjZXJDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViRE9NU3RyaW5nTGlzdDsKK2NsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKKworY2xh
c3MgV2ViSW50cm9kdWNlckNvbm5lY3RDYWxsYmFjayA6IHB1YmxpYyBXZWJJbnRyb2R1Y2VyQ2Fs
bGJhY2sgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkludHJvZHVjZXJDb25uZWN0Q2FsbGJh
Y2soKSB7fQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbCogc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRE9N
U3RyaW5nTGlzdCYgYWdyZWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZy
YW1lZCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW50cm9kdWNlckNvbm5lY3RDYWxs
YmFja19oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRyb2R1Y2Vy
SW5zdGFsbENhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW50cm9kdWNlckluc3RhbGxDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50cm9kdWNlckluc3RhbGxDYWxsYmFjay5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnRyb2R1Y2VySW5zdGFs
bENhbGxiYWNrX2gKKyNkZWZpbmUgV2ViSW50cm9kdWNlckluc3RhbGxDYWxsYmFja19oCisKKyNp
bmNsdWRlICJXZWJJbnRyb2R1Y2VyQ2FsbGJhY2suaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkludHJvZHVjZXJJbnN0YWxsQ2FsbGJhY2sgOiBwdWJsaWMgV2ViSW50cm9kdWNl
ckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJbnRyb2R1Y2VySW5zdGFsbENh
bGxiYWNrKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChib29sIGRvbmUpID0g
MDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkludHJvZHVjZXJJbnN0YWxsQ2FsbGJhY2tfaApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAko
cmV2aXNpb24gODIxNzIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlOwogY2xhc3MgV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uOwogY2xhc3MgV2Vi
SW1hZ2U7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CitjbGFzcyBXZWJJbnRyb2R1Y2VyOwogY2xh
c3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXI7CkBAIC0xMTYsNiArMTE3LDkgQEAgcHVibGljOgogICAgIC8vIHNob3VsZCBi
ZSBwcmludGVkLgogICAgIHZpcnR1YWwgdm9pZCBwcmludFBhZ2UoV2ViRnJhbWUqKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB0byByZXRyaWV2ZSB0aGUgSW50cm9kdWNlciBtZXNzYWdlIGRpc3BhdGNo
ZXIuCisgICAgdmlydHVhbCBXZWJJbnRyb2R1Y2VyKiBpbnRyb2R1Y2VyRGlzcGF0Y2hlcigpIHsg
cmV0dXJuIDA7IH0KKwogICAgIC8vIENhbGxlZCB0byByZXRyaWV2ZSB0aGUgcHJvdmlkZXIgb2Yg
ZGVza3RvcCBub3RpZmljYXRpb25zLgogICAgIHZpcnR1YWwgV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSB7IHJldHVybiAwOyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA4MjE3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJJbnRyb2R1Y2VyUHJveHkuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTc4Myw2
ICs3ODQsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3N0QWNjZXNzaWJpbGl0eQogICAg
ICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5wb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG9iaiksIHRvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24pKTsKIH0KIAorI2lmIEVOQUJMRShJTlRST0RVQ0VSKQorSW50cm9kdWNl
ciogQ2hyb21lQ2xpZW50SW1wbDo6bWFrZUludHJvZHVjZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjptYWtlSW50cm9kdWNlcihj
b250ZXh0LCBtX3dlYlZpZXctPmNsaWVudCgpLT5pbnRyb2R1Y2VyRGlzcGF0Y2hlcigpKTsKK30K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50
ZXIqIENocm9tZUNsaWVudEltcGw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0CiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShy
ZXZpc2lvbiA4MjE3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYgRU5BQkxFKElOVFJPRFVDRVIpCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRyb2R1Y2VyKiBtYWtlSW50cm9kdWNlcihXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ludHJvZHVjZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW50cm9kdWNlclByb3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ludHJvZHVjZXJQcm94eS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludHJvZHVj
ZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKElOVFJPRFVDRVIpCisKKyNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkludHJvZHVjZXIuaCIK
KyNpbmNsdWRlICJJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJJbnRyb2R1
Y2VyQ29ubmVjdENhbGxiYWNrLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlZvaWRD
YWxsYmFjay5oIgorI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJXZWJF
bGVtZW50LmgiCisjaW5jbHVkZSAiV2ViSW50cm9kdWNlci5oIgorI2luY2x1ZGUgIldlYkludHJv
ZHVjZXJBY2NlcHRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldlYkludHJvZHVjZXJDb25uZWN0Q2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJXZWJJbnRyb2R1Y2VySW5zdGFsbENhbGxiYWNrLmgiCisjaW5j
bHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBGb3JJbnN0YWxsQ2FsbGJhY2sgOiBwdWJs
aWMgV2ViSW50cm9kdWNlckluc3RhbGxDYWxsYmFjayB7CitwdWJsaWM6CisgICAgRm9ySW5zdGFs
bENhbGxiYWNrKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IGNhbGxiYWNr
KSA6CisgICAgICAgIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKyAgICB2aXJ0
dWFsIH5Gb3JJbnN0YWxsQ2FsbGJhY2soKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXZlbnQoYm9vbCBkb25lKQorICAgIHsKKyAgICAgIGlmIChkb25lKQorICAgICAg
ICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXVEY6
OlJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IGNvbnN0IG1fY2FsbGJhY2s7Cit9OworCitj
bGFzcyBGb3JJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrIDogcHVibGljIFdlYkludHJvZHVjZXJD
b25uZWN0Q2FsbGJhY2sgeworcHVibGljOgorICAgIEZvckludHJvZHVjZXJDb25uZWN0Q2FsbGJh
Y2soCisgICAgICAgIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBjb250ZXh0LAorICAgICAgICBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW50cm9kdWNl
ckNvbm5lY3RDYWxsYmFjaz4gY2FsbGJhY2spIDoKKyAgICAgICAgICAgIG1fY29udGV4dChjb250
ZXh0KSwKKyAgICAgICAgICAgIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKyAg
ICB2aXJ0dWFsIH5Gb3JJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrKCkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogc2Vy
dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRE9NU3RyaW5nTGlz
dCYgYWdyZWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyYW1lZCkKKyAg
ICB7CisgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0KiBwb3J0ID0gMDsKKyAgICAgICAgaWYg
KHNlcnZpY2UpIHsKKyAgICAgICAgICAgIHBvcnQgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6Y3Jl
YXRlKCptX2NvbnRleHQpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9CisgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShzZXJ2aWNl
KTsKKyAgICAgICAgICAgIHNlcnZpY2UtPnNldENsaWVudChjaGFubmVsLmdldCgpKTsKKyAgICAg
ICAgICAgIHBvcnQtPmVudGFuZ2xlKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRl
KGNoYW5uZWwpKTsKKyAgICAgICAgfQorICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChw
b3J0LCBhZ3JlZWQsIGZyYW1lZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdURjo6UmVmUHRy
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnN0IG1fY29udGV4dDsKKyAgICBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrPiBjb25zdCBtX2Nh
bGxiYWNrOworfTsKKworY2xhc3MgRm9ySW50cm9kdWNlckFjY2VwdENhbGxiYWNrIDogcHVibGlj
IFdlYkludHJvZHVjZXJBY2NlcHRDYWxsYmFjayB7CitwdWJsaWM6CisgICAgRm9ySW50cm9kdWNl
ckFjY2VwdENhbGxiYWNrKAorICAgICAgICBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dCwKKyAgICAgICAgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkludHJvZHVjZXJBY2NlcHRDYWxsYmFjaz4gY2FsbGJhY2spIDoKKyAgICAgICAgICAgIG1f
Y29udGV4dChjb250ZXh0KSwKKyAgICAgICAgICAgIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAg
eworICAgIH0KKyAgICB2aXJ0dWFsIH5Gb3JJbnRyb2R1Y2VyQWNjZXB0Q2FsbGJhY2soKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViTWVzc2FnZVBvcnRD
aGFubmVsKiBjdXN0b21lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkRP
TVN0cmluZ0xpc3QmIHdhbnRlZCkKKyAgICB7CisgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
KiBwb3J0ID0gMDsKKyAgICAgICAgaWYgKGN1c3RvbWVyKSB7CisgICAgICAgICAgICBwb3J0ID0g
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNyZWF0ZSgqbV9jb250ZXh0KS5sZWFrUmVmKCk7CisgICAg
ICAgICAgICBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw+IGNoYW5uZWwgPQorICAgICAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsOjpjcmVhdGUoY3VzdG9tZXIpOworICAgICAgICAgICAgY3VzdG9tZXItPnNldENs
aWVudChjaGFubmVsLmdldCgpKTsKKyAgICAgICAgICAgIHBvcnQtPmVudGFuZ2xlKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwpKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChwb3J0LCBvcmlnaW4sIHdhbnRlZCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IGNvbnN0IG1fY29udGV4dDsKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJbnRyb2R1Y2Vy
QWNjZXB0Q2FsbGJhY2s+IGNvbnN0IG1fY2FsbGJhY2s7Cit9OworCitjbGFzcyBGb3JXZWJJbnRy
b2R1Y2VyIDogcHVibGljIFdlYkNvcmU6OkludHJvZHVjZXIgeworcHVibGljOgorICAgIEZvcldl
YkludHJvZHVjZXIoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgIFdlYkludHJvZHVjZXIqIGludHJvZHVjZXIpIDogbV9jb250ZXh0
KGNvbnRleHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ludHJvZHVjZXIoaW50cm9kdWNlcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGluc3RhbGwoY29uc3QgV1RGOjpTdHJpbmcmIGljb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCisgICAgeworICAg
ICAgICBtX2ludHJvZHVjZXItPmluc3RhbGwoCisgICAgICAgICAgICBXZWJTZWN1cml0eU9yaWdp
bihtX2NvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpLAorICAgICAgICAgICAgbV9jb250ZXh0LT5j
b21wbGV0ZVVSTChpY29uKSwgbmFtZSwKKyAgICAgICAgICAgIG1fY29udGV4dC0+Y29tcGxldGVV
UkwoaG9tZSksIG5ldyBGb3JJbnN0YWxsQ2FsbGJhY2soY2FsbGJhY2spKTsKKyAgICB9CisgICAg
dmlydHVhbCB2b2lkIHVuaW5zdGFsbCgpCisgICAgeworICAgICAgICBtX2ludHJvZHVjZXItPnVu
aW5zdGFsbCgKKyAgICAgICAgICAgIFdlYlNlY3VyaXR5T3JpZ2luKG1fY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSkpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb2ZmZXIoCisgICAgICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBpZCwKKyAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGxhYmVsLAor
ICAgICAgICBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4gc3VwcG9ydHMs
CisgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiB3aW5kb3csCisgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBmcmFtZSkKKyAgICB7CisgICAgICAgIG1faW50cm9kdWNlci0+b2ZmZXIoCisgICAg
ICAgICAgICBXZWJTZWN1cml0eU9yaWdpbihtX2NvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpLAor
ICAgICAgICAgICAgaWQsIGxhYmVsLCBzdXBwb3J0cywKKyAgICAgICAgICAgIG1fY29udGV4dC0+
Y29tcGxldGVVUkwod2luZG93KSwKKyAgICAgICAgICAgIG1fY29udGV4dC0+Y29tcGxldGVVUkwo
ZnJhbWUpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHJlc2NpbmQoY29uc3QgV1RGOjpTdHJp
bmcmIGlkKQorICAgIHsKKyAgICAgICAgbV9pbnRyb2R1Y2VyLT5yZXNjaW5kKFdlYlNlY3VyaXR5
T3JpZ2luKG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KAorICAgICAg
ICBXZWJDb3JlOjpFbGVtZW50KiBhbmNob3IsCisgICAgICAgIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpET01TdHJpbmdMaXN0PiB3YW50ZWQsCisgICAgICAgIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpJbnRyb2R1Y2VyQ29ubmVjdENhbGxiYWNrPiBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IG1faW50cm9kdWNlci0+Y29ubmVjdChXZWJTZWN1cml0eU9yaWdpbihtX2NvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCkpLAorICAgICAgICAgICAgV2ViRWxlbWVudChhbmNob3IpLCB3YW50ZWQsCisg
ICAgICAgICAgICBuZXcgRm9ySW50cm9kdWNlckNvbm5lY3RDYWxsYmFjayhtX2NvbnRleHQsIGNh
bGxiYWNrKSk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBhY2NlcHQoCisgICAgICAgIGNvbnN0
IFdURjo6U3RyaW5nJiByZWdpc3RyYW50LAorICAgICAgICBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SW50cm9kdWNlckFjY2VwdENhbGxiYWNrPiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1f
aW50cm9kdWNlci0+YWNjZXB0KFdlYlNlY3VyaXR5T3JpZ2luKG1fY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSksCisgICAgICAgICAgICByZWdpc3RyYW50LCBuZXcgRm9ySW50cm9kdWNlckFjY2Vw
dENhbGxiYWNrKG1fY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
V1RGOjpSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29uc3QgbV9jb250
ZXh0OworICAgIFdlYkludHJvZHVjZXIqIGNvbnN0IG1faW50cm9kdWNlcjsKK307CisKK1dlYkNv
cmU6OkludHJvZHVjZXIqIG1ha2VJbnRyb2R1Y2VyKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJ
bnRyb2R1Y2VyKiBpbnRyb2R1Y2VyKQoreworICAgIHJldHVybiBuZXcgRm9yV2ViSW50cm9kdWNl
cihjb250ZXh0LCBpbnRyb2R1Y2VyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5UUk9EVUNFUikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ludHJvZHVjZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ludHJvZHVjZXJQcm94eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW50cm9kdWNlclByb3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEludHJvZHVjZXJQcm94eV9oCisjZGVmaW5lIEludHJvZHVjZXJQcm94eV9oCisK
KyNpZiBFTkFCTEUoSU5UUk9EVUNFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIEludHJvZHVjZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViSW50cm9kdWNlcjsKKworV2ViQ29yZTo6SW50cm9kdWNlciogbWFr
ZUludHJvZHVjZXIoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnRyb2R1Y2VyKik7CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOVFJPRFVDRVIpCisKKyNlbmRpZiAvLyBJ
bnRyb2R1Y2VyUHJveHlfaAo=
</data>
<flag name="review"
          id="84183"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>