<?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>58067</bug_id>
          
          <creation_ts>2011-04-07 12:13:03 -0700</creation_ts>
          <short_desc>Somehow about:blank gets into the icon database</short_desc>
          <delta_ts>2011-06-17 17:26:31 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381562</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-07 12:13:03 -0700</bug_when>
    <thetext>Somehow about:blank gets into the icon database</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381839</commentid>
    <comment_count>1</comment_count>
      <attachid>88729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-07 16:39:16 -0700</bug_when>
    <thetext>Created attachment 88729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381891</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-07 17:52:33 -0700</bug_when>
    <thetext>Attachment 88729 did not build on chromium:
Build output: http://queues.webkit.org/results/8347795</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382166</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-08 05:33:27 -0700</bug_when>
    <thetext>Attachment 88729 did not build on chromium:
Build output: http://queues.webkit.org/results/8344972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382334</commentid>
    <comment_count>4</comment_count>
      <attachid>88836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-08 10:12:08 -0700</bug_when>
    <thetext>Created attachment 88836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392575</commentid>
    <comment_count>5</comment_count>
      <attachid>88836</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-26 11:10:45 -0700</bug_when>
    <thetext>Comment on attachment 88836
Patch

Rejecting attachment 88836 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
RLGoogle.cpp
Hunk #3 succeeded at 196 (offset 5 lines).
Hunk #4 succeeded at 204 (offset 5 lines).
Hunk #5 succeeded at 258 (offset 5 lines).
Hunk #6 succeeded at 370 (offset 5 lines).
Hunk #7 succeeded at 443 (offset 5 lines).
Hunk #8 succeeded at 883 (offset 5 lines).
patching file Source/WebCore/platform/KURLGooglePrivate.h
Hunk #1 succeeded at 91 (offset 1 line).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Sam Weinig&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8505937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393600</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-27 09:22:54 -0700</bug_when>
    <thetext>Committed r85056: &lt;http://trac.webkit.org/changeset/85056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422960</commentid>
    <comment_count>7</comment_count>
      <attachid>88836</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-06-17 17:13:37 -0700</bug_when>
    <thetext>Comment on attachment 88836
Patch

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

&gt; Source/WebCore/platform/KURL.cpp:705
&gt; +        if (!protocol[i] || !isLetterMatchIgnoringCase(m_string[i], protocol[i]))

This is wrong for protocolIs(), since protocols can have non-letter characters (numbers, &apos;+&apos;, &apos;-&apos; and &apos;.&apos;) but isLetterMatchIgnoringCase() ASSERTs when the second-argument is not lowercase &apos;a&apos; through &apos;z&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422976</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-17 17:26:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 88836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88836&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/KURL.cpp:705
&gt; &gt; +        if (!protocol[i] || !isLetterMatchIgnoringCase(m_string[i], protocol[i]))
&gt; 
&gt; This is wrong for protocolIs(), since protocols can have non-letter characters (numbers, &apos;+&apos;, &apos;-&apos; and &apos;.&apos;) but isLetterMatchIgnoringCase() ASSERTs when the second-argument is not lowercase &apos;a&apos; through &apos;z&apos;.

The protocolIs function works only for protocols that are all letters. Dave Kilzer filed a bug complaining about that already. I’ll find it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422977</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-17 17:26:31 -0700</bug_when>
    <thetext>It&apos;s bug 61572.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88729</attachid>
            <date>2011-04-07 16:39:16 -0700</date>
            <delta_ts>2011-04-08 10:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58067-20110407163915.patch</filename>
            <type>text/plain</type>
            <size>22490</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMjI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDQtMDcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvbWVob3cgYWJvdXQ6YmxhbmsgZ2V0cyBpbnRvIHRoZSBpY29uIGRh
dGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
ODA2NworICAgICAgICByZGFyOi8vcHJvYmxlbS82NzUxNDQ2CisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGhlIHBvbGljeSBCcmFkeSBzdWdnZXN0ZWQsIHdoZXJlIG9ubHkgaHR0cCBhbmQgaHR0cHMg
VVJMcyBjYW4KKyAgICAgICAgYmUgYXNzb2NpYXRlZCB3aXRoIGFuZCBpY29uLCBndWFyZGluZyBi
b3RoIG9uIHRoZSB3YXkgaW4gdG8gdGhlIGRhdGFiYXNlLAorICAgICAgICBhbmQgb24gdGhlIHdh
eSBvdXQuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFnZUNhbkhhdmVJY29uKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
Y29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwpOiBDYWxsIHBhZ2VDYW5IYXZl
SWNvbgorICAgICAgICBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcgZm9yIGFuIGVtcHR5IFVSTC4K
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uVVJMRm9yUGFn
ZVVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZXRhaW5JY29u
Rm9yUGFnZVVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxl
YXNlSWNvbkZvclBhZ2VVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25E
YXRhYmFzZTo6Z2V0T3JDcmVhdGVQYWdlVVJMUmVjb3JkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OmltcG9ydEljb25VUkxGb3JQYWdlVVJMKTogQnJva2UgYXNzZXJ0
aW9uIGludG8KKyAgICAgICAgdHdvIHNlcGFyYXRlIGFzc2VydGlvbnMgYW5kIGFkZGVkIGEgdGhp
cmQuCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBvcnQpOiBD
YWxsIHBhZ2VDYW5IYXZlSWNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOiBTb3J0
ZWQgaW5jbHVkZXMuIE1vdmVkIGEgRklYTUUgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UpOiBSZW5hbWVkIG1hdGNoTGV0
dGVyIHRvIHRoaXMgbmFtZSwKKyAgICAgICAgb3ZlcmxvYWRlZCBpdCB0byB3b3JrIG9uIGJvdGgg
VUNoYXIgYW5kIGNoYXIsIGFuZCBhZGRlZCBhbiBhc3NlcnRpb24gdG8gaXQuCisgICAgICAgIEFs
c28gbW92ZWQgdGhpcyB0byB0aGUgdG9wIG9mIHRoZSBmaWxlIGFuZCBtYWRlIHRoZSBVQ2hhciB2
ZXJzaW9uIHVzYWJsZQorICAgICAgICBpbiB0aGUgc2hhcmVkIGNvZGUgdXNlZCBldmVuIGJ5IEdv
b2dsZS4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmludmFsaWRhdGUpOiBVcGRhdGVkIGZvciBu
YW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByb3RvY29sSXMpOiBVc2UgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSBpbnN0ZWFkIG9mCisgICAgICAgIHRvQVNDSUlMb3dlciBz
aW5jZSBpdCdzIGZhc3Rlci4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBhcnNlKTogVXBkYXRl
ZCBmb3IgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6cHJvdG9jb2xJcyk6VXNlIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UgaW5zdGVhZCBvZiB0b0FTQ0lJTG93ZXIKKyAgICAgICAg
c2luY2UgaXQncyBmYXN0ZXIuCisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KTogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6IFR3ZWFrZWQgZm9ybWF0
dGluZy4gUmVuYW1lZCBwcm90b2NvbEluSFRUUEZhbWlseQorICAgICAgICB0byBwcm90b2NvbElz
SW5IVFRQRmFtaWx5IGFuZCBhZGRlZCBhIHZlcnNpb24gdGhhdCB3b3JrcyBvbiBhIHN0cmluZy4K
KyAgICAgICAgS2VwdCB0aGUgb2xkIG5hbWUgYXMgYW4gaW5saW5lIGZ1bmN0aW9uIHNvIHdlIGRv
bid0IGhhdmUgdG8gcmVuYW1lCisgICAgICAgIGFsbCB0aGUgY2FsIHNpdGVzIG5vdy4KKworICAg
ICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGUuY3BwOiBSZW5hbWVkIGFzIGFib3ZlLgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OktVUkxHb29nbGVQcml2YXRlKTogVXBkYXRl
ZCBmb3IgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OnNldFV0
ZjgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjpzZXRBc2Np
aSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OmluaXRQcm90
b2NvbElzSW5IVFRQRmFtaWx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xl
UHJpdmF0ZTo6Y29weVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppbnZhbGlkYXRlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaDogRGl0dG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKwogMjAxMS0wNC0wNyAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MzIyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg1LDYgKzExODUsNyBAQCBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhCiBfX1pOSzdXZWJDb3JlMjdBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U2aXNOdWxsRXYKIF9fWk5LN1dlYkNvcmU0Rm9udDV3aWR0
aEVSS05TXzdUZXh0UnVuRVBOM1dURjdIYXNoU2V0SVBLTlNfMTRTaW1wbGVGb250RGF0YUVOUzRf
N1B0ckhhc2hJUzhfRUVOUzRfMTBIYXNoVHJhaXRzSVM4X0VFRUVQTlNfMTNHbHlwaE92ZXJmbG93
RQogX19aTks3V2ViQ29yZTRGb250OGRyYXdUZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdUZXh0UnVuRVJLTlNfMTBGbG9hdFBvaW50RWlpCitfX1pOSzdXZWJDb3JlNEtVUkwxMHByb3Rv
Y29sSXNFUEtjCiBfX1pOSzdXZWJDb3JlNEtVUkwxMWNyZWF0ZUNGVVJMRXYKIF9fWk5LN1dlYkNv
cmU0S1VSTDExaXNMb2NhbEZpbGVFdgogX19aTks3V2ViQ29yZTRLVVJMMTRmaWxlU3lzdGVtUGF0
aEV2CkBAIC0xNTg0LDcgKzE1ODUsNiBAQCBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIy
OWNsZWFudXBTCiBfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0
ZUVSTlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84SlNTdHJpbmdFRUVTNl8K
IF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKIF9fWk5LN1dl
YkNvcmUxNFNlY3VyaXR5T3JpZ2luOWNhbkFjY2Vzc0VQS1MwXwotX19aTks3V2ViQ29yZTRLVVJM
MTBwcm90b2NvbElzRVBLYwogX19aTks3V2ViQ29yZTRLVVJMN2hhc1BhdGhFdgogX19aTks3V2Vi
Q29yZTRLVVJMOXByZXR0eVVSTEV2CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gODMyMjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDExIEBAIHN0YXRpYyBJY29uRGF0YWJhc2VDbGllbnQqIGRlZmF1bHRDbGllbnQKICAg
ICByZXR1cm4gZGVmYXVsdENsaWVudDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHBhZ2VDYW5I
YXZlSWNvbihjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCit7CisgICAgcmV0dXJuIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkocGFnZVVSTCk7Cit9CisKIC8vICoqKioqKioqKioqKioqKioqKioqKioqKgog
Ly8gKioqIE1haW4gVGhyZWFkIE9ubHkgKioqCiAvLyAqKioqKioqKioqKioqKioqKioqKioqKioK
QEAgLTIxOSw3ICsyMjQsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25G
b3JQCiAgICAgLy8gcGFnZVVSTE9yaWdpbmFsIGNhbm5vdCBiZSBzdG9yZWQgd2l0aG91dCBiZWlu
ZyBkZWVwIGNvcGllZCBmaXJzdC4gIAogICAgIC8vIFdlIHNob3VsZCBnbyBvdXIgb2Ygb3VyIHdh
eSB0byBvbmx5IGNvcHkgaXQgaWYgd2UgaGF2ZSB0byBzdG9yZSBpdAogICAgIAotICAgIGlmICgh
aXNPcGVuKCkgfHwgcGFnZVVSTE9yaWdpbmFsLmlzRW1wdHkoKSkKKyAgICBpZiAoIWlzT3Blbigp
IHx8ICFwYWdlQ2FuSGF2ZUljb24ocGFnZVVSTE9yaWdpbmFsKSkKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRJY29uKHNpemUpOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxv
Y2spOwpAQCAtMzA2LDcgKzMxMSw3IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
SWNvblVSTEYKICAgICAvLyBDYW5ub3QgZG8gYW55dGhpbmcgd2l0aCBwYWdlVVJMT3JpZ2luYWwg
dGhhdCB3b3VsZCBlbmQgdXAgc3RvcmluZyBpdCB3aXRob3V0IGRlZXAgY29weWluZyBmaXJzdAog
ICAgIC8vIEFsc28sIGluIHRoZSBjYXNlIHdlIGhhdmUgYSByZWFsIGFuc3dlciBmb3IgdGhlIGNh
bGxlciwgd2UgbXVzdCBkZWVwIGNvcHkgdGhhdCBhcyB3ZWxsCiAgICAgCi0gICAgaWYgKCFpc09w
ZW4oKSB8fCBwYWdlVVJMT3JpZ2luYWwuaXNFbXB0eSgpKQorICAgIGlmICghaXNPcGVuKCkgfHwg
IXBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMT3JpZ2luYWwpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgICAgIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsK
QEAgLTM5Niw3ICs0MDEsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclBhZ2VV
UkwoCiAgICAgCiAgICAgLy8gQ2Fubm90IGRvIGFueXRoaW5nIHdpdGggcGFnZVVSTE9yaWdpbmFs
IHRoYXQgd291bGQgZW5kIHVwIHN0b3JpbmcgaXQgd2l0aG91dCBkZWVwIGNvcHlpbmcgZmlyc3QK
ICAgICAKLSAgICBpZiAoIWlzRW5hYmxlZCgpIHx8IHBhZ2VVUkxPcmlnaW5hbC5pc0VtcHR5KCkp
CisgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhcGFnZUNhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5h
bCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV91
cmxBbmRJY29uTG9jayk7CkBAIC00NDAsNyArNDQ1LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnJl
bGVhc2VJY29uRm9yUGFnZVVSTAogICAgICAgICAKICAgICAvLyBDYW5ub3QgZG8gYW55dGhpbmcg
d2l0aCBwYWdlVVJMT3JpZ2luYWwgdGhhdCB3b3VsZCBlbmQgdXAgc3RvcmluZyBpdCB3aXRob3V0
IGRlZXAgY29weWluZyBmaXJzdAogICAgIAotICAgIGlmICghaXNFbmFibGVkKCkgfHwgcGFnZVVS
TE9yaWdpbmFsLmlzRW1wdHkoKSkKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFwYWdlQ2FuSGF2
ZUljb24ocGFnZVVSTE9yaWdpbmFsKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKQEAgLTU3NSw3ICs1ODAsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwoCiAgICAgCiAgICAgQVNTRVJUKCFp
Y29uVVJMT3JpZ2luYWwuaXNFbXB0eSgpKTsKICAgICAgICAgCi0gICAgaWYgKCFpc09wZW4oKSB8
fCBwYWdlVVJMT3JpZ2luYWwuaXNFbXB0eSgpKQorICAgIGlmICghaXNPcGVuKCkgfHwgIXBhZ2VD
YW5IYXZlSWNvbihwYWdlVVJMT3JpZ2luYWwpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
U3RyaW5nIGljb25VUkwsIHBhZ2VVUkw7CkBAIC04ODUsNyArODkwLDcgQEAgUGFnZVVSTFJlY29y
ZCogSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZQogICAgIC8vIENsaWVudHMgb2YgZ2V0T3JDcmVh
dGVQYWdlVVJMUmVjb3JkKCkgYXJlIHJlcXVpcmVkIHRvIGFjcXVpcmUgdGhlIG1fdXJsQW5kSWNv
bkxvY2sgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QKICAgICBBU1NFUlQoIW1fdXJsQW5kSWNv
bkxvY2sudHJ5TG9jaygpKTsKIAotICAgIGlmIChwYWdlVVJMLmlzRW1wdHkoKSkKKyAgICBpZiAo
IXBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBQYWdl
VVJMUmVjb3JkKiBwYWdlUmVjb3JkID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAuZ2V0KHBhZ2VVUkwp
OwpAQCAtOTIxLDcgKzkyNiw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjppbXBvcnRJY29uVVJMRm9y
UGFnZVUKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgIAogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgb25seSBmb3Igc2V0dGluZyBhY3R1YWwgZXhpc3RpbmcgdXJsIG1hcHBpbmdz
IHNvIGFzc2VydCB0aGF0IG5laXRoZXIgb2YgdGhlc2UgVVJMcyBhcmUgZW1wdHkKLSAgICBBU1NF
UlQoIWljb25VUkwuaXNFbXB0eSgpICYmICFwYWdlVVJMLmlzRW1wdHkoKSk7CisgICAgQVNTRVJU
KCFpY29uVVJMLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFwYWdlVVJMLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKHBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMKSk7CiAgICAgCiAgICAgc2V0SWNvblVS
TEZvclBhZ2VVUkxJblNRTERhdGFiYXNlKGljb25VUkwsIHBhZ2VVUkwpOyAgICAKIH0KQEAgLTEy
MjgsNyArMTIzNSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAg
ICAgICAgICAgIC8vIHNvIGdvIGFoZWFkIGFuZCBhY3R1YWxseSBjcmVhdGUgYSBwYWdlVVJMUmVj
b3JkIGZvciB0aGlzIHVybCBldmVuIHRob3VnaCBpdCdzIG5vdCByZXRhaW5lZC4KICAgICAgICAg
ICAgIC8vIElmIGRhdGFiYXNlIGNsZWFudXAgKmlzKiBhbGxvd2VkLCB3ZSBkb24ndCB3YW50IHRv
IGJvdGhlciBwdWxsaW5nIGluIGEgcGFnZSB1cmwgZnJvbSBkaXNrIHRoYXQgbm9vbmUgaXMgYWN0
dWFsbHkgaW50ZXJlc3RlZAogICAgICAgICAgICAgLy8gaW4gLSB3ZSdsbCBwcnVuZSBpdCBsYXRl
ciBpbnN0ZWFkIQotICAgICAgICAgICAgaWYgKCFwYWdlUmVjb3JkICYmIGRhdGFiYXNlQ2xlYW51
cENvdW50ZXIgJiYgIXBhZ2VVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIXBhZ2VS
ZWNvcmQgJiYgZGF0YWJhc2VDbGVhbnVwQ291bnRlciAmJiBwYWdlQ2FuSGF2ZUljb24ocGFnZVVS
TCkpIHsKICAgICAgICAgICAgICAgICBwYWdlUmVjb3JkID0gbmV3IFBhZ2VVUkxSZWNvcmQocGFn
ZVVSTCk7CiAgICAgICAgICAgICAgICAgbV9wYWdlVVJMVG9SZWNvcmRNYXAuc2V0KHBhZ2VVUkws
IHBhZ2VSZWNvcmQpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5j
cHAJKHJldmlzaW9uIDgzMjI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDE0ICsyNCwxNCBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIktVUkwuaCIKIAogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hl
eE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYg
VVNFKElDVV9VTklDT0RFKQpAQCAtNDMsNyArNDMsOSBAQAogI2luY2x1ZGUgIkdPd25QdHIuaCIK
ICNlbmRpZgogCi0jaW5jbHVkZSA8c3RkaW8uaD4KKy8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMg
dG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdlIGVpdGhlciBo
YXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCisvLyBz
byBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGlu
c3RlYWQuCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAt
NTYsMTEgKzU4LDE5IEBAIHR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxpZFBvcnROdW1iZXIgPSAweEZGRkU7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CiAKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKFVDaGFyIGNoYXJhY3Rlciwg
Y2hhciBsb3dlcmNhc2VMZXR0ZXIpCit7CisgICAgQVNTRVJUKGlzQVNDSUlMb3dlcihsb3dlcmNh
c2VMZXR0ZXIpKTsKKyAgICByZXR1cm4gKGNoYXJhY3RlciB8IDB4MjApID09IGxvd2VyY2FzZUxl
dHRlcjsKK30KKwogI2lmICFVU0UoR09PR0xFVVJMKQogCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1h
a2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRo
ZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQot
Ly8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFZlY3RvcjxVQ2hh
cj4gaW5zdGVhZC4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KGNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHRlcikKK3sKKyAgICBBU1NFUlQoaXNB
U0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOworICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgy
MCkgPT0gbG93ZXJjYXNlTGV0dGVyOworfQogCiBlbnVtIFVSTENoYXJhY3RlckNsYXNzZXMgewog
ICAgIC8vIGFscGhhIApAQCAtMjk1LDcgKzMwNSw3IEBAIGlubGluZSBib29sIEtVUkw6OnByb3Rv
Y29sSXMoY29uc3QgU3RyaW4KIHZvaWQgS1VSTDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9pc1Zh
bGlkID0gZmFsc2U7Ci0gICAgbV9wcm90b2NvbEluSFRUUEZhbWlseSA9IGZhbHNlOworICAgIG1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwogICAgIG1fc2NoZW1lRW5kID0gMDsKICAg
ICBtX3VzZXJTdGFydCA9IDA7CiAgICAgbV91c2VyRW5kID0gMDsKQEAgLTY5Miw3ICs3MDIsNyBA
QCBib29sIEtVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jCiAKICAgICAvLyBEbyB0
aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIXByb3Rv
Y29sW2ldIHx8IHRvQVNDSUlMb3dlcihtX3N0cmluZ1tpXSkgIT0gcHJvdG9jb2xbaV0pCisgICAg
ICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UobV9zdHJp
bmdbaV0sIHByb3RvY29sW2ldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1
bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KQEAgLTEwODUsMTEgKzEwOTUsNiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzU2xhc2hEb3RPckRvdERvdChjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hMZXR0ZXIoY2hhciBjLCBjaGFyIGxv
d2VyY2FzZUxldHRlcikKLXsKLSAgICByZXR1cm4gKGMgfCAweDIwKSA9PSBsb3dlcmNhc2VMZXR0
ZXI7Ci19Ci0KIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAg
Y2hlY2tFbmNvZGVkU3RyaW5nKHN0cmluZyk7CkBAIC0xMTc1LDE2ICsxMTgwLDE2IEBAIHZvaWQg
S1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCAKICAgICBib29sIGhpZXJhcmNoaWNh
bCA9IHVybFtzY2hlbWVFbmQgKyAxXSA9PSAnLyc7CiAKICAgICBib29sIGlzRmlsZSA9IHNjaGVt
ZUVuZCA9PSA0Ci0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFswXSwgJ2YnKQotICAgICAgICAm
JiBtYXRjaExldHRlcih1cmxbMV0sICdpJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsWzJd
LCAnbCcpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFszXSwgJ2UnKTsKLQotICAgIG1fcHJv
dG9jb2xJbkhUVFBGYW1pbHkgPSBtYXRjaExldHRlcih1cmxbMF0sICdoJykKLSAgICAgICAgJiYg
bWF0Y2hMZXR0ZXIodXJsWzFdLCAndCcpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsyXSwg
J3QnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbM10sICdwJykKLSAgICAgICAgJiYgKHVy
bFs0XSA9PSAnOicgfHwgKG1hdGNoTGV0dGVyKHVybFs0XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzon
KSk7CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzBdLCAnZicpCisg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAnaScpCisgICAgICAg
ICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnbCcpCisgICAgICAgICYmIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAnZScpOworCisgICAgbV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5ID0gaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdoJykKKyAg
ICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICd0JykKKyAgICAgICAg
JiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9
PSAnOicgfHwgKGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzRdLCAncycpICYmIHVybFs1
XSA9PSAnOicpKTsKIAogICAgIGlmIChoaWVyYXJjaGljYWwgJiYgdXJsW3NjaGVtZUVuZCArIDJd
ID09ICcvJykgewogICAgICAgICAvLyBUaGUgcGFydCBhZnRlciB0aGUgc2NoZW1lIGlzIGVpdGhl
ciBhIG5ldF9wYXRoIG9yIGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHBhdGggc2VnbWVudCBpcyBl
bXB0eS4KQEAgLTEyNjgsNyArMTI3Myw3IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciog
dXJsLCBjb25zdCAKICAgICAgICAgICAgIGhvc3RTdGFydCA9IHVzZXJFbmQ7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAodXNlclN0YXJ0ID09IHBvcnRFbmQgJiYgIW1fcHJvdG9jb2xJbkhUVFBG
YW1pbHkgJiYgIWlzRmlsZSkgeworICAgICAgICBpZiAodXNlclN0YXJ0ID09IHBvcnRFbmQgJiYg
IW1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiAhaXNGaWxlKSB7CiAgICAgICAgICAgICAvLyBO
byBhdXRob3JpdHkgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcyBpcyBub3QgYSBuZXRfcGF0
aCwgYnV0IHJhdGhlciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCB0d28KICAgICAgICAgICAgIC8v
IHBhdGggc2VnbWVudHMgYXJlIGVtcHR5LiBGb3IgZmlsZSwgaHR0cCBhbmQgaHR0cHMgb25seSwg
YW4gZW1wdHkgYXV0aG9yaXR5IGlzIGFsbG93ZWQuCiAgICAgICAgICAgICB1c2VyU3RhcnQgLT0g
MjsKQEAgLTEzMjMsMTUgKzEzMjgsMTUgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IAogICAgIG1fc2NoZW1lRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CiAKICAgICBi
b29sIGhvc3RJc0xvY2FsSG9zdCA9IHBvcnRFbmQgLSB1c2VyU3RhcnQgPT0gOQotICAgICAgICAm
JiBtYXRjaExldHRlcih1cmxbdXNlclN0YXJ0XSwgJ2wnKQotICAgICAgICAmJiBtYXRjaExldHRl
cih1cmxbdXNlclN0YXJ0KzFdLCAnbycpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2Vy
U3RhcnQrMl0sICdjJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCszXSwg
J2EnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbdXNlclN0YXJ0KzRdLCAnbCcpCi0gICAg
ICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3RhcnQrNV0sICdoJykKLSAgICAgICAgJiYgbWF0
Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCs2XSwgJ28nKQotICAgICAgICAmJiBtYXRjaExldHRlcih1
cmxbdXNlclN0YXJ0KzddLCAncycpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3Rh
cnQrOF0sICd0Jyk7CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3Vz
ZXJTdGFydF0sICdsJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxb
dXNlclN0YXJ0KzFdLCAnbycpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
dXJsW3VzZXJTdGFydCsyXSwgJ2MnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdD
YXNlKHVybFt1c2VyU3RhcnQrM10sICdhJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9y
aW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzRdLCAnbCcpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJ
Z25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs1XSwgJ2gnKQorICAgICAgICAmJiBpc0xldHRlck1h
dGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNl0sICdvJykKKyAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzddLCAncycpCisgICAgICAgICYmIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs4XSwgJ3QnKTsKIAogICAgIC8v
IEZpbGUgVVJMcyBuZWVkIGEgaG9zdCBwYXJ0IHVubGVzcyBpdCBpcyBqdXN0IGZpbGU6Ly8gb3Ig
ZmlsZTovL2xvY2FsaG9zdAogICAgIGJvb2wgZGVnZW5GaWxlUGF0aCA9IHBhdGhTdGFydCA9PSBw
YXRoRW5kICYmIChob3N0U3RhcnQgPT0gaG9zdEVuZCB8fCBob3N0SXNMb2NhbEhvc3QpOwpAQCAt
MTM5NSw3ICsxNDAwLDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0
IAogCiAgICAgLy8gRm9yIGNhbm9uaWNhbGl6YXRpb24sIGVuc3VyZSB3ZSBoYXZlIGEgJy8nIGZv
ciBubyBwYXRoLgogICAgIC8vIERvIHRoaXMgb25seSBmb3IgaGllcmFyY2hpY2FsIFVSTCB3aXRo
IHByb3RvY29sIGh0dHAgb3IgaHR0cHMuCi0gICAgaWYgKG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkg
JiYgaGllcmFyY2hpY2FsICYmIHBhdGhFbmQgPT0gcGF0aFN0YXJ0KQorICAgIGlmIChtX3Byb3Rv
Y29sSXNJbkhUVFBGYW1pbHkgJiYgaGllcmFyY2hpY2FsICYmIHBhdGhFbmQgPT0gcGF0aFN0YXJ0
KQogICAgICAgICAqcCsrID0gJy8nOwogCiAgICAgLy8gYWRkIHBhdGgsIGVzY2FwaW5nIGJhZCBj
aGFyYWN0ZXJzCkBAIC0xNzUyLDcgKzE3NTcsNyBAQCBib29sIHByb3RvY29sSXMoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0CiAgICAgZm9yIChpbnQgaSA9IDA7IDsgKytpKSB7CiAgICAgICAgIGlm
ICghcHJvdG9jb2xbaV0pCiAgICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6JzsKLSAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcih1cmxbaV0pICE9IHByb3RvY29sW2ldKQorICAgICAgICBpZiAo
IWlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW2ldLCBwcm90b2NvbFtpXSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAtMTk0NCw0ICsxOTQ5LDE3IEBAIFN0cmlu
ZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gIiI7CiB9CiAK
K2Jvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMgPSB1cmwuY2hhcmFjdGVycygpOworICAgIHJldHVybiBsZW5ndGggPiA0CisgICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhcmFjdGVyc1swXSwgJ2gnKQorICAgICAgICAm
JiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKGNoYXJhY3RlcnNbMV0sICd0JykKKyAgICAgICAg
JiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyYWN0ZXJzWzJdLCAndCcpCisgICAgICAg
ICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhcmFjdGVyc1szXSwgJ3AnKQorICAgICAg
ICAmJiAoY2hhcmFjdGVyc1s0XSA9PSAnOicKKyAgICAgICAgICAgIHx8IChpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKGNoYXJhY3RlcnNbNF0sICdzJykgJiYgbGVuZ3RoID4gNSAmJiBjaGFyYWN0
ZXJzWzVdID09ICc6JykpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCShyZXZp
c2lvbiA4MzIyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODcsMTMgKzg3LDExIEBAIHB1YmxpYzoKICAgICBLVVJMKGNvbnN0IEtVUkwmIGJh
c2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwogICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwg
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAKLQogI2lmIFVT
RShHT09HTEVVUkwpCi0gICAgLy8gRm9yIGNvbnZlcnNpb25zIGZvciBvdGhlciBzdHJ1Y3R1cmVz
IHRoYXQgaGF2ZSBhbHJlYWR5IHBhcnNlZCBhbmQKKyAgICAvLyBGb3IgY29udmVyc2lvbnMgZnJv
bSBvdGhlciBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSBhbHJlYWR5IHBhcnNlZCBhbmQKICAgICAvLyBj
YW5vbmljYWxpemVkIHRoZSBVUkwuIFRoZSBpbnB1dCBtdXN0IGJlIGV4YWN0bHkgd2hhdCBLVVJM
IHdvdWxkIGhhdmUKICAgICAvLyBkb25lIHdpdGggdGhlIHNhbWUgaW5wdXQuCi0gICAgS1VSTChj
b25zdCBDU3RyaW5nJiBjYW5vbmljYWxTcGVjLAotICAgICAgICAgY29uc3QgdXJsX3BhcnNlOjpQ
YXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKTsKKyAgICBLVVJMKGNvbnN0IENTdHJpbmcmIGNh
bm9uaWNhbFNwZWMsIGNvbnN0IHVybF9wYXJzZTo6UGFyc2VkJiwgYm9vbCBpc1ZhbGlkKTsKICNl
bmRpZgogCiAgICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwpAQCAt
MTUzLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50
LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgogICAgIGJvb2wgcHJvdG9jb2xJcyhj
b25zdCBjaGFyKikgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJbkhUVFBGYW1pbHko
KSBjb25zdDsKKyAgICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKICAgICBi
b29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAKICAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYpOwpAQCAtMTkwLDYgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXRoU3Rh
cnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcm
KCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KIAogI2lmIFVTRShDRikKQEAgLTIyMCw2ICsy
MTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgY2hhbmdpbmcgYWxsIGNhbGxlcnMgdG8gdXNlIHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkuCisgICAgYm9vbCBwcm90b2NvbEluSFRUUEZhbWlseSgpIGNv
bnN0IHsgcmV0dXJuIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKTsgfQorCiBwcml2YXRlOgogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKQEAg
LTI0MSw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIGJv
b2wgbV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgOiAxOwor
ICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKIAogICAgIGludCBtX3NjaGVt
ZUVuZDsKICAgICBpbnQgbV91c2VyU3RhcnQ7CkBAIC0yNzQsNiArMjc2LDcgQEAgY29uc3QgS1VS
TCYgYmxhbmtVUkwoKTsKIC8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2
YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlk
IGJ5IEtVUkwuCiAKIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hh
ciogcHJvdG9jb2wpOworYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKTsKIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOwogCiBi
b29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKQEAgLTM0OCw5ICszNTEsOSBAQCBpbmxpbmUgYm9vbCBLVVJMOjpo
YXNQb3J0KCkgY29uc3QKICAgICByZXR1cm4gbV9ob3N0RW5kIDwgbV9wb3J0RW5kOwogfQogCi1p
bmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0CitpbmxpbmUgYm9v
bCBLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cm90b2NvbEluSFRUUEZhbWlseTsKKyAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5
OwogfQogCiBpbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCShyZXZpc2lvbiA4MzIyNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTQsNyArMTU0LDcgQEAgYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90bwog
CiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUoKQogICAgIDogbV9pc1ZhbGlk
KGZhbHNlKQotICAgICwgbV9wcm90b2NvbEluSFRUUEZhbWlseShmYWxzZSkKKyAgICAsIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseShmYWxzZSkKICAgICAsIG1fdXRmOElzQVNDSUkodHJ1ZSkKICAg
ICAsIG1fc3RyaW5nSXNWYWxpZChmYWxzZSkKIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBLVVJMR29v
Z2xlUHJpdmF0ZTo6S1VSTEdvb2dsZVByaXZhdGUoKQogCiBLVVJMR29vZ2xlUHJpdmF0ZTo6S1VS
TEdvb2dsZVByaXZhdGUoY29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1Zh
bGlkKQogICAgIDogbV9pc1ZhbGlkKGlzVmFsaWQpCi0gICAgLCBtX3Byb3RvY29sSW5IVFRQRmFt
aWx5KGZhbHNlKQorICAgICwgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5KGZhbHNlKQogICAgICwg
bV9wYXJzZWQocGFyc2VkKQogICAgICwgbV91dGY4SXNBU0NJSSh0cnVlKQogICAgICwgbV9zdHJp
bmdJc1ZhbGlkKGZhbHNlKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgS1VSTEdvb2dsZVByaXZh
dGU6OnNldFV0ZjgoY29uc3QgQ1MKIAogICAgIG1fdXRmOCA9IHN0cjsKICAgICBtX3N0cmluZ0lz
VmFsaWQgPSBmYWxzZTsKLSAgICBpbml0UHJvdG9jb2xJbkhUVFBGYW1pbHkoKTsKKyAgICBpbml0
UHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwogfQogCiB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpz
ZXRBc2NpaShjb25zdCBDU3RyaW5nJiBzdHIpCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBLVVJM
R29vZ2xlUHJpdmF0ZTo6c2V0QXNjaWkoY29uc3QgQwogICAgIG1fdXRmOCA9IHN0cjsKICAgICBt
X3V0ZjhJc0FTQ0lJID0gdHJ1ZTsKICAgICBtX3N0cmluZ0lzVmFsaWQgPSBmYWxzZTsKLSAgICBp
bml0UHJvdG9jb2xJbkhUVFBGYW1pbHkoKTsKKyAgICBpbml0UHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpOwogfQogCiB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0IEtVUkwmIGJhc2Us
CkBAIC0yNTMsMjYgKzI1MywyNiBAQCB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjppbml0KGNvbnN0
IEtVUkwmCiAgICAgfQogfQogCi12b2lkIEtVUkxHb29nbGVQcml2YXRlOjppbml0UHJvdG9jb2xJ
bkhUVFBGYW1pbHkoKQordm9pZCBLVVJMR29vZ2xlUHJpdmF0ZTo6aW5pdFByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKQogewogICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIG1fcHJvdG9jb2xJ
bkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAgICAgICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0g
ZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBzY2hlbWUg
PSBtX3V0ZjguZGF0YSgpICsgbV9wYXJzZWQuc2NoZW1lLmJlZ2luOwogICAgIGlmIChtX3BhcnNl
ZC5zY2hlbWUubGVuID09IDQpCi0gICAgICAgIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBsb3dl
ckNhc2VFcXVhbHNBU0NJSShzY2hlbWUsIHNjaGVtZSArIDQsICJodHRwIik7CisgICAgICAgIG1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKHNjaGVtZSwgc2No
ZW1lICsgNCwgImh0dHAiKTsKICAgICBlbHNlIGlmIChtX3BhcnNlZC5zY2hlbWUubGVuID09IDUp
Ci0gICAgICAgIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBsb3dlckNhc2VFcXVhbHNBU0NJSShz
Y2hlbWUsIHNjaGVtZSArIDUsICJodHRwcyIpOworICAgICAgICBtX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHkgPSBsb3dlckNhc2VFcXVhbHNBU0NJSShzY2hlbWUsIHNjaGVtZSArIDUsICJodHRwcyIp
OwogICAgIGVsc2UKLSAgICAgICAgbV9wcm90b2NvbEluSFRUUEZhbWlseSA9IGZhbHNlOworICAg
ICAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKIH0KIAogdm9pZCBLVVJMR29v
Z2xlUHJpdmF0ZTo6Y29weVRvKEtVUkxHb29nbGVQcml2YXRlKiBkZXN0KSBjb25zdAogewogICAg
IGRlc3QtPm1faXNWYWxpZCA9IG1faXNWYWxpZDsKLSAgICBkZXN0LT5tX3Byb3RvY29sSW5IVFRQ
RmFtaWx5ID0gbV9wcm90b2NvbEluSFRUUEZhbWlseTsKKyAgICBkZXN0LT5tX3Byb3RvY29sSXNJ
bkhUVFBGYW1pbHkgPSBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CiAgICAgZGVzdC0+bV9wYXJz
ZWQgPSBtX3BhcnNlZDsKIAogICAgIC8vIERvbid0IGNvcHkgdGhlIDE2LWJpdCBzdHJpbmcgc2lu
Y2UgdGhhdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGFzIG5lZWRlZC4KQEAgLTM2NSw3ICszNjUsNyBA
QCBLVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyCiAgICAgICAgIC8vIGNv
bnN0cnVjdG9yIGlzIHVzZWQuIEluIGFsbCBvdGhlciBjYXNlcywgaXQgZXhwZWN0cyBhIG5vbi1u
dWxsCiAgICAgICAgIC8vIGVtcHR5IHN0cmluZywgd2hpY2ggaXMgd2hhdCBpbml0KCkgd2lsbCBj
cmVhdGUuCiAgICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICBtX3VybC5t
X3Byb3RvY29sSW5IVFRQRmFtaWx5ID0gZmFsc2U7CisgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSA9IGZhbHNlOwogICAgIH0KIH0KIApAQCAtNDM4LDkgKzQzOCw5IEBAIGJv
b2wgS1VSTDo6aGFzUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGhvc3RFbmQoKSA8IHBhdGhTdGFy
dCgpOwogfQogCi1ib29sIEtVUkw6OnByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QKK2Jvb2wg
S1VSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJs
Lm1fcHJvdG9jb2xJbkhUVFBGYW1pbHk7CisgICAgcmV0dXJuIG1fdXJsLm1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseTsKIH0KIAogYm9vbCBLVVJMOjpoYXNQYXRoKCkgY29uc3QKQEAgLTg3OCw3ICs4
NzgsNyBAQCB2b2lkIEtVUkw6OmludmFsaWRhdGUoKQogICAgIC8vIFRoaXMgaXMgb25seSBjYWxs
ZWQgZnJvbSB0aGUgY29uc3RydWN0b3Igc28gcmVzZXR0aW5nIHRoZSAoYXV0b21hdGljYWxseQog
ICAgIC8vIGluaXRpYWxpemVkKSBzdHJpbmcgYW5kIHBhcnNlZCBzdHJ1Y3R1cmUgd291bGQgYmUg
YSB3YXN0ZSBvZiB0aW1lLgogICAgIG1fdXJsLm1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fdXJs
Lm1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAgICBtX3VybC5tX3Byb3RvY29sSXNJ
bkhUVFBGYW1pbHkgPSBmYWxzZTsKIH0KIAogLy8gRXF1YWwgdXAgdG8gcmVmZXJlbmNlIGZyYWdt
ZW50cywgaWYgYW55LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
UHJpdmF0ZS5oCShyZXZpc2lvbiA4MzIyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkxHb29nbGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0OwogCiAg
ICAgICAgIGJvb2wgbV9pc1ZhbGlkOwotICAgICAgICBib29sIG1fcHJvdG9jb2xJbkhUVFBGYW1p
bHk7CisgICAgICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwogICAgICAgICB1cmxf
cGFyc2U6OlBhcnNlZCBtX3BhcnNlZDsgLy8gSW5kZXhlcyBpbnRvIHRoZSBVVEYtOCB2ZXJzaW9u
IG9mIHRoZSBzdHJpbmcuCiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88836</attachid>
            <date>2011-04-08 10:12:08 -0700</date>
            <delta_ts>2011-06-17 17:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58067-20110408101207.patch</filename>
            <type>text/plain</type>
            <size>22630</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMzA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDQtMDggIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvbWVob3cgYWJvdXQ6YmxhbmsgZ2V0cyBpbnRvIHRoZSBpY29uIGRh
dGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
ODA2NworICAgICAgICByZGFyOi8vcHJvYmxlbS82NzUxNDQ2CisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGhlIHBvbGljeSBCcmFkeSBzdWdnZXN0ZWQsIHdoZXJlIG9ubHkgaHR0cCBhbmQgaHR0cHMg
VVJMcyBjYW4KKyAgICAgICAgYmUgYXNzb2NpYXRlZCB3aXRoIGFuZCBpY29uLCBndWFyZGluZyBi
b3RoIG9uIHRoZSB3YXkgaW4gdG8gdGhlIGRhdGFiYXNlLAorICAgICAgICBhbmQgb24gdGhlIHdh
eSBvdXQuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFnZUNhbkhhdmVJY29uKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
Y29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwpOiBDYWxsIHBhZ2VDYW5IYXZl
SWNvbgorICAgICAgICBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcgZm9yIGFuIGVtcHR5IFVSTC4K
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uVVJMRm9yUGFn
ZVVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZXRhaW5JY29u
Rm9yUGFnZVVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxl
YXNlSWNvbkZvclBhZ2VVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25E
YXRhYmFzZTo6Z2V0T3JDcmVhdGVQYWdlVVJMUmVjb3JkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OmltcG9ydEljb25VUkxGb3JQYWdlVVJMKTogQnJva2UgYXNzZXJ0
aW9uIGludG8KKyAgICAgICAgdHdvIHNlcGFyYXRlIGFzc2VydGlvbnMgYW5kIGFkZGVkIGEgdGhp
cmQuCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBvcnQpOiBD
YWxsIHBhZ2VDYW5IYXZlSWNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOiBTb3J0
ZWQgaW5jbHVkZXMuIE1vdmVkIGEgRklYTUUgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UpOiBSZW5hbWVkIG1hdGNoTGV0
dGVyIHRvIHRoaXMgbmFtZSwKKyAgICAgICAgb3ZlcmxvYWRlZCBpdCB0byB3b3JrIG9uIGJvdGgg
VUNoYXIgYW5kIGNoYXIsIGFuZCBhZGRlZCBhbiBhc3NlcnRpb24gdG8gaXQuCisgICAgICAgIEFs
c28gbW92ZWQgdGhpcyB0byB0aGUgdG9wIG9mIHRoZSBmaWxlIGFuZCBtYWRlIHRoZSBVQ2hhciB2
ZXJzaW9uIHVzYWJsZQorICAgICAgICBpbiB0aGUgc2hhcmVkIGNvZGUgdXNlZCBldmVuIGJ5IEdv
b2dsZS4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmludmFsaWRhdGUpOiBVcGRhdGVkIGZvciBu
YW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByb3RvY29sSXMpOiBVc2UgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSBpbnN0ZWFkIG9mCisgICAgICAgIHRvQVNDSUlMb3dlciBz
aW5jZSBpdCdzIGZhc3Rlci4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBhcnNlKTogVXBkYXRl
ZCBmb3IgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6cHJvdG9jb2xJcyk6VXNlIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UgaW5zdGVhZCBvZiB0b0FTQ0lJTG93ZXIKKyAgICAgICAg
c2luY2UgaXQncyBmYXN0ZXIuCisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KTogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6IFR3ZWFrZWQgZm9ybWF0
dGluZy4gUmVuYW1lZCBwcm90b2NvbEluSFRUUEZhbWlseQorICAgICAgICB0byBwcm90b2NvbElz
SW5IVFRQRmFtaWx5IGFuZCBhZGRlZCBhIHZlcnNpb24gdGhhdCB3b3JrcyBvbiBhIHN0cmluZy4K
KyAgICAgICAgS2VwdCB0aGUgb2xkIG5hbWUgYXMgYW4gaW5saW5lIGZ1bmN0aW9uIHNvIHdlIGRv
bid0IGhhdmUgdG8gcmVuYW1lCisgICAgICAgIGFsbCB0aGUgY2FsIHNpdGVzIG5vdy4KKworICAg
ICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGUuY3BwOiBSZW5hbWVkIGFzIGFib3ZlLgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OktVUkxHb29nbGVQcml2YXRlKTogVXBkYXRl
ZCBmb3IgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OnNldFV0
ZjgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjpzZXRBc2Np
aSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OmluaXRQcm90
b2NvbElzSW5IVFRQRmFtaWx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xl
UHJpdmF0ZTo6Y29weVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppbnZhbGlkYXRlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaDogRGl0dG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKwogMjAxMS0wNC0wNSAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgz
MzA3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTExODQsNiArMTE4NCw3IEBAIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmEKIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTZpc051bGxFdgog
X19aTks3V2ViQ29yZTRGb250NXdpZHRoRVJLTlNfN1RleHRSdW5FUE4zV1RGN0hhc2hTZXRJUEtO
U18xNFNpbXBsZUZvbnREYXRhRU5TNF83UHRySGFzaElTOF9FRU5TNF8xMEhhc2hUcmFpdHNJUzhf
RUVFRVBOU18xM0dseXBoT3ZlcmZsb3dFCiBfX1pOSzdXZWJDb3JlNEZvbnQ4ZHJhd1RleHRFUE5T
XzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFaWkKK19f
Wk5LN1dlYkNvcmU0S1VSTDEwcHJvdG9jb2xJc0VQS2MKIF9fWk5LN1dlYkNvcmU0S1VSTDExY3Jl
YXRlQ0ZVUkxFdgogX19aTks3V2ViQ29yZTRLVVJMMTFpc0xvY2FsRmlsZUV2CiBfX1pOSzdXZWJD
b3JlNEtVUkwxNGZpbGVTeXN0ZW1QYXRoRXYKQEAgLTE1ODQsNyArMTU4NSw2IEBAIF9fWk43V2Vi
Q29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFMKIF9fWk43V2ViQ29yZTE2anNTdHJpbmdT
bG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTjNXVEYxMFN0cmluZ0lt
cGxFTlMwXzhKU1N0cmluZ0VFRVM2XwogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDEx
Z2V0TlBPYmplY3RFdgogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW45Y2FuQWNjZXNzRVBL
UzBfCi1fX1pOSzdXZWJDb3JlNEtVUkwxMHByb3RvY29sSXNFUEtjCiBfX1pOSzdXZWJDb3JlNEtV
Ukw3aGFzUGF0aEV2CiBfX1pOSzdXZWJDb3JlNEtVUkw5cHJldHR5VVJMRXYKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lv
biA4MzMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTEgQEAgc3RhdGljIEljb25EYXRhYmFzZUNs
aWVudCogZGVmYXVsdENsaWVudAogICAgIHJldHVybiBkZWZhdWx0Q2xpZW50OwogfQogCitzdGF0
aWMgaW5saW5lIGJvb2wgcGFnZUNhbkhhdmVJY29uKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKK3sK
KyAgICByZXR1cm4gcHJvdG9jb2xJc0luSFRUUEZhbWlseShwYWdlVVJMKTsKK30KKwogLy8gKioq
KioqKioqKioqKioqKioqKioqKioqCiAvLyAqKiogTWFpbiBUaHJlYWQgT25seSAqKioKIC8vICoq
KioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjE5LDcgKzIyNCw3IEBAIEltYWdlKiBJY29uRGF0
YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclAKICAgICAvLyBwYWdlVVJMT3JpZ2luYWwgY2Fubm90
IGJlIHN0b3JlZCB3aXRob3V0IGJlaW5nIGRlZXAgY29waWVkIGZpcnN0LiAgCiAgICAgLy8gV2Ug
c2hvdWxkIGdvIG91ciBvZiBvdXIgd2F5IHRvIG9ubHkgY29weSBpdCBpZiB3ZSBoYXZlIHRvIHN0
b3JlIGl0CiAgICAgCi0gICAgaWYgKCFpc09wZW4oKSB8fCBwYWdlVVJMT3JpZ2luYWwuaXNFbXB0
eSgpKQorICAgIGlmICghaXNPcGVuKCkgfHwgIXBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMT3JpZ2lu
YWwpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEljb24oc2l6ZSk7CiAKICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CkBAIC0zMDYsNyArMzExLDcgQEAgU3RyaW5nIElj
b25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uVVJMRgogICAgIC8vIENhbm5vdCBkbyBhbnl0aGlu
ZyB3aXRoIHBhZ2VVUkxPcmlnaW5hbCB0aGF0IHdvdWxkIGVuZCB1cCBzdG9yaW5nIGl0IHdpdGhv
dXQgZGVlcCBjb3B5aW5nIGZpcnN0CiAgICAgLy8gQWxzbywgaW4gdGhlIGNhc2Ugd2UgaGF2ZSBh
IHJlYWwgYW5zd2VyIGZvciB0aGUgY2FsbGVyLCB3ZSBtdXN0IGRlZXAgY29weSB0aGF0IGFzIHdl
bGwKICAgICAKLSAgICBpZiAoIWlzT3BlbigpIHx8IHBhZ2VVUkxPcmlnaW5hbC5pc0VtcHR5KCkp
CisgICAgaWYgKCFpc09wZW4oKSB8fCAhcGFnZUNhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5hbCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgCiAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fdXJsQW5kSWNvbkxvY2spOwpAQCAtMzk2LDcgKzQwMSw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTCgKICAgICAKICAgICAvLyBDYW5ub3QgZG8gYW55dGhp
bmcgd2l0aCBwYWdlVVJMT3JpZ2luYWwgdGhhdCB3b3VsZCBlbmQgdXAgc3RvcmluZyBpdCB3aXRo
b3V0IGRlZXAgY29weWluZyBmaXJzdAogICAgIAotICAgIGlmICghaXNFbmFibGVkKCkgfHwgcGFn
ZVVSTE9yaWdpbmFsLmlzRW1wdHkoKSkKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFwYWdlQ2Fu
SGF2ZUljb24ocGFnZVVSTE9yaWdpbmFsKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgIAogICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKQEAgLTQ0MCw3ICs0NDUsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMCiAgICAgICAgIAogICAg
IC8vIENhbm5vdCBkbyBhbnl0aGluZyB3aXRoIHBhZ2VVUkxPcmlnaW5hbCB0aGF0IHdvdWxkIGVu
ZCB1cCBzdG9yaW5nIGl0IHdpdGhvdXQgZGVlcCBjb3B5aW5nIGZpcnN0CiAgICAgCi0gICAgaWYg
KCFpc0VuYWJsZWQoKSB8fCBwYWdlVVJMT3JpZ2luYWwuaXNFbXB0eSgpKQorICAgIGlmICghaXNF
bmFibGVkKCkgfHwgIXBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMT3JpZ2luYWwpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwpA
QCAtNTc1LDcgKzU4MCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9yUGFnZVVS
TCgKICAgICAKICAgICBBU1NFUlQoIWljb25VUkxPcmlnaW5hbC5pc0VtcHR5KCkpOwogICAgICAg
ICAKLSAgICBpZiAoIWlzT3BlbigpIHx8IHBhZ2VVUkxPcmlnaW5hbC5pc0VtcHR5KCkpCisgICAg
aWYgKCFpc09wZW4oKSB8fCAhcGFnZUNhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5hbCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBTdHJpbmcgaWNvblVSTCwgcGFnZVVSTDsKQEAgLTg4NSw3
ICs4OTAsNyBAQCBQYWdlVVJMUmVjb3JkKiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlCiAgICAg
Ly8gQ2xpZW50cyBvZiBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQoKSBhcmUgcmVxdWlyZWQgdG8g
YWNxdWlyZSB0aGUgbV91cmxBbmRJY29uTG9jayBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZAog
ICAgIEFTU0VSVCghbV91cmxBbmRJY29uTG9jay50cnlMb2NrKCkpOwogCi0gICAgaWYgKHBhZ2VV
UkwuaXNFbXB0eSgpKQorICAgIGlmICghcGFnZUNhbkhhdmVJY29uKHBhZ2VVUkwpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIFBhZ2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxU
b1JlY29yZE1hcC5nZXQocGFnZVVSTCk7CkBAIC05MjEsNyArOTI2LDkgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OmltcG9ydEljb25VUkxGb3JQYWdlVQogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFE
KCk7CiAgICAgCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGZvciBzZXR0aW5nIGFjdHVh
bCBleGlzdGluZyB1cmwgbWFwcGluZ3Mgc28gYXNzZXJ0IHRoYXQgbmVpdGhlciBvZiB0aGVzZSBV
UkxzIGFyZSBlbXB0eQotICAgIEFTU0VSVCghaWNvblVSTC5pc0VtcHR5KCkgJiYgIXBhZ2VVUkwu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIWljb25VUkwuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQo
IXBhZ2VVUkwuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQocGFnZUNhbkhhdmVJY29uKHBhZ2VVUkwp
KTsKICAgICAKICAgICBzZXRJY29uVVJMRm9yUGFnZVVSTEluU1FMRGF0YWJhc2UoaWNvblVSTCwg
cGFnZVVSTCk7ICAgIAogfQpAQCAtMTIyOCw3ICsxMjM1LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnBlcmZvcm1VUkxJbXBvcnQoKQogICAgICAgICAgICAgLy8gc28gZ28gYWhlYWQgYW5kIGFjdHVh
bGx5IGNyZWF0ZSBhIHBhZ2VVUkxSZWNvcmQgZm9yIHRoaXMgdXJsIGV2ZW4gdGhvdWdoIGl0J3Mg
bm90IHJldGFpbmVkLgogICAgICAgICAgICAgLy8gSWYgZGF0YWJhc2UgY2xlYW51cCAqaXMqIGFs
bG93ZWQsIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHB1bGxpbmcgaW4gYSBwYWdlIHVybCBmcm9t
IGRpc2sgdGhhdCBub29uZSBpcyBhY3R1YWxseSBpbnRlcmVzdGVkCiAgICAgICAgICAgICAvLyBp
biAtIHdlJ2xsIHBydW5lIGl0IGxhdGVyIGluc3RlYWQhCi0gICAgICAgICAgICBpZiAoIXBhZ2VS
ZWNvcmQgJiYgZGF0YWJhc2VDbGVhbnVwQ291bnRlciAmJiAhcGFnZVVSTC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGlmICghcGFnZVJlY29yZCAmJiBkYXRhYmFzZUNsZWFudXBDb3VudGVyICYm
IHBhZ2VDYW5IYXZlSWNvbihwYWdlVVJMKSkgewogICAgICAgICAgICAgICAgIHBhZ2VSZWNvcmQg
PSBuZXcgUGFnZVVSTFJlY29yZChwYWdlVVJMKTsKICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxU
b1JlY29yZE1hcC5zZXQocGFnZVVSTCwgcGFnZVJlY29yZCk7CiAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkocmV2aXNpb24gODMzMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsMTQgKzI0LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5j
bHVkZSAiS1VSTC5oIgogCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCkBAIC00Myw3ICs0Myw5IEBA
CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzdGRpby5oPgorLy8g
RklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2YgdGhlICsgb3BlcmF0b3Igb24g
U3RyaW5nLgorLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUgdGhhdCBvcGVyYXRvciBzbyBp
dCBkb2Vzbid0IGludm9sdmUKKy8vIHNvIG1hbnkgYWxsb2NhdGlvbnMsIG9yIGNoYW5nZSB0aGlz
IHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CkBAIC01NiwxMSArNTgsMTkgQEAgdHlwZWRlZiBWZWN0b3I8VUNo
YXIsIDUxMj4gVUNoYXJCdWZmZXI7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVZhbGlk
UG9ydE51bWJlciA9IDB4RkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51
bWJlciA9IDB4RkZGRjsKIAorc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmlu
Z0Nhc2UoVUNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHRlcikKK3sKKyAgICBBU1NF
UlQoaXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOworICAgIHJldHVybiAoY2hhcmFjdGVy
IHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOworfQorCiAjaWYgIVVTRShHT09HTEVVUkwpCiAK
LS8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9y
IG9uIFN0cmluZy4KLS8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Ig
c28gaXQgZG9lc24ndCBpbnZvbHZlCi0vLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2Ug
dGhpcyB0byB1c2UgVmVjdG9yPFVDaGFyPiBpbnN0ZWFkLgorc3RhdGljIGlubGluZSBib29sIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0
dGVyKQoreworICAgIEFTU0VSVChpc0FTQ0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7CisgICAg
cmV0dXJuIChjaGFyYWN0ZXIgfCAweDIwKSA9PSBsb3dlcmNhc2VMZXR0ZXI7Cit9CiAKIGVudW0g
VVJMQ2hhcmFjdGVyQ2xhc3NlcyB7CiAgICAgLy8gYWxwaGEgCkBAIC0yOTUsNyArMzA1LDcgQEAg
aW5saW5lIGJvb2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbgogdm9pZCBLVVJMOjppbnZh
bGlkYXRlKCkKIHsKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICBtX3Byb3RvY29sSW5IVFRQ
RmFtaWx5ID0gZmFsc2U7CisgICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2U7CiAg
ICAgbV9zY2hlbWVFbmQgPSAwOwogICAgIG1fdXNlclN0YXJ0ID0gMDsKICAgICBtX3VzZXJFbmQg
PSAwOwpAQCAtNjkyLDcgKzcwMiw3IEBAIGJvb2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFy
KiBwcm90b2MKIAogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3
IHN0cmluZyBvYmplY3QuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytp
KSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgdG9BU0NJSUxvd2VyKG1fc3RyaW5nW2ld
KSAhPSBwcm90b2NvbFtpXSkKKyAgICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNMZXR0ZXJN
YXRjaElnbm9yaW5nQ2FzZShtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsg
Ly8gV2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50
LgpAQCAtMTA4NSwxMSArMTA5NSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9y
RG90RG90KGMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBtYXRj
aExldHRlcihjaGFyIGMsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQotewotICAgIHJldHVybiAoYyB8
IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKLX0KLQogdm9pZCBLVVJMOjpwYXJzZShjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5nKTsKQEAgLTEx
NzUsMTYgKzExODAsMTYgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0
IAogICAgIGJvb2wgaGllcmFyY2hpY2FsID0gdXJsW3NjaGVtZUVuZCArIDFdID09ICcvJzsKIAog
ICAgIGJvb2wgaXNGaWxlID0gc2NoZW1lRW5kID09IDQKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIo
dXJsWzBdLCAnZicpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsxXSwgJ2knKQotICAgICAg
ICAmJiBtYXRjaExldHRlcih1cmxbMl0sICdsJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJs
WzNdLCAnZScpOwotCi0gICAgbV9wcm90b2NvbEluSFRUUEZhbWlseSA9IG1hdGNoTGV0dGVyKHVy
bFswXSwgJ2gnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbMV0sICd0JykKLSAgICAgICAg
JiYgbWF0Y2hMZXR0ZXIodXJsWzJdLCAndCcpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsz
XSwgJ3AnKQotICAgICAgICAmJiAodXJsWzRdID09ICc6JyB8fCAobWF0Y2hMZXR0ZXIodXJsWzRd
LCAncycpICYmIHVybFs1XSA9PSAnOicpKTsKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9y
aW5nQ2FzZSh1cmxbMF0sICdmJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZSh1cmxbMV0sICdpJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxb
Ml0sICdsJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdl
Jyk7CisKKyAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFswXSwgJ2gnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFsxXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsy
XSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwgJ3An
KQorICAgICAgICAmJiAodXJsWzRdID09ICc6JyB8fCAoaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZSh1cmxbNF0sICdzJykgJiYgdXJsWzVdID09ICc6JykpOwogCiAgICAgaWYgKGhpZXJhcmNoaWNh
bCAmJiB1cmxbc2NoZW1lRW5kICsgMl0gPT0gJy8nKSB7CiAgICAgICAgIC8vIFRoZSBwYXJ0IGFm
dGVyIHRoZSBzY2hlbWUgaXMgZWl0aGVyIGEgbmV0X3BhdGggb3IgYW4gYWJzX3BhdGggd2hvc2Ug
Zmlyc3QgcGF0aCBzZWdtZW50IGlzIGVtcHR5LgpAQCAtMTI2OCw3ICsxMjczLDcgQEAgdm9pZCBL
VVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IAogICAgICAgICAgICAgaG9zdFN0YXJ0
ID0gdXNlckVuZDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1c2VyU3RhcnQgPT0gcG9ydEVu
ZCAmJiAhbV9wcm90b2NvbEluSFRUUEZhbWlseSAmJiAhaXNGaWxlKSB7CisgICAgICAgIGlmICh1
c2VyU3RhcnQgPT0gcG9ydEVuZCAmJiAhbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ICYmICFpc0Zp
bGUpIHsKICAgICAgICAgICAgIC8vIE5vIGF1dGhvcml0eSBmb3VuZCwgd2hpY2ggbWVhbnMgdGhh
dCB0aGlzIGlzIG5vdCBhIG5ldF9wYXRoLCBidXQgcmF0aGVyIGFuIGFic19wYXRoIHdob3NlIGZp
cnN0IHR3bwogICAgICAgICAgICAgLy8gcGF0aCBzZWdtZW50cyBhcmUgZW1wdHkuIEZvciBmaWxl
LCBodHRwIGFuZCBodHRwcyBvbmx5LCBhbiBlbXB0eSBhdXRob3JpdHkgaXMgYWxsb3dlZC4KICAg
ICAgICAgICAgIHVzZXJTdGFydCAtPSAyOwpAQCAtMTMyMywxNSArMTMyOCwxNSBAQCB2b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgCiAgICAgbV9zY2hlbWVFbmQgPSBwIC0g
YnVmZmVyLmRhdGEoKTsKIAogICAgIGJvb2wgaG9zdElzTG9jYWxIb3N0ID0gcG9ydEVuZCAtIHVz
ZXJTdGFydCA9PSA5Ci0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3RhcnRdLCAnbCcp
Ci0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3RhcnQrMV0sICdvJykKLSAgICAgICAg
JiYgbWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCsyXSwgJ2MnKQotICAgICAgICAmJiBtYXRjaExl
dHRlcih1cmxbdXNlclN0YXJ0KzNdLCAnYScpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1
c2VyU3RhcnQrNF0sICdsJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCs1
XSwgJ2gnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbdXNlclN0YXJ0KzZdLCAnbycpCi0g
ICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3RhcnQrN10sICdzJykKLSAgICAgICAgJiYg
bWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCs4XSwgJ3QnKTsKKyAgICAgICAgJiYgaXNMZXR0ZXJN
YXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0XSwgJ2wnKQorICAgICAgICAmJiBpc0xldHRl
ck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrMV0sICdvJykKKyAgICAgICAgJiYgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzJdLCAnYycpCisgICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCszXSwgJ2EnKQorICAgICAg
ICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNF0sICdsJykKKyAg
ICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzVdLCAnaCcp
CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs2XSwg
J28nKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQr
N10sICdzJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0
YXJ0KzhdLCAndCcpOwogCiAgICAgLy8gRmlsZSBVUkxzIG5lZWQgYSBob3N0IHBhcnQgdW5sZXNz
IGl0IGlzIGp1c3QgZmlsZTovLyBvciBmaWxlOi8vbG9jYWxob3N0CiAgICAgYm9vbCBkZWdlbkZp
bGVQYXRoID0gcGF0aFN0YXJ0ID09IHBhdGhFbmQgJiYgKGhvc3RTdGFydCA9PSBob3N0RW5kIHx8
IGhvc3RJc0xvY2FsSG9zdCk7CkBAIC0xMzk1LDcgKzE0MDAsNyBAQCB2b2lkIEtVUkw6OnBhcnNl
KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgCiAKICAgICAvLyBGb3IgY2Fub25pY2FsaXphdGlvbiwg
ZW5zdXJlIHdlIGhhdmUgYSAnLycgZm9yIG5vIHBhdGguCiAgICAgLy8gRG8gdGhpcyBvbmx5IGZv
ciBoaWVyYXJjaGljYWwgVVJMIHdpdGggcHJvdG9jb2wgaHR0cCBvciBodHRwcy4KLSAgICBpZiAo
bV9wcm90b2NvbEluSFRUUEZhbWlseSAmJiBoaWVyYXJjaGljYWwgJiYgcGF0aEVuZCA9PSBwYXRo
U3RhcnQpCisgICAgaWYgKG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiBoaWVyYXJjaGljYWwg
JiYgcGF0aEVuZCA9PSBwYXRoU3RhcnQpCiAgICAgICAgICpwKysgPSAnLyc7CiAKICAgICAvLyBh
ZGQgcGF0aCwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMKQEAgLTE3NTIsNyArMTc1Nyw3IEBAIGJv
b2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QKICAgICBmb3IgKGludCBpID0g
MDsgOyArK2kpIHsKICAgICAgICAgaWYgKCFwcm90b2NvbFtpXSkKICAgICAgICAgICAgIHJldHVy
biB1cmxbaV0gPT0gJzonOwotICAgICAgICBpZiAodG9BU0NJSUxvd2VyKHVybFtpXSkgIT0gcHJv
dG9jb2xbaV0pCisgICAgICAgIGlmICghaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbaV0s
IHByb3RvY29sW2ldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CkBAIC0x
OTQ0LDQgKzE5NDksMTcgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5n
JgogICAgIHJldHVybiAiIjsKIH0KIAorYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0
IFN0cmluZyYgdXJsKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKKyAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVybC5jaGFyYWN0ZXJzKCk7CisgICAgcmV0dXJu
IGxlbmd0aCA+IDQKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyYWN0
ZXJzWzBdLCAnaCcpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhcmFj
dGVyc1sxXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKGNoYXJh
Y3RlcnNbMl0sICd0JykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFy
YWN0ZXJzWzNdLCAncCcpCisgICAgICAgICYmIChjaGFyYWN0ZXJzWzRdID09ICc6JworICAgICAg
ICAgICAgfHwgKGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhcmFjdGVyc1s0XSwgJ3MnKSAm
JiBsZW5ndGggPiA1ICYmIGNoYXJhY3RlcnNbNV0gPT0gJzonKSk7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDgzMzA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NywxMyArODcsMTEgQEAgcHVibGljOgog
ICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSk7CiAgICAg
S1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0
RW5jb2RpbmcmKTsKIAotCiAjaWYgVVNFKEdPT0dMRVVSTCkKLSAgICAvLyBGb3IgY29udmVyc2lv
bnMgZm9yIG90aGVyIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGFscmVhZHkgcGFyc2VkIGFuZAorICAg
IC8vIEZvciBjb252ZXJzaW9ucyBmcm9tIG90aGVyIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGFscmVh
ZHkgcGFyc2VkIGFuZAogICAgIC8vIGNhbm9uaWNhbGl6ZWQgdGhlIFVSTC4gVGhlIGlucHV0IG11
c3QgYmUgZXhhY3RseSB3aGF0IEtVUkwgd291bGQgaGF2ZQogICAgIC8vIGRvbmUgd2l0aCB0aGUg
c2FtZSBpbnB1dC4KLSAgICBLVVJMKGNvbnN0IENTdHJpbmcmIGNhbm9uaWNhbFNwZWMsCi0gICAg
ICAgICBjb25zdCB1cmxfcGFyc2U6OlBhcnNlZCYgcGFyc2VkLCBib29sIGlzVmFsaWQpOworICAg
IEtVUkwoY29uc3QgQ1N0cmluZyYgY2Fub25pY2FsU3BlYywgY29uc3QgdXJsX3BhcnNlOjpQYXJz
ZWQmLCBib29sIGlzVmFsaWQpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VB
c1JlZmVycmVyKCkgY29uc3Q7CkBAIC0xNTMsNyArMTUxLDcgQEAgcHVibGljOgogICAgIC8vIHRl
cm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2Uu
CiAgICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKICAgICBib29sIHByb3Rv
Y29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9v
bCBwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpIGNvbnN0OwogICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKIAogICAgIGJv
b2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CkBAIC0xOTAsNiArMTg4LDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhFbmQo
KSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKKwogICAg
IG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQogCiAj
aWYgVVNFKENGKQpAQCAtMjIwLDYgKzIxOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50KCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciBjaGFuZ2lu
ZyBhbGwgY2FsbGVycyB0byB1c2UgcHJvdG9jb2xJc0luSFRUUEZhbWlseS4KKyAgICBib29sIHBy
b3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgYm9vbCBpc0hp
ZXJhcmNoaWNhbCgpIGNvbnN0OwpAQCAtMjQxLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBT
dHJpbmcgbV9zdHJpbmc7CiAgICAgYm9vbCBtX2lzVmFsaWQgOiAxOwotICAgIGJvb2wgbV9wcm90
b2NvbEluSFRUUEZhbWlseSA6IDE7CisgICAgYm9vbCBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkg
OiAxOwogCiAgICAgaW50IG1fc2NoZW1lRW5kOwogICAgIGludCBtX3VzZXJTdGFydDsKQEAgLTI3
NCw2ICsyNzYsNyBAQCBjb25zdCBLVVJMJiBibGFua1VSTCgpOwogLy8gVGhpcyBpcyBlc3BlY2lh
bGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vz
c2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KIAogYm9vbCBwcm90b2NvbElzKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Citib29sIHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOwogYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChj
b25zdCBTdHJpbmcmIHVybCk7CiAKIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2ln
bmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwpAQCAtMzQ4LDkgKzM1MSw5
IEBAIGlubGluZSBib29sIEtVUkw6Omhhc1BvcnQoKSBjb25zdAogICAgIHJldHVybiBtX2hvc3RF
bmQgPCBtX3BvcnRFbmQ7CiB9CiAKLWlubGluZSBib29sIEtVUkw6OnByb3RvY29sSW5IVFRQRmFt
aWx5KCkgY29uc3QKK2lubGluZSBib29sIEtVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBj
b25zdAogewotICAgIHJldHVybiBtX3Byb3RvY29sSW5IVFRQRmFtaWx5OworICAgIHJldHVybiBt
X3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CiB9CiAKIGlubGluZSB1bnNpZ25lZCBLVVJMOjpob3N0
U3RhcnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAJ
KHJldmlzaW9uIDgzMzA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIGlzVmFsaWRQcm90b2Nv
bChjb25zdCBTdHJpbmcmIHByb3RvCiAKIEtVUkxHb29nbGVQcml2YXRlOjpLVVJMR29vZ2xlUHJp
dmF0ZSgpCiAgICAgOiBtX2lzVmFsaWQoZmFsc2UpCi0gICAgLCBtX3Byb3RvY29sSW5IVFRQRmFt
aWx5KGZhbHNlKQorICAgICwgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5KGZhbHNlKQogICAgICwg
bV91dGY4SXNBU0NJSSh0cnVlKQogICAgICwgbV9zdHJpbmdJc1ZhbGlkKGZhbHNlKQogewpAQCAt
MTYyLDcgKzE2Miw3IEBAIEtVUkxHb29nbGVQcml2YXRlOjpLVVJMR29vZ2xlUHJpdmF0ZSgpCiAK
IEtVUkxHb29nbGVQcml2YXRlOjpLVVJMR29vZ2xlUHJpdmF0ZShjb25zdCB1cmxfcGFyc2U6OlBh
cnNlZCYgcGFyc2VkLCBib29sIGlzVmFsaWQpCiAgICAgOiBtX2lzVmFsaWQoaXNWYWxpZCkKLSAg
ICAsIG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkoZmFsc2UpCisgICAgLCBtX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHkoZmFsc2UpCiAgICAgLCBtX3BhcnNlZChwYXJzZWQpCiAgICAgLCBtX3V0ZjhJc0FT
Q0lJKHRydWUpCiAgICAgLCBtX3N0cmluZ0lzVmFsaWQoZmFsc2UpCkBAIC0xOTEsNyArMTkxLDcg
QEAgdm9pZCBLVVJMR29vZ2xlUHJpdmF0ZTo6c2V0VXRmOChjb25zdCBDUwogCiAgICAgbV91dGY4
ID0gc3RyOwogICAgIG1fc3RyaW5nSXNWYWxpZCA9IGZhbHNlOwotICAgIGluaXRQcm90b2NvbElu
SFRUUEZhbWlseSgpOworICAgIGluaXRQcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZv
aWQgS1VSTEdvb2dsZVByaXZhdGU6OnNldEFzY2lpKGNvbnN0IENTdHJpbmcmIHN0cikKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpzZXRBc2NpaShjb25zdCBDCiAg
ICAgbV91dGY4ID0gc3RyOwogICAgIG1fdXRmOElzQVNDSUkgPSB0cnVlOwogICAgIG1fc3RyaW5n
SXNWYWxpZCA9IGZhbHNlOwotICAgIGluaXRQcm90b2NvbEluSFRUUEZhbWlseSgpOworICAgIGlu
aXRQcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7CiB9CiAKIHZvaWQgS1VSTEdvb2dsZVByaXZhdGU6
OmluaXQoY29uc3QgS1VSTCYgYmFzZSwKQEAgLTI1MywyNiArMjUzLDI2IEBAIHZvaWQgS1VSTEdv
b2dsZVByaXZhdGU6OmluaXQoY29uc3QgS1VSTCYKICAgICB9CiB9CiAKLXZvaWQgS1VSTEdvb2ds
ZVByaXZhdGU6OmluaXRQcm90b2NvbEluSFRUUEZhbWlseSgpCit2b2lkIEtVUkxHb29nbGVQcml2
YXRlOjppbml0UHJvdG9jb2xJc0luSFRUUEZhbWlseSgpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQp
IHsKLSAgICAgICAgbV9wcm90b2NvbEluSFRUUEZhbWlseSA9IGZhbHNlOworICAgICAgICBtX3By
b3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGNvbnN0IGNoYXIqIHNjaGVtZSA9IG1fdXRmOC5kYXRhKCkgKyBtX3BhcnNlZC5zY2hlbWUu
YmVnaW47CiAgICAgaWYgKG1fcGFyc2VkLnNjaGVtZS5sZW4gPT0gNCkKLSAgICAgICAgbV9wcm90
b2NvbEluSFRUUEZhbWlseSA9IGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKHNjaGVtZSwgc2NoZW1lICsg
NCwgImh0dHAiKTsKKyAgICAgICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gbG93ZXJDYXNl
RXF1YWxzQVNDSUkoc2NoZW1lLCBzY2hlbWUgKyA0LCAiaHR0cCIpOwogICAgIGVsc2UgaWYgKG1f
cGFyc2VkLnNjaGVtZS5sZW4gPT0gNSkKLSAgICAgICAgbV9wcm90b2NvbEluSFRUUEZhbWlseSA9
IGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKHNjaGVtZSwgc2NoZW1lICsgNSwgImh0dHBzIik7CisgICAg
ICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGxvd2VyQ2FzZUVxdWFsc0FTQ0lJKHNjaGVt
ZSwgc2NoZW1lICsgNSwgImh0dHBzIik7CiAgICAgZWxzZQotICAgICAgICBtX3Byb3RvY29sSW5I
VFRQRmFtaWx5ID0gZmFsc2U7CisgICAgICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZh
bHNlOwogfQogCiB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpjb3B5VG8oS1VSTEdvb2dsZVByaXZh
dGUqIGRlc3QpIGNvbnN0CiB7CiAgICAgZGVzdC0+bV9pc1ZhbGlkID0gbV9pc1ZhbGlkOwotICAg
IGRlc3QtPm1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBtX3Byb3RvY29sSW5IVFRQRmFtaWx5Owor
ICAgIGRlc3QtPm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IG1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseTsKICAgICBkZXN0LT5tX3BhcnNlZCA9IG1fcGFyc2VkOwogCiAgICAgLy8gRG9uJ3QgY29w
eSB0aGUgMTYtYml0IHN0cmluZyBzaW5jZSB0aGF0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgYXMgbmVl
ZGVkLgpAQCAtMzY1LDcgKzM2NSw3IEBAIEtVUkw6OktVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBj
b25zdCBTdHIKICAgICAgICAgLy8gY29uc3RydWN0b3IgaXMgdXNlZC4gSW4gYWxsIG90aGVyIGNh
c2VzLCBpdCBleHBlY3RzIGEgbm9uLW51bGwKICAgICAgICAgLy8gZW1wdHkgc3RyaW5nLCB3aGlj
aCBpcyB3aGF0IGluaXQoKSB3aWxsIGNyZWF0ZS4KICAgICAgICAgbV91cmwubV9pc1ZhbGlkID0g
ZmFsc2U7Ci0gICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAg
ICAgICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2U7CiAgICAgfQogfQog
CkBAIC00MzgsOSArNDM4LDkgQEAgYm9vbCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKICAgICByZXR1
cm4gaG9zdEVuZCgpIDwgcGF0aFN0YXJ0KCk7CiB9CiAKLWJvb2wgS1VSTDo6cHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSBjb25zdAorYm9vbCBLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV91cmwubV9wcm90b2NvbEluSFRUUEZhbWlseTsKKyAgICByZXR1
cm4gbV91cmwubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwogfQogCiBib29sIEtVUkw6Omhhc1Bh
dGgoKSBjb25zdApAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgS1VSTDo6aW52YWxpZGF0ZSgpCiAg
ICAgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBzbyByZXNldHRp
bmcgdGhlIChhdXRvbWF0aWNhbGx5CiAgICAgLy8gaW5pdGlhbGl6ZWQpIHN0cmluZyBhbmQgcGFy
c2VkIHN0cnVjdHVyZSB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUuCiAgICAgbV91cmwubV9pc1Zh
bGlkID0gZmFsc2U7Ci0gICAgbV91cmwubV9wcm90b2NvbEluSFRUUEZhbWlseSA9IGZhbHNlOwor
ICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwogfQogCiAvLyBFcXVh
bCB1cCB0byByZWZlcmVuY2UgZnJhZ21lbnRzLCBpZiBhbnkuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgJKHJldmlzaW9uIDgzMzA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsMTEgKzkwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiBzdHJpbmcoKSBjb25zdDsKIAogICAgICAgICBib29sIG1faXNWYWxpZDsKLSAgICAgICAg
Ym9vbCBtX3Byb3RvY29sSW5IVFRQRmFtaWx5OworICAgICAgICBib29sIG1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseTsKICAgICAgICAgdXJsX3BhcnNlOjpQYXJzZWQgbV9wYXJzZWQ7IC8vIEluZGV4
ZXMgaW50byB0aGUgVVRGLTggdmVyc2lvbiBvZiB0aGUgc3RyaW5nLgogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdm9pZCBpbml0UHJvdG9jb2xJbkhUVFBGYW1pbHkoKTsKKyAgICAgICAgdm9pZCBp
bml0UHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwogCiAgICAgICAgIENTdHJpbmcgbV91dGY4Owog
Cg==
</data>
<flag name="review"
          id="81422"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="83907"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>