<?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>162480</bug_id>
          
          <creation_ts>2016-09-22 19:43:10 -0700</creation_ts>
          <short_desc>MediaSessionManagerMac::nowPlayingEligibleSession() needs to honor the main content heuristic</short_desc>
          <delta_ts>2016-09-23 11:48:56 -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>Media</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>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232762</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-22 19:43:10 -0700</bug_when>
    <thetext>MediaSessionManagerMac::nowPlayingEligibleSession() needs to honor the main content heuristic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232764</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-22 19:43:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/28430615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232765</commentid>
    <comment_count>2</comment_count>
      <attachid>289653</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-22 19:58:38 -0700</bug_when>
    <thetext>Created attachment 289653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232777</commentid>
    <comment_count>3</comment_count>
      <attachid>289653</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-09-22 21:01:47 -0700</bug_when>
    <thetext>Comment on attachment 289653
Patch

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

This looks good to me, but a media expert should review it.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKView.h:57
&gt; +@property (nonatomic) BOOL allowsNowPlayingControls;

Is this so clients can disable this feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232780</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-09-22 21:15:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 289653 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289653&amp;action=review
&gt; 
&gt; This looks good to me, but a media expert should review it.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKView.h:57
&gt; &gt; +@property (nonatomic) BOOL allowsNowPlayingControls;
&gt; 
&gt; Is this so clients can disable this feature?

We talked about this on irc, and I think we found a simpler way to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232799</commentid>
    <comment_count>5</comment_count>
      <attachid>289666</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-22 23:49:02 -0700</bug_when>
    <thetext>Created attachment 289666
Refactored to use Page visibility hooks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232846</commentid>
    <comment_count>6</comment_count>
      <attachid>289666</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-09-23 07:57:21 -0700</bug_when>
    <thetext>Comment on attachment 289666
Refactored to use Page visibility hooks.

This looks better for sure! I would still like Jer to review officially.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232848</commentid>
    <comment_count>7</comment_count>
      <attachid>289666</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-09-23 08:24:06 -0700</bug_when>
    <thetext>Comment on attachment 289666
Refactored to use Page visibility hooks.

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

&gt; Source/WebCore/page/Page.cpp:1474
&gt; +void Page::visibleAndActiveDidChange(bool isVisibleAndActive)
&gt; +{
&gt; +    PlatformMediaSessionManager::setAllowsNowPlayingControls(!isVisibleAndActive);
&gt; +}
&gt; +

I think this will cause issues on WK1 clients.  One page in the process may be going into the background, and another one becoming foreground, which will either result in the process-global gAllowsNowPlayingControls being true or false depending on the order of operations.

This is the right direction though.  I would recommend instead of having this process global that the PlatformMediaSession has a method called, e.g., &quot;pageAllowsNowPlaying()&quot; which queries the page&apos;s visible-and-active state. Then in updateNowPlayingInfo(), you&apos;d do something like:

--- a/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm
+++ b/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm
@@ -116,7 +116,7 @@ void MediaSessionManagerMac::updateNowPlayingInfo()
 
     LOG(Media, &quot;MediaSessionManagerMac::updateNowPlayingInfo - currentSession = %p&quot;, currentSession);
 
-    if (!currentSession) {
+    if (!currentSession || !currentSession-&gt;pageAllowsNowPlaying(()) {
         if (m_nowPlayingActive) {
             MRMediaRemoteSetCanBeNowPlayingApplication(false);
             LOG(Media, &quot;MediaSessionManagerMac::updateNowPlayingInfo - clearing now playing info&quot;);

You&apos;d still need the mechanism to call updateNowPlayingInfo() when the page&apos;s visibility state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232887</commentid>
    <comment_count>8</comment_count>
      <attachid>289687</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-23 10:01:45 -0700</bug_when>
    <thetext>Created attachment 289687
Remove gAllowsNowPlayingControls from MediaSessionManagerMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232907</commentid>
    <comment_count>9</comment_count>
      <attachid>289687</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-09-23 10:54:07 -0700</bug_when>
    <thetext>Comment on attachment 289687
Remove gAllowsNowPlayingControls from MediaSessionManagerMac.mm

This version looks much better. I think you can land this as-is, but it would be nice to address a nit or two in a follow-up:

The page shouldn&apos;t have to know about PlatformMediaSessionManager. There&apos;s already a state change notification system in Page which HTMLMediaElement could register for, and notify it&apos;s session when the visible and active state changes.  As you pointed out, you&apos;d need a way to coalesce multiple updates within the same run loop to avoid doing a bunch of unnecessary work, but that should be possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232916</commentid>
    <comment_count>10</comment_count>
      <attachid>289693</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-23 11:16:17 -0700</bug_when>
    <thetext>Created attachment 289693
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232926</commentid>
    <comment_count>11</comment_count>
      <attachid>289693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-23 11:48:10 -0700</bug_when>
    <thetext>Comment on attachment 289693
Patch for landing

Clearing flags on attachment: 289693

Committed r206315: &lt;http://trac.webkit.org/changeset/206315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232927</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-23 11:48:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232928</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-23 11:48:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 289687 [details]
&gt; Remove gAllowsNowPlayingControls from MediaSessionManagerMac.mm
&gt; 
&gt; This version looks much better. I think you can land this as-is, but it
&gt; would be nice to address a nit or two in a follow-up:
&gt; 
&gt; The page shouldn&apos;t have to know about PlatformMediaSessionManager. There&apos;s
&gt; already a state change notification system in Page which HTMLMediaElement
&gt; could register for, and notify it&apos;s session when the visible and active
&gt; state changes.  As you pointed out, you&apos;d need a way to coalesce multiple
&gt; updates within the same run loop to avoid doing a bunch of unnecessary work,
&gt; but that should be possible.

Sounds good. As we discussed on IRC, due to time constraints, I will follow up with this in a future patch that will include the infrastructure needed to test these changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289653</attachid>
            <date>2016-09-22 19:58:38 -0700</date>
            <delta_ts>2016-09-22 23:48:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162480-20160922195548.patch</filename>
            <type>text/plain</type>
            <size>23523</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2MjAyMGNmZGJlNzQ5
NGUzZmYyNjM0MGY1YzVmNDk1MDdjZjhmYi4uNTY4NmQyMzMxZDk2NGU4YTUyY2QzNjcwYzYxYjFi
YjY3OTNiMDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA5LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSBuZWVkcyB0byBob25vciB0
aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODQzMDYx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uIHRvIHVz
ZSBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyCisgICAg
ICAgIGFuZCBhbHNvIGVhcmx5IHJldHVybiBudWxscHRyIGlmIHRoZSBjdXJyZW50IHRhYiB0aGUg
d2ViIHByb2Nlc3MgaXMgaG9zdGVkIGluIGlzIHRoZSBhY3RpdmUgdGFiLCBhbmQgdGhlIHdpbmRv
dworICAgICAgICBpdCBpcyBob3N0ZWQgaW4gaXMgdGhlIG1haW4gd2luZG93LgorCisgICAgICAg
IEFsc28gYWRkcyBzb21lIHNsaWdodCBhZGp1c3RtZW50cyB0byBNZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbywgc28gd2UgcmVzZXQgdGhlIHRpdGxlLCByYXRlCisg
ICAgICAgIGFuZCBkdXJhdGlvbiBvZiB0aGUgY3VycmVudCBhY3RpdmUgc2Vzc2lvbiB3aGVuIGNs
ZWFyaW5nIG91dCB0aGUgbm93IHBsYXlpbmcgaW5mby4gTGlrZXdpc2UsIHdoZW4gdmVuZGluZyBh
bgorICAgICAgICBhY3RpdmUgdmlkZW8sIGlmIHRoZSB2aWRlbyBpbmZvcm1hdGlvbiBtYXRjaGVz
IHRoYXQgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgd2UgbWFyayBtX25vd1BsYXlpbmdBY3RpdmUg
YW55d2F5cy4KKyAgICAgICAgVGhlc2UgdHdlYWtzIHByZXZlbnQgdXMgZnJvbSBnZXR0aW5nIGlu
IGEgYmFkIHN0YXRlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gYSB0YWIgd2l0aCBtZWRpYSBhbmQg
b25lIHdpdGhvdXQuCisKKyAgICAgICAgVW5pdCB0ZXN0cyB0byBjb21lIGluIGEgZnV0dXJlIHBh
dGNoLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjptZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxh
eWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6YmVz
dE1lZGlhU2Vzc2lvbkZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlck1hYzo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6CisK
IDIwMTYtMDktMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IGJ1aWxkIGZvciBmdXR1cmUgdmVyc2lvbnMgb2YgQ2xhbmcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMjMyMjkzNjQxMTE5Y2NlZTY5NGVjOGE2MzY1NGE5MjVmMzE4OTM2Ni4uMzA2ZDBkYjIxNWQx
YjBiYjMwYjQ4ODFlZTNjNGViMWRkNzQwYmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBA
CisyMDE2LTA5LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24o
KSBuZWVkcyB0byBob25vciB0aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDgwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yODQzMDYxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIHRoZSBhYmlsaXR5IHRvIHBsdW1iIGBhbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHNgIHRvIHRoZSB3ZWIgcHJvY2VzcyBmcm9tIFNhZmFyaS4gU2VlIFdlYkNvcmUgY2hh
bmdlcyBmb3IKKyAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1
cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLVmlldyBzZXRBbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKTogRGVsZXRlZC4K
KwogMjAxNi0wOS0yMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNv
bGxhYm9yYS5jby51az4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5NThlNWY0NmViZmI3MWI3YmIx
OGJlZmQxYzZmNzJhODQ4YTcwNzdlLi5jZGE1YTNjMmIyOTJmNTM3Y2RlNmIxODc2ZGQwNmQ1Zjkx
ZDZlMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM1
OCwxMyArMzU4LDEzIEBAIHN0cnVjdCBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyB7CiAgICAgYm9v
bCBpc1BsYXlpbmdBdWRpbyA6IDE7CiB9OwogCi1zdGF0aWMgTWVkaWFFbGVtZW50U2Vzc2lvbklu
Zm8gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGNvbnN0IE1lZGlhRWxlbWVudFNl
c3Npb24mIHNlc3Npb24pCitzdGF0aWMgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gbWVkaWFFbGVt
ZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24mIHNlc3Np
b24sIE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2Up
CiB7CiAgICAgY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCA9IHNlc3Npb24uZWxlbWVu
dCgpOwogICAgIHJldHVybiB7CiAgICAgICAgICZzZXNzaW9uLAogICAgICAgICBzZXNzaW9uLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCksCi0gICAgICAgIHNlc3Npb24uY2FuU2hvd0Nv
bnRyb2xzTWFuYWdlcigpLAorICAgICAgICBzZXNzaW9uLmNhblNob3dDb250cm9sc01hbmFnZXIo
cHVycG9zZSksCiAgICAgICAgIGVsZW1lbnQuaXNGdWxsc2NyZWVuKCkgfHwgZWxlbWVudC5pc1Zp
c2libGVJblZpZXdwb3J0KCksCiAgICAgICAgIHNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5D
b250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9zZTo6TWVkaWFDb250cm9scyksCiAg
ICAgICAgIGVsZW1lbnQuaXNQbGF5aW5nKCkgJiYgZWxlbWVudC5oYXNBdWRpbygpICYmICFlbGVt
ZW50Lm11dGVkKCkKQEAgLTM4MSw4ICszODEsMTEgQEAgc3RhdGljIGJvb2wgcHJlZmVyTWVkaWFD
b250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVyT3RoZXJDYW5kaWRhdGVTZXNzaW9uKGNvbnMK
ICAgICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNz
aW9uLnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247CiB9CiAKLXN0YXRpYyBib29sIG1lZGlhU2Vz
c2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lv
bkluZm8mIHNlc3Npb24pCitzdGF0aWMgYm9vbCBtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0
aE1haW5Db250ZW50KGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb25JbmZvJiBzZXNzaW9uLCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKQogeworICAg
IGlmIChwdXJwb3NlID09IE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJw
b3NlOjpOb3dQbGF5aW5nKQorICAgICAgICByZXR1cm4gc2Vzc2lvbi5pc1BsYXlpbmdBdWRpbzsK
KwogICAgIGlmICghc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM5NCwzMyArMzk3LDYgQEAgc3RhdGljIGJvb2wgbWVk
aWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudChjb25zdCBNZWRpYUVsZW1lbnRT
ZXNzaW9uSW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGNvbnN0IE1lZGlhRWxlbWVu
dFNlc3Npb24qIGJlc3RNZWRpYVNlc3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKQotewotICAgIGF1dG8gYWxsU2Vzc2lvbnMgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5jdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhbXSAoY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsKLSAgICAgICAgcmV0dXJuIGlzPE1lZGlhRWxl
bWVudFNlc3Npb24+KHNlc3Npb24pOwotICAgIH0pOwotCi0gICAgVmVjdG9yPE1lZGlhRWxlbWVu
dFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsKLSAgICBib29sIGF0TGVhc3RPbmVOb25D
YW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKLSAgICBmb3IgKGF1
dG8mIHNlc3Npb24gOiBhbGxTZXNzaW9ucykgewotICAgICAgICBhdXRvIG1lZGlhRWxlbWVudFNl
c3Npb25JbmZvID0gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGRvd25jYXN0PE1l
ZGlhRWxlbWVudFNlc3Npb24+KCpzZXNzaW9uKSk7Ci0gICAgICAgIGlmIChtZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mby5jYW5TaG93Q29udHJvbHNNYW5hZ2VyKQotICAgICAgICAgICAgY2FuZGlkYXRl
U2Vzc2lvbnMuYXBwZW5kKG1lZGlhRWxlbWVudFNlc3Npb25JbmZvKTsKLSAgICAgICAgZWxzZSBp
ZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudChtZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mbykpCi0gICAgICAgICAgICBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25m
dXNlZEZvck1haW5Db250ZW50ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIWNhbmRpZGF0ZVNl
c3Npb25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBzdGQ6OnNvcnQo
Y2FuZGlkYXRlU2Vzc2lvbnMuYmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbnMuZW5kKCksIHByZWZl
ck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lv
bik7Ci0gICAgYXV0byBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlID0gY2FuZGlkYXRlU2Vzc2lv
bnMuZmlyc3QoKTsKLSAgICBpZiAoIXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuaXNWaXNpYmxl
SW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAmJiAhc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5pc1Bs
YXlpbmdBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5D
b250ZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzdHJvbmdlc3RT
ZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Ci19Ci0KIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKQEAgLTY0Myw2ICs2MTksMzMg
QEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIHVwZGF0ZVBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCk7CiB9CiAKK0hUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRpYUVs
ZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIo
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkKK3sK
KyAgICBhdXRvIGFsbFNlc3Npb25zID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb25zTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVk
aWFTZXNzaW9uJiBzZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBpczxNZWRpYUVsZW1lbnRTZXNz
aW9uPihzZXNzaW9uKTsKKyAgICB9KTsKKworICAgIFZlY3RvcjxNZWRpYUVsZW1lbnRTZXNzaW9u
SW5mbz4gY2FuZGlkYXRlU2Vzc2lvbnM7CisgICAgYm9vbCBhdExlYXN0T25lTm9uQ2FuZGlkYXRl
TWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzZXNz
aW9uIDogYWxsU2Vzc2lvbnMpIHsKKyAgICAgICAgYXV0byBtZWRpYUVsZW1lbnRTZXNzaW9uSW5m
byA9IG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihkb3duY2FzdDxNZWRpYUVsZW1l
bnRTZXNzaW9uPigqc2Vzc2lvbiksIHB1cnBvc2UpOworICAgICAgICBpZiAobWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgICAgIGNhbmRpZGF0
ZVNlc3Npb25zLmFwcGVuZChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyk7CisgICAgICAgIGVsc2Ug
aWYgKG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQobWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8sIHB1cnBvc2UpKQorICAgICAgICAgICAgYXRMZWFzdE9uZU5vbkNhbmRpZGF0
ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFj
YW5kaWRhdGVTZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
c3RkOjpzb3J0KGNhbmRpZGF0ZVNlc3Npb25zLmJlZ2luKCksIGNhbmRpZGF0ZVNlc3Npb25zLmVu
ZCgpLCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRp
ZGF0ZVNlc3Npb24pOworICAgIGF1dG8gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZSA9IGNhbmRp
ZGF0ZVNlc3Npb25zLmZpcnN0KCk7CisgICAgaWYgKCFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRl
LmlzVmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3JlZW4gJiYgIXN0cm9uZ2VzdFNlc3Npb25DYW5k
aWRhdGUuaXNQbGF5aW5nQXVkaW8gJiYgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVz
ZWRGb3JNYWluQ29udGVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
JnN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuc2Vzc2lvbi0+ZWxlbWVudCgpOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBtX21lZGlhU2Vzc2lvbi0+cmVnaXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQp
OwpAQCAtNzMxNiw4ICs3MzE5LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBF
bnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgaGVyZSBzaG91bGQgYmUgdXAgdG8gZGF0ZS4KLSAgICBp
ZiAoYXV0byBiZXN0TWVkaWFTZXNzaW9uID0gYmVzdE1lZGlhU2Vzc2lvbkZvclNob3dpbmdQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5z
ZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGJlc3RNZWRpYVNlc3Npb24tPmVsZW1lbnQoKSk7
CisgICAgaWYgKGF1dG8gYmVzdE1lZGlhRWxlbWVudCA9IGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93
aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tD
b250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlcikpCisgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoKmJlc3RNZWRpYUVsZW1lbnQp
OwogICAgIGVsc2UKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCBjOWNiNmE4NWIyZGM2MzEyNGUzYjcxMjljMGU0MmZiN2NjMWIwNDdiLi43Y2QwZmYz
Yjc2OGFiMzMyNWIyN2M1YjAzMmE3YWI3YTAwZWY4MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtMTE1LDYgKzExNSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiYgYWxsTWVkaWFFbGVtZW50cygpOwogCisgICAg
c3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJh
Y2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1
cnBvc2UpOworCiAgICAgdm9pZCByZXdpbmQoZG91YmxlIHRpbWVEZWx0YSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDUwZmI3ZTEzOWIxNTE5YWRl
OTVjZTljODQ3YzFiZDVjZDJiNjNiMTYuLmQxOTFiODkzNDkxMjllMzY0ZGU0YWI4NjUzMWQ0MDI5
NmY0YjdhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93
c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFu
YWdlcigpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01h
bmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkgY29uc3QKIHsKICAgICBpZiAo
bV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMg
ZnVsbHNjcmVlbiIpOwpAQCAtMjI4LDcgKzIyOCw4IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIW1fZWxlbWVudC5oYXNBdWRpbygpICYmICFtX2VsZW1lbnQuaGFz
RXZlckhhZEF1ZGlvKCkpIHsKKyAgICBib29sIG1lZXRzQXVkaW9UcmFja1JlcXVpcmVtZW50cyA9
IG1fZWxlbWVudC5oYXNBdWRpbygpIHx8IChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJw
b3NlOjpDb250cm9sc01hbmFnZXIgJiYgbV9lbGVtZW50Lmhhc0V2ZXJIYWRBdWRpbygpKTsKKyAg
ICBpZiAoIW1lZXRzQXVkaW9UcmFja1JlcXVpcmVtZW50cykgewogICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5n
IEZBTFNFOiBObyBhdWRpbyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjc0
LDcgKzI3NSw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFu
YWdlcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZWxlbWVudC5oYXNWaWRlbygpICYmICFtX2VsZW1lbnQuaGFzRXZlckhhZFZp
ZGVvKCkpIHsKKyAgICAgICAgaWYgKHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6
OkNvbnRyb2xzTWFuYWdlciAmJiAhbV9lbGVtZW50Lmhhc1ZpZGVvKCkgJiYgIW1fZWxlbWVudC5o
YXNFdmVySGFkVmlkZW8oKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50
U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlk
ZW8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA4MzNmZTZhMTZlNzViYWU4N2E0NTRj
OTAwYWZjNTQwMTZkNDA2NzdlLi41NThmZGUyYWNjMWE1YzI4YWQyY2MwNDcxZTY4ZTMyMjVhOWEz
ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMTE4
LDcgKzExOCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2FudHNUb09ic2VydmVWaWV3cG9ydFZp
c2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3Q7CiAgICAgYm9vbCB3YW50c1RvT2JzZXJ2
ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkgY29uc3Q7Ci0gICAgYm9vbCBjYW5TaG93
Q29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIFBsYXliYWNrQ29udHJv
bHNQdXJwb3NlIHsgQ29udHJvbHNNYW5hZ2VyLCBOb3dQbGF5aW5nIH07CisgICAgYm9vbCBjYW5T
aG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlKSBjb25zdDsKICAgICBi
b29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChNZWRpYVNlc3Npb25NYWluQ29udGVudFB1
cnBvc2UpIGNvbnN0OwogICAgIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGM3YTgxNmVmMDViMDFhYTdmYWRi
MGM3MmVmYzg0MzkxMTIxM2U3NjQuLjY0ZWU2MWUxNmYyZDdkNGMwMDMxODIyMWYyZDY4NzNmMjcz
OGQxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCwgcHJpdmF0ZQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIqIHNoYXJlZE1hbmFnZXJJZkV4aXN0cygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1h
bmFnZXIoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMoYm9vbCk7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgflBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcigpIHsgfQogCiAgICAgYm9vbCBoYXMo
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFj
Lm1tCmluZGV4IDQyMGU4ZWJlNjUwZGI1MmJjODk1MDQ1ZTA1NDNiYmFiN2EzNjJhNmIuLmRiYTIy
ZmQ1YTMwNmJmZGM0YWJmOGE1YTI2MGE3YjNiNjJjNDQ0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFj
Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxh
eWVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgpAQCAtMzksNiArNDAsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMqIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IG51
bGxwdHI7CitzdGF0aWMgYm9vbCBnQWxsb3dzTm93UGxheWluZ0NvbnRyb2xzID0gdHJ1ZTsKIAog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKQogewpAQCAtNTIsNiArNTQsMTQgQEAgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4
aXN0cygKICAgICByZXR1cm4gcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogfQogCit2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
KGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKQoreworICAgIGdBbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHMgPSBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHM7CisKKyAgICBpZiAoYXV0byBleGlz
dGluZ01hbmFnZXIgPSAoTWVkaWFTZXNzaW9uTWFuYWdlck1hYyAqKVBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIGV4aXN0aW5nTWFu
YWdlci0+dXBkYXRlTm93UGxheWluZ0luZm8oKTsKK30KKwogTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yzo6TWVkaWFTZXNzaW9uTWFuYWdlck1hYygpCiAgICAgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIoKQogewpAQCAtOTQsMTQgKzEwNCwxMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWM6OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKQog
CiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6bm93UGxheWlu
Z0VsaWdpYmxlU2Vzc2lvbigpCiB7Ci0gICAgZm9yIChhdXRvIHNlc3Npb24gOiBzZXNzaW9ucygp
KSB7Ci0gICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSA9IHNlc3Np
b24tPm1lZGlhVHlwZSgpOwotICAgICAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6VmlkZW8gJiYgdHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pCi0gICAgICAg
ICAgICBjb250aW51ZTsKKyAgICBpZiAoIWdBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGlmIChzZXNzaW9uLT5jaGFyYWN0ZXJpc3Rp
Y3MoKSAmIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpIYXNBdWRpbykKLSAgICAgICAgICAgIHJldHVy
biBzZXNzaW9uOwotICAgIH0KKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCAqZWxlbWVudCA9IEhU
TUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9s
c01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5v
d1BsYXlpbmcpKQorICAgICAgICByZXR1cm4gJmVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpOwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xMjIsNiArMTI5LDkgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgICAgICAgICBMT0coTWVk
aWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyAtIGNsZWFy
aW5nIG5vdyBwbGF5aW5nIGluZm8iKTsKICAgICAgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQ
bGF5aW5nSW5mbyhudWxscHRyKTsKICAgICAgICAgICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGZh
bHNlOworICAgICAgICAgICAgbV9yZXBvcnRlZFRpdGxlID0gIiI7CisgICAgICAgICAgICBtX3Jl
cG9ydGVkUmF0ZSA9IDA7CisgICAgICAgICAgICBtX3JlcG9ydGVkRHVyYXRpb24gPSAwOwogICAg
ICAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3Rh
dGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3Rh
dGVTdG9wcGVkLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJv
ciBlcnJvcikgewogI2lmIExPR19ESVNBQkxFRAogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CkBAIC0xNDMsNiArMTUzLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
Ojp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgZG91YmxlIGR1cmF0aW9uID0gY3VycmVudFNl
c3Npb24tPmR1cmF0aW9uKCk7CiAgICAgZG91YmxlIHJhdGUgPSBjdXJyZW50U2Vzc2lvbi0+c3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IDEgOiAwOwogICAgIGlmICht
X3JlcG9ydGVkVGl0bGUgPT0gdGl0bGUgJiYgbV9yZXBvcnRlZFJhdGUgPT0gcmF0ZSAmJiBtX3Jl
cG9ydGVkRHVyYXRpb24gPT0gZHVyYXRpb24pIHsKKyAgICAgICAgbV9ub3dQbGF5aW5nQWN0aXZl
ID0gdHJ1ZTsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBk
YXRlTm93UGxheWluZ0luZm8gLSBub3RoaW5nIG5ldyB0byBzaG93Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaApp
bmRleCAxOTkzYjlhZTRmNjA1YzQwZTgwZDQ2MTBjNjZmNjQ1Yzc1YTJhNjU2Li42MjVhMThkMzVk
ZDY3MjgwMTkyYzM0ZTc3ZDRhZjFmMjUwNjMwNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tWaWV3LmgKQEAgLTU0LDYgKzU0LDggQEAgV0tfRVhQT1JUCiBAcHJv
cGVydHkgQk9PTCBkcmF3c0JhY2tncm91bmQ7CiBAcHJvcGVydHkgQk9PTCBkcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZDsKIAorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzTm93UGxh
eWluZ0NvbnRyb2xzOworCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDFmOTAzZWU3ZDZiNzI5NmM0OWRjOTBlOTlmNGVhYzgy
OGE2YzRkM2UuLmM1NGQ5YTYxMjgxYzM4YjBjMTk4YTFhMzgxMzg0NjQ3OGRjYWFiZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTg1Myw2ICs4NTMs
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQ
b29sOihXZWJQcm9jZXNzUG9vbCYpcHJvY2VzcwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEg
YWxsb2NdIGluaXRdOwogICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmll
d0ltcGw+KHNlbGYsIHdlYlZpZXcsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKKyAgICBfYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzID0gWUVTOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC05NzcsNiArOTc4LDE1IEBAIC0gKHZvaWQpX2RpZFVwZGF0ZUNhbmRpZGF0ZUxp
c3RWaXNpYmlsaXR5OihCT09MKXZpc2libGUKIHsKIH0KIAorLSAodm9pZClzZXRBbGxvd3NOb3dQ
bGF5aW5nQ29udHJvbHM6KEJPT0wpYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzCit7CisgICAgaWYg
KF9hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMgPT0gYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBfYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzID0gYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzOworICAgIF9kYXRhLT5faW1wbC0+c2V0QWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzKGFsbG93c05vd1BsYXlpbmdDb250cm9scyk7Cit9CisKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNTVjNmNjZTAyNTFjODM2ZDAyZDVmZjY5MDNkYmI3Njhi
OWExMzA0Zi4uMDY2NzdhODMxMzY5NmZiODk0YmZjNDhlNDhjYzRhMTg1N2NjZDBjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTQwMiw2ICs0
MDIsOSBAQCBwdWJsaWM6CiAgICAgTlNBcnJheSAqbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVk
QXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbmF0aW9uKTsKIAogICAgIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9p
ZCBzZXRBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMoYm9vbCk7CisjZW5kaWYKICAgICB2b2lkIHNh
dmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW0oKTsKICAgICB2b2lkIHNhdmVCYWNr
Rm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA4YWUzNmJl
MWY1Y2JiNWI1NTFiODQ2YTE5OTc1ZWI0OTQ3ODk4MWE1Li4zMTBiZThlNDAxNzI4NTMyZDBlMTQx
OWZlMTk5NjQ2ZGVmZGVlOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC0zMTgwLDYgKzMxODAsMTUgQEAgUmVmUHRyPFZpZXdTbmFwc2hv
dD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIHJldHVybiBWaWV3U25hcHNo
b3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKKwor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKGJvb2wgYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzKQoreworICAgIG1fcGFnZS0+c2V0QWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzKGFsbG93c05vd1BsYXlpbmdDb250cm9scyk7Cit9CisKKyNlbmRpZgorCiB2b2lkIFdl
YlZpZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtKCkKIHsKICAg
ICBtX3BhZ2UtPnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5YTZjZTQ1MDJiNTRhN2FkZDAyOTdkZDNjM2Ey
ZTZjYTZiNjE4NzQ3Li40NGU0OWE3NGI4OWFlNGRhM2Q4YmQ5Yjg2OWNlMTgyNDY2MjE5MDlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM2NSw2ICs2
MzY1LDExIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxs
c2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnNldEFsbG93c05vd1BsYXlpbmdDb250cm9scyhib29sIGFsbG93c05vd1BsYXlp
bmdDb250cm9scykKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEFsbG93c05vd1BsYXlpbmdDb250cm9scyhhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMpLCBtX3Bh
Z2VJRCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlhODBjZDQyNTk0N2Y1ZDQwODcyMTY2
YWU4NTRjNTNjZTkzODBiNzkuLjgzYmY3MmE3MDJmNWZiMDI3ODczMzY1ZWY4YTA5YTBlZWM2Mjkz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEwMzYsNiAr
MTAzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkg
Y29uc3Q7CiAgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2Ny
ZWVuKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMoYm9vbCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWZkMzM2M2I4M2ZiMjlkMzM3ODg0MDY1
ODY4NWNkODYxNTg4MTI0MS4uZTllMjU0ZTc4YzgwYWI5OWQ1YjJhMDVlNTViY2YwMDE0NzBkM2Rh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02
ODIsNiArNjgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2Us
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwogICAg
IHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRBbGxvd3NOb3dQbGF5aW5nQ29u
dHJvbHMoYm9vbCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9vbCYgcmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNTExNjdhZWEzZjYyOWY2MWY1YWJjYTg2ODBiOTFhNmY0MGQ4ODY0OS4uYjE1
NDU1ZmNlMWExNzRiNmEyNTMwODVkMzFmMDVhNTJjNjMzMjQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQx
Nyw2ICs0MTcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBE
YXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUkoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5
SUQgcGFnZU92ZXJsYXkpCiAgICAgRGF0YURldGVjdG9yc0RpZEhpZGVVSShXZWJDb3JlOjpQYWdl
T3ZlcmxheTo6UGFnZU92ZXJsYXlJRCBwYWdlT3ZlcmxheSkKICAgICBIYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZShzdHJ1Y3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IGFjY2VwdGVkQ2FuZGlk
YXRlKQorICAgIFNldEFsbG93c05vd1BsYXlpbmdDb250cm9scyhib29sIGFsbG93c05vd1BsYXlp
bmdDb250cm9scykKICNlbmRpZgogCiAgICAgU2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDY5ZGEyMzIwYzNlZDEyMjA2NDc1OTA4NWJjNThkMjgwY2QwNWFkYTkuLmE4MzI0NWIzZTQwNWVi
MmE4ODNmNTI2MmVlODc4YmIyYjQxNjUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRy
b2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgpAQCAtMzgyLDYgKzM4MywxMSBAQCB2
b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIH0K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvbnRBdFNlbGVjdGlvbkNhbGxiYWNr
KGZvbnROYW1lLCBmb250U2l6ZSwgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cywgY2FsbGJhY2tJ
RCkpOwogfQorCit2b2lkIFdlYlBhZ2U6OnNldEFsbG93c05vd1BsYXlpbmdDb250cm9scyhib29s
IGFsbG93c05vd1BsYXlpbmdDb250cm9scykKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldEFsbG93c05vd1BsYXlpbmdDb250cm9scyhhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHMpOworfQogICAgIAogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289666</attachid>
            <date>2016-09-22 23:49:02 -0700</date>
            <delta_ts>2016-09-23 10:01:42 -0700</delta_ts>
            <desc>Refactored to use Page visibility hooks.</desc>
            <filename>bug-162480-20160922234611.patch</filename>
            <type>text/plain</type>
            <size>19147</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2MjAyMGNmZGJlNzQ5
NGUzZmYyNjM0MGY1YzVmNDk1MDdjZjhmYi4uMmE3NmU1MjA4YmM3NzkwMDE0MWE0ZTdjOWFiYWE3
YjExYzI4NzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA5LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSBuZWVkcyB0byBob25vciB0
aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODQzMDYx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uIHRvIHVz
ZSBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyCisgICAg
ICAgIGFuZCBhbHNvIGVhcmx5IHJldHVybiBudWxscHRyIGlmIHRoZSBjdXJyZW50IHRhYiB0aGUg
d2ViIHByb2Nlc3MgaXMgaG9zdGVkIGluIGlzIHRoZSBhY3RpdmUgdGFiLCBhbmQgdGhlIHdpbmRv
dworICAgICAgICBpdCBpcyBob3N0ZWQgaW4gaXMgdGhlIG1haW4gd2luZG93LiBUaGlzIGluZm9y
bWF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgdmlld1N0YXRlIGZsYWdzIGluIHRoZSBQYWdlIG9m
IGVhY2gKKyAgICAgICAgdGFiIC0tIHdoZW5ldmVyIHRoZSAodmlzaWJsZSAmJiBhY3RpdmUpIHN0
YXRlIGNoYW5nZXMsIHRoZSBQYWdlIHVwZGF0ZXMgYSBnbG9iYWwgZmxhZyBvbiB0aGUKKyAgICAg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLgorCisgICAgICAgIEFsc28gYWRkcyBzb21l
IHNsaWdodCBhZGp1c3RtZW50cyB0byBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQ
bGF5aW5nSW5mbywgc28gd2UgcmVzZXQgdGhlIHRpdGxlLCByYXRlCisgICAgICAgIGFuZCBkdXJh
dGlvbiBvZiB0aGUgY3VycmVudCBhY3RpdmUgc2Vzc2lvbiB3aGVuIGNsZWFyaW5nIG91dCB0aGUg
bm93IHBsYXlpbmcgaW5mby4gTGlrZXdpc2UsIHdoZW4gdmVuZGluZyBhbgorICAgICAgICBhY3Rp
dmUgdmlkZW8sIGlmIHRoZSB2aWRlbyBpbmZvcm1hdGlvbiBtYXRjaGVzIHRoYXQgb2YgdGhlIGN1
cnJlbnQgc2Vzc2lvbiwgd2UgbWFyayBtX25vd1BsYXlpbmdBY3RpdmUgYW55d2F5cy4KKyAgICAg
ICAgVGhlc2UgdHdlYWtzIHByZXZlbnQgdXMgZnJvbSBnZXR0aW5nIGluIGEgYmFkIHN0YXRlIHdo
ZW4gc3dpdGNoaW5nIGJldHdlZW4gYSB0YWIgd2l0aCBtZWRpYSBhbmQgb25lIHdpdGhvdXQuCisK
KyAgICAgICAgVW5pdCB0ZXN0cyB0byBjb21lIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRWxl
bWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVNlc3Np
b25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01h
bmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJh
Y2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlhU2Vzc2lvbkZv
clNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250
cm9sc01hbmFnZXIpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAg
ICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
Q29udHJvbGxlcjo6c2V0Vmlld1N0YXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6dmlzaWJsZUFuZEFjdGl2ZURpZENoYW5nZSk6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdF
bGlnaWJsZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlck1h
Yzo6dXBkYXRlTm93UGxheWluZ0luZm8pOgorCiAyMDE2LTA5LTIxICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCBmb3IgZnV0dXJlIHZl
cnNpb25zIG9mIENsYW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOTU4ZTVmNDZlYmZiNzFiN2JiMThiZWZkMWM2ZjcyYTg0OGE3MDc3ZS4uY2RhNWEzYzJi
MjkyZjUzN2NkZTZiMTg3NmRkMDZkNWY5MWQ2ZTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNTgsMTMgKzM1OCwxMyBAQCBzdHJ1Y3QgTWVkaWFFbGVt
ZW50U2Vzc2lvbkluZm8gewogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gOiAxOwogfTsKIAotc3Rh
dGljIE1lZGlhRWxlbWVudFNlc3Npb25JbmZvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vz
c2lvbihjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9uJiBzZXNzaW9uKQorc3RhdGljIE1lZGlhRWxl
bWVudFNlc3Npb25JbmZvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihjb25zdCBN
ZWRpYUVsZW1lbnRTZXNzaW9uJiBzZXNzaW9uLCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFj
a0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKQogewogICAgIGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQgPSBzZXNzaW9uLmVsZW1lbnQoKTsKICAgICByZXR1cm4gewogICAgICAgICAmc2Vz
c2lvbiwKICAgICAgICAgc2Vzc2lvbi5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgpLAot
ICAgICAgICBzZXNzaW9uLmNhblNob3dDb250cm9sc01hbmFnZXIoKSwKKyAgICAgICAgc2Vzc2lv
bi5jYW5TaG93Q29udHJvbHNNYW5hZ2VyKHB1cnBvc2UpLAogICAgICAgICBlbGVtZW50LmlzRnVs
bHNjcmVlbigpIHx8IGVsZW1lbnQuaXNWaXNpYmxlSW5WaWV3cG9ydCgpLAogICAgICAgICBzZXNz
aW9uLmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChNZWRpYVNlc3Npb25NYWluQ29udGVudFB1
cnBvc2U6Ok1lZGlhQ29udHJvbHMpLAogICAgICAgICBlbGVtZW50LmlzUGxheWluZygpICYmIGVs
ZW1lbnQuaGFzQXVkaW8oKSAmJiAhZWxlbWVudC5tdXRlZCgpCkBAIC0zODEsOCArMzgxLDExIEBA
IHN0YXRpYyBib29sIHByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90
aGVyQ2FuZGlkYXRlU2Vzc2lvbihjb25zCiAgICAgcmV0dXJuIHNlc3Npb24udGltZU9mTGFzdFVz
ZXJJbnRlcmFjdGlvbiA+IG90aGVyU2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uOwog
fQogCi1zdGF0aWMgYm9vbCBtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50
KGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb25JbmZvJiBzZXNzaW9uKQorc3RhdGljIGJvb2wgbWVk
aWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudChjb25zdCBNZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mbyYgc2Vzc2lvbiwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9s
c1B1cnBvc2UgcHVycG9zZSkKIHsKKyAgICBpZiAocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZykKKyAgICAgICAgcmV0dXJu
IHNlc3Npb24uaXNQbGF5aW5nQXVkaW87CisKICAgICBpZiAoIXNlc3Npb24uaXNWaXNpYmxlSW5W
aWV3cG9ydE9yRnVsbHNjcmVlbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zOTQsMzMg
KzM5Nyw2IEBAIHN0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNv
bnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9uKiBiZXN0TWVkaWFTZXNzaW9uRm9yU2hv
d2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKLXsKLSAgICBhdXRvIGFsbFNlc3Npb25zID0g
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Np
b25zTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSB7Ci0g
ICAgICAgIHJldHVybiBpczxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKTsKLSAgICB9KTsK
LQotICAgIFZlY3RvcjxNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbz4gY2FuZGlkYXRlU2Vzc2lvbnM7
Ci0gICAgYm9vbCBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250
ZW50ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogYWxsU2Vzc2lvbnMpIHsKLSAg
ICAgICAgYXV0byBtZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyA9IG1lZGlhRWxlbWVudFNlc3Npb25J
bmZvRm9yU2Vzc2lvbihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPigqc2Vzc2lvbikpOwot
ICAgICAgICBpZiAobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFuYWdl
cikKLSAgICAgICAgICAgIGNhbmRpZGF0ZVNlc3Npb25zLmFwcGVuZChtZWRpYUVsZW1lbnRTZXNz
aW9uSW5mbyk7Ci0gICAgICAgIGVsc2UgaWYgKG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRo
TWFpbkNvbnRlbnQobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8pKQotICAgICAgICAgICAgYXRMZWFz
dE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKCFjYW5kaWRhdGVTZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgc3RkOjpzb3J0KGNhbmRpZGF0ZVNlc3Npb25zLmJlZ2luKCksIGNhbmRp
ZGF0ZVNlc3Npb25zLmVuZCgpLCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lv
bk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Npb24pOwotICAgIGF1dG8gc3Ryb25nZXN0U2Vzc2lvbkNh
bmRpZGF0ZSA9IGNhbmRpZGF0ZVNlc3Npb25zLmZpcnN0KCk7Ci0gICAgaWYgKCFzdHJvbmdlc3RT
ZXNzaW9uQ2FuZGlkYXRlLmlzVmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3JlZW4gJiYgIXN0cm9u
Z2VzdFNlc3Npb25DYW5kaWRhdGUuaXNQbGF5aW5nQXVkaW8gJiYgYXRMZWFzdE9uZU5vbkNhbmRp
ZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5zZXNzaW9uOwotfQotCiBI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmZG9j
dW1lbnQpCkBAIC02NDMsNiArNjE5LDMzIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KCkKICAgICB1cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogfQogCitIVE1M
TWVkaWFFbGVtZW50KiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2lu
Z1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29u
dHJvbHNQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgYXV0byBhbGxTZXNzaW9ucyA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRTZXNzaW9uc01hdGNo
aW5nKFtdIChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgeworICAgICAgICBy
ZXR1cm4gaXM8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbik7CisgICAgfSk7CisKKyAgICBW
ZWN0b3I8TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8+IGNhbmRpZGF0ZVNlc3Npb25zOworICAgIGJv
b2wgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IGZh
bHNlOworICAgIGZvciAoYXV0byYgc2Vzc2lvbiA6IGFsbFNlc3Npb25zKSB7CisgICAgICAgIGF1
dG8gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gPSBtZWRpYUVsZW1lbnRTZXNzaW9uSW5mb0ZvclNl
c3Npb24oZG93bmNhc3Q8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnNlc3Npb24pLCBwdXJwb3NlKTsK
KyAgICAgICAgaWYgKG1lZGlhRWxlbWVudFNlc3Npb25JbmZvLmNhblNob3dDb250cm9sc01hbmFn
ZXIpCisgICAgICAgICAgICBjYW5kaWRhdGVTZXNzaW9ucy5hcHBlbmQobWVkaWFFbGVtZW50U2Vz
c2lvbkluZm8pOworICAgICAgICBlbHNlIGlmIChtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0
aE1haW5Db250ZW50KG1lZGlhRWxlbWVudFNlc3Npb25JbmZvLCBwdXJwb3NlKSkKKyAgICAgICAg
ICAgIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQgPSB0
cnVlOworICAgIH0KKworICAgIGlmICghY2FuZGlkYXRlU2Vzc2lvbnMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6c29ydChjYW5kaWRhdGVTZXNzaW9ucy5iZWdp
bigpLCBjYW5kaWRhdGVTZXNzaW9ucy5lbmQoKSwgcHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRp
ZGF0ZVNlc3Npb25PdmVyT3RoZXJDYW5kaWRhdGVTZXNzaW9uKTsKKyAgICBhdXRvIHN0cm9uZ2Vz
dFNlc3Npb25DYW5kaWRhdGUgPSBjYW5kaWRhdGVTZXNzaW9ucy5maXJzdCgpOworICAgIGlmICgh
c3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVu
ICYmICFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLmlzUGxheWluZ0F1ZGlvICYmIGF0TGVhc3RP
bmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuICZzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Np
b24tPmVsZW1lbnQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhE
b2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgbV9tZWRpYVNlc3Npb24tPnJlZ2lz
dGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKQEAgLTczMTYsOCArNzMxOSw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogRW5zdXJlIHRoYXQgdGhlIHJlbmRlcmVyIGhlcmUgc2hv
dWxkIGJlIHVwIHRvIGRhdGUuCi0gICAgaWYgKGF1dG8gYmVzdE1lZGlhU2Vzc2lvbiA9IGJlc3RN
ZWRpYVNlc3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSkKLSAgICAgICAg
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihiZXN0
TWVkaWFTZXNzaW9uLT5lbGVtZW50KCkpOworICAgIGlmIChhdXRvIGJlc3RNZWRpYUVsZW1lbnQg
PSBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlh
RWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIp
KQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCpiZXN0TWVkaWFFbGVtZW50KTsKICAgICBlbHNlCiAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYzljYjZhODViMmRjNjMxMjRlM2I3MTI5
YzBlNDJmYjdjYzFiMDQ3Yi4uN2NkMGZmM2I3NjhhYjMzMjViMjdjNWIwMzJhN2FiN2EwMGVmODBh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTExNSw2ICsxMTUs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4mIGFs
bE1lZGlhRWxlbWVudHMoKTsKIAorICAgIHN0YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBiZXN0TWVk
aWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNl
c3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlKTsKKwogICAgIHZvaWQgcmV3aW5kKGRvdWJs
ZSB0aW1lRGVsdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAppbmRleCA1MGZiN2UxMzliMTUxOWFkZTk1Y2U5Yzg0N2MxYmQ1Y2QyYjYzYjE2Li5kMTkxYjg5
MzQ5MTI5ZTM2NGRlNGFiODY1MzFkNDAyOTZmNGI3YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRN
TE1lZGlhRWxlbWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1
cnBvc2UpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWxlbWVudC5pc0Z1bGxzY3JlZW4oKSkgewogICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5h
Z2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIGZ1bGxzY3JlZW4iKTsKQEAgLTIyOCw3ICsyMjgsOCBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25z
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2VsZW1lbnQuaGFz
QXVkaW8oKSAmJiAhbV9lbGVtZW50Lmhhc0V2ZXJIYWRBdWRpbygpKSB7CisgICAgYm9vbCBtZWV0
c0F1ZGlvVHJhY2tSZXF1aXJlbWVudHMgPSBtX2VsZW1lbnQuaGFzQXVkaW8oKSB8fCAocHVycG9z
ZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyICYmIG1fZWxlbWVu
dC5oYXNFdmVySGFkQXVkaW8oKSk7CisgICAgaWYgKCFtZWV0c0F1ZGlvVHJhY2tSZXF1aXJlbWVu
dHMpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0Nv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gYXVkaW8iKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTI3NCw3ICsyNzUsNyBAQCBib29sIE1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtX2VsZW1lbnQuaGFzVmlkZW8oKSAm
JiAhbV9lbGVtZW50Lmhhc0V2ZXJIYWRWaWRlbygpKSB7CisgICAgICAgIGlmIChwdXJwb3NlID09
IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIgJiYgIW1fZWxlbWVudC5o
YXNWaWRlbygpICYmICFtX2VsZW1lbnQuaGFzRXZlckhhZFZpZGVvKCkpIHsKICAgICAgICAgICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIg
LSByZXR1cm5pbmcgRkFMU0U6IE5vIHZpZGVvIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5k
ZXggODMzZmU2YTE2ZTc1YmFlODdhNDU0YzkwMGFmYzU0MDE2ZDQwNjc3ZS4uNTU4ZmRlMmFjYzFh
NWMyOGFkMmNjMDQ3MWU2OGUzMjI1YTlhM2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmgKQEAgLTExOCw3ICsxMTgsOSBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yTWVkaWFDb250cm9scygpIGNvbnN0
OwogICAgIGJvb2wgd2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JBdXRvcGxheSgp
IGNvbnN0OwotICAgIGJvb2wgY2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0OworCisgICAg
ZW51bSBjbGFzcyBQbGF5YmFja0NvbnRyb2xzUHVycG9zZSB7IENvbnRyb2xzTWFuYWdlciwgTm93
UGxheWluZyB9OworICAgIGJvb2wgY2FuU2hvd0NvbnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRy
b2xzUHVycG9zZSkgY29uc3Q7CiAgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
TWVkaWFTZXNzaW9uTWFpbkNvbnRlbnRQdXJwb3NlKSBjb25zdDsKICAgICBkb3VibGUgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCmluZGV4IDM0YjdjNjNlYTdmMjkyYzVjNWM1MTk1YzNkYTFlZWU0OTRh
OTcwNWMuLjMwMDExNTU2MGRlYWJlYmJiNjcxM2EyYjI0NmU5MDM1NTdkN2MwYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTgyOCw3ICs4MjgsMTMgQEAgYm9v
bCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFBh
c3NSZWZQdHI8RnJhbWU+IG5ld0YKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUo
Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCiB7CiAgICAgVmlld1N0YXRlOjpGbGFncyBjaGFu
Z2VkID0gbV92aWV3U3RhdGUgXiB2aWV3U3RhdGU7CisKKyAgICBib29sIHdhc1Zpc2libGVBbmRB
Y3RpdmUgPSBpc0FjdGl2ZSgpICYmIGNvbnRlbnRJc1Zpc2libGUoKTsKICAgICBtX3ZpZXdTdGF0
ZSA9IHZpZXdTdGF0ZTsKKyAgICBib29sIGlzVmlzaWJsZUFuZEFjdGl2ZSA9IGlzQWN0aXZlKCkg
JiYgY29udGVudElzVmlzaWJsZSgpOworCisgICAgaWYgKGlzVmlzaWJsZUFuZEFjdGl2ZSAhPSB3
YXNWaXNpYmxlQW5kQWN0aXZlKQorICAgICAgICBtX3BhZ2UudmlzaWJsZUFuZEFjdGl2ZURpZENo
YW5nZShpc1Zpc2libGVBbmRBY3RpdmUpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6
OklzRm9jdXNlZCkKICAgICAgICAgc2V0Rm9jdXNlZEludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdT
dGF0ZTo6SXNGb2N1c2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMwMTg3YTQ3M2ZlZjY5YTZl
NTBjZTgzMDZiNDZmMDMyYzk0ZmRjNGMuLjNhZDQyYzlmNjI5MDIxYTI1ZmRhZTljOTFiY2MyNzhk
ZTRhYTE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUg
IlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgi
CiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCkBAIC0xNDY2LDYgKzE0NjcsMTEgQEAg
dm9pZCBQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCiAgICAg
ICAgIG9ic2VydmVyLT52aWV3U3RhdGVEaWRDaGFuZ2Uob2xkVmlld1N0YXRlLCBtX3ZpZXdTdGF0
ZSk7CiB9CiAKK3ZvaWQgUGFnZTo6dmlzaWJsZUFuZEFjdGl2ZURpZENoYW5nZShib29sIGlzVmlz
aWJsZUFuZEFjdGl2ZSkKK3sKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEFs
bG93c05vd1BsYXlpbmdDb250cm9scyghaXNWaXNpYmxlQW5kQWN0aXZlKTsKK30KKwogdm9pZCBQ
YWdlOjpzZXRQYWdlQWN0aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZp
dHlTdGF0ZSkKIHsKICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRQYWdlQWN0aXZpdHlTdGF0ZShh
Y3Rpdml0eVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTc1M2Y3NDZhZGQ1MTc1MzllNTYyN2Vj
YTY2MDU4YzAyNWZkMDM0Mi4uNjIwNGMzODI3ZDMwYTgzMTgyMzcyNThiNWY1NjMxMmI2YWM2NzNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBO
b3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBiZWluZyBwcmVzZW50
ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdT
dGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKKyAgICB2b2lkIHZpc2libGVBbmRBY3RpdmVEaWRDaGFu
Z2UoYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUpOwogICAgIHZvaWQgc2V0UGFnZUFjdGl2aXR5U3Rh
dGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dElzVmlzaWJsZShib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCA5NzVmYzUwZTJmYTMyYjczMjRmZTU3
MTQwM2UxMWY2MjFjYmQ5NTU2Li5lMDhhNGFlMjQ5Nzc4Y2UyZDRkZWQxMjJmZTBhNzA0NWFiMmE0
YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTM2LDcgKzM2LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShNQUMp
CisjaWYgIVBMQVRGT1JNKE1BQykKKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldEFsbG93c05vd1BsYXlpbmdDb250cm9scyhib29sKQoreworfQorCisjaWYgIVBMQVRGT1JN
KElPUykKIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIqIHBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYg
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKQEAgLTUwLDcgKzU2
LDkgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygKIHsKICAgICByZXR1cm4gcGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOwogfQotI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKwor
I2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKCkKICAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5l
cihTeXN0ZW1TbGVlcExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aAppbmRleCBjN2E4MTZlZjA1YjAxYWE3ZmFkYjBjNzJlZmM4NDM5MTEyMTNlNzY0Li5mZmZmNjcy
NjIyZDE4OTc3NWE4MzU3MDQwZGQ0ODY0NTk0NzE2NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aApAQCAtNDYsNiArNDYsOSBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBw
cml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZQogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIqIHNoYXJl
ZE1hbmFnZXJJZkV4aXN0cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKKworICAgIHN0YXRpYyB2b2lkIHNl
dEFsbG93c05vd1BsYXlpbmdDb250cm9scyhib29sKTsKKwogICAgIHZpcnR1YWwgflBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcigpIHsgfQogCiAgICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCmluZGV4IDQyMGU4
ZWJlNjUwZGI1MmJjODk1MDQ1ZTA1NDNiYmFiN2EzNjJhNmIuLmRiYTIyZmQ1YTMwNmJmZGM0YWJm
OGE1YTI2MGE3YjNiNjJjNDQ0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgpAQCAtMzksNiArNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMqIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CitzdGF0aWMg
Ym9vbCBnQWxsb3dzTm93UGxheWluZ0NvbnRyb2xzID0gdHJ1ZTsKIAogUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KQogewpAQCAtNTIsNiArNTQsMTQgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygKICAgICByZXR1
cm4gcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2V0QWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKGJvb2wgYWxsb3dzTm93
UGxheWluZ0NvbnRyb2xzKQoreworICAgIGdBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMgPSBhbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHM7CisKKyAgICBpZiAoYXV0byBleGlzdGluZ01hbmFnZXIgPSAo
TWVkaWFTZXNzaW9uTWFuYWdlck1hYyAqKVBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIGV4aXN0aW5nTWFuYWdlci0+dXBkYXRlTm93
UGxheWluZ0luZm8oKTsKK30KKwogTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6TWVkaWFTZXNzaW9u
TWFuYWdlck1hYygpCiAgICAgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogewpAQCAt
OTQsMTQgKzEwNCwxMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OmNsaWVudENoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKQogCiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lv
bigpCiB7Ci0gICAgZm9yIChhdXRvIHNlc3Npb24gOiBzZXNzaW9ucygpKSB7Ci0gICAgICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSA9IHNlc3Npb24tPm1lZGlhVHlwZSgp
OwotICAgICAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW8gJiYgdHlw
ZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICBpZiAoIWdBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIGlmIChzZXNzaW9uLT5jaGFyYWN0ZXJpc3RpY3MoKSAmIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpIYXNBdWRpbykKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uOwotICAg
IH0KKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCAqZWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6
OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFF
bGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpKQorICAg
ICAgICByZXR1cm4gJmVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC0xMjIsNiArMTI5LDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1
cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyAtIGNsZWFyaW5nIG5vdyBwbGF5aW5n
IGluZm8iKTsKICAgICAgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhudWxs
cHRyKTsKICAgICAgICAgICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGZhbHNlOworICAgICAgICAg
ICAgbV9yZXBvcnRlZFRpdGxlID0gIiI7CisgICAgICAgICAgICBtX3JlcG9ydGVkUmF0ZSA9IDA7
CisgICAgICAgICAgICBtX3JlcG9ydGVkRHVyYXRpb24gPSAwOwogICAgICAgICAgICAgTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJN
ZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewogI2lm
IExPR19ESVNBQkxFRAogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CkBAIC0x
NDMsNiArMTUzLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5
aW5nSW5mbygpCiAgICAgZG91YmxlIGR1cmF0aW9uID0gY3VycmVudFNlc3Npb24tPmR1cmF0aW9u
KCk7CiAgICAgZG91YmxlIHJhdGUgPSBjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IDEgOiAwOwogICAgIGlmIChtX3JlcG9ydGVkVGl0bGUg
PT0gdGl0bGUgJiYgbV9yZXBvcnRlZFJhdGUgPT0gcmF0ZSAmJiBtX3JlcG9ydGVkRHVyYXRpb24g
PT0gZHVyYXRpb24pIHsKKyAgICAgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gdHJ1ZTsKICAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGxheWluZ0lu
Zm8gLSBub3RoaW5nIG5ldyB0byBzaG93Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289687</attachid>
            <date>2016-09-23 10:01:45 -0700</date>
            <delta_ts>2016-09-23 11:16:14 -0700</delta_ts>
            <desc>Remove gAllowsNowPlayingControls from MediaSessionManagerMac.mm</desc>
            <filename>bug-162480-20160923095855.patch</filename>
            <type>text/plain</type>
            <size>19378</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2MjAyMGNmZGJlNzQ5
NGUzZmYyNjM0MGY1YzVmNDk1MDdjZjhmYi4uNjAzM2FjMGFlZDdhY2IzNjg4MmMyNzgyM2I3ZGE4
ZDkxNDllMTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTA5LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSBuZWVkcyB0byBob25vciB0
aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODQzMDYx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uIHRvIHVz
ZSBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyCisgICAg
ICAgIGFuZCBhbHNvIGVhcmx5IHJldHVybiBudWxscHRyIGlmIHRoZSBjdXJyZW50IHRhYiB0aGUg
d2ViIHByb2Nlc3MgaXMgaG9zdGVkIGluIGlzIHRoZSBhY3RpdmUgdGFiLCBhbmQgdGhlIHdpbmRv
dworICAgICAgICBpdCBpcyBob3N0ZWQgaW4gaXMgdGhlIG1haW4gd2luZG93LiBUaGlzIGluZm9y
bWF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgdmlld1N0YXRlIGZsYWdzIGluIHRoZSBQYWdlIG9m
IGVhY2gKKyAgICAgICAgdGFiIC0tIHdoZW5ldmVyIHRoZSAodmlzaWJsZSAmJiBhY3RpdmUpIHN0
YXRlIGNoYW5nZXMsIHRoZSBQYWdlIHRlbGxzIHRoZSBnbG9iYWwgbWVkaWEgc2Vzc2lvbiBtYW5h
Z2VyIHRvIHVwZGF0ZQorICAgICAgICBpdHMgTm93IFBsYXlpbmcgaW5mby4gVGhlbiwgd2hlbiBl
YWNoIE1lZGlhRWxlbWVudFNlc3Npb24gdHJpZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2Fu
IHNob3cgcGxheWJhY2sKKyAgICAgICAgY29udHJvbHMgZm9yIHRoZSBwdXJwb3NlcyBvZiBOb3cg
UGxheWluZywgZWFjaCBzZXNzaW9uIGNvbnN1bHRzIGl0cyBwYWdlJ3MgdmlzaWJsZSBhbmQgYWN0
aXZlIHN0YXRlLiBJZiBhIHBhZ2UKKyAgICAgICAgaXMgYm90aCB2aXNpYmxlIGFuZCBhY3RpdmUs
IG5vIE5vdyBQbGF5aW5nIGNvbnRyb2xzIGFyZSBhbGxvd2VkIGZvciB0aGF0IG1lZGlhIHNlc3Np
b24uCisKKyAgICAgICAgQWxzbyBhZGRzIHNvbWUgc2xpZ2h0IGFkanVzdG1lbnRzIHRvIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvLCBzbyB3ZSByZXNldCB0aGUg
dGl0bGUsIHJhdGUKKyAgICAgICAgYW5kIGR1cmF0aW9uIG9mIHRoZSBjdXJyZW50IGFjdGl2ZSBz
ZXNzaW9uIHdoZW4gY2xlYXJpbmcgb3V0IHRoZSBub3cgcGxheWluZyBpbmZvLiBMaWtld2lzZSwg
d2hlbiB2ZW5kaW5nIGFuCisgICAgICAgIGFjdGl2ZSB2aWRlbywgaWYgdGhlIHZpZGVvIGluZm9y
bWF0aW9uIG1hdGNoZXMgdGhhdCBvZiB0aGUgY3VycmVudCBzZXNzaW9uLCB3ZSBtYXJrIG1fbm93
UGxheWluZ0FjdGl2ZSBhbnl3YXlzLgorICAgICAgICBUaGVzZSB0d2Vha3MgcHJldmVudCB1cyBm
cm9tIGdldHRpbmcgaW4gYSBiYWQgc3RhdGUgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBhIHRhYiB3
aXRoIG1lZGlhIGFuZCBvbmUgd2l0aG91dC4KKworICAgICAgICBVbml0IHRlc3RzIHRvIGNvbWUg
aW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVu
dEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpiZXN0TWVkaWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKToK
KyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0Vmlld1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSk6CisgICAgICAgICogcGFnZS9QYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBk
YXRlTm93UGxheWluZ0luZm9JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6bm93UGxheWluZ0VsaWdp
YmxlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1
cGRhdGVOb3dQbGF5aW5nSW5mbyk6CisKIDIwMTYtMDktMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGZvciBmdXR1cmUgdmVyc2lv
bnMgb2YgQ2xhbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA5NThlNWY0NmViZmI3MWI3YmIxOGJlZmQxYzZmNzJhODQ4YTcwNzdlLi5jZGE1YTNjMmIyOTJm
NTM3Y2RlNmIxODc2ZGQwNmQ1ZjkxZDZlMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTM1OCwxMyArMzU4LDEzIEBAIHN0cnVjdCBNZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mbyB7CiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA6IDE7CiB9OwogCi1zdGF0aWMg
TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9u
KGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24mIHNlc3Npb24pCitzdGF0aWMgTWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGNvbnN0IE1lZGlh
RWxlbWVudFNlc3Npb24mIHNlc3Npb24sIE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29u
dHJvbHNQdXJwb3NlIHB1cnBvc2UpCiB7CiAgICAgY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCA9IHNlc3Npb24uZWxlbWVudCgpOwogICAgIHJldHVybiB7CiAgICAgICAgICZzZXNzaW9u
LAogICAgICAgICBzZXNzaW9uLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCksCi0gICAg
ICAgIHNlc3Npb24uY2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpLAorICAgICAgICBzZXNzaW9uLmNh
blNob3dDb250cm9sc01hbmFnZXIocHVycG9zZSksCiAgICAgICAgIGVsZW1lbnQuaXNGdWxsc2Ny
ZWVuKCkgfHwgZWxlbWVudC5pc1Zpc2libGVJblZpZXdwb3J0KCksCiAgICAgICAgIHNlc3Npb24u
aXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9z
ZTo6TWVkaWFDb250cm9scyksCiAgICAgICAgIGVsZW1lbnQuaXNQbGF5aW5nKCkgJiYgZWxlbWVu
dC5oYXNBdWRpbygpICYmICFlbGVtZW50Lm11dGVkKCkKQEAgLTM4MSw4ICszODEsMTEgQEAgc3Rh
dGljIGJvb2wgcHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVyT3RoZXJD
YW5kaWRhdGVTZXNzaW9uKGNvbnMKICAgICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlcklu
dGVyYWN0aW9uID4gb3RoZXJTZXNzaW9uLnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247CiB9CiAK
LXN0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29u
c3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8mIHNlc3Npb24pCitzdGF0aWMgYm9vbCBtZWRpYVNl
c3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KGNvbnN0IE1lZGlhRWxlbWVudFNlc3Np
b25JbmZvJiBzZXNzaW9uLCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVy
cG9zZSBwdXJwb3NlKQogeworICAgIGlmIChwdXJwb3NlID09IE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKQorICAgICAgICByZXR1cm4gc2Vz
c2lvbi5pc1BsYXlpbmdBdWRpbzsKKwogICAgIGlmICghc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdw
b3J0T3JGdWxsc2NyZWVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM5NCwzMyArMzk3
LDYgQEAgc3RhdGljIGJvb2wgbWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVu
dChjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9uSW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24qIGJlc3RNZWRpYVNlc3Npb25Gb3JTaG93aW5n
UGxheWJhY2tDb250cm9sc01hbmFnZXIoKQotewotICAgIGF1dG8gYWxsU2Vzc2lvbnMgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jdXJyZW50U2Vzc2lvbnNN
YXRjaGluZyhbXSAoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsKLSAgICAg
ICAgcmV0dXJuIGlzPE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pOwotICAgIH0pOwotCi0g
ICAgVmVjdG9yPE1lZGlhRWxlbWVudFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsKLSAg
ICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQg
PSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBhbGxTZXNzaW9ucykgewotICAgICAg
ICBhdXRvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvID0gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9G
b3JTZXNzaW9uKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+KCpzZXNzaW9uKSk7Ci0gICAg
ICAgIGlmIChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mby5jYW5TaG93Q29udHJvbHNNYW5hZ2VyKQot
ICAgICAgICAgICAgY2FuZGlkYXRlU2Vzc2lvbnMuYXBwZW5kKG1lZGlhRWxlbWVudFNlc3Npb25J
bmZvKTsKLSAgICAgICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWlu
Q29udGVudChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mbykpCi0gICAgICAgICAgICBhdExlYXN0T25l
Tm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBpZiAoIWNhbmRpZGF0ZVNlc3Npb25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBzdGQ6OnNvcnQoY2FuZGlkYXRlU2Vzc2lvbnMuYmVnaW4oKSwgY2FuZGlkYXRl
U2Vzc2lvbnMuZW5kKCksIHByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zl
ck90aGVyQ2FuZGlkYXRlU2Vzc2lvbik7Ci0gICAgYXV0byBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlk
YXRlID0gY2FuZGlkYXRlU2Vzc2lvbnMuZmlyc3QoKTsKLSAgICBpZiAoIXN0cm9uZ2VzdFNlc3Np
b25DYW5kaWRhdGUuaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAmJiAhc3Ryb25nZXN0
U2Vzc2lvbkNhbmRpZGF0ZS5pc1BsYXlpbmdBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRl
TWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHJldHVybiBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Ci19Ci0KIEhUTUxN
ZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVu
dCkKQEAgLTY0Myw2ICs2MTksMzMgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIHVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiB9CiAKK0hUTUxNZWRp
YUVsZW1lbnQqIEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9s
c1B1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBhdXRvIGFsbFNlc3Npb25zID0gUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb25zTWF0Y2hpbmco
W10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSB7CisgICAgICAgIHJldHVy
biBpczxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKTsKKyAgICB9KTsKKworICAgIFZlY3Rv
cjxNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbz4gY2FuZGlkYXRlU2Vzc2lvbnM7CisgICAgYm9vbCBh
dExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gZmFsc2U7
CisgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogYWxsU2Vzc2lvbnMpIHsKKyAgICAgICAgYXV0byBt
ZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyA9IG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lv
bihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPigqc2Vzc2lvbiksIHB1cnBvc2UpOworICAg
ICAgICBpZiAobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikK
KyAgICAgICAgICAgIGNhbmRpZGF0ZVNlc3Npb25zLmFwcGVuZChtZWRpYUVsZW1lbnRTZXNzaW9u
SW5mbyk7CisgICAgICAgIGVsc2UgaWYgKG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFp
bkNvbnRlbnQobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8sIHB1cnBvc2UpKQorICAgICAgICAgICAg
YXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IHRydWU7
CisgICAgfQorCisgICAgaWYgKCFjYW5kaWRhdGVTZXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc3RkOjpzb3J0KGNhbmRpZGF0ZVNlc3Npb25zLmJlZ2luKCks
IGNhbmRpZGF0ZVNlc3Npb25zLmVuZCgpLCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRl
U2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Npb24pOworICAgIGF1dG8gc3Ryb25nZXN0U2Vz
c2lvbkNhbmRpZGF0ZSA9IGNhbmRpZGF0ZVNlc3Npb25zLmZpcnN0KCk7CisgICAgaWYgKCFzdHJv
bmdlc3RTZXNzaW9uQ2FuZGlkYXRlLmlzVmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3JlZW4gJiYg
IXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuaXNQbGF5aW5nQXVkaW8gJiYgYXRMZWFzdE9uZU5v
bkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gJnN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuc2Vzc2lvbi0+
ZWxlbWVudCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3Vt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBtX21lZGlhU2Vzc2lvbi0+cmVnaXN0ZXJX
aXRoRG9jdW1lbnQoZG9jdW1lbnQpOwpAQCAtNzMxNiw4ICs3MzE5LDggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIEZJWE1FOiBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgaGVyZSBzaG91bGQg
YmUgdXAgdG8gZGF0ZS4KLSAgICBpZiAoYXV0byBiZXN0TWVkaWFTZXNzaW9uID0gYmVzdE1lZGlh
U2Vzc2lvbkZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKQotICAgICAgICBwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGJlc3RNZWRp
YVNlc3Npb24tPmVsZW1lbnQoKSk7CisgICAgaWYgKGF1dG8gYmVzdE1lZGlhRWxlbWVudCA9IGJl
c3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlcikpCisg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKmJlc3RNZWRpYUVsZW1lbnQpOwogICAgIGVsc2UKICAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBjOWNiNmE4NWIyZGM2MzEyNGUzYjcxMjljMGU0
MmZiN2NjMWIwNDdiLi43Y2QwZmYzYjc2OGFiMzMyNWIyN2M1YjAzMmE3YWI3YTAwZWY4MGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTE1LDYgKzExNSw4IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiYgYWxsTWVk
aWFFbGVtZW50cygpOwogCisgICAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIGJlc3RNZWRpYUVs
ZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lv
bjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UpOworCiAgICAgdm9pZCByZXdpbmQoZG91YmxlIHRp
bWVEZWx0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmlu
ZGV4IDUwZmI3ZTEzOWIxNTE5YWRlOTVjZTljODQ3YzFiZDVjZDJiNjNiMTYuLmY5ODExZWE3ZDUw
NmM0Mjc2MzJkMGRjZGUyMjI3ODY4MzI4YzRmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjE2LDggKzIxNiwxMyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBv
c2UpIGNvbnN0CiB7CisgICAgaWYgKHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6
Ok5vd1BsYXlpbmcgJiYgIXBhZ2VBbGxvd3NOb3dQbGF5aW5nQ29udHJvbHMoKSkgeworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBOb3cgcGxheWluZyBub3QgYWxsb3dlZCBpbiBmb3JlZ3JvdW5k
IHRhYiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fZWxlbWVu
dC5pc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIGZ1bGxzY3Jl
ZW4iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMjgsNyArMjMzLDggQEAgYm9vbCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9lbGVtZW50Lmhhc0F1ZGlvKCkgJiYg
IW1fZWxlbWVudC5oYXNFdmVySGFkQXVkaW8oKSkgeworICAgIGJvb2wgbWVldHNBdWRpb1RyYWNr
UmVxdWlyZW1lbnRzID0gbV9lbGVtZW50Lmhhc0F1ZGlvKCkgfHwgKHB1cnBvc2UgPT0gUGxheWJh
Y2tDb250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlciAmJiBtX2VsZW1lbnQuaGFzRXZlckhh
ZEF1ZGlvKCkpOworICAgIGlmICghbWVldHNBdWRpb1RyYWNrUmVxdWlyZW1lbnRzKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlvIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0yNzQsNyArMjgwLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5T
aG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghbV9lbGVtZW50Lmhhc1ZpZGVvKCkgJiYgIW1fZWxlbWVu
dC5oYXNFdmVySGFkVmlkZW8oKSkgeworICAgICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0Nv
bnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyICYmICFtX2VsZW1lbnQuaGFzVmlkZW8oKSAm
JiAhbV9lbGVtZW50Lmhhc0V2ZXJIYWRWaWRlbygpKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5n
IEZBTFNFOiBObyB2aWRlbyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CkBAIC03MjIsNiArNzI4LDEyIEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6dXBkYXRlSXNN
YWluQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNNYWluQ29udGVudDsKIH0KIAorYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKCkgY29u
c3QKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CisgICAg
cmV0dXJuIHBhZ2UgJiYgIXBhZ2UtPmlzVmlzaWJsZUFuZEFjdGl2ZSgpOworfQorCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oCmluZGV4IDgzM2ZlNmExNmU3NWJhZTg3YTQ1NGM5MDBhZmM1NDAxNmQ0MDY3N2UuLjA1
ZTgwNjhhMmQ1NTE1NWFjNTcxMTM4ZGIyNDkzNjg2ZjcwMmQwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0xMTgsNyArMTE4LDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCB3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJv
bHMoKSBjb25zdDsKICAgICBib29sIHdhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9y
QXV0b3BsYXkoKSBjb25zdDsKLSAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25z
dDsKKworICAgIGVudW0gY2xhc3MgUGxheWJhY2tDb250cm9sc1B1cnBvc2UgeyBDb250cm9sc01h
bmFnZXIsIE5vd1BsYXlpbmcgfTsKKyAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIoUGxh
eWJhY2tDb250cm9sc1B1cnBvc2UpIGNvbnN0OwogICAgIGJvb2wgaXNMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9zZSkgY29uc3Q7CiAgICAgZG91
YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCkgY29uc3Q7CiAKQEAgLTEzOCw2ICsx
NDAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlSXNNYWluQ29udGVudCgpIGNvbnN0Owog
ICAgIHZvaWQgbWFpbkNvbnRlbnRDaGVja1RpbWVyRmlyZWQoKTsKIAorICAgIGJvb2wgcGFnZUFs
bG93c05vd1BsYXlpbmdDb250cm9scygpIGNvbnN0OworCiAgICAgSFRNTE1lZGlhRWxlbWVudCYg
bV9lbGVtZW50OwogICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCAzMDE4N2E0NzNmZWY2OWE2ZTUwY2U4MzA2YjQ2ZjAzMmM5NGZk
YzRjLi5mNzk4NzkzYWY5ZDEzZGY3ODZlMGNmMzBlMWI5NDc0YzEzMzJkZDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1
Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbklu
Zm9Qcm92aWRlci5oIgpAQCAtMTQ0OSw3ICsxNDUwLDkgQEAgdm9pZCBQYWdlOjpzZXRWaWV3U3Rh
dGUoVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCiAKICAgICBWaWV3U3RhdGU6OkZsYWdzIG9s
ZFZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOwogCisgICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZl
ID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7CiAgICAgbV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CisK
ICAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0Vmlld1N0YXRlKHZpZXdTdGF0ZSk7CiAKICAgICBp
ZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMTQ2NCw2ICsxNDY3LDE0IEBA
IHZvaWQgUGFnZTo6c2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKQogCiAg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAg
ICAgICBvYnNlcnZlci0+dmlld1N0YXRlRGlkQ2hhbmdlKG9sZFZpZXdTdGF0ZSwgbV92aWV3U3Rh
dGUpOworCisgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxlQW5kQWN0aXZl
KCkpCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlTm93UGxheWlu
Z0luZm9JZk5lY2Vzc2FyeSgpOworfQorCitib29sIFBhZ2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxl
KSAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIH0KIAogdm9p
ZCBQYWdlOjpzZXRQYWdlQWN0aXZpdHlTdGF0ZShQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0
aXZpdHlTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTc1M2Y3NDZhZGQ1MTc1MzllNTYyN2VjYTY2
MDU4YzAyNWZkMDM0Mi4uZGE0ODdiOTI0ZDEzMGU4OWZjNTJjYTZhNWQyNDE2YjE4NTc1OTk3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3Rp
ZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBiZWluZyBwcmVzZW50ZWQg
dmlhIGEgbmF0aXZlIHdpbmRvdy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdTdGF0
ZShWaWV3U3RhdGU6OkZsYWdzKTsKKyAgICBib29sIGlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0UGFnZUFjdGl2aXR5U3RhdGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdz
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cAppbmRleCA5NzVmYzUwZTJmYTMyYjczMjRmZTU3MTQwM2UxMWY2MjFjYmQ5NTU2Li43NjVhNjlm
MmMyMDBhYjUzODczZDFiYWJlNDE4YWNmYTcwY2RhODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKQEAgLTM2LDcgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKE1BQykKKwordm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNl
c3NhcnkoKQoreworfQorCisjaWYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIqIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CiAK
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkKQEAgLTUwLDcgKzU2LDkgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0
cygKIHsKICAgICByZXR1cm4gcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKworI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAK
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
KCkKICAgICA6IG1fc3lzdGVtU2xlZXBMaXN0ZW5lcihTeXN0ZW1TbGVlcExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBjN2E4MTZlZjA1YjAxYWE3ZmFk
YjBjNzJlZmM4NDM5MTEyMTNlNzY0Li45ZmRmYzE4OWFiMzAyYjU5YTIwNzI5YTgwMmRkYTk3MmE5
MDNiMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNDYsNiArNDYsOSBAQCBjbGFzcyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCwgcHJpdmF0ZQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIqIHNoYXJlZE1hbmFnZXJJZkV4aXN0cygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1h
bmFnZXIoKTsKKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3Nh
cnkoKTsKKwogICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcigpIHsgfQog
CiAgICAgYm9vbCBoYXMoUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9u
TWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLm1tCmluZGV4IDQyMGU4ZWJlNjUwZGI1MmJjODk1MDQ1ZTA1NDNiYmFi
N2EzNjJhNmIuLmNmMjdlNjRhYmRmNzU3MTRlOTJkZTVkMTRhOWM1MmJmNjVjMzkyNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShNQUMp
CiAKKyNpbXBvcnQgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIk1lZGlhUGxheWVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgpA
QCAtNTIsNiArNTMsMTIgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygKICAgICByZXR1cm4gcGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlTm93UGxheWluZ0luZm9JZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKGF1
dG8gZXhpc3RpbmdNYW5hZ2VyID0gKE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMgKilQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAgICBleGlz
dGluZ01hbmFnZXItPnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7Cit9CisKIE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWM6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKQogICAgIDogUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyKCkKIHsKQEAgLTk0LDE0ICsxMDEsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWM6OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Np
b24mKQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6bm93
UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpCiB7Ci0gICAgZm9yIChhdXRvIHNlc3Npb24gOiBzZXNz
aW9ucygpKSB7Ci0gICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSA9
IHNlc3Npb24tPm1lZGlhVHlwZSgpOwotICAgICAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6VmlkZW8gJiYgdHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW8pCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoc2Vzc2lvbi0+Y2hhcmFjdGVyaXN0
aWNzKCkgJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SGFzQXVkaW8pCi0gICAgICAgICAgICByZXR1
cm4gc2Vzc2lvbjsKLSAgICB9CisgICAgaWYgKGF1dG8gZWxlbWVudCA9IEhUTUxNZWRpYUVsZW1l
bnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVk
aWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpKQor
ICAgICAgICByZXR1cm4gJmVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CkBAIC0xMjIsNiArMTIzLDkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
Ojp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyAtIGNsZWFyaW5nIG5vdyBwbGF5
aW5nIGluZm8iKTsKICAgICAgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhu
dWxscHRyKTsKICAgICAgICAgICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGZhbHNlOworICAgICAg
ICAgICAgbV9yZXBvcnRlZFRpdGxlID0gIiI7CisgICAgICAgICAgICBtX3JlcG9ydGVkUmF0ZSA9
IDA7CisgICAgICAgICAgICBtX3JlcG9ydGVkRHVyYXRpb24gPSAwOwogICAgICAgICAgICAgTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4o
TVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewog
I2lmIExPR19ESVNBQkxFRAogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CkBA
IC0xNDMsNiArMTQ3LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQ
bGF5aW5nSW5mbygpCiAgICAgZG91YmxlIGR1cmF0aW9uID0gY3VycmVudFNlc3Npb24tPmR1cmF0
aW9uKCk7CiAgICAgZG91YmxlIHJhdGUgPSBjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IDEgOiAwOwogICAgIGlmIChtX3JlcG9ydGVkVGl0
bGUgPT0gdGl0bGUgJiYgbV9yZXBvcnRlZFJhdGUgPT0gcmF0ZSAmJiBtX3JlcG9ydGVkRHVyYXRp
b24gPT0gZHVyYXRpb24pIHsKKyAgICAgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gdHJ1ZTsKICAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGxheWlu
Z0luZm8gLSBub3RoaW5nIG5ldyB0byBzaG93Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289693</attachid>
            <date>2016-09-23 11:16:17 -0700</date>
            <delta_ts>2016-09-23 11:48:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162480-20160923111325.patch</filename>
            <type>text/plain</type>
            <size>19367</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQyZTU4OGM2ZGM0YzY5
Mjg1YzEyYTQ0ZjQ0NWExOWMxMjA3YjQ0OC4uNWQ5ZDNhMmI0NDhhN2JlODczN2ZiMzkxZGZjYTE3
YmU3YjlmZjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTA5LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSBuZWVkcyB0byBob25vciB0
aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODQzMDYx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgQ2hhbmdlcyB0
aGUgaW1wbGVtZW50YXRpb24gb2Ygbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbiB0byB1c2UgYmVz
dE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcgorICAgICAgICBh
bmQgYWxzbyBlYXJseSByZXR1cm4gbnVsbHB0ciBpZiB0aGUgY3VycmVudCB0YWIgdGhlIHdlYiBw
cm9jZXNzIGlzIGhvc3RlZCBpbiBpcyB0aGUgYWN0aXZlIHRhYiwgYW5kIHRoZSB3aW5kb3cKKyAg
ICAgICAgaXQgaXMgaG9zdGVkIGluIGlzIHRoZSBtYWluIHdpbmRvdy4gVGhpcyBpbmZvcm1hdGlv
biBpcyBkZXJpdmVkIGZyb20gdGhlIHZpZXdTdGF0ZSBmbGFncyBpbiB0aGUgUGFnZSBvZiBlYWNo
CisgICAgICAgIHRhYiAtLSB3aGVuZXZlciB0aGUgKHZpc2libGUgJiYgYWN0aXZlKSBzdGF0ZSBj
aGFuZ2VzLCB0aGUgUGFnZSB0ZWxscyB0aGUgZ2xvYmFsIG1lZGlhIHNlc3Npb24gbWFuYWdlciB0
byB1cGRhdGUKKyAgICAgICAgaXRzIE5vdyBQbGF5aW5nIGluZm8uIFRoZW4sIHdoZW4gZWFjaCBN
ZWRpYUVsZW1lbnRTZXNzaW9uIHRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGNhbiBzaG93
IHBsYXliYWNrCisgICAgICAgIGNvbnRyb2xzIGZvciB0aGUgcHVycG9zZXMgb2YgTm93IFBsYXlp
bmcsIGVhY2ggc2Vzc2lvbiBjb25zdWx0cyBpdHMgcGFnZSdzIHZpc2libGUgYW5kIGFjdGl2ZSBz
dGF0ZS4gSWYgYSBwYWdlCisgICAgICAgIGlzIGJvdGggdmlzaWJsZSBhbmQgYWN0aXZlLCBubyBO
b3cgUGxheWluZyBjb250cm9scyBhcmUgYWxsb3dlZCBmb3IgdGhhdCBtZWRpYSBzZXNzaW9uLgor
CisgICAgICAgIEFsc28gYWRkcyBzb21lIHNsaWdodCBhZGp1c3RtZW50cyB0byBNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjp1cGRhdGVOb3dQbGF5aW5nSW5mbywgc28gd2UgcmVzZXQgdGhlIHRpdGxl
LCByYXRlCisgICAgICAgIGFuZCBkdXJhdGlvbiBvZiB0aGUgY3VycmVudCBhY3RpdmUgc2Vzc2lv
biB3aGVuIGNsZWFyaW5nIG91dCB0aGUgbm93IHBsYXlpbmcgaW5mby4gTGlrZXdpc2UsIHdoZW4g
dmVuZGluZyBhbgorICAgICAgICBhY3RpdmUgdmlkZW8sIGlmIHRoZSB2aWRlbyBpbmZvcm1hdGlv
biBtYXRjaGVzIHRoYXQgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgd2UgbWFyayBtX25vd1BsYXlp
bmdBY3RpdmUgYW55d2F5cy4KKyAgICAgICAgVGhlc2UgdHdlYWtzIHByZXZlbnQgdXMgZnJvbSBn
ZXR0aW5nIGluIGEgYmFkIHN0YXRlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gYSB0YWIgd2l0aCBt
ZWRpYSBhbmQgb25lIHdpdGhvdXQuCisKKyAgICAgICAgVW5pdCB0ZXN0cyB0byBjb21lIGluIGEg
ZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjptZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JT
aG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6YmVzdE1lZGlhU2Vzc2lvbkZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c05vd1BsYXlpbmdDb250cm9scyk6CisgICAg
ICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjppc1Zpc2libGVBbmRBY3RpdmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5v
d1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9N
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGlnaWJsZVNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorCiAyMDE2LTA5LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2MzEx
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjk3MzBhNzk3
MmIxN2I5ZGNlOTdlMzFlMWIyMmRiNDQ2YjQ0MmQ0Mi4uYjI4NWQ1YzA0Y2Y4NzFiZDU3Yjk2MzRk
YzZiNTM5YTFkYzQyMjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0zNTgsMTMgKzM1OCwxMyBAQCBzdHJ1Y3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8g
ewogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gOiAxOwogfTsKIAotc3RhdGljIE1lZGlhRWxlbWVu
dFNlc3Npb25JbmZvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihjb25zdCBNZWRp
YUVsZW1lbnRTZXNzaW9uJiBzZXNzaW9uKQorc3RhdGljIE1lZGlhRWxlbWVudFNlc3Npb25JbmZv
IG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihjb25zdCBNZWRpYUVsZW1lbnRTZXNz
aW9uJiBzZXNzaW9uLCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZSBwdXJwb3NlKQogewogICAgIGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQgPSBzZXNz
aW9uLmVsZW1lbnQoKTsKICAgICByZXR1cm4gewogICAgICAgICAmc2Vzc2lvbiwKICAgICAgICAg
c2Vzc2lvbi5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgpLAotICAgICAgICBzZXNzaW9u
LmNhblNob3dDb250cm9sc01hbmFnZXIoKSwKKyAgICAgICAgc2Vzc2lvbi5jYW5TaG93Q29udHJv
bHNNYW5hZ2VyKHB1cnBvc2UpLAogICAgICAgICBlbGVtZW50LmlzRnVsbHNjcmVlbigpIHx8IGVs
ZW1lbnQuaXNWaXNpYmxlSW5WaWV3cG9ydCgpLAogICAgICAgICBzZXNzaW9uLmlzTGFyZ2VFbm91
Z2hGb3JNYWluQ29udGVudChNZWRpYVNlc3Npb25NYWluQ29udGVudFB1cnBvc2U6Ok1lZGlhQ29u
dHJvbHMpLAogICAgICAgICBlbGVtZW50LmlzUGxheWluZygpICYmIGVsZW1lbnQuaGFzQXVkaW8o
KSAmJiAhZWxlbWVudC5tdXRlZCgpCkBAIC0zODEsOCArMzgxLDExIEBAIHN0YXRpYyBib29sIHBy
ZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vz
c2lvbihjb25zCiAgICAgcmV0dXJuIHNlc3Npb24udGltZU9mTGFzdFVzZXJJbnRlcmFjdGlvbiA+
IG90aGVyU2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uOwogfQogCi1zdGF0aWMgYm9v
bCBtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KGNvbnN0IE1lZGlhRWxl
bWVudFNlc3Npb25JbmZvJiBzZXNzaW9uKQorc3RhdGljIGJvb2wgbWVkaWFTZXNzaW9uTWF5QmVD
b25mdXNlZFdpdGhNYWluQ29udGVudChjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyYgc2Vz
c2lvbiwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9z
ZSkKIHsKKyAgICBpZiAocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0Nv
bnRyb2xzUHVycG9zZTo6Tm93UGxheWluZykKKyAgICAgICAgcmV0dXJuIHNlc3Npb24uaXNQbGF5
aW5nQXVkaW87CisKICAgICBpZiAoIXNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNj
cmVlbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zOTQsMzMgKzM5Nyw2IEBAIHN0YXRp
YyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVk
aWFFbGVtZW50U2Vzc2lvbkluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBN
ZWRpYUVsZW1lbnRTZXNzaW9uKiBiZXN0TWVkaWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCkKLXsKLSAgICBhdXRvIGFsbFNlc3Npb25zID0gUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb25zTWF0Y2hpbmcoW10g
KGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSB7Ci0gICAgICAgIHJldHVybiBp
czxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKTsKLSAgICB9KTsKLQotICAgIFZlY3RvcjxN
ZWRpYUVsZW1lbnRTZXNzaW9uSW5mbz4gY2FuZGlkYXRlU2Vzc2lvbnM7Ci0gICAgYm9vbCBhdExl
YXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gZmFsc2U7Ci0g
ICAgZm9yIChhdXRvJiBzZXNzaW9uIDogYWxsU2Vzc2lvbnMpIHsKLSAgICAgICAgYXV0byBtZWRp
YUVsZW1lbnRTZXNzaW9uSW5mbyA9IG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihk
b3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPigqc2Vzc2lvbikpOwotICAgICAgICBpZiAobWVk
aWFFbGVtZW50U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgICAg
IGNhbmRpZGF0ZVNlc3Npb25zLmFwcGVuZChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQobWVk
aWFFbGVtZW50U2Vzc2lvbkluZm8pKQotICAgICAgICAgICAgYXRMZWFzdE9uZU5vbkNhbmRpZGF0
ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKCFj
YW5kaWRhdGVTZXNzaW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
c3RkOjpzb3J0KGNhbmRpZGF0ZVNlc3Npb25zLmJlZ2luKCksIGNhbmRpZGF0ZVNlc3Npb25zLmVu
ZCgpLCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRp
ZGF0ZVNlc3Npb24pOwotICAgIGF1dG8gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZSA9IGNhbmRp
ZGF0ZVNlc3Npb25zLmZpcnN0KCk7Ci0gICAgaWYgKCFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRl
LmlzVmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3JlZW4gJiYgIXN0cm9uZ2VzdFNlc3Npb25DYW5k
aWRhdGUuaXNQbGF5aW5nQXVkaW8gJiYgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVz
ZWRGb3JNYWluQ29udGVudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
c3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5zZXNzaW9uOwotfQotCiBIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCkBAIC02NDMs
NiArNjE5LDMzIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICB1
cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogfQogCitIVE1MTWVkaWFFbGVtZW50KiBI
VE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1
cnBvc2UpCit7CisgICAgYXV0byBhbGxTZXNzaW9ucyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKFtdIChjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgeworICAgICAgICByZXR1cm4gaXM8TWVkaWFF
bGVtZW50U2Vzc2lvbj4oc2Vzc2lvbik7CisgICAgfSk7CisKKyAgICBWZWN0b3I8TWVkaWFFbGVt
ZW50U2Vzc2lvbkluZm8+IGNhbmRpZGF0ZVNlc3Npb25zOworICAgIGJvb2wgYXRMZWFzdE9uZU5v
bkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCA9IGZhbHNlOworICAgIGZvciAo
YXV0byYgc2Vzc2lvbiA6IGFsbFNlc3Npb25zKSB7CisgICAgICAgIGF1dG8gbWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8gPSBtZWRpYUVsZW1lbnRTZXNzaW9uSW5mb0ZvclNlc3Npb24oZG93bmNhc3Q8
TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnNlc3Npb24pLCBwdXJwb3NlKTsKKyAgICAgICAgaWYgKG1l
ZGlhRWxlbWVudFNlc3Npb25JbmZvLmNhblNob3dDb250cm9sc01hbmFnZXIpCisgICAgICAgICAg
ICBjYW5kaWRhdGVTZXNzaW9ucy5hcHBlbmQobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8pOworICAg
ICAgICBlbHNlIGlmIChtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0aE1haW5Db250ZW50KG1l
ZGlhRWxlbWVudFNlc3Npb25JbmZvLCBwdXJwb3NlKSkKKyAgICAgICAgICAgIGF0TGVhc3RPbmVO
b25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQgPSB0cnVlOworICAgIH0KKwor
ICAgIGlmICghY2FuZGlkYXRlU2Vzc2lvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHN0ZDo6c29ydChjYW5kaWRhdGVTZXNzaW9ucy5iZWdpbigpLCBjYW5kaWRhdGVT
ZXNzaW9ucy5lbmQoKSwgcHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVy
T3RoZXJDYW5kaWRhdGVTZXNzaW9uKTsKKyAgICBhdXRvIHN0cm9uZ2VzdFNlc3Npb25DYW5kaWRh
dGUgPSBjYW5kaWRhdGVTZXNzaW9ucy5maXJzdCgpOworICAgIGlmICghc3Ryb25nZXN0U2Vzc2lv
bkNhbmRpZGF0ZS5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuICYmICFzdHJvbmdlc3RT
ZXNzaW9uQ2FuZGlkYXRlLmlzUGxheWluZ0F1ZGlvICYmIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVN
YXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuICZzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb24tPmVsZW1lbnQoKTsK
K30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgbV9tZWRpYVNlc3Npb24tPnJlZ2lzdGVyV2l0aERvY3VtZW50
KGRvY3VtZW50KTsKQEAgLTczMjYsOCArNzMyOSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBGSVhNRTogRW5zdXJlIHRoYXQgdGhlIHJlbmRlcmVyIGhlcmUgc2hvdWxkIGJlIHVwIHRvIGRh
dGUuCi0gICAgaWYgKGF1dG8gYmVzdE1lZGlhU2Vzc2lvbiA9IGJlc3RNZWRpYVNlc3Npb25Gb3JT
aG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihiZXN0TWVkaWFTZXNzaW9uLT5l
bGVtZW50KCkpOworICAgIGlmIChhdXRvIGJlc3RNZWRpYUVsZW1lbnQgPSBiZXN0TWVkaWFFbGVt
ZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIpKQorICAgICAgICBwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCpiZXN0TWVk
aWFFbGVtZW50KTsKICAgICBlbHNlCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggYzljYjZhODViMmRjNjMxMjRlM2I3MTI5YzBlNDJmYjdjYzFiMDQ3
Yi4uN2NkMGZmM2I3NjhhYjMzMjViMjdjNWIwMzJhN2FiN2EwMGVmODBhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTExNSw2ICsxMTUsOCBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4mIGFsbE1lZGlhRWxlbWVudHMo
KTsKIAorICAgIHN0YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBiZXN0TWVkaWFFbGVtZW50Rm9yU2hv
d2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNr
Q29udHJvbHNQdXJwb3NlKTsKKwogICAgIHZvaWQgcmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA1MGZiN2Ux
MzliMTUxOWFkZTk1Y2U5Yzg0N2MxYmQ1Y2QyYjYzYjE2Li5mOTgxMWVhN2Q1MDZjNDI3NjMyZDBk
Y2RlMjIyNzg2ODMyOGM0ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAKQEAgLTIxNiw4ICsyMTYsMTMgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93
Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hv
d0NvbnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKSBjb25zdAog
eworICAgIGlmIChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5n
ICYmICFwYWdlQWxsb3dzTm93UGxheWluZ0NvbnRyb2xzKCkpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmlu
ZyBGQUxTRTogTm93IHBsYXlpbmcgbm90IGFsbG93ZWQgaW4gZm9yZWdyb3VuZCB0YWIiKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX2VsZW1lbnQuaXNGdWxsc2Ny
ZWVuKCkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hv
d0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBmdWxsc2NyZWVuIik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjI4LDcgKzIzMyw4IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZWxlbWVudC5oYXNBdWRpbygpICYmICFtX2VsZW1lbnQu
aGFzRXZlckhhZEF1ZGlvKCkpIHsKKyAgICBib29sIG1lZXRzQXVkaW9UcmFja1JlcXVpcmVtZW50
cyA9IG1fZWxlbWVudC5oYXNBdWRpbygpIHx8IChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQ
dXJwb3NlOjpDb250cm9sc01hbmFnZXIgJiYgbV9lbGVtZW50Lmhhc0V2ZXJIYWRBdWRpbygpKTsK
KyAgICBpZiAoIW1lZXRzQXVkaW9UcmFja1JlcXVpcmVtZW50cykgewogICAgICAgICBMT0coTWVk
aWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJu
aW5nIEZBTFNFOiBObyBhdWRpbyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
Mjc0LDcgKzI4MCw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoIW1fZWxlbWVudC5oYXNWaWRlbygpICYmICFtX2VsZW1lbnQuaGFzRXZlckhh
ZFZpZGVvKCkpIHsKKyAgICAgICAgaWYgKHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBv
c2U6OkNvbnRyb2xzTWFuYWdlciAmJiAhbV9lbGVtZW50Lmhhc1ZpZGVvKCkgJiYgIW1fZWxlbWVu
dC5oYXNFdmVySGFkVmlkZW8oKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8g
dmlkZW8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNzIyLDYg
KzcyOCwxMiBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnVwZGF0ZUlzTWFpbkNvbnRlbnQo
KSBjb25zdAogICAgIHJldHVybiBtX2lzTWFpbkNvbnRlbnQ7CiB9CiAKK2Jvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6cGFnZUFsbG93c05vd1BsYXlpbmdDb250cm9scygpIGNvbnN0Cit7CisgICAg
YXV0byBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOworICAgIHJldHVybiBwYWdl
ICYmICFwYWdlLT5pc1Zpc2libGVBbmRBY3RpdmUoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRl
eCA4MzNmZTZhMTZlNzViYWU4N2E0NTRjOTAwYWZjNTQwMTZkNDA2NzdlLi4wNWU4MDY4YTJkNTUx
NTVhYzU3MTEzOGRiMjQ5MzY4NmY3MDJkMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uaApAQCAtMTE4LDcgKzExOCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3Q7
CiAgICAgYm9vbCB3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkg
Y29uc3Q7Ci0gICAgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisKKyAgICBl
bnVtIGNsYXNzIFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHsgQ29udHJvbHNNYW5hZ2VyLCBOb3dQ
bGF5aW5nIH07CisgICAgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJv
bHNQdXJwb3NlKSBjb25zdDsKICAgICBib29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChN
ZWRpYVNlc3Npb25NYWluQ29udGVudFB1cnBvc2UpIGNvbnN0OwogICAgIGRvdWJsZSBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSgpIGNvbnN0OwogCkBAIC0xMzgsNiArMTQwLDggQEAgcHJp
dmF0ZToKICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBjb25zdDsKICAgICB2b2lkIG1h
aW5Db250ZW50Q2hlY2tUaW1lckZpcmVkKCk7CiAKKyAgICBib29sIHBhZ2VBbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHMoKSBjb25zdDsKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsK
ICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggMzAxODdhNDczZmVmNjlhNmU1MGNlODMwNmI0NmYwMzJjOTRmZGM0Yy4uZjc5ODc5
M2FmOWQxM2RmNzg2ZTBjZjMwZTFiOTQ3NGMxMzMyZGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZU92
ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdJbkNsaWVudC5o
IgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlkZXIu
aCIKQEAgLTE0NDksNyArMTQ1MCw5IEBAIHZvaWQgUGFnZTo6c2V0Vmlld1N0YXRlKFZpZXdTdGF0
ZTo6RmxhZ3Mgdmlld1N0YXRlKQogCiAgICAgVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUg
PSBtX3ZpZXdTdGF0ZTsKIAorICAgIGJvb2wgd2FzVmlzaWJsZUFuZEFjdGl2ZSA9IGlzVmlzaWJs
ZUFuZEFjdGl2ZSgpOwogICAgIG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworCiAgICAgbV9mb2N1
c0NvbnRyb2xsZXItPnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUpOwogCiAgICAgaWYgKGNoYW5nZWQg
JiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE0NjQsNiArMTQ2NywxNCBAQCB2b2lkIFBhZ2U6
OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKIAogICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVycykKICAgICAgICAgb2JzZXJ2
ZXItPnZpZXdTdGF0ZURpZENoYW5nZShvbGRWaWV3U3RhdGUsIG1fdmlld1N0YXRlKTsKKworICAg
IGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKQorICAgICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNl
c3NhcnkoKTsKK30KKworYm9vbCBQYWdlOjppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAorewor
ICAgIHJldHVybiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgJiYgKG1fdmll
d1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0
UGFnZUFjdGl2aXR5U3RhdGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCmluZGV4IDk3NTNmNzQ2YWRkNTE3NTM5ZTU2MjdlY2E2NjA1OGMwMjVmZDAz
NDIuLmRhNDg3YjkyNGQxMzBlODlmYzUyY2E2YTVkMjQxNmIxODU3NTk5NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCkBAIC0zMzUsNiArMzM1LDcgQEAgcHVibGljOgogCiAgICAgLy8gTm90aWZpY2F0aW9ucyB3
aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2VudGVkIHZpYSBhIG5hdGl2
ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3U3RhdGUoVmlld1N0YXRl
OjpGbGFncyk7CisgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2b2lk
IHNldFBhZ2VBY3Rpdml0eVN0YXRlKFBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncyk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRJc1ByZXJlbmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggOTc1
ZmM1MGUyZmEzMmI3MzI0ZmU1NzE0MDNlMTFmNjIxY2JkOTU1Ni4uNzY1YTY5ZjJjMjAwYWI1Mzg3
M2QxYmFiZTQxOGFjZmE3MGNkYTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0z
Niw3ICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oSU9T
KSAmJiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShNQUMpCisKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCkKK3sK
K30KKworI2lmICFQTEFURk9STShJT1MpCiBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogCiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpCkBAIC01MCw3ICs1Niw5IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoCiB7CiAgICAg
cmV0dXJuIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIH0KLSNlbmRpZgorI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQogCiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcigpCiAgICAgOiBt
X3N5c3RlbVNsZWVwTGlzdGVuZXIoU3lzdGVtU2xlZXBMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggYzdhODE2ZWYwNWIwMWFhN2ZhZGIwYzcyZWZjODQz
OTExMjEzZTc2NC4uOWZkZmMxODlhYjMwMmI1OWEyMDcyOWE4MDJkZGE5NzJhOTAzYjJmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTQ2LDYgKzQ2LDkgQEAgY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyIDogcHJpdmF0ZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQsIHBy
aXZhdGUKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyKiBzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CisK
KyAgICBzdGF0aWMgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisKICAg
ICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIoKSB7IH0KIAogICAgIGJvb2wg
aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5tbQppbmRleCA0MjBlOGViZTY1MGRiNTJiYzg5NTA0NWUwNTQzYmJhYjdhMzYyYTZiLi5j
ZjI3ZTY0YWJkZjc1NzE0ZTkyZGU1ZDE0YTljNTJiZjY1YzM5MjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0
ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRp
YVBsYXllci5oIgogI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKQEAgLTUyLDYgKzUz
LDEyIEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciogUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoCiAgICAgcmV0dXJuIHBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjsKIH0KIAordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVw
ZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChhdXRvIGV4aXN0aW5n
TWFuYWdlciA9IChNZWRpYVNlc3Npb25NYW5hZ2VyTWFjICopUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgZXhpc3RpbmdNYW5hZ2Vy
LT51cGRhdGVOb3dQbGF5aW5nSW5mbygpOworfQorCiBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkKICAgICA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cigpCiB7CkBAIC05NCwxNCArMTAxLDggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpj
bGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJikKIAogUGxh
dGZvcm1NZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6Om5vd1BsYXlpbmdFbGln
aWJsZVNlc3Npb24oKQogewotICAgIGZvciAoYXV0byBzZXNzaW9uIDogc2Vzc2lvbnMoKSkgewot
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUgPSBzZXNzaW9uLT5t
ZWRpYVR5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlZp
ZGVvICYmIHR5cGUgIT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgaWYgKHNlc3Npb24tPmNoYXJhY3RlcmlzdGljcygpICYgUGxh
dGZvcm1NZWRpYVNlc3Npb246Okhhc0F1ZGlvKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb247
Ci0gICAgfQorICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVk
aWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNl
c3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSkKKyAgICAgICAgcmV0
dXJuICZlbGVtZW50LT5tZWRpYVNlc3Npb24oKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpA
QCAtMTIyLDYgKzEyMyw5IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93
UGxheWluZ0luZm8oKQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYzo6dXBkYXRlTm93UGxheWluZ0luZm8gLSBjbGVhcmluZyBub3cgcGxheWluZyBpbmZvIik7
CiAgICAgICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8obnVsbHB0cik7CiAg
ICAgICAgICAgICBtX25vd1BsYXlpbmdBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fcmVw
b3J0ZWRUaXRsZSA9ICIiOworICAgICAgICAgICAgbV9yZXBvcnRlZFJhdGUgPSAwOworICAgICAg
ICAgICAgbV9yZXBvcnRlZER1cmF0aW9uID0gMDsKICAgICAgICAgICAgIE1STWVkaWFSZW1vdGVT
ZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1v
dGVHZXRMb2NhbE9yaWdpbigpLCBrTVJQbGF5YmFja1N0YXRlU3RvcHBlZCwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKICNpZiBMT0dfRElT
QUJMRUQKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwpAQCAtMTQzLDYgKzE0
Nyw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGxheWluZ0luZm8o
KQogICAgIGRvdWJsZSBkdXJhdGlvbiA9IGN1cnJlbnRTZXNzaW9uLT5kdXJhdGlvbigpOwogICAg
IGRvdWJsZSByYXRlID0gY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlpbmcgPyAxIDogMDsKICAgICBpZiAobV9yZXBvcnRlZFRpdGxlID09IHRpdGxl
ICYmIG1fcmVwb3J0ZWRSYXRlID09IHJhdGUgJiYgbV9yZXBvcnRlZER1cmF0aW9uID09IGR1cmF0
aW9uKSB7CisgICAgICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIC0gbm90
aGluZyBuZXcgdG8gc2hvdyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>