<?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>225240</bug_id>
          
          <creation_ts>2021-04-30 11:30:47 -0700</creation_ts>
          <short_desc>[iOS] Add a heuristic to determine whether a synthetic click triggered any meaningful changes</short_desc>
          <delta_ts>2021-04-30 14:30:28 -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>UI Events</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1755756</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-30 11:30:47 -0700</bug_when>
    <thetext>rdar://77221196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755766</commentid>
    <comment_count>1</comment_count>
      <attachid>427438</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-30 12:10:26 -0700</bug_when>
    <thetext>Created attachment 427438
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755773</commentid>
    <comment_count>2</comment_count>
      <attachid>427438</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-30 12:19:38 -0700</bug_when>
    <thetext>Comment on attachment 427438
For EWS

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:849
&gt; +        if (elementBounds.width() &gt;= unobscuredRect.width() / 2 &amp;&amp; elementBounds.height() &gt;= unobscuredRect.height() / 2)

I... expect that this heuristic will require some iteration, but at least getting the plumbing going seems fine.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:904
&gt; +    if (!m_didHandleOrPreventMouseDownOrMouseUpEventDuringSyntheticClick &amp;&amp; !isProbablyMeaningfulClick(nodeRespondingToClick))
&gt; +        send(Messages::WebPageProxy::DidNotHandleTapAsMeaningfulClickAtPoint(roundedIntPoint(location)));

This isn&apos;t going to come into play for e.g. events from WKMouseGR. Does it matter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755775</commentid>
    <comment_count>3</comment_count>
      <attachid>427438</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-30 12:28:48 -0700</bug_when>
    <thetext>Comment on attachment 427438
For EWS

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:849
&gt;&gt; +        if (elementBounds.width() &gt;= unobscuredRect.width() / 2 &amp;&amp; elementBounds.height() &gt;= unobscuredRect.height() / 2)
&gt; 
&gt; I... expect that this heuristic will require some iteration, but at least getting the plumbing going seems fine.

Indeed — this is definitely going to need to be reworked :P

I think we&apos;ll eventually want some kind of heuristic here to detect that the synthetic click has shown (or hidden) some kind of UI on the page, or programmatically moved focus, or…many other things.

This size check is kind of like a proxy for that, in lieu of more sophisticated heuristics, since tapping on huge clickable elements on the page that don&apos;t prevent default or handle any default action *tend* to not trigger any meaningful change.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:904
&gt;&gt; +        send(Messages::WebPageProxy::DidNotHandleTapAsMeaningfulClickAtPoint(roundedIntPoint(location)));
&gt; 
&gt; This isn&apos;t going to come into play for e.g. events from WKMouseGR. Does it matter?

Given the way this is going to be used by the client, I think it&apos;s okay for now that trackpad-on-iPadOS won&apos;t trigger calls into this delegate method.

If it&apos;s necessary though, I could extend calls to this delegate to beyond this synthetic click code as a followup, since the code to dispatch clicks when using a trackpad on iOS is pretty distinct from this synthetic click codepath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755776</commentid>
    <comment_count>4</comment_count>
      <attachid>427441</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-30 12:37:25 -0700</bug_when>
    <thetext>Created attachment 427441
Add missing WK_API_AVAILABLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755808</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-30 14:30:27 -0700</bug_when>
    <thetext>Committed r276853 (237204@main): &lt;https://commits.webkit.org/237204@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427441.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427438</attachid>
            <date>2021-04-30 12:10:26 -0700</date>
            <delta_ts>2021-04-30 12:37:24 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-225240-20210430121025.patch</filename>
            <type>text/plain</type>
            <size>41270</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ5ZGEwOWE3M2VlZjk0
ZGFhNmQyZjNlZGQzZjI4OGJiNzhlOWJjYS4uMTUyOTgzNjFjNTdiMjgwN2I1YjA5N2NiOTBmMzVm
MzhjMmQ4MWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBh
IGhldXJpc3RpYyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHN5bnRoZXRpYyBjbGljayB0cmlnZ2Vy
ZWQgYW55IG1lYW5pbmdmdWwgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MjQwCisgICAgICAgIHJkYXI6Ly83NzIyMTE5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwbHVtYmluZyBm
b3IgYSBgQ2hyb21lQ2xpZW50YCBob29rIHRoYXQncyBjYWxsZWQgd2hlbiBhIG1vdXNlZG93biBv
ciBtb3VzZXVwIGV2ZW50IGlzIGVpdGhlciBwcmV2ZW50ZWQgYnkKKyAgICAgICAgdGhlIHBhZ2Us
IG9yIGhhbmRsZWQgd2l0aCBhIGRlZmF1bHQgZXZlbnQgaGFuZGxlciBvbiB0aGUgZWxlbWVudCAo
ZS5nLiB3aGVuIGNsaWNraW5nIGEgbGluaykuCisKKyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMv
aW9zL2RpZC1ub3QtaGFuZGxlLW1lYW5pbmdmdWwtY2xpY2suaHRtbAorCisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZGlkSGFu
ZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorCiAyMDIxLTA0LTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBleHBlcmltZW50IHdpdGggYXZlcmFnaW5nIHNhbXBs
aW5nIGNvbG9ycyBhY3Jvc3MgdGhlIHRvcCBvZiB0aGUgcGFnZSBhcyB0aGUgc2Nyb2xsIGFyZWEg
YmFja2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYjQyYWM5NThkOTQzYjllNDRjOTVmMGEwYTIxMjJjNTNi
OTc4YWUyLi42OTlhYWNmMGIzYTRkMWMzMGQ5ZmM2NzdjMDM0MzhiMDZjZTYwYWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA0LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIGhldXJpc3RpYyB0byBkZXRlcm1p
bmUgd2hldGhlciBhIHN5bnRoZXRpYyBjbGljayB0cmlnZ2VyZWQgYW55IG1lYW5pbmdmdWwgY2hh
bmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
MjQwCisgICAgICAgIHJkYXI6Ly83NzIyMTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSBoZXVyaXN0aWMgdG8gaW5mb3JtIFdL
V2ViVmlldyBpT1MgY2xpZW50cyB3aGVuIGEgdGFwIGVpdGhlciBmYWlsZWQgdG8gcmVzdWx0IGlu
IGEgc3ludGhldGljIGNsaWNrLAorICAgICAgICBvciByZXN1bHRlZCBpbiBhIHN5bnRoZXRpYyBj
bGljayB0aGF0IChwcm9iYWJseSkgZGlkbid0IGhhdmUgYW55ICJtZWFuaW5nZnVsIHNpZGUgZWZm
ZWN0cyIuIFdoaWxlIHRoaXMgbm90aW9uIG9mCisgICAgICAgICJtZWFuaW5nZnVsbmVzcyIgaXNu
J3Qgd2VsbCBkZWZpbmVkLCB0aGUgaWRlYSBiZWhpbmQgdGhlIGhldXJpc3RpYyBpcyB0aGF0IGl0
IHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRhcHMgb24KKyAgICAgICAgY2xpY2thYmxlIGVs
ZW1lbnRzIGxpa2UgYnV0dG9ucyBvciBsaW5rcyB0aGF0IHRyaWdnZXIgc29tZSBub3RpY2FibGUg
Y2hhbmdlIG9uIHRoZSBwYWdlLCB2cy4gdGFwcyBvbiBib3RoCisgICAgICAgIGNsaWNrYWJsZSBv
ciBub24tY2xpY2thYmxlIGVsZW1lbnRzIHRoYXQgZG8gbm90IHRyaWdnZXIgYW55IGNoYW5nZXMg
b24gdGhlIHBhZ2UuCisKKyAgICAgICAgRm9yIGluc3RhbmNlIG9uIGEgbmV3cy1hcnRpY2xlLWxp
a2UgcGFnZSwgdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0YXBw
aW5nIG9uIHBhcmFncmFwaCB0ZXh0CisgICAgICAgIGluIHRoZSBhcnRpY2xlLCBldmVuIGlmIHRo
ZXJlIGlzIGEgY2xpY2sgaGFuZGxlciBvdmVyIHRoZSBlbnRpcmUgYXJ0aWNsZSBvciBldmVuIGJv
ZHkgZWxlbWVudC4gSG93ZXZlciwgdGFwcGluZworICAgICAgICBhIGxpbmsgb3IgYSBidXR0b24g
b24gdGhlIHNhbWUgcGFnZSBzaG91bGQgbm90IGNhdXNlIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHRv
IGJlIGludm9rZWQuIEFkZGl0aW9uYWxseSwgaWYgdGhlCisgICAgICAgIHBhZ2UgZXhwbGljaXRs
eSBwcmV2ZW50cyBkZWZhdWx0IGJlaGF2aW9yIGR1cmluZyBhIHN5bnRoZXRpYyBtb3VzZSBldmVu
dCwgdGhpcyBtZXRob2Qgc2hvdWxkIGFsc28gKm5vdCogYmUKKyAgICAgICAgaW52b2tlZC4KKwor
ICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIHJvdWdobHkgc2ltaWxhciB0byB0aGUgZXhpc3Rpbmcg
ZGVsZWdhdGUgbWV0aG9kIGAtX3dlYlZpZXc6ZGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQ6
YCwKKyAgICAgICAgZXhjZXB0IHRoYXQgdGhpcyB2YXJpYW50IGFsbG93cyBmb3IgbW9yZSB3aWdn
bGUgcm9vbSBhcm91bmQgd2hhdCBjb25zdGl0dXRlcyBhICJtZWFuaW5nZnVsIiBpbnRlcmFjdGlv
biB3aXRoIHRoZQorICAgICAgICBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tBdFBvaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1Rlc3RpbmdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkTm90SGFuZGxlVGFw
QXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50Ol0pOgorCisgICAgICAgIFNlZSBUb29scy9DaGFuZ2VM
b2cgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzIHRlc3RpbmcgaG9vay4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVRh
cEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZE5vdEhhbmRs
ZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTm90
SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6aXNQcm9iYWJseU1lYW5pbmdmdWxDbGljayk6CisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBjb3JlIG9mIHRoZSBoZXVyaXN0aWMgaGVyZS4gRm9yIG5vdywgaXQganVzdCBleGFtaW5l
cyB0aGUgc2l6ZSBvZiB0aGUgY2xpY2sgdGFyZ2V0LiBUaGlzIGlzbid0CisgICAgICAgIGdvaW5n
IHRvIHNhdGlzZnkgdGhlIGNhc2Ugd2hlcmUgYSBwYWdlIGluc3RhbGxzIGEgY2xpY2sgZXZlbnQg
aGFuZGxlciBvbiB0aGUgYm9keSBlbGVtZW50IChvciBhIHNpbWlsYXIKKyAgICAgICAgZWxlbWVu
dCB0aGF0IGVuY2Fwc3VsYXRlcyBtb3N0IG9mIHRoZSBwYWdlKSBhbmQgdGhlbiBwZXJmb3JtcyBo
aXQtdGVzdGluZyBpbiB0aGVpciBzY3JpcHQsIGJ1dCBpdCdzIHNvbWV3aGVyZSB0bworICAgICAg
ICBzdGFydC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wbGV0ZVN5bnRoZXRpY0Ns
aWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXR0ZW1wdFN5bnRoZXRpY0NsaWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JN
b3VzZVVwRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJU
YXBBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tbWl0UG90ZW50aWFsVGFw
RmFpbGVkKToKKwogMjAyMS0wNC0yOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgZXhwZXJpbWVudCB3aXRoIGF2ZXJhZ2luZyBzYW1wbGluZyBjb2xvcnMgYWNy
b3NzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgYXMgdGhlIHNjcm9sbCBhcmVhIGJhY2tncm91bmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGVkOGNmNDAzMjEwZTEwZWE2ZDc0ZDg3YjU5
NjllMzcyNmRmYWE3NWMuLmJhZDkxNzE4NDE3ODkyZjc4ZDkxZTAzOTc0YTcxY2E5ODE0OGI1MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMjU4LDYgKzI1OCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgpID0gMDsKICNl
bmRpZgogCisgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91
c2VVcEV2ZW50KCkgeyB9CisKICAgICB2aXJ0dWFsIFNlY29uZHMgZXZlbnRUaHJvdHRsaW5nRGVs
YXkoKSB7IHJldHVybiAwX3M7IH07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRjZGFiOWI1NDY2YTk5ODY5NGUxOTI1OTJj
ZTAyNzM0ZTYzZmRjMDkuLjVjN2M5OTJiMzU2M2E0MDg0MTQxYzZjYWExNGM1OGMzYTY2MTViN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE3NzMsNiArMTc3Myw4IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRDYXJl
dEJsaW5raW5nU3VzcGVuZGVkKHRydWUpOwogCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSAhZGlz
cGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwgbW91c2VFdmVudC50
YXJnZXROb2RlKCksIG1fY2xpY2tDb3VudCwgcGxhdGZvcm1Nb3VzZUV2ZW50LCBGaXJlTW91c2VP
dmVyT3V0OjpZZXMpOworICAgIGlmIChhdXRvIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsgcGFnZSAm
JiBzd2FsbG93RXZlbnQpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRpZEhhbmRs
ZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCk7CiAgICAgbV9jYXB0dXJlc0RyYWdn
aW5nID0gIXN3YWxsb3dFdmVudCB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigpOwogCiAgICAgLy8g
SWYgdGhlIGhpdCB0ZXN0aW5nIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZCB0aGUgZXZlbnQgd2FzIGlu
IGEgc2Nyb2xsYmFyLCByZWZldGNoIHRoZSBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzCkBA
IC0xODM1LDYgKzE4MzcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVD
bGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcgogCiAgICAgbV9jbGlj
a0NvdW50ID0gcGxhdGZvcm1Nb3VzZUV2ZW50LmNsaWNrQ291bnQoKTsKICAgICBib29sIHN3YWxs
b3dNb3VzZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQsIG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91
c2VFdmVudCwgRmlyZU1vdXNlT3Zlck91dDo6Tm8pOworICAgIGlmIChhdXRvIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsgcGFnZSAmJiBzd2FsbG93TW91c2VVcEV2ZW50KQorICAgICAgICBwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS5kaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVu
dCgpOwogCiAgICAgYm9vbCBzd2FsbG93Q2xpY2tFdmVudCA9IHBsYXRmb3JtTW91c2VFdmVudC5i
dXR0b24oKSAhPSBSaWdodEJ1dHRvbiAmJiBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSA9PSBtX2Ns
aWNrTm9kZSAmJiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBt
b3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgbV9jbGlja0NvdW50LCBwbGF0Zm9ybU1vdXNlRXZlbnQs
IEZpcmVNb3VzZU92ZXJPdXQ6Olllcyk7CiAKQEAgLTIxMzksNiArMjE0Myw4IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIHBsYXRmb3JtTW91CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBzd2FsbG93
TW91c2VVcEV2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50LCBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgbV9jbGlja0NvdW50LCBwbGF0Zm9ybU1vdXNl
RXZlbnQsIEZpcmVNb3VzZU92ZXJPdXQ6Ok5vKTsKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFt
ZS5wYWdlKCk7IHBhZ2UgJiYgc3dhbGxvd01vdXNlVXBFdmVudCkKKyAgICAgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQo
KTsKIAogICAgIGJvb2wgY29udGV4dE1lbnVFdmVudCA9IHBsYXRmb3JtTW91c2VFdmVudC5idXR0
b24oKSA9PSBSaWdodEJ1dHRvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAppbmRleCAzODg2OGI4YzY1YWE3ZDExOGRlMzRiMjc1NWQxYzI4YzBkZjViYzNiLi41
MjIyODQ3OTFkMDY4YmYxNTlmN2U5ZGYxNzhhNzBlYjRlZDcxYjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50
KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0
aW9ucykgeyByZXR1cm4gZGVmYXVsdEFjdGlvbnM7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90
SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSB7IH0KICAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggNGVhZDkwYjE0YjgzMWM1YTA5MjIwNDI2
YjJmMDM1NDAzMWYzYzQ3YS4uNzIyMDgzNjQ4MWQ0OTUyZTc2NjZiODJiMDkzMDg1MzU5NjYyOTZm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNjQsNiArMTY0LDcgQEAgc3RydWN0IFVJRWRnZUluc2V0
czsKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFw
cExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50
IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwogLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
byAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXk8X1dLRWxlbWVudEFjdGlvbiAqPiAq
KWRlZmF1bHRBY3Rpb25zOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludDooQ0dQb2ludClwb2ludDsKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xp
Y2tBdFBvaW50OihDR1BvaW50KXBvaW50OwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOihOU1VSTCAqKXVy
bCBmcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJP
T0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjAp
KTsKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZmlsZVVwbG9hZFBhbmVs
Q29udGVudElzTWFuYWdlZFdpdGhJbml0aWF0aW5nRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCA0YjI0Y2IxYWQwOGUwODllMTQ5
NjBjMGRkZWM1YjM0NzdmNmI0YzQ4Li42NjI2YWE1YjJiNDgxYzJkZjI3NjU0MzM4YmI5YzkzMWYw
MjNlZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC02NCw2ICs2NCw3IEBA
CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9X
S1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29u
dGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lk
KV9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7CiAKIC0g
KHZvaWQpc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5T
SW50ZWdlciltaW51dGU7CiAtIChkb3VibGUpdGltZVBpY2tlclZhbHVlSG91cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5t
bQppbmRleCBhZjNlM2M2ZWQ5ZmRlNGIzNzE1ZmViZTFkMWIwNDA1MzJmZDM3NGNiLi44OTI0YzY2
NDRjYzM1MjhiYzcxZDBmYTljZDVhYzM2ZWE4ZWY1NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC05Niw2
ICs5NiwxMSBAQCAtICh2b2lkKV9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVs
dGFSYW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXgogI2VuZGlmCiB9CiAKKy0gKHZvaWQp
X2RpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludDooQ0dQb2ludClwb2ludAor
eworICAgIC8vIEZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgorfQorCiAtIChCT09MKV9tYXlD
b250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3QKIHsKICNpZiBFTkFCTEUo
RURJVEFCTEVfUkVHSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCmluZGV4IDk3OTc1OTdjMTM3MGRkNmMwOWQzYTI0MTAxMzM0OWNmMzY0ZmRjY2MuLmU5Nzkx
N2Y4ODkwYjUxZjNlMTNiOGI3NGIyOWI0OGQyYjczMWZiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBhY3Rpb25zRm9yRWxlbWVudChfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbyAqLCBSZXRhaW5QdHI8TlNBcnJheT4gZGVmYXVsdEFjdGlvbnMp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsKICAgICAg
ICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgZmluYWw7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApAQCAtMjM3LDYgKzIzOCw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3QWN0aW9uc0ZvckVsZW1lbnREZWZhdWx0
QWN0aW9ucyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tB
dFBvaW50IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNNZWFuaW5n
ZnVsQ2xpY2tBdFBvaW50IDogMTsKICAgICAgICAgYm9vbCBwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXJGb3JXZWJWaWV3IDogMTsKICNlbmRpZgogICAgICAgICBib29sIGRhdGFEZXRlY3Rpb25Db250
ZXh0Rm9yV2ViVmlldyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQppbmRleCBkOTk3YmNjZTJiZjU3M2Q2M2I0ZmM4MjZkODgwYTcxYjY0OWJlYTllLi5l
YWQ5YjFiNzU2NTE5MjI2NjVhOTk0OWI4ZmM3ZmRiMzVlMTYyODVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTE1Nyw2ICsxNTcsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2Vu
ZGlmCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0FjdGlvbnNGb3JFbGVtZW50RGVmYXVs
dEFjdGlvbnMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzphY3Rpb25zRm9yRWxlbWVudDpkZWZhdWx0QWN0aW9uczopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWROb3RIYW5kbGVUYXBBc0NsaWNr
QXRQb2ludDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkTm90SGFuZGxlVGFw
QXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50
OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldl
YlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKICNlbmRpZgogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdJc01lZGlhQ2FwdHVyZUF1dGhvcml6ZWRGb3JGcmFtZURlY2lzaW9uSGFuZGxl
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDptYWluRnJhbWVVUkw6ZnJhbWVJZGVudGlmaWVyOmRl
Y2lzaW9uSGFuZGxlcjopXSB8fCBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzppbmNsdWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOildOwpAQCAtMTQx
MSw2ICsxNDEyLDIxIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVRh
cEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50CiAgICAgW3N0YXRpY19jYXN0
PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OnBv
aW50XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlVGFwQXNN
ZWFuaW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sK
KyAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0F0UG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUg
PSBtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
Pj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgp
IGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludDpwb2ludF07Cit9CisKIFVJ
Vmlld0NvbnRyb2xsZXIgKlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpwcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoKQogewogICAgIGlmICghbV91aURlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IDlhOTMzZWNlZDAyMTk5NDlkMTVkMWFlYmQ5YjE4ZmM5NDBhMjk1ZDEu
LjcwYzZiYjZkNjRiMjVmY2U5ZjIzMWZiY2U3MDhjMDUxNWZiNzM3ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMzMSw2ICszMzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVU
YXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xp
Y2soKSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAwZmJhODJlODdhY2ViNzc3YmI4YjcwOTJhZDU5YjBmNTNmOTZhY2U2Li41YWYyOGI4MmQz
YjQ0YzhkNjEzYWE2Y2QzM2RkNjM5NmJjMGMxZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtODI3LDYgKzgyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZEZvck1lZGlhKCk7CiAgICAgdm9pZCBjb21taXRQb3Rl
bnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1
bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgZGlkQ29t
cGxldGVTeW50aGV0aWNDbGljaygpOwogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
RHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGhhbmRs
ZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sIGZpdEVu
dGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4
aW11bVNjYWxlLCBib29sIG5vZGVJc1Jvb3RMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjFiNWE2ZjRlZDhkYThmN2Iw
MjlhYjdjYmFhMDA4NTJjM2UzZGJjMi4uODI3ZmUyOTk5ZGM4ZGZkZTE5ZjYwNGRhMjk1YmFlMjky
OGUxNGVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMTcwLDYgKzE3MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6Oklu
dFJlY3QgZWxlbWVudFJlY3QsIGVudW06dWludDhfdCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3kgcG9saWN5LCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQpCiAgICAgQ29tbWl0UG90ZW50aWFs
VGFwRmFpbGVkKCkKICAgICBEaWROb3RIYW5kbGVUYXBBc0NsaWNrKFdlYkNvcmU6OkludFBvaW50
IHBvaW50KQorICAgIERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAg
ICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCBy
ZXF1ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3Rl
bnRpYWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVj
dCwgYm9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJs
ZSB2aWV3cG9ydE1heGltdW1TY2FsZSwgYm9vbCBub2RlSXNSb290TGV2ZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGQ4Nzk4MjM0
MWI2ZWZiNDRmNzNlMTExNzEzYjRhMDQyM2YzY2QxZGIuLjU2ZDE4NWM5MDEzZDE5MDc1NWM1MzYx
OWFlYzFiYjI0MjNiMTYxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZhaWxOYXZpZ2F0aW9uKEFQSTo6TmF2aWdhdGlvbiopIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBB
c01lYW5pbmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYWQxYWE3MmEwODE5
NGMyYmRiMzJiNjNhODVjMWUwNzI5NTYyYmFhMS4uYzRjM2EzY2Y2ZGE3MGFkMzdmNTM3YjhlZDAx
MzZkNDZjMDk0NTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtMjMyLDcgKzIzMiwxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkK
IHsKICAgICBbbV9jb250ZW50VmlldyBfZGlkTm90SGFuZGxlVGFwQXNDbGljazpwb2ludF07CiB9
Ci0gICAgCisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1
bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7CisgICAgW21f
d2ViVmlldyBfZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50OnBvaW50XTsK
K30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiB7
CiAgICAgW21fY29udGVudFZpZXcgX2RpZENvbXBsZXRlU3ludGhldGljQ2xpY2tdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNjdmZmM0
MjNlYmY4ODlmOTVlMzQ2OWI2YTYxZmQ0OGQxMWQ4ZDRmYS4uNTU5NDQyNGVhMDM4ZjIzOTE2YzU0
ZTQxZmE4YTc1NzAxNGRiOTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMDA3LDYgKzEwMDcsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
KQogICAgIHBhZ2VDbGllbnQoKS5kaWROb3RIYW5kbGVUYXBBc0NsaWNrKHBvaW50KTsKICAgICBt
X3VpQ2xpZW50LT5kaWROb3RIYW5kbGVUYXBBc0NsaWNrKHBvaW50KTsKIH0KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7CisgICAgcGFnZUNsaWVudCgpLmRpZE5vdEhhbmRs
ZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChwb2ludCk7CisgICAgbV91aUNsaWVudC0+ZGlk
Tm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KHBvaW50KTsKK30KICAgICAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggYTMxZWU3MjNkZWIxZDg3MjVkYzg0OWNkZWQzYjI4NDRhMzJiZTcy
Ny4uZmM4NmUwZTk1MWRlMTU5MjQ3YTdhNDhlZmY4OTg5OTYxYzgxZTE3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTE0ODUsNCArMTQ4NSw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQ
CiB9CiAjZW5kaWYKIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEhhbmRsZU9yUHJldmVudE1v
dXNlRG93bk9yTW91c2VVcEV2ZW50KCkKK3sKKyAgICBtX3BhZ2UuZGlkSGFuZGxlT3JQcmV2ZW50
TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggZjBjYWQ1YzhlZWNkODZkYjNlNzBhODFjM2E1N2I5Y2M2MDAz
NTY1Zi4uNGQ0Y2E5YmI3Y2JhZjA4MGFhMmNkNmYzMWY5YTdkNWYyMTIxYTQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMTY0LDYgKzE2NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcmV2
ZW50RGVmYXVsdEZvckV2ZW50KCkgZmluYWw7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkSGFuZGxl
T3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKSBmaW5hbDsKKwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRSZWNlaXZlTW9iaWxlRG9jVHlwZShib29sKSBmaW5h
bDsKICAgICB2b2lkIHNldE5lZWRzU2Nyb2xsTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpGcmFtZSYs
IGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGYyNTk2YjE4MzJhODRlOGRjNDU5MmYwMWY1ZTdkOTVlMjViMzlhY2MuLmZiYjNhMGE2
ZTgzNWI1ZTc4YzhmMTYxNmFiYTVlNjVkZDU3NDQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDUsNiArMTQ0NSw4IEBAIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRpZgogCisgICAg
dm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpOworCiBwcml2
YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CiAKQEAgLTIxNjUsNiArMjE2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkNvcmU6Ok5vZGU+IG1fcG90ZW50aWFsVGFwTm9kZTsKICAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fcG90ZW50aWFsVGFwTG9jYXRpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiBtX3BvdGVudGlhbFRhcFNlY3VyaXR5T3JpZ2luOworICAgIGJvb2wgbV9kaWRI
YW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudER1cmluZ1N5bnRoZXRpY0NsaWNr
IHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9oYXNSZWNlaXZlZFZpc2libGVDb250ZW50UmVjdHNB
ZnRlckRpZENvbW1pdExvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNSZXN0b3JlZEV4cG9z
ZWRDb250ZW50UmVjdEFmdGVyRGlkQ29tbWl0TG9hZCB7IGZhbHNlIH07CkBAIC0yMzMzLDYgKzIz
MzYsNyBAQCBwcml2YXRlOgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogaW5saW5lIHZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21tYW5kKCkgeyB9CiBpbmxpbmUg
Ym9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2Vi
Q29yZTo6RnJhbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIHZvaWQgV2ViUGFn
ZTo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKSB7IH0KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggY2YxMzFkYjc3NDAyMGE4NTFhOTIw
MGVhMzViYmU4NWI5MTQ2MTRlMy4uODQ1MzQ0MjgwMWFhNjIxMTJhNDM4ZGEwNDFhNjZkY2Y5OTBl
MDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTgzNCw2ICs4MzQsMjUgQEAgdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hD
b250ZW50Q2hhbmdlT2JzZXJ2aW5nKFdLQ29udGVudENoYW5nZSBvYnNlcnZlZENvbnRlbnRDaGEK
ICAgICBtX3BlbmRpbmdTeW50aGV0aWNDbGlja1BvaW50ZXJJZCA9IDA7CiB9CiAKK3N0YXRpYyBi
b29sIGlzUHJvYmFibHlNZWFuaW5nZnVsQ2xpY2soTm9kZSYgY2xpY2tOb2RlKQoreworICAgIGF1
dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGNsaWNrTm9kZS5kb2N1bWVudCgpLmZyYW1lKCkpOworICAg
IGlmICghaXM8RWxlbWVudD4oY2xpY2tOb2RlKSB8fCAhY2xpY2tOb2RlLmlzQ29ubmVjdGVkKCkg
fHwgIWZyYW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChpczxIVE1MQm9keUVs
ZW1lbnQ+KGNsaWNrTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRv
IHZpZXcgPSBtYWtlUmVmUHRyKGZyYW1lLT5tYWluRnJhbWUoKS52aWV3KCkpKSB7CisgICAgICAg
IGF1dG8gZWxlbWVudEJvdW5kcyA9IFdlYlBhZ2U6OnJvb3RWaWV3Qm91bmRzRm9yRWxlbWVudChk
b3duY2FzdDxFbGVtZW50PihjbGlja05vZGUpKTsKKyAgICAgICAgYXV0byB1bm9ic2N1cmVkUmVj
dCA9IHZpZXctPnVub2JzY3VyZWRDb250ZW50UmVjdCgpOworICAgICAgICBpZiAoZWxlbWVudEJv
dW5kcy53aWR0aCgpID49IHVub2JzY3VyZWRSZWN0LndpZHRoKCkgLyAyICYmIGVsZW1lbnRCb3Vu
ZHMuaGVpZ2h0KCkgPj0gdW5vYnNjdXJlZFJlY3QuaGVpZ2h0KCkgLyAyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYlBh
Z2U6OmNvbXBsZXRlU3ludGhldGljQ2xpY2soTm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpN
b2RpZmllcj4gbW9kaWZpZXJzLCBTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBl
LCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQogewogICAgIEludFBvaW50IHJvdW5kZWRB
ZGp1c3RlZFBvaW50ID0gcm91bmRlZEludFBvaW50KGxvY2F0aW9uKTsKQEAgLTg1Myw2ICs4NzIs
OCBAQCB2b2lkIFdlYlBhZ2U6OmNvbXBsZXRlU3ludGhldGljQ2xpY2soTm9kZSYgbm9kZVJlc3Bv
bmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOgogICAgIGJvb2wgYWx0S2V5ID0gbW9kaWZpZXJz
LmNvbnRhaW5zKFdlYkV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKICAgICBib29sIG1ldGFLZXkg
PSBtb2RpZmllcnMuY29udGFpbnMoV2ViRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAorICAg
IG1fZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnREdXJpbmdTeW50aGV0
aWNDbGljayA9IGZhbHNlOworCiAgICAgdGFwV2FzSGFuZGxlZCB8PSBtYWluZnJhbWUuZXZlbnRI
YW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudChyb3VuZGVk
QWRqdXN0ZWRQb2ludCwgcm91bmRlZEFkanVzdGVkUG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtl
eSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIHN5bnRoZXRpY0NsaWNr
VHlwZSwgcG9pbnRlcklkKSk7CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsK
QEAgLTg3OSw4ICs5MDAsMTMgQEAgdm9pZCBXZWJQYWdlOjpjb21wbGV0ZVN5bnRoZXRpY0NsaWNr
KE5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2ViQ29yZToKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFtX2RpZEhhbmRsZU9yUHJldmVu
dE1vdXNlRG93bk9yTW91c2VVcEV2ZW50RHVyaW5nU3ludGhldGljQ2xpY2sgJiYgIWlzUHJvYmFi
bHlNZWFuaW5nZnVsQ2xpY2sobm9kZVJlc3BvbmRpbmdUb0NsaWNrKSkKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0
UG9pbnQocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSkpOworCiAgICAgaWYgKCF0YXBXYXNIYW5k
bGVkIHx8ICFub2RlUmVzcG9uZGluZ1RvQ2xpY2suaXNFbGVtZW50Tm9kZSgpKQogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRsZVRhcEFzQ2xpY2socm91bmRl
ZEludFBvaW50KGxvY2F0aW9uKSkpOworCisgICAgbV9kaWRIYW5kbGVPclByZXZlbnRNb3VzZURv
d25Pck1vdXNlVXBFdmVudER1cmluZ1N5bnRoZXRpY0NsaWNrID0gZmFsc2U7CiAgICAgCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkp
OwogfQpAQCAtODkyLDE0ICs5MTgsMjAgQEAgdm9pZCBXZWJQYWdlOjphdHRlbXB0U3ludGhldGlj
Q2xpY2soY29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok0KICAgICBG
cmFtZSogZnJhbWVSZXNwb25kaW5nVG9DbGljayA9IG5vZGVSZXNwb25kaW5nVG9DbGljayA/IG5v
ZGVSZXNwb25kaW5nVG9DbGljay0+ZG9jdW1lbnQoKS5mcmFtZSgpIDogbnVsbHB0cjsKICAgICBJ
bnRQb2ludCBhZGp1c3RlZEludFBvaW50ID0gcm91bmRlZEludFBvaW50KGFkanVzdGVkUG9pbnQp
OwogCi0gICAgaWYgKCFmcmFtZVJlc3BvbmRpbmdUb0NsaWNrIHx8IGxhc3RMYXllclRyZWVUcmFu
c2FjdGlvbklkIDwgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lUmVzcG9uZGluZ1RvQ2xp
Y2spLT5maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExvYWQoKSkKKyAg
ICBpZiAoIWZyYW1lUmVzcG9uZGluZ1RvQ2xpY2sgfHwgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9u
SWQgPCBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWVSZXNwb25kaW5nVG9DbGljayktPmZp
cnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCgpKSB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVs
Q2xpY2tBdFBvaW50KGFkanVzdGVkSW50UG9pbnQpKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNrKGFkanVzdGVkSW50UG9pbnQpKTsK
LSAgICBlbHNlIGlmIChtX2ludGVyYWN0aW9uTm9kZSA9PSBub2RlUmVzcG9uZGluZ1RvQ2xpY2sp
CisgICAgfSBlbHNlIGlmIChtX2ludGVyYWN0aW9uTm9kZSA9PSBub2RlUmVzcG9uZGluZ1RvQ2xp
Y2spCiAgICAgICAgIGNvbXBsZXRlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5nVG9DbGlj
aywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzLCBXZWJDb3JlOjpPbmVGaW5nZXJUYXApOwogICAg
IGVsc2UKICAgICAgICAgaGFuZGxlU3ludGhldGljQ2xpY2soKm5vZGVSZXNwb25kaW5nVG9DbGlj
aywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkaWRIYW5k
bGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpCit7CisgICAgbV9kaWRIYW5kbGVP
clByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudER1cmluZ1N5bnRoZXRpY0NsaWNrID0gdHJ1
ZTsKK30KKwogdm9pZCBXZWJQYWdlOjpoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9p
bnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCiB7CiAg
ICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvaW50OwpAQCAtMTA5NCw3ICsxMTI2LDkgQEAgdm9pZCBX
ZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgT3B0aW9uU2UKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CiAgICAgTm9k
ZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNrID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ub2RlUmVzcG9u
ZGluZ1RvQ2xpY2tFdmVudHMocG9pbnQsIGFkanVzdGVkUG9pbnQpOwogICAgIGlmICghbm9kZVJl
c3BvbmRpbmdUb0NsaWNrIHx8ICFub2RlUmVzcG9uZGluZ1RvQ2xpY2stPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0Ns
aWNrKHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBvaW50KSkpOworICAgICAgICBhdXRvIGFkanVz
dGVkSW50UG9pbnQgPSByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQb2ludCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xp
Y2tBdFBvaW50KGFkanVzdGVkSW50UG9pbnQpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNrKGFkanVzdGVkSW50UG9pbnQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNz
YXJ5KHJlcXVlc3RJRCwgbm9kZVJlc3BvbmRpbmdUb0NsaWNrKTsKQEAgLTExNjksNyArMTIwMywx
MCBAQCB2b2lkIFdlYlBhZ2U6OmNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgICAgIGNs
ZWFyU2VsZWN0aW9uKCk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbW1p
dFBvdGVudGlhbFRhcEZhaWxlZCgpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZE5vdEhhbmRsZVRhcEFzQ2xpY2socm91bmRlZEludFBvaW50KG1fcG90ZW50aWFsVGFwTG9j
YXRpb24pKSk7CisKKyAgICBhdXRvIGFkanVzdGVkSW50UG9pbnQgPSByb3VuZGVkSW50UG9pbnQo
bV9wb3RlbnRpYWxUYXBMb2NhdGlvbik7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoYWRqdXN0ZWRJbnRQb2lu
dCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxlVGFwQXND
bGljayhhZGp1c3RlZEludFBvaW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FuY2VsUG90ZW50
aWFsVGFwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1ZGE1ZjZhZmVjMzYxY2RiOWEzMTYxODlmZjU4OTViMzIyNTY4NTNiLi5lZTcwNWM2NDNj
ZDMyNzg2MTAwZWYxYzQ2MzYwZjRlMzM2OGFiMDE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDQtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQWRk
IGEgaGV1cmlzdGljIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc3ludGhldGljIGNsaWNrIHRyaWdn
ZXJlZCBhbnkgbWVhbmluZ2Z1bCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUyNDAKKyAgICAgICAgcmRhcjovLzc3MjIxMTk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgcnVu
bmVyIHBsdW1iaW5nIHRvIHRlc3QgdGhlIG5ldyBoZXVyaXN0aWMuIE5vdGUgdGhhdCB3ZSBjYW4n
dCBqdXN0IHV0aWxpemUgdGhlIGBXS1VJRGVsZWdhdGVQcml2YXRlYAorICAgICAgICBtZXRob2Qg
ZGlyZWN0bHksIHNpbmNlIHdlIGVuZCB1cCBvdmVycmlkaW5nIHRoZSB3ZWIgdmlldydzIGBVSUNs
aWVudGAgdmlhIGBXS1BhZ2VTZXRQYWdlVUlDbGllbnRgLCBzbyB0aGUgY2FsbAorICAgICAgICB0
byBgbV91aUNsaWVudC0+ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KHBv
aW50KTtgIGVuZHMgdXAgYmVpbmcgYSBuby1vcC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6aW5zdGFsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkTm90SGFuZGxl
VGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkTm90SGFuZGxlVGFw
QXNNZWFuaW5nZnVsQ2xpY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dl
YlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZE5vdEhhbmRsZVRh
cEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludDpdKToKKwogMjAyMS0wNC0yOCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgZXhwZXJpbWVudCB3aXRoIGF2ZXJhZ2lu
ZyBzYW1wbGluZyBjb2xvcnMgYWNyb3NzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgYXMgdGhlIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDAxMWQ2ODk1
ZTk3MmI1ODkyNTFmNjU2NmJhZGUyNGY1NjgxNDY4YjkuLjIwOWYzMTE2NzVkNGU2Y2UzMDk1ZDU4
ODIwNTgxMmU1Zjg2ZmZlZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjU2LDYg
KzI1Niw5IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBvYmplY3QgbnVtYmVyT2ZERkdD
b21waWxlcyhvYmplY3QgZnVuY3Rpb24pOwogICAgIG9iamVjdCBuZXZlcklubGluZUZ1bmN0aW9u
KG9iamVjdCBmdW5jdGlvbik7CiAKKyAgICAvLyBVSSBkZWxlZ2F0ZSBob29rcy4KKyAgICB1bmRl
ZmluZWQgaW5zdGFsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sob2Jq
ZWN0IGNhbGxiYWNrKTsKKwogICAgIC8vIFN3aXBlIGdlc3R1cmVzCiAgICAgdW5kZWZpbmVkIGlu
c3RhbGxEaWRCZWdpblN3aXBlQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKICAgICB1bmRlZmlu
ZWQgaW5zdGFsbFdpbGxFbmRTd2lwZUNhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IDBhNGQ0Y2ZmZTVhNjQyNjI5MjUzZDkwZDE2MDEwMjE5YmUwMDEwM2YuLjIw
ZTcyZDZkYTg5M2FmNGVhZGMxODExM2I4MTFhZmIwMzU0Zjc1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CkBAIC0yNzUsNiArMjc1LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrIikp
IHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVs
Q2xpY2tDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkQmVnaW5Td2lwZUNh
bGxiYWNrIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkQmVnaW5Td2lwZUNhbGxi
YWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDA3ZTZlOWFlOWNhOWNlOTQzYTZm
Mjk1MGM2ODA3MzY1YWIwMzhlN2UuLmM2OWRiZjU1ZTI1MDViZDBmMjM0NjFhODAzZDJjNzFkYTk3
NDE0NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIGVudW0gewogICAgIEVudGVyRnVs
bHNjcmVlbkZvckVsZW1lbnRDYWxsYmFja0lELAogICAgIEV4aXRGdWxsc2NyZWVuRm9yRWxlbWVu
dENhbGxiYWNrSUQsCiAgICAgQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxs
YmFja0lELAorICAgIERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2tJRCwK
ICAgICBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJRCA9IDEwMAogfTsKIApAQCAtMTEwNyw2ICsxMTA4
LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oSlNTdHJpbmdS
ZWYgbmFtZSwgYm9vbCBkaXNtaXNzZXNBdXRvbWF0CiAgICAgfSkpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6Omluc3RhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrKEpT
VmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soRGlkTm90
SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFja0lELCBjYWxsYmFjayk7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6Y2FsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJh
Y2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tDYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjppbnN0YWxsRGlk
QmVnaW5Td2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgY2FjaGVUZXN0
UnVubmVyQ2FsbGJhY2soRGlkQmVnaW5Td2lwZUNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggOTU0Nzg0ZWEwNzIzZmY5OGM2ZjQ4MTUyNzliYWJjY2I3NTZjMzNlZi4uMDE2NWUzMDM0ZDYx
YmRkNjkyM2JjYWQ0NTg5NDM1OWE4Y2E2Yzc5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTM0Myw2ICszNDMsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihKU1N0cmluZ1JlZiBuYW1l
LCBib29sIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHksIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAg
IHZvaWQgcGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsKIAorICAgIHZvaWQgaW5zdGFsbERpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2soSlNWYWx1ZVJlZik7CisgICAgdm9p
ZCBjYWxsRGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjaygpOworCiAgICAg
dm9pZCBpbnN0YWxsRGlkQmVnaW5Td2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAgIHZvaWQg
aW5zdGFsbFdpbGxFbmRTd2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgaW5zdGFs
bERpZEVuZFN3aXBlQ2FsbGJhY2soSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUyNzhlMmNkNmFlZDA1OGU4N2Q4ZDViNDM1MTg5Njkz
MDI3Y2Y4OGEuLjkwZWM5YzI0MTQ2OTAyMDg3ZTViOWNhMzYzMDYzYzNhMjg4Nzg5MWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMTY3LDYgKzIxNjcs
MTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICAgICAgZXhp
dCgxKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5n
ZnVsQ2xpY2soKQoreworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZE5vdEhhbmRsZVRhcEFz
TWVhbmluZ2Z1bENsaWNrKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZEJlZ2luTmF2
aWdhdGlvbkdlc3R1cmUoV0tQYWdlUmVmKQogewogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRp
ZEJlZ2luU3dpcGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCA0NjJlOTAwYjQwZjUzMGE2M2Y0NzIyM2E2ZmU5ZjE3YWIzYzRlMjM0Li4zZmQyYTQ4MTMyMjhm
ZjU5NGEwNDlmMzhhM2RhZWQzOGUyNjRkZGIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC0zNjEsNiArMzYxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGxl
dGVNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25DaGVjayhXS01lZGlhS2V5U3lzdGVtUGVybWlzc2lv
bkNhbGxiYWNrUmVmKTsKICAgICB2b2lkIHNldElzTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uR3Jh
bnRlZChib29sKTsKIAorICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2so
KTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJh
dGlvbihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAwYzIwMGJkNTg4NjI5NjNiZWQ1YzUxNjFlZWQ0NDY0ZmMx
OGUwYTg3Li5kMzZjYWE2MTkyM2ZiYmM5MTBjYjRlMGNkNWI0ZjJhMDZkOTgzYmFlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTQzOSw2ICsxNDM5LDEx
IEBAIHZvaWQgVGVzdEludm9jYXRpb246Om91dHB1dFRleHQoY29uc3QgV1RGOjpTdHJpbmcmIHRl
eHQpCiAgICAgbV90ZXh0T3V0cHV0LmFwcGVuZCh0ZXh0KTsKIH0KIAordm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2soKQoreworICAgIHBvc3RQYWdl
TWVzc2FnZSgiQ2FsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2siKTsK
K30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkQmVnaW5Td2lwZSgpCiB7CiAgICAgcG9zdFBh
Z2VNZXNzYWdlKCJDYWxsRGlkQmVnaW5Td2lwZUNhbGxiYWNrIik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggMWMyZWQzMDQyMjk3YTFhMmViYzlhY2EzZWU5NmQw
N2Q0MjE1MDI5Mi4uYThjODU0ZTI3NjdkNjk4MjZlZDk3NjMzYjcxZTMyNTgxZTg2ZjI4NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNjQsNiArNjQsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZHVtcFdlYlByb2Nlc3NVbnJlc3BvbnNpdmVuZXNzKGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBvdXRwdXRUZXh0KGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljaygpOworCiAg
ICAgdm9pZCBkaWRCZWdpblN3aXBlKCk7CiAgICAgdm9pZCB3aWxsRW5kU3dpcGUoKTsKICAgICB2
b2lkIGRpZEVuZFN3aXBlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KaW5kZXggZWZlMDc3MjE5ZGQ4ZWQ5NTY3ODI1ZTlkMWVk
NjQ3MTMyMDI0ZDAzYy4uOTc5Yjc5YzA2M2Y1YTMwNDJiZTBiYTc4NTM1ZGI5YTI4ZjVjZTYzYSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2Vi
Vmlldy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJU
ZXN0UnVubmVyV0tXZWJWaWV3LmgiCiAKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCiAjaW1w
b3J0ICJXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmg+CkBAIC0zOTYsNiArMzk3LDExIEBAIC0gKHZvaWQpX2RpZERpc21pc3NQb3BvdmVy
CiAgICAgICAgIHNlbGYuZGlkRGlzbWlzc1BvcG92ZXJDYWxsYmFjaygpOwogfQogCistICh2b2lk
KV9kaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQ6KENHUG9pbnQpcG9pbnQK
K3sKKyAgICBXVFI6OlRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWROb3RIYW5kbGVUYXBB
c01lYW5pbmdmdWxDbGljaygpOworfQorCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5ab29t
aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3CiB7
CiAgICAgW3N1cGVyIHNjcm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOnNjcm9sbFZpZXcgd2l0aFZp
ZXc6dmlld107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODRiNzFlZjNhOTE3OWQ5MWVhZTRlYWUwMjhjZmRhODBjNmJjOWU4
Ni4uOWFiOTQ0NzliNjg4ZGNkMDYzMjM0ZDQ1ZDNjZjU4ODYwMDU0ZjgzNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTA0LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIGhldXJpc3RpYyB0byBkZXRlcm1pbmUgd2hldGhl
ciBhIHN5bnRoZXRpYyBjbGljayB0cmlnZ2VyZWQgYW55IG1lYW5pbmdmdWwgY2hhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MjQwCisgICAg
ICAgIHJkYXI6Ly83NzIyMTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2RpZC1ub3QtaGFuZGxlLW1lYW5pbmdmdWwt
Y2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvZGlk
LW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGljay5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0yOCAg
Um9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIEVX
UyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9pbnRlcmZhY2VzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlL3Bvc3RNZXNzYWdlL3N0cnVjdHVyZWQtY2xvbmUtbWVz
c2FnZS5odG1sIGlzIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGljay1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGlj
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2NzA1OTZiMjg5ZmRjMGQzOTQ3MGMwYzY2NzA3
NDdkY2NkNTA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9kaWQtbm90LWhhbmRsZS1tZWFuaW5nZnVsLWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEzIEBACitUaGlzIHRlc3QgaXMgaW50ZW5kZWQgdG8gZXhlcmNpc2UgdGhlICdtZWFuaW5nZnVs
IGNsaWNrJyBoZXVyaXN0aWMsIGFuZCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVs
Q2xpY2tDYWxsYmFjayBpcyB0cnVlCitQQVNTIGNsaWNrZWQgb24gYnV0dG9uCitQQVNTIGRpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sgaXMgZmFsc2UKK1BBU1MgZGlkTm90
SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjayBpcyB0cnVlCitQQVNTIGRpZE5vdEhh
bmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGljay5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2RpZC1ub3QtaGFuZGxlLW1lYW5pbmdmdWwt
Y2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDA5ZDNhZGI2OGNkN2U1NWE3YjBjZmNjYzljZjdkZDBi
Zjg4NTIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2Rp
ZC1ub3QtaGFuZGxlLW1lYW5pbmdmdWwtY2xpY2suaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8i
PgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgZm9udC1zaXplOiAxOHB4OworICAgIGZvbnQt
ZmFtaWx5OiBzeXN0ZW0tdWk7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOwor
ICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVl
OworCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgaXMgaW50ZW5kZWQgdG8gZXhlcmNpc2UgdGhlICdtZWFuaW5nZnVsIGNs
aWNrJyBoZXVyaXN0aWMsIGFuZCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLiIpOworCisgICAg
bGV0IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOworICAgIGxldCBidXR0
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBhc3luYyBmdW5j
dGlvbiBzaW11bGF0ZVRhcEFuZENoZWNrRGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2so
ZWxlbWVudCwgZXhwZWN0YXRpb24pIHsKKyAgICAgICAgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5n
ZnVsQ2xpY2tDYWxsYmFjayA9IGZhbHNlOworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxEaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrKCgpID0+IHsKKyAgICAgICAgICAg
IGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sgPSB0cnVlOworICAgICAg
ICB9KTsKKworICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoZWxlbWVudCk7
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JEb3VibGVUYXBEZWxheSgpOworICAgICAg
ICBpZiAoZXhwZWN0YXRpb24pCisgICAgICAgICAgICBzaG91bGRCZVRydWUoImRpZE5vdEhhbmRs
ZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2siKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc2hvdWxkQmVGYWxzZSgiZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFj
ayIpOworCisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCk7Cisg
ICAgfQorCisgICAgYXdhaXQgc2ltdWxhdGVUYXBBbmRDaGVja0RpZE5vdEhhbmRsZVRhcEFzTWVh
bmluZ2Z1bENsaWNrKHRleHQsIHRydWUpOworICAgIGF3YWl0IHNpbXVsYXRlVGFwQW5kQ2hlY2tE
aWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljayhidXR0b24sIGZhbHNlKTsKKworICAgIGRv
Y3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7IH0pOworICAgIGF3
YWl0IHNpbXVsYXRlVGFwQW5kQ2hlY2tEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljayh0
ZXh0LCB0cnVlKTsKKworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
fSk7CisgICAgYXdhaXQgc2ltdWxhdGVUYXBBbmRDaGVja0RpZE5vdEhhbmRsZVRhcEFzTWVhbmlu
Z2Z1bENsaWNrKHRleHQsIGZhbHNlKTsKKworICAgIHRleHQucmVtb3ZlKCk7CisgICAgYnV0dG9u
LnJlbW92ZSgpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0IiBvbmNsaWNrPSJ0ZXN0UGFzc2VkKCdj
bGlja2VkIG9uIGJ1dHRvbicpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiPkhlbGxvIHdvcmxk
PC9idXR0b24+CisgICAgPHAgaWQ9InRleHQiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj
b25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIEFlbmVhbiBsYW9yZWV0IG5pc2kgZmVsaXMsIGV1
IHNjZWxlcmlzcXVlIGRvbG9yIGltcGVyZGlldCBpbi4gU2VkIGF0IHBvcnR0aXRvciBwdXJ1cywg
aW4gcGxhY2VyYXQganVzdG8uIE1hdXJpcyBhdCBhdWd1ZSBhYyBwdXJ1cyB2aXZlcnJhIG1vbGVz
dGllLiBGdXNjZSB1bHRyaWNlcyBhbnRlIGF0IHBlbGxlbnRlc3F1ZSBsb2JvcnRpcy4gU2VkIHBl
bGxlbnRlc3F1ZSwgaXBzdW0gZXUgc2VtcGVyIG1vbGxpcywgYXJjdSBsZWN0dXMgZGlnbmlzc2lt
IGVuaW0sIGluIG1heGltdXMgdG9ydG9yIGxpZ3VsYSBpZCBpcHN1bS4gTnVsbGEgZGlnbmlzc2lt
IGRpYW0gYSBtaSB0ZW1wb3IgcG9ydGEuIEV0aWFtIHRlbXBvciBhYyBhdWd1ZSBub24gZGFwaWJ1
cy4gRG9uZWMgZXVpc21vZCB2ZWwgdHVycGlzIGluIHVsdHJpY2VzLiBVdCBhY2N1bXNhbiB1bHRy
aWNlcyBhcmN1IHZpdGFlIHZlbmVuYXRpcy4gSW4gdXJuYSB2ZWxpdCwgYWNjdW1zYW4gc2l0IGFt
ZXQgYXJjdSB2ZWwsIHZlc3RpYnVsdW0gcHVsdmluYXIgbGVvLiBBbGlxdWFtIHZ1bHB1dGF0ZSBl
dWlzbW9kIHVsdHJpY2VzLiBTZWQgY29uZ3VlIHZlc3RpYnVsdW0gbGliZXJvIHF1aXMgb3JuYXJl
LjwvcD4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427441</attachid>
            <date>2021-04-30 12:37:25 -0700</date>
            <delta_ts>2021-04-30 14:30:27 -0700</delta_ts>
            <desc>Add missing WK_API_AVAILABLE</desc>
            <filename>bug-225240-20210430123724.patch</filename>
            <type>text/plain</type>
            <size>41288</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ5ZGEwOWE3M2VlZjk0
ZGFhNmQyZjNlZGQzZjI4OGJiNzhlOWJjYS4uOTZjYmE4OTU1MzYxZjI2ZWIzMDBjMGZkMWM1NDZk
YzAwZTQzYTZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBh
IGhldXJpc3RpYyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHN5bnRoZXRpYyBjbGljayB0cmlnZ2Vy
ZWQgYW55IG1lYW5pbmdmdWwgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MjQwCisgICAgICAgIHJkYXI6Ly83NzIyMTE5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBh
IGBDaHJvbWVDbGllbnRgIGhvb2sgdGhhdCdzIGNhbGxlZCB3aGVuIGEgbW91c2Vkb3duIG9yIG1v
dXNldXAgZXZlbnQgaXMgZWl0aGVyIHByZXZlbnRlZCBieQorICAgICAgICB0aGUgcGFnZSwgb3Ig
aGFuZGxlZCB3aXRoIGEgZGVmYXVsdCBldmVudCBoYW5kbGVyIG9uIHRoZSBlbGVtZW50IChlLmcu
IHdoZW4gY2xpY2tpbmcgYSBsaW5rKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9pb3Mv
ZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGljay5odG1sCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpkaWRIYW5kbGVP
clByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURv
dWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVJlbGVhc2VFdmVudCk6CisKIDIwMjEtMDQtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIGV4cGVyaW1lbnQgd2l0aCBhdmVyYWdpbmcgc2FtcGxpbmcg
Y29sb3JzIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBwYWdlIGFzIHRoZSBzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDJiNDJhYzk1OGQ5NDNiOWU0NGM5NWYwYTBhMjEyMmM1M2I5Nzhh
ZTIuLjJmNzdmMTM3ZjNjZmUzM2Y4NWQ5NzhkYjIwMDhkOWE1ZDUyNmMxNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMjEtMDQtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQWRkIGEgaGV1cmlzdGljIHRvIGRldGVybWluZSB3
aGV0aGVyIGEgc3ludGhldGljIGNsaWNrIHRyaWdnZXJlZCBhbnkgbWVhbmluZ2Z1bCBjaGFuZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUyNDAK
KyAgICAgICAgcmRhcjovLzc3MjIxMTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICBBZGQgYSBzaW1wbGUgaGV1cmlzdGljIHRvIGluZm9ybSBXS1dlYlZpZXcg
aU9TIGNsaWVudHMgd2hlbiBhIHRhcCBlaXRoZXIgZmFpbGVkIHRvIHJlc3VsdCBpbiBhIHN5bnRo
ZXRpYyBjbGljaywKKyAgICAgICAgb3IgcmVzdWx0ZWQgaW4gYSBzeW50aGV0aWMgY2xpY2sgdGhh
dCAocHJvYmFibHkpIGRpZG4ndCBoYXZlIGFueSAibWVhbmluZ2Z1bCBzaWRlIGVmZmVjdHMiLiBX
aGlsZSB0aGlzIG5vdGlvbiBvZgorICAgICAgICAibWVhbmluZ2Z1bG5lc3MiIGlzbid0IHdlbGwg
ZGVmaW5lZCwgdGhlIGlkZWEgYmVoaW5kIHRoZSBoZXVyaXN0aWMgaXMgdGhhdCBpdCBzaG91bGQg
ZGlzdGluZ3Vpc2ggYmV0d2VlbiB0YXBzIG9uCisgICAgICAgIGNsaWNrYWJsZSBlbGVtZW50cyBs
aWtlIGJ1dHRvbnMgb3IgbGlua3MgdGhhdCB0cmlnZ2VyIHNvbWUgbm90aWNhYmxlIGNoYW5nZSBv
biB0aGUgcGFnZSwgdnMuIHRhcHMgb24gYm90aAorICAgICAgICBjbGlja2FibGUgb3Igbm9uLWNs
aWNrYWJsZSBlbGVtZW50cyB0aGF0IGRvIG5vdCB0cmlnZ2VyIGFueSBjaGFuZ2VzIG9uIHRoZSBw
YWdlLgorCisgICAgICAgIEZvciBpbnN0YW5jZSBvbiBhIG5ld3MtYXJ0aWNsZS1saWtlIHBhZ2Us
IHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGFwcGluZyBvbiBw
YXJhZ3JhcGggdGV4dAorICAgICAgICBpbiB0aGUgYXJ0aWNsZSwgZXZlbiBpZiB0aGVyZSBpcyBh
IGNsaWNrIGhhbmRsZXIgb3ZlciB0aGUgZW50aXJlIGFydGljbGUgb3IgZXZlbiBib2R5IGVsZW1l
bnQuIEhvd2V2ZXIsIHRhcHBpbmcKKyAgICAgICAgYSBsaW5rIG9yIGEgYnV0dG9uIG9uIHRoZSBz
YW1lIHBhZ2Ugc2hvdWxkIG5vdCBjYXVzZSB0aGlzIGRlbGVnYXRlIG1ldGhvZCB0byBiZSBpbnZv
a2VkLiBBZGRpdGlvbmFsbHksIGlmIHRoZQorICAgICAgICBwYWdlIGV4cGxpY2l0bHkgcHJldmVu
dHMgZGVmYXVsdCBiZWhhdmlvciBkdXJpbmcgYSBzeW50aGV0aWMgbW91c2UgZXZlbnQsIHRoaXMg
bWV0aG9kIHNob3VsZCBhbHNvICpub3QqIGJlCisgICAgICAgIGludm9rZWQuCisKKyAgICAgICAg
VGhpcyBiZWhhdmlvciBpcyByb3VnaGx5IHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGRlbGVnYXRl
IG1ldGhvZCBgLV93ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OmAsCisgICAg
ICAgIGV4Y2VwdCB0aGF0IHRoaXMgdmFyaWFudCBhbGxvd3MgZm9yIG1vcmUgd2lnZ2xlIHJvb20g
YXJvdW5kIHdoYXQgY29uc3RpdHV0ZXMgYSAibWVhbmluZ2Z1bCIgaW50ZXJhY3Rpb24gd2l0aCB0
aGUKKyAgICAgICAgcGFnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrQXRQb2ludCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0
aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZE5vdEhhbmRsZVRhcEFzTWVhbmlu
Z2Z1bENsaWNrQXRQb2ludDpdKToKKworICAgICAgICBTZWUgVG9vbHMvQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMgYWJvdXQgdGhpcyB0ZXN0aW5nIGhvb2suCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0F0UG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWROb3RIYW5kbGVUYXBBc01l
YW5pbmdmdWxDbGlja0F0UG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZE5vdEhhbmRsZVRh
cEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OmlzUHJvYmFibHlNZWFuaW5nZnVsQ2xpY2spOgorCisgICAgICAgIEltcGxlbWVudCB0aGUgY29y
ZSBvZiB0aGUgaGV1cmlzdGljIGhlcmUuIEZvciBub3csIGl0IGp1c3QgZXhhbWluZXMgdGhlIHNp
emUgb2YgdGhlIGNsaWNrIHRhcmdldC4gVGhpcyBpc24ndAorICAgICAgICBnb2luZyB0byBzYXRp
c2Z5IHRoZSBjYXNlIHdoZXJlIGEgcGFnZSBpbnN0YWxscyBhIGNsaWNrIGV2ZW50IGhhbmRsZXIg
b24gdGhlIGJvZHkgZWxlbWVudCAob3IgYSBzaW1pbGFyCisgICAgICAgIGVsZW1lbnQgdGhhdCBl
bmNhcHN1bGF0ZXMgbW9zdCBvZiB0aGUgcGFnZSkgYW5kIHRoZW4gcGVyZm9ybXMgaGl0LXRlc3Rp
bmcgaW4gdGhlaXIgc2NyaXB0LCBidXQgaXQncyBzb21ld2hlcmUgdG8KKyAgICAgICAgc3RhcnQu
CisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcGxldGVTeW50aGV0aWNDbGljayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmF0dGVtcHRTeW50aGV0aWNDbGljayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2lu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCk6
CisKIDIwMjEtMDQtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIGV4cGVyaW1lbnQgd2l0aCBhdmVyYWdpbmcgc2FtcGxpbmcgY29sb3JzIGFjcm9zcyB0aGUg
dG9wIG9mIHRoZSBwYWdlIGFzIHRoZSBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBlZDhjZjQwMzIxMGUxMGVhNmQ3NGQ4N2I1OTY5ZTM3MjZk
ZmFhNzVjLi5iYWQ5MTcxODQxNzg5MmY3OGQ5MWUwMzk3NGE3MWNhOTgxNDhiNTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTI1OCw2ICsyNTgsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFByZXZlbnREZWZhdWx0Rm9yRXZlbnQoKSA9IDA7CiAjZW5kaWYKIAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVu
dCgpIHsgfQorCiAgICAgdmlydHVhbCBTZWNvbmRzIGV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgeyBy
ZXR1cm4gMF9zOyB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCBkY2RhYjliNTQ2NmE5OTg2OTRlMTkyNTkyY2UwMjczNGU2
M2ZkYzA5Li41YzdjOTkyYjM1NjNhNDA4NDE0MWM2Y2FhMTRjNThjM2E2NjE1YjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzczLDYgKzE3NzMsOCBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgcGxhdGZvcm1Nb3VzZQogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0Q2FyZXRCbGlua2lu
Z1N1c3BlbmRlZCh0cnVlKTsKIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gIWRpc3BhdGNoTW91
c2VFdmVudChldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIG1vdXNlRXZlbnQudGFyZ2V0Tm9k
ZSgpLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91c2VFdmVudCwgRmlyZU1vdXNlT3Zlck91dDo6
WWVzKTsKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS5wYWdlKCk7IHBhZ2UgJiYgc3dhbGxv
d0V2ZW50KQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRIYW5kbGVPclByZXZl
bnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpOwogICAgIG1fY2FwdHVyZXNEcmFnZ2luZyA9ICFz
d2FsbG93RXZlbnQgfHwgbW91c2VFdmVudC5zY3JvbGxiYXIoKTsKIAogICAgIC8vIElmIHRoZSBo
aXQgdGVzdGluZyBvcmlnaW5hbGx5IGRldGVybWluZWQgdGhlIGV2ZW50IHdhcyBpbiBhIHNjcm9s
bGJhciwgcmVmZXRjaCB0aGUgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cwpAQCAtMTgzNSw2
ICsxODM3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3IKIAogICAgIG1fY2xpY2tDb3VudCA9
IHBsYXRmb3JtTW91c2VFdmVudC5jbGlja0NvdW50KCk7CiAgICAgYm9vbCBzd2FsbG93TW91c2VV
cEV2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBt
b3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgbV9jbGlja0NvdW50LCBwbGF0Zm9ybU1vdXNlRXZlbnQs
IEZpcmVNb3VzZU92ZXJPdXQ6Ok5vKTsKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7IHBhZ2UgJiYgc3dhbGxvd01vdXNlVXBFdmVudCkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKTsKIAog
ICAgIGJvb2wgc3dhbGxvd0NsaWNrRXZlbnQgPSBwbGF0Zm9ybU1vdXNlRXZlbnQuYnV0dG9uKCkg
IT0gUmlnaHRCdXR0b24gJiYgbW91c2VFdmVudC50YXJnZXROb2RlKCkgPT0gbV9jbGlja05vZGUg
JiYgIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbW91c2VFdmVu
dC50YXJnZXROb2RlKCksIG1fY2xpY2tDb3VudCwgcGxhdGZvcm1Nb3VzZUV2ZW50LCBGaXJlTW91
c2VPdmVyT3V0OjpZZXMpOwogCkBAIC0yMTM5LDYgKzIxNDMsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybU1vdQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgc3dhbGxvd01vdXNlVXBF
dmVudCA9ICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCwgbW91
c2VFdmVudC50YXJnZXROb2RlKCksIG1fY2xpY2tDb3VudCwgcGxhdGZvcm1Nb3VzZUV2ZW50LCBG
aXJlTW91c2VPdmVyT3V0OjpObyk7CisgICAgaWYgKGF1dG8gcGFnZSA9IG1fZnJhbWUucGFnZSgp
OyBwYWdlICYmIHN3YWxsb3dNb3VzZVVwRXZlbnQpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCk7CiAKICAg
ICBib29sIGNvbnRleHRNZW51RXZlbnQgPSBwbGF0Zm9ybU1vdXNlRXZlbnQuYnV0dG9uKCkgPT0g
UmlnaHRCdXR0b247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
aW5kZXggMzg4NjhiOGM2NWFhN2QxMThkZTM0YjI3NTVkMWMyOGMwZGY1YmMzYi4uNTIyMjg0Nzkx
ZDA2OGJmMTU5ZjdlOWRmMTc4YTcwZWI0ZWQ3MWI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTE2NCw2ICsxNjQsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0FycmF5PiBhY3Rpb25zRm9yRWxlbWVudChfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqLCBSZXRhaW5QdHI8TlNBcnJheT4gZGVmYXVsdEFjdGlvbnMpIHsg
cmV0dXJuIGRlZmF1bHRBY3Rpb25zOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVRh
cEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JikgeyB9CiAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDRlYWQ5MGIxNGI4MzFjNWEwOTIyMDQyNmIyZjAzNTQw
MzFmM2M0N2EuLjE4MmQ2YjIyZDYyMjRmYzMxNmRhNDYyNDY2NDNlMmZhODljMzgzZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChC
T09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0
aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElf
QVZBSUxBQkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVt
ZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24gKj4gKilkZWZhdWx0
QWN0aW9uczsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTm90SGFu
ZGxlVGFwQXNDbGlja0F0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7CistICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2lu
dDooQ0dQb2ludClwb2ludCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6KE5TVVJMICopdXJsIGZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShpb3MoMTEuMCkpOwogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBmaWxlVXBsb2FkUGFuZWxDb250ZW50SXNNYW5hZ2VkV2l0aEluaXRpYXRpbmdG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5o
CmluZGV4IDRiMjRjYjFhZDA4ZTA4OWUxNDk2MGMwZGRlYzViMzQ3N2Y2YjRjNDguLjY2MjZhYTVi
MmI0ODFjMmRmMjc2NTQzMzhiYjljOTMxZjAyM2VmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nSU9TLmgKQEAgLTY0LDYgKzY0LDcgQEAKIC0gKHZvaWQpX2RpZEZpbmlzaFRleHRJbnRlcmFj
dGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CiAt
ICh2b2lkKV9yZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihVSVdLRG9jdW1lbnRSZXF1ZXN0ICopcmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0RvY3VtZW50Q29udGV4dCAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNS
YW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQ
b2ludDooQ0dQb2ludClwb2ludDsKIAogLSAodm9pZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6
KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKIC0gKGRvdWJsZSl0aW1l
UGlja2VyVmFsdWVIb3VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IGFmM2UzYzZlZDlmZGU0YjM3MTVmZWJl
MWQxYjA0MDUzMmZkMzc0Y2IuLjg5MjRjNjY0NGNjMzUyOGJjNzFkMGZhOWNkNWFjMzZlYThlZjU1
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1Rlc3RpbmdJT1MubW0KQEAgLTk2LDYgKzk2LDExIEBAIC0gKHZvaWQpX2FkanVzdFNlbGVj
dGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheCiAjZW5kaWYKIH0KIAorLSAodm9pZClfZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xp
Y2tBdFBvaW50OihDR1BvaW50KXBvaW50Cit7CisgICAgLy8gRm9yIHN1YmNsYXNzZXMgdG8gb3Zl
cnJpZGUuCit9CisKIC0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihD
R1JlY3QpcmVjdAogewogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOTc5NzU5N2MxMzcwZGQ2YzA5ZDNh
MjQxMDEzMzQ5Y2YzNjRmZGNjYy4uZTk3OTE3Zjg4OTBiNTFmM2UxM2I4Yjc0YjI5YjQ4ZDJiNzMx
ZmJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAt
MTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0
cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkTm90SGFu
ZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOworICAgICAgICB2
b2lkIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpIGZpbmFsOwogICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoKSBmaW5hbDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CkBAIC0yMzcsNiArMjM4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBib29sIHdlYlZp
ZXdBY3Rpb25zRm9yRWxlbWVudERlZmF1bHRBY3Rpb25zIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOworICAgICAgICBib29sIHdlYlZp
ZXdEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBi
b29sIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOwogI2VuZGlmCiAgICAg
ICAgIGJvb2wgZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3IDogMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQ5OTdiY2NlMmJmNTczZDYz
YjRmYzgyNmQ4ODBhNzFiNjQ5YmVhOWUuLmVhZDliMWI3NTY1MTkyMjY2NWE5OTQ5YjhmYzdmZGIz
NWUxNjI4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQpAQCAtMTU3LDYgKzE1Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdL
VUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAjZW5kaWYKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3QWN0aW9uc0ZvckVsZW1lbnREZWZhdWx0QWN0aW9ucyA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFjdGlvbnNGb3JFbGVtZW50OmRlZmF1bHRBY3Rp
b25zOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0Ns
aWNrQXRQb2ludCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOworICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWROb3RIYW5kbGVU
YXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3OildOwog
I2VuZGlmCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0lzTWVkaWFDYXB0dXJlQXV0aG9y
aXplZEZvckZyYW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOm1haW5G
cmFtZVVSTDpmcmFtZUlkZW50aWZpZXI6ZGVjaXNpb25IYW5kbGVyOildIHx8IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmluY2x1ZGVTZW5zaXRpdmVNZWRp
YURldmljZURldGFpbHM6KV07CkBAIC0xNDExLDYgKzE0MTIsMjEgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6ZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxl
Z2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgZGlkTm90
SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQ6cG9pbnRdOwogfQogCit2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpkaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIGlmICghbV91aURlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS0+bV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+bV9kZWxlZ2F0ZS5nZXQo
KTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVn
YXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xp
Y2tBdFBvaW50OnBvaW50XTsKK30KKwogVUlWaWV3Q29udHJvbGxlciAqVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOWE5MzNlY2VkMDIxOTk0
OWQxNWQxYWViZDliMThmYzk0MGEyOTVkMS4uNzBjNmJiNmQ2NGIyNWZjZTlmMjMxZmJjZTcwOGMw
NTE1ZmI3Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzMxLDYg
KzMzMSw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpID0gMDsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBmYmE4MmU4N2FjZWI3NzdiYjhiNzA5MmFk
NTliMGY1M2Y5NmFjZTYuLjVhZjI4YjgyZDNiNDRjOGQ2MTNhYTZjZDMzZGQ2Mzk2YmMwYzFlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjcsNiArODI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kRm9yTWVk
aWEoKTsKICAgICB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpOwogICAgIHZvaWQgZGlk
Tm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQg
ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCk7CiAgICAgdm9p
ZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCBy
ZXF1ZXN0SUQpOwogICAgIHZvaWQgaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25G
b3JQb3RlbnRpYWxUYXAodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHJlbmRlclJlY3QsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11
bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUsIGJvb2wgbm9kZUlzUm9vdExldmVs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBiMWI1YTZmNGVkOGRhOGY3YjAyOWFiN2NiYWEwMDg1MmMzZTNkYmMyLi44MjdmZTI5
OTlkYzhkZmRlMTlmNjA0ZGEyOTViYWUyOTI4ZTE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNzAsNiArMTcwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
Ym9vbCBoYXNWaWRlbywgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50UmVjdCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3ksIFN0cmluZyByb3V0aW5nQ29udGV4
dFVJRCkKICAgICBDb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRh
cEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAgRGlkTm90SGFuZGxlVGFwQXNN
ZWFuaW5nZnVsQ2xpY2tBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIERpZENv
bXBsZXRlU3ludGhldGljQ2xpY2soKQogICAgIERpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmlu
Z1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBIYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcCh1aW50NjRfdCByZXF1ZXN0SUQsIFdl
YkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2
aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBib29sIG5v
ZGVJc1Jvb3RMZXZlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKaW5kZXggZDg3OTgyMzQxYjZlZmI0NGY3M2UxMTE3MTNiNGEwNDIzZjNjZDFk
Yi4uNTZkMTg1YzkwMTNkMTkwNzU1YzUzNjE5YWVjMWJiMjQyM2IxNjEzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTI0MSw2ICsy
NDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0
aW9uKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFp
bkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0aWND
bGljaygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCBhZDFhYTcyYTA4MTk0YzJiZGIzMmI2M2E4NWMxZTA3Mjk1NjJiYWExLi5j
NGMzYTNjZjZkYTcwYWQzN2Y1MzdiOGVkMDEzNmQ0NmMwOTQ1MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0yMzIsNyArMjMy
LDEyIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogewogICAgIFttX2NvbnRlbnRWaWV3IF9kaWROb3RI
YW5kbGVUYXBBc0NsaWNrOnBvaW50XTsKIH0KLSAgICAKKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCkKK3sKKyAgICBbbV93ZWJWaWV3IF9kaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0F0UG9pbnQ6cG9pbnRdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKIHsKICAgICBbbV9jb250ZW50VmlldyBfZGlkQ29tcGxl
dGVTeW50aGV0aWNDbGlja107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQppbmRleCA2N2ZmYzQyM2ViZjg4OWY5NWUzNDY5YjZhNjFmZDQ4ZDExZDhk
NGZhLi41NTk0NDI0ZWEwMzhmMjM5MTZjNTRlNDFmYThhNzU3MDE0ZGI5NGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwMDcsNiAr
MTAwNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCiAgICAgcGFnZUNsaWVudCgpLmRpZE5vdEhhbmRs
ZVRhcEFzQ2xpY2socG9pbnQpOwogICAgIG1fdWlDbGllbnQtPmRpZE5vdEhhbmRsZVRhcEFzQ2xp
Y2socG9pbnQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAg
ICBwYWdlQ2xpZW50KCkuZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KHBv
aW50KTsKKyAgICBtX3VpQ2xpZW50LT5kaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0
UG9pbnQocG9pbnQpOworfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbXBsZXRlU3lu
dGhldGljQ2xpY2soKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBhMzFlZTcyM2RlYjFk
ODcyNWRjODQ5Y2RlZDNiMjg0NGEzMmJlNzI3Li5mYzg2ZTBlOTUxZGUxNTkyNDdhN2E0OGVmZjg5
ODk5NjFjODFlMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTQ4NSw0ICsxNDg1LDkg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFAKIH0KICNlbmRpZgogCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKQoreworICAg
IG1fcGFnZS5kaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmMGNhZDVjOGVl
Y2Q4NmRiM2U3MGE4MWMzYTU3YjljYzYwMDM1NjVmLi40ZDRjYTliYjdjYmFmMDgwYWEyY2Q2ZjMx
ZjlhN2Q1ZjIxMjFhNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNjQsNiArMTY0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFByZXZlbnREZWZhdWx0Rm9yRXZlbnQoKSBmaW5hbDsKICNl
bmRpZgogCisgICAgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVu
dCgpIGZpbmFsOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZFJlY2Vp
dmVNb2JpbGVEb2NUeXBlKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgc2V0TmVlZHNTY3JvbGxOb3Rp
ZmljYXRpb25zKFdlYkNvcmU6OkZyYW1lJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjI1OTZiMTgzMmE4NGU4ZGM0NTkyZjAx
ZjVlN2Q5NWUyNWIzOWFjYy4uZmJiM2EwYTZlODM1YjVlNzhjOGYxNjE2YWJhNWU2NWRkNTc0NDdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQ0
NSw2ICsxNDQ1LDggQEAgcHVibGljOgogICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0
ZW1Qcm94eSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93
bk9yTW91c2VVcEV2ZW50KCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMjE2NSw2ICsy
MTY3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9wb3RlbnRpYWxU
YXBOb2RlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9wb3RlbnRpYWxUYXBMb2NhdGlvbjsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fcG90ZW50aWFsVGFwU2VjdXJp
dHlPcmlnaW47CisgICAgYm9vbCBtX2RpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VV
cEV2ZW50RHVyaW5nU3ludGhldGljQ2xpY2sgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2hhc1Jl
Y2VpdmVkVmlzaWJsZUNvbnRlbnRSZWN0c0FmdGVyRGlkQ29tbWl0TG9hZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhc1Jlc3RvcmVkRXhwb3NlZENvbnRlbnRSZWN0QWZ0ZXJEaWRDb21taXRMb2Fk
IHsgZmFsc2UgfTsKQEAgLTIzMzMsNiArMjMzNiw3IEBAIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBpbmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRp
dGluZ0NvbW1hbmQoKSB7IH0KIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlv
dXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CitpbmxpbmUgdm9pZCBXZWJQYWdlOjpkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25P
ck1vdXNlVXBFdmVudCgpIHsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCBjZjEzMWRiNzc0MDIwYTg1MWE5MjAwZWEzNWJiZTg1YjkxNDYxNGUzLi44NDUzNDQyODAx
YWE2MjExMmE0MzhkYTA0MWE2NmRjZjk5MGUwNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtODM0LDYgKzgzNCwyNSBA
QCB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcoV0tDb250ZW50
Q2hhbmdlIG9ic2VydmVkQ29udGVudENoYQogICAgIG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrUG9p
bnRlcklkID0gMDsKIH0KIAorc3RhdGljIGJvb2wgaXNQcm9iYWJseU1lYW5pbmdmdWxDbGljayhO
b2RlJiBjbGlja05vZGUpCit7CisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoY2xpY2tOb2Rl
LmRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAgaWYgKCFpczxFbGVtZW50PihjbGlja05vZGUpIHx8
ICFjbGlja05vZGUuaXNDb25uZWN0ZWQoKSB8fCAhZnJhbWUpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKGlzPEhUTUxCb2R5RWxlbWVudD4oY2xpY2tOb2RlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8gdmlldyA9IG1ha2VSZWZQdHIoZnJhbWUtPm1haW5G
cmFtZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgYXV0byBlbGVtZW50Qm91bmRzID0gV2ViUGFnZTo6
cm9vdFZpZXdCb3VuZHNGb3JFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KGNsaWNrTm9kZSkpOwor
ICAgICAgICBhdXRvIHVub2JzY3VyZWRSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0
KCk7CisgICAgICAgIGlmIChlbGVtZW50Qm91bmRzLndpZHRoKCkgPj0gdW5vYnNjdXJlZFJlY3Qu
d2lkdGgoKSAvIDIgJiYgZWxlbWVudEJvdW5kcy5oZWlnaHQoKSA+PSB1bm9ic2N1cmVkUmVjdC5o
ZWlnaHQoKSAvIDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViUGFnZTo6Y29tcGxldGVTeW50aGV0aWNDbGljayhOb2Rl
JiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0
aW9uLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIFN5bnRoZXRpY0Ns
aWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQp
CiB7CiAgICAgSW50UG9pbnQgcm91bmRlZEFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50UG9pbnQo
bG9jYXRpb24pOwpAQCAtODUzLDYgKzg3Miw4IEBAIHZvaWQgV2ViUGFnZTo6Y29tcGxldGVTeW50
aGV0aWNDbGljayhOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6CiAg
ICAgYm9vbCBhbHRLZXkgPSBtb2RpZmllcnMuY29udGFpbnMoV2ViRXZlbnQ6Ok1vZGlmaWVyOjpB
bHRLZXkpOwogICAgIGJvb2wgbWV0YUtleSA9IG1vZGlmaWVycy5jb250YWlucyhXZWJFdmVudDo6
TW9kaWZpZXI6Ok1ldGFLZXkpOwogCisgICAgbV9kaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25P
ck1vdXNlVXBFdmVudER1cmluZ1N5bnRoZXRpY0NsaWNrID0gZmFsc2U7CisKICAgICB0YXBXYXNI
YW5kbGVkIHw9IG1haW5mcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
UGxhdGZvcm1Nb3VzZUV2ZW50KHJvdW5kZWRBZGp1c3RlZFBvaW50LCByb3VuZGVkQWRqdXN0ZWRQ
b2ludCwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAxLCBzaGlmdEtl
eSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZv
cmNlQXRDbGljaywgc3ludGhldGljQ2xpY2tUeXBlLCBwb2ludGVySWQpKTsKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtODc5LDggKzkwMCwxMyBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXBsZXRlU3ludGhldGljQ2xpY2soTm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBj
b25zdCBXZWJDb3JlOgogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAoIW1fZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnREdXJpbmdT
eW50aGV0aWNDbGljayAmJiAhaXNQcm9iYWJseU1lYW5pbmdmdWxDbGljayhub2RlUmVzcG9uZGlu
Z1RvQ2xpY2spKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhh
bmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24p
KSk7CisKICAgICBpZiAoIXRhcFdhc0hhbmRsZWQgfHwgIW5vZGVSZXNwb25kaW5nVG9DbGljay5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Tm90SGFuZGxlVGFwQXNDbGljayhyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pKSk7CisKKyAgICBt
X2RpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50RHVyaW5nU3ludGhldGlj
Q2xpY2sgPSBmYWxzZTsKICAgICAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSk7CiB9CkBAIC04OTIsMTQgKzkxOCwyMCBAQCB2b2lk
IFdlYlBhZ2U6OmF0dGVtcHRTeW50aGV0aWNDbGljayhjb25zdCBJbnRQb2ludCYgcG9pbnQsIE9w
dGlvblNldDxXZWJFdmVudDo6TQogICAgIEZyYW1lKiBmcmFtZVJlc3BvbmRpbmdUb0NsaWNrID0g
bm9kZVJlc3BvbmRpbmdUb0NsaWNrID8gbm9kZVJlc3BvbmRpbmdUb0NsaWNrLT5kb2N1bWVudCgp
LmZyYW1lKCkgOiBudWxscHRyOwogICAgIEludFBvaW50IGFkanVzdGVkSW50UG9pbnQgPSByb3Vu
ZGVkSW50UG9pbnQoYWRqdXN0ZWRQb2ludCk7CiAKLSAgICBpZiAoIWZyYW1lUmVzcG9uZGluZ1Rv
Q2xpY2sgfHwgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQgPCBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqZnJhbWVSZXNwb25kaW5nVG9DbGljayktPmZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25J
REFmdGVyRGlkQ29tbWl0TG9hZCgpKQorICAgIGlmICghZnJhbWVSZXNwb25kaW5nVG9DbGljayB8
fCBsYXN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZCA8IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpm
cmFtZVJlc3BvbmRpbmdUb0NsaWNrKS0+Zmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJE
aWRDb21taXRMb2FkKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoYWRqdXN0ZWRJbnRQb2ludCkp
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2soYWRqdXN0ZWRJbnRQb2ludCkpOwotICAgIGVsc2UgaWYgKG1faW50ZXJhY3Rpb25Ob2Rl
ID09IG5vZGVSZXNwb25kaW5nVG9DbGljaykKKyAgICB9IGVsc2UgaWYgKG1faW50ZXJhY3Rpb25O
b2RlID09IG5vZGVSZXNwb25kaW5nVG9DbGljaykKICAgICAgICAgY29tcGxldGVTeW50aGV0aWND
bGljaygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMsIFdl
YkNvcmU6Ok9uZUZpbmdlclRhcCk7CiAgICAgZWxzZQogICAgICAgICBoYW5kbGVTeW50aGV0aWND
bGljaygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMpOwog
fQogCit2b2lkIFdlYlBhZ2U6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2
ZW50KCkKK3sKKyAgICBtX2RpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50
RHVyaW5nU3ludGhldGljQ2xpY2sgPSB0cnVlOworfQorCiB2b2lkIFdlYlBhZ2U6OmhhbmRsZURv
dWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIE9wdGlv
blNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgVHJhbnNhY3Rpb25JRCBsYXN0TGF5
ZXJUcmVlVHJhbnNhY3Rpb25JZCkKIHsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CkBA
IC0xMDk0LDcgKzExMjYsOSBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBPcHRpb25TZQogICAgIEZsb2F0UG9p
bnQgYWRqdXN0ZWRQb2ludDsKICAgICBOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2sgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb2ludCwgYWRqdXN0
ZWRQb2ludCk7CiAgICAgaWYgKCFub2RlUmVzcG9uZGluZ1RvQ2xpY2sgfHwgIW5vZGVSZXNwb25k
aW5nVG9DbGljay0+cmVuZGVyZXIoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZE5vdEhhbmRsZVRhcEFzQ2xpY2socm91bmRlZEludFBvaW50KGFkanVzdGVkUG9p
bnQpKSk7CisgICAgICAgIGF1dG8gYWRqdXN0ZWRJbnRQb2ludCA9IHJvdW5kZWRJbnRQb2ludChh
ZGp1c3RlZFBvaW50KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoYWRqdXN0ZWRJbnRQb2ludCkpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRsZVRhcEFzQ2xp
Y2soYWRqdXN0ZWRJbnRQb2ludCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRU
YXBIaWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkocmVxdWVzdElELCBub2RlUmVzcG9uZGluZ1Rv
Q2xpY2spOwpAQCAtMTE2OSw3ICsxMjAzLDEwIEBAIHZvaWQgV2ViUGFnZTo6Y29tbWl0UG90ZW50
aWFsVGFwRmFpbGVkKCkKICAgICAgICAgY2xlYXJTZWxlY3Rpb24oKTsKIAogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkpOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxlVGFwQXNDbGljayhyb3VuZGVk
SW50UG9pbnQobV9wb3RlbnRpYWxUYXBMb2NhdGlvbikpKTsKKworICAgIGF1dG8gYWRqdXN0ZWRJ
bnRQb2ludCA9IHJvdW5kZWRJbnRQb2ludChtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrQXRQb2ludChhZGp1c3RlZEludFBvaW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNrKGFkanVzdGVkSW50UG9pbnQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpjYW5jZWxQb3RlbnRpYWxUYXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVkYTVmNmFmZWMzNjFjZGI5YTMxNjE4OWZm
NTg5NWIzMjI1Njg1M2IuLjkzNDYzMGU1Y2FjZDlhY2MzMzAwNWFkOGMyZTAwNWQ0MDU1MTQ1YmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wNC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBBZGQgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgYSBzeW50aGV0aWMgY2xpY2sgdHJpZ2dlcmVkIGFueSBtZWFuaW5nZnVsIGNoYW5nZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTI0MAorICAg
ICAgICByZGFyOi8vNzcyMjExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgIEFkZCB0ZXN0IHJ1bm5lciBwbHVtYmluZyB0byB0ZXN0IHRoZSBuZXcgaGV1cmlz
dGljLiBOb3RlIHRoYXQgd2UgY2FuJ3QganVzdCB1dGlsaXplIHRoZSBgV0tVSURlbGVnYXRlUHJp
dmF0ZWAKKyAgICAgICAgbWV0aG9kIGRpcmVjdGx5LCBzaW5jZSB3ZSBlbmQgdXAgb3ZlcnJpZGlu
ZyB0aGUgd2ViIHZpZXcncyBgVUlDbGllbnRgIHZpYSBgV0tQYWdlU2V0UGFnZVVJQ2xpZW50YCwg
c28gdGhlIGNhbGwKKyAgICAgICAgdG8gYG1fdWlDbGllbnQtPmRpZE5vdEhhbmRsZVRhcEFzTWVh
bmluZ2Z1bENsaWNrQXRQb2ludChwb2ludCk7YCBlbmRzIHVwIGJlaW5nIGEgbm8tb3AuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omluc3RhbGxEaWROb3RI
YW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6Y2FsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2spOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tX
ZWJWaWV3IF9kaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQ6XSk6CisKIDIw
MjEtMDQtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIGV4
cGVyaW1lbnQgd2l0aCBhdmVyYWdpbmcgc2FtcGxpbmcgY29sb3JzIGFjcm9zcyB0aGUgdG9wIG9m
IHRoZSBwYWdlIGFzIHRoZSBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAppbmRleCAwMTFkNjg5NWU5NzJiNTg5MjUxZjY1NjZiYWRlMjRmNTY4MTQ2OGI5Li4y
MDlmMzExNjc1ZDRlNmNlMzA5NWQ1ODgyMDU4MTJlNWY4NmZmZWU3IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKQEAgLTI1Niw2ICsyNTYsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAg
ICAgb2JqZWN0IG51bWJlck9mREZHQ29tcGlsZXMob2JqZWN0IGZ1bmN0aW9uKTsKICAgICBvYmpl
Y3QgbmV2ZXJJbmxpbmVGdW5jdGlvbihvYmplY3QgZnVuY3Rpb24pOwogCisgICAgLy8gVUkgZGVs
ZWdhdGUgaG9va3MuCisgICAgdW5kZWZpbmVkIGluc3RhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0NhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CisKICAgICAvLyBTd2lwZSBnZXN0
dXJlcwogICAgIHVuZGVmaW5lZCBpbnN0YWxsRGlkQmVnaW5Td2lwZUNhbGxiYWNrKG9iamVjdCBj
YWxsYmFjayk7CiAgICAgdW5kZWZpbmVkIGluc3RhbGxXaWxsRW5kU3dpcGVDYWxsYmFjayhvYmpl
Y3QgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAwYTRkNGNmZmU1YTY0MjYyOTI1M2Q5
MGQxNjAxMDIxOWJlMDAxMDNmLi4yMGU3MmQ2ZGE4OTNhZjRlYWRjMTgxMTNiODExYWZiMDM1NGY3
NTdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMjc1LDYgKzI3NSwxMSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tDYWxsYmFjayIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiQ2FsbERpZEJlZ2luU3dpcGVDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+
Y2FsbERpZEJlZ2luU3dpcGVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCAwN2U2ZTlhZTljYTljZTk0M2E2ZjI5NTBjNjgwNzM2NWFiMDM4ZTdlLi5jNjlkYmY1NWUyNTA1
YmQwZjIzNDYxYTgwM2QyYzcxZGE5NzQxNDczIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBA
QCBlbnVtIHsKICAgICBFbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50Q2FsbGJhY2tJRCwKICAgICBF
eGl0RnVsbHNjcmVlbkZvckVsZW1lbnRDYWxsYmFja0lELAogICAgIEFwcEJvdW5kUmVxdWVzdENv
bnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2tJRCwKKyAgICBEaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0NhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAK
IH07CiAKQEAgLTExMDcsNiArMTEwOCwxNiBAQCB2b2lkIFRlc3RSdW5uZXI6Omluc3RhbGxDdXN0
b21NZW51QWN0aW9uKEpTU3RyaW5nUmVmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdAogICAg
IH0pKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjppbnN0YWxsRGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVz
dFJ1bm5lckNhbGxiYWNrKERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2tJ
RCwgY2FsbGJhY2spOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWROb3RIYW5kbGVUYXBB
c01lYW5pbmdmdWxDbGlja0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNr
KERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQg
VGVzdFJ1bm5lcjo6aW5zdGFsbERpZEJlZ2luU3dpcGVDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxi
YWNrKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZEJlZ2luU3dpcGVDYWxsYmFj
a0lELCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDk1NDc4NGVhMDcyM2ZmOThjNmY0ODE1Mjc5YmFiY2Ni
NzU2YzMzZWYuLjAxNjVlMzAzNGQ2MWJkZDY5MjNiY2FkNDU4OTQzNTlhOGNhNmM3OTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CkBAIC0zNDMsNiArMzQzLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW5zdGFsbEN1c3RvbU1lbnVB
Y3Rpb24oSlNTdHJpbmdSZWYgbmFtZSwgYm9vbCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5LCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHBlcmZvcm1DdXN0b21NZW51QWN0aW9uKCk7CiAK
KyAgICB2b2lkIGluc3RhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNr
KEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrQ2FsbGJhY2soKTsKKwogICAgIHZvaWQgaW5zdGFsbERpZEJlZ2luU3dpcGVDYWxsYmFjayhK
U1ZhbHVlUmVmKTsKICAgICB2b2lkIGluc3RhbGxXaWxsRW5kU3dpcGVDYWxsYmFjayhKU1ZhbHVl
UmVmKTsKICAgICB2b2lkIGluc3RhbGxEaWRFbmRTd2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlMjc4ZTJjZDZh
ZWQwNThlODdkOGQ1YjQzNTE4OTY5MzAyN2NmODhhLi45MGVjOWMyNDE0NjkwMjA4N2U1YjljYTM2
MzA2M2MzYTI4ODc4OTFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtMjE2Nyw2ICsyMTY3LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnByb2Nlc3NE
aWRDcmFzaCgpCiAgICAgICAgIGV4aXQoMSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrKCkKK3sKKyAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljaygpOworfQorCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKFdLUGFnZVJlZikKIHsKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRCZWdpblN3aXBlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNDYyZTkwMGI0MGY1MzBhNjNmNDcyMjNhNmZlOWYxN2Fi
M2M0ZTIzNC4uM2ZkMmE0ODEzMjI4ZmY1OTRhMDQ5ZjM4YTNkYWVkMzhlMjY0ZGRiMSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzYxLDYgKzM2MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBsZXRlTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uQ2hlY2soV0tN
ZWRpYUtleVN5c3RlbVBlcm1pc3Npb25DYWxsYmFja1JlZik7CiAgICAgdm9pZCBzZXRJc01lZGlh
S2V5U3lzdGVtUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CiAKKyAgICB2b2lkIGRpZE5vdEhhbmRs
ZVRhcEFzTWVhbmluZ2Z1bENsaWNrKCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0
T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdl
bmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMGMyMDBiZDU4ODYy
OTYzYmVkNWM1MTYxZWVkNDQ2NGZjMThlMGE4Ny4uZDM2Y2FhNjE5MjNmYmJjOTEwY2I0ZTBjZDVi
NGYyYTA2ZDk4M2JhZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKQEAgLTE0MzksNiArMTQzOSwxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpvdXRwdXRUZXh0
KGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0KQogICAgIG1fdGV4dE91dHB1dC5hcHBlbmQodGV4dCk7
CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENs
aWNrKCkKK3sKKyAgICBwb3N0UGFnZU1lc3NhZ2UoIkNhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5p
bmdmdWxDbGlja0NhbGxiYWNrIik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZEJlZ2lu
U3dpcGUoKQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZEJlZ2luU3dpcGVDYWxsYmFj
ayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDFjMmVkMzA0
MjI5N2ExYTJlYmM5YWNhM2VlOTZkMDdkNDIxNTAyOTIuLmE4Yzg1NGUyNzY3ZDY5ODI2ZWQ5NzYz
M2I3MWUzMjU4MWU4NmYyODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGR1bXBXZWJQcm9j
ZXNzVW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogICAgIHZvaWQg
b3V0cHV0VGV4dChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNN
ZWFuaW5nZnVsQ2xpY2soKTsKKwogICAgIHZvaWQgZGlkQmVnaW5Td2lwZSgpOwogICAgIHZvaWQg
d2lsbEVuZFN3aXBlKCk7CiAgICAgdm9pZCBkaWRFbmRTd2lwZSgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCmluZGV4IGVmZTA3
NzIxOWRkOGVkOTU2NzgyNWU5ZDFlZDY0NzEzMjAyNGQwM2MuLjk3OWI3OWMwNjNmNWEzMDQyYmUw
YmE3ODUzNWRiOWEyOGY1Y2U2M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdFJ1bm5lcldLV2ViVmlldy5oIgogCisjaW1wb3J0ICJU
ZXN0Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgpAQCAtMzk2LDYgKzM5NywxMSBAQCAtICh2
b2lkKV9kaWREaXNtaXNzUG9wb3ZlcgogICAgICAgICBzZWxmLmRpZERpc21pc3NQb3BvdmVyQ2Fs
bGJhY2soKTsKIH0KIAorLSAodm9pZClfZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tB
dFBvaW50OihDR1BvaW50KXBvaW50Cit7CisgICAgV1RSOjpUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2soKTsKK30KKwogLSAodm9pZClz
Y3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRo
VmlldzooVUlWaWV3ICopdmlldwogewogICAgIFtzdXBlciBzY3JvbGxWaWV3V2lsbEJlZ2luWm9v
bWluZzpzY3JvbGxWaWV3IHdpdGhWaWV3OnZpZXddOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0YjcxZWYzYTkxNzlkOTFl
YWU0ZWFlMDI4Y2ZkYTgwYzZiYzllODYuLmVmMTRkOWZiZjFjNjMzYmYzMWE4ZGIzZTIzNTEwYmE0
OTRmYzQwYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNC0zMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZGQgYSBoZXVyaXN0
aWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzeW50aGV0aWMgY2xpY2sgdHJpZ2dlcmVkIGFueSBt
ZWFuaW5nZnVsIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTI0MAorICAgICAgICByZGFyOi8vNzcyMjExOTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2RpZC1ub3Qt
aGFuZGxlLW1lYW5pbmdmdWwtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGljay5odG1sOiBBZGRl
ZC4KKwogMjAyMS0wNC0yOCAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgWyBpT1Mgd2syIEVXUyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9pbnRlcmZhY2VzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlL3Bvc3RNZXNzYWdlL3N0
cnVjdHVyZWQtY2xvbmUtbWVzc2FnZS5odG1sIGlzIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVhbmluZ2Z1bC1jbGlj
ay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5k
bGUtbWVhbmluZ2Z1bC1jbGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2NzA1OTZiMjg5
ZmRjMGQzOTQ3MGMwYzY2NzA3NDdkY2NkNTA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2lvcy9kaWQtbm90LWhhbmRsZS1tZWFuaW5nZnVsLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgaXMgaW50ZW5kZWQgdG8gZXhlcmNp
c2UgdGhlICdtZWFuaW5nZnVsIGNsaWNrJyBoZXVyaXN0aWMsIGFuZCByZXF1aXJlcyBXZWJLaXRU
ZXN0UnVubmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgZGlkTm90SGFu
ZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjayBpcyB0cnVlCitQQVNTIGNsaWNrZWQgb24g
YnV0dG9uCitQQVNTIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sgaXMg
ZmFsc2UKK1BBU1MgZGlkTm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjayBpcyB0
cnVlCitQQVNTIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2sgaXMgZmFs
c2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZGlkLW5vdC1oYW5kbGUtbWVh
bmluZ2Z1bC1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2RpZC1ub3Qt
aGFuZGxlLW1lYW5pbmdmdWwtY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDA5ZDNhZGI2OGNkN2U1
NWE3YjBjZmNjYzljZjdkZDBiZjg4NTIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW9zL2RpZC1ub3QtaGFuZGxlLW1lYW5pbmdmdWwtY2xpY2suaHRtbApAQCAt
MCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEs
IHVzZXItc2NhbGFibGU9bm8iPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgZm9udC1zaXpl
OiAxOHB4OworICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2pz
VGVzdElzQXN5bmMgPSB0cnVlOworCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkg
PT4geworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgaXMgaW50ZW5kZWQgdG8gZXhlcmNpc2Ug
dGhlICdtZWFuaW5nZnVsIGNsaWNrJyBoZXVyaXN0aWMsIGFuZCByZXF1aXJlcyBXZWJLaXRUZXN0
UnVubmVyLiIpOworCisgICAgbGV0IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4
dCIpOworICAgIGxldCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7
CisKKyAgICBhc3luYyBmdW5jdGlvbiBzaW11bGF0ZVRhcEFuZENoZWNrRGlkTm90SGFuZGxlVGFw
QXNNZWFuaW5nZnVsQ2xpY2soZWxlbWVudCwgZXhwZWN0YXRpb24pIHsKKyAgICAgICAgZGlkTm90
SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tDYWxsYmFjayA9IGZhbHNlOworICAgICAgICB0ZXN0
UnVubmVyLmluc3RhbGxEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrKCgp
ID0+IHsKKyAgICAgICAgICAgIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJh
Y2sgPSB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JEb3VibGVU
YXBEZWxheSgpOworICAgICAgICBpZiAoZXhwZWN0YXRpb24pCisgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2siKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiZGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tDYWxsYmFjayIpOworCisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJUZXN0UnVu
bmVyQ2FsbGJhY2tzKCk7CisgICAgfQorCisgICAgYXdhaXQgc2ltdWxhdGVUYXBBbmRDaGVja0Rp
ZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrKHRleHQsIHRydWUpOworICAgIGF3YWl0IHNp
bXVsYXRlVGFwQW5kQ2hlY2tEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGljayhidXR0b24s
IGZhbHNlKTsKKworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAo
KSA9PiB7IH0pOworICAgIGF3YWl0IHNpbXVsYXRlVGFwQW5kQ2hlY2tEaWROb3RIYW5kbGVUYXBB
c01lYW5pbmdmdWxDbGljayh0ZXh0LCB0cnVlKTsKKworICAgIGRvY3VtZW50LmJvZHkuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgfSk7CisgICAgYXdhaXQgc2ltdWxhdGVUYXBBbmRDaGVja0RpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrKHRleHQsIGZhbHNlKTsKKworICAgIHRleHQucmVt
b3ZlKCk7CisgICAgYnV0dG9uLnJlbW92ZSgpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0IiBvbmNs
aWNrPSJ0ZXN0UGFzc2VkKCdjbGlja2VkIG9uIGJ1dHRvbicpOyBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsiPkhlbGxvIHdvcmxkPC9idXR0b24+CisgICAgPHAgaWQ9InRleHQiPkxvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIEFlbmVhbiBsYW9y
ZWV0IG5pc2kgZmVsaXMsIGV1IHNjZWxlcmlzcXVlIGRvbG9yIGltcGVyZGlldCBpbi4gU2VkIGF0
IHBvcnR0aXRvciBwdXJ1cywgaW4gcGxhY2VyYXQganVzdG8uIE1hdXJpcyBhdCBhdWd1ZSBhYyBw
dXJ1cyB2aXZlcnJhIG1vbGVzdGllLiBGdXNjZSB1bHRyaWNlcyBhbnRlIGF0IHBlbGxlbnRlc3F1
ZSBsb2JvcnRpcy4gU2VkIHBlbGxlbnRlc3F1ZSwgaXBzdW0gZXUgc2VtcGVyIG1vbGxpcywgYXJj
dSBsZWN0dXMgZGlnbmlzc2ltIGVuaW0sIGluIG1heGltdXMgdG9ydG9yIGxpZ3VsYSBpZCBpcHN1
bS4gTnVsbGEgZGlnbmlzc2ltIGRpYW0gYSBtaSB0ZW1wb3IgcG9ydGEuIEV0aWFtIHRlbXBvciBh
YyBhdWd1ZSBub24gZGFwaWJ1cy4gRG9uZWMgZXVpc21vZCB2ZWwgdHVycGlzIGluIHVsdHJpY2Vz
LiBVdCBhY2N1bXNhbiB1bHRyaWNlcyBhcmN1IHZpdGFlIHZlbmVuYXRpcy4gSW4gdXJuYSB2ZWxp
dCwgYWNjdW1zYW4gc2l0IGFtZXQgYXJjdSB2ZWwsIHZlc3RpYnVsdW0gcHVsdmluYXIgbGVvLiBB
bGlxdWFtIHZ1bHB1dGF0ZSBldWlzbW9kIHVsdHJpY2VzLiBTZWQgY29uZ3VlIHZlc3RpYnVsdW0g
bGliZXJvIHF1aXMgb3JuYXJlLjwvcD4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>