<?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>150906</bug_id>
          
          <creation_ts>2015-11-04 14:51:17 -0800</creation_ts>
          <short_desc>[iOS] Fullscreen -&gt; PiP should resume to Fullscreen, not inline</short_desc>
          <delta_ts>2016-02-10 08:37:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139453</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-11-04 14:51:17 -0800</bug_when>
    <thetext>[iOS] Fullscreen -&gt; PiP should resume to Fullscreen, not inline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139764</commentid>
    <comment_count>1</comment_count>
      <attachid>264883</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-11-05 14:33:25 -0800</bug_when>
    <thetext>Created attachment 264883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139766</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 14:35:09 -0800</bug_when>
    <thetext>Attachment 264883 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139830</commentid>
    <comment_count>3</comment_count>
      <attachid>264901</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-11-05 16:58:10 -0800</bug_when>
    <thetext>Created attachment 264901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139831</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 16:59:53 -0800</bug_when>
    <thetext>Attachment 264901 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141565</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-11-12 11:38:35 -0800</bug_when>
    <thetext>rdar://problem/20596271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141582</commentid>
    <comment_count>6</comment_count>
      <attachid>264901</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-12 12:11:48 -0800</bug_when>
    <thetext>Comment on attachment 264901
Patch

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

This looks fine to me, but a WK2 reviewer will need to give it an official r+.

&gt; Source/WebCore/ChangeLog:22
&gt; +        Add methods to for clients to request a specific fullscreen mode, and to query whether
&gt; +        the page is currently visible.

Nit: &quot;to for clients&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142983</commentid>
    <comment_count>7</comment_count>
      <attachid>264901</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-18 14:29:18 -0800</bug_when>
    <thetext>Comment on attachment 264901
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        When &quot;restoring&quot; the user interface when exiting PiP, we should return to Fullscreen if that

&quot;restoring&quot; reads like butchers quotes.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:405
&gt; +    LOG(Media, &quot;HTMLVideoElement::webkitSetPresentationMode(%p) - setting to \&quot;%s\&quot;&quot;, this, mode.utf8().data());

You could LOG_STREAM(Media, stream &lt;&lt; &quot;HTMLVideoElement::webkitSetPresentationMode(&quot; &lt;&lt; this &lt;&lt; &quot;) - setting to &quot; &lt;&lt; mode);

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:657
&gt;      if ([_videoSublayer superlayer] != self)
&gt;          return;
&gt;  
&gt; -    [_videoSublayer setPosition:CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))];
&gt; -    
&gt;      if (![_avPlayerController delegate])
&gt;          return;

Would be nice to wrap these checks in a function that describes what state you expect these to be true in.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:838
&gt; +    WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];

Do we know that [pipView layer] is always a WebAVPlayerLayer? Could some other framework break this under us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145736</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-12-02 14:49:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 264901 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264901&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        When &quot;restoring&quot; the user interface when exiting PiP, we should return to Fullscreen if that
&gt; 
&gt; &quot;restoring&quot; reads like butchers quotes.

Okay, I&apos;ll &quot;remove&quot; them.

&gt; &gt; Source/WebCore/html/HTMLVideoElement.cpp:405
&gt; &gt; +    LOG(Media, &quot;HTMLVideoElement::webkitSetPresentationMode(%p) - setting to \&quot;%s\&quot;&quot;, this, mode.utf8().data());
&gt; 
&gt; You could LOG_STREAM(Media, stream &lt;&lt;
&gt; &quot;HTMLVideoElement::webkitSetPresentationMode(&quot; &lt;&lt; this &lt;&lt; &quot;) - setting to &quot;
&gt; &lt;&lt; mode);

Nice!

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:657
&gt; &gt;      if ([_videoSublayer superlayer] != self)
&gt; &gt;          return;
&gt; &gt;  
&gt; &gt; -    [_videoSublayer setPosition:CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))];
&gt; &gt; -    
&gt; &gt;      if (![_avPlayerController delegate])
&gt; &gt;          return;
&gt; 
&gt; Would be nice to wrap these checks in a function that describes what state
&gt; you expect these to be true in.
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:838
&gt; &gt; +    WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];
&gt; 
&gt; Do we know that [pipView layer] is always a WebAVPlayerLayer? Could some
&gt; other framework break this under us?

Yes. The PiP view will always have a WebAVPlayerLayer because WebAVPictureInPicturePlayerLayerView has a -layerClass member which returns [WebAVPlayerLayer class].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145766</commentid>
    <comment_count>9</comment_count>
      <attachid>266482</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-12-02 15:45:17 -0800</bug_when>
    <thetext>Created attachment 266482
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145769</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-02 15:53:31 -0800</bug_when>
    <thetext>Attachment 266482 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1434:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145971</commentid>
    <comment_count>11</comment_count>
      <attachid>266482</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-03 11:12:41 -0800</bug_when>
    <thetext>Comment on attachment 266482
Patch for landing

Clearing flags on attachment: 266482

Committed r193340: &lt;http://trac.webkit.org/changeset/193340&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264883</attachid>
            <date>2015-11-05 14:33:25 -0800</date>
            <delta_ts>2015-11-05 16:58:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150906-20151105143226.patch</filename>
            <type>text/plain</type>
            <size>39310</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ4NDE2OTYwZWQ5YmQw
MWNkYzE1YmIxYzRhOTZjZTFlOTJlMTEzOC4uNjQ5NDUxODA3MDYxM2NjYjcxMWJhMDliZTNmOWQz
NDU4NzBmMmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTExLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEZ1bGxzY3JlZW4g
LT4gUGlQIHNob3VsZCByZXN1bWUgdG8gRnVsbHNjcmVlbiwgbm90IGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiAicmVzdG9yaW5nIiB0
aGUgdXNlciBpbnRlcmZhY2Ugd2hlbiBleGl0aW5nIFBpUCwgd2Ugc2hvdWxkIHJldHVybiB0byBG
dWxsc2NyZWVuIGlmIHRoYXQKKyAgICAgICAgaXMgd2hlcmUgZnVsbHNjcmVlbiB3YXMgaW5pdGlh
dGVkIGZyb20uIEFkZGl0aW9uYWxseSwgd2hlbiB3ZSAiYXV0by1QaVAiIGJ5IGJhY2tncm91bmRp
bmcgdGhlCisgICAgICAgIGFwcCBpbiBGdWxsc2NyZWVuIG1vZGUsIHdlIHNob3VsZCAiYXV0by11
bi1QaVAiIHdoZW4gcmVzdG9yaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBmb3JlZ3JvdW5kLgorCisg
ICAgICAgIFJhdGhlciB0aGFuIGhhdmUgYSBzZXBhcmF0ZSBtZXRob2QgdG8gcmVxdWVzdCBleGl0
aW5nIGZ1bGxzY3JlZW4sIGVudGVyaW5nIHN0YW5kYXJkIGZ1bGxzY3JlZW4sCisgICAgICAgIGFu
ZCBzd2l0Y2hpbmcgdG8gJiBmcm9tIFBpUCwgYWRkIGEgbmV3IG1ldGhvZCBzZXRGdWxsc2NyZWVu
TW9kZSgpIHdoaWNoIGRvZXMgYWxsIHRocmVlLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXNlbnRhdGlvbk1vZGVUb0Z1bGxzY3Jl
ZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFNldFBy
ZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorCisg
ICAgICAgIEFkZCBtZXRob2RzIHRvIGZvciBjbGllbnRzIHRvIHJlcXVlc3QgYSBzcGVjaWZpYyBm
dWxsc2NyZWVuIG1vZGUsIGFuZCB0byBxdWVyeSB3aGV0aGVyCisgICAgICAgIHRoZSBwYWdlIGlz
IGN1cnJlbnRseSB2aXNpYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgVHJhY2sgd2hldGhlciByZXR1cm5pbmcgZnJvbSBQaVAgc2hvdWxkIGVudGVyIGZ1
bGxzY3JlZW4sIG9yIHdoZXRoZXIgZm9yZWdyb3VuZGluZyB0aGUgYXBwCisgICAgICAgIHNob3Vs
ZCBjYXVzZSBQaVAgdG8gcmV0dXJuIHRvIGZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgt
W1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6IFJlbmFtZWQgZnJvbSAtc2V0Qm91
bmRzOi4gLWxheW91dFN1YmxheWVycyBpcyBjYWxsZWQKKyAgICAgICAgICAgIG1vcmUgY29uc2lz
dGVudGx5IHRoYW4gLXNldEJvdW5kczosIGluY2x1ZGluZyB3aGVuIGEgc3VibGF5ZXIgaXMgYWRk
ZWQgdG8gdGhlIGxheWVyLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RvcFJvdXRp
bmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyk6IFRoZSBQaVAgV2ViQVZQ
bGF5ZXJMYXllcidzCisgICAgICAgICAgICBtb2RlbFZpZGVvTGF5ZXJGcmFtZSBwcm9wZXJ0eSBt
YXkgaGF2ZSBiZWVuIG1vZGlmaWVkLCBzbyBwYXNzIGl0IGJhY2sgdXAgdG8gdGhlIGZ1bGxzY3Jl
ZW4KKyAgICAgICAgICAgIGxheWVyIHdoZW4gZXhpdGluZyBQaVAuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBS
ZXF1ZXN0IGZ1bGxzY3JlZW4gaWYgd2UgYXV0by1QaVBlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4pOiBPbmx5IHJlY3JlYXRlIG93
bmVkIG9iamVjdHMgaWYgdGhleSBkaWQgbm90IGFscmVhZHkgZXhpc3QuCisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQpOiBJ
ZiB3ZSBhcmUgaW4gUGlQIG1vZGUsIGVudGVyIGZ1bGxzY3JlZW4gYnkgc3RvcHBpbmcgUGlQLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5k
RXhpdEZ1bGxzY3JlZW4pOiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSAtPiByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoKS4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogQW5pbWF0ZSBvdXQgdGhlIGZ1bGxzY3JlZW4gd2lu
ZG93LCBpZiBleGl0aW5nIEZ1bGxzY3JlZW4gLT4gUGlQLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6IFNldCBtX3No
b3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kIGlmIHdlIGF1dG8t
UGlQZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVk
VG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSAtPiByZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoKS4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp3aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUpOiBJZiB3ZSBhcmUgcmV0dXJuaW5nIGZy
b20gUGlQIC0+IEZ1bGxzY3JlZW4sIGRvIG5vdCBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVy
ZUluUGljdHVyZSk6IElmIHdlIGFyZSByZXR1cm5pbmcgZnJvbSBQaVAgLT4gRnVsbHNjcmVlbiwg
c2hvdyB0aGUgY29udHJvbHMgYW5kIG5vdGlmeSBjbGllbnRzLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdp
dGhDb21wbGV0aW9uSGFuZGxlcik6IEFuaW1hdGUgaW4gdGhlIGZ1bGxzY3JlZW4gd2luZG93LCBp
ZiByZXR1cm5pbmcgZnJvbSBQaVAgLT4gRnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24pOiBT
ZXQgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgaWYgd2UgYXJlIGVu
dGVyaW5nIFBpUCBmcm9tIEZ1bGxzY3JlZW4uCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29h
L0FWS2l0U1BJLmg6CisKIDIwMTUtMTAtMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIC8gZHVwbGlj
YXRlZCBYSFIgdGltZWxpbmUgaW5zdHJ1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2JhNjAxZGRm
Zjg3M2JiZjM4Y2QzOTc1MzY5OTQyOTMwODU0MDZlMS4uMTc3MWQ0ZTcwM2M4MzY1MjA3YzcwZDgz
NzBkNWQ3MTQwN2NlMGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTA0
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEZ1bGxz
Y3JlZW4gLT4gUGlQIHNob3VsZCByZXN1bWUgdG8gRnVsbHNjcmVlbiwgbm90IGlubGluZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTA2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMg
dG8gcGFzcyBpc1Zpc2libGUoKSwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSwgYW5kIHJl
cXVlc3RGdWxsc2NyZWVuTW9kZSgpCisgICAgICAgIHRvIGFuZCBmcm9tIG1vZGVscyBhbmQgaW50
ZXJmYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KTogTm90aWZ5IHRoZSBmdWxsc2NyZWVuIG1hbmFnZXIsIGlmIHByZXNldC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsgdGFrZXMgYSBt
b2RlIGVudW0uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6aXNWaXNpYmxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBQYXNzIHRvIGFsbCBl
eGlzdGluZyBpbnRlcmZhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCk6IERvIG5vdCByZS1jcmVhdGUgdGhl
IHZpZXcgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogUmVuYW1lZCBmcm9t
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOyB0YWtlcyBhIG1vZGUgZW51bS4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1Zpc2libGUpOiBBZGRlZC4g
UXVlcnkgUGFnZTo6aXNWaXNpYmxlKCkgYW5kIFBhZ2U6OmlzSW5XaW5kb3coKSwgdGhlIGxhdHRl
ciBiZWNhdXNlCisgICAgICAgICAgICAgICAgUGlQIHdpbGwgY2F1c2UgUGFnZTo6aXNWaXNpYmxl
KCkgdG8gYmUgVFJVRSBldmVuIHdoZW4gdGhlIGNvbnRhaW5pbmcgdGFiIGlzIGJhY2tncm91bmRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1
ZXN0RXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQpOiBPbmx5IHJlc2l6ZSB0aGUgdmlldyBpZiB3ZSBhcmUgbm90
IGFscmVhZHkgaW4gb25lIG9mCisgICAgICAgICAgICAgICAgdGhlIGZ1bGxzY3JlZW4gbW9kZXMu
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuKTogRGVsZXRlZC4KKwogMjAxNS0xMC0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBXS1ZpZXcgYmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFk
cyB0byB3ZWlyZCBBUEkgaXNzdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCBiZDMwNjc1Y2IxYWNlYThhMTVlNzc5ZDc2M2JiZGVhNjY5NzkzYWY0Li44NzI5
ZjUwNjUyMzk5NTFjYzRhNTIzMzI4OGQ1MDhkNTA0NjZjODFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM3Nyw5ICszNzcsMzggQEAgYm9vbCBIVE1MVmlk
ZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoY29uc3QgU3RyaW5nJiBt
b2RlKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgcHJlc2VudGF0
aW9uTW9kZVRvRnVsbHNjcmVlbk1vZGUoY29uc3QgU3RyaW5nJiBwcmVzZW50YXRpb25Nb2RlLCBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUmIGZ1bGxzY3JlZW5Nb2Rl
KQoreworICAgIGlmIChwcmVzZW50YXRpb25Nb2RlID09IHByZXNlbnRhdGlvbk1vZGVGdWxsc2Ny
ZWVuKCkpIHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGUgPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKHByZXNlbnRhdGlvbk1vZGUgPT0gcHJlc2VudGF0aW9uTW9kZVBpY3R1cmVJ
blBpY3R1cmUoKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZSA9IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChwcmVzZW50YXRpb25Nb2RlID09IHByZXNlbnRhdGlv
bk1vZGVJbmxpbmUoKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZSA9IEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0U2V0UHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1v
ZGUgPT0gcHJlc2VudGF0aW9uTW9kZUlubGluZSgpICYmIGlzRnVsbHNjcmVlbigpKSB7CisgICAg
VmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVuTW9kZSA9IFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lOworICAgIGlmICghcHJlc2VudGF0aW9uTW9kZVRvRnVsbHNjcmVlbk1vZGUobW9kZSwgZnVs
bHNjcmVlbk1vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICJIVE1MVmlk
ZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKCVwKSAtIHNldHRpbmcgdG8gXCIl
c1wiIiwgdGhpcywgbW9kZS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZXRGdWxsc2NyZWVuTW9kZShm
dWxsc2NyZWVuTW9kZSk7Cit9CisKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit7
CisgICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgJiYgaXNGdWxsc2NyZWVu
KCkpIHsKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTM4NywxMiArNDE2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICBpZiAoIW1lZGlhU2Vzc2lvbigp
LmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKnRoaXMpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
U2V0UHJlc2VudGF0aW9uTW9kZSglcCkgLSBzZXR0aW5nIHRvIFwiJXNcIiIsIHRoaXMsIG1vZGUu
dXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpZiAobW9kZSA9PSBwcmVzZW50YXRpb25Nb2RlRnVsbHNj
cmVlbigpKQotICAgICAgICBlbnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKLSAgICBlbHNlIGlmIChtb2RlID09IHByZXNlbnRhdGlvbk1vZGVQaWN0dXJlSW5QaWN0
dXJlKCkpCi0gICAgICAgIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSk7CisgICAgZW50ZXJGdWxsc2NyZWVuKG1vZGUpOwogfQogCiBTdHJpbmcgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDMzNGE2YTBmNjQ0NzIxN2I1NDIxMjY4NTdh
YTQ4ZmFhYjc2YjZlZGUuLjBmMWRiYTIyYzFiYWU0YWQ3MmEwMDEzYWE4OTI3YjY5YWE5NjdlNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04Miw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgU3RyaW5nIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZjZlYzkw
OWU4YjIyY2RlYTcwZWFlNDgxZTdjNjg0ZDIyZDI2YmQwMS4uOTA1ZjJkY2JmYTc5MjI5YWY1ODI1
OTVhNjg2NjhjOTYzZjAxZWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBA
IC0xNDMsMTMgKzE0MywxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5u
aW5nRm9yd2FyZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFj
a3dhcmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0
X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFP
cHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3Zl
cnJpZGU7CisKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IG1f
aW50ZXJmYWNlOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dD4gbV9tb2RlbDsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7
CkBAIC00NjEsMTMgKzQ2MiwxMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjplbmRTY2FubmluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhp
cywgdGhpc10geworICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgbW9kZV0gewog
ICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpOworICAgICAgICAgICAgbV9tb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1v
ZGUpOwogICAgIH0pOwogfQogCkBAIC01MzQsNiArNTM1LDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFF
bGVtZW50CiAgICAgfSk7CiB9CiAKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Cisg
ICAgcmV0dXJuIG1fbW9kZWwgPyBtX21vZGVsLT5pc1Zpc2libGUoKSA6IGZhbHNlOworfQorCiAj
cHJhZ21hIG1hcmsgT3RoZXIKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgVUlW
aWV3ICp2aWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGQyZDhjODAzOGE1MTJkYmY3ZTRh
ZTVmODE2MTIzOTkwYTUzMmUwMi4uYWZjMTc0N2E0YmZlYzlkZjA3YjhkNTJjYjlmYTRiOWJkMGYx
M2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTExNSw2ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVv
UGljdHVyZUluUGljdHVyZSgpIGNvbnN0OwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2spOwogICAgIGJvb2wgd2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAKICAgICB2b2lkIHdpbGxTdGFydFBpY3R1cmVJblBpY3R1cmUo
KTsKICAgICB2b2lkIGRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpOwpAQCAtMTU0LDYgKzE1NSw4
IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fZXhpdENvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2VudGVyUmVxdWVzdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFJldHVyblRvRnVs
bHNjcmVlbldoZW5TdG9wcGluZ1BpUCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFJldHVy
blRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kIHsgZmFsc2UgfTsKIAogICAgIHZv
aWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
aW5kZXggODI2YWYxM2E2NTMxODFiMDcxMjliOWZhY2I4OTIyZWUzNDJmM2QyYi4uYjllZjM3YmM1
NTFhYTg1NTlhOGQxNTdjMTIxOGU3MzE5YWY4ZGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbQpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhi
b29sIHZhbCkKICNlbmRpZgogCiBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRXYXRjaGRvZ1Rp
bWVySW50ZXJ2YWwgPSAxOworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIEZ1bGxzY3JlZW5Q
aVBBbmltYXRpb25EdXJhdGlvbiA9IDAuNDsKIAogQGNsYXNzIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb247CiAKQEAgLTY0NywyMSArNjQ4LDE2IEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAg
ICAgcmV0dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwogfQogCi0tICh2b2lkKXNldEJvdW5kczoo
Q0dSZWN0KWJvdW5kcworLSAodm9pZClsYXlvdXRTdWJsYXllcnMKIHsKLSAgICBpZiAoQ0dSZWN0
RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5kcykpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBbc3VwZXIgc2V0Qm91bmRzOmJvdW5kc107Ci0gICAgCiAgICAgaWYgKFtfdmlkZW9TdWJs
YXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9s
bGVyIGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJuOwogCisgICAgW192aWRlb1N1YmxheWVyIHNl
dFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoc2VsZi5ib3VuZHMpLCBDR1JlY3RH
ZXRNaWRZKHNlbGYuYm91bmRzKSldOworCiAgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7
CiAgICAgRmxvYXRSZWN0IHRhcmdldFZpZGVvRnJhbWU7CiAgICAgZmxvYXQgdmlkZW9Bc3BlY3RS
YXRpbyA9IHNlbGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMu
aGVpZ2h0OwpAQCAtODM3LDYgKzgzMywxMCBAQCBzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVy
Vmlld19zdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaQogewog
ICAgIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsKICAgICBb
cGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107Cisg
ICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVtwbGF5ZXJMYXllclZpZXcgcGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVy
TGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5
ZXIgKilbcGlwVmlldyBsYXllcl07CisgICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXll
ckZyYW1lOnBpcFBsYXllckxheWVyLm1vZGVsVmlkZW9MYXllckZyYW1lXTsKIH0KIAogc3RhdGlj
IFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqV2ViQVZQbGF5ZXJMYXllclZp
ZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyhpZCBhU2VsZiwgU0VMKQpAQCAtMTA0
OCw2ICsxMDQ4LDE1IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gW21fcGxheWVy
Q29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQorewor
ICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJl
dHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkpIHsKKyAgICAg
ICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCA9IGZh
bHNlOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwor
ICAgIH0KK30KKwogQGludGVyZmFjZSBVSVdpbmRvdyAoKQogLSAoQk9PTClfaXNIb3N0ZWRJbkFu
b3RoZXJQcm9jZXNzOwogQGVuZApAQCAtMTA2NSwzMyArMTA3NCw0MCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1Zp
ZXcsIGNvbnN0CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rp
b24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICBib29sIGlzSW5QaWN0dXJlSW5QaWN0dXJl
TW9kZSA9IGhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZSk7CiAgICAgbV9tb2RlID0gbW9kZTsKICAgICBtX3BhcmVudFZpZXcg
PSBwYXJlbnRWaWV3OwogICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmlldy53aW5kb3c7CiAK
ICAgICBpZiAoIVtbcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3Nd
KSB7Ci0gICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NVSVdpbmRvd0luc3RhbmNlKCkg
aW5pdFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBib3VuZHNdXSk7
CisgICAgICAgIGlmICghbV93aW5kb3cpCisgICAgICAgICAgICBtX3dpbmRvdyA9IGFkb3B0TlMo
W2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W1tnZXRVSVNjcmVlbkNsYXNz
KCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwogICAgICAgICBbbV93aW5kb3cgc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07Ci0gICAgICAgIG1fdmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRd
KTsKKyAgICAgICAgaWYgKCFtX3ZpZXdDb250cm9sbGVyKQorICAgICAgICAgICAgbV92aWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0p
OwogICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gc2V0RnJhbWU6W21fd2luZG93IGJv
dW5kc11dOwogICAgICAgICBbbV92aWV3Q29udHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVk
T3JpZW50YXRpb25zOllFU107CiAgICAgICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xs
ZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAgIFttX3dpbmRvdyBtYWtlS2V5QW5k
VmlzaWJsZV07CiAgICAgfQogCi0gICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0
V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgaWYgKCFtX3Bs
YXllckxheWVyVmlldykKKyAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0
V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CiAgICAgW21fcGxheWVy
TGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFj
a0FjdGl2ZV1dOwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dl
dFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKLSAgICAKLSAgICBbbV9wbGF5ZXJMYXllclZp
ZXcgc2V0VmlkZW9WaWV3OiZ2aWRlb1ZpZXddOwotICAgIFttX3BsYXllckxheWVyVmlldyBhZGRT
dWJ2aWV3OiZ2aWRlb1ZpZXddOworCisgICAgaWYgKCFpc0luUGljdHVyZUluUGljdHVyZU1vZGUp
IHsKKyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVvVmlldzomdmlkZW9WaWV3XTsK
KyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6JnZpZGVvVmlld107CisgICAg
fQogCiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXll
ciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIg
c2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBpbml0aWFsUmVjdC53aWR0
aCgpLCBpbml0aWFsUmVjdC5oZWlnaHQoKSldOwogICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0Rp
bWVuc2lvbnM6W21fcGxheWVyQ29udHJvbGxlciBjb250ZW50RGltZW5zaW9uc11dOwogCi0gICAg
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckluc3RhbmNlKCkgaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6bV9wbGF5ZXJMYXllclZpZXcu
Z2V0KCldKTsKKyAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCisgICAgICAgIG1fcGxh
eWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJ
bnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgp
XSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJv
bHM6Tk9dOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6
KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CkBAIC0xMTUy
LDYgKzExNjgsMTUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50
ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRo
aXMpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25n
VGhpcyh0aGlzKTsKKworICAgIGlmIChbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJ
blBpY3R1cmVBY3RpdmVdKSB7CisgICAgICAgIC8vIE5PVEU6IFRoZSBmdWxsc2NyZWVuIG1vZGUg
d2lsbCBiZSByZXN0b3JlZCBpbiBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29t
cGxldGlvbkhhbmRsZXIoKS4KKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVu
U3RvcHBpbmdQaVAgPSB0cnVlOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9w
UGljdHVyZUluUGljdHVyZV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9wbGF5
ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0Nv
bG9yXV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCBzdHJvbmdUaGlzXSAoQk9PTCBzdWNjZWVk
ZWQsIE5TRXJyb3IqKSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdWNjZWVkZWQpOwogICAgICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW5TdGFuZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywg
Ym9vbFN0cmluZyhzdWNjZWVkZWQpKTsKQEAgLTEyODQsNyArMTMwOSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4o
KQogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgIW1fZXhpdFJlcXVlc3RlZCkg
ewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5wYXVzZSgpOwotICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0KIH0KIApAQCAtMTMxNiwx
MSArMTM0MSwxOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxs
U3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIs
IHRoaXMpOwogICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisKKyAgICBpZiAoIWhhc01vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpKQorICAgICAgICByZXR1cm47
CisKKyAgICBbZ2V0VUlWaWV3Q2xhc3MoKSBhbmltYXRlV2l0aER1cmF0aW9uOkZ1bGxzY3JlZW5Q
aVBBbmltYXRpb25EdXJhdGlvbiBhbmltYXRpb25zOiBeeworICAgICAgICBbbV93aW5kb3cgc2V0
QWxwaGE6MF07CisgICAgfV07CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4s
ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0
dXJlKCVwKSIsIHRoaXMpOworICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRl
cmluZ0ZvcmVncm91bmQgPSBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5QaWN0dXJl
V2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdOwogICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOwogICAgIFttX3dpbmRvdyBzZXRI
aWRkZW46WUVTXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107CkBAIC0xMzQzLDI0ICsxMzc2LDM0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICAgICAgbV9m
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwogCiAgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
KCVwKSIsIHRoaXMpOworICAgIGlmIChoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgW21fd2lu
ZG93IHNldEhpZGRlbjpOT107CiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNl
dEhpZGRlbjpOT107CiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogewog
ICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRp
ZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotICAgIGlmIChoYXNNb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKKyAgICBpZiAo
aGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkpIHsKKyAgICAgICAgLy8gQVNTVU1QVElPTjogd2UgYXJlIGV4aXRpbmcgcGlwIGJlY2F1c2Ug
d2UgYXJlIGVudGVyaW5nIGZ1bGxzY3JlZW4KKyAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsK
KworICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAgICAgICAgICBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwogCkBAIC0xMzc4
LDYgKzE0MjEsMjEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlk
U3RvcFBpY3R1cmVJblBpY3R1cmUoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVy
KHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCByZXN0b3JlZCkpCiB7CiAgICAgTE9HKEZ1
bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBp
Y3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKCVwKSIsIHRoaXMpOworICAg
IGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCkgeworICAgICAg
ICAvLyBBU1NVTVBUSU9OOiB3ZSBhcmUgZXhpdGluZyBwaXAgYmVjYXVzZSB3ZSBhcmUgZW50ZXJp
bmcgZnVsbHNjcmVlbgorICAgICAgICBbZ2V0VUlWaWV3Q2xhc3MoKSBhbmltYXRlV2l0aER1cmF0
aW9uOkZ1bGxzY3JlZW5QaVBBbmltYXRpb25EdXJhdGlvbiBhbmltYXRpb25zOl57CisgICAgICAg
ICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKKyAgICAgICAgICAgIFttX3dpbmRvdyBzZXRB
bHBoYToxXTsKKyAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRI
aWRkZW46Tk9dOworICAgICAgICB9XTsKKworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciopIHsKKyAgICAgICAgICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlz
KHRoaXMpOwogICAgIFJldGFpblB0cjxpZD4gc3Ryb25nQ29tcGxldGlvbkhhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAgICAgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKFtzdHJvbmdUaGlzLCBzdHJvbmdDb21wbGV0aW9uSGFuZGxlcl0oYm9vbCByZXN0b3Jl
ZCkgIHsKQEAgLTEzOTMsNiArMTQ1MSw3IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihXZWJWaWRlb0Z1CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNv
bjo6UGljdHVyZUluUGljdHVyZVN0YXJ0ZWQpIHsKKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTQwMSw3ICsxNDYwLDcgQEAgYm9vbCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFdlYlZp
ZGVvRnUKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cGF1c2UoKTsKICAgICAKIAot
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIAogICAgIGlmICghbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3QoRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCmluZGV4IDNjNTVhYTNi
MWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYuLmY5YTU4ZmRhMjE3OWZhODU1MDA5NTFh
YTFjYzI3OTA3NTEzMWNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC00NiwxMyArNDYsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBl
bmRTY2FubmluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKICAgICBlbnVtIFZpZGVvR3Jhdml0
eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJH
cmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXggMWFhM2NlNWJiYzkw
OGNjZGE0NGEzZDIyYjQ0MmEyMDJhNzZiZTEwNi4uOTg3YWE5Yjg1OWZmYzA2NmM3OTczNTk2NGFi
MTU1MTNiY2JiYjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTcw
LDEyICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0
eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzVmlzaWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQppbmRleCA3NzBjMmYyY2NkMzU2Mzc1ZjY1ODI5YzA4NjEyNzgyZTIyMWJm
MWFhLi4wOWZiODI5NmQxMmU5N2M0MDk1MzFkOWY0ODc5NDZhODI5YjRmYmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xMTIsNyArMTEyLDYgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6
OkV2ZW50KiBldmVudCkKIHsKLSAgICBMT0coTWVkaWEsICJoYW5kbGVFdmVudCAlcyIsIGV2ZW50
LT50eXBlKCkuY2hhcmFjdGVyczgoKSk7CiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50
eXBlKCkpOwogfQogCkBAIC0yNDUsMTAgKzI0NCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZygpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50
LT5lbmRTY2FubmluZygpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVu
dCAmJiBtX3ZpZGVvRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIG1fdmlkZW9FbGVt
ZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVv
RWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQorICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgcmVjdCkKQEAg
LTM4OSw0ICszODgsMTUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnQKICAgICAgICAgbV92aWRl
b0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0K
IAorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aXNWaXNpYmxlKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fdmlkZW9FbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmlzVmlzaWJsZSgpOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0
U1BJLmgKaW5kZXggMjFmNWYwYjU5MDM5OGJlMzIzOTRjYzRjOTMzZGNkYWRkMGQ2ZDU5NC4uNzY3
MDZjM2E4MWY0ZjI3MTBmYzk4MmU0ZDRlNzlhOTQ5OTQ3NDkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTk2LDYgKzk2LDcgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVu
UmVhc29uKSB7CiAtICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc3Ryb25nKSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcGljdHVyZUluUGljdHVyZVdhc1N0
YXJ0ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kOwogQGVuZAogCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggN2QzMDdjZmUyNDk1ZGE1MDMyMzNmYTI0OWNiM2Y5ZTJiNmQyN2Y4
NC4uYmEwOGQyZjQwNDkzOWFlYjFkMjc5YmY2OTYxZTc5ZDkyMDYzMDBiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTYzMiw2ICs2
MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKKyAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXItPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCBtX3Bh
Z2VJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDdlMWUwZDkwNjJjNzYw
Y2M1M2ZmOTE3OTA1OGMwOGU4MTk5NmZiZTEuLjU1NjM2YzMyMzU5ZDhmMDJhNzdiMjllNTBhNDI3
MWJlY2Y5ZDBhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtNzUsMTIgKzc1LDEz
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5
ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkg
b3ZlcnJpZGU7CkBAIC0xMDQsNiArMTA1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEhp
ZGVBbmRFeGl0RnVsbHNjcmVlbigpOwogICAgIGJvb2wgaGFzTW9kZShXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0OwogICAgIGJvb2wgbWF5
QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdDsKKyAgICB2b2lk
IGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OwpAQCAtMTQ3LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpblNjYW5u
aW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgYmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRf
dCBjb250ZXh0SWQpOwotICAgIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCk7CisgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4
dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
OwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCmluZGV4IGY0NTIwZmUzMDFiZjViOWQ3MjU3ODdmZDJhOWY5MzhhMTY0YmFjNjQuLjZl
YmM1YjE4YzgyYmNlZWM2Yzc5M2Q0NzRmMjQyMWE2MjU5NTcxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0xNTYsMTAgKzE1NiwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dDo6ZW5kU2Nhbm5pbmcoKQogICAgICAgICBtX21hbmFnZXItPmVuZFNjYW5u
aW5nKG1fY29udGV4dElkKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1f
bWFuYWdlci0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAgICAgICAgbV9t
YW5hZ2VyLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobV9jb250ZXh0SWQsIG1vZGUpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckZyYW1lKFdl
YkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkKQEAgLTE5Miw2ICsxOTIsMTEgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpI
VE1MTWVkaWFFbGUKICAgICAgICAgbV9tYW5hZ2VyLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobV9j
b250ZXh0SWQsIG1vZGUpOwogfQogCitib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYW5hZ2VyID8gbV9tYW5hZ2Vy
LT5pc1Zpc2libGUoKSA6IGZhbHNlOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpAQCAt
Mjg0LDYgKzI4OSwxMiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWF5
QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jb250ZXh0TWFw
LnZhbHVlcygpKQorICAgICAgICBzdGQ6OmdldDwxPih0dXBsZSktPmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKCk7Cit9CisKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJ
bnRlcmZhY2VUdXBsZSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVs
QW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBSZWY8V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwpAQCAtMzIzLDEzICszMzQsMTYgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50
NjRfdCBjb250ZXh0SWQsIHUKIAogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5z
dXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAotICAgIFJldGFpblB0cjxXZWJMYXll
ckhvc3RWaWV3PiB2aWV3ID0gYWRvcHROUyhbW1dlYkxheWVySG9zdFZpZXcgYWxsb2NdIGluaXRd
KTsKKyAgICBSZXRhaW5QdHI8V2ViTGF5ZXJIb3N0Vmlldz4gdmlldyA9IHN0YXRpY19jYXN0PFdl
YkxheWVySG9zdFZpZXcqPihtb2RlbC0+bGF5ZXJIb3N0VmlldygpKTsKKyAgICBpZiAoIXZpZXcp
IHsKKyAgICAgICAgdmlldyA9IGFkb3B0TlMoW1tXZWJMYXllckhvc3RWaWV3IGFsbG9jXSBpbml0
XSk7CisgICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KHZpZXcpOworICAgIH0KICAgICBb
dmlldyBzZXRDb250ZXh0SUQ6dmlkZW9MYXllcklEXTsKLSAgICBtb2RlbC0+c2V0TGF5ZXJIb3N0
Vmlldyh2aWV3KTsKICAgICBpZiAoaG9zdGluZ0RldmljZVNjYWxlRmFjdG9yICE9IDEpIHsKICAg
ICAgICAgLy8gSW52ZXJ0IHRoZSBzY2FsZSB0cmFuc2Zvcm0gYWRkZWQgaW4gdGhlIFdlYlByb2Nl
c3MgdG8gZml4IDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4uCiAgICAgICAgIGZsb2F0IGludmVy
c2VTY2FsZSA9IDEgLyBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgICAgIFtbbW9kZWwt
PmxheWVySG9zdFZpZXcoKSBsYXllcl0gc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0z
RE1ha2VTY2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldOworICAgICAgICBbW3Zp
ZXcgbGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUoaW52
ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXTsKICAgICB9CiAKICAgICBVSVZpZXcgKnBhcmVu
dFZpZXcgPSBkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9wYWdl
LT5kcmF3aW5nQXJlYSgpKS5yZW1vdGVMYXllclRyZWVIb3N0KCkucm9vdExheWVyKCk7CkBAIC00
OTQsOSArNTA4LDkgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuZFNj
YW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4
dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlJlcXVlc3RFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFNldHVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCkBAIC01NTcsNiArNTcxLDExIEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBXCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Ojppc1Zpc2libGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UtPmlzVmlld1Zpc2libGUo
KSAmJiBtX3BhZ2UtPmlzSW5XaW5kb3coKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0
SWQpCiB7CiAgICAgYm9vbCBpc1ZpZXdWaXNpYmxlID0gbV9wYWdlLT5pc1ZpZXdWaXNpYmxlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggN2Y0ZTM3NTIwYTgyMjVjYjIwOGNjMzc0N2ExY2M1OGE5
OTczZDUwZS4uZjFkMGZlNTExMTQ4MzcxMDhhYzdhN2Y1NzViNjYwZTk0MTY5ZmFkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBiZWdpblNj
YW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGVuZFNjYW5uaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRf
dCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSk7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAg
dm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGIzMTUzYzBiMzk5MjJlZWNiNDQ5Mjc4YzEz
OWJmOTRhOTJmYjcyZGYuLmQ0ZGNhYWE2NzM3YzQ0OTIyMmY4ZGU2MDFmM2RlYmI5ZWZlMDYxODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNyBA
QCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAgICBCZWdpblNjYW5u
aW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQmVnaW5TY2FubmluZ0JhY2t3YXJk
KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBFbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQp
Ci0gICAgUmVxdWVzdEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXF1
ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKICAg
ICBEaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIERpZEV4aXRGdWxs
c2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRFbnRlckZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZWVjNjVhYjQ3NTQ3MjMyMmQ4
ODZjZGNhNzViM2Y4NGUzODQ4NWQ5Mi4uYTE5YjMyMWM2MGViZDlkMWUzZGQwNzE5NzAyZDJmMDY1
YmU1NTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yNDAsMTEgKzI0MCwxMyBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZQogCiAgICAgRmxvYXRSZWN0IGNsaWVudFJlY3QgPSBjbGllbnRS
ZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZy
YW1lID0gRmxvYXRSZWN0KDAsIDAsIGNsaWVudFJlY3Qud2lkdGgoKSwgY2xpZW50UmVjdC5oZWln
aHQoKSk7Ci0gICAgCisKKyAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgb2xkTW9kZSA9IGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKTsKICAgICBpbnRlcmZh
Y2UtPnNldFRhcmdldElzRnVsbHNjcmVlbih0cnVlKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxz
Y3JlZW5Nb2RlKG1vZGUpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVu
dCk7Ci0gICAgbW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOworICAg
IGlmIChvbGRNb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpCisgICAgICAgIG1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1l
KTsKIAogICAgIGlmIChpbnRlcmZhY2UtPmlzQW5pbWF0aW5nKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM5NCw5ICszOTYsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuZFNj
YW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVu
ZFNjYW5uaW5nKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7
Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsKKyAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264901</attachid>
            <date>2015-11-05 16:58:10 -0800</date>
            <delta_ts>2015-11-18 14:29:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150906-20151105165711.patch</filename>
            <type>text/plain</type>
            <size>39405</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ4NDE2OTYwZWQ5YmQw
MWNkYzE1YmIxYzRhOTZjZTFlOTJlMTEzOC4uNjQ5NDUxODA3MDYxM2NjYjcxMWJhMDliZTNmOWQz
NDU4NzBmMmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTExLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEZ1bGxzY3JlZW4g
LT4gUGlQIHNob3VsZCByZXN1bWUgdG8gRnVsbHNjcmVlbiwgbm90IGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiAicmVzdG9yaW5nIiB0
aGUgdXNlciBpbnRlcmZhY2Ugd2hlbiBleGl0aW5nIFBpUCwgd2Ugc2hvdWxkIHJldHVybiB0byBG
dWxsc2NyZWVuIGlmIHRoYXQKKyAgICAgICAgaXMgd2hlcmUgZnVsbHNjcmVlbiB3YXMgaW5pdGlh
dGVkIGZyb20uIEFkZGl0aW9uYWxseSwgd2hlbiB3ZSAiYXV0by1QaVAiIGJ5IGJhY2tncm91bmRp
bmcgdGhlCisgICAgICAgIGFwcCBpbiBGdWxsc2NyZWVuIG1vZGUsIHdlIHNob3VsZCAiYXV0by11
bi1QaVAiIHdoZW4gcmVzdG9yaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBmb3JlZ3JvdW5kLgorCisg
ICAgICAgIFJhdGhlciB0aGFuIGhhdmUgYSBzZXBhcmF0ZSBtZXRob2QgdG8gcmVxdWVzdCBleGl0
aW5nIGZ1bGxzY3JlZW4sIGVudGVyaW5nIHN0YW5kYXJkIGZ1bGxzY3JlZW4sCisgICAgICAgIGFu
ZCBzd2l0Y2hpbmcgdG8gJiBmcm9tIFBpUCwgYWRkIGEgbmV3IG1ldGhvZCBzZXRGdWxsc2NyZWVu
TW9kZSgpIHdoaWNoIGRvZXMgYWxsIHRocmVlLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXNlbnRhdGlvbk1vZGVUb0Z1bGxzY3Jl
ZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFNldFBy
ZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorCisg
ICAgICAgIEFkZCBtZXRob2RzIHRvIGZvciBjbGllbnRzIHRvIHJlcXVlc3QgYSBzcGVjaWZpYyBm
dWxsc2NyZWVuIG1vZGUsIGFuZCB0byBxdWVyeSB3aGV0aGVyCisgICAgICAgIHRoZSBwYWdlIGlz
IGN1cnJlbnRseSB2aXNpYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisK
KyAgICAgICAgVHJhY2sgd2hldGhlciByZXR1cm5pbmcgZnJvbSBQaVAgc2hvdWxkIGVudGVyIGZ1
bGxzY3JlZW4sIG9yIHdoZXRoZXIgZm9yZWdyb3VuZGluZyB0aGUgYXBwCisgICAgICAgIHNob3Vs
ZCBjYXVzZSBQaVAgdG8gcmV0dXJuIHRvIGZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgt
W1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6IFJlbmFtZWQgZnJvbSAtc2V0Qm91
bmRzOi4gLWxheW91dFN1YmxheWVycyBpcyBjYWxsZWQKKyAgICAgICAgICAgIG1vcmUgY29uc2lz
dGVudGx5IHRoYW4gLXNldEJvdW5kczosIGluY2x1ZGluZyB3aGVuIGEgc3VibGF5ZXIgaXMgYWRk
ZWQgdG8gdGhlIGxheWVyLgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RvcFJvdXRp
bmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyk6IFRoZSBQaVAgV2ViQVZQ
bGF5ZXJMYXllcidzCisgICAgICAgICAgICBtb2RlbFZpZGVvTGF5ZXJGcmFtZSBwcm9wZXJ0eSBt
YXkgaGF2ZSBiZWVuIG1vZGlmaWVkLCBzbyBwYXNzIGl0IGJhY2sgdXAgdG8gdGhlIGZ1bGxzY3Jl
ZW4KKyAgICAgICAgICAgIGxheWVyIHdoZW4gZXhpdGluZyBQaVAuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBS
ZXF1ZXN0IGZ1bGxzY3JlZW4gaWYgd2UgYXV0by1QaVBlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4pOiBPbmx5IHJlY3JlYXRlIG93
bmVkIG9iamVjdHMgaWYgdGhleSBkaWQgbm90IGFscmVhZHkgZXhpc3QuCisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQpOiBJ
ZiB3ZSBhcmUgaW4gUGlQIG1vZGUsIGVudGVyIGZ1bGxzY3JlZW4gYnkgc3RvcHBpbmcgUGlQLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5k
RXhpdEZ1bGxzY3JlZW4pOiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSAtPiByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoKS4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogQW5pbWF0ZSBvdXQgdGhlIGZ1bGxzY3JlZW4gd2lu
ZG93LCBpZiBleGl0aW5nIEZ1bGxzY3JlZW4gLT4gUGlQLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6IFNldCBtX3No
b3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kIGlmIHdlIGF1dG8t
UGlQZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVk
VG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSAtPiByZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoKS4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp3aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUpOiBJZiB3ZSBhcmUgcmV0dXJuaW5nIGZy
b20gUGlQIC0+IEZ1bGxzY3JlZW4sIGRvIG5vdCBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVy
ZUluUGljdHVyZSk6IElmIHdlIGFyZSByZXR1cm5pbmcgZnJvbSBQaVAgLT4gRnVsbHNjcmVlbiwg
c2hvdyB0aGUgY29udHJvbHMgYW5kIG5vdGlmeSBjbGllbnRzLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdp
dGhDb21wbGV0aW9uSGFuZGxlcik6IEFuaW1hdGUgaW4gdGhlIGZ1bGxzY3JlZW4gd2luZG93LCBp
ZiByZXR1cm5pbmcgZnJvbSBQaVAgLT4gRnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24pOiBT
ZXQgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgaWYgd2UgYXJlIGVu
dGVyaW5nIFBpUCBmcm9tIEZ1bGxzY3JlZW4uCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29h
L0FWS2l0U1BJLmg6CisKIDIwMTUtMTAtMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIC8gZHVwbGlj
YXRlZCBYSFIgdGltZWxpbmUgaW5zdHJ1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2JhNjAxZGRm
Zjg3M2JiZjM4Y2QzOTc1MzY5OTQyOTMwODU0MDZlMS4uMTc3MWQ0ZTcwM2M4MzY1MjA3YzcwZDgz
NzBkNWQ3MTQwN2NlMGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTA0
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEZ1bGxz
Y3JlZW4gLT4gUGlQIHNob3VsZCByZXN1bWUgdG8gRnVsbHNjcmVlbiwgbm90IGlubGluZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTA2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMg
dG8gcGFzcyBpc1Zpc2libGUoKSwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSwgYW5kIHJl
cXVlc3RGdWxsc2NyZWVuTW9kZSgpCisgICAgICAgIHRvIGFuZCBmcm9tIG1vZGVscyBhbmQgaW50
ZXJmYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KTogTm90aWZ5IHRoZSBmdWxsc2NyZWVuIG1hbmFnZXIsIGlmIHByZXNldC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsgdGFrZXMgYSBt
b2RlIGVudW0uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6aXNWaXNpYmxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBQYXNzIHRvIGFsbCBl
eGlzdGluZyBpbnRlcmZhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCk6IERvIG5vdCByZS1jcmVhdGUgdGhl
IHZpZXcgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogUmVuYW1lZCBmcm9t
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOyB0YWtlcyBhIG1vZGUgZW51bS4KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojppc1Zpc2libGUpOiBBZGRlZC4g
UXVlcnkgUGFnZTo6aXNWaXNpYmxlKCkgYW5kIFBhZ2U6OmlzSW5XaW5kb3coKSwgdGhlIGxhdHRl
ciBiZWNhdXNlCisgICAgICAgICAgICAgICAgUGlQIHdpbGwgY2F1c2UgUGFnZTo6aXNWaXNpYmxl
KCkgdG8gYmUgVFJVRSBldmVuIHdoZW4gdGhlIGNvbnRhaW5pbmcgdGFiIGlzIGJhY2tncm91bmRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1
ZXN0RXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQpOiBPbmx5IHJlc2l6ZSB0aGUgdmlldyBpZiB3ZSBhcmUgbm90
IGFscmVhZHkgaW4gb25lIG9mCisgICAgICAgICAgICAgICAgdGhlIGZ1bGxzY3JlZW4gbW9kZXMu
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuKTogRGVsZXRlZC4KKwogMjAxNS0xMC0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBXS1ZpZXcgYmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFk
cyB0byB3ZWlyZCBBUEkgaXNzdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCBiZDMwNjc1Y2IxYWNlYThhMTVlNzc5ZDc2M2JiZGVhNjY5NzkzYWY0Li44NzI5
ZjUwNjUyMzk5NTFjYzRhNTIzMzI4OGQ1MDhkNTA0NjZjODFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM3Nyw5ICszNzcsMzggQEAgYm9vbCBIVE1MVmlk
ZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoY29uc3QgU3RyaW5nJiBt
b2RlKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgcHJlc2VudGF0
aW9uTW9kZVRvRnVsbHNjcmVlbk1vZGUoY29uc3QgU3RyaW5nJiBwcmVzZW50YXRpb25Nb2RlLCBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUmIGZ1bGxzY3JlZW5Nb2Rl
KQoreworICAgIGlmIChwcmVzZW50YXRpb25Nb2RlID09IHByZXNlbnRhdGlvbk1vZGVGdWxsc2Ny
ZWVuKCkpIHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGUgPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKHByZXNlbnRhdGlvbk1vZGUgPT0gcHJlc2VudGF0aW9uTW9kZVBpY3R1cmVJ
blBpY3R1cmUoKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZSA9IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChwcmVzZW50YXRpb25Nb2RlID09IHByZXNlbnRhdGlv
bk1vZGVJbmxpbmUoKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZSA9IEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0U2V0UHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1v
ZGUgPT0gcHJlc2VudGF0aW9uTW9kZUlubGluZSgpICYmIGlzRnVsbHNjcmVlbigpKSB7CisgICAg
VmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVuTW9kZSA9IFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lOworICAgIGlmICghcHJlc2VudGF0aW9uTW9kZVRvRnVsbHNjcmVlbk1vZGUobW9kZSwgZnVs
bHNjcmVlbk1vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICJIVE1MVmlk
ZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKCVwKSAtIHNldHRpbmcgdG8gXCIl
c1wiIiwgdGhpcywgbW9kZS51dGY4KCkuZGF0YSgpKTsKKyAgICBzZXRGdWxsc2NyZWVuTW9kZShm
dWxsc2NyZWVuTW9kZSk7Cit9CisKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit7
CisgICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgJiYgaXNGdWxsc2NyZWVu
KCkpIHsKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTM4NywxMiArNDE2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICBpZiAoIW1lZGlhU2Vzc2lvbigp
LmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKnRoaXMpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
U2V0UHJlc2VudGF0aW9uTW9kZSglcCkgLSBzZXR0aW5nIHRvIFwiJXNcIiIsIHRoaXMsIG1vZGUu
dXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpZiAobW9kZSA9PSBwcmVzZW50YXRpb25Nb2RlRnVsbHNj
cmVlbigpKQotICAgICAgICBlbnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKLSAgICBlbHNlIGlmIChtb2RlID09IHByZXNlbnRhdGlvbk1vZGVQaWN0dXJlSW5QaWN0
dXJlKCkpCi0gICAgICAgIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSk7CisgICAgZW50ZXJGdWxsc2NyZWVuKG1vZGUpOwogfQogCiBTdHJpbmcgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDMzNGE2YTBmNjQ0NzIxN2I1NDIxMjY4NTdh
YTQ4ZmFhYjc2YjZlZGUuLjBmMWRiYTIyYzFiYWU0YWQ3MmEwMDEzYWE4OTI3YjY5YWE5NjdlNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04Miw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgU3RyaW5nIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZjZlYzkw
OWU4YjIyY2RlYTcwZWFlNDgxZTdjNjg0ZDIyZDI2YmQwMS4uOTA1ZjJkY2JmYTc5MjI5YWY1ODI1
OTVhNjg2NjhjOTYzZjAxZWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBA
IC0xNDMsMTMgKzE0MywxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5u
aW5nRm9yd2FyZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nQmFj
a3dhcmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0
X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFP
cHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3Zl
cnJpZGU7CisKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IG1f
aW50ZXJmYWNlOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dD4gbV9tb2RlbDsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7
CkBAIC00NjEsMTMgKzQ2MiwxMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjplbmRTY2FubmluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhp
cywgdGhpc10geworICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgbW9kZV0gewog
ICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpOworICAgICAgICAgICAgbV9tb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1v
ZGUpOwogICAgIH0pOwogfQogCkBAIC01MzQsNiArNTM1LDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFF
bGVtZW50CiAgICAgfSk7CiB9CiAKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Cisg
ICAgcmV0dXJuIG1fbW9kZWwgPyBtX21vZGVsLT5pc1Zpc2libGUoKSA6IGZhbHNlOworfQorCiAj
cHJhZ21hIG1hcmsgT3RoZXIKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgVUlW
aWV3ICp2aWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGQyZDhjODAzOGE1MTJkYmY3ZTRh
ZTVmODE2MTIzOTkwYTUzMmUwMi4uYWZjMTc0N2E0YmZlYzlkZjA3YjhkNTJjYjlmYTRiOWJkMGYx
M2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTExNSw2ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVv
UGljdHVyZUluUGljdHVyZSgpIGNvbnN0OwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2spOwogICAgIGJvb2wgd2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAKICAgICB2b2lkIHdpbGxTdGFydFBpY3R1cmVJblBpY3R1cmUo
KTsKICAgICB2b2lkIGRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpOwpAQCAtMTU0LDYgKzE1NSw4
IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fZXhpdENvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2VudGVyUmVxdWVzdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFJldHVyblRvRnVs
bHNjcmVlbldoZW5TdG9wcGluZ1BpUCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFJldHVy
blRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kIHsgZmFsc2UgfTsKIAogICAgIHZv
aWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
aW5kZXggODI2YWYxM2E2NTMxODFiMDcxMjliOWZhY2I4OTIyZWUzNDJmM2QyYi4uYjllZjM3YmM1
NTFhYTg1NTlhOGQxNTdjMTIxOGU3MzE5YWY4ZGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbQpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhi
b29sIHZhbCkKICNlbmRpZgogCiBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRXYXRjaGRvZ1Rp
bWVySW50ZXJ2YWwgPSAxOworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIEZ1bGxzY3JlZW5Q
aVBBbmltYXRpb25EdXJhdGlvbiA9IDAuNDsKIAogQGNsYXNzIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb247CiAKQEAgLTY0NywyMSArNjQ4LDE2IEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAg
ICAgcmV0dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwogfQogCi0tICh2b2lkKXNldEJvdW5kczoo
Q0dSZWN0KWJvdW5kcworLSAodm9pZClsYXlvdXRTdWJsYXllcnMKIHsKLSAgICBpZiAoQ0dSZWN0
RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5kcykpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBbc3VwZXIgc2V0Qm91bmRzOmJvdW5kc107Ci0gICAgCiAgICAgaWYgKFtfdmlkZW9TdWJs
YXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9s
bGVyIGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJuOwogCisgICAgW192aWRlb1N1YmxheWVyIHNl
dFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoc2VsZi5ib3VuZHMpLCBDR1JlY3RH
ZXRNaWRZKHNlbGYuYm91bmRzKSldOworCiAgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7
CiAgICAgRmxvYXRSZWN0IHRhcmdldFZpZGVvRnJhbWU7CiAgICAgZmxvYXQgdmlkZW9Bc3BlY3RS
YXRpbyA9IHNlbGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMu
aGVpZ2h0OwpAQCAtODM3LDYgKzgzMywxMCBAQCBzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVy
Vmlld19zdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaQogewog
ICAgIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsKICAgICBb
cGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107Cisg
ICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVtwbGF5ZXJMYXllclZpZXcgcGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVy
TGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5
ZXIgKilbcGlwVmlldyBsYXllcl07CisgICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXll
ckZyYW1lOnBpcFBsYXllckxheWVyLm1vZGVsVmlkZW9MYXllckZyYW1lXTsKIH0KIAogc3RhdGlj
IFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqV2ViQVZQbGF5ZXJMYXllclZp
ZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyhpZCBhU2VsZiwgU0VMKQpAQCAtMTA0
OCw2ICsxMDQ4LDE1IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gW21fcGxheWVy
Q29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXliYWNrXTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQorewor
ICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJl
dHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkpIHsKKyAgICAg
ICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCA9IGZh
bHNlOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwor
ICAgIH0KK30KKwogQGludGVyZmFjZSBVSVdpbmRvdyAoKQogLSAoQk9PTClfaXNIb3N0ZWRJbkFu
b3RoZXJQcm9jZXNzOwogQGVuZApAQCAtMTA2NSwzMyArMTA3NCw0MCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1Zp
ZXcsIGNvbnN0CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rp
b24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICBib29sIGlzSW5QaWN0dXJlSW5QaWN0dXJl
TW9kZSA9IGhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZSk7CiAgICAgbV9tb2RlID0gbW9kZTsKICAgICBtX3BhcmVudFZpZXcg
PSBwYXJlbnRWaWV3OwogICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmlldy53aW5kb3c7CiAK
ICAgICBpZiAoIVtbcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3Nd
KSB7Ci0gICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NVSVdpbmRvd0luc3RhbmNlKCkg
aW5pdFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBib3VuZHNdXSk7
CisgICAgICAgIGlmICghbV93aW5kb3cpCisgICAgICAgICAgICBtX3dpbmRvdyA9IGFkb3B0TlMo
W2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W1tnZXRVSVNjcmVlbkNsYXNz
KCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwogICAgICAgICBbbV93aW5kb3cgc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07Ci0gICAgICAgIG1fdmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRd
KTsKKyAgICAgICAgaWYgKCFtX3ZpZXdDb250cm9sbGVyKQorICAgICAgICAgICAgbV92aWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0p
OwogICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gc2V0RnJhbWU6W21fd2luZG93IGJv
dW5kc11dOwogICAgICAgICBbbV92aWV3Q29udHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVk
T3JpZW50YXRpb25zOllFU107CiAgICAgICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xs
ZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAgIFttX3dpbmRvdyBtYWtlS2V5QW5k
VmlzaWJsZV07CiAgICAgfQogCi0gICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0
V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgaWYgKCFtX3Bs
YXllckxheWVyVmlldykKKyAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0
V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CiAgICAgW21fcGxheWVy
TGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFj
a0FjdGl2ZV1dOwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dl
dFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKLSAgICAKLSAgICBbbV9wbGF5ZXJMYXllclZp
ZXcgc2V0VmlkZW9WaWV3OiZ2aWRlb1ZpZXddOwotICAgIFttX3BsYXllckxheWVyVmlldyBhZGRT
dWJ2aWV3OiZ2aWRlb1ZpZXddOworCisgICAgaWYgKCFpc0luUGljdHVyZUluUGljdHVyZU1vZGUp
IHsKKyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVvVmlldzomdmlkZW9WaWV3XTsK
KyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6JnZpZGVvVmlld107CisgICAg
fQogCiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXll
ciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKICAgICBbcGxheWVyTGF5ZXIg
c2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBpbml0aWFsUmVjdC53aWR0
aCgpLCBpbml0aWFsUmVjdC5oZWlnaHQoKSldOwogICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0Rp
bWVuc2lvbnM6W21fcGxheWVyQ29udHJvbGxlciBjb250ZW50RGltZW5zaW9uc11dOwogCi0gICAg
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckluc3RhbmNlKCkgaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6bV9wbGF5ZXJMYXllclZpZXcu
Z2V0KCldKTsKKyAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCisgICAgICAgIG1fcGxh
eWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJ
bnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgp
XSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJv
bHM6Tk9dOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6
KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CkBAIC0xMTUy
LDYgKzExNjgsMTUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50
ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRo
aXMpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25n
VGhpcyh0aGlzKTsKKworICAgIGlmIChbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJ
blBpY3R1cmVBY3RpdmVdKSB7CisgICAgICAgIC8vIE5PVEU6IFRoZSBmdWxsc2NyZWVuIG1vZGUg
d2lsbCBiZSByZXN0b3JlZCBpbiBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29t
cGxldGlvbkhhbmRsZXIoKS4KKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVu
U3RvcHBpbmdQaVAgPSB0cnVlOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9w
UGljdHVyZUluUGljdHVyZV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9wbGF5
ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0Nv
bG9yXV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCBzdHJvbmdUaGlzXSAoQk9PTCBzdWNjZWVk
ZWQsIE5TRXJyb3IqKSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdWNjZWVkZWQpOwogICAgICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW5TdGFuZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywg
Ym9vbFN0cmluZyhzdWNjZWVkZWQpKTsKQEAgLTEyODQsNyArMTMwOSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4o
KQogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgIW1fZXhpdFJlcXVlc3RlZCkg
ewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5wYXVzZSgpOwotICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0KIH0KIApAQCAtMTMxNiwx
MSArMTM0MSwxOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxs
U3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIs
IHRoaXMpOwogICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisKKyAgICBpZiAoIWhhc01vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpKQorICAgICAgICByZXR1cm47
CisKKyAgICBbZ2V0VUlWaWV3Q2xhc3MoKSBhbmltYXRlV2l0aER1cmF0aW9uOkZ1bGxzY3JlZW5Q
aVBBbmltYXRpb25EdXJhdGlvbiBhbmltYXRpb25zOiBeeworICAgICAgICBbbV93aW5kb3cgc2V0
QWxwaGE6MF07CisgICAgfV07CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4s
ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0
dXJlKCVwKSIsIHRoaXMpOworICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRl
cmluZ0ZvcmVncm91bmQgPSBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5QaWN0dXJl
V2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdOwogICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOwogICAgIFttX3dpbmRvdyBzZXRI
aWRkZW46WUVTXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107CkBAIC0xMzQzLDI0ICsxMzc2LDM0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICAgICAgbV9m
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwogCiAgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJl
KCVwKSIsIHRoaXMpOworICAgIGlmIChoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgW21fd2lu
ZG93IHNldEhpZGRlbjpOT107CiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNl
dEhpZGRlbjpOT107CiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogewog
ICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRp
ZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotICAgIGlmIChoYXNNb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKKyAgICBpZiAo
aGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkpIHsKKyAgICAgICAgLy8gQVNTVU1QVElPTjogd2UgYXJlIGV4aXRpbmcgcGlwIGJlY2F1c2Ug
d2UgYXJlIGVudGVyaW5nIGZ1bGxzY3JlZW4KKyAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsK
KworICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAgICAgICAgICBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwogCkBAIC0xMzc4
LDYgKzE0MjEsMjEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlk
U3RvcFBpY3R1cmVJblBpY3R1cmUoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVy
KHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCByZXN0b3JlZCkpCiB7CiAgICAgTE9HKEZ1
bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBp
Y3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKCVwKSIsIHRoaXMpOworICAg
IGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCkgeworICAgICAg
ICAvLyBBU1NVTVBUSU9OOiB3ZSBhcmUgZXhpdGluZyBwaXAgYmVjYXVzZSB3ZSBhcmUgZW50ZXJp
bmcgZnVsbHNjcmVlbgorICAgICAgICBbZ2V0VUlWaWV3Q2xhc3MoKSBhbmltYXRlV2l0aER1cmF0
aW9uOkZ1bGxzY3JlZW5QaVBBbmltYXRpb25EdXJhdGlvbiBhbmltYXRpb25zOl57CisgICAgICAg
ICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKKyAgICAgICAgICAgIFttX3dpbmRvdyBzZXRB
bHBoYToxXTsKKyAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRI
aWRkZW46Tk9dOworICAgICAgICB9XTsKKworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciopIHsKKyAgICAgICAgICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlz
KHRoaXMpOwogICAgIFJldGFpblB0cjxpZD4gc3Ryb25nQ29tcGxldGlvbkhhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAgICAgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKFtzdHJvbmdUaGlzLCBzdHJvbmdDb21wbGV0aW9uSGFuZGxlcl0oYm9vbCByZXN0b3Jl
ZCkgIHsKQEAgLTEzOTMsNiArMTQ1MSw3IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihXZWJWaWRlb0Z1CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNv
bjo6UGljdHVyZUluUGljdHVyZVN0YXJ0ZWQpIHsKKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTQwMSw3ICsxNDYwLDcgQEAgYm9vbCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFdlYlZp
ZGVvRnUKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cGF1c2UoKTsKICAgICAKIAot
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIAogICAgIGlmICghbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3QoRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCmluZGV4IDNjNTVhYTNi
MWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYuLmY5YTU4ZmRhMjE3OWZhODU1MDA5NTFh
YTFjYzI3OTA3NTEzMWNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC00NiwxMyArNDYsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBl
bmRTY2FubmluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKICAgICBlbnVtIFZpZGVvR3Jhdml0
eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJH
cmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXggMWFhM2NlNWJiYzkw
OGNjZGE0NGEzZDIyYjQ0MmEyMDJhNzZiZTEwNi4uOTg3YWE5Yjg1OWZmYzA2NmM3OTczNTk2NGFi
MTU1MTNiY2JiYjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTcw
LDEyICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0
eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzVmlzaWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQppbmRleCA3NzBjMmYyY2NkMzU2Mzc1ZjY1ODI5YzA4NjEyNzgyZTIyMWJm
MWFhLi4wOWZiODI5NmQxMmU5N2M0MDk1MzFkOWY0ODc5NDZhODI5YjRmYmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xMTIsNyArMTEyLDYgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGUKIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6
OkV2ZW50KiBldmVudCkKIHsKLSAgICBMT0coTWVkaWEsICJoYW5kbGVFdmVudCAlcyIsIGV2ZW50
LT50eXBlKCkuY2hhcmFjdGVyczgoKSk7CiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LT50
eXBlKCkpOwogfQogCkBAIC0yNDUsMTAgKzI0NCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjplbmRTY2FubmluZygpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50
LT5lbmRTY2FubmluZygpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVu
dCAmJiBtX3ZpZGVvRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIG1fdmlkZW9FbGVt
ZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVv
RWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQorICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgcmVjdCkKQEAg
LTM4OSw0ICszODgsMTUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnQKICAgICAgICAgbV92aWRl
b0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0K
IAorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aXNWaXNpYmxlKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fdmlkZW9FbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fdmlkZW9FbGVtZW50LT5kb2N1bWVudCgpLnBhZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmlzVmlzaWJsZSgpOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0
U1BJLmgKaW5kZXggMjFmNWYwYjU5MDM5OGJlMzIzOTRjYzRjOTMzZGNkYWRkMGQ2ZDU5NC4uYmJj
MmNlMjYwM2U4Njc0NWY0YjFjZDZkYjZjNjc1OWIyYTViZDJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTk2LDYgKzk2LDggQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVu
UmVhc29uKSB7CiAtICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc3Ryb25nKSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVB
Y3RpdmUpIEJPT0wgcGljdHVyZUluUGljdHVyZUFjdGl2ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0Jh
Y2tncm91bmQ7CiBAZW5kCiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3
ZDMwN2NmZTI0OTVkYTUwMzIzM2ZhMjQ5Y2IzZjllMmI2ZDI3Zjg0Li5iYTA4ZDJmNDA0OTM5YWVi
MWQyNzliZjY5NjFlNzlkOTIwNjMwMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNjMyLDYgKzYzMiw4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogeworICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCksIG1fcGFnZUlEKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5LmgKaW5kZXggN2UxZTBkOTA2MmM3NjBjYzUzZmY5MTc5MDU4YzA4ZTgx
OTk2ZmJlMS4uNTU2MzZjMzIzNTlkOGYwMmE3N2IyOWU1MGE0MjcxYmVjZjlkMGFhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC03NSwxMiArNzUsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZs
b2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTEwNCw2
ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVu
KCk7CiAgICAgYm9vbCBoYXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Q7CiAgICAgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1Zp
ZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0OworICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKTsKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ7CkBAIC0xNDcsNyAr
MTUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29u
dGV4dElkKTsKICAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lk
IHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBkaWRTZXR1
cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggZjQ1MjBm
ZTMwMWJmNWI5ZDcyNTc4N2ZkMmE5ZjkzOGExNjRiYWM2NC4uNmViYzViMThjODJiY2VlYzZjNzkz
ZDQ3NGYyNDIxYTYyNTk1NzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTE1
NiwxMCArMTU2LDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjplbmRT
Y2FubmluZygpCiAgICAgICAgIG1fbWFuYWdlci0+ZW5kU2Nhbm5pbmcobV9jb250ZXh0SWQpOwog
fQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxs
c2NyZWVuKCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1v
ZGUpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0RXhp
dEZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOworICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RGdWxs
c2NyZWVuTW9kZShtX2NvbnRleHRJZCwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IGZy
YW1lKQpAQCAtMTkyLDYgKzE5MiwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxNZWRpYUVsZQogICAgICAg
ICBtX21hbmFnZXItPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX2NvbnRleHRJZCwgbW9kZSk7CiB9
CiAKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojppc1Zpc2libGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21hbmFnZXIgPyBtX21hbmFnZXItPmlzVmlzaWJsZSgpIDogZmFs
c2U7Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRTZXR1cEZ1
bGxzY3JlZW4oKQogewogICAgIGlmIChtX21hbmFnZXIpCkBAIC0yODQsNiArMjg5LDEyIEBAIGJv
b2wgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptYXlBdXRvbWF0aWNhbGx5U2hvd1Zp
ZGVvUGljdHVyZUluUGljdHVyZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQor
eworICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NvbnRleHRNYXAudmFsdWVzKCkpCisgICAgICAg
IHN0ZDo6Z2V0PDE+KHR1cGxlKS0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwog
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKQogewogICAgIFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+
IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNv
bnRleHRJZCk7CkBAIC0zMjMsMTMgKzMzNCwxNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdQog
CiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFj
ZShjb250ZXh0SWQpOwogCi0gICAgUmV0YWluUHRyPFdlYkxheWVySG9zdFZpZXc+IHZpZXcgPSBh
ZG9wdE5TKFtbV2ViTGF5ZXJIb3N0VmlldyBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxX
ZWJMYXllckhvc3RWaWV3PiB2aWV3ID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJIb3N0Vmlldyo+KG1v
ZGVsLT5sYXllckhvc3RWaWV3KCkpOworICAgIGlmICghdmlldykgeworICAgICAgICB2aWV3ID0g
YWRvcHROUyhbW1dlYkxheWVySG9zdFZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgbW9kZWwt
PnNldExheWVySG9zdFZpZXcodmlldyk7CisgICAgfQogICAgIFt2aWV3IHNldENvbnRleHRJRDp2
aWRlb0xheWVySURdOwotICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KHZpZXcpOwogICAgIGlm
IChob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3IgIT0gMSkgewogICAgICAgICAvLyBJbnZlcnQgdGhl
IHNjYWxlIHRyYW5zZm9ybSBhZGRlZCBpbiB0aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9w
cm9ibGVtLzE4MzE2NTQyPi4KICAgICAgICAgZmxvYXQgaW52ZXJzZVNjYWxlID0gMSAvIGhvc3Rp
bmdEZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAgICAgW1ttb2RlbC0+bGF5ZXJIb3N0VmlldygpIGxh
eWVyXSBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VT
Y2FsZSwgaW52ZXJzZVNjYWxlLCAxKV07CisgICAgICAgIFtbdmlldyBsYXllcl0gc2V0U3VibGF5
ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VT
Y2FsZSwgMSldOwogICAgIH0KIAogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0PFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLnJl
bW90ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKTsKQEAgLTQ5NCw5ICs1MDgsOSBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29u
dGV4dElkKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKQEAgLTU1Nyw2ICs1NzEsMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFcKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxz
Y3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0K
IAorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmlzVmlzaWJsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpICYmIG1fcGFnZS0+aXNJbldp
bmRvdygpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBib29sIGlz
Vmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApp
bmRleCA3ZjRlMzc1MjBhODIyNWNiMjA4Y2MzNzQ3YTFjYzU4YTk5NzNkNTBlLi5mMWQwZmU1MTEx
NDgzNzEwOGFjN2E3ZjU3NWI2NjBlOTQxNjlmYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0x
NTMsNyArMTUzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQo
dWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50
NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwor
ICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lk
IGRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlkRXhp
dEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZEVudGVyRnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggYjMxNTNjMGIzOTkyMmVlY2I0NDkyNzhjMTM5YmY5NGE5MmZiNzJkZi4uZDRk
Y2FhYTY3MzdjNDQ5MjIyZjhkZTYwMWYzZGViYjllZmUwNjE4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgewogICAgIEJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBCZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElk
KQogICAgIEVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQorICAgIFJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogICAgIERpZFNldHVwRnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQogICAgIERpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQppbmRleCBlZWM2NWFiNDc1NDcyMzIyZDg4NmNkY2E3NWIzZjg0ZTM4NDg1
ZDkyLi5hMTliMzIxYzYwZWJkOWQxZTNkZDA3MTk3MDJkMmYwNjViZTU1MDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KQEAgLTI0MCwxMSArMjQwLDEzIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
CiAKICAgICBGbG9hdFJlY3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRl
b0VsZW1lbnQpOwogICAgIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwg
MCwgY2xpZW50UmVjdC53aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKLSAgICAKKworICAg
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBvbGRNb2RlID0gaW50
ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpOwogICAgIGludGVyZmFjZS0+c2V0VGFyZ2V0SXNGdWxs
c2NyZWVuKHRydWUpOwogICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAg
ICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKLSAgICBtb2RlbC0+c2V0
VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFtZSk7CisgICAgaWYgKG9sZE1vZGUgPT0gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKKyAgICAgICAgbW9k
ZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOwogCiAgICAgaWYgKGludGVy
ZmFjZS0+aXNBbmltYXRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk0LDkgKzM5Niw5IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29u
dGV4dElkKQogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2Nhbm5pbmcoKTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAgIGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCkucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElk
LCB1aW50NjRfdCBpbmRleCkK
</data>
<flag name="review"
          id="290018"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266482</attachid>
            <date>2015-12-02 15:45:17 -0800</date>
            <delta_ts>2015-12-03 11:12:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-150906-20151202154453.patch</filename>
            <type>text/plain</type>
            <size>38999</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM3ZjVjY2U4NDE5YmRl
NjA3NDViYTk5MTljNjcxOWYxMGQ1NjkxOS4uMzM0MzQyMDNlZTQ3Y2YyY2Q1NzA2MWRmN2FiMTUy
Y2Y0NDJjMzc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDE1LTEyLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtpT1NdIEZ1bGxzY3JlZW4g
LT4gUGlQIHNob3VsZCByZXN1bWUgdG8gRnVsbHNjcmVlbiwgbm90IGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFdoZW4gcmVzdG9yaW5nIHRoZSB1
c2VyIGludGVyZmFjZSB3aGVuIGV4aXRpbmcgUGlQLCB3ZSBzaG91bGQgcmV0dXJuIHRvIEZ1bGxz
Y3JlZW4gaWYgdGhhdAorICAgICAgICBpcyB3aGVyZSBmdWxsc2NyZWVuIHdhcyBpbml0aWF0ZWQg
ZnJvbS4gQWRkaXRpb25hbGx5LCB3aGVuIHdlICJhdXRvLVBpUCIgYnkgYmFja2dyb3VuZGluZyB0
aGUKKyAgICAgICAgYXBwIGluIEZ1bGxzY3JlZW4gbW9kZSwgd2Ugc2hvdWxkICJhdXRvLXVuLVBp
UCIgd2hlbiByZXN0b3JpbmcgdGhlIGFwcGxpY2F0aW9uIHRvIGZvcmVncm91bmQuCisKKyAgICAg
ICAgUmF0aGVyIHRoYW4gaGF2ZSBhIHNlcGFyYXRlIG1ldGhvZCB0byByZXF1ZXN0IGV4aXRpbmcg
ZnVsbHNjcmVlbiwgZW50ZXJpbmcgc3RhbmRhcmQgZnVsbHNjcmVlbiwKKyAgICAgICAgYW5kIHN3
aXRjaGluZyB0byAmIGZyb20gUGlQLCBhZGQgYSBuZXcgbWV0aG9kIHNldEZ1bGxzY3JlZW5Nb2Rl
KCkgd2hpY2ggZG9lcyBhbGwgdGhyZWUuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlc2VudGF0aW9uTW9kZVRvRnVsbHNjcmVlbk1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U2V0UHJlc2Vu
dGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxs
c2NyZWVuTW9kZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisKKyAgICAg
ICAgQWRkIG1ldGhvZHMgdG8gZm9yIGNsaWVudHMgdG8gcmVxdWVzdCBhIHNwZWNpZmljIGZ1bGxz
Y3JlZW4gbW9kZSwgYW5kIHRvIHF1ZXJ5IHdoZXRoZXIKKyAgICAgICAgdGhlIHBhZ2UgaXMgY3Vy
cmVudGx5IHZpc2libGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKworICAg
ICAgICBUcmFjayB3aGV0aGVyIHJldHVybmluZyBmcm9tIFBpUCBzaG91bGQgZW50ZXIgZnVsbHNj
cmVlbiwgb3Igd2hldGhlciBmb3JlZ3JvdW5kaW5nIHRoZSBhcHAKKyAgICAgICAgc2hvdWxkIGNh
dXNlIFBpUCB0byByZXR1cm4gdG8gZnVsbHNjcmVlbi4KKworICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJMYXllciBsYXlvdXRTdWJsYXllcnNdKTogUmVuYW1lZCBmcm9tIC1zZXRCb3VuZHM6
LiAtbGF5b3V0U3VibGF5ZXJzIGlzIGNhbGxlZAorICAgICAgICAgICAgbW9yZSBjb25zaXN0ZW50
bHkgdGhhbiAtc2V0Qm91bmRzOiwgaW5jbHVkaW5nIHdoZW4gYSBzdWJsYXllciBpcyBhZGRlZCB0
byB0aGUgbGF5ZXIuCisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KTogVGhlIFBpUCBXZWJBVlBsYXll
ckxheWVyJ3MKKyAgICAgICAgICAgIG1vZGVsVmlkZW9MYXllckZyYW1lIHByb3BlcnR5IG1heSBo
YXZlIGJlZW4gbW9kaWZpZWQsIHNvIHBhc3MgaXQgYmFjayB1cCB0byB0aGUgZnVsbHNjcmVlbgor
ICAgICAgICAgICAgbGF5ZXIgd2hlbiBleGl0aW5nIFBpUC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IFJlcXVl
c3QgZnVsbHNjcmVlbiBpZiB3ZSBhdXRvLVBpUGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbik6IE9ubHkgcmVjcmVhdGUgb3duZWQg
b2JqZWN0cyBpZiB0aGV5IGRpZCBub3QgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCk6IElmIHdl
IGFyZSBpbiBQaVAgbW9kZSwgZW50ZXIgZnVsbHNjcmVlbiBieSBzdG9wcGluZyBQaVAuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbik6IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIC0+IHJlcXVlc3RGdWxsc2NyZWVu
TW9kZSgpLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxT
dGFydFBpY3R1cmVJblBpY3R1cmUpOiBBbmltYXRlIG91dCB0aGUgZnVsbHNjcmVlbiB3aW5kb3cs
IGlmIGV4aXRpbmcgRnVsbHNjcmVlbiAtPiBQaVAuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKTogU2V0IG1fc2hvdWxk
UmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgaWYgd2UgYXV0by1QaVBl
ZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0
YXJ0UGljdHVyZUluUGljdHVyZSk6IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIC0+IHJlcXVlc3RG
dWxsc2NyZWVuTW9kZSgpLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVyZSk6IElmIHdlIGFyZSByZXR1cm5pbmcgZnJvbSBQ
aVAgLT4gRnVsbHNjcmVlbiwgZG8gbm90IGhpZGUgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5Q
aWN0dXJlKTogSWYgd2UgYXJlIHJldHVybmluZyBmcm9tIFBpUCAtPiBGdWxsc2NyZWVuLCBzaG93
IHRoZSBjb250cm9scyBhbmQgbm90aWZ5IGNsaWVudHMuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENv
bXBsZXRpb25IYW5kbGVyKTogQW5pbWF0ZSBpbiB0aGUgZnVsbHNjcmVlbiB3aW5kb3csIGlmIHJl
dHVybmluZyBmcm9tIFBpUCAtPiBGdWxsc2NyZWVuLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbik6IFNldCBt
X3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCBpZiB3ZSBhcmUgZW50ZXJp
bmcgUGlQIGZyb20gRnVsbHNjcmVlbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvQVZL
aXRTUEkuaDoKKworMjAxNS0xMi0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KwogICAgICAgICBbaU9TXSBBYnJ1cHQgdHJhbnNpdGlvbiBiZXR3ZWVuIEZ1bGxzY3JlZW4gLT4g
UGlQCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3
MTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDFmOWQ1ZmQ3NzM4ZDZiNDE1MWQxYmExZDc0OGQ4YzE5OTVlZThk
MTMuLjVjYmU3MDk3YmFlYjFjYmNiY2RiZjBmZTA2ZTk3NDRkMDgyMjViOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMiBAQAorMjAxNS0xMi0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBGdWxsc2NyZWVuIC0+IFBpUCBzaG91bGQgcmVzdW1lIHRv
IEZ1bGxzY3JlZW4sIG5vdCBpbmxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBBZGQgbWV0aG9kcyB0byBwYXNzIGlzVmlzaWJsZSgpLCBhcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpLCBhbmQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKCkKKyAgICAgICAg
dG8gYW5kIGZyb20gbW9kZWxzIGFuZCBpbnRlcmZhY2VzLgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBOb3RpZnkgdGhlIGZ1bGxzY3JlZW4gbWFuYWdl
ciwgaWYgcHJlc2V0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogUmVuYW1lZCBmcm9tIHJlcXVlc3RF
eGl0RnVsbHNjcmVlbigpOyB0YWtlcyBhIG1vZGUgZW51bS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojppc1Zpc2libGUpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSk6IFBhc3MgdG8gYWxsIGV4aXN0aW5nIGludGVyZmFjZXMuCisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0
aElEKTogRG8gbm90IHJlLWNyZWF0ZSB0aGUgdmlldyBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUpOiBSZW5hbWVkIGZyb20gcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7IHRha2Vz
IGEgbW9kZSBlbnVtLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmlzVmlzaWJsZSk6IEFkZGVkLiBRdWVyeSBQYWdlOjppc1Zpc2libGUoKSBhbmQgUGFn
ZTo6aXNJbldpbmRvdygpLCB0aGUgbGF0dGVyIGJlY2F1c2UKKyAgICAgICAgICAgICAgICBQaVAg
d2lsbCBjYXVzZSBQYWdlOjppc1Zpc2libGUoKSB0byBiZSBUUlVFIGV2ZW4gd2hlbiB0aGUgY29u
dGFpbmluZyB0YWIgaXMgYmFja2dyb3VuZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4
aXRGdWxsc2NyZWVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6IE9ubHkgcmVz
aXplIHRoZSB2aWV3IGlmIHdlIGFyZSBub3QgYWxyZWFkeSBpbiBvbmUgb2YKKyAgICAgICAgICAg
ICAgICB0aGUgZnVsbHNjcmVlbiBtb2Rlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKTogUmVuYW1lZCBmcm9tIHJlcXVl
c3RFeGl0RnVsbHNjcmVlbigpLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorCiAyMDE1LTEyLTAxICBI
dW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBmaXggYnVpbGQgYWZ0ZXIgcjE5MjkzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCmluZGV4IDFmYWYyYzc5NTg5OGIzMjdmYTc5MGJhMDY0YTg0YTNkYjQ4OTA4
ZWYuLjgzZDVlNjcyOWRhZDAyZTM1NDk0ZTUzYzNhYTBjYmRkMTcxNmM0ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzgxLDkgKzM4MSwzOCBAQCBib29s
IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShjb25zdCBT
dHJpbmcmIG1vZGUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBw
cmVzZW50YXRpb25Nb2RlVG9GdWxsc2NyZWVuTW9kZShjb25zdCBTdHJpbmcmIHByZXNlbnRhdGlv
bk1vZGUsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSYgZnVsbHNj
cmVlbk1vZGUpCit7CisgICAgaWYgKHByZXNlbnRhdGlvbk1vZGUgPT0gcHJlc2VudGF0aW9uTW9k
ZUZ1bGxzY3JlZW4oKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZSA9IEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBpZiAocHJlc2VudGF0aW9uTW9kZSA9PSBwcmVzZW50YXRpb25Nb2Rl
UGljdHVyZUluUGljdHVyZSgpKSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlID0gSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHByZXNlbnRhdGlvbk1vZGUgPT0gcHJl
c2VudGF0aW9uTW9kZUlubGluZSgpKSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlID0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBIVE1MVmlkZW9FbGVt
ZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAg
ICBpZiAobW9kZSA9PSBwcmVzZW50YXRpb25Nb2RlSW5saW5lKCkgJiYgaXNGdWxsc2NyZWVuKCkp
IHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIGZ1bGxzY3JlZW5Nb2RlID0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmU7CisgICAgaWYgKCFwcmVzZW50YXRpb25Nb2RlVG9GdWxsc2NyZWVuTW9kZSht
b2RlLCBmdWxsc2NyZWVuTW9kZSkpCisgICAgICAgIHJldHVybjsKKworICAgIExPR19XSVRIX1NU
UkVBTShNZWRpYSwgc3RyZWFtIDw8ICJIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50
YXRpb25Nb2RlKCIgPDwgdGhpcyA8PCAiKSAtIHNldHRpbmcgdG8gXCIiIDw8IG1vZGUgPDwgIlwi
Iik7CisgICAgc2V0RnVsbHNjcmVlbk1vZGUoZnVsbHNjcmVlbk1vZGUpOworfQorCit2b2lkIEhU
TUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQoreworICAgIGlmIChtb2RlID09IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lICYmIGlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgIGV4aXRGdWxsc2NyZWVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTEsMTIgKzQyMCw3IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmIG1v
ZGUpCiAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCp0aGlzKSB8
fCAhc3VwcG9ydHNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRp
YSwgIkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoJXApIC0gc2V0
dGluZyB0byBcIiVzXCIiLCB0aGlzLCBtb2RlLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgaWYgKG1v
ZGUgPT0gcHJlc2VudGF0aW9uTW9kZUZ1bGxzY3JlZW4oKSkKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBw
cmVzZW50YXRpb25Nb2RlUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICBlbnRlckZ1bGxzY3Jl
ZW4oVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgIGVudGVyRnVsbHNj
cmVlbihtb2RlKTsKIH0KIAogU3RyaW5nIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFByZXNlbnRh
dGlvbk1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRl
eCBiMjQwZmZkMmE2NTYxZDQ4ZDRmYTUzNjNmNmVjNTZmZWNmZGViZWE2Li42MmZhYjc1MGFjMDk3
MjcwOTJhMTEzYzhhYzliNTNkZDZiMDA4ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3ZWJraXRTdXBw
b3J0c1ByZXNlbnRhdGlvbk1vZGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCB3ZWJr
aXRTZXRQcmVzZW50YXRpb25Nb2RlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB3ZWJraXRQ
cmVzZW50YXRpb25Nb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShWaWRl
b0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCmluZGV4IDNlMmE4ZDYyMmE5YzU1NzA3ZDI5MjIyZDk2MmY1M2M4YzM2
NTNlODYuLjFiMDFlMzAzMTRiMzJlZjhiZjEzZWNiOWM4OWRiYTQ0ODIxY2RlNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTQzLDEzICsxNDMsMTQgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RF
eGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7Ci0gICAgCisgICAgdmlydHVh
bCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9kZWw7CiAgICAgUmVmUHRyPEhUTUxW
aWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwpAQCAtNDYxLDEzICs0NjIsMTMgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZW5kU2Nhbm5pbmcoKQogICAgIH0p
OwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0
RXhpdEZ1bGxzY3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXNdIHsKKyAgICBXZWJUaHJlYWRSdW4o
W3N0cm9uZ1RoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAg
ICAgICBtX21vZGVsLT5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIG1fbW9k
ZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICB9KTsKIH0KIApAQCAtNTM0LDYg
KzUzNSwxMiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudAogICAgIH0pOwogfQogCitib29sIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1Zpc2libGUoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX21vZGVsID8gbV9tb2RlbC0+
aXNWaXNpYmxlKCkgOiBmYWxzZTsKK30KKwogI3ByYWdtYSBtYXJrIE90aGVyCiAKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFVJVmlldyAqdmlldywgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
CmluZGV4IGQ1NjEyZWMzYjk5YjYxMWMxMzdmZmRjMDA2MGIwMzhkMGYxNzI1OGUuLmU5NGY1YjFl
NTliMmQ4YjI1NWMyMmQyNzdiZDMyYmEyODE1MTc2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdDsKICAg
ICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IGNhbGxiYWNrKTsKICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkg
Y29uc3Q7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogCiAgICAgdm9p
ZCB3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBkaWRTdGFydFBpY3R1cmVJ
blBpY3R1cmUoKTsKQEAgLTE1NCw2ICsxNTUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2V4
aXRDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbnRlclJlcXVlc3RlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRlckVudGVyaW5nRm9y
ZWdyb3VuZCB7IGZhbHNlIH07CiAKICAgICB2b2lkIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGEwMjNmZDdmMDIwZjYwNjNkMzFkOWE2
YTk3MzA4YmEzMTQyNTI3NzYuLmEzNmQwMDhjOGJhYjY3ODllZGFkNzRhNGJlYTlkMTgzMWE0MjBh
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTY1MCwyMSArNjUwLDE2IEBA
IHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5S
ZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAgICAgcmV0dXJuIF92aWRlb1N1YmxheWVyLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcworLSAodm9pZClsYXlvdXRT
dWJsYXllcnMKIHsKLSAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5k
cykpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbc3VwZXIgc2V0Qm91bmRzOmJvdW5kc107
Ci0gICAgCiAgICAgaWYgKFtfdmlkZW9TdWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAK
ICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgW192aWRlb1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdl
dE1pZFgoc2VsZi5ib3VuZHMpLCBDR1JlY3RHZXRNaWRZKHNlbGYuYm91bmRzKSldOworCiAgICAg
RmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7CiAgICAgRmxvYXRSZWN0IHRhcmdldFZpZGVvRnJh
bWU7CiAgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9EaW1lbnNpb25zLndp
ZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0OwpAQCAtODQwLDYgKzgzNSwxMCBAQCBz
dGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaQogewogICAgIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5
ZXJMYXllclZpZXcgPSBhU2VsZjsKICAgICBbcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6cGxh
eWVyTGF5ZXJWaWV3LnZpZGVvVmlld107CisgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyAqKVtwbGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107Cisg
ICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtw
bGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBpcFBs
YXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGlwVmlldyBsYXllcl07CisgICAgW3Bs
YXllckxheWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1lOnBpcFBsYXllckxheWVyLm1vZGVsVmlk
ZW9MYXllckZyYW1lXTsKIH0KIAogc3RhdGljIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldyAqV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldyhpZCBhU2VsZiwgU0VMKQpAQCAtMTA1MSw2ICsxMDUwLDEzIEBAIGJvb2wgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkg
Y29uc3QKICAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXli
YWNrXTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCVwKSIs
IHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdG
b3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+aXNWaXNpYmxlKCkpCisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHN0b3BQ
aWN0dXJlSW5QaWN0dXJlXTsKK30KKwogQGludGVyZmFjZSBVSVdpbmRvdyAoKQogLSAoQk9PTClf
aXNIb3N0ZWRJbkFub3RoZXJQcm9jZXNzOwogQGVuZApAQCAtMTA2OCwzMyArMTA3NCw0MCBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlW
aWV3JiB2aWRlb1ZpZXcsIGNvbnN0CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAg
W0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICBib29sIGlzSW5QaWN0
dXJlSW5QaWN0dXJlTW9kZSA9IGhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CiAgICAgbV9tb2RlID0gbW9kZTsKICAgICBt
X3BhcmVudFZpZXcgPSBwYXJlbnRWaWV3OwogICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmll
dy53aW5kb3c7CiAKICAgICBpZiAoIVtbcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5v
dGhlclByb2Nlc3NdKSB7Ci0gICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NVSVdpbmRv
d0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVu
XSBib3VuZHNdXSk7CisgICAgICAgIGlmICghbV93aW5kb3cpCisgICAgICAgICAgICBtX3dpbmRv
dyA9IGFkb3B0TlMoW2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W1tnZXRV
SVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwogICAgICAgICBbbV93aW5kb3cg
c2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07Ci0gICAg
ICAgIG1fdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICAgICAgaWYgKCFtX3ZpZXdDb250cm9sbGVyKQorICAgICAgICAg
ICAgbV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3Q29udHJvbGxlckluc3Rh
bmNlKCkgaW5pdF0pOwogICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gc2V0RnJhbWU6
W21fd2luZG93IGJvdW5kc11dOwogICAgICAgICBbbV92aWV3Q29udHJvbGxlciBfc2V0SWdub3Jl
QXBwU3VwcG9ydGVkT3JpZW50YXRpb25zOllFU107CiAgICAgICAgIFttX3dpbmRvdyBzZXRSb290
Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKV07CiAgICAgICAgIFttX3dpbmRv
dyBtYWtlS2V5QW5kVmlzaWJsZV07CiAgICAgfQogCi0gICAgbV9wbGF5ZXJMYXllclZpZXcgPSBh
ZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7Cisg
ICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKKyAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBh
ZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CiAg
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKLSAgICAKLSAgICBbbV9w
bGF5ZXJMYXllclZpZXcgc2V0VmlkZW9WaWV3OiZ2aWRlb1ZpZXddOwotICAgIFttX3BsYXllckxh
eWVyVmlldyBhZGRTdWJ2aWV3OiZ2aWRlb1ZpZXddOworCisgICAgaWYgKCFpc0luUGljdHVyZUlu
UGljdHVyZU1vZGUpIHsKKyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVvVmlldzom
dmlkZW9WaWV3XTsKKyAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6JnZpZGVv
Vmlld107CisgICAgfQogCiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2Vi
QVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKICAgICBb
cGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBpbml0
aWFsUmVjdC53aWR0aCgpLCBpbml0aWFsUmVjdC5oZWlnaHQoKSldOwogICAgIFtwbGF5ZXJMYXll
ciBzZXRWaWRlb0RpbWVuc2lvbnM6W21fcGxheWVyQ29udHJvbGxlciBjb250ZW50RGltZW5zaW9u
c11dOwogCi0gICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5
ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6bV9wbGF5
ZXJMYXllclZpZXcuZ2V0KCldKTsKKyAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCisg
ICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmll
d0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5
ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1Bs
YXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXll
ckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQo
KV07CkBAIC0xMTU1LDYgKzExNjgsMTUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVu
LCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5k
YXJkKCVwKSIsIHRoaXMpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKworICAgIGlmIChbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBpc1BpY3R1cmVJblBpY3R1cmVBY3RpdmVdKSB7CisgICAgICAgIC8vIE5PVEU6IFRoZSBmdWxs
c2NyZWVuIG1vZGUgd2lsbCBiZSByZXN0b3JlZCBpbiBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVy
ZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoKS4KKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSB0cnVlOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xh
c3MoKSBibGFja0NvbG9yXV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxs
U2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCBzdHJvbmdUaGlzXSAo
Qk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqKSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdWNjZWVk
ZWQpOwogICAgICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQo
JXMpIiwgdGhpcywgYm9vbFN0cmluZyhzdWNjZWVkZWQpKTsKQEAgLTEyODcsNyArMTMwOSw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhp
dEZ1bGxzY3JlZW4oKQogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgIW1fZXhp
dFJlcXVlc3RlZCkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5wYXVzZSgpOwot
ICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsK
KyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0KIH0K
IApAQCAtMTMyNCwxMSArMTM0NiwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOworICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2Ny
ZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBwaWN0
dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdOwogICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOwogCiAgICAg
aWYgKG1fbW9kZSAmIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKSB7Ci0gICAgICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7Ci0KICAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxl
cjpbc3Ryb25nVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3IqKSB7CiAgICAgICAgICAgICBbbV93
aW5kb3cgc2V0SGlkZGVuOllFU107CkBAIC0xMzU3LDI0ICsxMzc4LDM0IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
KCkKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVl
bigpOwogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQ
aWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOworICAgIGlmIChoYXNNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107CiAgICAgW1ttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddIHNldEhpZGRlbjpOT107CiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuKCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJ
blBpY3R1cmUoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotICAgIGlm
IChoYXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKSkKKyAgICBpZiAoaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVTdGFuZGFyZCkpIHsKKyAgICAgICAgLy8gQVNTVU1QVElPTjogd2UgYXJlIGV4aXRp
bmcgcGlwIGJlY2F1c2Ugd2UgYXJlIGVudGVyaW5nIGZ1bGxzY3JlZW4KKyAgICAgICAgY2xlYXJN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNr
Q29udHJvbHM6WUVTXTsKKworICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIp
CisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0
cnVlOwogCkBAIC0xMzkyLDYgKzE0MjMsMjEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENv
bXBsZXRpb25IYW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCByZXN0b3JlZCkp
CiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKCVw
KSIsIHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9wcGlu
Z1BpUCB8fCBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5k
KSB7CisgICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQID0g
ZmFsc2U7CisgICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0Zv
cmVncm91bmQgPSBmYWxzZTsKKworICAgICAgICAvLyBBU1NVTVBUSU9OOiB3ZSBhcmUgZXhpdGlu
ZyBwaXAgYmVjYXVzZSB3ZSBhcmUgZW50ZXJpbmcgZnVsbHNjcmVlbgorICAgICAgICBbbV93aW5k
b3cgc2V0SGlkZGVuOk5PXTsKKyAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXdd
IHNldEhpZGRlbjpOT107CisKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJG
dWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzLCBO
U0Vycm9yKikgeworICAgICAgICAgICAgc2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdWNjZXNzKTsKKyAgICAgICAgfV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7
CiAgICAgUmV0YWluUHRyPGlkPiBzdHJvbmdDb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0TlMoW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldKTsKICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
W3N0cm9uZ1RoaXMsIHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyXShib29sIHJlc3RvcmVkKSAgewpA
QCAtMTQwNyw2ICsxNDUzLDcgQEAgYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFdlYlZpZGVvRnUKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBpZiAocmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaWN0
dXJlSW5QaWN0dXJlU3RhcnRlZCkgeworICAgICAgICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVl
bldoZW5TdG9wcGluZ1BpUCA9IGhhc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogICAgICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0xNDE1LDcgKzE0NjIsNyBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oV2ViVmlkZW9GdQog
ICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5wYXVzZSgpOwogICAgIAogCi0gICAgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogCiAgICAgaWYgKCFtX3dhdGNoZG9nVGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChEZWZh
dWx0V2F0Y2hkb2dUaW1lckludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggM2M1NWFhM2IxYzM3OTU1
ZmEyZmYwZGRmNWViODExOWM3MGEzZDJjNi4uZjlhNThmZGEyMTc5ZmE4NTUwMDk1MWFhMWNjMjc5
MDc1MTMxY2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAgLTQ2LDEzICs0NiwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5u
aW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgPSAwOwogICAgIGVudW0gVmlkZW9HcmF2aXR5IHsgVmlk
ZW9HcmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdEZpbGwgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHko
VmlkZW9HcmF2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCAxYWEzY2U1YmJjOTA4Y2NkYTQ0
YTNkMjJiNDQyYTIwMmE3NmJlMTA2Li45ODdhYTliODU5ZmZjMDY2Yzc5NzM1OTY0YWIxNTUxM2Jj
YmJiMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNzAsMTIgKzcw
LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYmVnaW5TY2Fu
bmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVv
R3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5k
ZXgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVu
TW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tCmluZGV4IDc3MGMyZjJjY2QzNTYzNzVmNjU4MjljMDg2MTI3ODJlMjIxYmYxYWEuLjA5
ZmI4Mjk2ZDEyZTk3YzQwOTUzMWQ5ZjQ4Nzk0NmE4MjliNGZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTExMiw3ICsxMTIsNiBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVu
dCogdmlkZQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpoYW5k
bGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQq
IGV2ZW50KQogewotICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwgZXZlbnQtPnR5cGUo
KS5jaGFyYWN0ZXJzOCgpKTsKICAgICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnQtPnR5cGUoKSk7
CiB9CiAKQEAgLTI0NSwxMCArMjQ0LDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmVuZFNjYW5uaW5nKCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPmVuZFNj
YW5uaW5nKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1f
dmlkZW9FbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmV4
aXRGdWxsc2NyZWVuKCk7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1fdmlkZW9FbGVtZW50
LT5mdWxsc2NyZWVuTW9kZSgpICE9IG1vZGUpCisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRG
dWxsc2NyZWVuTW9kZShtb2RlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCByZWN0KQpAQCAtMzg5LDQg
KzM4OCwxNSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudAogICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCitib29s
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAor
eworICAgIGlmICghbV92aWRlb0VsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChQYWdlKiBwYWdlID0gbV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpKQorICAg
ICAgICByZXR1cm4gcGFnZS0+aXNWaXNpYmxlKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FW
S2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaApp
bmRleCAyMWY1ZjBiNTkwMzk4YmUzMjM5NGNjNGM5MzNkY2RhZGQwZDZkNTk0Li5iYmMyY2UyNjAz
ZTg2NzQ1ZjRiMWNkNmRiNmM2NzU5YjJhNWJkMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaApAQCAtOTYsNiArOTYsOCBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24p
IHsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzdHJvbmcpIEFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzUGljdHVyZUluUGljdHVyZUFjdGl2ZSkg
Qk9PTCBwaWN0dXJlSW5QaWN0dXJlQWN0aXZlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIHBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3Vu
ZDsKIEBlbmQKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDc2Njc1MTRl
NjUzMzQ4MmQzZTNhZTg4YTg5Y2U5ODZkNjU5ODQ1Y2EuLjBhNTM5YmViOWFlMzNmMjFlNjA3NGE0
NDdiNzdmMTI4ZjkzMDI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC02MzIsNiArNjMyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFu
YWdlcikKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSwgbV9wYWdlSUQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAppbmRleCA3ZTFlMGQ5MDYyYzc2MGNjNTNmZjkxNzkwNThjMDhlODE5OTZmYmUx
Li41NTYzNmMzMjM1OWQ4ZjAyYTc3YjI5ZTUwYTQyNzFiZWNmOWQwYWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmgKQEAgLTc1LDEyICs3NSwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblNjYW5uaW5nQmFja3dhcmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nh
bm5pbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoVmlkZW9H
cmF2aXR5KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlv
bih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCiAgICAgdmly
dHVhbCB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtMTA0LDYgKzEwNSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKICAg
ICBib29sIGhhc01vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSBjb25zdDsKICAgICBib29sIG1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0
dXJlSW5QaWN0dXJlKCkgY29uc3Q7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSgpOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDsKQEAgLTE0Nyw3ICsxNTAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4
dElkKTsKICAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQp
OwogICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJl
cXVlc3RFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgcmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGRpZFNldHVwRnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBmNDUyMGZlMzAxYmY1
YjlkNzI1Nzg3ZmQyYTlmOTM4YTE2NGJhYzY0Li42ZWJjNWIxOGM4MmJjZWVjNmM3OTNkNDc0ZjI0
MjFhNjI1OTU3MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMTU2LDEwICsx
NTYsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmVuZFNjYW5uaW5n
KCkKICAgICAgICAgbV9tYW5hZ2VyLT5lbmRTY2FubmluZyhtX2NvbnRleHRJZCk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4o
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsK
ICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnJlcXVlc3RFeGl0RnVsbHNj
cmVlbihtX2NvbnRleHRJZCk7CisgICAgICAgIG1fbWFuYWdlci0+cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKG1fY29udGV4dElkLCBtb2RlKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgZnJhbWUpCkBA
IC0xOTIsNiArMTkyLDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlCiAgICAgICAgIG1fbWFu
YWdlci0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fY29udGV4dElkLCBtb2RlKTsKIH0KIAorYm9v
bCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmlzVmlzaWJsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbWFuYWdlciA/IG1fbWFuYWdlci0+aXNWaXNpYmxlKCkgOiBmYWxzZTsKK30K
Kwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVl
bigpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTI4NCw2ICsyODksMTIgQEAgYm9vbCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0
dXJlSW5QaWN0dXJlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAg
Zm9yIChhdXRvJiB0dXBsZSA6IG1fY29udGV4dE1hcC52YWx1ZXMoKSkKKyAgICAgICAgc3RkOjpn
ZXQ8MT4odHVwbGUpLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworfQorCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250
ZXh0SWQpCiB7CiAgICAgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwg
PSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElk
KTsKQEAgLTMyMywxMyArMzM0LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAKICAgICBz
dGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CiAKLSAgICBSZXRhaW5QdHI8V2ViTGF5ZXJIb3N0Vmlldz4gdmlldyA9IGFkb3B0TlMo
W1tXZWJMYXllckhvc3RWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdlYkxheWVy
SG9zdFZpZXc+IHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJMYXllckhvc3RWaWV3Kj4obW9kZWwtPmxh
eWVySG9zdFZpZXcoKSk7CisgICAgaWYgKCF2aWV3KSB7CisgICAgICAgIHZpZXcgPSBhZG9wdE5T
KFtbV2ViTGF5ZXJIb3N0VmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICBtb2RlbC0+c2V0TGF5
ZXJIb3N0Vmlldyh2aWV3KTsKKyAgICB9CiAgICAgW3ZpZXcgc2V0Q29udGV4dElEOnZpZGVvTGF5
ZXJJRF07Ci0gICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcodmlldyk7CiAgICAgaWYgKGhvc3Rp
bmdEZXZpY2VTY2FsZUZhY3RvciAhPSAxKSB7CiAgICAgICAgIC8vIEludmVydCB0aGUgc2NhbGUg
dHJhbnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZpeCA8cmRhcjovL3Byb2JsZW0v
MTgzMTY1NDI+LgogICAgICAgICBmbG9hdCBpbnZlcnNlU2NhbGUgPSAxIC8gaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yOwotICAgICAgICBbW21vZGVsLT5sYXllckhvc3RWaWV3KCkgbGF5ZXJdIHNl
dFN1YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUoaW52ZXJzZVNjYWxlLCBp
bnZlcnNlU2NhbGUsIDEpXTsKKyAgICAgICAgW1t2aWV3IGxheWVyXSBzZXRTdWJsYXllclRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAx
KV07CiAgICAgfQogCiAgICAgVUlWaWV3ICpwYXJlbnRWaWV3ID0gZG93bmNhc3Q8UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkucmVtb3RlTGF5
ZXJUcmVlSG9zdCgpLnJvb3RMYXllcigpOwpAQCAtNDk0LDkgKzUwOCw5IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpF
bmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29u
dGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KQpAQCAtNTU3LDYgKzU3MSwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgVwogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCitib29s
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wYWdlLT5pc1ZpZXdWaXNpYmxlKCkgJiYgbV9wYWdlLT5pc0luV2luZG93KCk7
Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3Vmlz
aWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IDdm
NGUzNzUyMGE4MjI1Y2IyMDhjYzM3NDdhMWNjNThhOTk3M2Q1MGUuLmYxZDBmZTUxMTE0ODM3MTA4
YWM3YTdmNTc1YjY2MGU5NDE2OWZhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTE1Myw3ICsx
NTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRf
dCBjb250ZXh0SWQpOwogICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAgICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZGlkU2V0
dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpp
bmRleCBiMzE1M2MwYjM5OTIyZWVjYjQ0OTI3OGMxMzliZjk0YTkyZmI3MmRmLi5kNGRjYWFhNjcz
N2M0NDkyMjJmOGRlNjAxZjNkZWJiOWVmZTA2MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlciB7CiAgICAgQmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4
dElkKQogICAgIEJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
RW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQotICAgIFJlcXVlc3RFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiAgICAgRGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBEaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgRGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCmluZGV4IDBiZjM2NGMxNDM3ZTM1NjFkYTExYjJkYjZlMmFjZTFiYTFlMjI0MjYuLmYx
MTgwZjZmNjRhZGNjMGU4ZTFmOTRhOTUyYWRkMzY4ZTE2NzVhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQpAQCAtMjQwLDExICsyNDAsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKIAogICAg
IEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVu
dCk7CiAgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0UmVjdCgwLCAwLCBjbGll
bnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOwotICAgIAorCisgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZE1vZGUgPSBpbnRlcmZhY2Ut
PmZ1bGxzY3JlZW5Nb2RlKCk7CiAgICAgaW50ZXJmYWNlLT5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4o
dHJ1ZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICBtb2Rl
bC0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwotICAgIG1vZGVsLT5zZXRWaWRlb0xh
eWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsKKyAgICBpZiAob2xkTW9kZSA9PSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQorICAgICAgICBtb2RlbC0+c2V0
VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFtZSk7CiAKICAgICBpZiAoaW50ZXJmYWNlLT5p
c0FuaW1hdGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0zOTQsOSArMzk2LDkgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY2FubmluZygpOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewotICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkucmVxdWVzdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5y
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IGluZGV4KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>