<?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>142461</bug_id>
          
          <creation_ts>2015-03-08 13:41:37 -0700</creation_ts>
          <short_desc>[Cocoa] Add an option to treat certificate chains with SHA1-signed certificates as insecure</short_desc>
          <delta_ts>2015-06-19 14:54:37 -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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=146155</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=146157</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=146159</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075412</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-03-08 13:41:37 -0700</bug_when>
    <thetext>Add a WKWebViewConfiguration option to make the view treat certificate chains where the signature hash algorithm for a non-root certificate is SHA-1 as insecure for purposes of -[WKWebView containsInsecureContent].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075413</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-08 13:42:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/20086546&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075416</commentid>
    <comment_count>2</comment_count>
      <attachid>248202</attachid>
    <who name="">mitz</who>
    <bug_when>2015-03-08 13:56:07 -0700</bug_when>
    <thetext>Created attachment 248202
Add _treatsSHA1SignedCertificatesAsInsecure property to WKWebViewConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075417</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-08 13:58:38 -0700</bug_when>
    <thetext>Attachment 248202 did not pass style-queue:


ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:35:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:43:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/SecuritySPI.h:49:  The parameter name &quot;certificate&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075913</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-03-10 00:35:28 -0700</bug_when>
    <thetext>Committed most of attachment 248202 in &lt;http://trac.webkit.org/r181317&gt;, but left out the OS X part. I am going to turn that on soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076750</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-03-12 14:02:46 -0700</bug_when>
    <thetext>Finished landing this in &lt;http://trac.webkit.org/r181455&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103262</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-06-19 10:05:05 -0700</bug_when>
    <thetext>So it looks like these commits ensure that Apple port users get some warning if a SHA1 certificate is used in the chain for the main resource (without blocking anything). Kudos for that change. But it allows SHA1 certificates in subresources without any warning. Surely that is not the desired behavior?

Instead of adding the second hasInsecureContent parameter to PageLoadState::didCommitLoad (which should only be called for the main resource), it would probably be better to add a new member function to PageLoadState for this.

Aside #1: hasInsecureContent is not an accurate name for the new parameter to PageLoadState::didCommitLoad: the only reason it could be true is if the certificate uses a SHA1 signature, so hasInsecureContent will usually be *false* if the certificate is insecure. We should fix that. I don&apos;t have a great alternative name, but one possibility is hasDubiouslySecureContent, since &quot;dubious&quot; is often used to indicate that the security is acceptable (we&apos;re not going to block the connection) but not good. This isn&apos;t a great name either, but it&apos;s much better, since this code cannot ever block any content.

Aside #2: I&apos;m working on a patch to replace treatsSHA1SignedCertificatesAsInsecure in WebPageConfiguration with a platform-specific object (my current working name for it is WebCore::CertificateInfo::DubiousnessConfiguration) since (a) the curl and soup ports will never use it, and (b) WebPageConfiguration is used to hold a few very important objects, not preferences (c) that is one highly-specific certificate check out of many, and WebPageProxy is not the right layer for it to be in. (Alternatively we could use conditional compilation for it, but that only solves (a) and not (b) or (c).)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103424</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-06-19 14:54:37 -0700</bug_when>
    <thetext>(In reply to comment #6)

Thanks for the comment and the new bugs you’ve filed, Michael!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248202</attachid>
            <date>2015-03-08 13:56:07 -0700</date>
            <delta_ts>2015-03-08 14:01:46 -0700</delta_ts>
            <desc>Add _treatsSHA1SignedCertificatesAsInsecure property to WKWebViewConfiguration</desc>
            <filename>bug-142461-20150308135545.patch</filename>
            <type>text/plain</type>
            <size>22070</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTI0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAzLTA4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIDxyZGFy
Oi8vcHJvYmxlbS8yMDA4NjU0Nj4gW0NvY29hXSBBZGQgYW4gb3B0aW9uIHRvIHRyZWF0IGNlcnRp
ZmljYXRlIGNoYWlucyB3aXRoIFNIQTEtc2lnbmVkIGNlcnRpZmljYXRlcyBhcyBpbnNlY3VyZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNDYxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIHJlZmVyZW5jZSB0byBTZWN1cml0eVNQ
SS5oIGFuZCBzb3J0ZWQgdGhlCisgICAgICAgIHNwaS9jb2NvYSBncm91cC4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvLmg6IERlY2xhcmVkIG5ldyBtZW1i
ZXIgZnVuY3Rpb24KKyAgICAgICAgY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRl
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpjb250YWluc05vblJvb3RTSEEx
U2lnbmVkQ2VydGlmaWNhdGUpOiBBZGRlZC4gQ2hlY2tzIGlmIGFueSBidXQKKyAgICAgICAgdGhl
IGxhc3QgY2VydGlmaWNhdGUgaW4gdGhlIGNoYWluIHVzZXMgU0hBLTEgYXMgaXRzIHNpZ25hdHVy
ZSBoYXNoIGFsZ29yaXRobS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0
aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Y29udGFp
bnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRlKTogQWRkZWQgbm90SW1wbGVtZW50ZWQKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q2VydGlmaWNhdGVJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNv
bnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSk6IERpdHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg6IEFkZGVkLgorCiAyMDE1LTAzLTA4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEluIFJlbmRl
ckxheWVyQ29tcG9zaXRvciwgdHJhY2sgbGF5ZXIgYm91bmRzIGFuZCB0aGUgaGF2ZUNvbXB1dGVk
Qm91bmRzIGZsYWcgdG9nZXRoZXIgaW4gYSBzdHJ1Y3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTIwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTMyNSw2ICsxMzI1LDcgQEAKIAkJMzM5QjVCNjMxMzFEQUEzMjAwRjQ4
RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVn
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMz
RDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEg
LyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTM1NzE4ODNFRUY2MTg3OTM3NTFFNDA4OSAvKiBSZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
NjYyRjk4NDA0N0NFREJFNUREREFGQUEgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovOyB9
OworCQkzNzE3ODMzQTFBQUNEQ0Y3MDAwOTEwRTMgLyogU2VjdXJpdHlTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MTc4MzM5MUFBQ0RDRjcwMDA5
MTBFMyAvKiBTZWN1cml0eVNQSS5oICovOyB9OwogCQkzNzE3RDdFODE3RUNDNTkxMDAzQzI3NkQg
LyogZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIGluIENvcHkgU2NyaXB0cyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzE3RDdFNTE3RUNDM0E2MDAzQzI3NkQgLyog
ZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsICovOyB9OwogCQkzNzFBNjdDQjExQzZDN0RC
MDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFBNjdDQTExQzZDN0RCMDAwNDdCOEIgLyogSHlwaGVuYXRp
b25DRi5jcHAgKi87IH07CiAJCTM3MUU2NUNDMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcx
RTY1Q0IxMzY2MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmggKi87IH07CkBAIC04NDE4
LDYgKzg0MTksNyBAQAogCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9u
Q2VudGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb25DZW50ZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzlCNUI2MjEzMURBQTMyMDBGNDhEMDIg
LyogQ29va2llc1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
b2tpZXNTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNjYyRjk4NDA0
N0NFREJFNUREREFGQUEgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOyBwYXRoID0g
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKKwkJMzcxNzgzMzkxQUFDRENGNzAwMDkxMEUzIC8qIFNlY3VyaXR5U1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyaXR5U1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCAvKiBleHRy
YWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gImV4dHJhY3QtbG9j
YWxpemFibGUtc3RyaW5ncy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUE2
N0NBMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEh5cGhlbmF0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVNlcmlhbGl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzY1LDYgKzE2MzY3LDcgQEAKIAkJNjUzRUY4
MzcxOUEwNDNBRTAwNTIyMDJDIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDRDQwOTdGRjFBOEM4NTVGMDA0QzY1RTkgLyogQ0ZOU1VSTENv
bm5lY3Rpb25TUEkuaCAqLywKIAkJCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRl
eHRTUEkuaCAqLywKIAkJCQlDRTEyNTI0QTFBMTZDNzlCMDA4NjQ0ODAgLyogRGlzcGF0Y2hTUEku
aCAqLywKIAkJCQlDRTEyNTI0NDFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5o
ICovLApAQCAtMTYzODAsOSArMTYzODMsOSBAQAogCQkJCUNFMTI1MjQ2MUExNkMyQzIwMDg2NDQ4
MCAvKiBOU1BvaW50ZXJGdW5jdGlvbnNTUEkuaCAqLywKIAkJCQlDRTEyNTI1MjFBMUJFQzA2MDA4
NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCAqLywKIAkJCQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAg
LyogTlNVUkxEb3dubG9hZFNQSS5oICovLAotCQkJCUNENDA5N0ZGMUE4Qzg1NUYwMDRDNjVFOSAv
KiBDRk5TVVJMQ29ubmVjdGlvblNQSS5oICovLAogCQkJCTY1M0VGODM4MTlBMDQzQUUwMDUyMjAy
QyAvKiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCAqLywKIAkJCQlDRTEyNTIzQzFBMTY3NkNE
MDA4NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oICovLAorCQkJCTM3MTc4MzM5MUFBQ0RDRjcwMDA5
MTBFMyAvKiBTZWN1cml0eVNQSS5oICovLAogCQkJCUNFQzMzN0FDMUE0NjA3MUYwMDlCODUyMyAv
KiBTZXJ2ZXJzU1BJLmggKi8sCiAJCQkJQTE5RDkzNDUxQTlGRUM3MjAwQjQ2QzI0IC8qIFdlYkZp
bHRlckV2YWx1YXRvclNQSS5oICovLAogCQkJKTsKQEAgLTIzNzc1LDYgKzIzNzc4LDcgQEAKIAkJ
CQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFGRTEzNzUxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdDMjM2MTExMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzcxNzgzM0ExQUFDRENGNzAwMDkxMEUz
IC8qIFNlY3VyaXR5U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTExNjBFNkUxREE3MDBC
RjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURE
RDA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2Vy
dGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9DZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMTgxMjAxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWlu
KENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikgeyBtX2NlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0
aWZpY2F0ZUNoYWluOyB9CiAgICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUNoYWluLmdldCgpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0OworCiAj
aWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRl
SW5mby5oCShyZXZpc2lvbiAxODEyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwx
NSBAQAogI2lmbmRlZiBDZXJ0aWZpY2F0ZUluZm9faAogI2RlZmluZSBDZXJ0aWZpY2F0ZUluZm9f
aAogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm8gewogcHVibGljOgogICAgIENlcnRpZmljYXRlSW5mbygp
IHsgfQogCisgICAgYm9vbCBjb250YWluc05vblJvb3RTSEExU2lnbmVkQ2VydGlmaWNhdGUoKSBj
b25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRp
ZmljYXRlSW5mb01hYy5tbQkocmV2aXNpb24gMTgxMjAxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw4ICsyNiwyNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDZXJ0aWZpY2F0ZUlu
Zm8uaCIKIAorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlNlY3VyaXR5U1BJ
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBDZXJ0aWZpY2F0ZUluZm86OmNvbnRh
aW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0Cit7CisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAw
KQorICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgc2l6ZSA9IENGQXJyYXlHZXRDb3VudChtX2NlcnRp
ZmljYXRlQ2hhaW4uZ2V0KCkpIC0gMTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBTZWNDZXJ0
aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSA9IChTZWNDZXJ0aWZpY2F0ZVJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KG1fY2VydGlmaWNhdGVDaGFpbi5nZXQoKSwgaSk7CisgICAgICAgIGlmIChTZWND
ZXJ0aWZpY2F0ZUdldFNpZ25hdHVyZUhhc2hBbGdvcml0aG0oY2VydGlmaWNhdGUpID09IGtTZWNT
aWduYXR1cmVIYXNoQWxnb3JpdGhtU0hBMSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIENlcnRpZmlj
YXRlSW5mbzo6ZHVtcCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCShyZXZpc2lvbiAxODEy
MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ2VydGlmaWNh
dGVJbmZvX2gKICNkZWZpbmUgQ2VydGlmaWNhdGVJbmZvX2gKIAorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogCkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBHVGxzQ2VydGlm
aWNhdGVGbGFncyB0bHNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rsc0Vycm9yczsgfQogICAg
IHZvaWQgc2V0VExTRXJyb3JzKEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycykgeyBtX3Rs
c0Vycm9ycyA9IHRsc0Vycm9yczsgfQogCisgICAgYm9vbCBjb250YWluc05vblJvb3RTSEExU2ln
bmVkQ2VydGlmaWNhdGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsg
fQorCiBwcml2YXRlOgogICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRl
OwogICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIG1fdGxzRXJyb3JzOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWN1cml0
eVNQSV9oCisjZGVmaW5lIFNlY3VyaXR5U1BJX2gKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjZWxzZQorCit0
eXBlZGVmIHVpbnQzMl90IFNlY1NpZ25hdHVyZUhhc2hBbGdvcml0aG07CitlbnVtIHsKKyAgICBr
U2VjU2lnbmF0dXJlSGFzaEFsZ29yaXRobVVua25vd24gPSAwLAorICAgIGtTZWNTaWduYXR1cmVI
YXNoQWxnb3JpdGhtTUQyID0gMSwKKyAgICBrU2VjU2lnbmF0dXJlSGFzaEFsZ29yaXRobU1ENCA9
IDIsCisgICAga1NlY1NpZ25hdHVyZUhhc2hBbGdvcml0aG1NRDUgPSAzLAorICAgIGtTZWNTaWdu
YXR1cmVIYXNoQWxnb3JpdGhtU0hBMSA9IDQsCisgICAga1NlY1NpZ25hdHVyZUhhc2hBbGdvcml0
aG1TSEEyMjQgPSA1LAorICAgIGtTZWNTaWduYXR1cmVIYXNoQWxnb3JpdGhtU0hBMjU2ID0gNiwK
KyAgICBrU2VjU2lnbmF0dXJlSGFzaEFsZ29yaXRobVNIQTM4NCA9IDcsCisgICAga1NlY1NpZ25h
dHVyZUhhc2hBbGdvcml0aG1TSEE1MTIgPSA4Cit9OworCisjZW5kaWYKKworI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKSB8fCAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAw
MCkKK0VYVEVSTl9DIFNlY1NpZ25hdHVyZUhhc2hBbGdvcml0aG0gU2VjQ2VydGlmaWNhdGVHZXRT
aWduYXR1cmVIYXNoQWxnb3JpdGhtKFNlY0NlcnRpZmljYXRlUmVmIGNlcnRpZmljYXRlKTsKKyNl
bmRpZgorCisjZW5kaWYgLy8gU2VjdXJpdHlTUElfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MTgxMjQ1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTUtMDMtMDggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJLaXQyIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzIwMDg2NTQ2PiBbQ29j
b2FdIEFkZCBhbiBvcHRpb24gdG8gdHJlYXQgY2VydGlmaWNhdGUgY2hhaW5zIHdpdGggU0hBMS1z
aWduZWQgY2VydGlmaWNhdGVzIGFzIGluc2VjdXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOiBJ
bml0aWFsaXplCisgICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIGZyb20gdGhlIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06
CisgICAgICAgIEFkZGVkIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSBp
dmFyLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKTog
Q29weSBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUuCisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0lu
c2VjdXJlXSk6IEFkZGVkIHRoaXMgZ2V0dGVyLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9zZXRUcmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTpdKTogQWRk
ZWQgdGhpcyBzZXR0ZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6IERlY2xhcmVkIG5ldworICAgICAgICBfdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgcHJvcGVydHkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6
OmRpZENvbW1pdExvYWQpOiBVc2UgbmV3IGhhc0luc2VjdXJlQ29udGVudCBwYXJhbWV0ZXIgdG8g
aW5pdGlhbGl6ZQorICAgICAgICBoYXNJbnNlY3VyZUNvbnRlbnQgcGFyYW1ldGVyIGluIHRoZSB1
bmNvbW1pdHRlZCBzdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KTogSW5pdGlhbGl6ZSBuZXcgbV90cmVhdHNTSEEx
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZQorICAgICAgICBtZW1iZXIgdmFyaWFibGUgZnJvbSB0aGUg
V2ViUGFnZUNvbmZpZ3VyYXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Q29tbWl0TG9hZEZvckZyYW1lKTogUGFzcyB0cnVlIGZvciB0aGUgbmV3IGhhc0luc2VjdXJlQ29u
dGVudCB0bworICAgICAgICBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkIGlmIHdlIGFyZSB0
cmVhdGluZyBTSEExLXNpZ25lZCBjZXJ0aWZpY2F0ZXMgYXMgaW5zZWN1cmUgYW5kCisgICAgICAg
IHRoZSBjZXJ0aWZpY2F0ZSBpbmZvIGNvbnRhaW5zIGEgbm9uLXJvb3QgU0hBMS1zaWduZWQgY2Vy
dGlmaWNhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBBZGRlZCBtX3Ry
ZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIG1lbWJlciB2YXJpYWJsZS4KKwogMjAxNS0w
My0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHdpbGxEZXN0cm95RnJhbWUgaW4gV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShyZXZpc2lv
biAxODEyMDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjY3LDEzICsyNjcsMTMgQEAgdm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRG
YWlsUHJvdmlzaW9uYWxMbwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJlYWNoYWJsZVVSTCA9
IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1p
dExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbikKK3ZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRva2VuLCBib29sIGhh
c0luc2VjdXJlQ29udGVudCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2VuLCAmdG9rZW4ubV9w
YWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0dGVkU3RhdGUuc3Rh
dGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5zdGF0
ZSA9IFN0YXRlOjpDb21taXR0ZWQ7Ci0gICAgbV91bmNvbW1pdHRlZFN0YXRlLmhhc0luc2VjdXJl
Q29udGVudCA9IGZhbHNlOworICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5oYXNJbnNlY3VyZUNvbnRl
bnQgPSBoYXNJbnNlY3VyZUNvbnRlbnQ7CiAKICAgICBtX3VuY29tbWl0dGVkU3RhdGUudXJsID0g
bV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAgIG1fdW5jb21taXR0ZWRTdGF0
ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAxODEyMDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMSw3ICsxMzEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKIAot
ICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKKyAgICB2
b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgYm9vbCBoYXNJbnNl
Y3VyZUNvbnRlbnQpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6
VG9rZW4mKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMTgxMjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw2ICsyODUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUoKmNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSkKICAgICAsIG1fbWFpbkZyYW1lKG51bGxwdHIpCiAgICAg
LCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQorICAgICwgbV90cmVhdHNTSEExQ2Vy
dGlmaWNhdGVzQXNJbnNlY3VyZShjb25maWd1cmF0aW9uLnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZp
Y2F0ZXNBc0luc2VjdXJlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRM
YXllclRyZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJz
dExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTI4MTgsOCAr
MjgxOSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lCiAKICAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKLSAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRD
b21taXRMb2FkKHRyYW5zYWN0aW9uKTsKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
KyAgICAgICAgYm9vbCBoYXNJbnNlY3VyZUNlcnRpZmljYXRlQ2hhaW4gPSBtX3RyZWF0c1NIQTFD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlICYmIGNlcnRpZmljYXRlSW5mby5jb250YWluc05vblJvb3RT
SEExU2lnbmVkQ2VydGlmaWNhdGUoKTsKKyAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZENvbW1p
dExvYWQodHJhbnNhY3Rpb24sIGhhc0luc2VjdXJlQ2VydGlmaWNhdGVDaGFpbik7CisgICAgfQog
CiAjaWYgVVNFKEFQUEtJVCkKICAgICAvLyBGSVhNRSAoYnVnIDU5MTExKTogZGlkQ29tbWl0TG9h
ZEZvckZyYW1lIGNvbWVzIHRvbyBsYXRlIHdoZW4gcmVzdG9yaW5nIGEgcGFnZSBmcm9tIGIvZiBj
YWNoZSwgbWFraW5nIHVzIGRpc2FibGUgc2VjdXJlIGV2ZW50IG1vZGUgaW4gcGFzc3dvcmQgZmll
bGRzLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMTgxMjAxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksNiArMjQ5LDggQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0
aW9uIHsKIAogICAgIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSBudWxscHRyOwogCisgICAg
Ym9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IGZhbHNlOworCiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZhbHVlczsKIH07CiAK
QEAgLTE0MjUsNiArMTQyNyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY3VzdG9tVXNlckFn
ZW50OwogICAgIFN0cmluZyBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7CiAKKyAgICBib29sIG1f
dHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmU7CisKICAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yUHJveHk+IG1faW5zcGVjdG9yOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0J
KHJldmlzaW9uIDE4MTIwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTEsNiArMjkxLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZp
c2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZpZ3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJd
LT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmlndXJhdGlvbiBfd2Vic2l0ZURhdGFTdG9yZV0tPl93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgd2ViUGFnZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvbklEID0gd2ViUGFnZUNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCk7CisgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udHJlYXRzU0hBMVNpZ25lZENl
cnRpZmljYXRlc0FzSW5zZWN1cmUgPSBbX2NvbmZpZ3VyYXRpb24gX3RyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlXTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwOwogICAgIE5TU3RyaW5nICpncm91cElkZW50aWZpZXIgPSBjb25maWd1cmF0
aW9uLl9ncm91cElkZW50aWZpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZp
c2lvbiAxODEyMDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmU+PiBf
d2Vic2l0ZURhdGFTdG9yZTsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3Jl
bGF0ZWRXZWJWaWV3OwogICAgIFdlYktpdDo6V2Vha09iakNQdHI8V0tXZWJWaWV3PiBfYWx0ZXJu
YXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlczsKKyAgICBCT09MIF90cmVhdHNTSEExU2ln
bmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9ncm91
cElkZW50aWZpZXI7CiAgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxOU1N0cmluZz4+IF9h
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CiAKQEAgLTEyNiw2ICsxMjcsNyBAQCAtIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLl93ZWJzaXRlRGF0
YVN0b3JlID0gc2VsZi5fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBjb25maWd1cmF0aW9uLl9yZWxh
dGVkV2ViVmlldyA9IF9yZWxhdGVkV2ViVmlldy5nZXQoKS5nZXQoKTsKICAgICBjb25maWd1cmF0
aW9uLl9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzID0gX2FsdGVybmF0ZVdl
YlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXMuZ2V0KCkuZ2V0KCk7CisgICAgY29uZmlndXJhdGlv
bi0+X3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gX3RyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb25m
aWd1cmF0aW9uLl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeSA9IHNlbGYuX2NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5OwogI2VuZGlmCkBAIC0yODIsNiArMjg0LDE2IEBAIC0gKHZvaWQpX3NldEdyb3Vw
SWRlbnRpZmllcjooTlNTdHJpbmcgKikKICAgICBfZ3JvdXBJZGVudGlmaWVyID0gZ3JvdXBJZGVu
dGlmaWVyOwogfQogCistIChCT09MKV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNl
Y3VyZQoreworICAgIHJldHVybiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7Cit9CisKKy0gKHZvaWQpX3NldFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlOihCT09MKWluc2VjdXJlCit7CisgICAgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNB
c0luc2VjdXJlID0gaW5zZWN1cmU7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiAtIChCT09MKV9h
bGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAxODEyMDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDYgKzQyLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1f
c2V0QWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlczopIFdLV2ViVmlldyAqX2Fs
dGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXM7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOikg
Qk9PTCBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgV0tfQVZBSUxBQkxF
KFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzQWx0ZXJuYXRlRnVsbHNjcmVlbjopIEJP
T0wgX2FsbG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4gV0tfQVZBSUxBQkxFKE5BLCBXS19JT1NfVEJB
KTsKICNlbmRpZgo=
</data>
<flag name="review"
          id="273113"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>