<?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>188030</bug_id>
          
          <creation_ts>2018-07-25 16:56:11 -0700</creation_ts>
          <short_desc>Begin making WKWebViewConfiguration a wrapper around an API::PageConfiguration</short_desc>
          <delta_ts>2018-07-27 10:08:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1445225</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-25 16:56:11 -0700</bug_when>
    <thetext>Begin making WKWebViewConfiguration a wrapper around an API::PageConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445226</commentid>
    <comment_count>1</comment_count>
      <attachid>345802</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-25 16:57:03 -0700</bug_when>
    <thetext>Created attachment 345802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445565</commentid>
    <comment_count>2</comment_count>
      <attachid>345802</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-07-26 15:16:43 -0700</bug_when>
    <thetext>Comment on attachment 345802
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        I&apos;ve arbitrarily chosen _treatsSHA1SignedCertificatesAsInsecure and _urlSchemeHandlers
&gt; +        as the first two properties to transition, and I&apos;ve made a way to incrementally transition.

Because, what is happening here is a bit tricky, this would be much nicer if the ChangeLog included an explanation of the changes being made.

&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:153
&gt; +    HashMap&lt;WTF::String, RefPtr&lt;WebKit::WebURLSchemeHandler&gt;&gt; m_urlSchemeHandlers;

Can you add a null WebURLSchemeHandler into this map? If not, can this be a HashMap&lt;WTF::String, Ref&lt;WebKit::WebURLSchemeHandler&gt;&gt;?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:509
&gt; +    auto pageConfiguration = [configuration copyPageConfiguration];

Why is copying the configuration necessary here? What precludes us from simply referencing the underlying configuration? Is this a short term necessity while conversion is happening?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:119
&gt;      BOOL _treatsSHA1SignedCertificatesAsInsecure;

Why is this not being removed?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:507
&gt;      if (!canonicalScheme)
&gt;          [NSException raise:NSInvalidArgumentException format:@&quot;&apos;%@&apos; is not a valid URL scheme&quot;, urlScheme];
&gt;  
&gt; -    if ([urlSchemeHandlers objectForKey:(NSString *)canonicalScheme.value()])
&gt; +    if (_pageConfiguration-&gt;urlSchemeHandlerForURLScheme(*canonicalScheme))
&gt;          [NSException raise:NSInvalidArgumentException format:@&quot;URL scheme &apos;%@&apos; already has a registered URL scheme handler&quot;, urlScheme];
&gt;  
&gt; -    [urlSchemeHandlers setObject:urlSchemeHandler forKey:(NSString *)canonicalScheme.value()];
&gt; +    _pageConfiguration-&gt;setURLSchemeHandlerForURLScheme(WebKit::WebURLSchemeHandlerCocoa::create(urlSchemeHandler), *canonicalScheme);

Seems odd to have this much logic in the wrapper. Would be nice if it could move down to the underlying PageConfiguration. If it can&apos;t, a comment indicating why would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445568</commentid>
    <comment_count>3</comment_count>
      <attachid>345802</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-26 15:23:37 -0700</bug_when>
    <thetext>Comment on attachment 345802
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:153
&gt;&gt; +    HashMap&lt;WTF::String, RefPtr&lt;WebKit::WebURLSchemeHandler&gt;&gt; m_urlSchemeHandlers;
&gt; 
&gt; Can you add a null WebURLSchemeHandler into this map? If not, can this be a HashMap&lt;WTF::String, Ref&lt;WebKit::WebURLSchemeHandler&gt;&gt;?

It will probably work with a String as key but be careful, our support for Ref&lt;&gt; as value in HashMap is buggy depending on the key traits :(
See https://bugs.webkit.org/show_bug.cgi?id=184012 for e.g.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445569</commentid>
    <comment_count>4</comment_count>
      <attachid>345802</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-26 15:24:07 -0700</bug_when>
    <thetext>Comment on attachment 345802
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:153
&gt;&gt;&gt; +    HashMap&lt;WTF::String, RefPtr&lt;WebKit::WebURLSchemeHandler&gt;&gt; m_urlSchemeHandlers;
&gt;&gt; 
&gt;&gt; Can you add a null WebURLSchemeHandler into this map? If not, can this be a HashMap&lt;WTF::String, Ref&lt;WebKit::WebURLSchemeHandler&gt;&gt;?
&gt; 
&gt; It will probably work with a String as key but be careful, our support for Ref&lt;&gt; as value in HashMap is buggy depending on the key traits :(
&gt; See https://bugs.webkit.org/show_bug.cgi?id=184012 for e.g.

And by buggy, I mean that it builds but crashes at runtime :S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445574</commentid>
    <comment_count>5</comment_count>
      <attachid>345802</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-26 15:30:15 -0700</bug_when>
    <thetext>Comment on attachment 345802
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:509
&gt;&gt; +    auto pageConfiguration = [configuration copyPageConfiguration];
&gt; 
&gt; Why is copying the configuration necessary here? What precludes us from simply referencing the underlying configuration? Is this a short term necessity while conversion is happening?

It&apos;s at least necessary during conversion because this function mutates it, and it is the base of a WKWebViewConfiguration which can be used for other things later in the program and should not be mutated.  I think we&apos;ll have to copy it once we&apos;re done, too, because the WebPageProxy hangs on to it.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:119
&gt;&gt;      BOOL _treatsSHA1SignedCertificatesAsInsecure;
&gt; 
&gt; Why is this not being removed?

It should be.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:507
&gt;&gt; +    _pageConfiguration-&gt;setURLSchemeHandlerForURLScheme(WebKit::WebURLSchemeHandlerCocoa::create(urlSchemeHandler), *canonicalScheme);
&gt; 
&gt; Seems odd to have this much logic in the wrapper. Would be nice if it could move down to the underlying PageConfiguration. If it can&apos;t, a comment indicating why would be good.

Raising NSExceptions in wrapped C++ types is tricky.  I&apos;d prefer not to change that behavior in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445583</commentid>
    <comment_count>6</comment_count>
      <attachid>345886</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-26 16:01:15 -0700</bug_when>
    <thetext>Created attachment 345886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445730</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 10:07:40 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/234313/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445731</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-27 10:08:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/42664760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345802</attachid>
            <date>2018-07-25 16:57:03 -0700</date>
            <delta_ts>2018-07-26 16:01:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188030-20180725165703.patch</filename>
            <type>text/plain</type>
            <size>16032</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyMTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA3LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gbWFraW5n
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYSB3cmFwcGVyIGFyb3VuZCBhbiBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODgwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJJ3ZlIGFyYml0cmFyaWx5IGNob3NlbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0Fz
SW5zZWN1cmUgYW5kIF91cmxTY2hlbWVIYW5kbGVycworICAgICAgICBhcyB0aGUgZmlyc3QgdHdv
IHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvbiwgYW5kIEkndmUgbWFkZSBhIHdheSB0byBpbmNyZW1l
bnRhbGx5IHRyYW5zaXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29u
c3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dXJsU2NoZW1lSGFuZGxlckZv
clVSTFNjaGVtZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRVUkxTY2hl
bWVIYW5kbGVyRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp1cmxTY2hl
bWVIYW5kbGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hl
bWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVBhZ2VDb25maWd1
cmF0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3RyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF91cmxTY2hlbWVIYW5kbGVyc10pOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkludGVybmFsLmg6CisKIDIwMTgtMDctMjUgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBw
bGUuY29tPgogCiAgICAgICAgIE1hc2sgQVZCYWNrZ3JvdW5kVmlldyB0byB0aGUgY29ybmVyIHJh
ZGl1cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjM0MjA5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaCIKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTgxLDYgKzgyLDcg
QEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uTWFuaWZlc3QgPSB0
aGlzLT5tX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKKyAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzID0gdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVyczsKIAogICAgIHJldHVybiBjb3B5
OwogfQpAQCAtMTc0LDYgKzE3NiwxNiBAQCB2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNz
aW9uSUQoUEFMCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CiB9CiAKK1JlZlB0cjxXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+IFBhZ2VDb25maWd1cmF0aW9uOjp1cmxTY2hlbWVIYW5k
bGVyRm9yVVJMU2NoZW1lKGNvbnN0IFdURjo6U3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJu
IG1fdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZSk7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3Vy
YXRpb246OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWUoUmVmPFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcj4mJiBoYW5kbGVyLCBjb25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKQorewor
ICAgIG1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgV1RGTW92ZShoYW5kbGVyKSk7Cit9
CisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiBjb25zdCBBcHBsaWNhdGlvbk1h
bmlmZXN0KiBQYWdlQ29uZmlndXJhdGlvbjo6YXBwbGljYXRpb25NYW5pZmVzdCgpIGNvbnN0CiB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkocmV2aXNpb24gMjM0MjA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKLSNkZWZpbmUgQVBJUGFnZUNvbmZpZ3VyYXRpb25faAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCkBAIC0zOCw2ICszNyw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk7CiB9CiAKQEAgLTExNSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0QXBwbGljYXRpb25NYW5pZmVzdChBcHBsaWNhdGlvbk1hbmlmZXN0Kik7CiAjZW5kaWYKIAor
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+IHVybFNjaGVtZUhhbmRsZXJG
b3JVUkxTY2hlbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2b2lkIHNldFVSTFNjaGVtZUhh
bmRsZXJGb3JVUkxTY2hlbWUoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmKTsKKyAgICBjb25zdCBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWZQdHI8
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPj4mIHVybFNjaGVtZUhhbmRsZXJzKCkgeyByZXR1
cm4gbV91cmxTY2hlbWVIYW5kbGVyczsgfQorCiBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CkBAIC0xMzAsMTQgKzEzNCwxNCBAQCBw
cml2YXRlOgogICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBv
ZiB0aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCiAgICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CiAKLSAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRl
c0FzSW5zZWN1cmUgPSB0cnVlOworICAgIGJvb2wgbV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNh
dGVzQXNJbnNlY3VyZSB7IHRydWUgfTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBtX2Fs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSA9IGZhbHNlOworICAgIGJvb2wgbV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgYm9vbCBtX2lu
aXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQgPSB0cnVlOwotICAgIGJvb2wgbV93YWl0c0ZvclBh
aW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93ID0gdHJ1ZTsKLSAgICBib29sIG1fZHJhd3NCYWNr
Z3JvdW5kID0gdHJ1ZTsKLSAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9IGZhbHNl
OworICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93IHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQgeyB0cnVlIH07CisgICAgYm9vbCBtX2NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2Nw
dUxpbWl0OwogCiAgICAgV1RGOjpTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eTsKQEAgLTE0NSw5ICsxNDksOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKICAgICBSZWZQdHI8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0OwogI2VuZGlmCisKKyAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWZQdHI8V2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQotCi0KLSNlbmRpZiAvLyBBUElQYWdlQ29uZmlndXJhdGlvbl9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJl
dmlzaW9uIDIzNDIwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNiw3ICs1MDYsNyBAQCAtICh2b2lkKV9pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+X3Byb2Nlc3NQb29s
OwogICAgIHByb2Nlc3NQb29sLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGNvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQp
OwogCi0gICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpOworICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBbY29uZmlndXJhdGlvbiBj
b3B5UGFnZUNvbmZpZ3VyYXRpb25dOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nl
c3NQb29sKCZwcm9jZXNzUG9vbCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVu
Y2VzKFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKSk7CkBA
IC01MTYsNyArNTE2LDYgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihX
SwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5nZXQoKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rU3RvcmUo
W19jb25maWd1cmF0aW9uIF92aXNpdGVkTGlua1N0b3JlXS0+X3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0
KCkpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwotICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRUcmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNl
Y3VyZShbX2NvbmZpZ3VyYXRpb24gX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlXSk7CiAKICAgICBpZiAoTlNTdHJpbmcgKm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
ID0gY29uZmlndXJhdGlvbi5fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeShvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSk7CkBAIC02MzEsNyArNjMwLDcgQEAgICAgIC8vIFdl
IGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxpemF0aQogICAgIHN0YXRpYyB1aW50MzJfdCBwcm9n
cmFtU0RLVmVyc2lvbiA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKTsKICAgICBfYWxs
b3dzTGlua1ByZXZpZXcgPSBwcm9ncmFtU0RLVmVyc2lvbiA+PSBmaXJzdFNES1ZlcnNpb25XaXRo
TGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0OwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikgd2Vi
VmlldzpzZWxmXSk7CisgICAgX2NvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246cGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpIHdlYlZpZXc6c2VsZl0pOwogCiAg
ICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIFtzZWxmIF9kaXNwYXRjaFNldERl
dmljZU9yaWVudGF0aW9uOmRldmljZU9yaWVudGF0aW9uKCldOwpAQCAtNjc4LDcgKzY3Nyw3IEBA
ICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0aWFsaXphdGkKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZp
ZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bikpOworICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihz
ZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAg
ICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlB
ZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTcwOSw5ICs3MDgsOCBAQCAgICAgLy8gV2Ug
YXJlIGluIHRoZSBWaWV3J3MgaW5pdGlhbGl6YXRpCiAgICAgW3NlbGYgX3NldFVwU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50XTsKICNlbmRpZgogCi0gICAgYXV0byAqaGFuZGxlcnMgPSBfY29u
ZmlndXJhdGlvbi5nZXQoKS5fdXJsU2NoZW1lSGFuZGxlcnM7Ci0gICAgZm9yIChOU1N0cmluZyAq
a2V5IGluIGhhbmRsZXJzKQotICAgICAgICBfcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNj
aGVtZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6Y3JlYXRlKGhhbmRsZXJzW2tl
eV0pLCBrZXkpOworICAgIGZvciAoYXV0byYgcGFpciA6IHBhZ2VDb25maWd1cmF0aW9uLT51cmxT
Y2hlbWVIYW5kbGVycygpKQorICAgICAgICBfcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNj
aGVtZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6Y3JlYXRlKHN0YXRpY19jYXN0
PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKj4ocGFpci52YWx1ZS5nZXQoKSktPmFw
aUhhbmRsZXIoKSksIHBhaXIua2V5KTsKIAogICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2Uu
Z2V0KCksIHNlbGYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM0
MjA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldL
V2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCIK
ICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXplLmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2EuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbXBvcnQgIl9X
S1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KQEAgLTEwNCw2ICsxMDUsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnRE
ZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAjZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24geworICAgIFJlZlB0cjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBfcGFn
ZUNvbmZpZ3VyYXRpb247CiAgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxXS1Byb2Nlc3NQ
b29sPj4gX3Byb2Nlc3NQb29sOwogICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8V0tQcmVm
ZXJlbmNlcz4+IF9wcmVmZXJlbmNlczsKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdL
VXNlckNvbnRlbnRDb250cm9sbGVyPj4gX3VzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTExMyw3
ICsxMTUsNiBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAgICAg
V2Vha09iakNQdHI8V0tXZWJWaWV3PiBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0
dXJlczsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9ncm91cElkZW50aWZpZXI7CiAgICAgTGF6
eUluaXRpYWxpemVkPFJldGFpblB0cjxOU1N0cmluZz4+IF9hcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQ7Ci0gICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PE5TU3RyaW5nICosIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+Pj4+IF91cmxTY2hlbWVIYW5kbGVy
czsKICAgICBOU1RpbWVJbnRlcnZhbCBfaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRp
bWVvdXQ7CiAgICAgQk9PTCBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7
CiAgICAgQk9PTCBfcmVzcGVjdHNJbWFnZU9yaWVudGF0aW9uOwpAQCAtMTc4LDYgKzE3OSw4IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0CiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICBf
YWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBZRVM7CkBAIC0yMzAsNyArMjMz
LDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBfY29udmVydHNQb3NpdGlvblN0eWxlT25D
b3B5ID0gTk87CiAgICAgX2FsbG93c01ldGFSZWZyZXNoID0gWUVTOwogICAgIF9hbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IE5POwotICAgIF90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZSA9IFlFUzsKICAgICBfbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVV
UkxzUXVpcmsgPSBZRVM7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMzksNiArMzQxLDcgQEAg
LSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7CiAgICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFsoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKVtbc2Vs
ZiBjbGFzc10gYWxsb2NXaXRoWm9uZTp6b25lXSBpbml0XTsKIAorICAgIGNvbmZpZ3VyYXRpb24t
Pl9wYWdlQ29uZmlndXJhdGlvbiA9IF9wYWdlQ29uZmlndXJhdGlvbi0+Y29weSgpOwogICAgIGNv
bmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSBzZWxmLnByb2Nlc3NQb29sOwogICAgIGNvbmZpZ3Vy
YXRpb24ucHJlZmVyZW5jZXMgPSBzZWxmLnByZWZlcmVuY2VzOwogICAgIGNvbmZpZ3VyYXRpb24u
dXNlckNvbnRlbnRDb250cm9sbGVyID0gc2VsZi51c2VyQ29udGVudENvbnRyb2xsZXI7CkBAIC0z
NDYsNyArMzQ5LDYgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29u
ZmlndXJhdGlvbi5fdmlzaXRlZExpbmtTdG9yZSA9IHNlbGYuX3Zpc2l0ZWRMaW5rU3RvcmU7CiAg
ICAgY29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcgPSBfcmVsYXRlZFdlYlZpZXcuZ2V0KCku
Z2V0KCk7CiAgICAgY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25H
ZXN0dXJlcyA9IF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzLmdldCgpLmdl
dCgpOwotICAgIGNvbmZpZ3VyYXRpb24tPl90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSA9IF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgY29uZmlndXJhdGlvbi5fY29udGVudFByb3ZpZGVyUmVnaXN0cnkg
PSBzZWxmLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeTsKICNlbmRpZgpAQCAtNDA4LDcgKzQxMCw2
IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRpb24t
Pl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IHNlbGYtPl9uZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKICAgICBjb25maWd1cmF0aW9uLT5fb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBhZG9wdE5TKFtzZWxmLT5fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgY29weVdpdGhab25lOnpvbmVdKTsKIAotICAgIGNvbmZpZ3VyYXRpb24tPl91
cmxTY2hlbWVIYW5kbGVycy5zZXQoYWRvcHROUyhbc2VsZi5fdXJsU2NoZW1lSGFuZGxlcnMgbXV0
YWJsZUNvcHlXaXRoWm9uZTp6b25lXSkpOwogICAgIGNvbmZpZ3VyYXRpb24tPl9tZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0TlMoW3NlbGYuX21lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IGNvcHlXaXRoWm9uZTp6b25lXSk7CiAg
ICAgY29uZmlndXJhdGlvbi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IHNlbGYt
Pl9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2Fs
bG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrID0g
c2VsZi0+X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0Zh
bGxiYWNrOwpAQCAtNDkzLDggKzQ5NCw2IEBAIC0gKHZvaWQpX3NldFZpc2l0ZWRMaW5rU3RvcmU6
KF9XS1Zpc2l0ZWQKIAogLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hl
bWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxT
Y2hlbWUKIHsKLSAgICBhdXRvICp1cmxTY2hlbWVIYW5kbGVycyA9IF91cmxTY2hlbWVIYW5kbGVy
cy5nZXQoW10geyByZXR1cm4gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsgfSk7Ci0KICAgICBpZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVt
ZV0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCInJUAnIGlzIGEgVVJMIHNjaGVtZSB0aGF0IFdLV2ViVmlldyBoYW5kbGVzIG5h
dGl2ZWx5IiwgdXJsU2NoZW1lXTsKIApAQCAtNTAyLDEwICs1MDEsMTAgQEAgLSAodm9pZClzZXRV
UkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTYwogICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKIAotICAg
IGlmIChbdXJsU2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNh
bFNjaGVtZS52YWx1ZSgpXSkKKyAgICBpZiAoX3BhZ2VDb25maWd1cmF0aW9uLT51cmxTY2hlbWVI
YW5kbGVyRm9yVVJMU2NoZW1lKCpjYW5vbmljYWxTY2hlbWUpKQogICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVVJMIHNjaGVtZSAn
JUAnIGFscmVhZHkgaGFzIGEgcmVnaXN0ZXJlZCBVUkwgc2NoZW1lIGhhbmRsZXIiLCB1cmxTY2hl
bWVdOwogCi0gICAgW3VybFNjaGVtZUhhbmRsZXJzIHNldE9iamVjdDp1cmxTY2hlbWVIYW5kbGVy
IGZvcktleTooTlNTdHJpbmcgKiljYW5vbmljYWxTY2hlbWUudmFsdWUoKV07CisgICAgX3BhZ2VD
b25maWd1cmF0aW9uLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlckNvY29hOjpjcmVhdGUodXJsU2NoZW1lSGFuZGxlciksICpjYW5vbmlj
YWxTY2hlbWUpOwogfQogCiAtIChudWxsYWJsZSBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQpAQCAtNTE0LDgg
KzUxMyw4IEBAIC0gKG51bGxhYmxlIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFMKICAgICBp
ZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gKnVy
bFNjaGVtZUhhbmRsZXJzID0gX3VybFNjaGVtZUhhbmRsZXJzLmdldChbXSB7IHJldHVybiBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOyB9KTsKLSAgICByZXR1cm4g
W3VybFNjaGVtZUhhbmRsZXJzIG9iamVjdEZvcktleTooTlNTdHJpbmcgKiljYW5vbmljYWxTY2hl
bWUudmFsdWUoKV07CisgICAgYXV0byBoYW5kbGVyID0gX3BhZ2VDb25maWd1cmF0aW9uLT51cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lKCpjYW5vbmljYWxTY2hlbWUpOworICAgIHJldHVybiBo
YW5kbGVyID8gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EqPiho
YW5kbGVyLmdldCgpKS0+YXBpSGFuZGxlcigpIDogbmlsOwogfQogCiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaApAQCAtNTMzLDExICs1MzIsNiBAQCAtICh2b2lkKV9zZXRXZWJzaXRlRGF0
YVN0b3JlOihfV0tXZWJzaXRlCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAotLSAo
TlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4g
KilfdXJsU2NoZW1lSGFuZGxlcnMKLXsKLSAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJzLmdl
dChbXSB7IHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OyB9KTsKLX0KLQogI2lmIFBMQVRGT1JNKElPUykKIC0gKFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5ICopX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5CiB7CkBAIC01NTAsNiArNTQ0LDEx
IEBAIC0gKHZvaWQpX3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OihXS1cKIH0KICNlbmRpZgog
CistIChSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4pY29weVBhZ2VDb25maWd1cmF0aW9uCit7
CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y29weSgpOworfQorCiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS1ByaXZhdGUpCkBAIC01ODYs
MTIgKzU4NSwxMiBAQCAtICh2b2lkKV9zZXRHcm91cElkZW50aWZpZXI6KE5TU3RyaW5nICopCiAK
IC0gKEJPT0wpX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlCiB7Ci0gICAg
cmV0dXJuIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsKKyAgICByZXR1
cm4gX3BhZ2VDb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNl
Y3VyZSgpOwogfQogCiAtICh2b2lkKV9zZXRUcmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZTooQk9PTClpbnNlY3VyZQogewotICAgIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNh
dGVzQXNJbnNlY3VyZSA9IGluc2VjdXJlOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0VHJl
YXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoaW5zZWN1cmUpOwogfQogCiAtIChC
T09MKV9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkludGVybmFsLmgJKHJldmlzaW9uIDIzNDIwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL1JlZi5oPgogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIApAQCAtMzIsMTIgKzM0LDEyIEBACiAKIEBpbnRlcmZhY2UgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAoKQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
TXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4+ICpf
dXJsU2NoZW1lSGFuZGxlcnM7Ci0KICNpZiBQTEFURk9STShJT1MpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRDb250ZW50UHJvdmlkZXJSZWdpc3RyeTopIFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiAjZW5kaWYKIAor
LSAoUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+KWNvcHlQYWdlQ29uZmlndXJhdGlvbjsKKwog
QGVuZAogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345886</attachid>
            <date>2018-07-26 16:01:15 -0700</date>
            <delta_ts>2018-07-27 10:01:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188030-20180726160114.patch</filename>
            <type>text/plain</type>
            <size>16871</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyNzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA3LTI2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gbWFraW5n
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYSB3cmFwcGVyIGFyb3VuZCBhbiBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODgwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFdmVudHVhbGx5IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2hvdWxkIGJlY29tZSBqdXN0IGEg
QVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+LgorICAgICAgICBUaGUg
dHJhbnNpdGlvbiBpbmNsdWRlcyBhZGRpbmcgZmllbGRzIHRoYXQgZXhpc3QgaW4gV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB0byBBUEk6OlBhZ2VDb25maWd1cmF0aW9uCisgICAgICAgIGFuZCBtYWtp
bmcgV0tXZWJWaWV3Q29uZmlndXJhdGlvbidzIGdldHRlcnMgYW5kIHNldHRlcnMganVzdCBjYWxs
IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24ncyBjb3JyZXNwb25kaW5nIG1ldGhvZHMKKyAgICAgICAg
aW5zdGVhZCBvZiBoYXZpbmcgYW4gaXZhciBmb3IgZWFjaCB2YWx1ZSB0aGVuIGNvcHlpbmcgaXQg
dG8gYW4gQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB3ZSBjb25zdHJ1Y3QgaW4KKyAgICAgICAgdGhl
IFdLV2ViVmlldyBjb25zdHJ1Y3Rvci4gIFRvIHRyYW5zaXRpb24gaW5jcmVtZW50YWxseSwgSSd2
ZSBhZGRlZCBhIFJlZlB0cjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBpdmFyIHRvCisgICAgICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYW5kIG1vdmVkIGEgZmV3IGl2YXJzIHRvIHVzZSB0aGUg
dmFsdWVzIHN0b3JlZCBpbiB0aGF0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gaW5zdGVhZC4KKyAg
ICAgICAgSSd2ZSBhcmJpdHJhcmlseSBjaG9zZW4gX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlIGFuZCBfdXJsU2NoZW1lSGFuZGxlcnMgYXMgdGhlIGZpcnN0IHR3byAKKyAg
ICAgICAgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uLCBhbmQgSSdsbCBjb250aW51ZSB0cmFuc2l0
aW9uaW5nIGVhY2ggaXZhciBpbiBzbWFsbCwgZWFzeS10by1yZXZpZXcgYnVuY2hlcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAo
QVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnVybFNjaGVtZUhhbmRsZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGluaXRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5
V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBjb3B5UGFnZUNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VHJlYXRzU0hBMVNp
Z25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3VybFNjaGVtZUhhbmRsZXJzXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaDoKKwogMjAxOC0w
Ny0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEZpeCBhc3NlcnRpb25zIGludHJvZHVjZWQgaW4gcjIzNDIxMApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShy
ZXZpc2lvbiAyMzQyNzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNp
bmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogCiAjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQpAQCAtODEsNiArODIsOCBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRp
b24+IFBhZ2VDb25maWd1cmF0aW9uCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQog
ICAgIGNvcHktPm1fYXBwbGljYXRpb25NYW5pZmVzdCA9IHRoaXMtPm1fYXBwbGljYXRpb25NYW5p
ZmVzdDsKICNlbmRpZgorICAgIGZvciAoYXV0byYgcGFpciA6IHRoaXMtPm1fdXJsU2NoZW1lSGFu
ZGxlcnMpCisgICAgICAgIGNvcHktPm1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHBhaXIua2V5LCBw
YWlyLnZhbHVlLmNvcHlSZWYoKSk7CiAKICAgICByZXR1cm4gY29weTsKIH0KQEAgLTE3NCw2ICsx
NzcsMTYgQEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0U2Vzc2lvbklEKFBBTAogICAgIG1f
c2Vzc2lvbklEID0gc2Vzc2lvbklEOwogfQogCitSZWZQdHI8V2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyPiBQYWdlQ29uZmlndXJhdGlvbjo6dXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZShj
b25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKQoreworICAgIHJldHVybiBtX3VybFNjaGVtZUhhbmRs
ZXJzLmdldChzY2hlbWUpOworfQorCit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRVUkxTY2hl
bWVIYW5kbGVyRm9yVVJMU2NoZW1lKFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+JiYg
aGFuZGxlciwgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBtX3VybFNjaGVtZUhh
bmRsZXJzLnNldChzY2hlbWUsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiAjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQogY29uc3QgQXBwbGljYXRpb25NYW5pZmVzdCogUGFnZUNvbmZp
Z3VyYXRpb246OmFwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25zdAogewpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDIzNDI3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBUElQYWdlQ29uZmlndXJhdGlv
bl9oCi0jZGVmaW5lIEFQSVBhZ2VDb25maWd1cmF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgpAQCAt
MzgsNiArMzcsNyBAQCBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgV2ViVVJM
U2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQog
CkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uTWFu
aWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdCopOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8V2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lKGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBzZXRVUkxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
KFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CisgICAgY29uc3QgSGFzaE1hcDxXVEY6OlN0cmluZywgUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcj4+JiB1cmxTY2hlbWVIYW5kbGVycygpIHsgcmV0dXJuIG1fdXJsU2NoZW1lSGFuZGxl
cnM7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBt
X3Byb2Nlc3NQb29sOwpAQCAtMTMwLDE0ICsxMzQsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBPbmNl
IHdlIGdldCByaWQgb2YgaXQgd2Ugc2hvdWxkIGdldCByaWQgb2YgdGhpcyBjb25maWd1cmF0aW9u
IHBhcmFtZXRlciBhcyB3ZWxsLgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0g
ICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJ1ZTsK
KyAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgeyB0cnVl
IH07CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkgPSBmYWxzZTsKKyAgICBib29sIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9y
aXR5IHsgZmFsc2UgfTsKICNlbmRpZgotICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkID0gdHJ1ZTsKLSAgICBib29sIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVU
b1dpbmRvdyA9IHRydWU7Ci0gICAgYm9vbCBtX2RyYXdzQmFja2dyb3VuZCA9IHRydWU7Ci0gICAg
Ym9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24gPSBmYWxzZTsKKyAgICBib29sIG1faW5pdGlh
bENhcGl0YWxpemF0aW9uRW5hYmxlZCB7IHRydWUgfTsKKyAgICBib29sIG1fd2FpdHNGb3JQYWlu
dEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyB7IHRydWUgfTsKKyAgICBib29sIG1fZHJhd3NCYWNr
Z3JvdW5kIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFs
c2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAogICAgIFdURjo6
U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNDUsOSArMTQ5LDgg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgUmVmUHRy
PEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgorCisg
ICAgSGFzaE1hcDxXVEY6OlN0cmluZywgUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4+
IG1fdXJsU2NoZW1lSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotCi0jZW5k
aWYgLy8gQVBJUGFnZUNvbmZpZ3VyYXRpb25faApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzQyNzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01MDYsNyArNTA2LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
OihXSwogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKltfY29uZmln
dXJhdGlvbiBwcm9jZXNzUG9vbF0tPl9wcm9jZXNzUG9vbDsKICAgICBwcm9jZXNzUG9vbC5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKIAotICAgIGF1dG8gcGFnZUNvbmZp
Z3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBhdXRvIHBh
Z2VDb25maWd1cmF0aW9uID0gW2NvbmZpZ3VyYXRpb24gY29weVBhZ2VDb25maWd1cmF0aW9uXTsK
IAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmcHJvY2Vzc1Bvb2wpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhbX2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMuZ2V0KCkpOwpAQCAtNTE2LDcgKzUxNiw2IEBAIC0gKHZv
aWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0sKICAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFtfY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdLT5fdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuZ2V0KCkpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRWaXNpdGVkTGlua1N0b3JlKFtfY29uZmlndXJhdGlvbiBfdmlzaXRl
ZExpbmtTdG9yZV0tPl92aXNpdGVkTGlua1N0b3JlLmdldCgpKTsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZShbX2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV0tPl93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0
VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoW19jb25maWd1cmF0aW9uIF90
cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZV0pOwogCiAgICAgaWYgKE5TU3Ry
aW5nICpvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uX292ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0
T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kpOwpAQCAtNjMxLDcgKzYzMCw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0
aWFsaXphdGkKICAgICBzdGF0aWMgdWludDMyX3QgcHJvZ3JhbVNES1ZlcnNpb24gPSBkeWxkX2dl
dF9wcm9ncmFtX3Nka192ZXJzaW9uKCk7CiAgICAgX2FsbG93c0xpbmtQcmV2aWV3ID0gcHJvZ3Jh
bVNES1ZlcnNpb24gPj0gZmlyc3RTREtWZXJzaW9uV2l0aExpbmtQcmV2aWV3RW5hYmxlZEJ5RGVm
YXVsdDsKIAotICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0
aW9uOldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF9jb250
ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJv
dW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOnBhZ2VDb25maWd1cmF0
aW9uLmNvcHlSZWYoKSB3ZWJWaWV3OnNlbGZdKTsKIAogICAgIF9wYWdlID0gW19jb250ZW50Vmll
dyBwYWdlXTsKICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlvbjpkZXZpY2VP
cmllbnRhdGlvbigpXTsKQEAgLTY3OCw3ICs2NzcsNyBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBW
aWV3J3MgaW5pdGlhbGl6YXRpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfaW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJv
Y2Vzc1Bvb2wsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBfaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2ws
IHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAmX2ltcGwtPnBhZ2Uo
KTsKIAogICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHModHJ1
ZSk7CkBAIC03MDksOSArNzA4LDggQEAgICAgIC8vIFdlIGFyZSBpbiB0aGUgVmlldydzIGluaXRp
YWxpemF0aQogICAgIFtzZWxmIF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAj
ZW5kaWYKIAotICAgIGF1dG8gKmhhbmRsZXJzID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNj
aGVtZUhhbmRsZXJzOwotICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBoYW5kbGVycykKLSAgICAg
ICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5kbGVyc1trZXldKSwga2V5KTsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBwYWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkKKyAgICAg
ICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYSY+KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRsZXIoKSksIHBhaXIua2V5KTsK
IAogICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCIKICNpbXBvcnQgIldlYktpdDJJbml0aWFs
aXplLmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIl9X
S1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTEw
NCw2ICsxMDUsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAj
ZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24geworICAgIFJl
ZlB0cjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBfcGFnZUNvbmZpZ3VyYXRpb247CiAgICAgTGF6
eUluaXRpYWxpemVkPFJldGFpblB0cjxXS1Byb2Nlc3NQb29sPj4gX3Byb2Nlc3NQb29sOwogICAg
IExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8V0tQcmVmZXJlbmNlcz4+IF9wcmVmZXJlbmNlczsK
ICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVyPj4g
X3VzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTExMyw5ICsxMTUsNyBAQCBzdGF0aWMgX1dLRHJh
Z0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBf
YWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlczsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IF9ncm91cElkZW50aWZpZXI7CiAgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxO
U1N0cmluZz4+IF9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7Ci0gICAgTGF6eUluaXRpYWxp
emVkPFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkIDxXS1VSTFNj
aGVtZUhhbmRsZXI+Pj4+IF91cmxTY2hlbWVIYW5kbGVyczsKICAgICBOU1RpbWVJbnRlcnZhbCBf
aW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXQ7Ci0gICAgQk9PTCBfdHJlYXRz
U0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7CiAgICAgQk9PTCBfcmVzcGVjdHNJbWFn
ZU9yaWVudGF0aW9uOwogICAgIEJPT0wgX3ByaW50c0JhY2tncm91bmRzOwogICAgIEJPT0wgX2Fs
bG93c0phdmFTY3JpcHRNYXJrdXA7CkBAIC0xNzgsNiArMTc4LDggQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXQKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAorICAgIF9wYWdlQ29u
ZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCiAjaWYgUExB
VEZPUk0oSU9TKQogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAgIF9hbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlTWVkaWFQbGF5YmFjayA9IFlFUzsKQEAgLTIzMCw3ICsyMzIsNiBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdAogICAgIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHkgPSBOTzsKICAgICBf
YWxsb3dzTWV0YVJlZnJlc2ggPSBZRVM7CiAgICAgX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzID0gTk87Ci0gICAgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJl
ID0gWUVTOwogICAgIF9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IFlFUzsK
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTMzOSw2ICszNDAsNyBAQCAtIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gWyhXS1dlYlZpZXdDb25maWd1cmF0aW9uICopW1tzZWxmIGNsYXNzXSBhbGxvY1dp
dGhab25lOnpvbmVdIGluaXRdOwogCisgICAgY29uZmlndXJhdGlvbi0+X3BhZ2VDb25maWd1cmF0
aW9uID0gX3BhZ2VDb25maWd1cmF0aW9uLT5jb3B5KCk7CiAgICAgY29uZmlndXJhdGlvbi5wcm9j
ZXNzUG9vbCA9IHNlbGYucHJvY2Vzc1Bvb2w7CiAgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNl
cyA9IHNlbGYucHJlZmVyZW5jZXM7CiAgICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgPSBzZWxmLnVzZXJDb250ZW50Q29udHJvbGxlcjsKQEAgLTM0Niw3ICszNDgsNiBAQCAt
IChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLl92aXNp
dGVkTGlua1N0b3JlID0gc2VsZi5fdmlzaXRlZExpbmtTdG9yZTsKICAgICBjb25maWd1cmF0aW9u
Ll9yZWxhdGVkV2ViVmlldyA9IF9yZWxhdGVkV2ViVmlldy5nZXQoKS5nZXQoKTsKICAgICBjb25m
aWd1cmF0aW9uLl9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzID0gX2FsdGVy
bmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXMuZ2V0KCkuZ2V0KCk7Ci0gICAgY29uZmln
dXJhdGlvbi0+X3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gX3RyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBjb25maWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSA9IHNlbGYuX2NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5OwogI2VuZGlmCkBAIC00MDgsNyArNDA5LDYgQEAgLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFj
Y2Vzc0Zyb21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxl
VVJMc1F1aXJrOwogICAgIGNvbmZpZ3VyYXRpb24tPl9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGFkb3B0TlMoW3NlbGYtPl9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSBjb3B5
V2l0aFpvbmU6em9uZV0pOwogCi0gICAgY29uZmlndXJhdGlvbi0+X3VybFNjaGVtZUhhbmRsZXJz
LnNldChhZG9wdE5TKFtzZWxmLl91cmxTY2hlbWVIYW5kbGVycyBtdXRhYmxlQ29weVdpdGhab25l
OnpvbmVdKSk7CiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBjb25maWd1cmF0aW9u
LT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xlZ2FjeUVuY3J5cHRl
ZE1lZGlhQVBJRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dNZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxmLT5fYWxsb3dNZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7CkBAIC00OTMs
OCArNDkzLDYgQEAgLSAodm9pZClfc2V0VmlzaXRlZExpbmtTdG9yZTooX1dLVmlzaXRlZAogCiAt
ICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNj
aGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQogewotICAgIGF1
dG8gKnVybFNjaGVtZUhhbmRsZXJzID0gX3VybFNjaGVtZUhhbmRsZXJzLmdldChbXSB7IHJldHVy
biBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOyB9KTsKLQogICAg
IGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2NoZW1lXSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcg
aXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMgbmF0aXZlbHkiLCB1cmxTY2hl
bWVdOwogCkBAIC01MDIsMTAgKzUwMCwxMCBAQCAtICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6
KGlkIDxXS1VSTFNjCiAgICAgaWYgKCFjYW5vbmljYWxTY2hlbWUpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCInJUAnIGlzIG5v
dCBhIHZhbGlkIFVSTCBzY2hlbWUiLCB1cmxTY2hlbWVdOwogCi0gICAgaWYgKFt1cmxTY2hlbWVI
YW5kbGVycyBvYmplY3RGb3JLZXk6KE5TU3RyaW5nICopY2Fub25pY2FsU2NoZW1lLnZhbHVlKCld
KQorICAgIGlmIChfcGFnZUNvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hl
bWUoKmNhbm9uaWNhbFNjaGVtZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJVUkwgc2NoZW1lICclQCcgYWxyZWFkeSBoYXMg
YSByZWdpc3RlcmVkIFVSTCBzY2hlbWUgaGFuZGxlciIsIHVybFNjaGVtZV07CiAKLSAgICBbdXJs
U2NoZW1lSGFuZGxlcnMgc2V0T2JqZWN0OnVybFNjaGVtZUhhbmRsZXIgZm9yS2V5OihOU1N0cmlu
ZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
Q29jb2E6OmNyZWF0ZSh1cmxTY2hlbWVIYW5kbGVyKSwgKmNhbm9uaWNhbFNjaGVtZSk7CiB9CiAK
IC0gKG51bGxhYmxlIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JV
UkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCkBAIC01MTQsOCArNTEyLDggQEAgLSAobnVs
bGFibGUgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsUwogICAgIGlmICghY2Fub25pY2FsU2No
ZW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byAqdXJsU2NoZW1lSGFuZGxlcnMg
PSBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7IH0pOwotICAgIHJldHVybiBbdXJsU2NoZW1lSGFuZGxl
cnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsKKyAg
ICBhdXRvIGhhbmRsZXIgPSBfcGFnZUNvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhhbmRsZXJGb3JV
UkxTY2hlbWUoKmNhbm9uaWNhbFNjaGVtZSk7CisgICAgcmV0dXJuIGhhbmRsZXIgPyBzdGF0aWNf
Y2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSo+KGhhbmRsZXIuZ2V0KCkpLT5h
cGlIYW5kbGVyKCkgOiBuaWw7CiB9CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBA
IC01MzMsMTEgKzUzMSw2IEBAIC0gKHZvaWQpX3NldFdlYnNpdGVEYXRhU3RvcmU6KF9XS1dlYnNp
dGUKIAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogCi0tIChOU011dGFibGVEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+PiAqKV91cmxTY2hlbWVIYW5k
bGVycwotewotICAgIHJldHVybiBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7IH0pOwotfQotCiAjaWYg
UExBVEZPUk0oSU9TKQogLSAoV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKilfY29u
dGVudFByb3ZpZGVyUmVnaXN0cnkKIHsKQEAgLTU1MCw2ICs1NDMsMTEgQEAgLSAodm9pZClfc2V0
Q29udGVudFByb3ZpZGVyUmVnaXN0cnk6KFdLVwogfQogI2VuZGlmCiAKKy0gKFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiljb3B5UGFnZUNvbmZpZ3VyYXRpb24KK3sKKyAgICByZXR1cm4gX3Bh
Z2VDb25maWd1cmF0aW9uLT5jb3B5KCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKFdLUHJpdmF0ZSkKQEAgLTU4NiwxMiArNTg0LDEyIEBAIC0g
KHZvaWQpX3NldEdyb3VwSWRlbnRpZmllcjooTlNTdHJpbmcgKikKIAogLSAoQk9PTClfdHJlYXRz
U0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUKIHsKLSAgICByZXR1cm4gX3RyZWF0c1NI
QTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOworICAgIHJldHVybiBfcGFnZUNvbmZpZ3Vy
YXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOihCT09MKWlu
c2VjdXJlCiB7Ci0gICAgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0g
aW5zZWN1cmU7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRUcmVhdHNTSEExU2lnbmVkQ2Vy
dGlmaWNhdGVzQXNJbnNlY3VyZShpbnNlY3VyZSk7CiB9CiAKIC0gKEJPT0wpX3Jlc3BlY3RzSW1h
Z2VPcmllbnRhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAko
cmV2aXNpb24gMjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvUmVmLmg+CiAKICNpZiBXS19BUElfRU5BQkxFRAog
CkBAIC0zMiwxMiArMzQsMTIgQEAKIAogQGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICgpCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNNdXRhYmxlRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gKl91cmxTY2hlbWVIYW5kbGVy
czsKLQogI2lmIFBMQVRGT1JNKElPUykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OikgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0
cnkgKl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeTsKICNlbmRpZgogCistIChSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4pY29weVBhZ2VDb25maWd1cmF0aW9uOworCiBAZW5kCiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="363794"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>