<?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>183549</bug_id>
          
          <creation_ts>2018-03-11 14:41:05 -0700</creation_ts>
          <short_desc>REGRESSION(r211643): Dismissing WKActionSheet should not also dismiss its presenting view controller</short_desc>
          <delta_ts>2018-07-27 10:27:05 -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>WebKit 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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>tph</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zwaugh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405586</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-11 14:41:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/34960698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405589</commentid>
    <comment_count>1</comment_count>
      <attachid>335547</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-11 15:15:05 -0700</bug_when>
    <thetext>Created attachment 335547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405590</commentid>
    <comment_count>2</comment_count>
      <attachid>335548</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-11 15:19:17 -0700</bug_when>
    <thetext>Created attachment 335548
Fix macOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405596</commentid>
    <comment_count>3</comment_count>
      <attachid>335552</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-11 15:49:31 -0700</bug_when>
    <thetext>Created attachment 335552
Fix open source iOS builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405597</commentid>
    <comment_count>4</comment_count>
      <attachid>335553</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-11 15:58:20 -0700</bug_when>
    <thetext>Created attachment 335553
Really fix open source iOS builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405757</commentid>
    <comment_count>5</comment_count>
      <attachid>335553</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-03-12 09:32:48 -0700</bug_when>
    <thetext>Comment on attachment 335553
Really fix open source iOS builds.

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

&gt; Tools/TestWebKitAPI/ClassMethodSwizzler.mm:27
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;ClassMethodSwizzler.h&quot;

#import

&gt; Tools/TestWebKitAPI/Tests/ios/ActionSheetTests.mm:26
&gt;  #include &quot;config.h&quot;

#import

&gt; Tools/TestWebKitAPI/ios/TestWKWebViewController.h:26
&gt; +#pragma once

No need for this.

&gt; Tools/TestWebKitAPI/ios/TestWKWebViewController.mm:31
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;TestWKWebViewController.h&quot;
&gt; +
&gt; +#if PLATFORM(IOS)
&gt; +
&gt; +#include &lt;wtf/BlockPtr.h&gt;

#import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405764</commentid>
    <comment_count>6</comment_count>
      <attachid>335553</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-12 09:45:18 -0700</bug_when>
    <thetext>Comment on attachment 335553
Really fix open source iOS builds.

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

Thanks for the review!

&gt;&gt; Tools/TestWebKitAPI/ClassMethodSwizzler.mm:27
&gt;&gt; +#include &quot;ClassMethodSwizzler.h&quot;
&gt; 
&gt; #import

Fixed.

&gt;&gt; Tools/TestWebKitAPI/Tests/ios/ActionSheetTests.mm:26
&gt;&gt;  #include &quot;config.h&quot;
&gt; 
&gt; #import

Fixed.

&gt;&gt; Tools/TestWebKitAPI/ios/TestWKWebViewController.h:26
&gt;&gt; +#pragma once
&gt; 
&gt; No need for this.

Removed.

&gt;&gt; Tools/TestWebKitAPI/ios/TestWKWebViewController.mm:31
&gt;&gt; +#include &lt;wtf/BlockPtr.h&gt;
&gt; 
&gt; #import

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405813</commentid>
    <comment_count>7</comment_count>
      <attachid>335614</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-03-12 11:48:52 -0700</bug_when>
    <thetext>Created attachment 335614
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405836</commentid>
    <comment_count>8</comment_count>
      <attachid>335614</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 12:25:23 -0700</bug_when>
    <thetext>Comment on attachment 335614
Patch for landing

Clearing flags on attachment: 335614

Committed r229542: &lt;https://trac.webkit.org/changeset/229542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430258</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-06-05 15:41:06 -0700</bug_when>
    <thetext>*** Bug 185257 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445734</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-27 10:27:05 -0700</bug_when>
    <thetext>*** Bug 187926 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335547</attachid>
            <date>2018-03-11 15:15:05 -0700</date>
            <delta_ts>2018-03-11 15:19:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183549-20180311151505.patch</filename>
            <type>text/plain</type>
            <size>27228</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhYzRmNTU2OTgxZTM1ZGM4
NmZkNzJlZGFiNmY2OTM5MjYyMjRhNzEuLmZhYTEwYzE0ZDRhYWY4ZWUyNWQzNWMyNDk4NmYyYTQ0
Mjk0NDg4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMTEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEx
NjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBub3QgYWxzbyBkaXNtaXNzIGl0
cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDk2
MDY5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXhlcyB0aGUgYnVnIGJ5IGRpc21pc3NpbmcgdGhlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXIg
KGkuZS4gdGhlIGFjdGlvbiBzaGVldCBvciB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nCisgICAg
ICAgIHByZXNlbnRlZCBkdXJpbmcgcm90YXRpb24pIHJhdGhlciB0aGFuIHRoZSBwcmVzZW50aW5n
IHZpZXcgY29udHJvbGxlci4KKworICAgICAgICBUZXN0OiBBY3Rpb25TaGVldFRlc3RzLkRpc21p
c3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIK
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKC1b
V0tBY3Rpb25TaGVldCBkb25lV2l0aFNoZWV0Ol0pOgorCiAyMDE4LTAzLTA4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5JbmZvU3RvcmU6OmlzU3Vw
cG9ydGVkUGx1Z2luIHNob3VsZCBjaGVjayBmb3IgZW1wdHkgbWltZSB0eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCmluZGV4IDZiNWVkOGQxODcyZDI5
Zjc3YjAyOTg0YmJlYzMxYzM2ODAyYzc4YjguLjFiMWM2YjZmYjY2ZTFhZDYyMmQxNzY0ZGY2NDBk
ODQwMjAwMTYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0Lm1tCkBAIC0xMjUsOCArMTI1LDExIEBAIC0gKEJPT0wpcHJlc2VudFNoZWV0RnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0CiAKIC0gKHZvaWQpZG9uZVdpdGhTaGVldDooQk9PTClk
aXNtaXNzCiB7Ci0gICAgaWYgKGRpc21pc3MgJiYgX2N1cnJlbnRQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpCi0gICAgICAgIFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBkaXNtaXNz
Vmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIGlmIChkaXNt
aXNzKSB7CisgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKmN1cnJlbnRQcmVzZW50ZWRWaWV3Q29u
dHJvbGxlciA9IFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3
Q29udHJvbGxlcl07CisgICAgICAgIGlmIChjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIg
PT0gc2VsZiB8fCBjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPT0gX3ByZXNlbnRlZFZp
ZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZykKKyAgICAgICAgICAgIFtjdXJyZW50UHJlc2VudGVk
Vmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b246bmlsXTsKKyAgICB9CiAKICAgICBfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9
IG5pbDsKICAgICBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJXaGlsZVJvdGF0aW5nID0gbmlsOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0ZTcw
ZDRmOGZhNTg4ZDFlMTdkZmZlOWE0NmE2ZmYxOGE2NmVlZmYuLjYwYmY2NjM5YTZjMmIyZTI3MTlm
YTcwMWNhMjcxMDFhOGI1OGU1ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxOC0wMy0xMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTE2NDMp
OiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxkIG5vdCBhbHNvIGRpc21pc3MgaXRzIHBy
ZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTYwNjk4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBU
ZXN0V2ViS2l0QVBJIHN1cHBvcnQgZm9yIHRlc3RpbmcgV0tXZWJWaWV3cyBlbWJlZGRlZCB3aXRo
aW4gcHJlc2VudGVkIHZpZXcgY29udHJvbGxlcnMsIGFuZCB1c2UgdGhpcyB0bworICAgICAgICBj
aGVjayB0aGF0IGRpc21pc3NpbmcgYW4gYWN0aW9uIHNoZWV0IGRvZXMgbm90IGFkZGl0aW9uYWxs
eSBjYXVzZSB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nIHVzZWQgdG8gcHJlc2VudCB0aGUKKyAg
ICAgICAgd2ViIHZpZXcgdG8gYWxzbyBkaXNtaXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q2xhc3NNZXRob2RTd2l6emxlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpD
bGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNsYXNzTWV0aG9kU3dpenpsZXI6On5DbGFzc01ldGhvZFN3aXp6bGVyKToKKwor
ICAgICAgICBBZGQgQ2xhc3NNZXRob2RTd2l6emxlciwgYW4gUkFJSSB3aGljaCBzd2l6emxlcyBh
biBPYmplY3RpdmUtQyBjbGFzcyBtZXRob2Qgb3ZlciBpdHMgbGlmZXRpbWUuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tOgor
CisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGxvYWRzIGEgdmlldyBjb250cm9sbGVy
IHdoaWNoIGVtYmVkcyBhIFdLV2ViVmlldywgYW5kIHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBh
bmQgdGhlbgorICAgICAgICBkaXNtaXNzaW5nIGFuIGFjdGlvbiBzaGVldCBmcm9tIHRoYXQgd2Vi
IHZpZXcgZG9lcyBub3QgY2F1c2UgdGhlIHZpZXcgY29udHJvbGxlciB0byBhbHNvIGRpc21pc3Mu
CisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JG
dWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKworICAgICAgICBNb2Nr
ICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0
aW9uRnJvbVZpZXc6XSB0byByZXR1cm4gdGhlIHdlYiB2aWV3LiBUaGlzIHdvcmtzCisgICAgICAg
IGFyb3VuZCB0aGUgZmFjdCB0aGF0IFRlc3RXZWJLaXRBUEkgaXMgbm90IGEgVUkgYXBwbGljYXRp
b24sIHNvIGNlcnRhaW4gcGllY2VzIG9mIFVJS2l0IEFQSSBhbmQgU1BJIG5lZWQgdG8gYmUKKyAg
ICAgICAgc3R1YmJlZCBvciBtb2NrZWQgdG8gc2ltdWxhdGUgYmVpbmcgYSBVSSBhcHBsaWNhdGlv
bi4gV2UgY2FuIHJlbW92ZSB0aGVzZSB3b3JrYXJvdW5kcyBvbmNlCisgICAgICAgIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBhZGRyZXNzZWQsIGFuZCBUZXN0V2ViS2l0QVBJIGJlY29t
ZXMgYSBVSSBhcHBsaWNhdGlvbiB0aGF0IGNhbiBhY3R1YWxseSBtYWludGFpbgorICAgICAgICBh
IHJvb3QgdmlldyBjb250cm9sbGVyIGFuZCBrZXkgd2luZG93LgorCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorCisgICAgICAgIEFkZCBhIG5ldyBpbml0aWFsaXplciBmb3IgVGVzdFdLV2Vi
VmlldyB0aGF0IGRvZXNuJ3QgZm9yY2UgdGhlIHZpZXcgdG8gYmUgaG9zdGVkIHdpdGhpbiBhIFVJ
V2luZG93LiBUaGlzIGlzIHVzZWQKKyAgICAgICAgYnkgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIg
dG8gY3JlYXRlIGEgVGVzdFdLV2ViVmlldyBpbiAtbG9hZFZpZXcuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9iZWdpbktleVdpbmRvd0Rl
ZmVycmFsXSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9lbmRL
ZXlXaW5kb3dEZWZlcnJhbF0pOgorCisgICAgICAgIFN0dWIgb3V0IHRoZXNlIG1ldGhvZHMgdG8g
cHJldmVudCBVSUtpdCBmcm9tIGhpdHRpbmcgYXNzZXJ0aW9ucyB3aGVuIG1ha2luZyB0aGlzIFVJ
V2luZG93IHRoZSBrZXkgd2luZG93LiBUaGlzCisgICAgICAgIGNhbiBhbHNvIGJlIHJlbW92ZWQg
b25jZSBUZXN0V2ViS2l0QVBJIGlzIGEgVUkgYXBwbGljYXRpb24uCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBsb2FkVmlld10pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOmNvbXBsZXRpb246XSk6
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIGRpc21pc3NhbEhhbmRsZXJdKToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgc2V0RGlzbWlzc2FsSGFuZGxlcjpd
KToKKworICAgICAgICBBZGQgYSBVSVZpZXdDb250cm9sbGVyIGhlbHBlciBzdWJjbGFzcyB3aG9z
ZSAtdmlldyBpcyBhIFdLV2ViVmlldy4gVGhlIG5ldyBBUEkgdGVzdCBwcmVzZW50cyB0aGlzIHZp
ZXcKKyAgICAgICAgY29udHJvbGxlci4gVGVzdHMgbWF5IGFsc28gcHJvdmlkZSBhIGRpc21pc3Nh
bEhhbmRsZXIsIHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgdmlldyBjb250cm9sbGVyIGlzIGJl
aW5nCisgICAgICAgIGRpc21pc3NlZC4gVGhlIG5ldyBBUEkgdGVzdCB1c2VzIHRoaXMgaG9vayB0
byB2ZXJpZnkgdGhhdCB0aGUgdmlldyBjb250cm9sbGVyIGNvbnRhaW5pbmcgdGhlIHdlYiB2aWV3
IGlzbid0IGFsc28KKyAgICAgICAgZGlzbWlzc2VkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgZ29l
cyBhd2F5LgorCiAyMDE4LTAzLTA4ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBVcGRhdGUgZXhwZWN0YXRpb25zIGZvciBBUEkgdGVzdHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1Mjc3Nzg3NzM3NGM0
MmRkZTUzM2MxMjJiNWRiZjc3MjNjMmZlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6emxlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNz
IENsYXNzTWV0aG9kU3dpenpsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzTWV0
aG9kU3dpenpsZXIpOworcHVibGljOgorICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3MsIFNF
TCwgSU1QKTsKKyAgICB+Q2xhc3NNZXRob2RTd2l6emxlcigpOworCisgICAgTWV0aG9kIG1fbWV0
aG9kOworICAgIElNUCBtX29yaWdpbmFsSW1wbGVtZW50YXRpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNz
TWV0aG9kU3dpenpsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenps
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVmY2JhOGY0MzNhYzJmYmUwMDg0MzYxMTcyYzgyM2E0Y2YzYmZi
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6
emxlci5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitDbGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNz
IGNscywgU0VMIG9yaWdpbmFsU2VsZWN0b3IsIElNUCBpbXBsZW1lbnRhdGlvbikKKyAgICA6IG1f
bWV0aG9kKGNsYXNzX2dldENsYXNzTWV0aG9kKG9iamNfZ2V0TWV0YUNsYXNzKE5TU3RyaW5nRnJv
bUNsYXNzKGNscykuVVRGOFN0cmluZyksIG9yaWdpbmFsU2VsZWN0b3IpKQorICAgICwgbV9vcmln
aW5hbEltcGxlbWVudGF0aW9uKG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtX21ldGhvZCwgaW1w
bGVtZW50YXRpb24pKQoreworfQorCitDbGFzc01ldGhvZFN3aXp6bGVyOjp+Q2xhc3NNZXRob2RT
d2l6emxlcigpCit7CisgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1fbWV0aG9kLCBtX29y
aWdpbmFsSW1wbGVtZW50YXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY0ZTdmNWY5YWRkMzFjZDEzN2I0NWNhMTgxM2Ew
MjU3OWU5OTQ3OWQuLmNkNWQ1ZGNjM2MwOWI0YTU1MTAxMjI0NjJmOTk5MGMwYTlkNzg1NDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNiArNzQ1LDggQEAKIAkJRjQ0RDA2NDcxRjM5
NjI3QTAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRp
dG9yU3RhdGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVk
aXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3Mu
bW0gKi87IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVt
LWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRl
bS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07CisJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3
Q29udHJvbGxlci5tbSAqLzsgfTsKKwkJRjQ1MTdCN0YyMDU1MTAxQjAwQzI2NzIxIC8qIENsYXNz
TWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5t
bSAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUu
cG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsK
IAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjYyMDJENUNE
QzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovOyB9OwogCQlGNDU3QTlENjIwMkQ2
OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sICovOyB9OwpAQCAtMTg3Nyw2ICsxODc5LDEwIEBACiAJCUY0NEQw
NjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhh
cm5lc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0aW5n
VGVzdEhhcm5lc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTEyRTEyMUY2
MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAv
KiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0V0tXZWJWaWV3
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDUxN0I2NjIwNTRD
NDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjQ1MTdCNjgyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NNZXRob2RTd2l6emxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6
emxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsYXNzTWV0aG9kU3dpenpsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBs
YXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBE
YXRhVHJhbnNmZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERhdGFUcmFuc2Zl
ci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDU3QTlCNjIwMkQ1Q0RDMDBG
N0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0
ZU1peGVkQ29udGVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzAsNiAr
MjAzNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExM0VC
QjQ0MUI4NzMzMkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAorCQkJCUY0NTE3QjY4
MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCisJCQkJRjQ1MTdC
NjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjQ0
RDA2NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICovLAogCQkJCUY0
NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi8sCiAJCQkJ
NUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCAqLywK
QEAgLTIyMjQsNiArMjIzMiw4IEBACiAJCQkJRjRENEYzQjUxRTRFMkJDQjAwQkIyNzY3IC8qIERh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5oICovLAogCQkJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2
NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8sCiAJCQkJMkU3NzY1Q0MxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8sCisJCQkJRjQ1MTdCNjUyMDU0QzQ5NTAwQzI2NzIx
IC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLmggKi8sCisJCQkJRjQ1MTdCNjYyMDU0QzQ5NTAw
QzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCUY0OTMyNDdDMUY0
NERGOEQwMDZGNDMzNiAvKiBVSUtpdFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBA
IC0zMzk3LDYgKzM0MDcsNyBAQAogCQkJCTU3MzAzQkNCMjAwODM3NjUwMDM1NTk2NSAvKiBDQk9S
UmVhZGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMwM0JDOTIwMDgyNEQzMDAzNTU5
NjUgLyogQ0JPUlZhbHVlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMwM0JDQTIwMDgy
QzAxMDAzNTU5NjUgLyogQ0JPUldyaXRlclRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ1
MTdCN0YyMDU1MTAxQjAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VFNjFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VGcm9tV2l0aGluQ3Jl
YXRlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNzFBNDExQTdFMDA0NDdDNEMg
LyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUU1MUE0MTFBRTYwMDQ0N0M0QyAvKiBDbG9zZVRoZW5UZXJtaW5hdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM2NjUsNyBAQAogCQkJCUExNEZDNTkwMUI4
QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VBRTFBNDExQTM0MDA0NDdDNEMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFNjE5M0IxRjkzMUIzQTAwQUYyNDVF
IC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAy
OEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9u
U2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0
VGVzdHMubW0KaW5kZXggMGVhNDljMGNjYzZhY2ZiMGYxNGRkY2RhYTFiMTFlZDNiMzFiYjk2Yy4u
ZmM1ZWQ5YmFkM2E5ZjY3YzcxZWJkNjdiZmNkOTliNmI4NTA0ZTg5NCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCkBAIC0yNCwxNCAr
MjQsMTkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCiAK
ICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKICNp
bXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vy
dmljZXMuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8u
aD4KQEAgLTc1LDYgKzgwLDcwIEBAIHByaXZhdGU6CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBtX3N3aXp6bGVyOwogfTsKIAorc3RhdGljIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBn
T3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb247CitzdGF0aWMg
dm9pZCBzZXRPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbihV
SVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKK3sKKyAgICBnT3ZlcnJpZGVWaWV3Q29u
dHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24gPSB2aWV3Q29udHJvbGxlcjsKK30KKwor
c3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKm92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JGdWxsc2Ny
ZWVuUHJlc2VudGF0aW9uKCkKK3sKKyAgICByZXR1cm4gZ092ZXJyaWRlVmlld0NvbnRyb2xsZXJG
b3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uLmdldCgpOworfQorCitURVNUKEFjdGlvblNoZWV0VGVz
dHMsIERpc21pc3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIpCit7CisgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVy
ZmFjZTsKKyAgICBVSUFwcGxpY2F0aW9uSW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gd2luZG93ID0gW1tUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMjQsIDc2OCldOworICAgIGF1
dG8gcm9vdFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1VJTmF2
aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOnJvb3RW
aWV3Q29udHJvbGxlci5nZXQoKV0pOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbQWN0
aW9uU2hlZXRPYnNlcnZlciBhbGxvY10gaW5pdF0pOworICAgIFt3aW5kb3cgc2V0Um9vdFZpZXdD
b250cm9sbGVyOm5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpXTsKKyAgICBbd2luZG93IG1ha2VL
ZXlBbmRWaXNpYmxlXTsKKworICAgIGF1dG8gd2ViVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAxMDI0LCA3NjgpIGNvbmZpZ3VyYXRpb246bmlsXSk7CisgICAgVGVzdFdLV2ViVmlldyAq
d2ViVmlldyA9IFt3ZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XTsKKyAgICB3ZWJWaWV3LlVJRGVs
ZWdhdGUgPSBvYnNlcnZlci5nZXQoKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFtyb290Vmlld0NvbnRy
b2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOndlYlZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1h
dGVkOk5PIGNvbXBsZXRpb246bmlsXTsKKworICAgIC8vIFNpbmNlIFRlc3RXZWJLaXRBUEkgaXMg
bm90IGEgVUkgYXBwbGljYXRpb24sICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJG
b3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6XQorICAgIC8vIHJldHVybnMgbmlsLiBU
byBlbnN1cmUgdGhhdCB3ZSBhY3R1YWxseSBwcmVzZW50IHRoZSBhY3Rpb24gc2hlZXQgZnJvbSB0
aGUgd2ViIHZpZXcgY29udHJvbGxlciwgd2UgbW9jayB0aGlzIGZvciB0aGUKKyAgICAvLyB0aW1l
IGJlaW5nIHVudGlsIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBmaXhlZC4KKyAgICBz
ZXRPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbih3ZWJWaWV3
Q29udHJvbGxlci5nZXQoKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihbVUlW
aWV3Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2Ny
ZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKSk7CisKKyAgICBbb2JzZXJ2
ZXIgc2V0UHJlc2VudGF0aW9uSGFuZGxlcjpeKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIE5T
QXJyYXkgKmFjdGlvbnMpIHsKKyAgICAgICAgLy8gS2lsbGluZyB0aGUgd2ViIGNvbnRlbnQgcHJv
Y2VzcyBzaG91bGQgZGlzbWlzcyB0aGUgYWN0aW9uIHNoZWV0LgorICAgICAgICAvLyBUaGlzIHNo
b3VsZCBub3QgdGVsbCB0aGUgd2ViIHZpZXcgY29udHJvbGxlciB0byBkaXNtaXNzIGluIHRoZSBw
cm9jZXNzLgorICAgICAgICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXTsKKyAgICAg
ICAgcmV0dXJuIGFjdGlvbnM7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0V2ViQ29udGVudFByb2Nlc3NEaWRUZXJt
aW5hdGU6XihXS1dlYlZpZXcgKikgeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0p
OworICAgIH1dOworCisgICAgX19ibG9jayBib29sIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxl
ciA9IGZhbHNlOworICAgIFt3ZWJWaWV3Q29udHJvbGxlciBzZXREaXNtaXNzYWxIYW5kbGVyOl57
CisgICAgICAgIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxlciA9IHRydWU7CisgICAgfV07CisK
KyAgICBbd2ViVmlldyBfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOkNHUG9pbnRN
YWtlKDEwMCwgMTAwKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIEVYUEVDVF9GQUxTRShkaWREaXNtaXNzV2ViVmlld0NvbnRyb2xsZXIpOworICAgIEVYUEVD
VF9OVUxMKFt3ZWJWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl0pOworICAg
IEVYUEVDVF9OT1RfTlVMTChbd2ViVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyXSk7Cit9CisKIFRFU1QoQWN0aW9uU2hlZXRUZXN0cywgSW1hZ2VNYXBEb2VzTm90RGVzdHJv
eVNlbGVjdGlvbikKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50
ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCA5
MDhlMDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhLi40NWQ5ZThhMGY3MzgzM2Jm
NGI3OWFjN2EyNTMzZGNiMWQ0N2JiODMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaApAQCAtNDYsNiArNDYsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZp
ZXcgOiBXS1dlYlZpZXcKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGFkZFRvV2luZG93OihCT09MKWFkZFRvV2luZG93OwogLSAodm9pZCljbGVhck1l
c3NhZ2VIYW5kbGVyczooTlNBcnJheSAqKW1lc3NhZ2VOYW1lczsKIC0gKHZvaWQpcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb247CiAtICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBh
Z2VOYW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IDI1ODk3ZDY3MjI0NGYyZWVkMzI5NWM1NDFlMTA3MGM0YjMyNGZlMWMuLjgxZTM3NmVlM2M0YThi
NjkzYmFjNmQ5NTU1ODBmYzNkZTY4NGJhYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTE3NSw3ICsxNzUsMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKilj
b25maWd1cmF0aW9uCiB7Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFt
ZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKQorICAgIHJldHVybiBbc2VsZiBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNd
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZp
Z3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGFkZFRvV2lu
ZG93OihCT09MKWFkZFRvV2luZG93Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1l
OmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKGFkZFRvV2luZG93KQogICAgICAgICBbc2VsZiBf
c2V0VXBUZXN0V2luZG93OmZyYW1lXTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODMxOTY1YWU1ZTU5Mjk5NWIzNWQ0NmU2OGQ1ZDEwZTdhZjg1NWU2NQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCitAaW50ZXJmYWNlIFRlc3RX
S1dlYlZpZXdDb250cm9sbGVyV2luZG93IDogVUlXaW5kb3cKKworQGVuZAorCitAaW50ZXJmYWNl
IFRlc3RXS1dlYlZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFRlc3RXS1dlYlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgZGlzcGF0Y2hfYmxvY2tfdCBkaXNtaXNzYWxIYW5kbGVyOworCitAZW5kCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlYzkyNmY5MzczMDdkMDBhYzFhNWQ2NTA3MTRjMGYzZDY4NWNmNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxl
ci5tbQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvQmxv
Y2tQdHIuaD4KKworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93
CisKKy8vIFRoZXNlIGludGVybmFsIG1ldGhvZHMgbmVlZCB0byBiZSBzdHViYmVkIG91dCB0byBw
cmV2ZW50IFVJS2l0IGZyb20gdGhyb3dpbmcgaW5jb25zaXN0ZW5jeQorLy8gZXhjZXB0aW9ucyB3
aGVuIGNyZWF0aW5nIG1ha2luZyBhIFVJV2luZG93IHRoZSBrZXkgd2luZG93LCBzaW5jZSBUZXN0
V2ViS2l0QVBJIGlzIG5vdCBhIFVJCisvLyBhcHBsaWNhdGlvbi4gVGhlc2Ugc3R1YnMgYW5kIHRo
aXMgY2xhc3MgY2FuIGJlIHJlbW92ZWQgb25jZSBodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQg
aXMKKy8vIGZpeGVkLgorLSAodm9pZClfYmVnaW5LZXlXaW5kb3dEZWZlcnJhbAoreworfQorCist
ICh2b2lkKV9lbmRLZXlXaW5kb3dEZWZlcnJhbAoreworfQorCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlciB7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworICAgIENHUmVjdCBfaW5pdGlhbFZpZXdGcmFt
ZTsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7CisgICAgQmxvY2tQdHI8
dm9pZCgpPiBfZGlzbWlzc2FsSGFuZGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2luaXRpYWxWaWV3RnJhbWUgPSBmcmFt
ZTsKKyAgICBfY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24gPzogYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClsb2FkVmlldworeworICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6X2luaXRpYWxWaWV3RnJhbWUgY29uZmlndXJhdGlvbjpf
Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpOT10pOworICAgIHNlbGYudmlldyA9IF93
ZWJWaWV3LmdldCgpOworfQorCistIChUZXN0V0tXZWJWaWV3ICopd2ViVmlldworeworICAgIFtz
ZWxmIGxvYWRWaWV3SWZOZWVkZWRdOworICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKK30KKwor
LSAodm9pZClkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDooQk9PTClmbGFnIGNvbXBsZXRp
b246KHZvaWQgKF4pKCkpY29tcGxldGlvbgoreworICAgIGlmIChfZGlzbWlzc2FsSGFuZGxlcikK
KyAgICAgICAgX2Rpc21pc3NhbEhhbmRsZXIoKTsKKyAgICBbc3VwZXIgZGlzbWlzc1ZpZXdDb250
cm9sbGVyQW5pbWF0ZWQ6ZmxhZyBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistIChkaXNw
YXRjaF9ibG9ja190KWRpc21pc3NhbEhhbmRsZXIKK3sKKyAgICByZXR1cm4gX2Rpc21pc3NhbEhh
bmRsZXIuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGlzbWlzc2FsSGFuZGxlcjooZGlzcGF0Y2hf
YmxvY2tfdClkaXNtaXNzYWxIYW5kbGVyCit7CisgICAgX2Rpc21pc3NhbEhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoZGlzbWlzc2FsSGFuZGxlcik7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335548</attachid>
            <date>2018-03-11 15:19:17 -0700</date>
            <delta_ts>2018-03-11 15:49:30 -0700</delta_ts>
            <desc>Fix macOS builds</desc>
            <filename>bug-183549-20180311151917.patch</filename>
            <type>text/plain</type>
            <size>27326</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhYzRmNTU2OTgxZTM1ZGM4
NmZkNzJlZGFiNmY2OTM5MjYyMjRhNzEuLmZhYTEwYzE0ZDRhYWY4ZWUyNWQzNWMyNDk4NmYyYTQ0
Mjk0NDg4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMTEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEx
NjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBub3QgYWxzbyBkaXNtaXNzIGl0
cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDk2
MDY5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXhlcyB0aGUgYnVnIGJ5IGRpc21pc3NpbmcgdGhlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXIg
KGkuZS4gdGhlIGFjdGlvbiBzaGVldCBvciB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nCisgICAg
ICAgIHByZXNlbnRlZCBkdXJpbmcgcm90YXRpb24pIHJhdGhlciB0aGFuIHRoZSBwcmVzZW50aW5n
IHZpZXcgY29udHJvbGxlci4KKworICAgICAgICBUZXN0OiBBY3Rpb25TaGVldFRlc3RzLkRpc21p
c3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIK
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKC1b
V0tBY3Rpb25TaGVldCBkb25lV2l0aFNoZWV0Ol0pOgorCiAyMDE4LTAzLTA4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5JbmZvU3RvcmU6OmlzU3Vw
cG9ydGVkUGx1Z2luIHNob3VsZCBjaGVjayBmb3IgZW1wdHkgbWltZSB0eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCmluZGV4IDZiNWVkOGQxODcyZDI5
Zjc3YjAyOTg0YmJlYzMxYzM2ODAyYzc4YjguLjFiMWM2YjZmYjY2ZTFhZDYyMmQxNzY0ZGY2NDBk
ODQwMjAwMTYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0Lm1tCkBAIC0xMjUsOCArMTI1LDExIEBAIC0gKEJPT0wpcHJlc2VudFNoZWV0RnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0CiAKIC0gKHZvaWQpZG9uZVdpdGhTaGVldDooQk9PTClk
aXNtaXNzCiB7Ci0gICAgaWYgKGRpc21pc3MgJiYgX2N1cnJlbnRQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpCi0gICAgICAgIFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBkaXNtaXNz
Vmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIGlmIChkaXNt
aXNzKSB7CisgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKmN1cnJlbnRQcmVzZW50ZWRWaWV3Q29u
dHJvbGxlciA9IFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3
Q29udHJvbGxlcl07CisgICAgICAgIGlmIChjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIg
PT0gc2VsZiB8fCBjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPT0gX3ByZXNlbnRlZFZp
ZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZykKKyAgICAgICAgICAgIFtjdXJyZW50UHJlc2VudGVk
Vmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b246bmlsXTsKKyAgICB9CiAKICAgICBfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9
IG5pbDsKICAgICBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJXaGlsZVJvdGF0aW5nID0gbmlsOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0ZTcw
ZDRmOGZhNTg4ZDFlMTdkZmZlOWE0NmE2ZmYxOGE2NmVlZmYuLjYwYmY2NjM5YTZjMmIyZTI3MTlm
YTcwMWNhMjcxMDFhOGI1OGU1ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxOC0wMy0xMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTE2NDMp
OiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxkIG5vdCBhbHNvIGRpc21pc3MgaXRzIHBy
ZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTYwNjk4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBU
ZXN0V2ViS2l0QVBJIHN1cHBvcnQgZm9yIHRlc3RpbmcgV0tXZWJWaWV3cyBlbWJlZGRlZCB3aXRo
aW4gcHJlc2VudGVkIHZpZXcgY29udHJvbGxlcnMsIGFuZCB1c2UgdGhpcyB0bworICAgICAgICBj
aGVjayB0aGF0IGRpc21pc3NpbmcgYW4gYWN0aW9uIHNoZWV0IGRvZXMgbm90IGFkZGl0aW9uYWxs
eSBjYXVzZSB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nIHVzZWQgdG8gcHJlc2VudCB0aGUKKyAg
ICAgICAgd2ViIHZpZXcgdG8gYWxzbyBkaXNtaXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q2xhc3NNZXRob2RTd2l6emxlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpD
bGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNsYXNzTWV0aG9kU3dpenpsZXI6On5DbGFzc01ldGhvZFN3aXp6bGVyKToKKwor
ICAgICAgICBBZGQgQ2xhc3NNZXRob2RTd2l6emxlciwgYW4gUkFJSSB3aGljaCBzd2l6emxlcyBh
biBPYmplY3RpdmUtQyBjbGFzcyBtZXRob2Qgb3ZlciBpdHMgbGlmZXRpbWUuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tOgor
CisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGxvYWRzIGEgdmlldyBjb250cm9sbGVy
IHdoaWNoIGVtYmVkcyBhIFdLV2ViVmlldywgYW5kIHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBh
bmQgdGhlbgorICAgICAgICBkaXNtaXNzaW5nIGFuIGFjdGlvbiBzaGVldCBmcm9tIHRoYXQgd2Vi
IHZpZXcgZG9lcyBub3QgY2F1c2UgdGhlIHZpZXcgY29udHJvbGxlciB0byBhbHNvIGRpc21pc3Mu
CisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JG
dWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKworICAgICAgICBNb2Nr
ICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0
aW9uRnJvbVZpZXc6XSB0byByZXR1cm4gdGhlIHdlYiB2aWV3LiBUaGlzIHdvcmtzCisgICAgICAg
IGFyb3VuZCB0aGUgZmFjdCB0aGF0IFRlc3RXZWJLaXRBUEkgaXMgbm90IGEgVUkgYXBwbGljYXRp
b24sIHNvIGNlcnRhaW4gcGllY2VzIG9mIFVJS2l0IEFQSSBhbmQgU1BJIG5lZWQgdG8gYmUKKyAg
ICAgICAgc3R1YmJlZCBvciBtb2NrZWQgdG8gc2ltdWxhdGUgYmVpbmcgYSBVSSBhcHBsaWNhdGlv
bi4gV2UgY2FuIHJlbW92ZSB0aGVzZSB3b3JrYXJvdW5kcyBvbmNlCisgICAgICAgIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBhZGRyZXNzZWQsIGFuZCBUZXN0V2ViS2l0QVBJIGJlY29t
ZXMgYSBVSSBhcHBsaWNhdGlvbiB0aGF0IGNhbiBhY3R1YWxseSBtYWludGFpbgorICAgICAgICBh
IHJvb3QgdmlldyBjb250cm9sbGVyIGFuZCBrZXkgd2luZG93LgorCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorCisgICAgICAgIEFkZCBhIG5ldyBpbml0aWFsaXplciBmb3IgVGVzdFdLV2Vi
VmlldyB0aGF0IGRvZXNuJ3QgZm9yY2UgdGhlIHZpZXcgdG8gYmUgaG9zdGVkIHdpdGhpbiBhIFVJ
V2luZG93LiBUaGlzIGlzIHVzZWQKKyAgICAgICAgYnkgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIg
dG8gY3JlYXRlIGEgVGVzdFdLV2ViVmlldyBpbiAtbG9hZFZpZXcuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9iZWdpbktleVdpbmRvd0Rl
ZmVycmFsXSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9lbmRL
ZXlXaW5kb3dEZWZlcnJhbF0pOgorCisgICAgICAgIFN0dWIgb3V0IHRoZXNlIG1ldGhvZHMgdG8g
cHJldmVudCBVSUtpdCBmcm9tIGhpdHRpbmcgYXNzZXJ0aW9ucyB3aGVuIG1ha2luZyB0aGlzIFVJ
V2luZG93IHRoZSBrZXkgd2luZG93LiBUaGlzCisgICAgICAgIGNhbiBhbHNvIGJlIHJlbW92ZWQg
b25jZSBUZXN0V2ViS2l0QVBJIGlzIGEgVUkgYXBwbGljYXRpb24uCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBsb2FkVmlld10pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOmNvbXBsZXRpb246XSk6
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIGRpc21pc3NhbEhhbmRsZXJdKToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgc2V0RGlzbWlzc2FsSGFuZGxlcjpd
KToKKworICAgICAgICBBZGQgYSBVSVZpZXdDb250cm9sbGVyIGhlbHBlciBzdWJjbGFzcyB3aG9z
ZSAtdmlldyBpcyBhIFdLV2ViVmlldy4gVGhlIG5ldyBBUEkgdGVzdCBwcmVzZW50cyB0aGlzIHZp
ZXcKKyAgICAgICAgY29udHJvbGxlci4gVGVzdHMgbWF5IGFsc28gcHJvdmlkZSBhIGRpc21pc3Nh
bEhhbmRsZXIsIHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgdmlldyBjb250cm9sbGVyIGlzIGJl
aW5nCisgICAgICAgIGRpc21pc3NlZC4gVGhlIG5ldyBBUEkgdGVzdCB1c2VzIHRoaXMgaG9vayB0
byB2ZXJpZnkgdGhhdCB0aGUgdmlldyBjb250cm9sbGVyIGNvbnRhaW5pbmcgdGhlIHdlYiB2aWV3
IGlzbid0IGFsc28KKyAgICAgICAgZGlzbWlzc2VkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgZ29l
cyBhd2F5LgorCiAyMDE4LTAzLTA4ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBVcGRhdGUgZXhwZWN0YXRpb25zIGZvciBBUEkgdGVzdHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1Mjc3Nzg3NzM3NGM0
MmRkZTUzM2MxMjJiNWRiZjc3MjNjMmZlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6emxlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNz
IENsYXNzTWV0aG9kU3dpenpsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzTWV0
aG9kU3dpenpsZXIpOworcHVibGljOgorICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3MsIFNF
TCwgSU1QKTsKKyAgICB+Q2xhc3NNZXRob2RTd2l6emxlcigpOworCisgICAgTWV0aG9kIG1fbWV0
aG9kOworICAgIElNUCBtX29yaWdpbmFsSW1wbGVtZW50YXRpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNz
TWV0aG9kU3dpenpsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenps
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVmY2JhOGY0MzNhYzJmYmUwMDg0MzYxMTcyYzgyM2E0Y2YzYmZi
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NNZXRob2RTd2l6
emxlci5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitDbGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNz
IGNscywgU0VMIG9yaWdpbmFsU2VsZWN0b3IsIElNUCBpbXBsZW1lbnRhdGlvbikKKyAgICA6IG1f
bWV0aG9kKGNsYXNzX2dldENsYXNzTWV0aG9kKG9iamNfZ2V0TWV0YUNsYXNzKE5TU3RyaW5nRnJv
bUNsYXNzKGNscykuVVRGOFN0cmluZyksIG9yaWdpbmFsU2VsZWN0b3IpKQorICAgICwgbV9vcmln
aW5hbEltcGxlbWVudGF0aW9uKG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtX21ldGhvZCwgaW1w
bGVtZW50YXRpb24pKQoreworfQorCitDbGFzc01ldGhvZFN3aXp6bGVyOjp+Q2xhc3NNZXRob2RT
d2l6emxlcigpCit7CisgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1fbWV0aG9kLCBtX29y
aWdpbmFsSW1wbGVtZW50YXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY0ZTdmNWY5YWRkMzFjZDEzN2I0NWNhMTgxM2Ew
MjU3OWU5OTQ3OWQuLmNkNWQ1ZGNjM2MwOWI0YTU1MTAxMjI0NjJmOTk5MGMwYTlkNzg1NDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNiArNzQ1LDggQEAKIAkJRjQ0RDA2NDcxRjM5
NjI3QTAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRp
dG9yU3RhdGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVk
aXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3Mu
bW0gKi87IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVt
LWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRl
bS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07CisJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3
Q29udHJvbGxlci5tbSAqLzsgfTsKKwkJRjQ1MTdCN0YyMDU1MTAxQjAwQzI2NzIxIC8qIENsYXNz
TWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5t
bSAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUu
cG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsK
IAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjYyMDJENUNE
QzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovOyB9OwogCQlGNDU3QTlENjIwMkQ2
OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sICovOyB9OwpAQCAtMTg3Nyw2ICsxODc5LDEwIEBACiAJCUY0NEQw
NjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhh
cm5lc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0aW5n
VGVzdEhhcm5lc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTEyRTEyMUY2
MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAv
KiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0V0tXZWJWaWV3
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDUxN0I2NjIwNTRD
NDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjQ1MTdCNjgyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NNZXRob2RTd2l6emxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6
emxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsYXNzTWV0aG9kU3dpenpsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBs
YXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBE
YXRhVHJhbnNmZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERhdGFUcmFuc2Zl
ci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDU3QTlCNjIwMkQ1Q0RDMDBG
N0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0
ZU1peGVkQ29udGVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzAsNiAr
MjAzNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExM0VC
QjQ0MUI4NzMzMkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAorCQkJCUY0NTE3QjY4
MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCisJCQkJRjQ1MTdC
NjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjQ0
RDA2NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICovLAogCQkJCUY0
NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi8sCiAJCQkJ
NUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCAqLywK
QEAgLTIyMjQsNiArMjIzMiw4IEBACiAJCQkJRjRENEYzQjUxRTRFMkJDQjAwQkIyNzY3IC8qIERh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5oICovLAogCQkJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2
NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8sCiAJCQkJMkU3NzY1Q0MxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8sCisJCQkJRjQ1MTdCNjUyMDU0QzQ5NTAwQzI2NzIx
IC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLmggKi8sCisJCQkJRjQ1MTdCNjYyMDU0QzQ5NTAw
QzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCUY0OTMyNDdDMUY0
NERGOEQwMDZGNDMzNiAvKiBVSUtpdFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBA
IC0zMzk3LDYgKzM0MDcsNyBAQAogCQkJCTU3MzAzQkNCMjAwODM3NjUwMDM1NTk2NSAvKiBDQk9S
UmVhZGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMwM0JDOTIwMDgyNEQzMDAzNTU5
NjUgLyogQ0JPUlZhbHVlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMwM0JDQTIwMDgy
QzAxMDAzNTU5NjUgLyogQ0JPUldyaXRlclRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ1
MTdCN0YyMDU1MTAxQjAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VFNjFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VGcm9tV2l0aGluQ3Jl
YXRlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNzFBNDExQTdFMDA0NDdDNEMg
LyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUU1MUE0MTFBRTYwMDQ0N0M0QyAvKiBDbG9zZVRoZW5UZXJtaW5hdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM2NjUsNyBAQAogCQkJCUExNEZDNTkwMUI4
QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VBRTFBNDExQTM0MDA0NDdDNEMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFNjE5M0IxRjkzMUIzQTAwQUYyNDVF
IC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAy
OEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9u
U2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0
VGVzdHMubW0KaW5kZXggMGVhNDljMGNjYzZhY2ZiMGYxNGRkY2RhYTFiMTFlZDNiMzFiYjk2Yy4u
ZmM1ZWQ5YmFkM2E5ZjY3YzcxZWJkNjdiZmNkOTliNmI4NTA0ZTg5NCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCkBAIC0yNCwxNCAr
MjQsMTkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCiAK
ICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKICNp
bXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vy
dmljZXMuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8u
aD4KQEAgLTc1LDYgKzgwLDcwIEBAIHByaXZhdGU6CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBtX3N3aXp6bGVyOwogfTsKIAorc3RhdGljIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBn
T3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb247CitzdGF0aWMg
dm9pZCBzZXRPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbihV
SVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKK3sKKyAgICBnT3ZlcnJpZGVWaWV3Q29u
dHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24gPSB2aWV3Q29udHJvbGxlcjsKK30KKwor
c3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKm92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JGdWxsc2Ny
ZWVuUHJlc2VudGF0aW9uKCkKK3sKKyAgICByZXR1cm4gZ092ZXJyaWRlVmlld0NvbnRyb2xsZXJG
b3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uLmdldCgpOworfQorCitURVNUKEFjdGlvblNoZWV0VGVz
dHMsIERpc21pc3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIpCit7CisgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVy
ZmFjZTsKKyAgICBVSUFwcGxpY2F0aW9uSW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gd2luZG93ID0gW1tUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMjQsIDc2OCldOworICAgIGF1
dG8gcm9vdFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1VJTmF2
aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOnJvb3RW
aWV3Q29udHJvbGxlci5nZXQoKV0pOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbQWN0
aW9uU2hlZXRPYnNlcnZlciBhbGxvY10gaW5pdF0pOworICAgIFt3aW5kb3cgc2V0Um9vdFZpZXdD
b250cm9sbGVyOm5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpXTsKKyAgICBbd2luZG93IG1ha2VL
ZXlBbmRWaXNpYmxlXTsKKworICAgIGF1dG8gd2ViVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAxMDI0LCA3NjgpIGNvbmZpZ3VyYXRpb246bmlsXSk7CisgICAgVGVzdFdLV2ViVmlldyAq
d2ViVmlldyA9IFt3ZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XTsKKyAgICB3ZWJWaWV3LlVJRGVs
ZWdhdGUgPSBvYnNlcnZlci5nZXQoKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFtyb290Vmlld0NvbnRy
b2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOndlYlZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1h
dGVkOk5PIGNvbXBsZXRpb246bmlsXTsKKworICAgIC8vIFNpbmNlIFRlc3RXZWJLaXRBUEkgaXMg
bm90IGEgVUkgYXBwbGljYXRpb24sICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJG
b3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6XQorICAgIC8vIHJldHVybnMgbmlsLiBU
byBlbnN1cmUgdGhhdCB3ZSBhY3R1YWxseSBwcmVzZW50IHRoZSBhY3Rpb24gc2hlZXQgZnJvbSB0
aGUgd2ViIHZpZXcgY29udHJvbGxlciwgd2UgbW9jayB0aGlzIGZvciB0aGUKKyAgICAvLyB0aW1l
IGJlaW5nIHVudGlsIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBmaXhlZC4KKyAgICBz
ZXRPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbih3ZWJWaWV3
Q29udHJvbGxlci5nZXQoKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihbVUlW
aWV3Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2Ny
ZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKSk7CisKKyAgICBbb2JzZXJ2
ZXIgc2V0UHJlc2VudGF0aW9uSGFuZGxlcjpeKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIE5T
QXJyYXkgKmFjdGlvbnMpIHsKKyAgICAgICAgLy8gS2lsbGluZyB0aGUgd2ViIGNvbnRlbnQgcHJv
Y2VzcyBzaG91bGQgZGlzbWlzcyB0aGUgYWN0aW9uIHNoZWV0LgorICAgICAgICAvLyBUaGlzIHNo
b3VsZCBub3QgdGVsbCB0aGUgd2ViIHZpZXcgY29udHJvbGxlciB0byBkaXNtaXNzIGluIHRoZSBw
cm9jZXNzLgorICAgICAgICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXTsKKyAgICAg
ICAgcmV0dXJuIGFjdGlvbnM7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0V2ViQ29udGVudFByb2Nlc3NEaWRUZXJt
aW5hdGU6XihXS1dlYlZpZXcgKikgeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0p
OworICAgIH1dOworCisgICAgX19ibG9jayBib29sIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxl
ciA9IGZhbHNlOworICAgIFt3ZWJWaWV3Q29udHJvbGxlciBzZXREaXNtaXNzYWxIYW5kbGVyOl57
CisgICAgICAgIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxlciA9IHRydWU7CisgICAgfV07CisK
KyAgICBbd2ViVmlldyBfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOkNHUG9pbnRN
YWtlKDEwMCwgMTAwKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIEVYUEVDVF9GQUxTRShkaWREaXNtaXNzV2ViVmlld0NvbnRyb2xsZXIpOworICAgIEVYUEVD
VF9OVUxMKFt3ZWJWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl0pOworICAg
IEVYUEVDVF9OT1RfTlVMTChbd2ViVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyXSk7Cit9CisKIFRFU1QoQWN0aW9uU2hlZXRUZXN0cywgSW1hZ2VNYXBEb2VzTm90RGVzdHJv
eVNlbGVjdGlvbikKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50
ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCA5
MDhlMDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhLi40NWQ5ZThhMGY3MzgzM2Jm
NGI3OWFjN2EyNTMzZGNiMWQ0N2JiODMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaApAQCAtNDYsNiArNDYsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZp
ZXcgOiBXS1dlYlZpZXcKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGFkZFRvV2luZG93OihCT09MKWFkZFRvV2luZG93OwogLSAodm9pZCljbGVhck1l
c3NhZ2VIYW5kbGVyczooTlNBcnJheSAqKW1lc3NhZ2VOYW1lczsKIC0gKHZvaWQpcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb247CiAtICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBh
Z2VOYW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IDI1ODk3ZDY3MjI0NGYyZWVkMzI5NWM1NDFlMTA3MGM0YjMyNGZlMWMuLjgxZTM3NmVlM2M0YThi
NjkzYmFjNmQ5NTU1ODBmYzNkZTY4NGJhYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTE3NSw3ICsxNzUsMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKilj
b25maWd1cmF0aW9uCiB7Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFt
ZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKQorICAgIHJldHVybiBbc2VsZiBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNd
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZp
Z3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGFkZFRvV2lu
ZG93OihCT09MKWFkZFRvV2luZG93Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1l
OmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKGFkZFRvV2luZG93KQogICAgICAgICBbc2VsZiBf
c2V0VXBUZXN0V2luZG93OmZyYW1lXTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmEwNjEyMjYxOTUxOTI2NmY5Y2JjNjcwNTc4NDRkMzU5NmU2OWU2MQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0
Lmg+CisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXJXaW5kb3cgOiBVSVdpbmRv
dworCitAZW5kCisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdD
b250cm9sbGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
Y29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVGVzdFdLV2ViVmlldyAqd2ViVmlldzsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBkaXNwYXRjaF9ibG9ja190IGRpc21pc3NhbEhh
bmRsZXI7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTUyNGEzMWZiZTlkNjdjMjJlZWQ3Zjk0ZmQwNzU4OWIxYjkxOGRkOQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworI2lu
Y2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXJXaW5kb3cKKworLy8gVGhlc2UgaW50ZXJuYWwgbWV0aG9kcyBuZWVkIHRvIGJlIHN0
dWJiZWQgb3V0IHRvIHByZXZlbnQgVUlLaXQgZnJvbSB0aHJvd2luZyBpbmNvbnNpc3RlbmN5Cisv
LyBleGNlcHRpb25zIHdoZW4gY3JlYXRpbmcgbWFraW5nIGEgVUlXaW5kb3cgdGhlIGtleSB3aW5k
b3csIHNpbmNlIFRlc3RXZWJLaXRBUEkgaXMgbm90IGEgVUkKKy8vIGFwcGxpY2F0aW9uLiBUaGVz
ZSBzdHVicyBhbmQgdGhpcyBjbGFzcyBjYW4gYmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE3NTIwNCBpcworLy8gZml4ZWQuCistICh2b2lkKV9iZWdpbktleVdpbmRvd0RlZmVy
cmFsCit7Cit9CisKKy0gKHZvaWQpX2VuZEtleVdpbmRvd0RlZmVycmFsCit7Cit9CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyIHsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gX2NvbmZpZ3VyYXRpb247CisgICAgQ0dSZWN0IF9p
bml0aWFsVmlld0ZyYW1lOworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsK
KyAgICBCbG9ja1B0cjx2b2lkKCk+IF9kaXNtaXNzYWxIYW5kbGVyOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaW5pdGlhbFZp
ZXdGcmFtZSA9IGZyYW1lOworICAgIF9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbiA/OiBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWxvYWRWaWV3Cit7CisgICAgX3dlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpfaW5pdGlhbFZpZXdGcmFtZSBj
b25maWd1cmF0aW9uOl9jb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93Ok5PXSk7CisgICAg
c2VsZi52aWV3ID0gX3dlYlZpZXcuZ2V0KCk7Cit9CisKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3Cit7CisgICAgW3NlbGYgbG9hZFZpZXdJZk5lZWRlZF07CisgICAgcmV0dXJuIF93ZWJWaWV3
LmdldCgpOworfQorCistICh2b2lkKWRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOihCT09M
KWZsYWcgY29tcGxldGlvbjoodm9pZCAoXikoKSljb21wbGV0aW9uCit7CisgICAgaWYgKF9kaXNt
aXNzYWxIYW5kbGVyKQorICAgICAgICBfZGlzbWlzc2FsSGFuZGxlcigpOworICAgIFtzdXBlciBk
aXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpmbGFnIGNvbXBsZXRpb246Y29tcGxldGlvbl07
Cit9CisKKy0gKGRpc3BhdGNoX2Jsb2NrX3QpZGlzbWlzc2FsSGFuZGxlcgoreworICAgIHJldHVy
biBfZGlzbWlzc2FsSGFuZGxlci5nZXQoKTsKK30KKworLSAodm9pZClzZXREaXNtaXNzYWxIYW5k
bGVyOihkaXNwYXRjaF9ibG9ja190KWRpc21pc3NhbEhhbmRsZXIKK3sKKyAgICBfZGlzbWlzc2Fs
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihkaXNtaXNzYWxIYW5kbGVyKTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335552</attachid>
            <date>2018-03-11 15:49:31 -0700</date>
            <delta_ts>2018-03-11 15:58:19 -0700</delta_ts>
            <desc>Fix open source iOS builds.</desc>
            <filename>bug-183549-20180311154930.patch</filename>
            <type>text/plain</type>
            <size>28091</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhYzRmNTU2OTgxZTM1ZGM4
NmZkNzJlZGFiNmY2OTM5MjYyMjRhNzEuLmZhYTEwYzE0ZDRhYWY4ZWUyNWQzNWMyNDk4NmYyYTQ0
Mjk0NDg4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMTEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEx
NjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBub3QgYWxzbyBkaXNtaXNzIGl0
cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDk2
MDY5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXhlcyB0aGUgYnVnIGJ5IGRpc21pc3NpbmcgdGhlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXIg
KGkuZS4gdGhlIGFjdGlvbiBzaGVldCBvciB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nCisgICAg
ICAgIHByZXNlbnRlZCBkdXJpbmcgcm90YXRpb24pIHJhdGhlciB0aGFuIHRoZSBwcmVzZW50aW5n
IHZpZXcgY29udHJvbGxlci4KKworICAgICAgICBUZXN0OiBBY3Rpb25TaGVldFRlc3RzLkRpc21p
c3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIK
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKC1b
V0tBY3Rpb25TaGVldCBkb25lV2l0aFNoZWV0Ol0pOgorCiAyMDE4LTAzLTA4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5JbmZvU3RvcmU6OmlzU3Vw
cG9ydGVkUGx1Z2luIHNob3VsZCBjaGVjayBmb3IgZW1wdHkgbWltZSB0eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCmluZGV4IDZiNWVkOGQxODcyZDI5
Zjc3YjAyOTg0YmJlYzMxYzM2ODAyYzc4YjguLjFiMWM2YjZmYjY2ZTFhZDYyMmQxNzY0ZGY2NDBk
ODQwMjAwMTYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0Lm1tCkBAIC0xMjUsOCArMTI1LDExIEBAIC0gKEJPT0wpcHJlc2VudFNoZWV0RnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0CiAKIC0gKHZvaWQpZG9uZVdpdGhTaGVldDooQk9PTClk
aXNtaXNzCiB7Ci0gICAgaWYgKGRpc21pc3MgJiYgX2N1cnJlbnRQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpCi0gICAgICAgIFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBkaXNtaXNz
Vmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIGlmIChkaXNt
aXNzKSB7CisgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKmN1cnJlbnRQcmVzZW50ZWRWaWV3Q29u
dHJvbGxlciA9IFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3
Q29udHJvbGxlcl07CisgICAgICAgIGlmIChjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIg
PT0gc2VsZiB8fCBjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPT0gX3ByZXNlbnRlZFZp
ZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZykKKyAgICAgICAgICAgIFtjdXJyZW50UHJlc2VudGVk
Vmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b246bmlsXTsKKyAgICB9CiAKICAgICBfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9
IG5pbDsKICAgICBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJXaGlsZVJvdGF0aW5nID0gbmlsOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0ZTcw
ZDRmOGZhNTg4ZDFlMTdkZmZlOWE0NmE2ZmYxOGE2NmVlZmYuLjYxYzdkNzIxYTI2N2ZjYjUyOTVi
ZmQ4OTEzNjU3MmIwYWI5MzI2ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOC0wMy0xMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTE2NDMp
OiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxkIG5vdCBhbHNvIGRpc21pc3MgaXRzIHBy
ZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTYwNjk4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBU
ZXN0V2ViS2l0QVBJIHN1cHBvcnQgZm9yIHRlc3RpbmcgV0tXZWJWaWV3cyBlbWJlZGRlZCB3aXRo
aW4gcHJlc2VudGVkIHZpZXcgY29udHJvbGxlcnMsIGFuZCB1c2UgdGhpcyB0bworICAgICAgICBj
aGVjayB0aGF0IGRpc21pc3NpbmcgYW4gYWN0aW9uIHNoZWV0IGRvZXMgbm90IGFkZGl0aW9uYWxs
eSBjYXVzZSB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nIHVzZWQgdG8gcHJlc2VudCB0aGUKKyAg
ICAgICAgd2ViIHZpZXcgdG8gYWxzbyBkaXNtaXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q2xhc3NNZXRob2RTd2l6emxlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpD
bGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNsYXNzTWV0aG9kU3dpenpsZXI6On5DbGFzc01ldGhvZFN3aXp6bGVyKToKKwor
ICAgICAgICBBZGQgQ2xhc3NNZXRob2RTd2l6emxlciwgYW4gUkFJSSB3aGljaCBzd2l6emxlcyBh
biBPYmplY3RpdmUtQyBjbGFzcyBtZXRob2Qgb3ZlciBpdHMgbGlmZXRpbWUuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tOgor
CisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGxvYWRzIGEgdmlldyBjb250cm9sbGVy
IHdoaWNoIGVtYmVkcyBhIFdLV2ViVmlldywgYW5kIHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBh
bmQgdGhlbgorICAgICAgICBkaXNtaXNzaW5nIGFuIGFjdGlvbiBzaGVldCBmcm9tIHRoYXQgd2Vi
IHZpZXcgZG9lcyBub3QgY2F1c2UgdGhlIHZpZXcgY29udHJvbGxlciB0byBhbHNvIGRpc21pc3Mu
CisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JG
dWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKworICAgICAgICBNb2Nr
ICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0
aW9uRnJvbVZpZXc6XSB0byByZXR1cm4gdGhlIHdlYiB2aWV3LiBUaGlzIHdvcmtzCisgICAgICAg
IGFyb3VuZCB0aGUgZmFjdCB0aGF0IFRlc3RXZWJLaXRBUEkgaXMgbm90IGEgVUkgYXBwbGljYXRp
b24sIHNvIGNlcnRhaW4gcGllY2VzIG9mIFVJS2l0IEFQSSBhbmQgU1BJIG5lZWQgdG8gYmUKKyAg
ICAgICAgc3R1YmJlZCBvciBtb2NrZWQgdG8gc2ltdWxhdGUgYmVpbmcgYSBVSSBhcHBsaWNhdGlv
bi4gV2UgY2FuIHJlbW92ZSB0aGVzZSB3b3JrYXJvdW5kcyBvbmNlCisgICAgICAgIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBhZGRyZXNzZWQsIGFuZCBUZXN0V2ViS2l0QVBJIGJlY29t
ZXMgYSBVSSBhcHBsaWNhdGlvbiB0aGF0IGNhbiBhY3R1YWxseSBtYWludGFpbgorICAgICAgICBh
IHJvb3QgdmlldyBjb250cm9sbGVyIGFuZCBrZXkgd2luZG93LgorCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorCisgICAgICAgIEFkZCBhIG5ldyBpbml0aWFsaXplciBmb3IgVGVzdFdLV2Vi
VmlldyB0aGF0IGRvZXNuJ3QgZm9yY2UgdGhlIHZpZXcgdG8gYmUgaG9zdGVkIHdpdGhpbiBhIFVJ
V2luZG93LiBUaGlzIGlzIHVzZWQKKyAgICAgICAgYnkgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIg
dG8gY3JlYXRlIGEgVGVzdFdLV2ViVmlldyBpbiAtbG9hZFZpZXcuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9iZWdpbktleVdpbmRvd0Rl
ZmVycmFsXSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9lbmRL
ZXlXaW5kb3dEZWZlcnJhbF0pOgorCisgICAgICAgIFN0dWIgb3V0IHRoZXNlIG1ldGhvZHMgdG8g
cHJldmVudCBVSUtpdCBmcm9tIGhpdHRpbmcgYXNzZXJ0aW9ucyB3aGVuIG1ha2luZyB0aGlzIFVJ
V2luZG93IHRoZSBrZXkgd2luZG93LiBUaGlzCisgICAgICAgIGNhbiBhbHNvIGJlIHJlbW92ZWQg
b25jZSBUZXN0V2ViS2l0QVBJIGlzIGEgVUkgYXBwbGljYXRpb24uCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBsb2FkVmlld10pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOmNvbXBsZXRpb246XSk6
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIGRpc21pc3NhbEhhbmRsZXJdKToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgc2V0RGlzbWlzc2FsSGFuZGxlcjpd
KToKKworICAgICAgICBBZGQgYSBVSVZpZXdDb250cm9sbGVyIGhlbHBlciBzdWJjbGFzcyB3aG9z
ZSAtdmlldyBpcyBhIFdLV2ViVmlldy4gVGhlIG5ldyBBUEkgdGVzdCBwcmVzZW50cyB0aGlzIHZp
ZXcKKyAgICAgICAgY29udHJvbGxlci4gVGVzdHMgbWF5IGFsc28gcHJvdmlkZSBhIGRpc21pc3Nh
bEhhbmRsZXIsIHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgdmlldyBjb250cm9sbGVyIGlzIGJl
aW5nCisgICAgICAgIGRpc21pc3NlZC4gVGhlIG5ldyBBUEkgdGVzdCB1c2VzIHRoaXMgaG9vayB0
byB2ZXJpZnkgdGhhdCB0aGUgdmlldyBjb250cm9sbGVyIGNvbnRhaW5pbmcgdGhlIHdlYiB2aWV3
IGlzbid0IGFsc28KKyAgICAgICAgZGlzbWlzc2VkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgZ29l
cyBhd2F5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAx
OC0wMy0wOCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVXBk
YXRlIGV4cGVjdGF0aW9ucyBmb3IgQVBJIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NN
ZXRob2RTd2l6emxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTI3Nzc4NzczNzRjNDJkZGU1MzNjMTIyYjVk
YmY3NzIzYzJmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNz
TWV0aG9kU3dpenpsZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBDbGFzc01ldGhvZFN3
aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVyKTsK
K3B1YmxpYzoKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CisgICAg
fkNsYXNzTWV0aG9kU3dpenpsZXIoKTsKKworICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBJTVAg
bV9vcmlnaW5hbEltcGxlbWVudGF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZmNiYThmNDMzYWMyZmJlMDA4NDM2MTE3MmM4MjNhNGNmM2JmYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIubW0KQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bGFzc01ldGhvZFN3aXp6bGVyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworQ2xh
c3NNZXRob2RTd2l6emxlcjo6Q2xhc3NNZXRob2RTd2l6emxlcihDbGFzcyBjbHMsIFNFTCBvcmln
aW5hbFNlbGVjdG9yLCBJTVAgaW1wbGVtZW50YXRpb24pCisgICAgOiBtX21ldGhvZChjbGFzc19n
ZXRDbGFzc01ldGhvZChvYmpjX2dldE1ldGFDbGFzcyhOU1N0cmluZ0Zyb21DbGFzcyhjbHMpLlVU
RjhTdHJpbmcpLCBvcmlnaW5hbFNlbGVjdG9yKSkKKyAgICAsIG1fb3JpZ2luYWxJbXBsZW1lbnRh
dGlvbihtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obV9tZXRob2QsIGltcGxlbWVudGF0aW9uKSkK
K3sKK30KKworQ2xhc3NNZXRob2RTd2l6emxlcjo6fkNsYXNzTWV0aG9kU3dpenpsZXIoKQorewor
ICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtX21ldGhvZCwgbV9vcmlnaW5hbEltcGxlbWVu
dGF0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmNGU3ZjVmOWFkZDMxY2QxMzdiNDVjYTE4MTNhMDI1NzllOTk0NzlkLi5j
ZDVkNWRjYzNjMDliNGE1NTEwMTIyNDYyZjk5OTBjMGE5ZDc4NTQzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNzQ1LDYgKzc0NSw4IEBACiAJCUY0NEQwNjQ3MUYzOTYyN0EwMDFBMEUyOSAv
KiBFZGl0b3JTdGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMu
bW0gKi87IH07CiAJCUY0NEQwNjRBMUYzOTYyRjIwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5l
c3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRE
MDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovOyB9OwogCQlG
NDUxMkUxMzFGNjBDNDQ2MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5o
dG1sICovOyB9OworCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDUxN0I2NjIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0g
Ki87IH07CisJCUY0NTE3QjdGMjA1NTEwMUIwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1MTdC
NjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi87IH07CiAJCUY0
NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2
QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi87IH07CiAJCUY0NTdBOUI4MjAy
RDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQ
YXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKIAkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIu
aHRtbCAqLzsgfTsKQEAgLTE4NzcsNiArMTg3OSwxMCBAQAogCQlGNDREMDY0ODFGMzk2MkUzMDAx
QTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVkaXRpbmdUZXN0SGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUg
LyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDUxN0I2NTIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmll
d0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8q
IFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTE3
QjY4MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsYXNzTWV0aG9kU3dpenpsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjQ1MTdCNjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDbGFzc01ldGhvZFN3aXp6bGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFy
ZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS5wbmciOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEYXRhVHJhbnNmZXIuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3Rl
TWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVNaXhlZENvbnRlbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDMwLDYgKzIwMzYsOCBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMTNFQkI0NDFCODczMzJCMDAw
OTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbiAqLywKKwkJCQlGNDUxN0I2ODIwNTRFMEFDMDBDMjY3
MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5oICovLAorCQkJCUY0NTE3QjY5MjA1NEUwQUMwMEMy
NjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMw
MDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUz
MDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovLAogCQkJCTVDNzI2RDZEMUQzRUUw
NjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggKi8sCkBAIC0yMjI0LDYgKzIy
MzIsOCBAQAogCQkJCUY0RDRGM0I1MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IuaCAqLywKIAkJCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yLm1tICovLAogCQkJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBt
YWluSU9TLm1tICovLAorCQkJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJW
aWV3Q29udHJvbGxlci5oICovLAorCQkJCUY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQlGNDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYg
LyogVUlLaXRTUEkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwpAQCAtMzM5Nyw2ICszNDA3
LDcgQEAKIAkJCQk1NzMwM0JDQjIwMDgzNzY1MDAzNTU5NjUgLyogQ0JPUlJlYWRlclRlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTczMDNCQzkyMDA4MjREMzAwMzU1OTY1IC8qIENCT1JWYWx1
ZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTczMDNCQ0EyMDA4MkMwMTAwMzU1OTY1IC8q
IENCT1JXcml0ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NTE3QjdGMjA1NTEwMUIw
MEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRTYxQTQxMUFFNjAwNDQ3QzRDIC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjcxQTQxMUE3RTAwNDQ3QzRDIC8qIENsb3NlTmV3V2lu
ZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VFNTFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzY1NCw2ICszNjY1LDcgQEAKIAkJCQlBMTRGQzU5MDFCOEFFMzZGMDBEMTA3RUIg
LyogVGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAw
NDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUZGMDZE
NDFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTkzRTYxOTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0Q29kZWMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0RjkxQjE0NDFDNDAwMjhBN0M1IC8qIFRleHRG
aWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VE
RDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCmluZGV4
IDBlYTQ5YzBjY2M2YWNmYjBmMTRkZGNkYWExYjExZWQzYjMxYmI5NmMuLmY2MDZkMmQ1YzMyYTdj
MDE4ZGJiY2Y1MGUwN2I3MjEzM2VhOWQ1MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQpAQCAtMjQsMTIgKzI0LDE2IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdC5oIgogCiAjaWYgUExBVEZPUk0o
SU9TKQogCisjaW1wb3J0ICJDbGFzc01ldGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtNzUsNiArNzksNzAgQEAgcHJp
dmF0ZToKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIG1fc3dpenpsZXI7CiB9OwogCitzdGF0
aWMgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IGdPdmVycmlkZVZpZXdDb250cm9sbGVyRm9y
RnVsbHNjcmVlblByZXNlbnRhdGlvbjsKK3N0YXRpYyB2b2lkIHNldE92ZXJyaWRlVmlld0NvbnRy
b2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250
cm9sbGVyKQoreworICAgIGdPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNl
bnRhdGlvbiA9IHZpZXdDb250cm9sbGVyOworfQorCitzdGF0aWMgVUlWaWV3Q29udHJvbGxlciAq
b3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24oKQoreworICAg
IHJldHVybiBnT3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24u
Z2V0KCk7Cit9CisKK1RFU1QoQWN0aW9uU2hlZXRUZXN0cywgRGlzbWlzc2luZ0FjdGlvblNoZWV0
U2hvdWxkTm90RGlzbWlzc1ByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikKK3sKKyAgICBJUGFkVXNl
ckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOworICAgIFVJQXBwbGljYXRpb25J
bml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3aW5kb3cgPSBb
W1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMTAyNCwgNzY4KV07CisgICAgYXV0byByb290Vmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbmF2aWdh
dGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10g
aW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6cm9vdFZpZXdDb250cm9sbGVyLmdldCgpXSk7Cisg
ICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tBY3Rpb25TaGVldE9ic2VydmVyIGFsbG9jXSBp
bml0XSk7CisgICAgW3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6bmF2aWdhdGlvbkNvbnRy
b2xsZXIuZ2V0KCldOworICAgIFt3aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworCisgICAgYXV0
byB3ZWJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMjQsIDc2OCkgY29uZmlndXJh
dGlvbjpuaWxdKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYlZpZXdDb250cm9s
bGVyIHdlYlZpZXddOworICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IG9ic2VydmVyLmdldCgpOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5kLWlu
cHV0Il07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3Jvb3RWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xs
ZXI6d2ViVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6Tk8gY29tcGxldGlvbjpuaWxdOwor
CisgICAgLy8gU2luY2UgVGVzdFdlYktpdEFQSSBpcyBub3QgYSBVSSBhcHBsaWNhdGlvbiwgK1tV
SVZpZXdDb250cm9sbGVyIF92aWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5QcmVzZW50YXRpb25G
cm9tVmlldzpdCisgICAgLy8gcmV0dXJucyBuaWwuIFRvIGVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5
IHByZXNlbnQgdGhlIGFjdGlvbiBzaGVldCBmcm9tIHRoZSB3ZWIgdmlldyBjb250cm9sbGVyLCB3
ZSBtb2NrIHRoaXMgZm9yIHRoZQorICAgIC8vIHRpbWUgYmVpbmcgdW50aWwgaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTc1MjA0IGlzIGZpeGVkLgorICAgIHNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJG
b3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKHdlYlZpZXdDb250cm9sbGVyLmdldCgpKTsKKyAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKF92aWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5QcmVzZW50YXRpb25Gcm9tVmlldzop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3Jl
ZW5QcmVzZW50YXRpb24pKTsKKworICAgIFtvYnNlcnZlciBzZXRQcmVzZW50YXRpb25IYW5kbGVy
Ol4oX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKiwgTlNBcnJheSAqYWN0aW9ucykgeworICAgICAg
ICAvLyBLaWxsaW5nIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzIHNob3VsZCBkaXNtaXNzIHRoZSBh
Y3Rpb24gc2hlZXQuCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0ZWxsIHRoZSB3ZWIgdmll
dyBjb250cm9sbGVyIHRvIGRpc21pc3MgaW4gdGhlIHByb2Nlc3MuCisgICAgICAgIFt3ZWJWaWV3
IF9raWxsV2ViQ29udGVudFByb2Nlc3NdOworICAgICAgICByZXR1cm4gYWN0aW9uczsKKyAgICB9
XTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSBzZXRXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2ViVmlldyAqKSB7Cisg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfV07CisKKyAgICBfX2Jsb2Nr
IGJvb2wgZGlkRGlzbWlzc1dlYlZpZXdDb250cm9sbGVyID0gZmFsc2U7CisgICAgW3dlYlZpZXdD
b250cm9sbGVyIHNldERpc21pc3NhbEhhbmRsZXI6XnsKKyAgICAgICAgZGlkRGlzbWlzc1dlYlZp
ZXdDb250cm9sbGVyID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFt3ZWJWaWV3IF9zaW11bGF0ZUxv
bmdQcmVzc0FjdGlvbkF0TG9jYXRpb246Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZERpc21p
c3NXZWJWaWV3Q29udHJvbGxlcik7CisgICAgRVhQRUNUX05VTEwoW3dlYlZpZXdDb250cm9sbGVy
IHByZXNlbnRlZFZpZXdDb250cm9sbGVyXSk7CisgICAgRVhQRUNUX05PVF9OVUxMKFt3ZWJWaWV3
Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdKTsKK30KKwogVEVTVChBY3Rpb25T
aGVldFRlc3RzLCBJbWFnZU1hcERvZXNOb3REZXN0cm95U2VsZWN0aW9uKQogewogICAgIElQYWRV
c2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDkwOGUwNTJiM2ExYzI5YmQ3ZTVhYjc5MmUw
ZDhmOGM0NTYzMGRkYWEuLjQ1ZDllOGEwZjczODMzYmY0Yjc5YWM3YTI1MzNkY2IxZDQ3YmI4MzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC00Niw2ICs0
Niw3IEBACiAKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyA6IFdLV2ViVmlldwogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
KF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqKXByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gYWRkVG9XaW5kb3c6KEJP
T0wpYWRkVG9XaW5kb3c7CiAtICh2b2lkKWNsZWFyTWVzc2FnZUhhbmRsZXJzOihOU0FycmF5ICop
bWVzc2FnZU5hbWVzOwogLSAodm9pZClwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2UgYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbjsKIC0gKHZvaWQp
bG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggMjU4OTdkNjcyMjQ0ZjJlZWQzMjk1YzU0
MWUxMDcwYzRiMzI0ZmUxYy4uODFlMzc2ZWUzYzRhOGI2OTNiYWM2ZDk1NTU4MGZjM2RlNjg0YmFh
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc1
LDcgKzE3NSwxNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJh
dGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pCisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uIGFkZFRvV2luZG93OllFU107Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gYWRkVG9XaW5kb3c6KEJPT0wpYWRkVG9XaW5kb3cKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBp
ZiAoYWRkVG9XaW5kb3cpCiAgICAgICAgIFtzZWxmIF9zZXRVcFRlc3RXaW5kb3c6ZnJhbWVdOwog
CiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9U
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTA2MTIyNjE5NTE5MjY2ZjljYmM2NzA1
Nzg0NGQzNTk2ZTY5ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKworI2lmIFBMQVRG
T1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworQGludGVyZmFjZSBUZXN0V0tX
ZWJWaWV3Q29udHJvbGxlcldpbmRvdyA6IFVJV2luZG93CisKK0BlbmQKKworQGludGVyZmFjZSBU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIGRpc3BhdGNoX2Jsb2NrX3QgZGlzbWlzc2FsSGFuZGxlcjsKKworQGVuZAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tX
ZWJWaWV3Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTI0YTMxZmJlOWQ2N2MyMmVlZDdmOTRm
ZDA3NTg5YjFiOTE4ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3Q29udHJvbGxl
ci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdworCisvLyBUaGVz
ZSBpbnRlcm5hbCBtZXRob2RzIG5lZWQgdG8gYmUgc3R1YmJlZCBvdXQgdG8gcHJldmVudCBVSUtp
dCBmcm9tIHRocm93aW5nIGluY29uc2lzdGVuY3kKKy8vIGV4Y2VwdGlvbnMgd2hlbiBjcmVhdGlu
ZyBtYWtpbmcgYSBVSVdpbmRvdyB0aGUga2V5IHdpbmRvdywgc2luY2UgVGVzdFdlYktpdEFQSSBp
cyBub3QgYSBVSQorLy8gYXBwbGljYXRpb24uIFRoZXNlIHN0dWJzIGFuZCB0aGlzIGNsYXNzIGNh
biBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1MjA0IGlzCisvLyBmaXhl
ZC4KKy0gKHZvaWQpX2JlZ2luS2V5V2luZG93RGVmZXJyYWwKK3sKK30KKworLSAodm9pZClfZW5k
S2V5V2luZG93RGVmZXJyYWwKK3sKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIgeworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBfY29uZmlndXJhdGlvbjsKKyAgICBDR1JlY3QgX2luaXRpYWxWaWV3RnJhbWU7CisgICAgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIEJsb2NrUHRyPHZvaWQoKT4gX2Rp
c21pc3NhbEhhbmRsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9pbml0aWFsVmlld0ZyYW1lID0gZnJhbWU7CisgICAgX2Nv
bmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uID86IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpbG9h
ZFZpZXcKK3sKKyAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOl9pbml0aWFsVmlld0ZyYW1lIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3VyYXRp
b24uZ2V0KCkgYWRkVG9XaW5kb3c6Tk9dKTsKKyAgICBzZWxmLnZpZXcgPSBfd2ViVmlldy5nZXQo
KTsKK30KKworLSAoVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBbc2VsZiBsb2FkVmll
d0lmTmVlZGVkXTsKKyAgICByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZGlz
bWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6KEJPT0wpZmxhZyBjb21wbGV0aW9uOih2b2lkIChe
KSgpKWNvbXBsZXRpb24KK3sKKyAgICBpZiAoX2Rpc21pc3NhbEhhbmRsZXIpCisgICAgICAgIF9k
aXNtaXNzYWxIYW5kbGVyKCk7CisgICAgW3N1cGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1h
dGVkOmZsYWcgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAoZGlzcGF0Y2hfYmxvY2tf
dClkaXNtaXNzYWxIYW5kbGVyCit7CisgICAgcmV0dXJuIF9kaXNtaXNzYWxIYW5kbGVyLmdldCgp
OworfQorCistICh2b2lkKXNldERpc21pc3NhbEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpZGlz
bWlzc2FsSGFuZGxlcgoreworICAgIF9kaXNtaXNzYWxIYW5kbGVyID0gbWFrZUJsb2NrUHRyKGRp
c21pc3NhbEhhbmRsZXIpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBjNjg3MjEwMmIwMWI4YjE0YmM4N2E2ODlk
NDZmN2M2NzA4YTE0MWMxLi43MWQ3MTQxZmQ5MDg4MjY1NTg0MjA3M2E4OWZjYTdhZGU1ODY4OGFi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZiBQ
TEFURk9STShJT1MpCiAKICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0VHJhaXRzLmg+CisjaW1w
b3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KIAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKQEAgLTM4LDcgKzM5LDcgQEAKIEBjbGFzcyBVSURyYWdJbnRlcmFjdGlv
bjsKIEBjbGFzcyBVSURyYWdJdGVtOwogI2ltcG9ydCA8VUlLaXQvVUlEcmFnSW50ZXJhY3Rpb25f
UHJpdmF0ZS5oPgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2Vs
c2UKIApAQCAtOTUsNCArOTYsOCBAQCBXVEZfRVhURVJOX0NfRU5ECiBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5TU3RyaW5nICpfdGl0bGU7CiBAZW5kCiAK
K0BpbnRlcmZhY2UgVUlWaWV3Q29udHJvbGxlciAoVUlLaXRTUEkpCisrIChVSVZpZXdDb250cm9s
bGVyICopX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRhdGlvbkZyb21WaWV3OihV
SVZpZXcgKil2aWV3OworQGVuZAorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335553</attachid>
            <date>2018-03-11 15:58:20 -0700</date>
            <delta_ts>2018-03-12 09:32:48 -0700</delta_ts>
            <desc>Really fix open source iOS builds.</desc>
            <filename>bug-183549-20180311155820.patch</filename>
            <type>text/plain</type>
            <size>28163</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhYzRmNTU2OTgxZTM1ZGM4
NmZkNzJlZGFiNmY2OTM5MjYyMjRhNzEuLmZhYTEwYzE0ZDRhYWY4ZWUyNWQzNWMyNDk4NmYyYTQ0
Mjk0NDg4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMTEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEx
NjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBub3QgYWxzbyBkaXNtaXNzIGl0
cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDk2
MDY5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXhlcyB0aGUgYnVnIGJ5IGRpc21pc3NpbmcgdGhlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXIg
KGkuZS4gdGhlIGFjdGlvbiBzaGVldCBvciB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nCisgICAg
ICAgIHByZXNlbnRlZCBkdXJpbmcgcm90YXRpb24pIHJhdGhlciB0aGFuIHRoZSBwcmVzZW50aW5n
IHZpZXcgY29udHJvbGxlci4KKworICAgICAgICBUZXN0OiBBY3Rpb25TaGVldFRlc3RzLkRpc21p
c3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIK
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbToKKyAgICAgICAgKC1b
V0tBY3Rpb25TaGVldCBkb25lV2l0aFNoZWV0Ol0pOgorCiAyMDE4LTAzLTA4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5JbmZvU3RvcmU6OmlzU3Vw
cG9ydGVkUGx1Z2luIHNob3VsZCBjaGVjayBmb3IgZW1wdHkgbWltZSB0eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCmluZGV4IDZiNWVkOGQxODcyZDI5
Zjc3YjAyOTg0YmJlYzMxYzM2ODAyYzc4YjguLjFiMWM2YjZmYjY2ZTFhZDYyMmQxNzY0ZGY2NDBk
ODQwMjAwMTYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0Lm1tCkBAIC0xMjUsOCArMTI1LDExIEBAIC0gKEJPT0wpcHJlc2VudFNoZWV0RnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0CiAKIC0gKHZvaWQpZG9uZVdpdGhTaGVldDooQk9PTClk
aXNtaXNzCiB7Ci0gICAgaWYgKGRpc21pc3MgJiYgX2N1cnJlbnRQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpCi0gICAgICAgIFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBkaXNtaXNz
Vmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIGlmIChkaXNt
aXNzKSB7CisgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKmN1cnJlbnRQcmVzZW50ZWRWaWV3Q29u
dHJvbGxlciA9IFtfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3
Q29udHJvbGxlcl07CisgICAgICAgIGlmIChjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIg
PT0gc2VsZiB8fCBjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPT0gX3ByZXNlbnRlZFZp
ZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZykKKyAgICAgICAgICAgIFtjdXJyZW50UHJlc2VudGVk
Vmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b246bmlsXTsKKyAgICB9CiAKICAgICBfY3VycmVudFByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9
IG5pbDsKICAgICBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJXaGlsZVJvdGF0aW5nID0gbmlsOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0ZTcw
ZDRmOGZhNTg4ZDFlMTdkZmZlOWE0NmE2ZmYxOGE2NmVlZmYuLjYxYzdkNzIxYTI2N2ZjYjUyOTVi
ZmQ4OTEzNjU3MmIwYWI5MzI2ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOC0wMy0xMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTE2NDMp
OiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxkIG5vdCBhbHNvIGRpc21pc3MgaXRzIHBy
ZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTYwNjk4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBU
ZXN0V2ViS2l0QVBJIHN1cHBvcnQgZm9yIHRlc3RpbmcgV0tXZWJWaWV3cyBlbWJlZGRlZCB3aXRo
aW4gcHJlc2VudGVkIHZpZXcgY29udHJvbGxlcnMsIGFuZCB1c2UgdGhpcyB0bworICAgICAgICBj
aGVjayB0aGF0IGRpc21pc3NpbmcgYW4gYWN0aW9uIHNoZWV0IGRvZXMgbm90IGFkZGl0aW9uYWxs
eSBjYXVzZSB0aGUgdmlldyBjb250cm9sbGVyIGJlaW5nIHVzZWQgdG8gcHJlc2VudCB0aGUKKyAg
ICAgICAgd2ViIHZpZXcgdG8gYWxzbyBkaXNtaXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q2xhc3NNZXRob2RTd2l6emxlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpD
bGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6bGVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNsYXNzTWV0aG9kU3dpenpsZXI6On5DbGFzc01ldGhvZFN3aXp6bGVyKToKKwor
ICAgICAgICBBZGQgQ2xhc3NNZXRob2RTd2l6emxlciwgYW4gUkFJSSB3aGljaCBzd2l6emxlcyBh
biBPYmplY3RpdmUtQyBjbGFzcyBtZXRob2Qgb3ZlciBpdHMgbGlmZXRpbWUuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tOgor
CisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGxvYWRzIGEgdmlldyBjb250cm9sbGVy
IHdoaWNoIGVtYmVkcyBhIFdLV2ViVmlldywgYW5kIHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBh
bmQgdGhlbgorICAgICAgICBkaXNtaXNzaW5nIGFuIGFjdGlvbiBzaGVldCBmcm9tIHRoYXQgd2Vi
IHZpZXcgZG9lcyBub3QgY2F1c2UgdGhlIHZpZXcgY29udHJvbGxlciB0byBhbHNvIGRpc21pc3Mu
CisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JG
dWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om92ZXJyaWRl
Vmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKToKKworICAgICAgICBNb2Nr
ICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0
aW9uRnJvbVZpZXc6XSB0byByZXR1cm4gdGhlIHdlYiB2aWV3LiBUaGlzIHdvcmtzCisgICAgICAg
IGFyb3VuZCB0aGUgZmFjdCB0aGF0IFRlc3RXZWJLaXRBUEkgaXMgbm90IGEgVUkgYXBwbGljYXRp
b24sIHNvIGNlcnRhaW4gcGllY2VzIG9mIFVJS2l0IEFQSSBhbmQgU1BJIG5lZWQgdG8gYmUKKyAg
ICAgICAgc3R1YmJlZCBvciBtb2NrZWQgdG8gc2ltdWxhdGUgYmVpbmcgYSBVSSBhcHBsaWNhdGlv
bi4gV2UgY2FuIHJlbW92ZSB0aGVzZSB3b3JrYXJvdW5kcyBvbmNlCisgICAgICAgIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBhZGRyZXNzZWQsIGFuZCBUZXN0V2ViS2l0QVBJIGJlY29t
ZXMgYSBVSSBhcHBsaWNhdGlvbiB0aGF0IGNhbiBhY3R1YWxseSBtYWludGFpbgorICAgICAgICBh
IHJvb3QgdmlldyBjb250cm9sbGVyIGFuZCBrZXkgd2luZG93LgorCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorCisgICAgICAgIEFkZCBhIG5ldyBpbml0aWFsaXplciBmb3IgVGVzdFdLV2Vi
VmlldyB0aGF0IGRvZXNuJ3QgZm9yY2UgdGhlIHZpZXcgdG8gYmUgaG9zdGVkIHdpdGhpbiBhIFVJ
V2luZG93LiBUaGlzIGlzIHVzZWQKKyAgICAgICAgYnkgVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIg
dG8gY3JlYXRlIGEgVGVzdFdLV2ViVmlldyBpbiAtbG9hZFZpZXcuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9iZWdpbktleVdpbmRvd0Rl
ZmVycmFsXSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IF9lbmRL
ZXlXaW5kb3dEZWZlcnJhbF0pOgorCisgICAgICAgIFN0dWIgb3V0IHRoZXNlIG1ldGhvZHMgdG8g
cHJldmVudCBVSUtpdCBmcm9tIGhpdHRpbmcgYXNzZXJ0aW9ucyB3aGVuIG1ha2luZyB0aGlzIFVJ
V2luZG93IHRoZSBrZXkgd2luZG93LiBUaGlzCisgICAgICAgIGNhbiBhbHNvIGJlIHJlbW92ZWQg
b25jZSBUZXN0V2ViS2l0QVBJIGlzIGEgVUkgYXBwbGljYXRpb24uCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBsb2FkVmlld10pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOmNvbXBsZXRpb246XSk6
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIGRpc21pc3NhbEhhbmRsZXJdKToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgc2V0RGlzbWlzc2FsSGFuZGxlcjpd
KToKKworICAgICAgICBBZGQgYSBVSVZpZXdDb250cm9sbGVyIGhlbHBlciBzdWJjbGFzcyB3aG9z
ZSAtdmlldyBpcyBhIFdLV2ViVmlldy4gVGhlIG5ldyBBUEkgdGVzdCBwcmVzZW50cyB0aGlzIHZp
ZXcKKyAgICAgICAgY29udHJvbGxlci4gVGVzdHMgbWF5IGFsc28gcHJvdmlkZSBhIGRpc21pc3Nh
bEhhbmRsZXIsIHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgdmlldyBjb250cm9sbGVyIGlzIGJl
aW5nCisgICAgICAgIGRpc21pc3NlZC4gVGhlIG5ldyBBUEkgdGVzdCB1c2VzIHRoaXMgaG9vayB0
byB2ZXJpZnkgdGhhdCB0aGUgdmlldyBjb250cm9sbGVyIGNvbnRhaW5pbmcgdGhlIHdlYiB2aWV3
IGlzbid0IGFsc28KKyAgICAgICAgZGlzbWlzc2VkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgZ29l
cyBhd2F5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAx
OC0wMy0wOCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVXBk
YXRlIGV4cGVjdGF0aW9ucyBmb3IgQVBJIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NN
ZXRob2RTd2l6emxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTI3Nzc4NzczNzRjNDJkZGU1MzNjMTIyYjVk
YmY3NzIzYzJmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNz
TWV0aG9kU3dpenpsZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBDbGFzc01ldGhvZFN3
aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVyKTsK
K3B1YmxpYzoKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CisgICAg
fkNsYXNzTWV0aG9kU3dpenpsZXIoKTsKKworICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBJTVAg
bV9vcmlnaW5hbEltcGxlbWVudGF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZmNiYThmNDMzYWMyZmJlMDA4NDM2MTE3MmM4MjNhNGNmM2JmYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIubW0KQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bGFzc01ldGhvZFN3aXp6bGVyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworQ2xh
c3NNZXRob2RTd2l6emxlcjo6Q2xhc3NNZXRob2RTd2l6emxlcihDbGFzcyBjbHMsIFNFTCBvcmln
aW5hbFNlbGVjdG9yLCBJTVAgaW1wbGVtZW50YXRpb24pCisgICAgOiBtX21ldGhvZChjbGFzc19n
ZXRDbGFzc01ldGhvZChvYmpjX2dldE1ldGFDbGFzcyhOU1N0cmluZ0Zyb21DbGFzcyhjbHMpLlVU
RjhTdHJpbmcpLCBvcmlnaW5hbFNlbGVjdG9yKSkKKyAgICAsIG1fb3JpZ2luYWxJbXBsZW1lbnRh
dGlvbihtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obV9tZXRob2QsIGltcGxlbWVudGF0aW9uKSkK
K3sKK30KKworQ2xhc3NNZXRob2RTd2l6emxlcjo6fkNsYXNzTWV0aG9kU3dpenpsZXIoKQorewor
ICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtX21ldGhvZCwgbV9vcmlnaW5hbEltcGxlbWVu
dGF0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmNGU3ZjVmOWFkZDMxY2QxMzdiNDVjYTE4MTNhMDI1NzllOTk0NzlkLi5j
ZDVkNWRjYzNjMDliNGE1NTEwMTIyNDYyZjk5OTBjMGE5ZDc4NTQzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNzQ1LDYgKzc0NSw4IEBACiAJCUY0NEQwNjQ3MUYzOTYyN0EwMDFBMEUyOSAv
KiBFZGl0b3JTdGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMu
bW0gKi87IH07CiAJCUY0NEQwNjRBMUYzOTYyRjIwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5l
c3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRE
MDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovOyB9OwogCQlG
NDUxMkUxMzFGNjBDNDQ2MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5o
dG1sICovOyB9OworCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDUxN0I2NjIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0g
Ki87IH07CisJCUY0NTE3QjdGMjA1NTEwMUIwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1MTdC
NjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi87IH07CiAJCUY0
NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2
QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi87IH07CiAJCUY0NTdBOUI4MjAy
RDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQ
YXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKIAkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIu
aHRtbCAqLzsgfTsKQEAgLTE4NzcsNiArMTg3OSwxMCBAQAogCQlGNDREMDY0ODFGMzk2MkUzMDAx
QTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVkaXRpbmdUZXN0SGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUg
LyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDUxN0I2NTIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmll
d0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8q
IFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTE3
QjY4MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsYXNzTWV0aG9kU3dpenpsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjQ1MTdCNjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDbGFzc01ldGhvZFN3aXp6bGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFy
ZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS5wbmciOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEYXRhVHJhbnNmZXIuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3Rl
TWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVNaXhlZENvbnRlbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDMwLDYgKzIwMzYsOCBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMTNFQkI0NDFCODczMzJCMDAw
OTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbiAqLywKKwkJCQlGNDUxN0I2ODIwNTRFMEFDMDBDMjY3
MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5oICovLAorCQkJCUY0NTE3QjY5MjA1NEUwQUMwMEMy
NjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMw
MDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUz
MDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovLAogCQkJCTVDNzI2RDZEMUQzRUUw
NjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggKi8sCkBAIC0yMjI0LDYgKzIy
MzIsOCBAQAogCQkJCUY0RDRGM0I1MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IuaCAqLywKIAkJCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yLm1tICovLAogCQkJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBt
YWluSU9TLm1tICovLAorCQkJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJW
aWV3Q29udHJvbGxlci5oICovLAorCQkJCUY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQlGNDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYg
LyogVUlLaXRTUEkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwpAQCAtMzM5Nyw2ICszNDA3
LDcgQEAKIAkJCQk1NzMwM0JDQjIwMDgzNzY1MDAzNTU5NjUgLyogQ0JPUlJlYWRlclRlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTczMDNCQzkyMDA4MjREMzAwMzU1OTY1IC8qIENCT1JWYWx1
ZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTczMDNCQ0EyMDA4MkMwMTAwMzU1OTY1IC8q
IENCT1JXcml0ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NTE3QjdGMjA1NTEwMUIw
MEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRTYxQTQxMUFFNjAwNDQ3QzRDIC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjcxQTQxMUE3RTAwNDQ3QzRDIC8qIENsb3NlTmV3V2lu
ZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VFNTFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzY1NCw2ICszNjY1LDcgQEAKIAkJCQlBMTRGQzU5MDFCOEFFMzZGMDBEMTA3RUIg
LyogVGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAw
NDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUZGMDZE
NDFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTkzRTYxOTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0Q29kZWMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0RjkxQjE0NDFDNDAwMjhBN0M1IC8qIFRleHRG
aWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VE
RDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCmluZGV4
IDBlYTQ5YzBjY2M2YWNmYjBmMTRkZGNkYWExYjExZWQzYjMxYmI5NmMuLmY2MDZkMmQ1YzMyYTdj
MDE4ZGJiY2Y1MGUwN2I3MjEzM2VhOWQ1MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQpAQCAtMjQsMTIgKzI0LDE2IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdC5oIgogCiAjaWYgUExBVEZPUk0o
SU9TKQogCisjaW1wb3J0ICJDbGFzc01ldGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtNzUsNiArNzksNzAgQEAgcHJp
dmF0ZToKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIG1fc3dpenpsZXI7CiB9OwogCitzdGF0
aWMgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IGdPdmVycmlkZVZpZXdDb250cm9sbGVyRm9y
RnVsbHNjcmVlblByZXNlbnRhdGlvbjsKK3N0YXRpYyB2b2lkIHNldE92ZXJyaWRlVmlld0NvbnRy
b2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250
cm9sbGVyKQoreworICAgIGdPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNl
bnRhdGlvbiA9IHZpZXdDb250cm9sbGVyOworfQorCitzdGF0aWMgVUlWaWV3Q29udHJvbGxlciAq
b3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24oKQoreworICAg
IHJldHVybiBnT3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24u
Z2V0KCk7Cit9CisKK1RFU1QoQWN0aW9uU2hlZXRUZXN0cywgRGlzbWlzc2luZ0FjdGlvblNoZWV0
U2hvdWxkTm90RGlzbWlzc1ByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikKK3sKKyAgICBJUGFkVXNl
ckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOworICAgIFVJQXBwbGljYXRpb25J
bml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3aW5kb3cgPSBb
W1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMTAyNCwgNzY4KV07CisgICAgYXV0byByb290Vmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbmF2aWdh
dGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10g
aW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6cm9vdFZpZXdDb250cm9sbGVyLmdldCgpXSk7Cisg
ICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tBY3Rpb25TaGVldE9ic2VydmVyIGFsbG9jXSBp
bml0XSk7CisgICAgW3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6bmF2aWdhdGlvbkNvbnRy
b2xsZXIuZ2V0KCldOworICAgIFt3aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworCisgICAgYXV0
byB3ZWJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMjQsIDc2OCkgY29uZmlndXJh
dGlvbjpuaWxdKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYlZpZXdDb250cm9s
bGVyIHdlYlZpZXddOworICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IG9ic2VydmVyLmdldCgpOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5kLWlu
cHV0Il07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3Jvb3RWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xs
ZXI6d2ViVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6Tk8gY29tcGxldGlvbjpuaWxdOwor
CisgICAgLy8gU2luY2UgVGVzdFdlYktpdEFQSSBpcyBub3QgYSBVSSBhcHBsaWNhdGlvbiwgK1tV
SVZpZXdDb250cm9sbGVyIF92aWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5QcmVzZW50YXRpb25G
cm9tVmlldzpdCisgICAgLy8gcmV0dXJucyBuaWwuIFRvIGVuc3VyZSB0aGF0IHdlIGFjdHVhbGx5
IHByZXNlbnQgdGhlIGFjdGlvbiBzaGVldCBmcm9tIHRoZSB3ZWIgdmlldyBjb250cm9sbGVyLCB3
ZSBtb2NrIHRoaXMgZm9yIHRoZQorICAgIC8vIHRpbWUgYmVpbmcgdW50aWwgaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTc1MjA0IGlzIGZpeGVkLgorICAgIHNldE92ZXJyaWRlVmlld0NvbnRyb2xsZXJG
b3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKHdlYlZpZXdDb250cm9sbGVyLmdldCgpKTsKKyAgICBD
bGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyKFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKF92aWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5QcmVzZW50YXRpb25Gcm9tVmlldzop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3Jl
ZW5QcmVzZW50YXRpb24pKTsKKworICAgIFtvYnNlcnZlciBzZXRQcmVzZW50YXRpb25IYW5kbGVy
Ol4oX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKiwgTlNBcnJheSAqYWN0aW9ucykgeworICAgICAg
ICAvLyBLaWxsaW5nIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzIHNob3VsZCBkaXNtaXNzIHRoZSBh
Y3Rpb24gc2hlZXQuCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0ZWxsIHRoZSB3ZWIgdmll
dyBjb250cm9sbGVyIHRvIGRpc21pc3MgaW4gdGhlIHByb2Nlc3MuCisgICAgICAgIFt3ZWJWaWV3
IF9raWxsV2ViQ29udGVudFByb2Nlc3NdOworICAgICAgICByZXR1cm4gYWN0aW9uczsKKyAgICB9
XTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSBzZXRXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2ViVmlldyAqKSB7Cisg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfV07CisKKyAgICBfX2Jsb2Nr
IGJvb2wgZGlkRGlzbWlzc1dlYlZpZXdDb250cm9sbGVyID0gZmFsc2U7CisgICAgW3dlYlZpZXdD
b250cm9sbGVyIHNldERpc21pc3NhbEhhbmRsZXI6XnsKKyAgICAgICAgZGlkRGlzbWlzc1dlYlZp
ZXdDb250cm9sbGVyID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFt3ZWJWaWV3IF9zaW11bGF0ZUxv
bmdQcmVzc0FjdGlvbkF0TG9jYXRpb246Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0ZBTFNFKGRpZERpc21p
c3NXZWJWaWV3Q29udHJvbGxlcik7CisgICAgRVhQRUNUX05VTEwoW3dlYlZpZXdDb250cm9sbGVy
IHByZXNlbnRlZFZpZXdDb250cm9sbGVyXSk7CisgICAgRVhQRUNUX05PVF9OVUxMKFt3ZWJWaWV3
Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdKTsKK30KKwogVEVTVChBY3Rpb25T
aGVldFRlc3RzLCBJbWFnZU1hcERvZXNOb3REZXN0cm95U2VsZWN0aW9uKQogewogICAgIElQYWRV
c2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDkwOGUwNTJiM2ExYzI5YmQ3ZTVhYjc5MmUw
ZDhmOGM0NTYzMGRkYWEuLjQ1ZDllOGEwZjczODMzYmY0Yjc5YWM3YTI1MzNkY2IxZDQ3YmI4MzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC00Niw2ICs0
Niw3IEBACiAKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyA6IFdLV2ViVmlldwogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
KF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqKXByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gYWRkVG9XaW5kb3c6KEJP
T0wpYWRkVG9XaW5kb3c7CiAtICh2b2lkKWNsZWFyTWVzc2FnZUhhbmRsZXJzOihOU0FycmF5ICop
bWVzc2FnZU5hbWVzOwogLSAodm9pZClwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2UgYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbjsKIC0gKHZvaWQp
bG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggMjU4OTdkNjcyMjQ0ZjJlZWQzMjk1YzU0
MWUxMDcwYzRiMzI0ZmUxYy4uODFlMzc2ZWUzYzRhOGI2OTNiYWM2ZDk1NTU4MGZjM2RlNjg0YmFh
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTc1
LDcgKzE3NSwxNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJh
dGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pCisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uIGFkZFRvV2luZG93OllFU107Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gYWRkVG9XaW5kb3c6KEJPT0wpYWRkVG9XaW5kb3cKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBp
ZiAoYWRkVG9XaW5kb3cpCiAgICAgICAgIFtzZWxmIF9zZXRVcFRlc3RXaW5kb3c6ZnJhbWVdOwog
CiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9U
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTA2MTIyNjE5NTE5MjY2ZjljYmM2NzA1
Nzg0NGQzNTk2ZTY5ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKworI2lmIFBMQVRG
T1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworQGludGVyZmFjZSBUZXN0V0tX
ZWJWaWV3Q29udHJvbGxlcldpbmRvdyA6IFVJV2luZG93CisKK0BlbmQKKworQGludGVyZmFjZSBU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIGRpc3BhdGNoX2Jsb2NrX3QgZGlzbWlzc2FsSGFuZGxlcjsKKworQGVuZAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0V0tX
ZWJWaWV3Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTI0YTMxZmJlOWQ2N2MyMmVlZDdmOTRm
ZDA3NTg5YjFiOTE4ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V0tXZWJWaWV3Q29udHJvbGxl
ci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdworCisvLyBUaGVz
ZSBpbnRlcm5hbCBtZXRob2RzIG5lZWQgdG8gYmUgc3R1YmJlZCBvdXQgdG8gcHJldmVudCBVSUtp
dCBmcm9tIHRocm93aW5nIGluY29uc2lzdGVuY3kKKy8vIGV4Y2VwdGlvbnMgd2hlbiBjcmVhdGlu
ZyBtYWtpbmcgYSBVSVdpbmRvdyB0aGUga2V5IHdpbmRvdywgc2luY2UgVGVzdFdlYktpdEFQSSBp
cyBub3QgYSBVSQorLy8gYXBwbGljYXRpb24uIFRoZXNlIHN0dWJzIGFuZCB0aGlzIGNsYXNzIGNh
biBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1MjA0IGlzCisvLyBmaXhl
ZC4KKy0gKHZvaWQpX2JlZ2luS2V5V2luZG93RGVmZXJyYWwKK3sKK30KKworLSAodm9pZClfZW5k
S2V5V2luZG93RGVmZXJyYWwKK3sKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIgeworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBfY29uZmlndXJhdGlvbjsKKyAgICBDR1JlY3QgX2luaXRpYWxWaWV3RnJhbWU7CisgICAgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIEJsb2NrUHRyPHZvaWQoKT4gX2Rp
c21pc3NhbEhhbmRsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9pbml0aWFsVmlld0ZyYW1lID0gZnJhbWU7CisgICAgX2Nv
bmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uID86IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpbG9h
ZFZpZXcKK3sKKyAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOl9pbml0aWFsVmlld0ZyYW1lIGNvbmZpZ3VyYXRpb246X2NvbmZpZ3VyYXRp
b24uZ2V0KCkgYWRkVG9XaW5kb3c6Tk9dKTsKKyAgICBzZWxmLnZpZXcgPSBfd2ViVmlldy5nZXQo
KTsKK30KKworLSAoVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBbc2VsZiBsb2FkVmll
d0lmTmVlZGVkXTsKKyAgICByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZGlz
bWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6KEJPT0wpZmxhZyBjb21wbGV0aW9uOih2b2lkIChe
KSgpKWNvbXBsZXRpb24KK3sKKyAgICBpZiAoX2Rpc21pc3NhbEhhbmRsZXIpCisgICAgICAgIF9k
aXNtaXNzYWxIYW5kbGVyKCk7CisgICAgW3N1cGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1h
dGVkOmZsYWcgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAoZGlzcGF0Y2hfYmxvY2tf
dClkaXNtaXNzYWxIYW5kbGVyCit7CisgICAgcmV0dXJuIF9kaXNtaXNzYWxIYW5kbGVyLmdldCgp
OworfQorCistICh2b2lkKXNldERpc21pc3NhbEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpZGlz
bWlzc2FsSGFuZGxlcgoreworICAgIF9kaXNtaXNzYWxIYW5kbGVyID0gbWFrZUJsb2NrUHRyKGRp
c21pc3NhbEhhbmRsZXIpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBjNjg3MjEwMmIwMWI4YjE0YmM4N2E2ODlk
NDZmN2M2NzA4YTE0MWMxLi5jNGI3Mjc3YjYwZThjOWM1NGZkYjM3ODk3MGYyYWY3MDc2NDM1NDA0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTMyLDEzICszMiwxNCBAQAogI2lt
cG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRl
eHRJbnB1dFRyYWl0c19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dF9Qcml2
YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBjbGFzcyBV
SURyYWdJbnRlcmFjdGlvbjsKIEBjbGFzcyBVSURyYWdJdGVtOwogI2ltcG9ydCA8VUlLaXQvVUlE
cmFnSW50ZXJhY3Rpb25fUHJpdmF0ZS5oPgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKERSQUdf
U1VQUE9SVCkKIAogI2Vsc2UKIApAQCAtOTUsNCArOTYsOCBAQCBXVEZfRVhURVJOX0NfRU5ECiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5TU3RyaW5nICpf
dGl0bGU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlWaWV3Q29udHJvbGxlciAoVUlLaXRTUEkpCisr
IChVSVZpZXdDb250cm9sbGVyICopX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRh
dGlvbkZyb21WaWV3OihVSVZpZXcgKil2aWV3OworQGVuZAorCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQo=
</data>
<flag name="review"
          id="354175"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335614</attachid>
            <date>2018-03-12 11:48:52 -0700</date>
            <delta_ts>2018-03-12 12:25:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183549-20180312114851.patch</filename>
            <type>text/plain</type>
            <size>28153</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI1YzY2OTBjMTUwMjgxN2Zl
YzVjMjMzZDA3NTk2NTJmNWIyOTcxZWEuLjgzZjc1ZmRlNTM3YWZlYTNmZjI4MjU2NjQwNTlmNjhi
ZDZmY2Q2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMTEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEx
NjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBub3QgYWxzbyBkaXNtaXNzIGl0
cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDk2
MDY5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgIEZpeGVz
IHRoZSBidWcgYnkgZGlzbWlzc2luZyB0aGUgcHJlc2VudGVkIHZpZXcgY29udHJvbGxlciAoaS5l
LiB0aGUgYWN0aW9uIHNoZWV0IG9yIHRoZSB2aWV3IGNvbnRyb2xsZXIgYmVpbmcKKyAgICAgICAg
cHJlc2VudGVkIGR1cmluZyByb3RhdGlvbikgcmF0aGVyIHRoYW4gdGhlIHByZXNlbnRpbmcgdmll
dyBjb250cm9sbGVyLgorCisgICAgICAgIFRlc3Q6IEFjdGlvblNoZWV0VGVzdHMuRGlzbWlzc2lu
Z0FjdGlvblNoZWV0U2hvdWxkTm90RGlzbWlzc1ByZXNlbnRpbmdWaWV3Q29udHJvbGxlcgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tOgorICAgICAgICAoLVtXS0Fj
dGlvblNoZWV0IGRvbmVXaXRoU2hlZXQ6XSk6CisKIDIwMTgtMDMtMTIgIEphdmllciBGZXJuYW5k
ZXogIDxqZmVybmFuZGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEdyaWRMYXlvdXQg
cnVudGltZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
Lm1tCmluZGV4IDZiNWVkOGQxODcyZDI5Zjc3YjAyOTg0YmJlYzMxYzM2ODAyYzc4YjguLjFiMWM2
YjZmYjY2ZTFhZDYyMmQxNzY0ZGY2NDBkODQwMjAwMTYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCkBAIC0xMjUsOCArMTI1LDExIEBAIC0gKEJP
T0wpcHJlc2VudFNoZWV0RnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0CiAKIC0gKHZv
aWQpZG9uZVdpdGhTaGVldDooQk9PTClkaXNtaXNzCiB7Ci0gICAgaWYgKGRpc21pc3MgJiYgX2N1
cnJlbnRQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpCi0gICAgICAgIFtfY3VycmVudFByZXNlbnRp
bmdWaWV3Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxl
dGlvbjpuaWxdOworICAgIGlmIChkaXNtaXNzKSB7CisgICAgICAgIFVJVmlld0NvbnRyb2xsZXIg
KmN1cnJlbnRQcmVzZW50ZWRWaWV3Q29udHJvbGxlciA9IFtfY3VycmVudFByZXNlbnRpbmdWaWV3
Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl07CisgICAgICAgIGlmIChjdXJyZW50
UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPT0gc2VsZiB8fCBjdXJyZW50UHJlc2VudGVkVmlld0Nv
bnRyb2xsZXIgPT0gX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZykKKyAgICAg
ICAgICAgIFtjdXJyZW50UHJlc2VudGVkVmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9s
bGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICB9CiAKICAgICBfY3VycmVudFBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG5pbDsKICAgICBfcHJlc2VudGVkVmlld0NvbnRyb2xs
ZXJXaGlsZVJvdGF0aW5nID0gbmlsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGFlYTg2YmQ2NTlhYTY2ZjY0MzcyNTcxMzEyYWQwOWFmOGE2MDg0
NzYuLjdmODAyMTYxYzI3OTUxYThlN2EyMjI5NmEwOTgxMDgzNmUxM2FmNzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAor
MjAxOC0wMy0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OKHIyMTE2NDMpOiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxk
IG5vdCBhbHNvIGRpc21pc3MgaXRzIHByZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1NDkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM0OTYwNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0
ZXMuCisKKyAgICAgICAgQWRkIFRlc3RXZWJLaXRBUEkgc3VwcG9ydCBmb3IgdGVzdGluZyBXS1dl
YlZpZXdzIGVtYmVkZGVkIHdpdGhpbiBwcmVzZW50ZWQgdmlldyBjb250cm9sbGVycywgYW5kIHVz
ZSB0aGlzIHRvCisgICAgICAgIGNoZWNrIHRoYXQgZGlzbWlzc2luZyBhbiBhY3Rpb24gc2hlZXQg
ZG9lcyBub3QgYWRkaXRpb25hbGx5IGNhdXNlIHRoZSB2aWV3IGNvbnRyb2xsZXIgYmVpbmcgdXNl
ZCB0byBwcmVzZW50IHRoZQorICAgICAgICB3ZWIgdmlldyB0byBhbHNvIGRpc21pc3MuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIuaDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkNsYXNzTWV0aG9kU3dpenpsZXI6OkNsYXNzTWV0aG9kU3dpenps
ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q2xhc3NNZXRob2RTd2l6emxlcjo6fkNsYXNz
TWV0aG9kU3dpenpsZXIpOgorCisgICAgICAgIEFkZCBDbGFzc01ldGhvZFN3aXp6bGVyLCBhbiBS
QUlJIHdoaWNoIHN3aXp6bGVzIGFuIE9iamVjdGl2ZS1DIGNsYXNzIG1ldGhvZCBvdmVyIGl0cyBs
aWZldGltZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Fj
dGlvblNoZWV0VGVzdHMubW06CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRoYXQgbG9h
ZHMgYSB2aWV3IGNvbnRyb2xsZXIgd2hpY2ggZW1iZWRzIGEgV0tXZWJWaWV3LCBhbmQgdmVyaWZp
ZXMgdGhhdCBwcmVzZW50aW5nIGFuZCB0aGVuCisgICAgICAgIGRpc21pc3NpbmcgYW4gYWN0aW9u
IHNoZWV0IGZyb20gdGhhdCB3ZWIgdmlldyBkb2VzIG5vdCBjYXVzZSB0aGUgdmlldyBjb250cm9s
bGVyIHRvIGFsc28gZGlzbWlzcy4KKworICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0T3ZlcnJp
ZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24pOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6b3ZlcnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRp
b24pOgorCisgICAgICAgIE1vY2sgK1tVSVZpZXdDb250cm9sbGVyIF92aWV3Q29udHJvbGxlckZv
ckZ1bGxTY3JlZW5QcmVzZW50YXRpb25Gcm9tVmlldzpdIHRvIHJldHVybiB0aGUgd2ViIHZpZXcu
IFRoaXMgd29ya3MKKyAgICAgICAgYXJvdW5kIHRoZSBmYWN0IHRoYXQgVGVzdFdlYktpdEFQSSBp
cyBub3QgYSBVSSBhcHBsaWNhdGlvbiwgc28gY2VydGFpbiBwaWVjZXMgb2YgVUlLaXQgQVBJIGFu
ZCBTUEkgbmVlZCB0byBiZQorICAgICAgICBzdHViYmVkIG9yIG1vY2tlZCB0byBzaW11bGF0ZSBi
ZWluZyBhIFVJIGFwcGxpY2F0aW9uLiBXZSBjYW4gcmVtb3ZlIHRoZXNlIHdvcmthcm91bmRzIG9u
Y2UKKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1MjA0IGlzIGFkZHJlc3NlZCwgYW5k
IFRlc3RXZWJLaXRBUEkgYmVjb21lcyBhIFVJIGFwcGxpY2F0aW9uIHRoYXQgY2FuIGFjdHVhbGx5
IG1haW50YWluCisgICAgICAgIGEgcm9vdCB2aWV3IGNvbnRyb2xsZXIgYW5kIGtleSB3aW5kb3cu
CisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1l
OmNvbmZpZ3VyYXRpb246YWRkVG9XaW5kb3c6XSk6CisKKyAgICAgICAgQWRkIGEgbmV3IGluaXRp
YWxpemVyIGZvciBUZXN0V0tXZWJWaWV3IHRoYXQgZG9lc24ndCBmb3JjZSB0aGUgdmlldyB0byBi
ZSBob3N0ZWQgd2l0aGluIGEgVUlXaW5kb3cuIFRoaXMgaXMgdXNlZAorICAgICAgICBieSBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlciB0byBjcmVhdGUgYSBUZXN0V0tXZWJWaWV3IGluIC1sb2FkVmll
dy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVy
Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250
cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXJXaW5k
b3cgX2JlZ2luS2V5V2luZG93RGVmZXJyYWxdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0Nv
bnRyb2xsZXJXaW5kb3cgX2VuZEtleVdpbmRvd0RlZmVycmFsXSk6CisKKyAgICAgICAgU3R1YiBv
dXQgdGhlc2UgbWV0aG9kcyB0byBwcmV2ZW50IFVJS2l0IGZyb20gaGl0dGluZyBhc3NlcnRpb25z
IHdoZW4gbWFraW5nIHRoaXMgVUlXaW5kb3cgdGhlIGtleSB3aW5kb3cuIFRoaXMKKyAgICAgICAg
Y2FuIGFsc28gYmUgcmVtb3ZlZCBvbmNlIFRlc3RXZWJLaXRBUEkgaXMgYSBVSSBhcHBsaWNhdGlv
bi4KKworICAgICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBpbml0V2l0aEZyYW1lOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIGxvYWRW
aWV3XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyIHdlYlZpZXddKToKKyAg
ICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5p
bWF0ZWQ6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIg
ZGlzbWlzc2FsSGFuZGxlcl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3Q29udHJvbGxlciBz
ZXREaXNtaXNzYWxIYW5kbGVyOl0pOgorCisgICAgICAgIEFkZCBhIFVJVmlld0NvbnRyb2xsZXIg
aGVscGVyIHN1YmNsYXNzIHdob3NlIC12aWV3IGlzIGEgV0tXZWJWaWV3LiBUaGUgbmV3IEFQSSB0
ZXN0IHByZXNlbnRzIHRoaXMgdmlldworICAgICAgICBjb250cm9sbGVyLiBUZXN0cyBtYXkgYWxz
byBwcm92aWRlIGEgZGlzbWlzc2FsSGFuZGxlciwgd2hpY2ggaXMgaW52b2tlZCB3aGVuIHRoZSB2
aWV3IGNvbnRyb2xsZXIgaXMgYmVpbmcKKyAgICAgICAgZGlzbWlzc2VkLiBUaGUgbmV3IEFQSSB0
ZXN0IHVzZXMgdGhpcyBob29rIHRvIHZlcmlmeSB0aGF0IHRoZSB2aWV3IGNvbnRyb2xsZXIgY29u
dGFpbmluZyB0aGUgd2ViIHZpZXcgaXNuJ3QgYWxzbworICAgICAgICBkaXNtaXNzZWQgYWZ0ZXIg
dGhlIGFjdGlvbiBzaGVldCBnb2VzIGF3YXkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lv
cy9VSUtpdFNQSS5oOgorCiAyMDE4LTAzLTEyICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRl
ekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBHcmlkTGF5b3V0IHJ1bnRpbWUgZmxhZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NsYXNzTWV0aG9kU3dpenpsZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzUy
Nzc3ODc3Mzc0YzQyZGRlNTMzYzEyMmI1ZGJmNzcyM2MyZmUyCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworY2xhc3MgQ2xhc3NNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CitwdWJsaWM6CisgICAgQ2xhc3NNZXRob2RTd2l6emxl
cihDbGFzcywgU0VMLCBJTVApOworICAgIH5DbGFzc01ldGhvZFN3aXp6bGVyKCk7CisKKyAgICBN
ZXRob2QgbV9tZXRob2Q7CisgICAgSU1QIG1fb3JpZ2luYWxJbXBsZW1lbnRhdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ2xhc3NNZXRob2RTd2l6emxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ2xhc3NN
ZXRob2RTd2l6emxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGRmNzNmOWMxZDg5ZGFhYWEzOTdjMjMwNjE5
ZWU3YzE1MmIwMDFlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DbGFz
c01ldGhvZFN3aXp6bGVyLm1tCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitDbGFzc01ldGhvZFN3aXp6bGVyOjpDbGFzc01ldGhvZFN3aXp6
bGVyKENsYXNzIGNscywgU0VMIG9yaWdpbmFsU2VsZWN0b3IsIElNUCBpbXBsZW1lbnRhdGlvbikK
KyAgICA6IG1fbWV0aG9kKGNsYXNzX2dldENsYXNzTWV0aG9kKG9iamNfZ2V0TWV0YUNsYXNzKE5T
U3RyaW5nRnJvbUNsYXNzKGNscykuVVRGOFN0cmluZyksIG9yaWdpbmFsU2VsZWN0b3IpKQorICAg
ICwgbV9vcmlnaW5hbEltcGxlbWVudGF0aW9uKG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtX21l
dGhvZCwgaW1wbGVtZW50YXRpb24pKQoreworfQorCitDbGFzc01ldGhvZFN3aXp6bGVyOjp+Q2xh
c3NNZXRob2RTd2l6emxlcigpCit7CisgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1fbWV0
aG9kLCBtX29yaWdpbmFsSW1wbGVtZW50YXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY0ZTdmNWY5YWRkMzFjZDEzN2I0
NWNhMTgxM2EwMjU3OWU5OTQ3OWQuLmNkNWQ1ZGNjM2MwOWI0YTU1MTAxMjI0NjJmOTk5MGMwYTlk
Nzg1NDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNiArNzQ1LDggQEAKIAkJRjQ0
RDA2NDcxRjM5NjI3QTAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0NjFGMzk1QzREMDAxQTBF
MjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEw
RTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVz
dEhhcm5lc3MubW0gKi87IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJh
bnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRy
YW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07CisJCUY0NTE3QjY3MjA1NEM0OTUwMEMy
NjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLzsgfTsKKwkJRjQ1MTdCN0YyMDU1MTAxQjAwQzI2NzIx
IC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RT
d2l6emxlci5tbSAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJl
ZC1zcXVhcmUucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBu
ZyAqLzsgfTsKIAkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5
QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovOyB9OwogCQlGNDU3
QTlENjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjMyMDJENTM1MzAw
RjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sICovOyB9OwpAQCAtMTg3Nyw2ICsxODc5LDEwIEBA
CiAJCUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0
aW5nVGVzdEhhcm5lc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBFZGl0aW5nVGVzdEhhcm5lc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
NTEyRTEyMUY2MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50
cnkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTE3QjY1MjA1NEM0OTUw
MEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDUx
N0I2NjIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1MTdCNjgyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9k
U3dpenpsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NNZXRob2RTd2l6emxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDUxN0I2OTIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NN
ZXRob2RTd2l6emxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsYXNzTWV0aG9kU3dpenps
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1
Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJl
LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTdBOUIzMjAyRDUzNTMwMEY3
RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERh
dGFUcmFuc2Zlci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDU3QTlCNjIw
MkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYXN0ZU1peGVkQ29udGVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwMzAsNiArMjAzNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCUExM0VCQjQ0MUI4NzMzMkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAorCQkJ
CUY0NTE3QjY4MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCisJ
CQkJRjQ1MTdCNjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8s
CiAJCQkJRjQ0RDA2NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICov
LAogCQkJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0g
Ki8sCiAJCQkJNUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIuaCAqLywKQEAgLTIyMjQsNiArMjIzMiw4IEBACiAJCQkJRjRENEYzQjUxRTRFMkJDQjAwQkIy
NzY3IC8qIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oICovLAogCQkJCUY0RDRGM0I0MUU0RTJC
Q0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8sCiAJCQkJMkU3NzY1
Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8sCisJCQkJRjQ1MTdCNjUyMDU0QzQ5
NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLmggKi8sCisJCQkJRjQ1MTdCNjYy
MDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCUY0
OTMyNDdDMUY0NERGOEQwMDZGNDMzNiAvKiBVSUtpdFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBpb3M7CkBAIC0zMzk3LDYgKzM0MDcsNyBAQAogCQkJCTU3MzAzQkNCMjAwODM3NjUwMDM1NTk2
NSAvKiBDQk9SUmVhZGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMwM0JDOTIwMDgy
NEQzMDAzNTU5NjUgLyogQ0JPUlZhbHVlVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzMw
M0JDQTIwMDgyQzAxMDAzNTU5NjUgLyogQ0JPUldyaXRlclRlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRjQ1MTdCN0YyMDU1MTAxQjAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFNjFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VGcm9t
V2l0aGluQ3JlYXRlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNzFBNDExQTdF
MDA0NDdDNEMgLyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUU1MUE0MTFBRTYwMDQ0N0M0QyAvKiBDbG9zZVRoZW5U
ZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM2NjUsNyBAQAogCQkJCUEx
NEZDNTkwMUI4QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VBRTFBNDExQTM0MDA0NDdDNEMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RX
S1dlYlZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFNjE5M0IxRjkzMUIz
QTAwQUYyNDVFIC8qIFRleHRDb2RlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFC
MTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvQWN0aW9uU2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Fj
dGlvblNoZWV0VGVzdHMubW0KaW5kZXggMGVhNDljMGNjYzZhY2ZiMGYxNGRkY2RhYTFiMTFlZDNi
MzFiYjk2Yy4uNDkxZTMzNWZmMzA5MzYyMmZhMWVhNWMzMWE3YWY5ZDcxNmViNjBjOCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCkBA
IC0yMywxMyArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRl
c3QuaCIKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9ydCAiQ2xhc3NNZXRob2RTd2l6emxl
ci5oIgogI2ltcG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgi
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4K
QEAgLTc1LDYgKzc5LDcwIEBAIHByaXZhdGU6CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBt
X3N3aXp6bGVyOwogfTsKIAorc3RhdGljIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBnT3Zl
cnJpZGVWaWV3Q29udHJvbGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb247CitzdGF0aWMgdm9p
ZCBzZXRPdmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbihVSVZp
ZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKK3sKKyAgICBnT3ZlcnJpZGVWaWV3Q29udHJv
bGxlckZvckZ1bGxzY3JlZW5QcmVzZW50YXRpb24gPSB2aWV3Q29udHJvbGxlcjsKK30KKworc3Rh
dGljIFVJVmlld0NvbnRyb2xsZXIgKm92ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVu
UHJlc2VudGF0aW9uKCkKK3sKKyAgICByZXR1cm4gZ092ZXJyaWRlVmlld0NvbnRyb2xsZXJGb3JG
dWxsc2NyZWVuUHJlc2VudGF0aW9uLmdldCgpOworfQorCitURVNUKEFjdGlvblNoZWV0VGVzdHMs
IERpc21pc3NpbmdBY3Rpb25TaGVldFNob3VsZE5vdERpc21pc3NQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIpCit7CisgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFj
ZTsKKyAgICBVSUFwcGxpY2F0aW9uSW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gd2luZG93ID0gW1tUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMjQsIDc2OCldOworICAgIGF1dG8g
cm9vdFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1VJTmF2aWdh
dGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOnJvb3RWaWV3
Q29udHJvbGxlci5nZXQoKV0pOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbQWN0aW9u
U2hlZXRPYnNlcnZlciBhbGxvY10gaW5pdF0pOworICAgIFt3aW5kb3cgc2V0Um9vdFZpZXdDb250
cm9sbGVyOm5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpXTsKKyAgICBbd2luZG93IG1ha2VLZXlB
bmRWaXNpYmxlXTsKKworICAgIGF1dG8gd2ViVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAxMDI0LCA3NjgpIGNvbmZpZ3VyYXRpb246bmlsXSk7CisgICAgVGVzdFdLV2ViVmlldyAqd2Vi
VmlldyA9IFt3ZWJWaWV3Q29udHJvbGxlciB3ZWJWaWV3XTsKKyAgICB3ZWJWaWV3LlVJRGVsZWdh
dGUgPSBvYnNlcnZlci5nZXQoKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFtyb290Vmlld0NvbnRyb2xs
ZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOndlYlZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVk
Ok5PIGNvbXBsZXRpb246bmlsXTsKKworICAgIC8vIFNpbmNlIFRlc3RXZWJLaXRBUEkgaXMgbm90
IGEgVUkgYXBwbGljYXRpb24sICtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6XQorICAgIC8vIHJldHVybnMgbmlsLiBUbyBl
bnN1cmUgdGhhdCB3ZSBhY3R1YWxseSBwcmVzZW50IHRoZSBhY3Rpb24gc2hlZXQgZnJvbSB0aGUg
d2ViIHZpZXcgY29udHJvbGxlciwgd2UgbW9jayB0aGlzIGZvciB0aGUKKyAgICAvLyB0aW1lIGJl
aW5nIHVudGlsIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwNCBpcyBmaXhlZC4KKyAgICBzZXRP
dmVycmlkZVZpZXdDb250cm9sbGVyRm9yRnVsbHNjcmVlblByZXNlbnRhdGlvbih3ZWJWaWV3Q29u
dHJvbGxlci5nZXQoKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcihbVUlWaWV3
Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVu
UHJlc2VudGF0aW9uRnJvbVZpZXc6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlVmll
d0NvbnRyb2xsZXJGb3JGdWxsc2NyZWVuUHJlc2VudGF0aW9uKSk7CisKKyAgICBbb2JzZXJ2ZXIg
c2V0UHJlc2VudGF0aW9uSGFuZGxlcjpeKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIE5TQXJy
YXkgKmFjdGlvbnMpIHsKKyAgICAgICAgLy8gS2lsbGluZyB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vz
cyBzaG91bGQgZGlzbWlzcyB0aGUgYWN0aW9uIHNoZWV0LgorICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBub3QgdGVsbCB0aGUgd2ViIHZpZXcgY29udHJvbGxlciB0byBkaXNtaXNzIGluIHRoZSBwcm9j
ZXNzLgorICAgICAgICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXTsKKyAgICAgICAg
cmV0dXJuIGFjdGlvbnM7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5h
dGU6XihXS1dlYlZpZXcgKikgeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwor
ICAgIH1dOworCisgICAgX19ibG9jayBib29sIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxlciA9
IGZhbHNlOworICAgIFt3ZWJWaWV3Q29udHJvbGxlciBzZXREaXNtaXNzYWxIYW5kbGVyOl57Cisg
ICAgICAgIGRpZERpc21pc3NXZWJWaWV3Q29udHJvbGxlciA9IHRydWU7CisgICAgfV07CisKKyAg
ICBbd2ViVmlldyBfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOkNHUG9pbnRNYWtl
KDEwMCwgMTAwKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IEVYUEVDVF9GQUxTRShkaWREaXNtaXNzV2ViVmlld0NvbnRyb2xsZXIpOworICAgIEVYUEVDVF9O
VUxMKFt3ZWJWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl0pOworICAgIEVY
UEVDVF9OT1RfTlVMTChbd2ViVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
XSk7Cit9CisKIFRFU1QoQWN0aW9uU2hlZXRUZXN0cywgSW1hZ2VNYXBEb2VzTm90RGVzdHJveVNl
bGVjdGlvbikKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJm
YWNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCA5MDhl
MDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhLi40NWQ5ZThhMGY3MzgzM2JmNGI3
OWFjN2EyNTMzZGNiMWQ0N2JiODMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaApAQCAtNDYsNiArNDYsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcg
OiBXS1dlYlZpZXcKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
Y29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb247CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uIGFkZFRvV2luZG93OihCT09MKWFkZFRvV2luZG93OwogLSAodm9pZCljbGVhck1lc3Nh
Z2VIYW5kbGVyczooTlNBcnJheSAqKW1lc3NhZ2VOYW1lczsKIC0gKHZvaWQpcGVyZm9ybUFmdGVy
UmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hfYmxv
Y2tfdClhY3Rpb247CiAtICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VO
YW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDI1
ODk3ZDY3MjI0NGYyZWVkMzI5NWM1NDFlMTA3MGM0YjMyNGZlMWMuLjgxZTM3NmVlM2M0YThiNjkz
YmFjNmQ5NTU1ODBmYzNkZTY4NGJhYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KQEAgLTE3NSw3ICsxNzUsMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCiB7Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKQorICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZy
YW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNdOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3Vy
YXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGFkZFRvV2luZG93
OihCT09MKWFkZFRvV2luZG93Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZy
YW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgaWYgKGFkZFRvV2luZG93KQogICAgICAgICBbc2VsZiBfc2V0
VXBUZXN0V2luZG93OmZyYW1lXTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEx
ZjI1ZGZlNjU1Y2RhMjgzODE0ZDEwZjJjZDQ4YjJmNjliMmVlYgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RXS1dlYlZpZXdDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKworI2lm
IFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworQGludGVyZmFjZSBU
ZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdyA6IFVJV2luZG93CisKK0BlbmQKKworQGludGVy
ZmFjZSBUZXN0V0tXZWJWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKKworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIGRpc3BhdGNoX2Jsb2NrX3QgZGlzbWlzc2FsSGFuZGxlcjsKKworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9U
ZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWE0NjNhYzg5OWQ2ZmQ3OWYy
Zjk2OTJiMGUwODM5ODNiY2E2NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw5NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlld0NvbnRy
b2xsZXIuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlcldpbmRvdworCisvLyBU
aGVzZSBpbnRlcm5hbCBtZXRob2RzIG5lZWQgdG8gYmUgc3R1YmJlZCBvdXQgdG8gcHJldmVudCBV
SUtpdCBmcm9tIHRocm93aW5nIGluY29uc2lzdGVuY3kKKy8vIGV4Y2VwdGlvbnMgd2hlbiBtYWtp
bmcgYSBVSVdpbmRvdyB0aGUga2V5IHdpbmRvdywgc2luY2UgVGVzdFdlYktpdEFQSSBpcyBub3Qg
YSBVSSBhcHBsaWNhdGlvbi4KKy8vIFRoZXNlIHN0dWJzIGFuZCB0aGlzIGNsYXNzIGNhbiBiZSBy
ZW1vdmVkIG9uY2UgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1MjA0IGlzIGZpeGVkLgorLSAodm9p
ZClfYmVnaW5LZXlXaW5kb3dEZWZlcnJhbAoreworfQorCistICh2b2lkKV9lbmRLZXlXaW5kb3dE
ZWZlcnJhbAoreworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3Q29u
dHJvbGxlciB7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IF9jb25maWd1
cmF0aW9uOworICAgIENHUmVjdCBfaW5pdGlhbFZpZXdGcmFtZTsKKyAgICBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gX3dlYlZpZXc7CisgICAgQmxvY2tQdHI8dm9pZCgpPiBfZGlzbWlzc2FsSGFu
ZGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBj
b25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgorewor
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX2luaXRpYWxWaWV3RnJhbWUgPSBmcmFtZTsKKyAgICBfY29uZmlndXJhdGlv
biA9IGNvbmZpZ3VyYXRpb24gPzogYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClsb2FkVmlldworewor
ICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6X2luaXRpYWxWaWV3RnJhbWUgY29uZmlndXJhdGlvbjpfY29uZmlndXJhdGlvbi5nZXQoKSBh
ZGRUb1dpbmRvdzpOT10pOworICAgIHNlbGYudmlldyA9IF93ZWJWaWV3LmdldCgpOworfQorCist
IChUZXN0V0tXZWJWaWV3ICopd2ViVmlldworeworICAgIFtzZWxmIGxvYWRWaWV3SWZOZWVkZWRd
OworICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKK30KKworLSAodm9pZClkaXNtaXNzVmlld0Nv
bnRyb2xsZXJBbmltYXRlZDooQk9PTClmbGFnIGNvbXBsZXRpb246KHZvaWQgKF4pKCkpY29tcGxl
dGlvbgoreworICAgIGlmIChfZGlzbWlzc2FsSGFuZGxlcikKKyAgICAgICAgX2Rpc21pc3NhbEhh
bmRsZXIoKTsKKyAgICBbc3VwZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6ZmxhZyBj
b21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistIChkaXNwYXRjaF9ibG9ja190KWRpc21pc3Nh
bEhhbmRsZXIKK3sKKyAgICByZXR1cm4gX2Rpc21pc3NhbEhhbmRsZXIuZ2V0KCk7Cit9CisKKy0g
KHZvaWQpc2V0RGlzbWlzc2FsSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdClkaXNtaXNzYWxIYW5k
bGVyCit7CisgICAgX2Rpc21pc3NhbEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoZGlzbWlzc2FsSGFu
ZGxlcik7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9VSUtpdFNQSS5oCmluZGV4IGM2ODcyMTAyYjAxYjhiMTRiYzg3YTY4OWQ0NmY3YzY3MDhh
MTQxYzEuLmM0YjcyNzdiNjBlOGM5YzU0ZmRiMzc4OTcwZjJhZjcwNzY0MzU0MDQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMzIsMTMgKzMyLDE0IEBACiAjaW1wb3J0IDxVSUtp
dC9VSUFwcGxpY2F0aW9uX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0VHJh
aXRzX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1ByaXZhdGUuaD4KKyNp
bXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKIEBwcm90b2NvbCBVSURyYWdTZXNzaW9uOwogQGNsYXNzIFVJRHJhZ0ludGVy
YWN0aW9uOwogQGNsYXNzIFVJRHJhZ0l0ZW07CiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFj
dGlvbl9Qcml2YXRlLmg+Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQog
CiAjZWxzZQogCkBAIC05NSw0ICs5Niw4IEBAIFdURl9FWFRFUk5fQ19FTkQKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNTdHJpbmcgKl90aXRsZTsKIEBl
bmQKIAorQGludGVyZmFjZSBVSVZpZXdDb250cm9sbGVyIChVSUtpdFNQSSkKKysgKFVJVmlld0Nv
bnRyb2xsZXIgKilfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZp
ZXc6KFVJVmlldyAqKXZpZXc7CitAZW5kCisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>