<?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>223912</bug_id>
          
          <creation_ts>2021-03-29 22:08:33 -0700</creation_ts>
          <short_desc>Allow non-60fps display updates to be driven by DisplayRefreshMonitor</short_desc>
          <delta_ts>2021-03-30 11:15:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1745029</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-29 22:08:33 -0700</bug_when>
    <thetext>Allow non-60fps display updates to be driven by DisplayRefreshMonitor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745030</commentid>
    <comment_count>1</comment_count>
      <attachid>424616</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-29 22:28:06 -0700</bug_when>
    <thetext>Created attachment 424616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745127</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-30 08:35:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/76004517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745155</commentid>
    <comment_count>3</comment_count>
      <attachid>424616</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-30 09:38:16 -0700</bug_when>
    <thetext>Comment on attachment 424616
Patch

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

Love the tests!

&gt; Source/WebCore/ChangeLog:21
&gt; +        Also add preferredFramesPerSecond() to use here, and have both it and

I&apos;m unclear what &quot;here&quot; is in this context.

&gt; Source/WebCore/page/Page.cpp:1201
&gt;      renderingUpdateScheduler().windowScreenDidChange(displayID);
&gt; +    renderingUpdateScheduler().adjustRenderingUpdateFrequency();

I would either pull renderingUpdateScheduler into a local (since the getter does work) or just have windowScreenDidChange() call adjustRenderingUpdateFrequency(),

&gt; Source/WebCore/page/Page.h:429
&gt; +    // This can return nullopt if throttling reasons result in a frequency less than one, in which case
&gt; +    // preferredRenderingUpdateInterval provides the frequency.
&gt; +    Optional&lt;FramesPerSecond&gt; preferredRenderingUpdateFramesPerSecond() const;

This seems a little silly that two calls are needed. In the future, we should we consider making FramesPerSecond be a struct containing a ratio that can represent frequencies less than one, or make this return a Variant&lt;FramesPerSecond, Seconds&gt;.

&gt; Source/WebCore/platform/Logging.cpp:95
&gt; +    LogRequestAnimationFrame.state = WTFLogChannelState::On;
&gt; +    LogDisplayLink.state = WTFLogChannelState::On;

Did you mean to leave these in?

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.cpp:33
&gt; +static constexpr OptionSet&lt;ThrottlingReason&gt; halfSpeedThrottlingReasons = { ThrottlingReason::LowPowerMode, ThrottlingReason::NonInteractedCrossOriginFrame, ThrottlingReason::VisuallyIdle };

I don&apos;t think the `=` is needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745189</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-30 11:15:20 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/275215/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424616</attachid>
            <date>2021-03-29 22:28:06 -0700</date>
            <delta_ts>2021-03-30 09:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223912-20210329222805.patch</filename>
            <type>text/plain</type>
            <size>55133</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M0ZTcyYTNkNTNhMWUz
N2VkYzdhYWY2ZDJjYWFhNmQ0MzIzZDVlYy4uZWU3MGMwYzE2MGEwNWEzYjQ4YmQ1MDg5YmZkOWZk
ZDZjNzU5ZTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTAzLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IG5vbi02
MGZwcyBkaXNwbGF5IHVwZGF0ZXMgdG8gYmUgZHJpdmVuIGJ5IERpc3BsYXlSZWZyZXNoTW9uaXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzOTEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBQcmV2aW91c2x5LCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlQW5pbWF0aW9u
KCkgd291bGQgcmV0dXJuIGZhbHNlIGZvciBhbnkKKyAgICAgICAgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kIHdoaWNoIGlzIG5vdCA2MGZwcywgY2F1c2luZyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIgdG8gZmFsbCBiYWNrCisgICAgICAgIHRvIGl0cyB0aW1lciBtZWNoYW5pc20uIFRoaXMgbWVh
bnQgdGhhdCB0aHJvdHRsZWQgKGUuZy4gYnkgbG93IHBvd2VyKSBwYWdlcyBhbmQgZGlzcGxheQor
ICAgICAgICB1cGRhdGVzIG9uIG5vbi02MGZwcyBkaXNwbGF5IHdvdWxkIGFsbCB1c2UgdGltZXJz
LiBUaGlzIGlzIHVuZGVzaXJhYmxlIGJlY2F1c2Ugd2Ugd2FudAorICAgICAgICBhbGlnbm1lbnQg
d2l0aCBkaXNwbGF5IHJlZnJlc2gsIGFuZCB0byBhdm9pZCB0aW1lciBkcmlmdCBiZXR3ZWVuIG11
bHRpcGxlIHRocm90dGxlZAorICAgICAgICBkb2N1bWVudHMuCisKKyAgICAgICAgVGhlIGZpeCBo
YXMgdHdvIHBhcnRzLiBGaXJzdCwgd2UgbmVlZCB0byBmaXggUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyIGFuZAorICAgICAgICBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY29tcHV0ZSB0
aGVpciBmcmFtZSByYXRlcyBpbiB0ZXJtcyBvZiBGcmFtZXNQZXJTZWNvbmQsIHJhdGhlcgorICAg
ICAgICB0aGFuIFNlY29uZHMsIGJlY2F1c2UgdXNpbmcgdGhlIGxhdHRlciByZXF1aXJlcyBjb252
ZXJzaW9uIHRvIFNlY29uZHMgYW5kIGJhY2sgdmlhCisgICAgICAgIG1fcGFnZS5wcmVmZXJyZWRS
ZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCgpIHdoaWNoIHdhcyBhd2t3YXJkLiBTbyBoYXZlIFBhZ2Ug
ZXhwb3NlCisgICAgICAgIHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCgp
LgorCisgICAgICAgIEFsc28gYWRkIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIHRvIHVzZSBo
ZXJlLCBhbmQgaGF2ZSBib3RoIGl0IGFuZAorICAgICAgICBwcmVmZXJyZWRGcmFtZUludGVydmFs
KCkgdGFrZSB0aGUgIm5lYXIgNjBmcHMiIGZsYWcgYXMgYW4gYXJndW1lbnQsIHNvIGRvaW5nIHRo
ZSBjb21tb24gbWF0aAorICAgICAgICBpbiBBbmltYXRpb25GcmFtZVJhdGUuCisKKyAgICAgICAg
VGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBmaXggaXMgdG8gbW92ZSAicHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kIiBmcm9tCisgICAgICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciB0byBEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQsIHNpbmNlIGNsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8KKyAg
ICAgICAgcmVxdWVzdCBkaWZmZXJlbnQgZnJhbWUgcmF0ZXMuIFRoZW4gd2UgcGFzcyB0aGUgRGlz
cGxheVVwZGF0ZSB0bworICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OmZpcmVE
aXNwbGF5UmVmcmVzaElmTmVlZGVkKCksIGFuZCBmaW5hbGx5IHVzZSBpdCB0byBkbyB0aGUgbWF0
aAorICAgICAgICBvZiB3aGV0aGVyIHRvIHNraXAgYW4gdXBkYXRlIGZvciB0aGlzIGNsaWVudC4K
KworICAgICAgICBUZXN0ZWQgYnkgQVBJIHRlc3RzIGluIEFuaW1hdGlvbkZyYW1lUmF0ZS5jcHAs
IGFuZCBieQorICAgICAgICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10
aHJvdHRsaW5nLWxvd1Bvd2VyTW9kZS5odG1sCisKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlcjo6aW50ZXJ2YWwgY29uc3QpOiBUaGlzIGZ1bmN0aW9uICh1c2VkIGZvciB0ZXN0
aW5nKQorICAgICAgICBpcyBqdXN0IGEgc3lub255bSBmb3IgcHJlZmVycmVkU2NyaXB0ZWRBbmlt
YXRpb25JbnRlcnZhbCgpLCBidXQgbGVmdCBoZXJlIGJlY2F1c2UgaXQncyBleHBvcnRlZAorICAg
ICAgICBhbmQgbWF5YmUgdGhlIGNvbXBpbGVyIGNhbiBpbmxpbmUgcHJlZmVycmVkU2NyaXB0ZWRB
bmltYXRpb25JbnRlcnZhbCgpLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOjpwcmVmZXJyZWRTY3JpcHRlZEFuaW1hdGlvbkludGVydmFsIGNvbnN0KTogSnVz
dCBjYWxsCisgICAgICAgIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoKSB3aXRoIHRocm90dGxpbmdS
ZWFzb25zKCksIHdoaWNoIGlzIHRoZSB1bmlvbiBvZiB0aGUgcmVhc29ucyBmb3IKKyAgICAgICAg
dGhlIHBhZ2UgYW5kIGZvciB0aGlzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6dGhyb3R0bGluZ1JlYXNv
bnMgY29uc3QpOiBObyByZWFzb24gbm90IHRvIHJldHVybiBtX3Rocm90dGxpbmdSZWFzb25zCisg
ICAgICAgIGlmIHdlIGRvbid0IGhhdmUgYSBwYWdlLiBTaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzaG91bGRSZXNjaGVk
dWxlUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNvbnN0KTogTG9nZ2luZy4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrcyk6IExvZ2dpbmcuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZSk6IFRoZSBkaXNwbGF5IG5v
bWluYWwgRlBTIG1heSBoYXZlIGNoYW5nZWQgc28gcmVjb21wdXRlIHRoZSB1cGRhdGUgZnJlcXVl
bmN5LgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlRnJh
bWVzUGVyU2Vjb25kIGNvbnN0KTogUmV0dXJuIHRoZSBwcmVmZXJyZWQgdXBkYXRlIGluIEZyYW1l
c1BlclNlY29uZC4gV2lsbCByZXR1cm4KKyAgICAgICAgbnVsbCBpZiB0aHJvdHRsaW5nIHJlc3Vs
dHMgaW4gYSA8IDFmcHMgdXBkYXRlLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cHJlZmVycmVk
UmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwgY29uc3QpOiBQdXNoIHRoZSAibmVhciA2MGZwcyIgbG9n
aWMgaW50byB0aGUgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
SXNWaXN1YWxseUlkbGVJbnRlcm5hbCk6IENsZWFyZXIgdG8gdXNlIE9wdGlvblNldDw+OjpzZXQo
KS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmhhbmRsZUxvd01vZGVQb3dlckNoYW5nZSk6IERp
dHRvLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlz
cGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6dGhyb3R0bGluZ1JlYXNvbnMgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcjo6c2NoZWR1bGVBbmltYXRpb24pOiBSZW1vdmUgY29kZSB0aGF0IGZlbGwgYmFjayB0byBh
IHRpbWVyIGZvciBhbnkgbm9uLTYwZnBzIHJhdGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI6OmFkanVzdFJlbmRlcmluZ1VwZGF0ZUZyZXF1ZW5jeSk6IENvbXB1
dGUgaWYgd2UgaGF2ZSB0byB1c2UgYSB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcDogU2lt
cGxpZnkgc29tZSBjb2RlIHdpdGggaGFsZlNwZWVkVGhyb3R0bGluZ1JlYXNvbnMuCisgICAgICAg
IChXZWJDb3JlOjpwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOiBTaW1pbGFyIGxvZ2ljIHRvIHBy
ZWZlcnJlZEZyYW1lSW50ZXJ2YWwsIGJ1dCBmb3IgRnJhbWVzUGVyU2Vjb25kIHZhbHVlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEZyYW1lSW50ZXJ2YWwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpzZXRQcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Ojpm
aXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQ6OnByZWZlcnJlZEZyYW1lc1BlclNlY29uZCBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5VXBkYXRlOjpyZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeSBjb25zdCk6
IENvbXB1dGUgd2hldGhlciB0aGlzIHVwZGF0ZSBpcyByZWxldmFudAorICAgICAgICBmb3IgYSBj
bGllbnQgd2hvIHdhbnRzIHVwZGF0ZXMgYXQgJ3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCcuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oOgorCiAyMDIxLTAzLTI4
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBsdW1i
IERpc3BsYXlVcGRhdGUgdGhyb3VnaCB0aGUgZGlzcGxheSByZWZyZXNoIG1vbml0b3JzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJiOWVlODU1MGQzMDMzOTc2ZjY2NzdjNzRmOTMxMmMxNWJmMDNjMTAuLmJhNWE4YzAx
MTJhYmQxZWJhZWQ1ZTgxYjZmYTkxYmQ5ZGFmMWY0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWxsb3cgbm9uLTYwZnBzIGRpc3BsYXkgdXBkYXRlcyB0byBiZSBkcml2ZW4gYnkg
RGlzcGxheVJlZnJlc2hNb25pdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM5MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXByb3ZlIHRoZSBsb2dnaW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L21hYy9EaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNw
bGF5TGluayk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjphZGRPYnNlcnZlcik6CisK
IDIwMjEtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUGx1bWIgRGlzcGxheVVwZGF0ZSB0aHJvdWdoIHRoZSBkaXNwbGF5IHJlZnJlc2ggbW9u
aXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggYTU0OWIyZWNlMWQ0YjNlN2ZmZGYzYTIxYjA1YmQ1YmEyOWM5MDhhNS4u
ODIxMDIwMzMzNmJlOGY0YzVkM2QxN2I4MjQyZDUzMTUwNDY1NmZlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKIAogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUXVpcmtzLmgiCiAjaW5jbHVkZSAiUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCIKQEAgLTcyLDI2ICs3MywyNCBAQCBQYWdlKiBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhZ2UoKSBjb25zdAogCiBTZWNvbmRzIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcjo6aW50ZXJ2YWwoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBw
YWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgocHJlZmVycmVkU2Ny
aXB0ZWRBbmltYXRpb25JbnRlcnZhbCgpLCBwYWdlLT5wcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVJ
bnRlcnZhbCgpKTsKLSAgICByZXR1cm4gRnVsbFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWw7CisgICAg
cmV0dXJuIHByZWZlcnJlZFNjcmlwdGVkQW5pbWF0aW9uSW50ZXJ2YWwoKTsKIH0KIAogU2Vjb25k
cyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnByZWZlcnJlZFNjcmlwdGVkQW5pbWF0aW9u
SW50ZXJ2YWwoKSBjb25zdAogewotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gcHJlZmVy
cmVkRlBTOwotICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgIGlm
IChwYWdlLT5zZXR0aW5ncygpLnByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5h
YmxlZCgpKQotICAgICAgICAgICAgcHJlZmVycmVkRlBTID0gcGFnZS0+ZGlzcGxheU5vbWluYWxG
cmFtZXNQZXJTZWNvbmQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50ZXJ2
YWwobV90aHJvdHRsaW5nUmVhc29ucywgcHJlZmVycmVkRlBTKTsKKyAgICBhdXRvKiBwYWdlID0g
dGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIEZ1bGxTcGVlZEFu
aW1hdGlvbkludGVydmFsOworCisgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwodGhy
b3R0bGluZ1JlYXNvbnMoKSwgcGFnZS0+ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKSwg
cGFnZS0+c2V0dGluZ3MoKS5wcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJs
ZWQoKSk7CiB9CiAKIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXI6OnRocm90dGxpbmdSZWFzb25zKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byog
cGFnZSA9IHRoaXMtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIHBhZ2UtPnRocm90dGxpbmdSZWFz
b25zKCkgfCBtX3Rocm90dGxpbmdSZWFzb25zOwotICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gbV90aHJvdHRsaW5nUmVhc29uczsKIH0KIAogYm9vbCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXI6OmlzVGhyb3R0bGVkUmVsYXRpdmVUb1BhZ2UoKSBjb25zdApAQCAtMTAzLDYgKzEwMiw5
IEBAIGJvb2wgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjppc1Rocm90dGxlZFJlbGF0aXZl
VG9QYWdlKCkgY29uc3QKIAogYm9vbCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNob3Vs
ZFJlc2NoZWR1bGVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRz
IHRpbWVzdGFtcCkgY29uc3QKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oUmVxdWVzdEFuaW1hdGlv
bkZyYW1lLCBzdHJlYW0gPDwgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2hvdWxkUmVz
Y2hlZHVsZVJlcXVlc3RBbmltYXRpb25GcmFtZSAtIHRocm90dGxlZCByZWxhdGl2ZSB0byBwYWdl
ICIgPDwgaXNUaHJvdHRsZWRSZWxhdGl2ZVRvUGFnZSgpCisgICAgICAgIDw8ICIsIGxhc3QgZGVs
dGEgIiA8PCAodGltZXN0YW1wIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLm1pbGxp
c2Vjb25kcygpIDw8ICJtcywgcHJlZmVycmVkIGludGVydmFsICIgPDwgcHJlZmVycmVkU2NyaXB0
ZWRBbmltYXRpb25JbnRlcnZhbCgpLm1pbGxpc2Vjb25kcygpIDw8ICIpIik7CisKICAgICByZXR1
cm4gdGltZXN0YW1wIDw9IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wIHx8IChpc1Rocm90
dGxlZFJlbGF0aXZlVG9QYWdlKCkgJiYgKHRpbWVzdGFtcCAtIG1fbGFzdEFuaW1hdGlvbkZyYW1l
VGltZXN0YW1wIDwgcHJlZmVycmVkU2NyaXB0ZWRBbmltYXRpb25JbnRlcnZhbCgpKSk7CiB9CiAK
QEAgLTE0MCw2ICsxNDIsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUgogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoc2hvdWxkUmVzY2hlZHVsZVJlcXVlc3RBbmltYXRpb25GcmFtZSh0aW1l
c3RhbXApKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShSZXF1ZXN0QW5pbWF0aW9uRnJhbWUs
IHN0cmVhbSA8PCAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzIC0gcmVzY2hlZHVsaW5nIChwYWdlIHVwZGF0ZSBpbnRlcnZh
bCAiIDw8IChwYWdlKCkgPyBwYWdlKCktPnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUludGVydmFs
KCkgOiAwX3MpIDw8ICIsIHJhZiBpbnRlcnZhbCAiIDw8IHByZWZlcnJlZFNjcmlwdGVkQW5pbWF0
aW9uSW50ZXJ2YWwoKSA8PCAiKSIpOwogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTUwLDYgKzE1Myw4IEBAIHZvaWQgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJl
ZHVjZWRSCiAgICAgaWYgKG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+cXVpcmtzKCkubmVlZHNN
aWxsaXNlY29uZFJlc29sdXRpb25Gb3JIaWdoUmVzVGltZVN0YW1wKCkpCiAgICAgICAgIGhpZ2hS
ZXNOb3dNcyArPSAwLjE7CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oUmVxdWVzdEFuaW1hdGlvbkZy
YW1lLCBzdHJlYW0gPDwgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyBhdCAiIDw8IGhpZ2hSZXNOb3dNcyA8PCAiICh0aHJv
dHRsaW5nIHJlYXNvbnMgIiA8PCB0aHJvdHRsaW5nUmVhc29ucygpIDw8ICIsIHByZWZlcnJlZCBp
bnRlcnZhbCAiIDw8IHByZWZlcnJlZFNjcmlwdGVkQW5pbWF0aW9uSW50ZXJ2YWwoKS5taWxsaXNl
Y29uZHMoKSA8PCAibXMpIik7CisKICAgICAvLyBGaXJzdCwgZ2VuZXJhdGUgYSBsaXN0IG9mIGNh
bGxiYWNrcyB0byBjb25zaWRlci4gIENhbGxiYWNrcyByZWdpc3RlcmVkIGZyb20gdGhpcyBwb2lu
dAogICAgIC8vIG9uIGFyZSBjb25zaWRlcmVkIG9ubHkgZm9yIHRoZSAibmV4dCIgZnJhbWUsIG5v
dCB0aGlzIG9uZS4KICAgICBDYWxsYmFja0xpc3QgY2FsbGJhY2tzKG1fY2FsbGJhY2tzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IDA5N2VkNWMxYzA1M2M1MzkzZjY1MjM3M2QyODE1ZWIzMzBjM2Rl
ZWQuLmQ1MjZhNTk1ODIxNDEwZDZlYjExMDBhNDkzNzBkYTkyNDdjMmRiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTE5OCw2ICsxMTk4LDcgQEAgdm9pZCBQYWdlOjp3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXIKICAg
ICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3Bs
YXlJRCwgbm9taW5hbEZyYW1lc1BlclNlY29uZCk7CiAKICAgICByZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIoKS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKKyAgICByZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIoKS5hZGp1c3RSZW5kZXJpbmdVcGRhdGVGcmVxdWVuY3koKTsKIAogICAg
IHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQpAQCAtMTc3NSwxMSArMTc3Niwx
NCBAQCB2b2lkIFBhZ2U6OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpCiAgICAgfSk7CiB9CiAK
K09wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gUGFnZTo6cHJlZmVycmVkUmVuZGVyaW5nVXBkYXRl
RnJhbWVzUGVyU2Vjb25kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKG1fdGhyb3R0bGluZ1JlYXNvbnMsIG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIHNldHRpbmdzKCkucHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVk
KCkpOworfQorCiBTZWNvbmRzIFBhZ2U6OnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUludGVydmFs
KCkgY29uc3QKIHsKLSAgICBpZiAoIXNldHRpbmdzKCkucHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0
ZXNOZWFyNjBGUFNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVy
dmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMsIG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQp
OwotICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVydmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMs
IFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobV90aHJv
dHRsaW5nUmVhc29ucywgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCwgc2V0dGluZ3Mo
KS5wcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQoKSk7CiB9CiAKIHZv
aWQgUGFnZTo6c2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChib29sIGlzVmlzdWFsbHlJZGxlKQpA
QCAtMTc4Nyw3ICsxNzkxLDcgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFs
KGJvb2wgaXNWaXN1YWxseUlkbGUpCiAgICAgaWYgKGlzVmlzdWFsbHlJZGxlID09IG1fdGhyb3R0
bGluZ1JlYXNvbnMuY29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV90aHJvdHRsaW5nUmVhc29ucyA9IG1fdGhyb3R0bGluZ1Jl
YXNvbnMgXiBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGU7CisgICAgbV90aHJvdHRsaW5n
UmVhc29ucy5zZXQoVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlLCBpc1Zpc3VhbGx5SWRs
ZSk7CiAgICAgcmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuYWRqdXN0UmVuZGVyaW5nVXBkYXRl
RnJlcXVlbmN5KCk7CiB9CiAKQEAgLTE3OTksNyArMTgwMyw3IEBAIHZvaWQgUGFnZTo6aGFuZGxl
TG93TW9kZVBvd2VyQ2hhbmdlKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKQogICAgIGlmIChp
c0xvd1Bvd2VyTW9kZUVuYWJsZWQgPT0gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJv
dHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ro
cm90dGxpbmdSZWFzb25zID0gbV90aHJvdHRsaW5nUmVhc29ucyBeIFRocm90dGxpbmdSZWFzb246
Okxvd1Bvd2VyTW9kZTsKKyAgICBtX3Rocm90dGxpbmdSZWFzb25zLnNldChUaHJvdHRsaW5nUmVh
c29uOjpMb3dQb3dlck1vZGUsIGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7CiAgICAgcmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyKCkuYWRqdXN0UmVuZGVyaW5nVXBkYXRlRnJlcXVlbmN5KCk7CiAKICAg
ICB1cGRhdGVET01UaW1lckFsaWdubWVudEludGVydmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDAy
YTJjZTNlMjNlYjhjODQ4YmMyYzRmOTQ1YzI1N2FhMDU2NzIyNmUuLmQ0MDRkNjk0Y2VhNjIzYjA5
YzAyYWMwMGVhMmM5ZDdjYWJmMzE4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC00MjIsNyArNDIyLDEy
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmVlblByb3BlcnRpZXNEaWRD
aGFuZ2UoKTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAg
ICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJ
RDsgfQotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29u
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7IH0KKyAg
ICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25k
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZDsgfQorCisg
ICAgLy8gVGhpcyBjYW4gcmV0dXJuIG51bGxvcHQgaWYgdGhyb3R0bGluZyByZWFzb25zIHJlc3Vs
dCBpbiBhIGZyZXF1ZW5jeSBsZXNzIHRoYW4gb25lLCBpbiB3aGljaCBjYXNlCisgICAgLy8gcHJl
ZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwgcHJvdmlkZXMgdGhlIGZyZXF1ZW5jeS4KKyAg
ICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1l
c1BlclNlY29uZCgpIGNvbnN0OworICAgIFNlY29uZHMgcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRl
SW50ZXJ2YWwoKSBjb25zdDsKIAogICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQpOwpAQCAtNzk0LDcgKzc5OSw2IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9y
VGVzdGluZyhib29sKTsKIAogICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiB0aHJvdHRs
aW5nUmVhc29ucygpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGluZ1JlYXNvbnM7IH0KLSAgICBT
ZWNvbmRzIHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUludGVydmFsKCkgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKQEAgLTky
OSw3ICs5MzMsNyBAQCBwcml2YXRlOgogICAgIFJUQ0NvbnRyb2xsZXIgbV9ydGNDb250cm9sbGVy
OwogCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQ+IG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7CisgICAgT3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOwogCiAg
ICAgaW50IG1fbmVzdGVkUnVuTG9vcENvdW50IHsgMCB9OwogICAgIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiBtX3VubmVzdENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIuY3BwCmluZGV4IDMyMGJjYzc0ZjliYTM4MmQ2YmQxOGI2MDlmNzVk
MzNjYTM5ZWE5NjIuLjlhMWE1NGU1MmQ5NmFlNDY1NmIwODgxMTBlZDgxNWVjMDI1NzUwYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAK
QEAgLTQyLDM4ICs0MiwyMiBAQCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OlJlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlcihQYWdlJiBwYWdlKQogICAgIHdpbmRvd1NjcmVlbkRpZENoYW5nZShwYWdl
LmNocm9tZSgpLmRpc3BsYXlJRCgpKTsKIH0KIAotdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKQorYm9vbCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKCkKIHsKLSAgICBpZiAobV9wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgPT0gcHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZCA9IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKLSAgICBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2V0UHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKCp0aGlzLCBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7Ci19Ci0KLWJvb2wg
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZUFuaW1hdGlvbihGcmFtZXNQZXJTZWNv
bmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKQotewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIC8vIFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCBjYW4gb25seSBiZSBjaGFuZ2VkIGZv
ciBpT1MgRGlzcGxheVJlZnJlc2hNb25pdG9yLgotICAgIC8vIFRoZSBjYWxsZXIgaGFzIHRvIGZh
bGwgYmFjayB0byB1c2luZyB0aGUgdGltZXIuCi0gICAgaWYgKHByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZCAhPSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpCisgICAgaWYgKG1fdXNlVGltZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHNldFByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZChwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOwotICAgIGF1dG8gcmVzdWx0ID0gRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5pbWF0aW9u
KCp0aGlzKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyIGZvciBwYWdlICIgPDwgJm1fcGFnZSA8PCAiIHNjaGVkdWxl
QW5pbWF0aW9uKCIgPDwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kIDw8ICJmcHMpIC0gc2NoZWR1
bGVkICIgPDwgcmVzdWx0KTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlv
bigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjphZGp1c3RSZW5k
ZXJpbmdVcGRhdGVGcmVxdWVuY3koKQogewotICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBtX3BhZ2Uu
cHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwoKTsKLQotICAgIC8vIFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCBpcyBhbiBpbnRlZ2VyIGFuZCBzaG91bGQgYmUgPiAwLgotICAgIGlmIChp
bnRlcnZhbCA8PSAxX3MpCi0gICAgICAgIHNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChwcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmRGcm9tSW50ZXJ2YWwoaW50ZXJ2YWwpKTsKKyAgICBhdXRvIHJl
bmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCA9IG1fcGFnZS5wcmVmZXJyZWRSZW5kZXJpbmdV
cGRhdGVGcmFtZXNQZXJTZWNvbmQoKTsKKyAgICBpZiAocmVuZGVyaW5nVXBkYXRlRnJhbWVzUGVy
U2Vjb25kKSB7CisgICAgICAgIHNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChyZW5kZXJpbmdV
cGRhdGVGcmFtZXNQZXJTZWNvbmQudmFsdWUoKSk7CisgICAgICAgIG1fdXNlVGltZXIgPSBmYWxz
ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV91c2VUaW1lciA9IHRydWU7CiAKICAgICBpZiAoaXNT
Y2hlZHVsZWQoKSkgewogICAgICAgICBjbGVhclNjaGVkdWxlZCgpOwpAQCAtOTYsMTQgKzgwLDEw
IEBAIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZSgpCiAKICAgICB0cmFjZVBvaW50KFNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKTsKIAotICAgIFNl
Y29uZHMgaW50ZXJ2YWwgPSBtX3BhZ2UucHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwo
KTsKLQotICAgIC8vIFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCBpcyBhbiBpbnRlZ2VyIGFuZCBz
aG91bGQgYmUgPiAwLgotICAgIGlmIChpbnRlcnZhbCA8PSAxX3MpCi0gICAgICAgIG1fc2NoZWR1
bGVkID0gc2NoZWR1bGVBbmltYXRpb24ocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kRnJvbUludGVy
dmFsKGludGVydmFsKSk7Ci0KLSAgICBpZiAoIWlzU2NoZWR1bGVkKCkpCi0gICAgICAgIHN0YXJ0
VGltZXIoaW50ZXJ2YWwpOworICAgIGlmICghc2NoZWR1bGVBbmltYXRpb24oKSkgeworICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSBmb3IgaW50ZXJ2YWwgIiA8PCBtX3Bh
Z2UucHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwoKSA8PCAiIGZhbGxpbmcgYmFjayB0
byB0aW1lciIpOworICAgICAgICBzdGFydFRpbWVyKG1fcGFnZS5wcmVmZXJyZWRSZW5kZXJpbmdV
cGRhdGVJbnRlcnZhbCgpKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCBkYzM1NzExNGM0ZTJiMmMxYzAzMTM3ZjZkMGQyZTQw
MTgwZmNhYTdlLi45YjUxYzcwNjBkOThlYmRmNjYzMTRjOGZjZmVkOTVmMGI3ZWZmOGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTUy
LDggKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRm
b3JtRGlzcGxheUlEKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldFByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZChGcmFtZXNQZXJTZWNvbmQpOwotICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oRnJh
bWVzUGVyU2Vjb25kKTsKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAKICAgICB2b2lk
IGRpc3BsYXlSZWZyZXNoRmlyZWQoKSBmaW5hbDsKICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CkBAIC02
Niw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX3JlZnJlc2hUaW1lcjsKLSAgICBGcmFtZXNQZXJTZWNvbmQgbV9wcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmQgeyBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQgfTsKKyAgICBi
b29sIG1fdXNlVGltZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCA4Y2YwMTg3Yzc3MDM0
ODQ4ODU3NmZkZWZlZDg3ZmIzMzA0Y2VlYjk0Li5hMWRhZTZmYjlmNDJmNTk4ZDY3Yzg4ZmUxNWZk
MTU5ZDRlZTM1NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApAQCAtOTEsNiAr
OTEsOCBAQCB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0
cmluZz4gbG9nQ2hhbm5lbFN0cmluZykKICAgICBTdHJpbmcgZW5hYmxlZENoYW5uZWxzU3RyaW5n
ID0gbG9nQ2hhbm5lbFN0cmluZyA/IGxvZ0NoYW5uZWxTdHJpbmcudmFsdWUoKSA6IGxvZ0xldmVs
U3RyaW5nKCk7CiAgICAgV1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKGxv
Z0NoYW5uZWxzLCBsb2dDaGFubmVsQ291bnQsIGVuYWJsZWRDaGFubmVsc1N0cmluZy51dGY4KCku
ZGF0YSgpKTsKIC8vICAgIExvZ0V2ZW50TG9vcC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6
T247CisgICAgTG9nUmVxdWVzdEFuaW1hdGlvbkZyYW1lLnN0YXRlID0gV1RGTG9nQ2hhbm5lbFN0
YXRlOjpPbjsKKyAgICBMb2dEaXNwbGF5TGluay5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6
T247CiB9CiAKIFdURkxvZ0NoYW5uZWwqIGdldExvZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9u
RnJhbWVSYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlv
bkZyYW1lUmF0ZS5jcHAKaW5kZXggNWMyYzQwODljNThmYjliMmNlODRjMDkzNjMzZmUwMmRjODZh
ZjJlYi4uYzM4OGRiNTc1YjJjYjIzNDVkMmUxMjA4OTRlODNmOGUwMzU1ZDdmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJh
dGUuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGlj
IGNvbnN0ZXhwciBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gaGFsZlNwZWVkVGhyb3R0bGlu
Z1JlYXNvbnMgPSB7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSwgVGhyb3R0bGluZ1Jl
YXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUsIFRocm90dGxpbmdSZWFzb246OlZp
c3VhbGx5SWRsZSB9OworCiBGcmFtZXNQZXJTZWNvbmQgZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1
bGxTcGVlZChGcmFtZXNQZXJTZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKICAgICBp
ZiAobm9taW5hbEZyYW1lc1BlclNlY29uZCA8PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpCkBA
IC00MiwyMiArNDQsNDIgQEAgRnJhbWVzUGVyU2Vjb25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RG
dWxsU3BlZWQoRnJhbWVzUGVyU2Vjb25kIG5vbWluYWxGcmFtZXNQZXIKICAgICByZXR1cm4gZnVs
bFNwZWVkUmF0aW8gLSBzdGQ6OmZsb29yKGZ1bGxTcGVlZFJhdGlvKSA8PSAwLjUgPyBmbG9vclNw
ZWVkIDogY2VpbFNwZWVkOwogfQogCi1TZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoY29u
c3QgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+JiByZWFzb25zLCBPcHRpb25hbDxGcmFtZXNQ
ZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCitPcHRpb25hbDxGcmFtZXNQZXJTZWNv
bmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4g
cmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25k
LCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCit7CisgICAgaWYgKHJlYXNvbnMuY29u
dGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIGlmICghbm9taW5hbEZyYW1lc1BlclNlY29uZCB8fCAqbm9t
aW5hbEZyYW1lc1BlclNlY29uZCA9PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpIHsKKyAgICAg
ICAgLy8gRklYTUU6IGhhbmRsZSBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKKyAgICAg
ICAgaWYgKHJlYXNvbnMuY29udGFpbnNBbnkoaGFsZlNwZWVkVGhyb3R0bGluZ1JlYXNvbnMpKQor
ICAgICAgICAgICAgcmV0dXJuIEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQ7CisK
KyAgICAgICAgcmV0dXJuIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZDsKKyAgICB9CisKKyAgICBh
dXRvIGZyYW1lc1BlclNlY29uZCA9IHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMgPyBmcmFtZXNQ
ZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKCpub21pbmFsRnJhbWVzUGVyU2Vjb25kKSA6ICpub21p
bmFsRnJhbWVzUGVyU2Vjb25kOworICAgIGlmIChyZWFzb25zLmNvbnRhaW5zQW55KGhhbGZTcGVl
ZFRocm90dGxpbmdSZWFzb25zKSkKKyAgICAgICAgZnJhbWVzUGVyU2Vjb25kIC89IEludGVydmFs
VGhyb3R0bGluZ0ZhY3RvcjsKKworICAgIHJldHVybiBmcmFtZXNQZXJTZWNvbmQ7Cit9CisKK1Nl
Y29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4g
cmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25k
LCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAgaWYgKHJlYXNvbnMuY29u
dGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKICAgICAgICAgcmV0dXJu
IEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7CiAKICAgICBpZiAoIW5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQgfHwgKm5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPT0gRnVsbFNwZWVk
RnJhbWVzUGVyU2Vjb25kKSB7CiAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgVGhyb3R0bGluZ1Jl
YXNvbjo6VmlzdWFsbHlJZGxlCi0gICAgICAgIGlmIChyZWFzb25zLmNvbnRhaW5zQW55KHsgVGhy
b3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlLCBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFj
dGVkQ3Jvc3NPcmlnaW5GcmFtZSB9KSkKKyAgICAgICAgaWYgKHJlYXNvbnMuY29udGFpbnNBbnko
aGFsZlNwZWVkVGhyb3R0bGluZ1JlYXNvbnMpKQogICAgICAgICAgICAgcmV0dXJuIEhhbGZTcGVl
ZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbDsKICAgICAgICAgcmV0dXJuIEZ1bGxTcGVlZEFu
aW1hdGlvbkludGVydmFsOwogICAgIH0KIAotICAgIGF1dG8gZnJhbWVzUGVyU2Vjb25kID0gZnJh
bWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCgqbm9taW5hbEZyYW1lc1BlclNlY29uZCk7Cisg
ICAgYXV0byBmcmFtZXNQZXJTZWNvbmQgPSBwcmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTID8gZnJh
bWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCgqbm9taW5hbEZyYW1lc1BlclNlY29uZCkgOiAq
bm9taW5hbEZyYW1lc1BlclNlY29uZDsKICAgICBhdXRvIGludGVydmFsID0gU2Vjb25kcygxLjAg
LyBmcmFtZXNQZXJTZWNvbmQpOwogCi0gICAgaWYgKHJlYXNvbnMuY29udGFpbnNBbnkoeyBUaHJv
dHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUsIFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0
ZWRDcm9zc09yaWdpbkZyYW1lLCBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUgfSkpCisg
ICAgaWYgKHJlYXNvbnMuY29udGFpbnNBbnkoaGFsZlNwZWVkVGhyb3R0bGluZ1JlYXNvbnMpKQog
ICAgICAgICBpbnRlcnZhbCAqPSBJbnRlcnZhbFRocm90dGxpbmdGYWN0b3I7CiAKICAgICByZXR1
cm4gaW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BbmltYXRpb25GcmFtZVJhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FuaW1hdGlvbkZyYW1lUmF0ZS5oCmluZGV4IGI0MWJjNGU5OWQyNzkzNTM0MjE0N2JkODg5YzRj
MDE5YmZlY2EzMmUuLmM4Mzg3OGMwMTM1Mzk5YzQyNTI4YTdhZGY1NWVkY2NkMDA1YjEyMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1l
UmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZy
YW1lUmF0ZS5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
RnJhbWVzUGVyU2Vjb25kID0gdW5zaWduZWQ7CiAKLWVudW0gY2xhc3MgVGhyb3R0bGluZ1JlYXNv
biB7CitlbnVtIGNsYXNzIFRocm90dGxpbmdSZWFzb24gOiB1aW50OF90IHsKICAgICBWaXN1YWxs
eUlkbGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAogICAgIE91dHNpZGVWaWV3cG9ydCAg
ICAgICAgICAgICAgICAgPSAxIDw8IDEsCiAgICAgTG93UG93ZXJNb2RlICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMiwKQEAgLTU1LDcgKzU1LDEyIEBAIGNvbnN0ZXhwciBjb25zdCBGcmFtZXNQ
ZXJTZWNvbmQgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kID0gNjA7CiBjb25zdGV4cHIgY29uc3Qg
RnJhbWVzUGVyU2Vjb25kIEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQgPSAzMDsK
IAogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RG
dWxsU3BlZWQoRnJhbWVzUGVyU2Vjb25kKTsKLVdFQkNPUkVfRVhQT1JUIFNlY29uZHMgcHJlZmVy
cmVkRnJhbWVJbnRlcnZhbChjb25zdCBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4mLCBPcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworCisvLyBUaGlz
IHdpbGwgcmV0dXJuIFdURjo6bnVsbG9wdCBpZiB0aHJvdHRsaW5nIHJlc3VsdHMgaW4gYSBmcmVx
dWVuY3kgPCAxZnBzLgorV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBw
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+LCBPcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wgcHJlZmVy
RnJhbWVSYXRlc05lYXI2MEZQUyk7CisKK1dFQkNPUkVfRVhQT1JUIFNlY29uZHMgcHJlZmVycmVk
RnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4sIE9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFtZVJhdGVz
TmVhcjYwRlBTKTsKKwogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZEZyb21JbnRlcnZhbChTZWNvbmRzKTsKIAogV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE9wdGlvblNl
dDxUaHJvdHRsaW5nUmVhc29uPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggODNmZjNkMzYx
MzMxNTI3NmY2MjlkYjQxZTU0MjA3YjdhNGJiODNmZS4uMGM4YWQzN2E1MzgwY2MzZTFlNmE1ZmQy
MjU4NDA4Njc4ZjBhN2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xNzIsNyArMTcyLDcg
QEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKGNvbnN0IERp
c3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUKICAgICBtX2NsaWVudHNUb0JlTm90aWZpZWQgPSAm
Y2xpZW50c1RvQmVOb3RpZmllZDsKICAgICB3aGlsZSAoIWNsaWVudHNUb0JlTm90aWZpZWQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0g
Y2xpZW50c1RvQmVOb3RpZmllZC50YWtlQW55KCk7Ci0gICAgICAgIGNsaWVudC0+ZmlyZURpc3Bs
YXlSZWZyZXNoSWZOZWVkZWQoKTsKKyAgICAgICAgY2xpZW50LT5maXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZChkaXNwbGF5VXBkYXRlKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGlz
IGZ1bmN0aW9uIHdhcyByZWVudGVyZWQuIEluIHRoYXQgY2FzZSwgc3RvcCBpdGVyYXRpbmcKICAg
ICAgICAgLy8gc2luY2UgaXQncyBub3Qgc2FmZSB0byB1c2UgdGhlIHNldCBhbnkgbW9yZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCmluZGV4IDA4M2M1MWEzYWM5N2I3Mzk3ZjE1Yzkx
NTc0YTAxMWM2NDQ5MjdjNWEuLjVkNDZmNDA5YzlhNzg4MTE4OWQwY2E2MzllMTM2MTUxYjc0MTg2
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcApAQCAtMzgsMTEgKzM4LDE5IEBA
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dCgpCiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnVu
cmVnaXN0ZXJDbGllbnQoKnRoaXMpOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoKQordm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQ6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXJTZWNvbmQg
cHJlZmVycmVkRnJhbWVSYXRlKQoreworICAgIG1fcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kID0g
cHJlZmVycmVkRnJhbWVSYXRlOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoY29uc3QgRGlzcGxheVVwZGF0ZSYgZGlzcGxh
eVVwZGF0ZSkKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAoIWRpc3BsYXlVcGRhdGUucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3kobV9wcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmQpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3NjaGVkdWxlZCA9
IGZhbHNlOwogICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50LmgKaW5kZXggOWU2OGZmY2VkODJkODI3NDhmYmIxMTI2MzNlODdkNjNmMjBhZGQ4Yy4u
MmUyYTg1NDkwZDQzOTQyODNkMDZhMDBkNDFmNTg0YzUxMjE1NzU5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBbmltYXRpb25GcmFtZVJhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0z
Myw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlzcGxheVJlZnJlc2hN
b25pdG9yOwogY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeTsKK3N0cnVjdCBEaXNw
bGF5VXBkYXRlOwogCiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgewogcHVibGlj
OgpAQCAtNDgsMTQgKzUwLDE4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0Rpc3BsYXlJRCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5SUQ7IH0KICAgICB2b2lkIHNldERpc3BsYXlJRChQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIHsgbV9kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7IH0KIAor
ICAgIHZvaWQgc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCk7Cisg
ICAgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOyB9CisKICAgICB2b2lkIHNldElzU2NoZWR1
bGVkKGJvb2wgaXNTY2hlZHVsZWQpIHsgbV9zY2hlZHVsZWQgPSBpc1NjaGVkdWxlZDsgfQogICAg
IGJvb2wgaXNTY2hlZHVsZWQoKSBjb25zdCB7IHJldHVybiBtX3NjaGVkdWxlZDsgfQogCi0gICAg
dm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZCgpOworICAgIHZvaWQgZmlyZURpc3BsYXlS
ZWZyZXNoSWZOZWVkZWQoY29uc3QgRGlzcGxheVVwZGF0ZSYpOwogCiBwcml2YXRlOgotICAgIGJv
b2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlE
PiBtX2Rpc3BsYXlJRDsKKyAgICBGcmFtZXNQZXJTZWNvbmQgbV9wcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQgeyBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQgfTsKKyAgICBib29sIG1fc2NoZWR1bGVk
IHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVVwZGF0ZS5jcHAKaW5kZXggM2RmZDIzNGRjODkwNjRlYjU0ODIzNWViY2Zk
ZDY4MDdjZmM1YmMzYS4uOTg5MjA2YjdmMjNkN2U2ZTE0MDUzZTViOGUzOWI3NGQ2YjVkNGRjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0
ZS5jcHAKQEAgLTI3LDEwICsyNywxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRpc3BsYXlVcGRhdGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wg
RGlzcGxheVVwZGF0ZTo6cmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koRnJhbWVzUGVyU2Vjb25k
IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoV1RGOjppc0lu
dGVncmFsKHN0YXRpY19jYXN0PGZsb2F0Pih1cGRhdGVzUGVyU2Vjb25kKSAvIHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCkpOworICAgIHVuc2lnbmVkIHJhdGVGYWN0b3IgPSB1cGRhdGVzUGVyU2Vj
b25kIC8gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOworICAgIHJldHVybiAhKHVwZGF0ZUluZGV4
ICUgcmF0ZUZhY3Rvcik7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERpc3BsYXlVcGRhdGUmIHVwZGF0ZSkKIHsKICAgICB0cyA8PCB1cGRhdGUudXBk
YXRlSW5kZXggPDwgIi8iIDw8IHVwZGF0ZS51cGRhdGVzUGVyU2Vjb25kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCmluZGV4IDk5YjgxNTQ1
ZTQxZDA4OWQ3YmU5OTRkOTcyNzYzMDAwYjcyZTRmZTQuLjA2YzQyY2VlYmM0NTQzZTdmNWZkM2Jh
MzQ1YWYyYmViZWVmODI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5VXBkYXRlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgc3RydWN0IERpc3BsYXlVcGRh
dGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIHsgKHVwZGF0ZUluZGV4ICsgMSkgJSB1cGRhdGVz
UGVyU2Vjb25kLCB1cGRhdGVzUGVyU2Vjb25kIH07CiAgICAgfQorICAgIAorICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koRnJhbWVzUGVyU2Vjb25kKSBj
b25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGlz
cGxheVVwZGF0ZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvRGlzcGxheUxpbmsuY3BwCmluZGV4IDMwMzE1ODEzMTAyNzI0OGJmZGJmYjU0NDJiMGZjM2Jm
MzI3YTAxNDkuLjViYjU1NjMxN2YwZDNiZTA4NzhmOGZlYmVjOWQ0ODgwODgxYjEyMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcApAQCAtNDIsOCArNDIs
NiBAQCBjb25zdGV4cHIgdW5zaWduZWQgbWF4RmlyZUNvdW50V2l0aG91dE9ic2VydmVycyB7IDIw
IH07CiBEaXNwbGF5TGluazo6RGlzcGxheUxpbmsoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKQogICAgIDogbV9kaXNwbGF5SUQoZGlzcGxheUlEKQogewotICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBDcmVhdGluZyBEaXNwbGF5TGlu
ayBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCk7Ci0KICAgICAvLyBGSVhNRTogV2UgY2FuIGdl
dCBoZXJlIHdpdGggZGlzcGxheUlEID09IDAgKHdlYmtpdC5vcmcvYi8yMTIxMjApLCBpbiB3aGlj
aCBjYXNlIENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KCkKICAgICAvLyBwcm9iYWJs
eSBkZWZhdWx0cyB0byB0aGUgbWFpbiBzY3JlZW4uCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7
CkBAIC02MCw2ICs1OCw4IEBAIERpc3BsYXlMaW5rOjpEaXNwbGF5TGluayhXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgfQogCiAgICAgbV9kaXNwbGF5Tm9taW5hbEZy
YW1lc1BlclNlY29uZCA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGcm9tRGlzcGxheUxpbmsobV9k
aXNwbGF5TGluayk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8
PCAiW1VJIF0gQ3JlYXRpbmcgRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQg
PDwgIiB3aXRoIG5vbWluYWwgZnBzICIgPDwgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CiB9CiAKIERpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmsoKQpAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIERpc3BsYXlMaW5rOjphZGRPYnNlcnZlcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERpc3BsYXlMaW5rT2JzZXJ2ZXJJRAogICAgIH0KIAogICAgIGlmICghQ1ZEaXNwbGF5TGlua0lz
UnVubmluZyhtX2Rpc3BsYXlMaW5rKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxh
eUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rp
c3BsYXlJRCA8PCAiIHN0YXJ0aW5nIENWRGlzcGxheUxpbmsiKTsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIERpc3BsYXlMaW5rIGZvciBkaXNw
bGF5ICIgPDwgbV9kaXNwbGF5SUQgPDwgIiBzdGFydGluZyBDVkRpc3BsYXlMaW5rIHdpdGggZnBz
ICIgPDwgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCk7CiAgICAgICAgIENWUmV0dXJu
IGVycm9yID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlzcGxheUxpbmspOwogICAgICAgICBpZiAo
ZXJyb3IpCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBzdGFydCB0aGUgZGlz
cGxheSBsaW5rOiAlZCIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhM2RlMTZmMjIwNjM3YmFjN2U4NzZhM2Y5Yzg3NDk1MmRhZWQ5
MjYxLi42ZmIyNTdmNTVhNTRlYzJkN2RhNDg1ZTZmYjUxNGE2NjMzZjNjNzMzIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWxsb3cgbm9uLTYwZnBzIGRpc3BsYXkgdXBkYXRlcyB0byBiZSBkcml2ZW4gYnkgRGlz
cGxheVJlZnJlc2hNb25pdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM5MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOZXcgQVBJIHRlc3RzIGZvciBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSBh
bmQKKyAgICAgICAgRGlzcGxheVVwZGF0ZTo6cmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koKSwg
YW5kIGR1cGxpY2F0ZSBleGlzdGluZyB0ZXN0cyBmb3IgdGhlICJ1c2UKKyAgICAgICAgZGlzcGxh
eSBub21pbmFsIEZQUyIgdnMgInVzZSBuZWFyLTYwIEZQUyIgc2V0dGluZ3MuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTAzLTI5ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm9tb3RlIFdLV2ViVmlldyBnZXRVc2Vy
TWVkaWEgU1BJIHRvIEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAppbmRleCAwYzI0MGRlMjM3NWNlNWU2NTIx
MDgyNWVhZjMwYjllOGMxMWQxMTBhLi5lZDhlNmMyYmMwYTlmNWI5MjAyMjBhN2VlOGI0ODg2ZWQ5
YmRjMmMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5p
bWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcApAQCAtMjUsMTEgKzI1LDE1IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheVVwZGF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitjb25zdGV4cHIgYm9vbCBwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcgPSB0cnVlOworY29uc3RleHByIGJv
b2wgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZyA9
IGZhbHNlOworCiBURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgZnJhbWVzUGVyU2Vjb25kTmVhcmVz
dEZ1bGxTcGVlZCkKIHsKICAgICBBU1NFUlRfRVEoZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxT
cGVlZCgyNDApLCBGcmFtZXNQZXJTZWNvbmQoNjApKTsKQEAgLTQ1LDgxICs0OSwyMDMgQEAgVEVT
VChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWxXaXRoVW5zcGVjaWZp
ZWROb21pbmFsRnJhbWVzUGVyU2UKIHsKICAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4g
bm9UaHJvdHRsaW5nOwogICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gdW5zcGVjaWZpZWRO
b21pbmFsRnJhbWVzUGVyU2Vjb25kOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVy
dmFsKG5vVGhyb3R0bGluZywgdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgRnVs
bFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWwpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUlu
dGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIHVuc3BlY2lmaWVkTm9t
aW5hbEZyYW1lc1BlclNlY29uZCksIEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZh
bCk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVh
c29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9LCB1bnNwZWNpZmllZE5vbWluYWxG
cmFtZXNQZXJTZWNvbmQpLCBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOwot
ICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6
T3V0c2lkZVZpZXdwb3J0IH0sIHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29uZCksIEFn
Z3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworICAgIAorICAgIGJvb2wgcHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
TWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZzsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJh
bWVJbnRlcnZhbChub1Rocm90dGxpbmcsIHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29u
ZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgRnVsbFNwZWVkQW5pbWF0aW9u
SW50ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0
bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNl
Y29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgSGFsZlNwZWVkVGhyb3R0
bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRl
cnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0s
IHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kTmVhcjYwRlBTKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKyAg
ICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok91
dHNpZGVWaWV3cG9ydCB9LCB1bnNwZWNpZmllZE5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0
aW9uSW50ZXJ2YWwpOworCisgICAgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTID0g
cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5nOworICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgdW5zcGVjaWZpZWROb21pbmFs
RnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBGdWxs
U3BlZWRBbmltYXRpb25JbnRlcnZhbCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgdW5zcGVjaWZpZWROb21p
bmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBI
YWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVm
ZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3Nz
T3JpZ2luRnJhbWUgfSwgdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9u
SW50ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0
bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1Bl
clNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgQWdncmVzc2l2ZVRo
cm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRl
LCBwcmVmZXJyZWRGcmFtZUludGVydmFsV2l0aEZ1bGxTcGVlZE5vbWluYWxGcmFtZXNQZXJTZWNv
bmQpCiB7CiAgICAgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKLSAg
ICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIEZ1bGxTcGVl
ZEZyYW1lc1BlclNlY29uZCksIEZ1bGxTcGVlZEFuaW1hdGlvbkludGVydmFsKTsKLSAgICBBU1NF
UlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2Vy
TW9kZSB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpLCBIYWxmU3BlZWRUaHJvdHRsaW5nQW5p
bWF0aW9uSW50ZXJ2YWwpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsg
VGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSwgRnVsbFNw
ZWVkRnJhbWVzUGVyU2Vjb25kKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFs
KTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpLCBBZ2dyZXNz
aXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKworICAgIGJvb2wgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kTmVhcjYwRlBTID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21p
bmFsRnJhbWVSYXRlU2V0dGluZzsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZh
bChub1Rocm90dGxpbmcsIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kTmVhcjYwRlBTKSwgRnVsbFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWwpOworICAgIEFT
U0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93
ZXJNb2RlIH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kTmVhcjYwRlBTKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKyAg
ICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok5v
bkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwg
cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0Fu
aW1hdGlvbkludGVydmFsKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7
IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJT
ZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIEFnZ3Jlc3NpdmVUaHJv
dHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworCisgICAgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
TmVhcjYwRlBTID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5nOwor
ICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgRnVsbFNw
ZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBG
dWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1l
SW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgRnVsbFNwZWVkRnJh
bWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBIYWxmU3Bl
ZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRG
cmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2lu
RnJhbWUgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmROZWFyNjBGUFMpLCBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworICAg
IEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0
c2lkZVZpZXdwb3J0IH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kTmVhcjYwRlBTKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZh
bCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZUludGVydmFs
V2l0aDE0NEZQU05vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgT3B0aW9uU2V0PFRocm90
dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKICAgICBGcmFtZXNQZXJTZWNvbmQgbm9taW5hbEZy
YW1lc1BlclNlY29uZCA9IDE0NDsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZh
bChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDEuMCAvIDcy
KSk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVh
c29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4w
IC8gNzIpKTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxp
bmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25k
cygyLjAgLyA3MikpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhy
b3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZy
YW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gNzIpKTsKLSAgICBBU1NFUlRfRVEocHJlZmVy
cmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRl
cnZhbCk7CisKKyAgICBib29sIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyA9IHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZE1hdGNoTm9taW5hbEZyYW1lUmF0ZVNldHRpbmc7CisgICAg
QVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobm9UaHJvdHRsaW5nLCBub21pbmFsRnJh
bWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRz
KDEuMCAvIDE0NCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhy
b3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gMTQ0KSk7Cisg
ICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpW
aXN1YWxseUlkbGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAxNDQpKTsKKyAgICBBU1NFUlRfRVEocHJl
ZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9z
c09yaWdpbkZyYW1lIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gMTQ0KSk7CisgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQg
fSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYw
RlBTKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7CisKKyAgICBwcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMgPSBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRU
YXJnZXQ2MEZQU1NldHRpbmc7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwo
bm9UaHJvdHRsaW5nLCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDEuMCAvIDcyKSk7CisgICAgQVNTRVJUX0VRKHByZWZl
cnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9t
aW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwg
U2Vjb25kcygyLjAgLyA3MikpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFs
KHsgVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gNzIp
KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gNzIp
KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246Ok91dHNpZGVWaWV3cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbklu
dGVydmFsKTsKIH0KIAogVEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWxXaXRoMTIwRlBTTm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKICAgICBPcHRpb25TZXQ8
VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOwogICAgIEZyYW1lc1BlclNlY29uZCBub21p
bmFsRnJhbWVzUGVyU2Vjb25kID0gMTIwOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUlu
dGVydmFsKG5vVGhyb3R0bGluZywgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMS4w
IC8gNjApKTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxp
bmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25k
cygyLjAgLyA2MCkpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhy
b3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBT
ZWNvbmRzKDIuMCAvIDYwKSk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwo
eyBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9LCBub21p
bmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA2MCkpOwotICAgIEFTU0VSVF9FUShw
cmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0
IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlv
bkludGVydmFsKTsKKworICAgIGJvb2wgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBT
ID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZzsK
KyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNl
Y29uZHMoMS4wIC8gMTIwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwo
eyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29u
ZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAxMjAp
KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAvIDEyMCkpOworICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3Rl
ZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAxMjApKTsKKyAgICBBU1NFUlRf
RVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3
cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRO
ZWFyNjBGUFMpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKworICAg
IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyA9IHByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZFRhcmdldDYwRlBTU2V0dGluZzsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRl
cnZhbChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMS4wIC8gNjApKTsKKyAgICBBU1NFUlRfRVEo
cHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9
LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBG
UFMpLCBTZWNvbmRzKDIuMCAvIDYwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUgfSwgbm9taW5hbEZyYW1lc1Bl
clNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAg
LyA2MCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGlu
Z1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1Bl
clNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAg
LyA2MCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGlu
Z1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0
aW9uSW50ZXJ2YWwpOwogfQogCiBURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJh
bWVJbnRlcnZhbFdpdGg5MEZQU05vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgT3B0aW9u
U2V0PFRocm90dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKICAgICBGcmFtZXNQZXJTZWNvbmQg
bm9taW5hbEZyYW1lc1BlclNlY29uZCA9IDkwOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFt
ZUludGVydmFsKG5vVGhyb3R0bGluZywgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMo
MS4wIC8gOTApKTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90
dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vj
b25kcygyLjAgLyA5MCkpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsg
VGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQp
LCBTZWNvbmRzKDIuMCAvIDkwKSk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2
YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9LCBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA5MCkpOwotICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdw
b3J0IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1h
dGlvbkludGVydmFsKTsKKworICAgIGJvb2wgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYw
RlBTID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGlu
ZzsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIG5v
bWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyks
IFNlY29uZHMoMS4wIC8gOTApKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZh
bCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vj
b25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAvIDkw
KSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVh
c29uOjpWaXN1YWxseUlkbGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyA5MCkpOworICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3Rl
ZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyA5MCkpOworICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdw
b3J0IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5l
YXI2MEZQUyksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworCisgICAg
cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTID0gcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kVGFyZ2V0NjBGUFNTZXR0aW5nOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVy
dmFsKG5vVGhyb3R0bGluZywgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygxLjAgLyA5MCkpOworICAgIEFTU0VSVF9FUShw
cmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0s
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQ
UyksIFNlY29uZHMoMi4wIC8gOTApKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRl
cnZhbCh7IFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJhbWVzUGVy
U2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAv
IDkwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5n
UmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9LCBub21pbmFsRnJhbWVzUGVy
U2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAv
IDkwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5n
UmVhc29uOjpPdXRzaWRlVmlld3BvcnQgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRp
b25JbnRlcnZhbCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFt
ZUludGVydmFsV2l0aDQ4RlBTTm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKICAgICBPcHRpb25T
ZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOwogICAgIEZyYW1lc1BlclNlY29uZCBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kID0gNDg7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1l
SW50ZXJ2YWwobm9UaHJvdHRsaW5nLCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygx
LjAgLyA0OCkpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0
bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNv
bmRzKDIuMCAvIDQ4KSk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBU
aHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCks
IFNlY29uZHMoMi4wIC8gNDgpKTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZh
bCh7IFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0sIG5v
bWluYWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDIuMCAvIDQ4KSk7Ci0gICAgQVNTRVJUX0VR
KHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3Bv
cnQgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0
aW9uSW50ZXJ2YWwpOworCisgICAgYm9vbCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBG
UFMgPSBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5n
OworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgbm9t
aW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwg
U2Vjb25kcygxLjAgLyA0OCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFs
KHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gNDgp
KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAvIDQ4KSk7CisgICAgQVNTRVJUX0VR
KHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVk
Q3Jvc3NPcmlnaW5GcmFtZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDIuMCAvIDQ4KSk7CisgICAgQVNTRVJUX0VR
KHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3Bv
cnQgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVh
cjYwRlBTKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7CisKKyAgICBw
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMgPSBwcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmRUYXJnZXQ2MEZQU1NldHRpbmc7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2
YWwobm9UaHJvdHRsaW5nLCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmROZWFyNjBGUFMpLCBTZWNvbmRzKDEuMCAvIDQ4KSk7CisgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwg
bm9taW5hbEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBT
KSwgU2Vjb25kcygyLjAgLyA0OCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVy
dmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlIH0sIG5vbWluYWxGcmFtZXNQZXJT
ZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8g
NDgpKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdS
ZWFzb246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0sIG5vbWluYWxGcmFtZXNQZXJT
ZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8g
NDgpKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdS
ZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlv
bkludGVydmFsKTsKIH0KIAogVEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1l
SW50ZXJ2YWxXaXRoMzBGUFNOb21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAgIE9wdGlvblNl
dDxUaHJvdHRsaW5nUmVhc29uPiBub1Rocm90dGxpbmc7CiAgICAgRnJhbWVzUGVyU2Vjb25kIG5v
bWluYWxGcmFtZXNQZXJTZWNvbmQgPSAzMDsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJ
bnRlcnZhbChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDEu
MCAvIDMwKSk7Ci0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRs
aW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29u
ZHMoMi4wIC8gMzApKTsKLSAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRo
cm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwg
U2Vjb25kcygyLjAgLyAzMCkpOwotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFs
KHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9t
aW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gMzApKTsKLSAgICBBU1NFUlRfRVEo
cHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9y
dCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRp
b25JbnRlcnZhbCk7CisKKyAgICBib29sIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQ
UyA9IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE1hdGNoTm9taW5hbEZyYW1lUmF0ZVNldHRpbmc7
CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobm9UaHJvdHRsaW5nLCBub21p
bmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBT
ZWNvbmRzKDEuMCAvIDMwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwo
eyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29u
ZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAzMCkp
OworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNv
bjo6VmlzdWFsbHlJZGxlIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gMzApKTsKKyAgICBBU1NFUlRfRVEo
cHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRD
cm9zc09yaWdpbkZyYW1lIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMi4wIC8gMzApKTsKKyAgICBBU1NFUlRfRVEo
cHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9y
dCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFy
NjBGUFMpLCBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKKworICAgIHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyA9IHByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZFRhcmdldDYwRlBTU2V0dGluZzsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZh
bChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZE5lYXI2MEZQUyksIFNlY29uZHMoMS4wIC8gMzApKTsKKyAgICBBU1NFUlRfRVEocHJl
ZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMp
LCBTZWNvbmRzKDIuMCAvIDMwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2
YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUgfSwgbm9taW5hbEZyYW1lc1BlclNl
Y29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAz
MCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1Jl
YXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNl
Y29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTmVhcjYwRlBTKSwgU2Vjb25kcygyLjAgLyAz
MCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1Jl
YXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZE5lYXI2MEZQUyksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9u
SW50ZXJ2YWwpOworfQorCitURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlKQoreworICAgIEFTU0VSVF9FUShwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmQoeyB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZE1hdGNoTm9taW5hbEZyYW1lUmF0ZVNldHRpbmcpLnZhbHVlKCksIEZ1
bGxTcGVlZEZyYW1lc1BlclNlY29uZCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCh7IH0sIDEyMCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJh
bWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDEyMCkpOworICAgIEFTU0VS
VF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vj
b25kKDkwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IH0sIDUw
LCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKS52
YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoNTApKTsKKworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgRnVsbFNw
ZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxG
cmFtZVJhdGVTZXR0aW5nKS52YWx1ZSgpLCBIYWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vj
b25kKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGlu
Z1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDEyMCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0
Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDYwKSk7
CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFz
b246Okxvd1Bvd2VyTW9kZSB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21p
bmFsRnJhbWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDQ1KSk7CisgICAg
QVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxv
d1Bvd2VyTW9kZSB9LCA1MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJh
bWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDI1KSk7CisKKyAgICBBU1NF
UlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lk
ZVZpZXdwb3J0IH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZyksIFdURjo6bnVsbG9wdCk7Cit9CisK
K1RFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2
MEZQUykKK3sKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgfSwgRnVs
bFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQ
U1NldHRpbmcpLnZhbHVlKCksIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCk7CisgICAgQVNTRVJU
X0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IH0sIDEyMCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoNjApKTsK
KyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgfSwgOTAsIHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vj
b25kKDkwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IH0sIDUw
LCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLnZhbHVlKCksIEZy
YW1lc1BlclNlY29uZCg1MCkpOworCisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBGdWxsU3BlZWRGcmFtZXNQ
ZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZykudmFs
dWUoKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1BlclNlY29uZCk7CisgICAgQVNTRVJUX0VR
KHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9k
ZSB9LCAxMjAsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZykudmFs
dWUoKSwgRnJhbWVzUGVyU2Vjb25kKDMwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCA5MCwgcHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJT
ZWNvbmQoNDUpKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhy
b3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDUwLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmRUYXJnZXQ2MEZQU1NldHRpbmcpLnZhbHVlKCksIEZyYW1lc1BlclNlY29uZCgyNSkpOworCisg
ICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246
Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZyksIFdURjo6bnVsbG9wdCk7CiB9CiAKLVRF
U1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCitURVNUKEFu
aW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kRnJvbUludGVydmFsKQog
ewogICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRGcm9tSW50ZXJ2YWwoRnVs
bFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWwpLCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpOwogICAg
IEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRGcm9tSW50ZXJ2YWwoSGFsZlNwZWVk
VGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1Bl
clNlY29uZCk7CiAgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZEZyb21JbnRl
cnZhbChTZWNvbmRzKDEuMCAvIDYwKSksIEZyYW1lc1BlclNlY29uZCg2MCkpOwogfQogCitURVNU
KEFuaW1hdGlvbkZyYW1lUmF0ZSwgZGlzcGxheVVwZGF0ZVJlbGV2YW5jeSkKK3sKKyAgICBhdXRv
IGZyYW1lMCA9IERpc3BsYXlVcGRhdGUgeyAwLCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQgfTsK
KyAgICBhdXRvIGZyYW1lMSA9IERpc3BsYXlVcGRhdGUgeyAxLCBGdWxsU3BlZWRGcmFtZXNQZXJT
ZWNvbmQgfTsKKyAgICBhdXRvIGZyYW1lMiA9IERpc3BsYXlVcGRhdGUgeyAyLCBGdWxsU3BlZWRG
cmFtZXNQZXJTZWNvbmQgfTsKKyAgICBhdXRvIGZyYW1lMyA9IERpc3BsYXlVcGRhdGUgeyAzLCBG
dWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQgfTsKKyAgICBhdXRvIGZyYW1lNCA9IERpc3BsYXlVcGRh
dGUgeyA0LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQgfTsKKworICAgIGF1dG8gcXVhcnRlclNw
ZWVkRnJhbWVSYXRlID0gSGFsZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1BlclNlY29uZCAvIDI7CisK
KyAgICBBU1NFUlRfVFJVRShmcmFtZTAucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koRnVsbFNw
ZWVkRnJhbWVzUGVyU2Vjb25kKSk7CisgICAgQVNTRVJUX1RSVUUoZnJhbWUwLnJlbGV2YW50Rm9y
VXBkYXRlRnJlcXVlbmN5KEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQpKTsKKyAg
ICBBU1NFUlRfVFJVRShmcmFtZTAucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3kocXVhcnRlclNw
ZWVkRnJhbWVSYXRlKSk7CisKKyAgICBBU1NFUlRfVFJVRShmcmFtZTEucmVsZXZhbnRGb3JVcGRh
dGVGcmVxdWVuY3koRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSk7CisgICAgQVNTRVJUX0ZBTFNF
KGZyYW1lMS5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShIYWxmU3BlZWRUaHJvdHRsaW5nRnJh
bWVzUGVyU2Vjb25kKSk7CisgICAgQVNTRVJUX0ZBTFNFKGZyYW1lMS5yZWxldmFudEZvclVwZGF0
ZUZyZXF1ZW5jeShxdWFydGVyU3BlZWRGcmFtZVJhdGUpKTsKKworICAgIEFTU0VSVF9UUlVFKGZy
YW1lMi5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQp
KTsKKyAgICBBU1NFUlRfVFJVRShmcmFtZTIucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koSGFs
ZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1BlclNlY29uZCkpOworICAgIEFTU0VSVF9GQUxTRShmcmFt
ZTIucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3kocXVhcnRlclNwZWVkRnJhbWVSYXRlKSk7CisK
KyAgICBBU1NFUlRfVFJVRShmcmFtZTMucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koRnVsbFNw
ZWVkRnJhbWVzUGVyU2Vjb25kKSk7CisgICAgQVNTRVJUX0ZBTFNFKGZyYW1lMy5yZWxldmFudEZv
clVwZGF0ZUZyZXF1ZW5jeShIYWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vjb25kKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGZyYW1lMy5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShxdWFydGVy
U3BlZWRGcmFtZVJhdGUpKTsKKworICAgIEFTU0VSVF9UUlVFKGZyYW1lNC5yZWxldmFudEZvclVw
ZGF0ZUZyZXF1ZW5jeShGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpKTsKKyAgICBBU1NFUlRfVFJV
RShmcmFtZTQucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3koSGFsZlNwZWVkVGhyb3R0bGluZ0Zy
YW1lc1BlclNlY29uZCkpOworICAgIEFTU0VSVF9UUlVFKGZyYW1lNC5yZWxldmFudEZvclVwZGF0
ZUZyZXF1ZW5jeShxdWFydGVyU3BlZWRGcmFtZVJhdGUpKTsKIH0KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="444340"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>