<?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>222957</bug_id>
          
          <creation_ts>2021-03-08 20:43:51 -0800</creation_ts>
          <short_desc>[Cocoa] Add tests for ArgumentCodersCocoa</short_desc>
          <delta_ts>2021-03-10 16:34:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222856</see_also>
          <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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737455</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-08 20:43:51 -0800</bug_when>
    <thetext>We wouldn&apos;t have encountered Bug 222856 if we had better coverage for our IPC argument coders.

Let&apos;s star that effort by hitting a few of the recent cases we&apos;ve encountered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737456</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-08 20:44:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/75201311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737466</commentid>
    <comment_count>2</comment_count>
      <attachid>422664</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-08 21:29:29 -0800</bug_when>
    <thetext>Created attachment 422664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737909</commentid>
    <comment_count>3</comment_count>
      <attachid>422788</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-09 20:03:12 -0800</bug_when>
    <thetext>Created attachment 422788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737918</commentid>
    <comment_count>4</comment_count>
      <attachid>422790</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-09 20:36:03 -0800</bug_when>
    <thetext>Created attachment 422790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738080</commentid>
    <comment_count>5</comment_count>
      <attachid>422790</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-10 09:14:08 -0800</bug_when>
    <thetext>Comment on attachment 422790
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:105
&gt; ++ (Optional&lt;RetainPtr&lt;id&gt;&gt;)_roundTripIPCEncodeDecodeObject:(id)testObject ofClass:(Class)classType;

Yuck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738093</commentid>
    <comment_count>6</comment_count>
      <attachid>422790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-10 09:46:13 -0800</bug_when>
    <thetext>Comment on attachment 422790
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:105
&gt;&gt; ++ (Optional&lt;RetainPtr&lt;id&gt;&gt;)_roundTripIPCEncodeDecodeObject:(id)testObject ofClass:(Class)classType;
&gt; 
&gt; Yuck.

Why do we need to use Optional here? RetainPtr already has a nil value. Do we need to distinguish &quot;nil&quot; and &quot;not present&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738095</commentid>
    <comment_count>7</comment_count>
      <attachid>422790</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-10 09:49:38 -0800</bug_when>
    <thetext>Comment on attachment 422790
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:360
&gt; +    auto encoder = IPC::Encoder(IPC::MessageName::WebPage_LoadRequest, 0);
&gt; +    encoder &lt;&lt; testObject;
&gt; +
&gt; +    auto decoder = IPC::Decoder::create(encoder.buffer(), encoder.bufferSize(), nullptr, { });
&gt; +    if (!decoder)
&gt; +        return WTF::nullopt;
&gt; +
&gt; +    return IPC::decodeObject(*decoder, @[classType]);

I think we should try to just write this code directly in TestWebKitAPI if we can, rather than exposing this new class method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738109</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-10 10:18:46 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; Comment on attachment 422790 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422790&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:360
&gt; &gt; +    auto encoder = IPC::Encoder(IPC::MessageName::WebPage_LoadRequest, 0);
&gt; &gt; +    encoder &lt;&lt; testObject;
&gt; &gt; +
&gt; &gt; +    auto decoder = IPC::Decoder::create(encoder.buffer(), encoder.bufferSize(), nullptr, { });
&gt; &gt; +    if (!decoder)
&gt; &gt; +        return WTF::nullopt;
&gt; &gt; +
&gt; &gt; +    return IPC::decodeObject(*decoder, @[classType]);
&gt; 
&gt; I think we should try to just write this code directly in TestWebKitAPI if
&gt; we can, rather than exposing this new class method.

Actually, I think that will probably require splitting the IPC code out into its own static library, which we should probably do. But not for this. 

I think the Optional&lt;RetainPtr&lt;&gt;&gt; is very odd though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738228</commentid>
    <comment_count>9</comment_count>
      <attachid>422790</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-10 14:13:03 -0800</bug_when>
    <thetext>Comment on attachment 422790
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:105
&gt;&gt;&gt; ++ (Optional&lt;RetainPtr&lt;id&gt;&gt;)_roundTripIPCEncodeDecodeObject:(id)testObject ofClass:(Class)classType;
&gt;&gt; 
&gt;&gt; Yuck.
&gt; 
&gt; Why do we need to use Optional here? RetainPtr already has a nil value. Do we need to distinguish &quot;nil&quot; and &quot;not present&quot;?

It&apos;s a pretty common idiom in our IPC serialization code. We return an Optional (null opt) on errors. Sometimes the encoded value is null (but not an error). But maybe that&apos;s not important for this case.

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:360
&gt;&gt;&gt; +    return IPC::decodeObject(*decoder, @[classType]);
&gt;&gt; 
&gt;&gt; I think we should try to just write this code directly in TestWebKitAPI if we can, rather than exposing this new class method.
&gt; 
&gt; Actually, I think that will probably require splitting the IPC code out into its own static library, which we should probably do. But not for this. 
&gt; 
&gt; I think the Optional&lt;RetainPtr&lt;&gt;&gt; is very odd though.

It&apos;s just mirroring exactly what IPC::decodeObject returns. Optional (WTF::nullopt) signifies error, Optional(RefPtr&lt;something null&gt;) is an encoded null value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738248</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-10 14:48:21 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #9)
&gt; It&apos;s a pretty common idiom in our IPC serialization code. We return an
&gt; Optional (null opt) on errors. Sometimes the encoded value is null (but not
&gt; an error). But maybe that&apos;s not important for this case.

Yes, I’m familiar with that idiom when we support encoding nil. I think in this case we don’t need the distinction. We don’t need to test the nil support. Not using Optional&lt;&gt; would simplify that test header.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422664</attachid>
            <date>2021-03-08 21:29:29 -0800</date>
            <delta_ts>2021-03-09 20:03:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222957-20210308212927.patch</filename>
            <type>text/plain</type>
            <size>19294</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZmOTc3YjU0NTgxYTFlNmE2
MTUyMGFlYjhiYWY3MWJjZTRhY2I5NjQuLmRkYjM0NThmNzM5YzQzNGY2ZWJiZjAwYzg1OWJkY2Mx
NDFkYjhmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDMtMDggIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgdGVzdHMg
Zm9yIEFyZ3VtZW50Q29kZXJzQ29jb2EKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjk1NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUyMDEzMTE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cg
VGVzdFdlYktpdEFQSSB0byBleGVyY2lzZSB0aGUgSVBDIEVuY29kZXIgYW5kIERlY29kZXIgc28g
d2UgY2FuIGV4ZXJjaXNlIHRoZXNlIGltcG9ydGFudCBjb2RlIHBhdGhzLgorICAgICAgICBUaGlz
IHJlcXVyZXMgdGhlIEVuY29kZXIgYW5kIERlY29kZXIgbGlmZWN5Y2xlIG1ldGhvZHMsIGFzIHdl
bGwgYXMgdGhlIGVuY29kZU9iamVjdCBhbmQgZGVjb2RlT2JqZWN0IGZ1bmN0aW9ucworICAgICAg
ICB0byBiZSBleHBvcnRlZC4KKworICAgICAgICBUZXN0ZWQgYnkgbmV3IFRlc3RXZWJLaXRBUEkg
VGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOiBNYXJrIHRoZSBjcmVh
dGUgYW5kIGRlc3RydWN0b3IgYXMgV0tfRVhQT1JULgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9F
bmNvZGVyLmg6IE1hcmsgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYXMgV0tfRVhQT1JULgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6IE1hcmsgJ2VuY29k
ZU9iamVjdCcgYW5kICdkZWNvZGVPYmplY3QnIGFzIFdLX0VYUE9SVC4KKwogMjAyMS0wMy0wOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IENhbGxi
YWNrQWdncmVnYXRvciBpbiBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggMGYzYWMyM2I0YzViN2NmMjg1ZmE1
OTA3ZjE2MTZlMGRiNzE1NmZiYy4uZTk3ODcyOTA0N2Q3MzNiZGNhMzBiZTk2NjljOWNjOGI1ZTA2
NjliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYktpdC9X
S0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ5LDEwICs1MCwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyOwogY2xhc3MgRGVjb2RlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIFdLX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBz
dHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAotICAg
IH5EZWNvZGVyKCk7CisgICAgV0tfRVhQT1JUIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNv
bnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNvZGVyKERlY29kZXImJikgPSBkZWxldGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggNzJlYjMzZDkwMTYwNmQyODlj
NzBkOGMxM2JkYzQzN2VmYTNhNmU3MS4uYjE4MTMxYjliOGJiMjFlYTRlNmJiZWQxNjhkMThlZTgy
NjMzZjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQyLDggKzQzLDggQEAgdGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKIGNsYXNzIEVuY29kZXIgZmlu
YWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVuY29kZXIo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIH5FbmNvZGVyKCk7Cisg
ICAgV0tfRVhQT1JUIEVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIFdLX0VYUE9SVCB+RW5jb2RlcigpOwogCiAgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7
IH0KICAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZU5hbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50
Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJz
Q29jb2EuaAppbmRleCBlNmIyMzViNzRmOTQzOTJmNWU2MjVlNjI3YzM2ZDgzNGVmNzkxYWYwLi40
MDBjZDgwMTA4NzMwOTdmN2YzZmJmODQ2NmY2NzM5N2U5NjE0YmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEyICsy
NywxMyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbXBvcnQgPFdlYktpdC9XS0RlY2xh
cmF0aW9uU3BlY2lmaWVycy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYsIGlkKTsKLU9wdGlvbmFsPFJl
dGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFsbG93
ZWRDbGFzc2VzKTsKK1dLX0VYUE9SVCB2b2lkIGVuY29kZU9iamVjdChFbmNvZGVyJiwgaWQpOwor
V0tfRVhQT1JUIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiwg
TlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dXNpbmcgSXNPYmpDT2JqZWN0ID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
PFQgKiwgaWQ+Ojp2YWx1ZSwgVCAqPjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhmMzBhYjYxY2QzNzQ3ODc0MDExZTI0NWUzN2EwZGZmMDVk
NDA0ZjIuLjE4YjZlZmI1MzJiMmIzODI0ZDEzMmY3M2FiOTYzZmFjYmNlZGM1MWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAyMS0wMy0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIEFkZCB0ZXN0cyBmb3IgQXJndW1lbnRDb2RlcnNDb2NvYQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTU3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NTIwMTMxMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3IgYSBoYW5kZnVsIG9mIENvY29hIHR5
cGVzIHRoYXQgaGF2ZSB0cmlnZ2VyZWQgYnVncyBpbiByZWNlbnQgd2Vla3MuIFRoaXMKKyAgICAg
ICAgd29yayBpcyBtZWFudCBhcyBhIGZpcnN0IHN0ZXAgd2l0aCBtb3JlIHRlc3RzIHRvIGJlIGFk
ZGVkLgorICAgICAgICAKKyAgICAgICAgQ3VycmVudGx5IHRlc3RlZDogTlNTdHJpbmcsIE5TVVJM
LCBOU1VSTFJlcXVlc3QsIGFuZCBQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24uCisKKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBzb21lIGFkZGl0aW9uYWwgaGVhZGVyIGluY2x1ZGUgcGF0aHMgdG8g
c3VwcG9ydCB0aGUgSVBDIGVuY29kZXIgYW5kIGRlY29kZXIuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFkZCBuZXcgaW5jbHVkZSBwYXRo
cy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkIHRoZSBuZXcgdGVzdCBmaWxlLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTAzLTA4ICBTdGVwaGFuIFN6
YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJIFdl
YktpdC5IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZSBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoIEVOQUJM
RV9DT05URVhUX01FTlVTPU9GRgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IDhlNWMzZDE5NmE3OGIzMjk2NTk5ZmY5ODJjMGU3ZTg3
Yjk5MTgxOWYuLjJmMjI2N2IwZTNiNWVkZDRhM2YwZDM5ZGI0OWJkZmM5ZjJkMWYzNTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAg
LTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMz
LDcgKzMzLDcgQEAgQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxejsKIENMQU5H
X0NYWF9MSUJSQVJZID0gbGliYysrOwogQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKIENM
QU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POwotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7
QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZSAkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMgJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNv
cmVUZXN0U3VwcG9ydCAke1NSQ1JPT1R9ICQoU1JDUk9PVCkvLi4vLi4vU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vdXNyL2xvY2FsL2luY2x1ZGUgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0Zvcndh
cmRpbmdIZWFkZXJzICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQgJHtT
UkNST09UfSAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EgJChT
UkNST09UKS8uLi8uLi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQyAkKFNSQ1JPT1QpLy4uLy4u
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0gJChTUkNST09UKS8uLi8uLi9Tb3VyY2UvV2ViS2l0L1No
YXJlZCAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViS2l0MjsKIAogR0ND
X05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CiBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0g
JChERUJVR19ERUZJTkVTKSBVX0RJU0FCTEVfUkVOQU1JTkc9MSBVX1NIT1dfQ1BMVVNQTFVTX0FQ
ST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU18kKFBMQVRGT1JNX05BTUUpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTU3MzU4YWM5ODA0Yjk4NTliNzJlYjI0ZDg2ZmM1Y2E5
YTFjMjk0OC4uZmJmOWVkNjliMWNmZTk2MTc4YmJlM2U4YzQ0Y2NiOTNjNzQ3ZjYyNyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU0OCw2ICs1NDgsNyBAQAogCQk3QTY2QkRCODFFQUYxOEQ1
MDBDQ0M5MjQgLyogc2V0LWxvbmctdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY2QkRCNzFFQUYxNTAxMDBDQ0M5MjQgLyog
c2V0LWxvbmctdGl0bGUuaHRtbCAqLzsgfTsKIAkJN0E2QTJDNzAxRENDRkE4QzAwQzBEMDg1IC8q
IExvY2FsU3RvcmFnZVF1aXJrVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBNkEyQzZGMURDQ0Y4N0IwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VR
dWlya1Rlc3QubW0gKi87IH07CiAJCTdBNkEyQzcyMURDQ0ZCNTIwMEMwRDA4NSAvKiBMb2NhbFN0
b3JhZ2VRdWlya0VuYWJsZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTZBMkM3MTFEQ0NGQjAyMDBDMEQwODUgLyogTG9jYWxTdG9y
YWdlUXVpcmtFbmFibGVkLmh0bWwgKi87IH07CisJCTdBNzZDMzkyMjVGNzBGNkYwMDg2MTNGNSAv
KiBBcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc2QzM5MTI1RjcwRjZGMDA4NjEzRjUgLyogQXJndW1lbnRD
b2RlcnNDb2NvYVRlc3RzLm1tICovOyB9OwogCQk3QTdCMEU3RjFFQUZFNEMzMDA2QUI4QUUgLyog
TGltaXRUaXRsZVNpemUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTdCMEU3RTFFQUZFNDU0MDA2QUI4QUUgLyogTGltaXRUaXRsZVNpemUubW0gKi87
IH07CiAJCTdBODlCQjY3MjMzMTY0MzIwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTg5QkI2NTIz
MzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlLm1tICovOyB9OwogCQk3QTg5QkI2
ODIzMzE2NDNBMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4OUJCNjYyMzMxNjM1RDAw
NDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbSAqLzsgfTsKQEAgLTIzNTgsNiAr
MjM1OSw3IEBACiAJCTdBNjZCREI3MUVBRjE1MDEwMENDQzkyNCAvKiBzZXQtbG9uZy10aXRsZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNldC1sb25nLXRpdGxlLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTZBMkM2RjFEQ0NGODdCMDBDMEQwODUgLyog
TG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTZBMkM3MTFEQ0NGQjAyMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtFbmFi
bGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBMb2NhbFN0b3JhZ2VRdWlya0Vu
YWJsZWQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3NkMzOTEyNUY3MEY2
RjAwODYxM0Y1IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2FUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2FUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3QjBFN0UxRUFGRTQ1NDAwNkFCOEFFIC8qIExp
bWl0VGl0bGVTaXplLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TGltaXRUaXRsZVNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBODlCQjY1
MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVGb3JtRGVsZWdhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBODlCQjY2MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVG
b3JtRGVsZWdhdGVQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMjcyLDYgKzMyNzQsNyBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAv
KiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyog
QXBwbGVQYXkubW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0
aW9uTWFuaWZlc3QubW0gKi8sCisJCQkJN0E3NkMzOTEyNUY3MEY2RjAwODYxM0Y1IC8qIEFyZ3Vt
ZW50Q29kZXJzQ29jb2FUZXN0cy5tbSAqLywKIAkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEg
LyogQXN5bmNGdW5jdGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyog
QXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEy
NDlBRjAwMjMzQUNDIC8qIEF0dHJTdHlsZS5tbSAqLywKQEAgLTUxNjUsNiArNTE2OCw3IEBACiAJ
CQkJQTE3OThCODIyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjNGNjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0g
aW4gU291cmNlcyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRp
b25NYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc2QzM5MjI1RjcwRjZG
MDA4NjEzRjUgLyogQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0
NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FyZ3VtZW50
Q29kZXJzQ29jb2FUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODI0MmM1YWRlZmY0MmZiNjhiZDc0ODFk
NzhlMTA2YjE5ZTc1MjU2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Bcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0KQEAgLTAsMCArMSwx
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIkNvY29hL0FyZ3VtZW50
Q29kZXJzQ29jb2EuaCIKKyNpbXBvcnQgIklQQy9EZWNvZGVyLmgiCisjaW1wb3J0ICJJUEMvRW5j
b2Rlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU1N0cmlu
ZyAqZXhhbXBsZVVSTFN0cmluZyA9IEAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iOworc3RhdGljIE5T
VVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6ZXhhbXBsZVVSTFN0cmluZ107
CisKK1RFU1QoQXJndW1lbnRDb2RlcnNDb2NvYSwgTlNVUkxSZXF1ZXN0KQoreworICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICBOU1N0cmluZyAqZW5jb2RlZFVSTFN0cmluZyA9IEAiaHR0
cHM6Ly9leGFtcGxlLmNvbS9BJUMzJUE3JUMzJUEzby5odG1sIjsKKyAgICAgICAgYXV0byBlbmNv
ZGVkVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6ZW5jb2RlZFVSTFN0cmluZ107CisgICAgICAg
IGF1dG8gcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmVuY29k
ZWRVUkwgY2FjaGVQb2xpY3k6TlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgdGlt
ZW91dEludGVydmFsOjU0MzIxXTsKKyAgICAgICAgcmVxdWVzdC5IVFRQU2hvdWxkSGFuZGxlQ29v
a2llcyA9IE5POworICAgICAgICByZXF1ZXN0LmFsbG93c0NlbGx1bGFyQWNjZXNzID0gWUVTOwor
ICAgICAgICByZXF1ZXN0LmFsbG93c0NvbnN0cmFpbmVkTmV0d29ya0FjY2VzcyA9IFlFUzsKKyAg
ICAgICAgcmVxdWVzdC5hbGxvd3NFeHBlbnNpdmVOZXR3b3JrQWNjZXNzID0gTk87CisgICAgICAg
IHJlcXVlc3QubmV0d29ya1NlcnZpY2VUeXBlID0gTlNVUkxOZXR3b3JrU2VydmljZVR5cGVSZXNw
b25zaXZlRGF0YTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gZW5jb2RlciA9IElQQzo6RW5jb2Rl
cihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0LCAwKTsKKyAgICAgICAgZW5j
b2RlciA8PCBlbmNvZGVkVVJMU3RyaW5nOworICAgICAgICBlbmNvZGVyIDw8IGVuY29kZWRVUkw7
CisgICAgICAgIGVuY29kZXIgPDwgcmVxdWVzdDsKKworICAgICAgICBhdXRvIG90aGVyVVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2pvaG5ueTpwNHNzdzByZEB3d3cuZXhhbXBs
ZS5jb206NDQzL3NjcmlwdC5leHQ7cGFyYW09dmFsdWU/cXVlcnk9dmFsdWUjcmVmIl07CisgICAg
ICAgIGVuY29kZXIgPDwgb3RoZXJVUkw7CisKKyAgICAgICAgYXV0byBidWZmZXIgPSBlbmNvZGVy
LmJ1ZmZlcigpOworICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBlbmNvZGVyLmJ1ZmZlclNpemUo
KTsKKyAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlclNpemUsIHN0YXRpY19jYXN0PHNpemVfdD4oMTg0
MikpOworCisgICAgICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGJ1ZmZl
ciwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGRl
Y29kZXIpOworICAgICAgICBpZiAoIWRlY29kZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBkZWNvZGVkU3RyaW5nID0gSVBDOjpkZWNvZGU8TlNTdHJpbmc+KCpkZWNvZGVy
LCBAW05TU3RyaW5nLmNsYXNzXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRlY29kZWRTdHJpbmcp
OworICAgICAgICBpZiAoIWRlY29kZWRTdHJpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW2RlY29kZWRTdHJpbmcudmFsdWUoKS5nZXQoKSBpc0VxdWFsVG9T
dHJpbmc6ZW5jb2RlZFVSTFN0cmluZ10pOworCisgICAgICAgIGF1dG8gZGVjb2RlZFVSTCA9IElQ
Qzo6ZGVjb2RlPE5TVVJMPigqZGVjb2RlciwgQFtOU1VSTC5jbGFzc10pOworICAgICAgICBFWFBF
Q1RfVFJVRShkZWNvZGVkVVJMKTsKKyAgICAgICAgaWYgKCFkZWNvZGVkVVJMKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkVVJMLnZhbHVlKCkuZ2V0
KCkgaXNFcXVhbFRvOmVuY29kZWRVUkxdKTsKKworICAgICAgICBhdXRvIGRlY29kZWRDb25maWcg
PSBJUEM6OmRlY29kZTxOU1VSTFJlcXVlc3Q+KCpkZWNvZGVyLCBAW05TVVJMUmVxdWVzdC5jbGFz
c10pOworICAgICAgICBFWFBFQ1RfVFJVRShkZWNvZGVkQ29uZmlnKTsKKyAgICAgICAgaWYgKCFk
ZWNvZGVkQ29uZmlnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVYUEVDVF9UUlVF
KFtkZWNvZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkuVVJMIGlzRXF1YWxUbzplbmNvZGVkVVJMXSk7
CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkuY2FjaGVQb2xp
Y3ksIE5TVVJMUmVxdWVzdFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAgICAgRVhQRUNU
X0RPVUJMRV9FUShkZWNvZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkudGltZW91dEludGVydmFsLCA1
NDMyMSk7CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkuSFRU
UFNob3VsZEhhbmRsZUNvb2tpZXMsIE5PKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRDb25m
aWcudmFsdWUoKS5nZXQoKS5hbGxvd3NDb25zdHJhaW5lZE5ldHdvcmtBY2Nlc3MsIFlFUyk7Cisg
ICAgICAgIEVYUEVDVF9FUShkZWNvZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkuYWxsb3dzRXhwZW5z
aXZlTmV0d29ya0FjY2VzcywgTk8pOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZENvbmZpZy52
YWx1ZSgpLmdldCgpLm5ldHdvcmtTZXJ2aWNlVHlwZSwgTlNVUkxOZXR3b3JrU2VydmljZVR5cGVS
ZXNwb25zaXZlRGF0YSk7CisKKyAgICAgICAgYXV0byBkZWNvZGVkT3RoZXJVUkwgPSBJUEM6OmRl
Y29kZTxOU1VSTD4oKmRlY29kZXIsIEBbTlNVUkwuY2xhc3NdKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoZGVjb2RlZE90aGVyVVJMKTsKKyAgICAgICAgaWYgKCFkZWNvZGVkT3RoZXJVUkwpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgTlNVUkwgKnJlc3VsdFVSTCA9IGRlY29kZWRPdGhl
clVSTC52YWx1ZSgpLmdldCgpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0VVJMIGlzRXF1
YWxUbzpvdGhlclVSTF0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0VVJMLnNjaGVtZSBp
c0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdFVS
TC51c2VyIGlzRXF1YWxUb1N0cmluZzpAImpvaG5ueSJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdFVSTC5wYXNzd29yZCBpc0VxdWFsVG9TdHJpbmc6QCJwNHNzdzByZCJdKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdFVSTC5ob3N0IGlzRXF1YWxUb1N0cmluZzpAInd3dy5leGFt
cGxlLmNvbSJdKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3VsdFVSTC5wb3J0LmludGVnZXJWYWx1
ZSwgNDQzKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdFVSTC5wYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9zY3JpcHQuZXh0O3BhcmFtPXZhbHVlIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0VVJMLnF1ZXJ5IGlzRXF1YWxUb1N0cmluZzpAInF1ZXJ5PXZhbHVlIl0pOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0VVJMLmZyYWdtZW50IGlzRXF1YWxUb1N0cmluZzpAInJlZiJd
KTsKKyAgICB9Cit9CisKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KK1RFU1Qo
QXJndW1lbnRDb2RlcnNDb2NvYSwgUGF5bWVudFNldHVwU2VyaWFsaXphdGlvbikKK3sKKyAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGlmICghUEFMOjpn
ZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcygpKQorICAgICAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKKyAgICAgICAgTlNTdHJpbmcgKnRlc3RNZXJjaGFudElkZW50aWZpZXIgPSBA
IlRlc3QgTWVyY2hhbnQgSWRlbnRpZmllciI7CisgICAgICAgIE5TU3RyaW5nICp0ZXN0UmVmZXJy
ZXJJZGVudGlmaWVyID0gQCJUZXN0IFJlZmVycmVyIElkZW50aWZpZXIiOworICAgICAgICBOU1N0
cmluZyAqdGVzdFNpZ25hdHVyZSA9IEAiVGVzdCBTaWduYXR1cmUiOworCisgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZXJj
aGFudElkZW50aWZpZXIgPSB0ZXN0TWVyY2hhbnRJZGVudGlmaWVyOworICAgICAgICBjb25maWd1
cmF0aW9uLmdldCgpLm9yaWdpbmF0aW5nVVJMID0gZXhhbXBsZVVSTDsKKyAgICAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5yZWZlcnJlcklkZW50aWZpZXIgPSB0ZXN0UmVmZXJyZXJJZGVudGlmaWVy
OworICAgICAgICBjb25maWd1cmF0aW9uLmdldCgpLnNpZ25hdHVyZSA9IHRlc3RTaWduYXR1cmU7
CisKKyAgICAgICAgYXV0byBlbmNvZGVyID0gSVBDOjpFbmNvZGVyKElQQzo6TWVzc2FnZU5hbWU6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5X0JlZ2luQXBwbGVQYXlTZXR1cCwgMCk7CisgICAg
ICAgIGVuY29kZXIgPDwgY29uZmlndXJhdGlvbjsKKworICAgICAgICBhdXRvIGJ1ZmZlciA9IGVu
Y29kZXIuYnVmZmVyKCk7CisgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGVuY29kZXIuYnVmZmVy
U2l6ZSgpOworCisgICAgICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGJ1
ZmZlciwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGRlY29kZXIpOworICAgICAgICBpZiAoIWRlY29kZXIpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5OjFdKTsKKyAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNz
KCkpCisgICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uQ2xhc3NdOworCisgICAgICAgIGF1dG8gZGVjb2RlZENvbmZpZyA9IElQQzo6ZGVjb2Rl
PFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oKmRlY29kZXIsIGFsbG93ZWQuZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShkZWNvZGVkQ29uZmlnKTsKKyAgICAgICAgaWYgKCFkZWNvZGVk
Q29uZmlnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNv
ZGVkQ29uZmlnLnZhbHVlKCkuZ2V0KCkubWVyY2hhbnRJZGVudGlmaWVyIGlzRXF1YWxUb1N0cmlu
Zzp0ZXN0TWVyY2hhbnRJZGVudGlmaWVyXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVk
Q29uZmlnLnZhbHVlKCkuZ2V0KCkub3JpZ2luYXRpbmdVUkwgaXNFcXVhbFRvOmV4YW1wbGVVUkxd
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2RlY29kZWRDb25maWcudmFsdWUoKS5nZXQoKS5yZWZl
cnJlcklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOnRlc3RSZWZlcnJlcklkZW50aWZpZXJdKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW2RlY29kZWRDb25maWcudmFsdWUoKS5nZXQoKS5zaWduYXR1
cmUgaXNFcXVhbFRvU3RyaW5nOnRlc3RTaWduYXR1cmVdKTsKKyAgICB9Cit9CitBTExPV19ORVdf
QVBJX1dJVEhPVVRfR1VBUkRTX0VORAorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422788</attachid>
            <date>2021-03-09 20:03:12 -0800</date>
            <delta_ts>2021-03-09 21:04:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222957-20210309200311.patch</filename>
            <type>text/plain</type>
            <size>16011</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk3MjZkMGI1NDEyZjdlN2Fl
NDk2YmVlNTI2NjE0NDhmZTBmZDg4YWYuLjdkNWM5MGIzM2ZlMTIwMGQ1ZDgwZGRmMzY4OWY2N2I0
MGVhM2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDMtMDkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgdGVzdHMg
Zm9yIEFyZ3VtZW50Q29kZXJzQ29jb2EKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjk1NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUyMDEzMTE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cg
VGVzdFdlYktpdEFQSSB0byBleGVyY2lzZSB0aGUgSVBDIEVuY29kZXIgYW5kIERlY29kZXIgc28g
dGhhdCB3ZSBjYW4gZXhlcmNpc2UgdGhlc2UgaW1wb3J0YW50IGNvZGUgcGF0aHMuCisgICAgICAg
IFdlIGV4cG9zZSBhIHNpbmdsZSBuZXcgbWV0aG9kIG9uIFdLV2ViVmlldyAoV0tUZXN0aW5nKSB0
byBhbGxvdyB1cyB0byB0ZXN0IGEgcm91bmQtdHJpcCBwYXNzIHRocm91Z2ggdGhlCisgICAgICAg
IGVuY29kZXIgYW5kIGRlY29kZXIuCisKKyAgICAgICAgVGVzdGVkIGJ5IG5ldyBUZXN0V2ViS2l0
QVBJIFRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
VGVzdGluZy5tbToKKyAgICAgICAgKCtbV0tXZWJWaWV3IF9yb3VuZFRyaXBJUENFbmNvZGVEZWNv
ZGVPYmplY3Q6b2ZDbGFzczpdKTogQWRkZWQuCisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWZlcmVuY2VzIGRvIG5vdCBuZWVkIHRvIGJl
IHBhc3NlZCB0byB0aGUgV2ViUHJvY2VzcyB2aWEgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBz
aW5jZSB0aGUgc3RvcmUgYWxyZWFkeSBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAppbmRl
eCA2MmU0NjcxNDRlOTE5NGViMGE2ODJhMDhhMjg0ZDU5NWY5NWUzZDk4Li45NGY2ZDk5YjMwMzdj
MjM4ZTJhYzAwMDk4NmRmNDc4ZTI1NTUxNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw2ICsyNiwxMSBAQAogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1Mu
aCIKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nTWFjLmgiCiAKKyNpZmRlZiBf
X2NwbHVzcGx1cworI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjZW5kaWYKKwogdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdBdWRpb1JvdXRp
bmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRy
YXRpb25TdGF0dXNQZW5kaW5nLApAQCAtOTYsNCArMTAxLDggQEAgc3RydWN0IFdLQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToo
dm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9p
ZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIAorI2lmZGVmIF9fY3BsdXNwbHVzCisrIChP
cHRpb25hbDxSZXRhaW5QdHI8aWQ+Pilfcm91bmRUcmlwSVBDRW5jb2RlRGVjb2RlT2JqZWN0Oihp
ZCl0ZXN0T2JqZWN0IG9mQ2xhc3M6KENsYXNzKWNsYXNzVHlwZTsKKyNlbmRpZgorCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVz
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0
aW5nLm1tCmluZGV4IGFkMDg0ZDUyZjJiODZlZjcwNDExZmZmNWI3YzdjNGNjMGRmN2JjNzQuLmNk
YmE1Y2ZmNDE3M2I4YzYyZmRmOTZhMTRmNWNmN2UxYTQ2NzNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oIgogCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1w
b3J0ICJBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCiAjaW1wb3J0ICJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmgiCkBAIC0zNDcsNCArMzQ4LDE2IEBAIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0
aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwogfQogCisr
IChPcHRpb25hbDxSZXRhaW5QdHI8aWQ+Pilfcm91bmRUcmlwSVBDRW5jb2RlRGVjb2RlT2JqZWN0
OihpZCl0ZXN0T2JqZWN0IG9mQ2xhc3M6KENsYXNzKWNsYXNzVHlwZQoreworICAgIGF1dG8gZW5j
b2RlciA9IElQQzo6RW5jb2RlcihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0
LCAwKTsKKyAgICBlbmNvZGVyIDw8IHRlc3RPYmplY3Q7CisKKyAgICBhdXRvIGRlY29kZXIgPSBJ
UEM6OkRlY29kZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSwgbnVsbHB0ciwgeyB9KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gSVBDOjpkZWNvZGVPYmplY3QoKmRlY29kZXIsIEBbY2xh
c3NUeXBlXSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAyMDY0ZTg2M2Q3MDgzYzhjMzcwN2RlMWE4ZTY2OGMzOTliYjgyNTk3
Li44ZGNlNDFhZTNkMTMyMGExOTUzZDhhNzMxNWJjMGYwMTlmYTA3NWQxIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMDMtMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBBZGQgdGVzdHMgZm9yIEFyZ3VtZW50Q29kZXJzQ29jb2EKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk1NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzUyMDEzMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMgZm9yIGEgaGFuZGZ1bCBvZiBDb2NvYSB0eXBlcyB0
aGF0IGhhdmUgdHJpZ2dlcmVkIGJ1Z3MgaW4gcmVjZW50IHdlZWtzLiBUaGlzCisgICAgICAgIHdv
cmsgaXMgbWVhbnQgYXMgYSBmaXJzdCBzdGVwIHdpdGggbW9yZSB0ZXN0cyB0byBiZSBhZGRlZC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIxLTAzLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW90aW9uTWFyayBzY29yZXMgYXJlIHN1cGVyIHNlbnNpdGl2ZSB0
byBhIHNpbmdsZSBsb25nIGZyYW1lCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NzM1OGFj
OTgwNGI5ODU5YjcyZWIyNGQ4NmZjNWNhOWExYzI5NDguLmZiZjllZDY5YjFjZmU5NjE3OGJiZTNl
OGM0NGNjYjkzYzc0N2Y2MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDgsNiArNTQ4
LDcgQEAKIAkJN0E2NkJEQjgxRUFGMThENTAwQ0NDOTI0IC8qIHNldC1sb25nLXRpdGxlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2
NkJEQjcxRUFGMTUwMTAwQ0NDOTI0IC8qIHNldC1sb25nLXRpdGxlLmh0bWwgKi87IH07CiAJCTdB
NkEyQzcwMURDQ0ZBOEMwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rlc3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTZBMkM2RjFEQ0NGODdC
MDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tICovOyB9OwogCQk3QTZBMkM3MjFE
Q0NGQjUyMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVkLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2QTJDNzExREND
RkIwMjAwQzBEMDg1IC8qIExvY2FsU3RvcmFnZVF1aXJrRW5hYmxlZC5odG1sICovOyB9OworCQk3
QTc2QzM5MjI1RjcwRjZGMDA4NjEzRjUgLyogQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NkMzOTEyNUY3
MEY2RjAwODYxM0Y1IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2FUZXN0cy5tbSAqLzsgfTsKIAkJN0E3
QjBFN0YxRUFGRTRDMzAwNkFCOEFFIC8qIExpbWl0VGl0bGVTaXplLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3QjBFN0UxRUFGRTQ1NDAwNkFCOEFF
IC8qIExpbWl0VGl0bGVTaXplLm1tICovOyB9OwogCQk3QTg5QkI2NzIzMzE2NDMyMDA0MkNCMUUg
LyogQnVuZGxlRm9ybURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E4OUJCNjUyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxl
Z2F0ZS5tbSAqLzsgfTsKIAkJN0E4OUJCNjgyMzMxNjQzQTAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1E
ZWxlZ2F0ZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBODlCQjY2MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQbHVn
SW4ubW0gKi87IH07CkBAIC0yMzU4LDYgKzIzNTksNyBAQAogCQk3QTY2QkRCNzFFQUYxNTAxMDBD
Q0M5MjQgLyogc2V0LWxvbmctdGl0bGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJzZXQtbG9uZy10aXRsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2
QTJDNkYxRENDRjg3QjAwQzBEMDg1IC8qIExvY2FsU3RvcmFnZVF1aXJrVGVzdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVF1aXJrVGVzdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2QTJDNzExRENDRkIwMjAwQzBEMDg1
IC8qIExvY2FsU3RvcmFnZVF1aXJrRW5hYmxlZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBNzZDMzkxMjVGNzBGNkYwMDg2MTNGNSAvKiBBcmd1bWVudENvZGVyc0NvY29h
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVu
dENvZGVyc0NvY29hVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBN0Iw
RTdFMUVBRkU0NTQwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExpbWl0VGl0bGVTaXplLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTg5QkI2NTIzMzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxl
Rm9ybURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTg5QkI2NjIz
MzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3Miw2ICszMjc0LDcgQEAKIAkJCQky
REU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3
OThCODEyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5
N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAorCQkJCTdBNzZDMzkx
MjVGNzBGNkYwMDg2MTNGNSAvKiBBcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0gKi8sCiAJCQkJ
NTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8sCiAJCQkJODM0
MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
Lm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gKi8s
CkBAIC01MTY1LDYgKzUxNjgsNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBB
cHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdD
M0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0E3NkMzOTIyNUY3MEY2RjAwODYxM0Y1IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2FU
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAvKiBB
c3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4QzcyMDMyNjFDQTAwRjI2
OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Bcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2ZjN2JiZGFiN2M0M2E2YjhkM2Y4NDcyYmRiMDljYTU3NTg3YmZkNQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYVRlc3RzLm1tCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Lmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQg
PHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitzdGF0aWMgTlNTdHJpbmcgKmV4YW1wbGVVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBs
ZS5jb20vIjsKK3N0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OmV4YW1wbGVVUkxTdHJpbmddOworCitURVNUKEFyZ3VtZW50Q29kZXJzQ29jb2EsIE5TVVJMUmVx
dWVzdCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgTlNTdHJpbmcgKmVuY29k
ZWRVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBsZS5jb20vQSVDMyVBNyVDMyVBM28uaHRtbCI7
CisgICAgICAgIGF1dG8gcm91bmRUcmlwU3RyaW5nID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBD
RW5jb2RlRGVjb2RlT2JqZWN0OmVuY29kZWRVUkxTdHJpbmcgb2ZDbGFzczplbmNvZGVkVVJMU3Ry
aW5nLmNsYXNzXTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJvdW5kVHJpcFN0cmluZyk7Cisg
ICAgICAgIGlmICghcm91bmRUcmlwU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gZGVjb2RlZFN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihyb3Vu
ZFRyaXBTdHJpbmcudmFsdWUoKS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVk
U3RyaW5nIGlzRXF1YWxUb1N0cmluZzplbmNvZGVkVVJMU3RyaW5nXSk7CisKKyAgICAgICAgYXV0
byBlbmNvZGVkVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6ZW5jb2RlZFVSTFN0cmluZ107Cisg
ICAgICAgIGF1dG8gcm91bmRUcmlwVVJMID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBDRW5jb2Rl
RGVjb2RlT2JqZWN0OmVuY29kZWRVUkwgb2ZDbGFzczplbmNvZGVkVVJMLmNsYXNzXTsKKyAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKHJvdW5kVHJpcFVSTCk7CisgICAgICAgIGlmICghcm91bmRUcmlw
VVJMKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZGVjb2RlZFVSTCA9IGR5
bmFtaWNfb2JqY19jYXN0PE5TVVJMPihyb3VuZFRyaXBVUkwudmFsdWUoKS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkVVJMIGlzRXF1YWw6ZW5jb2RlZFVSTF0pOworCisgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmVu
Y29kZWRVUkwgY2FjaGVQb2xpY3k6TlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGEg
dGltZW91dEludGVydmFsOjU0MzIxXTsKKyAgICAgICAgcmVxdWVzdC5IVFRQU2hvdWxkSGFuZGxl
Q29va2llcyA9IE5POworICAgICAgICByZXF1ZXN0LmFsbG93c0NlbGx1bGFyQWNjZXNzID0gWUVT
OworICAgICAgICByZXF1ZXN0LmFsbG93c0NvbnN0cmFpbmVkTmV0d29ya0FjY2VzcyA9IFlFUzsK
KyAgICAgICAgcmVxdWVzdC5hbGxvd3NFeHBlbnNpdmVOZXR3b3JrQWNjZXNzID0gTk87CisgICAg
ICAgIHJlcXVlc3QubmV0d29ya1NlcnZpY2VUeXBlID0gTlNVUkxOZXR3b3JrU2VydmljZVR5cGVS
ZXNwb25zaXZlRGF0YTsKKworICAgICAgICBhdXRvIHJvdW5kVHJpcFJlcXVlc3QgPSBbV0tXZWJW
aWV3IF9yb3VuZFRyaXBJUENFbmNvZGVEZWNvZGVPYmplY3Q6cmVxdWVzdCBvZkNsYXNzOnJlcXVl
c3QuY2xhc3NdOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocm91bmRUcmlwUmVxdWVzdCk7Cisg
ICAgICAgIGlmICghcm91bmRUcmlwUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGRlY29kZWRSZXF1ZXN0ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNNdXRhYmxlVVJM
UmVxdWVzdD4ocm91bmRUcmlwUmVxdWVzdC52YWx1ZSgpLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKGRlY29kZWRSZXF1ZXN0KTsKKyAgICAgICAgaWYgKCFyb3VuZFRyaXBSZXF1ZXN0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkUmVx
dWVzdC5VUkwgaXNFcXVhbDplbmNvZGVkVVJMXSk7CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVk
UmVxdWVzdC5jYWNoZVBvbGljeSwgTlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGEp
OworICAgICAgICBFWFBFQ1RfRE9VQkxFX0VRKGRlY29kZWRSZXF1ZXN0LnRpbWVvdXRJbnRlcnZh
bCwgNTQzMjEpOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZFJlcXVlc3QuSFRUUFNob3VsZEhh
bmRsZUNvb2tpZXMsIE5PKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRSZXF1ZXN0LmFsbG93
c0NvbnN0cmFpbmVkTmV0d29ya0FjY2VzcywgWUVTKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29k
ZWRSZXF1ZXN0LmFsbG93c0V4cGVuc2l2ZU5ldHdvcmtBY2Nlc3MsIE5PKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRlY29kZWRSZXF1ZXN0Lm5ldHdvcmtTZXJ2aWNlVHlwZSwgTlNVUkxOZXR3b3JrU2Vy
dmljZVR5cGVSZXNwb25zaXZlRGF0YSk7CisKKyAgICAgICAgYXV0byBvdGhlclVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9qb2hubnk6cDRzc3cwcmRAd3d3LmV4YW1wbGUuY29t
OjQ0My9zY3JpcHQuZXh0O3BhcmFtPXZhbHVlP3F1ZXJ5PXZhbHVlI3JlZiJdOworICAgICAgICBh
dXRvIHJvdW5kVHJpcE90aGVyVVJMID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBDRW5jb2RlRGVj
b2RlT2JqZWN0Om90aGVyVVJMIG9mQ2xhc3M6b3RoZXJVUkwuY2xhc3NdOworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwocm91bmRUcmlwT3RoZXJVUkwpOworICAgICAgICBpZiAoIXJvdW5kVHJpcE90
aGVyVVJMKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZGVjb2RlZE90aGVy
VVJMID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNVUkw+KHJvdW5kVHJpcE90aGVyVVJMLnZhbHVlKCku
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZGVjb2RlZE90aGVyVVJMKTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVkT3RoZXJVUkwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
RVhQRUNUX1RSVUUoW2RlY29kZWRPdGhlclVSTCBpc0VxdWFsOm90aGVyVVJMXSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0
dHBzIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLnVzZXIgaXNFcXVh
bFRvU3RyaW5nOkAiam9obm55Il0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVy
VVJMLnBhc3N3b3JkIGlzRXF1YWxUb1N0cmluZzpAInA0c3N3MHJkIl0pOworICAgICAgICBFWFBF
Q1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLmhvc3QgaXNFcXVhbFRvU3RyaW5nOkAid3d3LmV4YW1w
bGUuY29tIl0pOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZE90aGVyVVJMLnBvcnQuaW50ZWdl
clZhbHVlLCA0NDMpOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLnBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiL3NjcmlwdC5leHQ7cGFyYW09dmFsdWUiXSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwucXVlcnkgaXNFcXVhbFRvU3RyaW5nOkAicXVlcnk9
dmFsdWUiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwuZnJhZ21lbnQg
aXNFcXVhbFRvU3RyaW5nOkAicmVmIl0pOworICAgIH0KK30KKworI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCitURVNUKEFyZ3VtZW50Q29k
ZXJzQ29jb2EsIFBheW1lbnRTZXR1cFNlcmlhbGl6YXRpb24pCit7CisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyNlbmRpZgor
CisgICAgICAgIE5TU3RyaW5nICp0ZXN0TWVyY2hhbnRJZGVudGlmaWVyID0gQCJUZXN0IE1lcmNo
YW50IElkZW50aWZpZXIiOworICAgICAgICBOU1N0cmluZyAqdGVzdFJlZmVycmVySWRlbnRpZmll
ciA9IEAiVGVzdCBSZWZlcnJlciBJZGVudGlmaWVyIjsKKyAgICAgICAgTlNTdHJpbmcgKnRlc3RT
aWduYXR1cmUgPSBAIlRlc3QgU2lnbmF0dXJlIjsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVyY2hhbnRJZGVudGlm
aWVyID0gdGVzdE1lcmNoYW50SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5vcmlnaW5hdGluZ1VSTCA9IGV4YW1wbGVVUkw7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkucmVmZXJyZXJJZGVudGlmaWVyID0gdGVzdFJlZmVycmVySWRlbnRpZmllcjsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5zaWduYXR1cmUgPSB0ZXN0U2lnbmF0dXJlOworCisgICAgICAg
IGF1dG8gcm91bmRUcmlwQ29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXcgX3JvdW5kVHJpcElQQ0Vu
Y29kZURlY29kZU9iamVjdDpjb25maWd1cmF0aW9uLmdldCgpIG9mQ2xhc3M6Y29uZmlndXJhdGlv
bi5nZXQoKS5jbGFzc107CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyb3VuZFRyaXBDb25maWd1
cmF0aW9uKTsKKyAgICAgICAgaWYgKCFyb3VuZFRyaXBDb25maWd1cmF0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiAqZGVjb2Rl
ZENvbmZpZ3VyYXRpb24gPSAoUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uICopcm91bmRUcmlw
Q29uZmlndXJhdGlvbi52YWx1ZSgpLmdldCgpOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZENv
bmZpZ3VyYXRpb24uY2xhc3MsIFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3MoKSk7CisgICAgICAgIAorICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZENvbmZpZ3VyYXRp
b24ubWVyY2hhbnRJZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzp0ZXN0TWVyY2hhbnRJZGVudGlm
aWVyXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkQ29uZmlndXJhdGlvbi5vcmlnaW5h
dGluZ1VSTCBpc0VxdWFsVG86ZXhhbXBsZVVSTF0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVj
b2RlZENvbmZpZ3VyYXRpb24ucmVmZXJyZXJJZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzp0ZXN0
UmVmZXJyZXJJZGVudGlmaWVyXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkQ29uZmln
dXJhdGlvbi5zaWduYXR1cmUgaXNFcXVhbFRvU3RyaW5nOnRlc3RTaWduYXR1cmVdKTsKKyAgICB9
Cit9CitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorI2VuZGlmCisKK30K
</data>
<flag name="commit-queue"
          id="441968"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422790</attachid>
            <date>2021-03-09 20:36:03 -0800</date>
            <delta_ts>2021-03-10 16:34:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222957-20210309203602.patch</filename>
            <type>text/plain</type>
            <size>16009</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk3MjZkMGI1NDEyZjdlN2Fl
NDk2YmVlNTI2NjE0NDhmZTBmZDg4YWYuLjdkNWM5MGIzM2ZlMTIwMGQ1ZDgwZGRmMzY4OWY2N2I0
MGVhM2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDMtMDkgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgdGVzdHMg
Zm9yIEFyZ3VtZW50Q29kZXJzQ29jb2EKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjk1NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUyMDEzMTE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cg
VGVzdFdlYktpdEFQSSB0byBleGVyY2lzZSB0aGUgSVBDIEVuY29kZXIgYW5kIERlY29kZXIgc28g
dGhhdCB3ZSBjYW4gZXhlcmNpc2UgdGhlc2UgaW1wb3J0YW50IGNvZGUgcGF0aHMuCisgICAgICAg
IFdlIGV4cG9zZSBhIHNpbmdsZSBuZXcgbWV0aG9kIG9uIFdLV2ViVmlldyAoV0tUZXN0aW5nKSB0
byBhbGxvdyB1cyB0byB0ZXN0IGEgcm91bmQtdHJpcCBwYXNzIHRocm91Z2ggdGhlCisgICAgICAg
IGVuY29kZXIgYW5kIGRlY29kZXIuCisKKyAgICAgICAgVGVzdGVkIGJ5IG5ldyBUZXN0V2ViS2l0
QVBJIFRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
VGVzdGluZy5tbToKKyAgICAgICAgKCtbV0tXZWJWaWV3IF9yb3VuZFRyaXBJUENFbmNvZGVEZWNv
ZGVPYmplY3Q6b2ZDbGFzczpdKTogQWRkZWQuCisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWZlcmVuY2VzIGRvIG5vdCBuZWVkIHRvIGJl
IHBhc3NlZCB0byB0aGUgV2ViUHJvY2VzcyB2aWEgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBz
aW5jZSB0aGUgc3RvcmUgYWxyZWFkeSBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAppbmRl
eCA2MmU0NjcxNDRlOTE5NGViMGE2ODJhMDhhMjg0ZDU5NWY5NWUzZDk4Li45NGY2ZDk5YjMwMzdj
MjM4ZTJhYzAwMDk4NmRmNDc4ZTI1NTUxNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw2ICsyNiwxMSBAQAogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1Mu
aCIKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nTWFjLmgiCiAKKyNpZmRlZiBf
X2NwbHVzcGx1cworI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjZW5kaWYKKwogdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdBdWRpb1JvdXRp
bmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRy
YXRpb25TdGF0dXNQZW5kaW5nLApAQCAtOTYsNCArMTAxLDggQEAgc3RydWN0IFdLQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToo
dm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9p
ZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIAorI2lmZGVmIF9fY3BsdXNwbHVzCisrIChP
cHRpb25hbDxSZXRhaW5QdHI8aWQ+Pilfcm91bmRUcmlwSVBDRW5jb2RlRGVjb2RlT2JqZWN0Oihp
ZCl0ZXN0T2JqZWN0IG9mQ2xhc3M6KENsYXNzKWNsYXNzVHlwZTsKKyNlbmRpZgorCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVz
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0
aW5nLm1tCmluZGV4IGFkMDg0ZDUyZjJiODZlZjcwNDExZmZmNWI3YzdjNGNjMGRmN2JjNzQuLmNk
YmE1Y2ZmNDE3M2I4YzYyZmRmOTZhMTRmNWNmN2UxYTQ2NzNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oIgogCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCiAjaW1w
b3J0ICJBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCiAjaW1wb3J0ICJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmgiCkBAIC0zNDcsNCArMzQ4LDE2IEBAIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0
aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwogfQogCisr
IChPcHRpb25hbDxSZXRhaW5QdHI8aWQ+Pilfcm91bmRUcmlwSVBDRW5jb2RlRGVjb2RlT2JqZWN0
OihpZCl0ZXN0T2JqZWN0IG9mQ2xhc3M6KENsYXNzKWNsYXNzVHlwZQoreworICAgIGF1dG8gZW5j
b2RlciA9IElQQzo6RW5jb2RlcihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0
LCAwKTsKKyAgICBlbmNvZGVyIDw8IHRlc3RPYmplY3Q7CisKKyAgICBhdXRvIGRlY29kZXIgPSBJ
UEM6OkRlY29kZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSwgbnVsbHB0ciwgeyB9KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gSVBDOjpkZWNvZGVPYmplY3QoKmRlY29kZXIsIEBbY2xh
c3NUeXBlXSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAyMDY0ZTg2M2Q3MDgzYzhjMzcwN2RlMWE4ZTY2OGMzOTliYjgyNTk3
Li44ZGNlNDFhZTNkMTMyMGExOTUzZDhhNzMxNWJjMGYwMTlmYTA3NWQxIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMDMtMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBBZGQgdGVzdHMgZm9yIEFyZ3VtZW50Q29kZXJzQ29jb2EKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk1NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzUyMDEzMTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMgZm9yIGEgaGFuZGZ1bCBvZiBDb2NvYSB0eXBlcyB0
aGF0IGhhdmUgdHJpZ2dlcmVkIGJ1Z3MgaW4gcmVjZW50IHdlZWtzLiBUaGlzCisgICAgICAgIHdv
cmsgaXMgbWVhbnQgYXMgYSBmaXJzdCBzdGVwIHdpdGggbW9yZSB0ZXN0cyB0byBiZSBhZGRlZC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIxLTAzLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW90aW9uTWFyayBzY29yZXMgYXJlIHN1cGVyIHNlbnNpdGl2ZSB0
byBhIHNpbmdsZSBsb25nIGZyYW1lCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NzM1OGFj
OTgwNGI5ODU5YjcyZWIyNGQ4NmZjNWNhOWExYzI5NDguLmZiZjllZDY5YjFjZmU5NjE3OGJiZTNl
OGM0NGNjYjkzYzc0N2Y2MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDgsNiArNTQ4
LDcgQEAKIAkJN0E2NkJEQjgxRUFGMThENTAwQ0NDOTI0IC8qIHNldC1sb25nLXRpdGxlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2
NkJEQjcxRUFGMTUwMTAwQ0NDOTI0IC8qIHNldC1sb25nLXRpdGxlLmh0bWwgKi87IH07CiAJCTdB
NkEyQzcwMURDQ0ZBOEMwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rlc3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTZBMkM2RjFEQ0NGODdC
MDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tICovOyB9OwogCQk3QTZBMkM3MjFE
Q0NGQjUyMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVkLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2QTJDNzExREND
RkIwMjAwQzBEMDg1IC8qIExvY2FsU3RvcmFnZVF1aXJrRW5hYmxlZC5odG1sICovOyB9OworCQk3
QTc2QzM5MjI1RjcwRjZGMDA4NjEzRjUgLyogQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NkMzOTEyNUY3
MEY2RjAwODYxM0Y1IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2FUZXN0cy5tbSAqLzsgfTsKIAkJN0E3
QjBFN0YxRUFGRTRDMzAwNkFCOEFFIC8qIExpbWl0VGl0bGVTaXplLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3QjBFN0UxRUFGRTQ1NDAwNkFCOEFF
IC8qIExpbWl0VGl0bGVTaXplLm1tICovOyB9OwogCQk3QTg5QkI2NzIzMzE2NDMyMDA0MkNCMUUg
LyogQnVuZGxlRm9ybURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E4OUJCNjUyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxl
Z2F0ZS5tbSAqLzsgfTsKIAkJN0E4OUJCNjgyMzMxNjQzQTAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1E
ZWxlZ2F0ZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBODlCQjY2MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQbHVn
SW4ubW0gKi87IH07CkBAIC0yMzU4LDYgKzIzNTksNyBAQAogCQk3QTY2QkRCNzFFQUYxNTAxMDBD
Q0M5MjQgLyogc2V0LWxvbmctdGl0bGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJzZXQtbG9uZy10aXRsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2
QTJDNkYxRENDRjg3QjAwQzBEMDg1IC8qIExvY2FsU3RvcmFnZVF1aXJrVGVzdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVF1aXJrVGVzdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2QTJDNzExRENDRkIwMjAwQzBEMDg1
IC8qIExvY2FsU3RvcmFnZVF1aXJrRW5hYmxlZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gTG9jYWxTdG9yYWdlUXVpcmtFbmFibGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBNzZDMzkxMjVGNzBGNkYwMDg2MTNGNSAvKiBBcmd1bWVudENvZGVyc0NvY29h
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVu
dENvZGVyc0NvY29hVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBN0Iw
RTdFMUVBRkU0NTQwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExpbWl0VGl0bGVTaXplLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTg5QkI2NTIzMzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxl
Rm9ybURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTg5QkI2NjIz
MzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3Miw2ICszMjc0LDcgQEAKIAkJCQky
REU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3
OThCODEyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5
N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAorCQkJCTdBNzZDMzkx
MjVGNzBGNkYwMDg2MTNGNSAvKiBBcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0gKi8sCiAJCQkJ
NTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8sCiAJCQkJODM0
MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
Lm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0gKi8s
CkBAIC01MTY1LDYgKzUxNjgsNyBAQAogCQkJCUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBB
cHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdD
M0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0E3NkMzOTIyNUY3MEY2RjAwODYxM0Y1IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2FU
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQjQwRDlFMjNBQzk2MjQwMEUwNTI0MSAvKiBB
c3luY0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0MTM4QzcyMDMyNjFDQTAwRjI2
OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYVRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Bcmd1bWVudENvZGVyc0NvY29hVGVzdHMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTM1M2U4ZmVkY2Q3MzA2ZGM4ZjBkMGQ1N2FhNzQxNzA5MjM4MzQ3YgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYVRlc3RzLm1tCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Lmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQg
PHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitzdGF0aWMgTlNTdHJpbmcgKmV4YW1wbGVVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBs
ZS5jb20vIjsKK3N0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OmV4YW1wbGVVUkxTdHJpbmddOworCitURVNUKEFyZ3VtZW50Q29kZXJzQ29jb2EsIE5TVVJMUmVx
dWVzdCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgTlNTdHJpbmcgKmVuY29k
ZWRVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBsZS5jb20vQSVDMyVBNyVDMyVBM28uaHRtbCI7
CisgICAgICAgIGF1dG8gcm91bmRUcmlwU3RyaW5nID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBD
RW5jb2RlRGVjb2RlT2JqZWN0OmVuY29kZWRVUkxTdHJpbmcgb2ZDbGFzczplbmNvZGVkVVJMU3Ry
aW5nLmNsYXNzXTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJvdW5kVHJpcFN0cmluZyk7Cisg
ICAgICAgIGlmICghcm91bmRUcmlwU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gZGVjb2RlZFN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihyb3Vu
ZFRyaXBTdHJpbmcudmFsdWUoKS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVk
U3RyaW5nIGlzRXF1YWxUb1N0cmluZzplbmNvZGVkVVJMU3RyaW5nXSk7CisKKyAgICAgICAgYXV0
byBlbmNvZGVkVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6ZW5jb2RlZFVSTFN0cmluZ107Cisg
ICAgICAgIGF1dG8gcm91bmRUcmlwVVJMID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBDRW5jb2Rl
RGVjb2RlT2JqZWN0OmVuY29kZWRVUkwgb2ZDbGFzczplbmNvZGVkVVJMLmNsYXNzXTsKKyAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKHJvdW5kVHJpcFVSTCk7CisgICAgICAgIGlmICghcm91bmRUcmlw
VVJMKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZGVjb2RlZFVSTCA9IGR5
bmFtaWNfb2JqY19jYXN0PE5TVVJMPihyb3VuZFRyaXBVUkwudmFsdWUoKS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkVVJMIGlzRXF1YWw6ZW5jb2RlZFVSTF0pOworCisgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmVu
Y29kZWRVUkwgY2FjaGVQb2xpY3k6TlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGEg
dGltZW91dEludGVydmFsOjU0MzIxXTsKKyAgICAgICAgcmVxdWVzdC5IVFRQU2hvdWxkSGFuZGxl
Q29va2llcyA9IE5POworICAgICAgICByZXF1ZXN0LmFsbG93c0NlbGx1bGFyQWNjZXNzID0gWUVT
OworICAgICAgICByZXF1ZXN0LmFsbG93c0NvbnN0cmFpbmVkTmV0d29ya0FjY2VzcyA9IFlFUzsK
KyAgICAgICAgcmVxdWVzdC5hbGxvd3NFeHBlbnNpdmVOZXR3b3JrQWNjZXNzID0gTk87CisgICAg
ICAgIHJlcXVlc3QubmV0d29ya1NlcnZpY2VUeXBlID0gTlNVUkxOZXR3b3JrU2VydmljZVR5cGVS
ZXNwb25zaXZlRGF0YTsKKworICAgICAgICBhdXRvIHJvdW5kVHJpcFJlcXVlc3QgPSBbV0tXZWJW
aWV3IF9yb3VuZFRyaXBJUENFbmNvZGVEZWNvZGVPYmplY3Q6cmVxdWVzdCBvZkNsYXNzOnJlcXVl
c3QuY2xhc3NdOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocm91bmRUcmlwUmVxdWVzdCk7Cisg
ICAgICAgIGlmICghcm91bmRUcmlwUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGRlY29kZWRSZXF1ZXN0ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNNdXRhYmxlVVJM
UmVxdWVzdD4ocm91bmRUcmlwUmVxdWVzdC52YWx1ZSgpLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKGRlY29kZWRSZXF1ZXN0KTsKKyAgICAgICAgaWYgKCFyb3VuZFRyaXBSZXF1ZXN0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkUmVx
dWVzdC5VUkwgaXNFcXVhbDplbmNvZGVkVVJMXSk7CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVk
UmVxdWVzdC5jYWNoZVBvbGljeSwgTlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGEp
OworICAgICAgICBFWFBFQ1RfRE9VQkxFX0VRKGRlY29kZWRSZXF1ZXN0LnRpbWVvdXRJbnRlcnZh
bCwgNTQzMjEpOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZFJlcXVlc3QuSFRUUFNob3VsZEhh
bmRsZUNvb2tpZXMsIE5PKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRSZXF1ZXN0LmFsbG93
c0NvbnN0cmFpbmVkTmV0d29ya0FjY2VzcywgWUVTKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29k
ZWRSZXF1ZXN0LmFsbG93c0V4cGVuc2l2ZU5ldHdvcmtBY2Nlc3MsIE5PKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRlY29kZWRSZXF1ZXN0Lm5ldHdvcmtTZXJ2aWNlVHlwZSwgTlNVUkxOZXR3b3JrU2Vy
dmljZVR5cGVSZXNwb25zaXZlRGF0YSk7CisKKyAgICAgICAgYXV0byBvdGhlclVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9qb2hubnk6cDRzc3cwcmRAd3d3LmV4YW1wbGUuY29t
OjQ0My9zY3JpcHQuZXh0O3BhcmFtPXZhbHVlP3F1ZXJ5PXZhbHVlI3JlZiJdOworICAgICAgICBh
dXRvIHJvdW5kVHJpcE90aGVyVVJMID0gW1dLV2ViVmlldyBfcm91bmRUcmlwSVBDRW5jb2RlRGVj
b2RlT2JqZWN0Om90aGVyVVJMIG9mQ2xhc3M6b3RoZXJVUkwuY2xhc3NdOworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwocm91bmRUcmlwT3RoZXJVUkwpOworICAgICAgICBpZiAoIXJvdW5kVHJpcE90
aGVyVVJMKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gZGVjb2RlZE90aGVy
VVJMID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNVUkw+KHJvdW5kVHJpcE90aGVyVVJMLnZhbHVlKCku
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZGVjb2RlZE90aGVyVVJMKTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVkT3RoZXJVUkwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
RVhQRUNUX1RSVUUoW2RlY29kZWRPdGhlclVSTCBpc0VxdWFsOm90aGVyVVJMXSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0
dHBzIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLnVzZXIgaXNFcXVh
bFRvU3RyaW5nOkAiam9obm55Il0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVy
VVJMLnBhc3N3b3JkIGlzRXF1YWxUb1N0cmluZzpAInA0c3N3MHJkIl0pOworICAgICAgICBFWFBF
Q1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLmhvc3QgaXNFcXVhbFRvU3RyaW5nOkAid3d3LmV4YW1w
bGUuY29tIl0pOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZE90aGVyVVJMLnBvcnQuaW50ZWdl
clZhbHVlLCA0NDMpOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZE90aGVyVVJMLnBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiL3NjcmlwdC5leHQ7cGFyYW09dmFsdWUiXSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwucXVlcnkgaXNFcXVhbFRvU3RyaW5nOkAicXVlcnk9
dmFsdWUiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkT3RoZXJVUkwuZnJhZ21lbnQg
aXNFcXVhbFRvU3RyaW5nOkAicmVmIl0pOworICAgIH0KK30KKworI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCitURVNUKEFyZ3VtZW50Q29k
ZXJzQ29jb2EsIFBheW1lbnRTZXR1cFNlcmlhbGl6YXRpb24pCit7CisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBpZiAoIVBBTDo6Z2V0UEtQYXltZW50
U2V0dXBDb25maWd1cmF0aW9uQ2xhc3MoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyNlbmRpZgor
CisgICAgICAgIE5TU3RyaW5nICp0ZXN0TWVyY2hhbnRJZGVudGlmaWVyID0gQCJUZXN0IE1lcmNo
YW50IElkZW50aWZpZXIiOworICAgICAgICBOU1N0cmluZyAqdGVzdFJlZmVycmVySWRlbnRpZmll
ciA9IEAiVGVzdCBSZWZlcnJlciBJZGVudGlmaWVyIjsKKyAgICAgICAgTlNTdHJpbmcgKnRlc3RT
aWduYXR1cmUgPSBAIlRlc3QgU2lnbmF0dXJlIjsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uSW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVyY2hhbnRJZGVudGlm
aWVyID0gdGVzdE1lcmNoYW50SWRlbnRpZmllcjsKKyAgICAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5vcmlnaW5hdGluZ1VSTCA9IGV4YW1wbGVVUkw7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkucmVmZXJyZXJJZGVudGlmaWVyID0gdGVzdFJlZmVycmVySWRlbnRpZmllcjsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5zaWduYXR1cmUgPSB0ZXN0U2lnbmF0dXJlOworCisgICAgICAg
IGF1dG8gcm91bmRUcmlwQ29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXcgX3JvdW5kVHJpcElQQ0Vu
Y29kZURlY29kZU9iamVjdDpjb25maWd1cmF0aW9uLmdldCgpIG9mQ2xhc3M6Y29uZmlndXJhdGlv
bi5nZXQoKS5jbGFzc107CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyb3VuZFRyaXBDb25maWd1
cmF0aW9uKTsKKyAgICAgICAgaWYgKCFyb3VuZFRyaXBDb25maWd1cmF0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiAqZGVjb2Rl
ZENvbmZpZ3VyYXRpb24gPSAoUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uICopcm91bmRUcmlw
Q29uZmlndXJhdGlvbi52YWx1ZSgpLmdldCgpOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZENv
bmZpZ3VyYXRpb24uY2xhc3MsIFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3MoKSk7CisgICAgICAgIAorICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZENvbmZpZ3VyYXRp
b24ubWVyY2hhbnRJZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzp0ZXN0TWVyY2hhbnRJZGVudGlm
aWVyXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWNvZGVkQ29uZmlndXJhdGlvbi5vcmlnaW5h
dGluZ1VSTCBpc0VxdWFsOmV4YW1wbGVVUkxdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2RlY29k
ZWRDb25maWd1cmF0aW9uLnJlZmVycmVySWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6dGVzdFJl
ZmVycmVySWRlbnRpZmllcl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVjb2RlZENvbmZpZ3Vy
YXRpb24uc2lnbmF0dXJlIGlzRXF1YWxUb1N0cmluZzp0ZXN0U2lnbmF0dXJlXSk7CisgICAgfQor
fQorQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKKyNlbmRpZgorCit9Cg==
</data>
<flag name="review"
          id="441962"
          type_id="1"
          status="?"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="441969"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>