<?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>187748</bug_id>
          
          <creation_ts>2018-07-17 23:27:53 -0700</creation_ts>
          <short_desc>Add SPI to defer running async script until after document load</short_desc>
          <delta_ts>2018-07-18 10:17:21 -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>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1442929</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-17 23:27:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/42317378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442934</commentid>
    <comment_count>1</comment_count>
      <attachid>345229</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-17 23:52:42 -0700</bug_when>
    <thetext>Created attachment 345229
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442935</commentid>
    <comment_count>2</comment_count>
      <attachid>345229</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-07-18 00:00:46 -0700</bug_when>
    <thetext>Comment on attachment 345229
First pass

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

Seems reasonable but I’d like a rniwa or someone like that review.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:76
&gt; +@property (nonatomic, setter=_setShouldRunAsynchronousScriptsAfterDocumentLoad:) BOOL _shouldRunAsynchronousScriptsAfterDocumentLoad WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

maybe shouldDeferAsynchronousScriptsUntilAfterDocumentLoad? Or maybe your name is ok. something is a little weird</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442940</commentid>
    <comment_count>3</comment_count>
      <attachid>345229</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-18 00:14:46 -0700</bug_when>
    <thetext>Comment on attachment 345229
First pass

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

&gt; Source/WebCore/dom/ScriptRunner.cpp:109
&gt; +        if (m_document.shouldDeferAsynchronousScriptsUntilParsingFinishes())
&gt; +            m_scriptsToExecuteAfterDocumentFinishesParsing.append(pendingAsyncScript);
&gt; +        else
&gt; +            m_scriptsToExecuteSoon.append(pendingAsyncScript);

I don&apos;t think it makes sense to have a separate vector for this since 
m_scriptsToExecuteAfterDocumentFinishesParsing and m_scriptsToExecuteSoon
should never have entires at the same time.

Instead, ScriptRunner::timerFired() should check m_document.shouldDeferAsynchronousScriptsUntilParsingFinishes()
and avoid executing scripts in m_scriptsToExecuteSoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442941</commentid>
    <comment_count>4</comment_count>
      <attachid>345229</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-18 00:15:51 -0700</bug_when>
    <thetext>Comment on attachment 345229
First pass

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RunScriptAfterDocumentLoad.mm:39
&gt; +    &quot;&lt;head&gt;&lt;script src=&apos;async.js&apos; async&gt;&lt;/script&gt;&lt;/head&gt;&quot;

Make sure load event on this script element isn&apos;t fired until the parsing finishes as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443012</commentid>
    <comment_count>5</comment_count>
      <attachid>345229</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-18 08:39:48 -0700</bug_when>
    <thetext>Comment on attachment 345229
First pass

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

&gt;&gt; Source/WebCore/dom/ScriptRunner.cpp:109
&gt;&gt; +            m_scriptsToExecuteSoon.append(pendingAsyncScript);
&gt; 
&gt; I don&apos;t think it makes sense to have a separate vector for this since 
&gt; m_scriptsToExecuteAfterDocumentFinishesParsing and m_scriptsToExecuteSoon
&gt; should never have entires at the same time.
&gt; 
&gt; Instead, ScriptRunner::timerFired() should check m_document.shouldDeferAsynchronousScriptsUntilParsingFinishes()
&gt; and avoid executing scripts in m_scriptsToExecuteSoon.

Good idea. This makes the patch even simpler, as well!

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:76
&gt;&gt; +@property (nonatomic, setter=_setShouldRunAsynchronousScriptsAfterDocumentLoad:) BOOL _shouldRunAsynchronousScriptsAfterDocumentLoad WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; maybe shouldDeferAsynchronousScriptsUntilAfterDocumentLoad? Or maybe your name is ok. something is a little weird

I like shouldDeferAsynchronousScriptsUntilAfterDocumentLoad better too! Renamed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RunScriptAfterDocumentLoad.mm:39
&gt;&gt; +    &quot;&lt;head&gt;&lt;script src=&apos;async.js&apos; async&gt;&lt;/script&gt;&lt;/head&gt;&quot;
&gt; 
&gt; Make sure load event on this script element isn&apos;t fired until the parsing finishes as well.

👍 Added this to my test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443015</commentid>
    <comment_count>6</comment_count>
      <attachid>345250</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-18 08:48:59 -0700</bug_when>
    <thetext>Created attachment 345250
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443036</commentid>
    <comment_count>7</comment_count>
      <attachid>345250</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-18 10:08:53 -0700</bug_when>
    <thetext>Comment on attachment 345250
Patch for EWS

Clearing flags on attachment: 345250

Committed r233915: &lt;https://trac.webkit.org/changeset/233915&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345229</attachid>
            <date>2018-07-17 23:52:42 -0700</date>
            <delta_ts>2018-07-18 00:14:46 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-187748-20180717235242.patch</filename>
            <type>text/plain</type>
            <size>24699</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE3NjZhOGQzNDI3Zjk5
NTMyNjBhZGY2YTBjODE3OGYwYzczMTg1NS4uOGM1Nzc2N2MyNDE1M2EwMmQ0ZjI4NDZkZmRjMWY2
MzRlNDZkYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA3LTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
ZGVmZXIgcnVubmluZyBhc3luYyBzY3JpcHQgdW50aWwgYWZ0ZXIgZG9jdW1lbnQgbG9hZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NzQ4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MjMxNzM3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPbiB3YXRjaE9TLCB3ZSBjdXJyZW50bHkgb2JzZXJ2ZSB0
aGF0IHRpbWUtY29uc3VtaW5nIGFzeW5jIHNjcmlwdHMgY2FuIGJsb2NrIHRoZSBmaXJzdCBwYWlu
dCBvZiBSZWFkZXIsIGxlYXZpbmcKKyAgICAgICAgdGhlIHVzZXIgd2l0aCBhIGJsYW5rIHNjcmVl
biBmb3IgdGVucyBvZiBzZWNvbmRzLiBPbmUgd2F5IHRvIG1pdGlnYXRlIHRoaXMgaXMgdG8gZGVm
ZXIgYXN5bmMgc2NyaXB0IGV4ZWN1dGlvbgorICAgICAgICB1bnRpbCBhZnRlciBkb2N1bWVudCBs
b2FkIChpLmUuIHRoZSBzYW1lIHRpbWluZyBhcyBET01Db250ZW50TG9hZGVkKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYW4gU1BJIGNvbmZpZ3VyYXRpb24gYWxsb3dpbmcgaW50
ZXJuYWwgY2xpZW50cyB0byBkZWZlciBleGVjdXRpb24gb2YgYXN5bmNocm9ub3VzIHNjcmlwdAor
ICAgICAgICB1bnRpbCBhZnRlciBkb2N1bWVudCBsb2FkOyB0aGlzLCBpbiBjb21iaW5hdGlvbiB3
aXRoIHRoZSBwYXJzZXIgeWllbGRpbmcgdG9rZW4gaW50cm9kdWNlZCBpbiByMjMzODkxLCBhbGxv
d3MKKyAgICAgICAgU2FmYXJpIG9uIHdhdGNoT1MgdG8gYXZvaWQgYmVpbmcgYmxvY2tlZCBvbiBz
bG93IHNjcmlwdCBleGVjdXRpb24gYmVmb3JlIHRoZSBmaXJzdCBwYWludCBvZiB0aGUgUmVhZGVy
IHBhZ2Ugb24KKyAgICAgICAgbW9zdCBhcnRpY2xlLWxpa2UgcGFnZXMuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2Fk
LkV4ZWN1dGlvbk9yZGVyT2ZTY3JpcHRzSW5Eb2N1bWVudAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGREZWZlckFzeW5jaHJv
bm91c1NjcmlwdHNVbnRpbFBhcnNpbmdGaW5pc2hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKworICAgICAgICBOb3RpZnkgU2NyaXB0UnVu
bmVyIHdoZW4gdGhlIERvY3VtZW50IGhhcyBmaW5pc2hlZCBwYXJzaW5nLCBhbmQgaXMgYWJvdXQg
dG8gZmlyZSBET01Db250ZW50TG9hZGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRS
dW5uZXI6On5TY3JpcHRSdW5uZXIpOgorCisgICAgICAgIEFjY291bnQgZm9yIHNjcmlwdHMgZGVm
ZXJyZWQgdW50aWwgYWZ0ZXIgZG9jdW1lbnQgbG9hZCB3aGVuIHJlc3RvcmluZyB0aGUgRG9jdW1l
bnQncyBsb2FkIGV2ZW50IGRlbGF5IGNvdW50LgorCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRS
dW5uZXI6OmRvY3VtZW50RmluaXNoZWRQYXJzaW5nKToKKworICAgICAgICBXaGVuIHRoZSBkb2N1
bWVudCBpcyBmaW5pc2hlZCBwYXJzaW5nLCBtaWdyYXRlIHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRz
IGRlZmVycmVkIHVudGlsIGRvY3VtZW50IGxvYWQgb3ZlciB0byB0aGUKKyAgICAgICAgbGlzdCBv
ZiBzY3JpcHRzIHNjaGVkdWxlZCBmb3IgZXhlY3V0aW9uLCBhbmQga2ljayBvZmYgdGhlIHNjcmlw
dCBleGVjdXRpb24gdGltZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6bm90
aWZ5RmluaXNoZWQpOgorCisgICAgICAgIFdoZW4gYSBwZW5kaW5nIHNjcmlwdCBpcyBmaW5pc2hl
ZCBsb2FkaW5nLCBhZGQgaXQgdG8gdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0byBkZWZlciB1bnRpbCBk
b2N1bWVudCBsb2FkIGlmIHRoZQorICAgICAgICBkb2N1bWVudCBpcyBwYXJzaW5nIC9hbmQvIHRo
ZSBuZXcgc2V0dGluZyBpcyBlbmFibGVkOyBvdGhlcndpc2UsIGp1c3QgYWRkIGl0IHRvIHRoZSBs
aXN0IG9mIHNjcmlwdHMgdG8gZXhlY3V0ZQorICAgICAgICBzb29uLiBOb3RlIHRoYXQgYXQgdGhl
IGVuZCBvZiB0aGlzIGZ1bmN0aW9uLCB3ZSBub3cgYHJlc3VtZSgpYCBpbnN0ZWFkIG9mIGFsd2F5
cyBraWNraW5nIG9mZiB0aGUgdGltZXIuIFRoaXMgaXMKKyAgICAgICAgYmVjYXVzZSwgaW4gdGhl
IGNhc2Ugd2hlcmUgd2UgZGVmZXIgdGhlIGluY29taW5nIHNjcmlwdCB1bnRpbCBhZnRlciBkb2N1
bWVudCBsb2FkLCB3ZSBtaWdodCBub3QgaGF2ZSBhbnkgcGVuZGluZworICAgICAgICBzY3JpcHRz
IHdlIG5lZWQgdG8gZXhlY3V0ZSBzb29uLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJpZ2dlciB0
aGUgdGltZXIuIFNpbmNlIGByZXN1bWUoKWAgY2hlY2tzCisgICAgICAgIGBoYXNQZW5kaW5nU2Ny
aXB0cygpYCBiZWZvcmUgc3RhcnRpbmcgdGhlIHRpbWVyLCB0aGlzIG1lYW5zIHdlIHdvbid0IHVu
bmVjZXNzYXJpbHkgZmlyZSB0aGUgdGltZXIgaW4gdGhlIGNhc2UKKyAgICAgICAgd2hlcmUgYXN5
bmMgc2NyaXB0cyBhcmUgYmVpbmcgZGVmZXJyZWQuCisKKyAgICAgICAgKiBkb20vU2NyaXB0UnVu
bmVyLmg6CisKKyAgICAgICAgTWFpbnRhaW4gYSBsaXN0IG9mIHNjcmlwdHMgdGhhdCBoYXZlIGZp
bmlzaGVkIGxvYWRpbmcsIGJ1dCB3aG9zZSBleGVjdXRpb24gaGFzIGJlZW4gZGVmZXJyZWQgdW50
aWwgYWZ0ZXIKKyAgICAgICAgZG9jdW1lbnQgbG9hZC4KKworICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MueWFtbDoKKworICAgICAgICBBZGQgYSBXZWJDb3JlIHNldHRpbmcgZm9yIHRoaXMgYmVoYXZp
b3IuCisKIDIwMTgtMDctMTcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbnN1cmUgdGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZUF0SW5kZXgoKSBjYW4gYmUg
dXNlZCBmcm9tIHNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUoKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmE3
OTI1YmJmYTU5MzJmODU3MzYxYWRhMzBjY2YzODRkNWVmOTRiNS4uZDc5N2U1NjAxNjM1OTlhNjI5
OGNiNDQ4ODk2ODI0NDM1OGMxYjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0w
Ny0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU1BJIHRvIGRlZmVyIHJ1bm5pbmcgYXN5bmMgc2NyaXB0IHVudGlsIGFmdGVyIGRvY3VtZW50
IGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Nzc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIzMTczNzg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBhIG5ldyBT
aG91bGRSdW5Bc3luY2hyb25vdXNTY3JpcHRzQWZ0ZXJEb2N1bWVudExvYWQgY29uZmlndXJhdGlv
biB0aGF0IGRldGVybWluZXMgd2hldGhlciBhc3luYworICAgICAgICBzY3JpcHQgZXhlY3V0aW9u
IHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBkb2N1bWVudCBsb2FkIChpLmUuIERPTUNvbnRlbnRM
b2FkZWQpLiBUaGlzIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgdG8KKyAgICAgICAgTk8gb24gYWxs
IHBsYXRmb3Jtcy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbC4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
aW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2hvdWxkUnVuQXN5bmNocm9u
b3VzU2NyaXB0c0FmdGVyRG9jdW1lbnRMb2FkXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldFNob3VsZFJ1bkFzeW5jaHJvbm91c1NjcmlwdHNBZnRlckRvY3VtZW50TG9h
ZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmg6CisKIDIwMTgtMDctMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBUdXJuIG9uIFBTT04gaW4gV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNTU2YWJjYWI0OTgwZmNlMzJhMjZiZGE1OWZhNDc1YTljZjhiNDhl
Ni4uMDgwZDUyZWI5Njc2OTg3NWVmMTE5Njk2YmQyMjM4NjYzN2ZlOTlmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC01MTkzLDYgKzUxOTMsMTEgQEAgdm9pZCBEb2N1bWVudDo6cG9wQ3Vy
cmVudFNjcmlwdCgpCiAgICAgbV9jdXJyZW50U2NyaXB0U3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Citib29sIERvY3VtZW50OjpzaG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbFBhcnNp
bmdGaW5pc2hlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNpbmcoKSAmJiBzZXR0aW5ncygp
LnNob3VsZFJ1bkFzeW5jaHJvbm91c1NjcmlwdHNBZnRlckRvY3VtZW50TG9hZCgpOworfQorCiAj
aWYgRU5BQkxFKFhTTFQpCiAKIHZvaWQgRG9jdW1lbnQ6OnNjaGVkdWxlVG9BcHBseVhTTFRyYW5z
Zm9ybXMoKQpAQCAtNTQyOSw2ICs1NDM0LDggQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKIAogICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKKyAgICBz
Y3JpcHRSdW5uZXIoKS0+ZG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcoKTsKKwogICAgIGlmICghbV9k
b2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCkKICAgICAgICAgbV9kb2N1
bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI5YjRmYzQ4NmExN2U2Yjc4MGY2MDNhNGFj
YmQ2ZWMxMjhlMzUwNmQuLjBlMmJiMzcwNTgyZjMzNDU2ZWI0ZmMwZDFjY2Y4MTI2OGMxNWIxNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05OTEsNiArOTkxLDggQEAgcHVibGljOgogICAgIHZv
aWQgcHVzaEN1cnJlbnRTY3JpcHQoSFRNTFNjcmlwdEVsZW1lbnQqKTsKICAgICB2b2lkIHBvcEN1
cnJlbnRTY3JpcHQoKTsKIAorICAgIGJvb2wgc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRz
VW50aWxQYXJzaW5nRmluaXNoZXMoKSBjb25zdDsKKwogI2lmIEVOQUJMRShYU0xUKQogICAgIHZv
aWQgc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5n
WFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIu
Y3BwCmluZGV4IDYyZTU2ZjJmYjQ5YmE0YTA0MGIyMzFjN2U1NzgyNzYyYzhmOGFmZTQuLjc1ZGQ1
OTQ0OTZlMTNhMjE5MGJjODM0MzIzMjljMjkzMjQ0NTNlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRSdW5uZXIuY3BwCkBAIC00MSwxMCArNDEsMTAgQEAgU2NyaXB0UnVubmVyOjpTY3JpcHRSdW5u
ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQog
ewotICAgIGZvciAoYXV0byYgcGVuZGluZ1NjcmlwdCA6IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24p
IHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHBlbmRpbmdTY3JpcHQpOworICAgIGF1dG8gbnVtYmVy
T2ZTY3JpcHRzUGVuZGluZ0V4ZWN1dGlvbiA9IG1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyRG9jdW1l
bnRGaW5pc2hlc1BhcnNpbmcuc2l6ZSgpICsgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5zaXplKCk7
CisgICAgd2hpbGUgKG51bWJlck9mU2NyaXB0c1BlbmRpbmdFeGVjdXRpb24tLSkKICAgICAgICAg
bV9kb2N1bWVudC5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7Ci0gICAgfQorCiAgICAg
Zm9yIChhdXRvJiBwZW5kaW5nU2NyaXB0IDogbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcikgewog
ICAgICAgICBpZiAocGVuZGluZ1NjcmlwdC0+d2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAgICAgICAg
ICBwZW5kaW5nU2NyaXB0LT5jbGVhckNsaWVudCgpOwpAQCAtODYsMTggKzg2LDMwIEBAIHZvaWQg
U2NyaXB0UnVubmVyOjpyZXN1bWUoKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogfQogCit2b2lkIFNjcmlwdFJ1bm5lcjo6ZG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcoKQorewor
ICAgIGlmIChtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlckRvY3VtZW50RmluaXNoZXNQYXJzaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5h
cHBlbmRWZWN0b3IobV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJEb2N1bWVudEZpbmlzaGVzUGFyc2lu
Zyk7CisgICAgbV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJEb2N1bWVudEZpbmlzaGVzUGFyc2luZy5j
bGVhcigpOworICAgIHJlc3VtZSgpOworfQorCiB2b2lkIFNjcmlwdFJ1bm5lcjo6bm90aWZ5Rmlu
aXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKIHsKICAgICBpZiAocGVuZGluZ1Nj
cmlwdC5lbGVtZW50KCkud2lsbEV4ZWN1dGVJbk9yZGVyKCkpCiAgICAgICAgIEFTU0VSVCghbV9z
Y3JpcHRzVG9FeGVjdXRlSW5PcmRlci5pc0VtcHR5KCkpOwogICAgIGVsc2UgewogICAgICAgICBB
U1NFUlQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLmNvbnRhaW5zKHBlbmRpbmdTY3JpcHQpKTsKLSAg
ICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3JpcHRz
LnRha2UocGVuZGluZ1NjcmlwdCktPnB0cigpKTsKKyAgICAgICAgYXV0byogcGVuZGluZ0FzeW5j
U2NyaXB0ID0gbV9wZW5kaW5nQXN5bmNTY3JpcHRzLnRha2UocGVuZGluZ1NjcmlwdCktPnB0cigp
OworICAgICAgICBpZiAobV9kb2N1bWVudC5zaG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNV
bnRpbFBhcnNpbmdGaW5pc2hlcygpKQorICAgICAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlQWZ0
ZXJEb2N1bWVudEZpbmlzaGVzUGFyc2luZy5hcHBlbmQocGVuZGluZ0FzeW5jU2NyaXB0KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQocGVu
ZGluZ0FzeW5jU2NyaXB0KTsKICAgICB9CiAgICAgcGVuZGluZ1NjcmlwdC5jbGVhckNsaWVudCgp
OwotCi0gICAgaWYgKCFtX2RvY3VtZW50Lmhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSkKLSAg
ICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICByZXN1bWUoKTsKIH0KIAogdm9p
ZCBTY3JpcHRSdW5uZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdFJ1bm5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCmlu
ZGV4IDY3ZWVjYmU4MDljZDA0M2QzYmFiMTc2ZjIxOTBjZjRmMjkzY2U5ZjIuLmIwYTE2NzU1Zjcw
ZjgyZGUxMDFjYTQ0MjczODUwMTJkYTY0MWY3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRSdW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVy
LmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1Bh
cnNlcigpIHsgc3VzcGVuZCgpOyB9CiAgICAgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsg
cmVzdW1lKCk7IH0KIAorICAgIHZvaWQgZG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcoKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIApAQCAtNjEsNiArNjMsNyBAQCBwcml2YXRl
OgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFZlY3RvcjxSZWY8UGVuZGluZ1Njcmlw
dD4+IG1fc2NyaXB0c1RvRXhlY3V0ZUluT3JkZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxQZW5kaW5n
U2NyaXB0Pj4gbV9zY3JpcHRzVG9FeGVjdXRlU29vbjsgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2V0LW9mLXNjcmlwdHMtdGhhdC13aWxsLWV4
ZWN1dGUtYXMtc29vbi1hcy1wb3NzaWJsZQorICAgIFZlY3RvcjxSZWZQdHI8UGVuZGluZ1Njcmlw
dD4+IG1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyRG9jdW1lbnRGaW5pc2hlc1BhcnNpbmc7CiAgICAg
SGFzaFNldDxSZWY8UGVuZGluZ1NjcmlwdD4+IG1fcGVuZGluZ0FzeW5jU2NyaXB0czsKICAgICBU
aW1lciBtX3RpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCBlNjVhOTEy
MDcyNWMwMzQ3ODc1NzA4ZGJiNjgzZjY0ZmE2NjhkN2FjLi4zYTMzMDZkNTQ3YTM1YTBkNjk2YWMx
ZWE4NTQ5N2Q2MzA0ODU0ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC03NTgs
MyArNzU4LDYgQEAgYWNjZXNzaWJpbGl0eUV2ZW50c0VuYWJsZWQ6CiAKIGluY29tcGxldGVJbWFn
ZUJvcmRlckVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCisKK3Nob3VsZFJ1bkFzeW5jaHJvbm91
c1NjcmlwdHNBZnRlckRvY3VtZW50TG9hZDoKKyAgaW5pdGlhbDogZmFsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGViMGMyYTNhY2FhZTRlZWU2Y2VjMDdl
YWZhNWYxMTM0MDhlN2VlZmQuLmVlOTcwNWNkMWE3OGQ3ZWI1N2E1Y2E0ZGRmNmI4OThlMzU3NjQ4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTA5Miw2
ICsxMDkyLDEwIEBAIEluY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wK
ICAgZGVmYXVsdFZhbHVlOiBmYWxzZQogCitTaG91bGRSdW5Bc3luY2hyb25vdXNTY3JpcHRzQWZ0
ZXJEb2N1bWVudExvYWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorCiBT
dG9yYWdlQWNjZXNzQVBJRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IHRy
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IGU3OTU1OWJkMDc5OGMzMTdlZjk2YmQwNDIyYWU3ZmE5NmEwNjU4MzMuLjhlNDdjN2NlNGJi
MGI1YjI5NDRjYTI3YmFjYzhmMjFmZTUwZmQwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTU3LDYgKzU1Nyw3IEBAIHN0YXRpYyB2
b2lkIHZhbGlkYXRlKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldERyYXdzQmFja2dyb3VuZChbX2NvbmZpZ3VyYXRpb24gX2Ry
YXdzQmFja2dyb3VuZF0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9sbGVkQnlB
dXRvbWF0aW9uKFtfY29uZmlndXJhdGlvbiBfaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uXSk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc0tleTo6aW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZEtleSgpLCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9pbmNvbXBsZXRl
SW1hZ2VCb3JkZXJFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFJ1bkFzeW5jaHJv
bm91c1NjcmlwdHNBZnRlckRvY3VtZW50TG9hZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zaG91bGRSdW5Bc3luY2hyb25vdXNTY3Jp
cHRzQWZ0ZXJEb2N1bWVudExvYWRdKSk7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uTWFuaWZlc3QoW19jb25m
aWd1cmF0aW9uIF9hcHBsaWNhdGlvbk1hbmlmZXN0XSA/IFtjb25maWd1cmF0aW9uIF9hcHBsaWNh
dGlvbk1hbmlmZXN0XS0+X2FwcGxpY2F0aW9uTWFuaWZlc3QuZ2V0KCkgOiBudWxscHRyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggODE2OWI4MDE2ZmVjMDU4YjQwZTQxMWIwMGUxY2FlOTM2
OTc5YWEyOS4uZDIzYmNhYThlYWNkOTFkNzZmNmNlOWU5NWVlYzhjMTQ2M2I3Mzc4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KQEAgLTE2NCw2ICsxNjQsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnRE
ZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkKICAgICBCT09MIF9hbGxvd01l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKICAgICBC
T09MIF9jb2xvckZpbHRlckVuYWJsZWQ7CiAgICAgQk9PTCBfaW5jb21wbGV0ZUltYWdlQm9yZGVy
RW5hYmxlZDsKKyAgICBCT09MIF9zaG91bGRSdW5Bc3luY2hyb25vdXNTY3JpcHRzQWZ0ZXJEb2N1
bWVudExvYWQ7CiAgICAgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kOwogCiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBfb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0yNTAsNiArMjUxLDcg
QEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFs
dWUpCiAKICAgICBfY29sb3JGaWx0ZXJFbmFibGVkID0gTk87CiAgICAgX2luY29tcGxldGVJbWFn
ZUJvcmRlckVuYWJsZWQgPSBOTzsKKyAgICBfc2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0Fm
dGVyRG9jdW1lbnRMb2FkID0gTk87CiAgICAgX2RyYXdzQmFja2dyb3VuZCA9IFlFUzsKIAogICAg
IHJldHVybiBzZWxmOwpAQCAtNDE0LDYgKzQxNiw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5
IHRvRHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIGNvbmZpZ3VyYXRpb24tPl9n
cm91cElkZW50aWZpZXIgPSBhZG9wdE5TKFtzZWxmLT5fZ3JvdXBJZGVudGlmaWVyIGNvcHlXaXRo
Wm9uZTp6b25lXSk7CiAgICAgY29uZmlndXJhdGlvbi0+X2NvbG9yRmlsdGVyRW5hYmxlZCA9IHNl
bGYtPl9jb2xvckZpbHRlckVuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2luY29tcGxldGVJ
bWFnZUJvcmRlckVuYWJsZWQgPSBzZWxmLT5faW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZDsK
KyAgICBjb25maWd1cmF0aW9uLT5fc2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0FmdGVyRG9j
dW1lbnRMb2FkID0gc2VsZi0+X3Nob3VsZFJ1bkFzeW5jaHJvbm91c1NjcmlwdHNBZnRlckRvY3Vt
ZW50TG9hZDsKICAgICBjb25maWd1cmF0aW9uLT5fZHJhd3NCYWNrZ3JvdW5kID0gc2VsZi0+X2Ry
YXdzQmFja2dyb3VuZDsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwpAQCAtNzg0LDYgKzc4
NywxNiBAQCBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQoKQogICAgIF9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkID0gaW5jb21wbGV0ZUltYWdl
Qm9yZGVyRW5hYmxlZDsKIH0KIAorLSAoQk9PTClfc2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0
c0FmdGVyRG9jdW1lbnRMb2FkCit7CisgICAgcmV0dXJuIF9zaG91bGRSdW5Bc3luY2hyb25vdXNT
Y3JpcHRzQWZ0ZXJEb2N1bWVudExvYWQ7Cit9CisKKy0gKHZvaWQpX3NldFNob3VsZFJ1bkFzeW5j
aHJvbm91c1NjcmlwdHNBZnRlckRvY3VtZW50TG9hZDooQk9PTClzaG91bGRSdW5Bc3luY2hyb25v
dXNTY3JpcHRzQWZ0ZXJEb2N1bWVudExvYWQKK3sKKyAgICBfc2hvdWxkUnVuQXN5bmNocm9ub3Vz
U2NyaXB0c0FmdGVyRG9jdW1lbnRMb2FkID0gc2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0Fm
dGVyRG9jdW1lbnRMb2FkOworfQorCiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICBy
ZXR1cm4gX2RyYXdzQmFja2dyb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
aW5kZXggZDY5NTVmOWQ5NmQxNThmYWJkMTJjNjI4N2FlNGZlMTFkZjMzMTBmMS4uNzU1N2JjZDdh
YmQwYmU4ZTFiY2U5YWQxNzVmYzFiNTYxZGM3OWIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgKQEAgLTczLDYgKzczLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIs
IF9XS0RyYWdMaWZ0RGVsYXkpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENv
bG9yRmlsdGVyRW5hYmxlZDopIEJPT0wgX2NvbG9yRmlsdGVyRW5hYmxlZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEluY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ6KSBCT09MIF9p
bmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0RHJhd3NCYWNrZ3JvdW5kOikgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0U2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0FmdGVyRG9jdW1l
bnRMb2FkOikgQk9PTCBfc2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0FmdGVyRG9jdW1lbnRM
b2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0QWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5OikgQk9PTCBfYWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDlfMCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhjNGZhNGRmZmExZTdlNzVh
NTdiMzEzYmIwMDAxYzIxOWRlOTA3MDEuLjljMzE5NjBiODY0YzZhODY5MzQ1YTA1MWM4MjExNjdl
NzQ0ZDZkM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNy0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGRlZmVyIHJ1bm5pbmcgYXN5bmMg
c2NyaXB0IHVudGlsIGFmdGVyIGRvY3VtZW50IGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDIzMTczNzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGFuIEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdoZW4gdGhlIGRlZmVycmVkIGFzeW5j
IHNjcmlwdCBjb25maWd1cmF0aW9uIGlzIHNldCwgYXN5bmMgc2NyaXB0cyB3aWxsIGJlCisgICAg
ICAgIGV4ZWN1dGVkIGFmdGVyIHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SdW5TY3JpcHRBZnRl
ckRvY3VtZW50TG9hZC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwogMjAxOC0wNy0xNyAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBb
bWFjT1MgU2llcnJhXSBUZXN0V2ViS2l0QVBJLldlYktpdC5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkyOTFl
NGNhZDJhYWYwOGRkYmZhNjVkNTY0YTcxZTM2NWE4NTA3MmMuLjNmOGRjOWFhNjMwZGFjY2RhZmUz
ZjAxMGVjMjA5Mzk1YzM2NmVjOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MTYsNiAr
ODE2LDcgQEAKIAkJRjRDODc5N0YyMDU5RDhEMzAwOUNEMDBCIC8qIFNjcm9sbFZpZXdJbnNldFRl
c3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRD
ODc5N0UyMDU5RDhEMzAwOUNEMDBCIC8qIFNjcm9sbFZpZXdJbnNldFRlc3RzLm1tICovOyB9Owog
CQlGNENENzRDNjIwRkRBQ0ZBMDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
Q0Q3NEM1MjBGREFDRjUwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgKi87
IH07CiAJCUY0Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0Q3NEM4
MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLzsgfTsKKwkJRjRE
Mjk4NkUyMEZFRTczNzAwOTJENjM2IC8qIFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREMjk4NkQyMEZF
RTczNzAwOTJENjM2IC8qIFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tICovOyB9OwogCQlG
NEQ0RjNCNjFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjQxRTRF
MkJDQjAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSAqLzsgfTsKIAkJRjRE
NEYzQjkxRTRFMzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjcxRTRFMzZFNDAw
QkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tICovOyB9OwogCQlGNEQ1RTRFODFGMEM1
RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVFNEU3MUYwQzVE
MjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi87IH07CkBAIC0y
MDI0LDYgKzIwMjUsNyBAQAogCQlGNENENzRDNTIwRkRBQ0Y1MDBERTM3OTQgLyogdGV4dC13aXRo
LWFzeW5jLXNjcmlwdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInRleHQtd2l0
aC1hc3luYy1zY3JpcHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Q0Q3
NEM3MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXN0VVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjREMjk4NkQyMEZFRTczNzAwOTJENjM2IC8qIFJ1blNjcmlwdEFm
dGVyRG9jdW1lbnRMb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVuU2NyaXB0QWZ0ZXJE
b2N1bWVudExvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I0MUU0
RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I1MUU0RTJCQ0IwMEJCMjc2NyAv
KiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0RDRGM0I3MUU0RTM2RTQwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFJbnRlcmFjdGlv
blRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMiw2ICsyMzE0LDcg
QEAKIAkJCQlDRDlFMjkyQjFDOTBBNzFGMDAwQkI4MDAgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9y
UGxheWJhY2subW0gKi8sCiAJCQkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1
bk9wZW5QYW5lbC5tbSAqLywKKwkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2Ny
aXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJQ0UwOTQ3MzYyMDYzMjIzQjAwM0M5QkEw
IC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIxMjkzMUZERjA1MDUwMEE1QTFCRCAv
KiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCiAJCQkJMzdCQ0E2MUIxQjU5NkJBOTAwMjAxMkNB
IC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gKi8sCkBAIC0z
ODI0LDYgKzM4MjcsNyBAQAogCQkJCTQ2RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3Jl
U3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcx
QjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUY0RDI5ODZFMjBGRUU3MzcwMDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50
TG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQ0ZBN0FBMUU0NTE4MzIwMEMyNDMzRCAvKiBT
YW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UwOTQ3MzcyMDYzMjIzQjAwM0M5QkEw
IC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTIxQTQxMUFF
NjAwNDQ3QzRDIC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1J1blNjcmlw
dEFmdGVyRG9jdW1lbnRMb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTY0ZGRmMmVh
ZjAyZmFhNjU2ZjY3YzdjYjBiNWYyNmZiYmRmMWMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SdW5TY3JpcHRBZnRlckRvY3VtZW50TG9h
ZC5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvU2Vjb25kcy5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGNvbnN0IGNoYXIqIG1hcmt1cCA9Cisg
ICAgIjxoZWFkPjxzY3JpcHQgc3JjPSdhc3luYy5qcycgYXN5bmM+PC9zY3JpcHQ+PC9oZWFkPiIK
KyAgICAiPGJvZHk+IgorICAgICIgIDxzY3JpcHQ+ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
RE9NQ29udGVudExvYWRlZCcsICgpID0+IHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoJ0RPTUNvbnRlbnRMb2FkZWQnKSk8L3NjcmlwdD4iCisgICAgIiAgPHNj
cmlwdCBzcmM9J2RlZmVyLmpzJyBkZWZlcj48L3NjcmlwdD4iCisgICAgIiAgPHNjcmlwdCBzcmM9
J3N5bmMuanMnPjwvc2NyaXB0PiIKKyAgICAiPC9ib2R5PiI7CisKK1RFU1QoUnVuU2NyaXB0QWZ0
ZXJEb2N1bWVudExvYWQsIEV4ZWN1dGlvbk9yZGVyT2ZTY3JpcHRzSW5Eb2N1bWVudCkKK3sKKyAg
ICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjdXN0b20iXTsK
KyAgICBbY29uZmlndXJhdGlvbiBfc2V0U2hvdWxkUnVuQXN5bmNocm9ub3VzU2NyaXB0c0FmdGVy
RG9jdW1lbnRMb2FkOllFU107CisgICAgW3NjaGVtZUhhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVU
YXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAg
ICAgICAgYXV0byByZXNwb25zZUJsb2NrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayldIHsKKyAg
ICAgICAgICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gW3Rhc2sgcmVxdWVzdF0uVVJMOworICAgICAg
ICAgICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAid2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnJUAnKSIsIHJlcXVl
c3RVUkwuYWJzb2x1dGVTdHJpbmcubGFzdFBhdGhDb21wb25lbnRdOworICAgICAgICAgICAgYXV0
byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpy
ZXF1ZXN0VVJMIE1JTUVUeXBlOkAidGV4dC9qYXZhc2NyaXB0IiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6W3NjcmlwdCBsZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W3NjcmlwdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ11dOworICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAoW1t0YXNrIHJlcXVlc3RdLlVSTC5hYnNvbHV0ZVN0cmluZyBjb250YWluc1N0
cmluZzpAImFzeW5jLmpzIl0pIHsKKyAgICAgICAgICAgIHJlc3BvbnNlQmxvY2soKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERlbGF5IHJlcXVlc3QgcmVz
cG9uc2VzIGZvciB0aGUgb3RoZXIgdHdvIHNjcmlwdHMgZm9yIGEgc2hvcnQgZHVyYXRpb24gdG8g
ZW5zdXJlIHRoYXQgaW4gdGhlIGFic2VuY2UKKyAgICAgICAgLy8gb2YgdGhlIGRlZmVycmVkIGFz
eW5jaHJvbm91cyBzY3JpcHRzIGNvbmZpZ3VyYXRpb24gZmxhZywgd2Ugd2lsbCBub3JtYWxseSBl
eGVjdXRlIHRoZSBhc3luY2hyb25vdXMgc2NyaXB0CisgICAgICAgIC8vIGJlZm9yZSB0aGUgb3Ro
ZXIgc2NyaXB0cy4KKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRD
SF9USU1FX05PVywgKDAuMjVfcykubmFub3NlY29uZHMoKSksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIHJlc3BvbnNlQmxvY2spOworICAgIH1dOworCisgICAgYXV0byBtZXNzYWdlcyA9IGFk
b3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAw
LCAyMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGZvciAoTlNT
dHJpbmcgKm1lc3NhZ2UgaW4gQFsgQCJhc3luYy5qcyIsIEAiZGVmZXIuanMiLCBAInN5bmMuanMi
LCBAIkRPTUNvbnRlbnRMb2FkZWQiIF0pIHsKKyAgICAgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVy
UmVjZWl2aW5nTWVzc2FnZTptZXNzYWdlIGFjdGlvbjpbbWVzc2FnZSA9IGFkb3B0TlMobWVzc2Fn
ZS5jb3B5KSwgbWVzc2FnZXNdIHsKKyAgICAgICAgICAgIFttZXNzYWdlcyBhZGRPYmplY3Q6bWVz
c2FnZS5nZXQoKV07CisgICAgICAgIH1dOworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAobWFya3VwKSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY3VzdG9tOi8v
Il1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKwor
ICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBhc3luY2hyb25vdXMgc2NyaXB0IGlzIGV4ZWN1dGVkIGFm
dGVyIGRvY3VtZW50IGxvYWQsIHRoZSBzeW5jaHJvbm91cyBzY3JpcHQgaXMgZXhlY3V0ZWQgYmVm
b3JlIHRoZQorICAgIC8vIGRlZmVycmVkIHNjcmlwdCwgYW5kIHRoZSBkZWZlcnJlZCBzY3JpcHQg
aXMgZXhlY3V0ZWQgcHJpb3IgdG8gZG9jdW1lbnQgbG9hZC4KKyAgICBFWFBFQ1RfRVEoNFUsIFtt
ZXNzYWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgic3luYy5qcyIsIFttZXNzYWdl
cyBvYmplY3RBdEluZGV4OjBdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImRlZmVyLmpzIiwgW21l
c3NhZ2VzIG9iamVjdEF0SW5kZXg6MV0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiRE9NQ29udGVu
dExvYWRlZCIsIFttZXNzYWdlcyBvYmplY3RBdEluZGV4OjJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoImFzeW5jLmpzIiwgW21lc3NhZ2VzIG9iamVjdEF0SW5kZXg6M10pOworfQorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQK
</data>
<flag name="review"
          id="363206"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345250</attachid>
            <date>2018-07-18 08:48:59 -0700</date>
            <delta_ts>2018-07-18 10:08:53 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-187748-20180718084858.patch</filename>
            <type>text/plain</type>
            <size>23165</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE3NjZhOGQzNDI3Zjk5
NTMyNjBhZGY2YTBjODE3OGYwYzczMTg1NS4uZWQ0OGFmNzU0OWM5ZTYyMzBjNGRkYzViMDNhYzE0
ODNmZDMxMWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTA3LTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
ZGVmZXIgcnVubmluZyBhc3luYyBzY3JpcHQgdW50aWwgYWZ0ZXIgZG9jdW1lbnQgbG9hZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NzQ4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MjMxNzM3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9z
dWtlIE5pd2EgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgT24gd2F0Y2hPUywgd2UgY3VycmVu
dGx5IG9ic2VydmUgdGhhdCB0aW1lLWNvbnN1bWluZyBhc3luYyBzY3JpcHRzIGNhbiBibG9jayB0
aGUgZmlyc3QgcGFpbnQgb2YgUmVhZGVyLCBsZWF2aW5nCisgICAgICAgIHRoZSB1c2VyIHdpdGgg
YSBibGFuayBzY3JlZW4gZm9yIHRlbnMgb2Ygc2Vjb25kcy4gT25lIHdheSB0byBtaXRpZ2F0ZSB0
aGlzIGlzIHRvIGRlZmVyIGFzeW5jIHNjcmlwdCBleGVjdXRpb24KKyAgICAgICAgdW50aWwgYWZ0
ZXIgZG9jdW1lbnQgbG9hZCAoaS5lLiB0aGUgc2FtZSB0aW1pbmcgYXMgRE9NQ29udGVudExvYWRl
ZCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIFNQSSBjb25maWd1cmF0aW9u
IGFsbG93aW5nIGludGVybmFsIGNsaWVudHMgdG8gZGVmZXIgZXhlY3V0aW9uIG9mIGFzeW5jaHJv
bm91cyBzY3JpcHQKKyAgICAgICAgdW50aWwgYWZ0ZXIgZG9jdW1lbnQgbG9hZDsgdGhpcywgaW4g
Y29tYmluYXRpb24gd2l0aCB0aGUgcGFyc2VyIHlpZWxkaW5nIHRva2VuIGludHJvZHVjZWQgaW4g
cjIzMzg5MSwgYWxsb3dzCisgICAgICAgIFNhZmFyaSBvbiB3YXRjaE9TIHRvIGF2b2lkIGJlaW5n
IGJsb2NrZWQgb24gc2xvdyBzY3JpcHQgZXhlY3V0aW9uIGJlZm9yZSB0aGUgZmlyc3QgcGFpbnQg
b2YgdGhlIFJlYWRlciBwYWdlIG9uCisgICAgICAgIG1vc3QgYXJ0aWNsZS1saWtlIHBhZ2VzLiBT
ZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBSdW5TY3JpcHRBZnRl
ckRvY3VtZW50TG9hZC5FeGVjdXRpb25PcmRlck9mU2NyaXB0c0luRG9jdW1lbnQKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxk
RGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxQYXJzaW5nRmluaXNoZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6CisKKyAgICAgICAgTm90
aWZ5IFNjcmlwdFJ1bm5lciB3aGVuIHRoZSBEb2N1bWVudCBoYXMgZmluaXNoZWQgcGFyc2luZywg
YW5kIGlzIGFib3V0IHRvIGZpcmUgRE9NQ29udGVudExvYWRlZC4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UnVubmVyOjpkb2N1bWVudEZpbmlzaGVkUGFyc2luZyk6CisKKyAgICAgICAg
V2hlbiB0aGUgZG9jdW1lbnQgaXMgZmluaXNoZWQgcGFyc2luZywga2ljayBvZmYgdGhlIHNjcmlw
dCBleGVjdXRpb24gdGltZXIgaWYgbmVlZGVkIHRvIHJ1biBhbnkgYXN5bmMgc2NyaXB0CisgICAg
ICAgIHRoYXQgaGFzIGJlZW4gZGVmZXJyZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1
bm5lcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp0
aW1lckZpcmVkKToKKworICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyB0YWtpbmcgZnJvbSB0aGUg
bGlzdCBvZiBhc3luYyBzY3JpcHRzIHRvIGV4ZWN1dGUsIGNoZWNrIG91ciBkb2N1bWVudCB0byBz
ZWUgd2hldGhlciB3ZSBzaG91bGQKKyAgICAgICAgZGVmZXIgdGhpcyB1bnRpbCBhZnRlciBkb2N1
bWVudCBsb2FkLiBJZiBzbywgaWdub3JlIGBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uYC4KKworICAg
ICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6
CisKKyAgICAgICAgQWRkIGEgV2ViQ29yZSBzZXR0aW5nIGZvciB0aGlzIGJlaGF2aW9yLgorCiAy
MDE4LTA3LTE3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
RW5zdXJlIHRpbWluZ0Z1bmN0aW9uRm9yS2V5ZnJhbWVBdEluZGV4KCkgY2FuIGJlIHVzZWQgZnJv
bSBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhNzkyNWJiZmE1
OTMyZjg1NzM2MWFkYTMwY2NmMzg0ZDVlZjk0YjUuLmM0NmE4NjZhM2M3MjEzYWQyYjI5NDFkZTU2
ZjQ2NjQ3MzZhOWY3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDctMTggIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0
byBkZWZlciBydW5uaW5nIGFzeW5jIHNjcmlwdCB1bnRpbCBhZnRlciBkb2N1bWVudCBsb2FkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc3NDgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMzE3Mzc4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YSBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgcGx1bWJpbmcgZm9yIGEg
bmV3IFNob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQg
Y29uZmlndXJhdGlvbiB0aGF0IGRldGVybWluZXMKKyAgICAgICAgd2hldGhlciBhc3luYyBzY3Jp
cHQgZXhlY3V0aW9uIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBkb2N1bWVudCBsb2FkIChpLmUu
IERPTUNvbnRlbnRMb2FkZWQpLiBUaGlzCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMg
dG8gTk8gb24gYWxsIHBsYXRmb3Jtcy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRl
dGFpbC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNv
cHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2hvdWxk
RGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZF0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRTaG91bGREZWZlckFzeW5jaHJvbm91c1Nj
cmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKwogMjAxOC0wNy0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb24gUFNPTiBpbiBX
ZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NTZhYmNhYjQ5ODBm
Y2UzMmEyNmJkYTU5ZmE0NzVhOWNmOGI0OGU2Li5jMDBmZmMxNGEzNjE1MjM0ZWU5OGVjZGU2NzNj
ZDNmYmRmZTYyMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUxOTMsNiArNTE5Mywx
MSBAQCB2b2lkIERvY3VtZW50Ojpwb3BDdXJyZW50U2NyaXB0KCkKICAgICBtX2N1cnJlbnRTY3Jp
cHRTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6OnNob3VsZERlZmVyQXN5
bmNocm9ub3VzU2NyaXB0c1VudGlsUGFyc2luZ0ZpbmlzaGVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcGFyc2luZygpICYmIHNldHRpbmdzKCkuc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRz
VW50aWxBZnRlckRvY3VtZW50TG9hZCgpOworfQorCiAjaWYgRU5BQkxFKFhTTFQpCiAKIHZvaWQg
RG9jdW1lbnQ6OnNjaGVkdWxlVG9BcHBseVhTTFRyYW5zZm9ybXMoKQpAQCAtNTQyOSw2ICs1NDM0
LDggQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIAogICAgIFJlZjxEb2N1bWVu
dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKKyAgICBzY3JpcHRSdW5uZXIoKS0+ZG9jdW1lbnRG
aW5pc2hlZFBhcnNpbmcoKTsKKwogICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50
TG9hZGVkRXZlbnRTdGFydCkKICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9h
ZGVkRXZlbnRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGI5YjRmYzQ4NmExN2U2Yjc4MGY2MDNhNGFjYmQ2ZWMxMjhlMzUwNmQuLjBlMmJiMzcw
NTgyZjMzNDU2ZWI0ZmMwZDFjY2Y4MTI2OGMxNWIxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC05OTEsNiArOTkxLDggQEAgcHVibGljOgogICAgIHZvaWQgcHVzaEN1cnJlbnRTY3JpcHQoSFRN
TFNjcmlwdEVsZW1lbnQqKTsKICAgICB2b2lkIHBvcEN1cnJlbnRTY3JpcHQoKTsKIAorICAgIGJv
b2wgc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxQYXJzaW5nRmluaXNoZXMoKSBj
b25zdDsKKwogI2lmIEVOQUJMRShYU0xUKQogICAgIHZvaWQgc2NoZWR1bGVUb0FwcGx5WFNMVHJh
bnNmb3JtcygpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1
bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDYyZTU2ZjJmYjQ5YmE0
YTA0MGIyMzFjN2U1NzgyNzYyYzhmOGFmZTQuLjJmM2IxYTRhNjZhZTkwYzdkYTJmZjc0MjMwNjk3
N2ZhZDhkMzA2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC04Niw2ICs4
NiwxMiBAQCB2b2lkIFNjcmlwdFJ1bm5lcjo6cmVzdW1lKCkKICAgICAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAordm9pZCBTY3JpcHRSdW5uZXI6OmRvY3VtZW50RmluaXNoZWRQ
YXJzaW5nKCkKK3sKKyAgICBpZiAoIW1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uaXNFbXB0eSgpICYm
ICFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJlc3VtZSgpOworfQorCiB2b2lkIFNjcmlw
dFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKIHsK
ICAgICBpZiAocGVuZGluZ1NjcmlwdC5lbGVtZW50KCkud2lsbEV4ZWN1dGVJbk9yZGVyKCkpCkBA
IC0xMDUsNyArMTExLDkgQEAgdm9pZCBTY3JpcHRSdW5uZXI6OnRpbWVyRmlyZWQoKQogICAgIFJl
ZjxEb2N1bWVudD4gcHJvdGVjdChtX2RvY3VtZW50KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UGVu
ZGluZ1NjcmlwdD4+IHNjcmlwdHM7Ci0gICAgc2NyaXB0cy5zd2FwKG1fc2NyaXB0c1RvRXhlY3V0
ZVNvb24pOworCisgICAgaWYgKCFtX2RvY3VtZW50LnNob3VsZERlZmVyQXN5bmNocm9ub3VzU2Ny
aXB0c1VudGlsUGFyc2luZ0ZpbmlzaGVzKCkpCisgICAgICAgIHNjcmlwdHMuc3dhcChtX3Njcmlw
dHNUb0V4ZWN1dGVTb29uKTsKIAogICAgIHNpemVfdCBudW1Jbk9yZGVyU2NyaXB0c1RvRXhlY3V0
ZSA9IDA7CiAgICAgZm9yICg7IG51bUluT3JkZXJTY3JpcHRzVG9FeGVjdXRlIDwgbV9zY3JpcHRz
VG9FeGVjdXRlSW5PcmRlci5zaXplKCkgJiYgbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcltudW1J
bk9yZGVyU2NyaXB0c1RvRXhlY3V0ZV0tPmlzTG9hZGVkKCk7ICsrbnVtSW5PcmRlclNjcmlwdHNU
b0V4ZWN1dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggNjdlZWNiZTgwOWNkMDQz
ZDNiYWIxNzZmMjE5MGNmNGYyOTNjZTlmMi4uMjE0OTlhYWJmZmVkZTY4Yzc5NjM4ZTVmOTgzNzU5
MjNiZmE5NzJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtNTMsNiArNTMsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRCZWdpbllpZWxkaW5nUGFyc2VyKCkgeyBzdXNwZW5kKCk7
IH0KICAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgeyByZXN1bWUoKTsgfQogCisgICAg
dm9pZCBkb2N1bWVudEZpbmlzaGVkUGFyc2luZygpOworCiBwcml2YXRlOgogICAgIHZvaWQgdGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlh
bWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggZTY1YTkxMjA3MjVj
MDM0Nzg3NTcwOGRiYjY4M2Y2NGZhNjY4ZDdhYy4uOTEwYjMzNmEyNDAwMTQzY2ZjZjMwYjJhZWMx
ZDc3ZWYxMWU5MjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtNzU4LDMgKzc1
OCw2IEBAIGFjY2Vzc2liaWxpdHlFdmVudHNFbmFibGVkOgogCiBpbmNvbXBsZXRlSW1hZ2VCb3Jk
ZXJFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQorCitzaG91bGREZWZlckFzeW5jaHJvbm91c1Nj
cmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOgorICBpbml0aWFsOiBmYWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZWIwYzJhM2FjYWFlNGVlZTZjZWMw
N2VhZmE1ZjExMzQwOGU3ZWVmZC4uMzcwMjY2MDA2ZWY0MDc4MzUyODBkZDZjZDNhNjQ1YmIxOTNm
M2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMDky
LDYgKzEwOTIsMTAgQEAgSW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZDoKICAgdHlwZTogYm9v
bAogICBkZWZhdWx0VmFsdWU6IGZhbHNlCiAKK1Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0
c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBm
YWxzZQorCiBTdG9yYWdlQWNjZXNzQVBJRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0
VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IGU3OTU1OWJkMDc5OGMzMTdlZjk2YmQwNDIyYWU3ZmE5NmEwNjU4MzMuLjE3
NjMyZDk2MWE3OGEyOGEwYzA4MTQ3M2ZkNzU2YTg5MjRmM2YwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTU3LDYgKzU1Nyw3IEBA
IHN0YXRpYyB2b2lkIHZhbGlkYXRlKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24pCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERyYXdzQmFja2dyb3VuZChbX2NvbmZpZ3Vy
YXRpb24gX2RyYXdzQmFja2dyb3VuZF0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFtfY29uZmlndXJhdGlvbiBfaXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uXSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZEtleSgp
LCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9p
bmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkXSkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZERl
ZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWRLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBfc2hvdWxkRGVm
ZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZF0pKTsKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0QXBw
bGljYXRpb25NYW5pZmVzdChbX2NvbmZpZ3VyYXRpb24gX2FwcGxpY2F0aW9uTWFuaWZlc3RdID8g
W2NvbmZpZ3VyYXRpb24gX2FwcGxpY2F0aW9uTWFuaWZlc3RdLT5fYXBwbGljYXRpb25NYW5pZmVz
dC5nZXQoKSA6IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA4MTY5YjgwMTZm
ZWMwNThiNDBlNDExYjAwZTFjYWU5MzY5NzlhYTI5Li4xODhhYzE2OTRkMTRiN2ViZGIwYTkyZTI5
Mzg2OTM1ZGVhOWQ4ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTY0LDYgKzE2NCw3
IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZh
bHVlKQogICAgIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnRBc0ZhbGxiYWNrOwogICAgIEJPT0wgX2NvbG9yRmlsdGVyRW5hYmxlZDsKICAgICBCT09M
IF9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkOworICAgIEJPT0wgX3Nob3VsZERlZmVyQXN5
bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQ7CiAgICAgQk9PTCBfZHJhd3NC
YWNrZ3JvdW5kOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CkBAIC0yNTAsNiArMjUxLDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkg
dG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAKICAgICBfY29sb3JGaWx0ZXJFbmFi
bGVkID0gTk87CiAgICAgX2luY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQgPSBOTzsKKyAgICBf
c2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZCA9IE5P
OwogICAgIF9kcmF3c0JhY2tncm91bmQgPSBZRVM7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTQx
NCw2ICs0MTYsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNV
SW50ZWdlciB2YWx1ZSkKICAgICBjb25maWd1cmF0aW9uLT5fZ3JvdXBJZGVudGlmaWVyID0gYWRv
cHROUyhbc2VsZi0+X2dyb3VwSWRlbnRpZmllciBjb3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNv
bmZpZ3VyYXRpb24tPl9jb2xvckZpbHRlckVuYWJsZWQgPSBzZWxmLT5fY29sb3JGaWx0ZXJFbmFi
bGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkID0g
c2VsZi0+X2luY29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ7CisgICAgY29uZmlndXJhdGlvbi0+
X3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQgPSBz
ZWxmLT5fc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9h
ZDsKICAgICBjb25maWd1cmF0aW9uLT5fZHJhd3NCYWNrZ3JvdW5kID0gc2VsZi0+X2RyYXdzQmFj
a2dyb3VuZDsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwpAQCAtNzg0LDYgKzc4NywxNiBA
QCBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKQog
ICAgIF9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJFbmFibGVkID0gaW5jb21wbGV0ZUltYWdlQm9yZGVy
RW5hYmxlZDsKIH0KIAorLSAoQk9PTClfc2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50
aWxBZnRlckRvY3VtZW50TG9hZAoreworICAgIHJldHVybiBfc2hvdWxkRGVmZXJBc3luY2hyb25v
dXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZDsKK30KKworLSAodm9pZClfc2V0U2hvdWxk
RGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZDooQk9PTClzaG91
bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkCit7CisgICAg
X3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQgPSBz
aG91bGREZWZlckFzeW5jaHJvbm91c1NjcmlwdHNVbnRpbEFmdGVyRG9jdW1lbnRMb2FkOworfQor
CiAtIChCT09MKV9kcmF3c0JhY2tncm91bmQKIHsKICAgICByZXR1cm4gX2RyYXdzQmFja2dyb3Vu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggZDY5NTVmOWQ5NmQxNThm
YWJkMTJjNjI4N2FlNGZlMTFkZjMzMTBmMS4uYWM5ZDVlNTJkZmIwMzc2Zjg2ZTg0YTFmZDBhMWUy
OWE4NmVjMDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTczLDYg
KzczLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RGVsYXkpIHsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbG9yRmlsdGVyRW5hYmxlZDopIEJP
T0wgX2NvbG9yRmlsdGVyRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElu
Y29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ6KSBCT09MIF9pbmNvbXBsZXRlSW1hZ2VCb3JkZXJF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RHJhd3NCYWNrZ3JvdW5kOikg
Qk9PTCBfZHJhd3NCYWNrZ3JvdW5kIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hv
dWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxBZnRlckRvY3VtZW50TG9hZDopIEJPT0wg
X3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNp
ZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkgV0tfQVBJX0FWQUlMQUJMRShpb3MoOV8wKSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGM0ZmE0ZGZmYTFlN2U3NWE1N2IzMTNi
YjAwMDFjMjE5ZGU5MDcwMS4uY2E5NGE5MzE2ZmY3YjU2MWZjN2VlY2Q3NGIzZjYyMzNmZmRkNWU0
OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE4LTA3LTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGVmZXIgcnVubmluZyBhc3luYyBzY3JpcHQg
dW50aWwgYWZ0ZXIgZG9jdW1lbnQgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NzQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjMxNzM3
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EgYW5kIFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdoZW4gdGhlIGRlZmVycmVk
IGFzeW5jIHNjcmlwdCBjb25maWd1cmF0aW9uIGlzIHNldCwgYXN5bmMgc2NyaXB0cyB3aWxsIGJl
CisgICAgICAgIGV4ZWN1dGVkIGFmdGVyIHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50LgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SdW5TY3Jp
cHRBZnRlckRvY3VtZW50TG9hZC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwogMjAxOC0w
Ny0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBbbWFjT1MgU2llcnJhXSBUZXN0V2ViS2l0QVBJLldlYktpdC5XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDkyOTFlNGNhZDJhYWYwOGRkYmZhNjVkNTY0YTcxZTM2NWE4NTA3MmMuLjNmOGRjOWFhNjMwZGFj
Y2RhZmUzZjAxMGVjMjA5Mzk1YzM2NmVjOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
MTYsNiArODE2LDcgQEAKIAkJRjRDODc5N0YyMDU5RDhEMzAwOUNEMDBCIC8qIFNjcm9sbFZpZXdJ
bnNldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRDODc5N0UyMDU5RDhEMzAwOUNEMDBCIC8qIFNjcm9sbFZpZXdJbnNldFRlc3RzLm1tICov
OyB9OwogCQlGNENENzRDNjIwRkRBQ0ZBMDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlw
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0Q0Q3NEM1MjBGREFDRjUwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0
bWwgKi87IH07CiAJCUY0Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFu
ZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
Q0Q3NEM4MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLzsgfTsK
KwkJRjREMjk4NkUyMEZFRTczNzAwOTJENjM2IC8qIFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2Fk
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREMjk4
NkQyMEZFRTczNzAwOTJENjM2IC8qIFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tICovOyB9
OwogCQlGNEQ0RjNCNjFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYz
QjQxRTRFMkJDQjAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSAqLzsgfTsK
IAkJRjRENEYzQjkxRTRFMzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjcxRTRF
MzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tICovOyB9OwogCQlGNEQ1RTRF
ODFGMEM1RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVFNEU3
MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi87IH07
CkBAIC0yMDI0LDYgKzIwMjUsNyBAQAogCQlGNENENzRDNTIwRkRBQ0Y1MDBERTM3OTQgLyogdGV4
dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInRl
eHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0Q0Q3NEM3MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXN0VVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjREMjk4NkQyMEZFRTczNzAwOTJENjM2IC8qIFJ1blNj
cmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVuU2NyaXB0
QWZ0ZXJEb2N1bWVudExvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRG
M0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I1MUU0RTJCQ0IwMEJC
Mjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RDRGM0I3MUU0RTM2RTQwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25U
ZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFJbnRl
cmFjdGlvblRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMiw2ICsy
MzE0LDcgQEAKIAkJCQlDRDlFMjkyQjFDOTBBNzFGMDAwQkI4MDAgLyogUmVxdWlyZXNVc2VyQWN0
aW9uRm9yUGxheWJhY2subW0gKi8sCiAJCQkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8sCiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3
IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLywKKwkJCQlGNEQyOTg2RDIwRkVFNzM3MDA5MkQ2MzYgLyog
UnVuU2NyaXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gKi8sCiAJCQkJQ0UwOTQ3MzYyMDYzMjIzQjAw
M0M5QkEwIC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tICovLAogCQkJCTUxRUIxMjkzMUZERjA1MDUwMEE1
QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8sCiAJCQkJMzdCQ0E2MUIxQjU5NkJBOTAw
MjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gKi8s
CkBAIC0zODI0LDYgKzM4MjcsNyBAQAogCQkJCTQ2RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBS
ZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJF
MTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUY0RDI5ODZFMjBGRUU3MzcwMDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRv
Y3VtZW50TG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQ0ZBN0FBMUU0NTE4MzIwMEMyNDMz
RCAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UwOTQ3MzcyMDYzMjIzQjAw
M0M5QkEwIC8qIFNjaGVtZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTIx
QTQxMUFFNjAwNDQ3QzRDIC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1J1
blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWM2
ODQ5YjdmMzhmMzc2ZTJiZTkwYmMyNmUwMmE2ZDdmZWE3NTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SdW5TY3JpcHRBZnRlckRvY3Vt
ZW50TG9hZC5tbQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVSTFNj
aGVtZUhhbmRsZXIuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1NlY29uZHMuaD4KKworc3RhdGljIGNvbnN0IGNoYXIqIG1hcmt1
cCA9CisgICAgIjxoZWFkPiIKKyAgICAiPHNjcmlwdD5mdW5jdGlvbiBzY3JpcHRMb2FkZWQoZWxl
bWVudCkgeyB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGAk
e2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdzcmMnKX0gbG9hZGVkYCkgfTwvc2NyaXB0PiIKKyAgICAi
PHNjcmlwdCBvbmxvYWQ9J3NjcmlwdExvYWRlZCh0aGlzKScgc3JjPSdhc3luYy5qcycgYXN5bmM+
PC9zY3JpcHQ+IgorICAgICI8L2hlYWQ+IgorICAgICI8Ym9keT4iCisgICAgIjxzY3JpcHQ+ZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHdlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0RPTUNvbnRlbnRMb2FkZWQn
KSk8L3NjcmlwdD4iCisgICAgIjxzY3JpcHQgb25sb2FkPSdzY3JpcHRMb2FkZWQodGhpcyknIHNy
Yz0nZGVmZXIuanMnIGRlZmVyPjwvc2NyaXB0PiIKKyAgICAiPHNjcmlwdCBvbmxvYWQ9J3Njcmlw
dExvYWRlZCh0aGlzKScgc3JjPSdzeW5jLmpzJz48L3NjcmlwdD4iCisgICAgIjwvYm9keT4iOwor
CitURVNUKFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLCBFeGVjdXRpb25PcmRlck9mU2NyaXB0
c0luRG9jdW1lbnQpCit7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RV
UkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiY3VzdG9tIl07CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldFNob3VsZERlZmVyQXN5
bmNocm9ub3VzU2NyaXB0c1VudGlsQWZ0ZXJEb2N1bWVudExvYWQ6WUVTXTsKKyAgICBbc2NoZW1l
SGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdL
VVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIHJlc3BvbnNlQmxvY2sgPSBbdGFz
ayA9IHJldGFpblB0cih0YXNrKV0geworICAgICAgICAgICAgTlNVUkwgKnJlcXVlc3RVUkwgPSBb
dGFzayByZXF1ZXN0XS5VUkw7CisgICAgICAgICAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ3ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdSdW5uaW5nICVAJykiLCByZXF1ZXN0VVJMLmFic29sdXRlU3RyaW5nLmxh
c3RQYXRoQ29tcG9uZW50XTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdFVSTCBNSU1FVHlwZTpAInRl
eHQvamF2YXNjcmlwdCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltzY3JpcHQgbGVuZ3RoXSB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltzY3Jp
cHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgICAg
IFt0YXNrIGRpZEZpbmlzaF07CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKFtbdGFzayByZXF1
ZXN0XS5VUkwuYWJzb2x1dGVTdHJpbmcgY29udGFpbnNTdHJpbmc6QCJhc3luYy5qcyJdKSB7Cisg
ICAgICAgICAgICByZXNwb25zZUJsb2NrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBEZWxheSByZXF1ZXN0IHJlc3BvbnNlcyBmb3IgdGhlIG90aGVyIHR3
byBzY3JpcHRzIGZvciBhIHNob3J0IGR1cmF0aW9uIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBhYnNl
bmNlCisgICAgICAgIC8vIG9mIHRoZSBkZWZlcnJlZCBhc3luY2hyb25vdXMgc2NyaXB0cyBjb25m
aWd1cmF0aW9uIGZsYWcsIHdlIHdpbGwgbm9ybWFsbHkgZXhlY3V0ZSB0aGUgYXN5bmNocm9ub3Vz
IHNjcmlwdAorICAgICAgICAvLyBiZWZvcmUgdGhlIG90aGVyIHNjcmlwdHMuCisgICAgICAgIGRp
c3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csICgwLjI1X3MpLm5h
bm9zZWNvbmRzKCkpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCByZXNwb25zZUJsb2NrKTsK
KyAgICB9XTsKKworICAgIGF1dG8gbWVzc2FnZXMgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBu
ZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBmb3IgKE5TU3RyaW5nICptZXNzYWdlIGluIEBbIEAi
UnVubmluZyBhc3luYy5qcyIsIEAiUnVubmluZyBkZWZlci5qcyIsIEAiUnVubmluZyBzeW5jLmpz
IiwgQCJET01Db250ZW50TG9hZGVkIiwgQCJhc3luYy5qcyBsb2FkZWQiLCBAImRlZmVyLmpzIGxv
YWRlZCIsIEAic3luYy5qcyBsb2FkZWQiIF0pIHsKKyAgICAgICAgW3dlYlZpZXcgcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTptZXNzYWdlIGFjdGlvbjpbbWVzc2FnZSA9IGFkb3B0TlMobWVz
c2FnZS5jb3B5KSwgbWVzc2FnZXNdIHsKKyAgICAgICAgICAgIFttZXNzYWdlcyBhZGRPYmplY3Q6
bWVzc2FnZS5nZXQoKV07CisgICAgICAgIH1dOworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAobWFya3VwKSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY3VzdG9t
Oi8vIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBhc3luY2hyb25vdXMgc2NyaXB0IGlzIGV4ZWN1dGVk
IGFmdGVyIGRvY3VtZW50IGxvYWQsIHRoZSBzeW5jaHJvbm91cyBzY3JpcHQgaXMgZXhlY3V0ZWQg
YmVmb3JlIHRoZQorICAgIC8vIGRlZmVycmVkIHNjcmlwdCwgYW5kIHRoZSBkZWZlcnJlZCBzY3Jp
cHQgaXMgZXhlY3V0ZWQgcHJpb3IgdG8gZG9jdW1lbnQgbG9hZC4KKyAgICBFWFBFQ1RfRVEoN1Us
IFttZXNzYWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBzeW5jLmpz
IiwgW21lc3NhZ2VzIG9iamVjdEF0SW5kZXg6MF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgic3lu
Yy5qcyBsb2FkZWQiLCBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDoxXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJSdW5uaW5nIGRlZmVyLmpzIiwgW21lc3NhZ2VzIG9iamVjdEF0SW5kZXg6Ml0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiZGVmZXIuanMgbG9hZGVkIiwgW21lc3NhZ2VzIG9iamVjdEF0
SW5kZXg6M10pOworICAgIEVYUEVDVF9XS19TVFJFUSgiRE9NQ29udGVudExvYWRlZCIsIFttZXNz
YWdlcyBvYmplY3RBdEluZGV4OjRdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJ1bm5pbmcgYXN5
bmMuanMiLCBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDo1XSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJhc3luYy5qcyBsb2FkZWQiLCBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDo2XSk7Cit9CisKKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>