<?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>36152</bug_id>
          
          <creation_ts>2010-03-15 21:04:39 -0700</creation_ts>
          <short_desc>[chromium] Add support for history.pushState and history.replaceState</short_desc>
          <delta_ts>2010-03-16 11:05:13 -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 Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
    
    <cc>vitalyr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>199975</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-15 21:04:39 -0700</bug_when>
    <thetext>[chromium] Add support for history.pushState and history.replaceState

This involves making the changes required to support these methods in the
Chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199986</commentid>
    <comment_count>1</comment_count>
      <attachid>50758</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-15 21:27:00 -0700</bug_when>
    <thetext>Created attachment 50758
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199987</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-15 21:30:22 -0700</bug_when>
    <thetext>With this patch, all stateobject layout tests pass except for:

  fast/loader/stateobjects/pushstate-object-types.html = TEXT
  fast/loader/stateobjects/state-api-on-detached-frame-crash.html = TEXT

The first fails due to differences in the way we serialize Date and RegExp objects.

The second fails due to an exception thrown--not a crash, which the test was written to detect--while trying to access window.history.replaceState on a detached window (from an iframe that has been removed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200043</commentid>
    <comment_count>3</comment_count>
      <attachid>50758</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-16 00:12:09 -0700</bug_when>
    <thetext>Comment on attachment 50758
v1 patch

Ok.  I&apos;m sad about backForwardNavigationScheme, but it looks like that&apos;s already there...

 590     bool isHashChange =
 591         !m_webFrame-&gt;frame()-&gt;loader()-&gt;history()-&gt;currentItem()-&gt;stateObject();

No need to line break in WebKit-land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200276</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-16 10:13:06 -0700</bug_when>
    <thetext>Thanks Adam.  Yes, backForwardNavigationScheme is the suck.  This change makes it suck a bit less since it will be seen by much less code; however, I really need to kill it somehow.  It should be pretty easy to do :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200280</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-16 10:25:15 -0700</bug_when>
    <thetext>&gt;  590     bool isHashChange =
&gt;  591        
&gt; !m_webFrame-&gt;frame()-&gt;loader()-&gt;history()-&gt;currentItem()-&gt;stateObject();
&gt; 
&gt; No need to line break in WebKit-land.

Right, but line breaking like this is optional, no?  There are a number of similar line breaks in the same function and in this file.  I prefer to leave the line breaks for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200282</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-16 10:27:25 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/56070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200299</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-16 11:05:13 -0700</bug_when>
    <thetext>&gt; Right, but line breaking like this is optional, no?

Yes, it&apos;s optional.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50758</attachid>
            <date>2010-03-15 21:27:00 -0700</date>
            <delta_ts>2010-03-16 00:12:08 -0700</delta_ts>
            <desc>v1 patch</desc>
            <filename>hist_1.txt</filename>
            <type>text/plain</type>
            <size>21241</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2MDMyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOSBAQAorMjAxMC0wMy0xNSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE1MgorICAgICAgICBb
Y2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBoaXN0b3J5LnB1c2hTdGF0ZSBhbmQgaGlzdG9yeS5y
ZXBsYWNlU3RhdGUKKworICAgICAgICBUaGlzIGlzIGNvdmVyZWQgYnkgdGhlIGV4aXN0aW5nIHRl
c3RzIGluIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cworCisgICAgICAgICogYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6RGVz
ZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgU3dpdGNoIHRvIHJldHVybmluZyB2ODo6TnVsbCBpbnN0
ZWFkIG9mIHRoZSBlbXB0eSB2YWx1ZSB0byBtYXRjaCBKU0MKKyAgICAgICAgYW5kIHRoZSBzcGVj
LgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQpOiBDYWxsCisgICAgICAgIGRpc3BhdGNo
RGlkTmF2aWdhdGVXaXRoaW5QYWdlIGp1c3QgYmVmb3JlIGRpc3BhdGNoaW5nIGV2ZW50cyB0byB0
aGUKKyAgICAgICAgcGFnZS4gIFRoaXMgb3JkZXJpbmcgaXMgaW1wb3J0YW50IHNpbmNlIHRoZSBl
dmVudCBoYW5kbGVycyBjb3VsZAorICAgICAgICBkZXN0cm95IHRoZSBwYWdlIG9yIHN0YXJ0IGFu
b3RoZXIgbmF2aWdhdGlvbi4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OiBBZGQgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UgdG8KKyAgICAgICAgbm90aWZ5IHRo
ZSBjbGllbnQgd2hlbmV2ZXIgYSBuYXZpZ2F0aW9uIG9jY3VycyB3aXRob3V0IGNoYW5naW5nIGFu
eSBvZgorICAgICAgICB0aGUgZG9jdW1lbnRzIGluIHRoZSBwYWdlLgorCiAyMDEwLTAzLTE1ICBM
ZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiA1NjAzMikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkwLDE1
ICs1OTAsMTUgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBkZXNlcmlhbGl6ZSgpCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFsaXpl
KCkKICAgICB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICAgICAgd2hpbGUg
KCFtX3JlYWRlci5pc0VvZigpKSB7CiAgICAgICAgICAgICBpZiAoIWRvRGVzZXJpYWxpemUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RhY2tE
ZXB0aCgpICE9IDEpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsK
KyAgICAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogICAgICAgICByZXR1cm4gc2NvcGUuQ2xv
c2UoZWxlbWVudCgwKSk7CiAgICAgfQogCkBAIC02ODYsMTAgKzY4NiwxMCBAQCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWCiAgICAgfQogfQogCi12ODo6TG9jYWw8djg6
OlZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkKIHsKICAgICBp
ZiAoIW1fZGF0YS5pbXBsKCkpCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigp
OworICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
QnVmZmVyVmFsdWVUeXBlKSA9PSAyLCBCdWZmZXJWYWx1ZVR5cGVJc1R3b0J5dGVzKTsKICAgICBS
ZWFkZXIgcmVhZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fZGF0YS5pbXBsKCkt
PmNoYXJhY3RlcnMoKSksIDIgKiBtX2RhdGEubGVuZ3RoKCkpOwogICAgIERlc2VyaWFsaXplciBk
ZXNlcmlhbGl6ZXIocmVhZGVyKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiA1NjAzMikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDkg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvV2lyZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQogCi0gICAgLy8gRGVzZXJpYWxpemVzIHRoZSB2YWx1ZSAoaW4gdGhlIGN1cnJlbnQg
Y29udGV4dCkuIFJldHVybnMgYW4KLSAgICAvLyBlbXB0eSBoYW5kbGUgaW4gY2FzZSBvZiBmYWls
dXJlLgotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRlc2VyaWFsaXplKCk7CisgICAgLy8gRGVz
ZXJpYWxpemVzIHRoZSB2YWx1ZSAoaW4gdGhlIGN1cnJlbnQgY29udGV4dCkuIFJldHVybnMgYSBu
dWxsIHZhbHVlIGluCisgICAgLy8gY2FzZSBvZiBmYWlsdXJlLgorICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBkZXNlcmlhbGl6ZSgpOwogCiBwcml2YXRlOgogICAgIGVudW0gU3RyaW5nRGF0YU1v
ZGUgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1NjAzMikKKysrIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3Myw2ICsx
NzczLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbgogICAgICAg
ICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIH0KIAorICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZE5hdmlnYXRlV2l0aGluUGFnZSgpOworCiAgICAgaWYgKHN0YXRlT2JqZWN0KSB7CiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnN0YXRlUG9wcGVkKHN0YXRlT2JqZWN0KTsKICAgICAgICAg
bV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTYwMzIpCisrKyBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwm
LCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgPSAw
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MDMyKQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUzIEBACiAyMDEwLTAzLTE1ICBE
YXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2MTUyCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIGhpc3Rv
cnkucHVzaFN0YXRlIGFuZCBoaXN0b3J5LnJlcGxhY2VTdGF0ZQorCisgICAgICAgICogcHVibGlj
L1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRO
YXZpZ2F0ZVdpdGhpblBhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIGRpZENo
YW5nZUxvY2F0aW9uV2l0aGluUGFnZSB0byBoZXJlLiAgT25seSBhZGQgdG8gdGhlIHJlZGlyZWN0
IGNoYWluIGlmCisgICAgICAgIHdlIGFyZSBwZXJmb3JtaW5nIGEgc2ltcGxlIGhhc2ggY2hhbmdl
IChpLmUuLCBubyBzdGF0ZSBvYmplY3Qgb24gdGhlCisgICAgICAgIGhpc3RvcnkgaXRlbSkuICBD
YWxsIHRoZSBvbGQgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlIGZvciBiYWNrd2FyZHMKKyAg
ICAgICAgY29tcGF0IHdpdGggQ2hyb21pdW0uICBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIHN1
YnNlcXVlbnQgcGF0Y2guCisKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENo
YW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKToKKyAgICAgICAg
Q2FsbCB0aGUgbmV3IHZlcnNpb24gb2YgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlIHdpdGhv
dXQgdGhlCisgICAgICAgIHBhcmFtZXRlciB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoaXMgaXMgYSBu
ZXcgbmF2aWdhdGlvbiBvciBub3QuICBXZSBvbmx5CisgICAgICAgIG5lZWQgdGhpcyBtZXRob2Qg
b24gV2ViRnJhbWVDbGllbnQgdG8gc3VwcG9ydCBUZXN0U2hlbGwgLyBEUlQuCisKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhp
blBhZ2UpOgorICAgICAgICBDYWxsIGRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdlIHNpbmNl
IHB1c2hTdGF0ZSBpcyBqdXN0IGEgdHlwZSBvZgorICAgICAgICBpbi1wYWdlIG5hdmlnYXRpb24u
ICBUaGlzIGlzIGFuIGluLXBhZ2UgbmF2aWdhdGlvbiB0aGF0IGFkZHMgYW5vdGhlcgorICAgICAg
ICBlbnRyeSB0byBzZXNzaW9uIGhpc3RvcnkuCisKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAg
ICBDYWxsIGRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdlIHNpbmNlIHJlcGxhY2VTdGF0ZSBp
cyBqdXN0IGEgdHlwZSBvZgorICAgICAgICBpbi1wYWdlIG5hdmlnYXRpb24uICAgVGhpcyBpcyBh
biBpbi1wYWdlIG5hdmlnYXRpb24gdGhhdCByZXBsYWNlcyB0aGUKKyAgICAgICAgY3VycmVudCBz
ZXNzaW9uIGhpc3RvcnkgZW50cnkuCisKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSk6IERvCisgICAgICAgIG5vdGhp
bmcgc2luY2UgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UgaXMgY2FsbGVkIGluIHRoaXMg
Y2FzZSBieQorICAgICAgICB0aGUgRnJhbWVMb2FkZXIuCisKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OnNob3VsZEdvVG9I
aXN0b3J5SXRlbSk6IE1vdmUgdGhlIGNvZGUKKyAgICAgICAgZm9yIGhhbmRsaW5nIHRoZSBkdW1t
eSBjaHJvbWUtYmFjay1mb3J3YXJkOi8vZ28vIFVSTHMgZnJvbQorICAgICAgICBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gdG8gc2hvdWxkR29Ub0hpc3RvcnlJdGVtLCB3
aGljaAorICAgICAgICBwcmV2ZW50cyB0aGUgVVJMcyBmcm9tIGxlYWtpbmcgaW50byBzZXNzaW9u
IGhpc3RvcnkuCisgICAgICAgIHNob3VsZEdvVG9IaXN0b3J5SXRlbSBpcyBjYWxsZWQgYmVmb3Jl
IGFueSB3b3JrIGlzIGRvbmUgYnkgaGlzdG9yeQorICAgICAgICB0cmF2ZXJzYWwsIHNvIHRoaXMg
aXMgYSBiZXR0ZXIgcGxhY2UgZm9yIHRoaXMgaGFjay4gIFVsdGltYXRlbHksIHRoaXMKKyAgICAg
ICAgY29kZSBzaG91bGQgYmUgZWxpbWluYXRkIGluIGZhdm9yIG9mIGJldHRlciBpbnRlZ3JhdGlv
biB3aXRoCisgICAgICAgIEZyYW1lTG9hZGVyIG9yIEhpc3RvcnlDb250cm9sbGVyLgorCisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCisyMDEwLTAzLTE1ICBEYXJpbiBG
aXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgRml4IGJ1aWxkIGJ1c3RhZ2Uu
ICBXZSBhbHNvIG5lZWQgdG8gcHVsbCBkb3duICJ0aGlyZF9wYXJ0eS90Y21hbGxvYyIKIAogICAg
ICAgICAqIERFUFM6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgJKHJldmlzaW9uIDU2MDMyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksOSArMTk5LDE2IEBAIHB1YmxpYzoKICAgICAv
LyBUaGUgZnJhbWUncyBkb2N1bWVudCBhbmQgYWxsIG9mIGl0cyBzdWJyZXNvdXJjZXMgc3VjY2Vl
ZGVkIHRvIGxvYWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKSB7
IH0KIAorICAgIC8vIFRoZSBuYXZpZ2F0aW9uIHJlc3VsdGVkIGluIG5vIGNoYW5nZSB0byB0aGUg
ZG9jdW1lbnRzIHdpdGhpbiB0aGUgcGFnZS4KKyAgICAvLyBGb3IgZXhhbXBsZSwgdGhlIG5hdmln
YXRpb24gbWF5IGhhdmUganVzdCByZXN1bHRlZCBpbiBzY3JvbGxpbmcgdG8gYQorICAgIC8vIG5h
bWVkIGFuY2hvciBvciBhIFBvcFN0YXRlIGV2ZW50IG1heSBoYXZlIGJlZW4gZGlzcGF0Y2hlZC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGVXaXRoaW5QYWdlKFdlYkZyYW1lKiwgYm9vbCBp
c05ld05hdmlnYXRpb24pIHsgfQorCiAgICAgLy8gVGhlIG5hdmlnYXRpb24gcmVzdWx0ZWQgaW4g
c2Nyb2xsaW5nIHRoZSBwYWdlIHRvIGEgbmFtZWQgYW5jaG9yIGluc3RlYWQKICAgICAvLyBvZiBk
b3dubG9hZGluZyBhIG5ldyBkb2N1bWVudC4KKyAgICAvLyBGSVhNRTogVGhlIGlzTmV3TmF2aWdh
dGlvbiBwYXJhbWV0ZXIgaXMgREVQUkVDQVRFRC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlKFdlYkZyYW1lKiwgYm9vbCBpc05ld05hdmlnYXRpb24pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoV2ViRnJhbWUqKSB7
IH0KIAogICAgIC8vIENhbGxlZCB1cG9uIHVwZGF0ZSB0byBzY3JvbGwgcG9zaXRpb24sIGRvY3Vt
ZW50IHN0YXRlLCBhbmQgb3RoZXIKICAgICAvLyBub24tbmF2aWdhdGlvbmFsIGV2ZW50cyByZWxh
dGVkIHRvIHRoZSBkYXRhIGhlbGQgYnkgV2ViSGlzdG9yeUl0ZW0uCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDU2MDMy
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIgIC8v
IG5lZWRlZCBieSBGb3JtU3RhdGUuaApAQCAtNTY4LDcgKzU2OSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdpbGwKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKQogewog
ICAgIC8vIEFuY2hvciBmcmFnbWVudCBuYXZpZ2F0aW9ucyBhcmUgbm90IG5vcm1hbCBsb2Fkcywg
c28gd2UgbmVlZCB0byBzeW50aGVzaXplCiAgICAgLy8gc29tZSBldmVudHMgZm9yIG91ciBkZWxl
Z2F0ZS4KQEAgLTU4NSw2ICs1ODYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkQwogICAgIGlmICh3ZWJWaWV3LT5jbGllbnQoKSAmJiBsb2FkZXJDb21wbGV0ZWQp
CiAgICAgICAgIHdlYlZpZXctPmNsaWVudCgpLT5kaWRTdGFydExvYWRpbmcoKTsKIAorICAgIC8v
IFdlIG5lZWQgdG8gY2xhc3NpZnkgc29tZSBoYXNoIGNoYW5nZXMgYXMgY2xpZW50IHJlZGlyZWN0
cy4KKyAgICBib29sIGlzSGFzaENoYW5nZSA9CisgICAgICAgICFtX3dlYkZyYW1lLT5mcmFtZSgp
LT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5zdGF0ZU9iamVjdCgpOworCiAg
ICAgV2ViRGF0YVNvdXJjZUltcGwqIGRzID0gbV93ZWJGcmFtZS0+ZGF0YVNvdXJjZUltcGwoKTsK
ICAgICBBU1NFUlQoZHMpOyAgLy8gU2hvdWxkIG5vdCBiZSBudWxsIHdoZW4gbmF2aWdhdGluZyB0
byBhIHJlZmVyZW5jZSBmcmFnbWVudCEKICAgICBpZiAoZHMpIHsKQEAgLTU5NSwyNyArNjAwLDI5
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEMKICAgICAgICAgICAg
IGRzLT5jbGVhclJlZGlyZWN0Q2hhaW4oKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgaWYgdGhpcyBsb2NhdGlvbiBjaGFuZ2UgaXMgYmVjYXVzZSBvZiBhIEpTLWluaXRpYXRl
ZAotICAgICAgICAvLyBjbGllbnQgcmVkaXJlY3QgKGUuZyBvbmxvYWQvc2V0VGltZW91dCBkb2N1
bWVudC5sb2NhdGlvbi5ocmVmPSkuCi0gICAgICAgIC8vIEZJWE1FOiAoYnVncyAxMDg1MzI1LCAx
MDQ2ODQxKSBXZSBkb24ndCBnZXQgcHJvcGVyIHJlZGlyZWN0Ci0gICAgICAgIC8vIHBlcmZvcm1l
ZC9jYW5jZWxsZWQgbm90aWZpY2F0aW9ucyBhY3Jvc3MgYW5jaG9yIG5hdmlnYXRpb25zLCBzbyB0
aGUKLSAgICAgICAgLy8gb3RoZXIgcmVkaXJlY3QtdHJhY2tpbmcgY29kZSBpbiB0aGlzIGNsYXNz
IChzZWUKLSAgICAgICAgLy8gZGlzcGF0Y2gqQ2xpZW50UmVkaXJlY3QoKSBhbmQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCkgaXMKLSAgICAgICAgLy8gaW5zdWZmaWNpZW50IHRvIGNh
dGNoIGFuZCBwcm9wZXJseSBmbGFnIHRoZXNlIHRyYW5zaXRpb25zLiBPbmNlIGEKLSAgICAgICAg
Ly8gcHJvcGVyIGZpeCBmb3IgdGhpcyBidWcgaXMgaWRlbnRpZmllZCBhbmQgYXBwbGllZCB0aGUg
Zm9sbG93aW5nCi0gICAgICAgIC8vIGJsb2NrIG1heSBubyBsb25nZXIgYmUgcmVxdWlyZWQuCi0g
ICAgICAgIGJvb2wgd2FzQ2xpZW50UmVkaXJlY3QgPQotICAgICAgICAgICAgKHVybCA9PSBtX2V4
cGVjdGVkQ2xpZW50UmVkaXJlY3REZXN0ICYmIGNoYWluRW5kID09IG1fZXhwZWN0ZWRDbGllbnRS
ZWRpcmVjdFNyYykKLSAgICAgICAgICAgIHx8ICFtX3dlYkZyYW1lLT5pc1Byb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpOwotCi0gICAgICAgIGlmICh3YXNDbGllbnRSZWRpcmVjdCkgewotICAgICAgICAg
ICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICAgICAgICAgIG1fd2ViRnJhbWUt
PmNsaWVudCgpLT5kaWRDb21wbGV0ZUNsaWVudFJlZGlyZWN0KG1fd2ViRnJhbWUsIGNoYWluRW5k
KTsKLSAgICAgICAgICAgIGRzLT5hcHBlbmRSZWRpcmVjdChjaGFpbkVuZCk7Ci0gICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgd2UgY2xlYXIgdGhlIGV4cGVjdGVkIHJlZGlyZWN0IHNpbmNlIHdlIGp1
c3QgZWZmZWN0aXZlbHkKLSAgICAgICAgICAgIC8vIGNvbXBsZXRlZCBpdC4KLSAgICAgICAgICAg
IG1fZXhwZWN0ZWRDbGllbnRSZWRpcmVjdFNyYyA9IEtVUkwoKTsKLSAgICAgICAgICAgIG1fZXhw
ZWN0ZWRDbGllbnRSZWRpcmVjdERlc3QgPSBLVVJMKCk7CisgICAgICAgIGlmIChpc0hhc2hDaGFu
Z2UpIHsKKyAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhpcyBsb2NhdGlvbiBjaGFuZ2Ug
aXMgYmVjYXVzZSBvZiBhIEpTLWluaXRpYXRlZAorICAgICAgICAgICAgLy8gY2xpZW50IHJlZGly
ZWN0IChlLmcgb25sb2FkL3NldFRpbWVvdXQgZG9jdW1lbnQubG9jYXRpb24uaHJlZj0pLgorICAg
ICAgICAgICAgLy8gRklYTUU6IChiLzEwODUzMjUsIGIvMTA0Njg0MSkgV2UgZG9uJ3QgZ2V0IHBy
b3BlciByZWRpcmVjdAorICAgICAgICAgICAgLy8gcGVyZm9ybWVkL2NhbmNlbGxlZCBub3RpZmlj
YXRpb25zIGFjcm9zcyBhbmNob3IgbmF2aWdhdGlvbnMsIHNvIHRoZQorICAgICAgICAgICAgLy8g
b3RoZXIgcmVkaXJlY3QtdHJhY2tpbmcgY29kZSBpbiB0aGlzIGNsYXNzIChzZWUKKyAgICAgICAg
ICAgIC8vIGRpc3BhdGNoKkNsaWVudFJlZGlyZWN0KCkgYW5kIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQpIGlzCisgICAgICAgICAgICAvLyBpbnN1ZmZpY2llbnQgdG8gY2F0Y2ggYW5k
IHByb3Blcmx5IGZsYWcgdGhlc2UgdHJhbnNpdGlvbnMuIE9uY2UgYQorICAgICAgICAgICAgLy8g
cHJvcGVyIGZpeCBmb3IgdGhpcyBidWcgaXMgaWRlbnRpZmllZCBhbmQgYXBwbGllZCB0aGUgZm9s
bG93aW5nCisgICAgICAgICAgICAvLyBibG9jayBtYXkgbm8gbG9uZ2VyIGJlIHJlcXVpcmVkLgor
ICAgICAgICAgICAgYm9vbCB3YXNDbGllbnRSZWRpcmVjdCA9CisgICAgICAgICAgICAgICAgKHVy
bCA9PSBtX2V4cGVjdGVkQ2xpZW50UmVkaXJlY3REZXN0ICYmIGNoYWluRW5kID09IG1fZXhwZWN0
ZWRDbGllbnRSZWRpcmVjdFNyYykKKyAgICAgICAgICAgICAgICB8fCAhbV93ZWJGcmFtZS0+aXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKworICAgICAgICAgICAgaWYgKHdhc0NsaWVudFJlZGly
ZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAg
ICAgICAgICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ29tcGxldGVDbGllbnRSZWRp
cmVjdChtX3dlYkZyYW1lLCBjaGFpbkVuZCk7CisgICAgICAgICAgICAgICAgZHMtPmFwcGVuZFJl
ZGlyZWN0KGNoYWluRW5kKTsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgY2xlYXIg
dGhlIGV4cGVjdGVkIHJlZGlyZWN0IHNpbmNlIHdlIGp1c3QgZWZmZWN0aXZlbHkKKyAgICAgICAg
ICAgICAgICAvLyBjb21wbGV0ZWQgaXQuCisgICAgICAgICAgICAgICAgbV9leHBlY3RlZENsaWVu
dFJlZGlyZWN0U3JjID0gS1VSTCgpOworICAgICAgICAgICAgICAgIG1fZXhwZWN0ZWRDbGllbnRS
ZWRpcmVjdERlc3QgPSBLVVJMKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBSZWdhcmRsZXNzIG9mIGhvdyB3ZSBnb3QgaGVyZSwgd2UgYXJlIG5hdmlnYXRpbmcgdG8g
YSBVUkwgc28gd2UgbmVlZCB0bwpAQCAtNjI1LDI3ICs2MzIsMzggQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQwogCiAgICAgYm9vbCBpc05ld05hdmlnYXRpb247CiAg
ICAgd2ViVmlldy0+ZGlkQ29tbWl0TG9hZCgmaXNOZXdOYXZpZ2F0aW9uKTsKLSAgICBpZiAobV93
ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UobV93ZWJGcmFtZSwgaXNOZXdOYXZpZ2F0aW9uKTsKKyAgICBp
ZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZE5hdmlnYXRlV2l0aGluUGFnZShtX3dlYkZyYW1lLCBpc05ld05hdmlnYXRpb24pOworCisg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBub3RpZmljYXRpb24gb25jZSBpdCBpcyBubyBs
b25nZXIgY29uc3VtZWQgZG93bnN0cmVhbS4KKyAgICAgICAgaWYgKGlzSGFzaENoYW5nZSkKKyAg
ICAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UobV93ZWJGcmFtZSwgaXNOZXdOYXZpZ2F0aW9uKTsKKyAgICB9CiAKICAgICAvLyBHZW5lcmF0
ZSBkaWRTdG9wTG9hZGluZyBpZiBsb2FkZXIgaXMgY29tcGxldGVkLgogICAgIGlmICh3ZWJWaWV3
LT5jbGllbnQoKSAmJiBsb2FkZXJDb21wbGV0ZWQpCiAgICAgICAgIHdlYlZpZXctPmNsaWVudCgp
LT5kaWRTdG9wTG9hZGluZygpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQoreworICAgIGlmIChtX3dlYkZyYW1l
KQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKIHsKLSAgICAvLyBGSVhNRQorICAgIGRpc3BhdGNo
RGlkTmF2aWdhdGVXaXRoaW5QYWdlKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQogewotICAgIC8vIEZJWE1FCisg
ICAgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkKIHsKLSAgICAvLyBG
SVhNRQorICAgIC8vIElnbm9yZWQgc2luY2UgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2Ug
d2FzIGFscmVhZHkgY2FsbGVkLgogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hXaWxsQ2xvc2UoKQpAQCAtOTEwLDUxICs5MjgsNDggQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoRGVjaQogICAgIC8vIFRoZSBudWxsIGNoZWNrIGhlcmUgaXMgdG8g
Zml4IGEgY3Jhc2ggdGhhdCBzZWVtcyBzdHJhbmdlCiAgICAgLy8gKHNlZSAtIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NCkuCiAgICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpICYmICFyZXF1ZXN0LnVybCgpLmlzTnVsbCgpKSB7Ci0gICAgICBXZWJOYXZpZ2F0
aW9uUG9saWN5IG5hdmlnYXRpb25Qb2xpY3kgPSBXZWJOYXZpZ2F0aW9uUG9saWN5Q3VycmVudFRh
YjsKLSAgICAgIGFjdGlvblNwZWNpZmllc05hdmlnYXRpb25Qb2xpY3koYWN0aW9uLCAmbmF2aWdh
dGlvblBvbGljeSk7CisgICAgICAgIFdlYk5hdmlnYXRpb25Qb2xpY3kgbmF2aWdhdGlvblBvbGlj
eSA9IFdlYk5hdmlnYXRpb25Qb2xpY3lDdXJyZW50VGFiOworICAgICAgICBhY3Rpb25TcGVjaWZp
ZXNOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbiwgJm5hdmlnYXRpb25Qb2xpY3kpOworCisgICAgICAg
IC8vIEdpdmUgdGhlIGRlbGVnYXRlIGEgY2hhbmNlIHRvIGNoYW5nZSB0aGUgbmF2aWdhdGlvbiBw
b2xpY3kuCisgICAgICAgIGNvbnN0IFdlYkRhdGFTb3VyY2VJbXBsKiBkcyA9IG1fd2ViRnJhbWUt
PnByb3Zpc2lvbmFsRGF0YVNvdXJjZUltcGwoKTsKKyAgICAgICAgaWYgKGRzKSB7CisgICAgICAg
ICAgICBLVVJMIHVybCA9IGRzLT5yZXF1ZXN0KCkudXJsKCk7CisgICAgICAgICAgICBBU1NFUlQo
IXVybC5wcm90b2NvbElzKGJhY2tGb3J3YXJkTmF2aWdhdGlvblNjaGVtZSkpOworCisgICAgICAg
ICAgICBib29sIGlzUmVkaXJlY3QgPSBkcy0+aGFzUmVkaXJlY3RDaGFpbigpOworCisgICAgICAg
ICAgICBXZWJOYXZpZ2F0aW9uVHlwZSB3ZWJuYXZUeXBlID0KKyAgICAgICAgICAgICAgICBXZWJE
YXRhU291cmNlSW1wbDo6dG9XZWJOYXZpZ2F0aW9uVHlwZShhY3Rpb24udHlwZSgpKTsKKworICAg
ICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEV2ZW50
KiBldmVudCA9IGFjdGlvbi5ldmVudCgpOyBldmVudDsgZXZlbnQgPSBldmVudC0+dW5kZXJseWlu
Z0V2ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCo+KGV2ZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVyTm9uU2hhcmVkTm9k
ZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBXZWJOb2RlIG9yaWdpbmF0aW5nTm9kZShub2RlKTsKKwor
ICAgICAgICAgICAgbmF2aWdhdGlvblBvbGljeSA9IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uKAorICAgICAgICAgICAgICAgIG1fd2ViRnJhbWUsIGRzLT5y
ZXF1ZXN0KCksIHdlYm5hdlR5cGUsIG9yaWdpbmF0aW5nTm9kZSwKKyAgICAgICAgICAgICAgICBu
YXZpZ2F0aW9uUG9saWN5LCBpc1JlZGlyZWN0KTsKKyAgICAgICAgfQogCi0gICAgICAvLyBHaXZl
IHRoZSBkZWxlZ2F0ZSBhIGNoYW5jZSB0byBjaGFuZ2UgdGhlIG5hdmlnYXRpb24gcG9saWN5Lgot
ICAgICAgY29uc3QgV2ViRGF0YVNvdXJjZUltcGwqIGRzID0gbV93ZWJGcmFtZS0+cHJvdmlzaW9u
YWxEYXRhU291cmNlSW1wbCgpOwotICAgICAgaWYgKGRzKSB7Ci0gICAgICAgICAgS1VSTCB1cmwg
PSBkcy0+cmVxdWVzdCgpLnVybCgpOwotICAgICAgICAgIGlmICh1cmwucHJvdG9jb2xJcyhiYWNr
Rm9yd2FyZE5hdmlnYXRpb25TY2hlbWUpKSB7Ci0gICAgICAgICAgICAgIGhhbmRsZUJhY2tGb3J3
YXJkTmF2aWdhdGlvbih1cmwpOwotICAgICAgICAgICAgICBuYXZpZ2F0aW9uUG9saWN5ID0gV2Vi
TmF2aWdhdGlvblBvbGljeUlnbm9yZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICBib29sIGlzUmVkaXJlY3QgPSBkcy0+aGFzUmVkaXJlY3RDaGFpbigpOwotCi0gICAgICAgICAg
ICAgIFdlYk5hdmlnYXRpb25UeXBlIHdlYm5hdlR5cGUgPQotICAgICAgICAgICAgICAgICAgV2Vi
RGF0YVNvdXJjZUltcGw6OnRvV2ViTmF2aWdhdGlvblR5cGUoYWN0aW9uLnR5cGUoKSk7Ci0KLSAg
ICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7Ci0gICAgICAgICAgICAgIGZvciAoY29uc3Qg
RXZlbnQqIGV2ZW50ID0gYWN0aW9uLmV2ZW50KCk7IGV2ZW50OyBldmVudCA9IGV2ZW50LT51bmRl
cmx5aW5nRXZlbnQoKSkgewotICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZl
bnQoKSkgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZl
bnQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2
ZW50Kj4oZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIFdlYk5vZGUgb3Jp
Z2luYXRpbmdOb2RlKG5vZGUpOwotCi0gICAgICAgICAgICAgIG5hdmlnYXRpb25Qb2xpY3kgPSBt
X3dlYkZyYW1lLT5jbGllbnQoKS0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbigKLSAgICAgICAg
ICAgICAgICAgIG1fd2ViRnJhbWUsIGRzLT5yZXF1ZXN0KCksIHdlYm5hdlR5cGUsIG9yaWdpbmF0
aW5nTm9kZSwKLSAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Qb2xpY3ksIGlzUmVkaXJlY3Qp
OwotICAgICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKG5hdmlnYXRpb25Qb2xpY3kgPT0g
V2ViTmF2aWdhdGlvblBvbGljeUN1cnJlbnRUYWIpCi0gICAgICAgICAgcG9saWN5QWN0aW9uID0g
UG9saWN5VXNlOwotICAgICAgZWxzZSBpZiAobmF2aWdhdGlvblBvbGljeSA9PSBXZWJOYXZpZ2F0
aW9uUG9saWN5RG93bmxvYWQpCi0gICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5RG93bmxv
YWQ7Ci0gICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAobmF2aWdhdGlvblBvbGljeSAhPSBXZWJO
YXZpZ2F0aW9uUG9saWN5SWdub3JlKSB7Ci0gICAgICAgICAgICAgIFdyYXBwZWRSZXNvdXJjZVJl
cXVlc3Qgd2VicmVxKHJlcXVlc3QpOwotICAgICAgICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+bG9hZFVSTEV4dGVybmFsbHkobV93ZWJGcmFtZSwgd2VicmVxLCBuYXZpZ2F0aW9uUG9saWN5
KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5SWdub3JlOwot
ICAgICAgfQorICAgICAgICBpZiAobmF2aWdhdGlvblBvbGljeSA9PSBXZWJOYXZpZ2F0aW9uUG9s
aWN5Q3VycmVudFRhYikKKyAgICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeVVzZTsKKyAg
ICAgICAgZWxzZSBpZiAobmF2aWdhdGlvblBvbGljeSA9PSBXZWJOYXZpZ2F0aW9uUG9saWN5RG93
bmxvYWQpCisgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lEb3dubG9hZDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobmF2aWdhdGlvblBvbGljeSAhPSBXZWJOYXZpZ2F0
aW9uUG9saWN5SWdub3JlKSB7CisgICAgICAgICAgICAgICAgV3JhcHBlZFJlc291cmNlUmVxdWVz
dCB3ZWJyZXEocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmxvYWRVUkxFeHRlcm5hbGx5KG1fd2ViRnJhbWUsIHdlYnJlcSwgbmF2aWdhdGlvblBvbGljeSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lJZ25vcmU7
CisgICAgICAgIH0KICAgICB9CiAKICAgICAobV93ZWJGcmFtZS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShwb2xpY3lBY3Rpb24pOwpAQCAtMTA5OSwxMCAr
MTExNCwyOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dXBkYXRlR2xvYmFsCiB7CiB9
CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlz
dG9yeUl0ZW0qKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnNob3VsZEdvVG9I
aXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKIHsKLSAgICAvLyBGSVhNRQotICAg
IHJldHVybiB0cnVlOworICAgIGNvbnN0IEtVUkwmIHVybCA9IGl0ZW0tPnVybCgpOworICAgIGlm
ICghdXJsLnByb3RvY29sSXMoYmFja0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBFbHNlLCB3ZSdsbCBwdW50IHRoaXMgaGlzdG9yeSBuYXZp
Z2F0aW9uIHRvIHRoZSBlbWJlZGRlci4gIEl0IGlzCisgICAgLy8gbmVjZXNzYXJ5IHRoYXQgd2Ug
aW50ZXJjZXB0IHRoaXMgaGVyZSwgd2VsbCBiZWZvcmUgdGhlIEZyYW1lTG9hZGVyCisgICAgLy8g
aGFzIG1hZGUgYW55IHN0YXRlIGNoYW5nZXMgZm9yIHRoaXMgaGlzdG9yeSB0cmF2ZXJzYWwuCisK
KyAgICBib29sIG9rOworICAgIGludCBvZmZzZXQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKS50
b0ludFN0cmljdCgmb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBXZWJWaWV3SW1wbCog
d2VidmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgaWYgKHdlYnZpZXctPmNsaWVu
dCgpKQorICAgICAgICB3ZWJ2aWV3LT5jbGllbnQoKS0+bmF2aWdhdGVCYWNrRm9yd2FyZFNvb24o
b2Zmc2V0KTsKKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6OmRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QK
QEAgLTE0OTUsMjAgKzE1MjgsNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWN0aW9u
U3BlY2lmCiAgICAgICAgIGV2ZW50LT5tZXRhS2V5KCksIHBvbGljeSk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpoYW5kbGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oY29uc3QgS1VS
TCYgdXJsKQotewotICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcyhiYWNrRm9yd2FyZE5hdmlnYXRp
b25TY2hlbWUpKTsKLQotICAgIGJvb2wgb2s7Ci0gICAgaW50IG9mZnNldCA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpLnRvSW50U3RyaWN0KCZvayk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgV2ViVmlld0ltcGwqIHdlYnZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgp
OwotICAgIGlmICh3ZWJ2aWV3LT5jbGllbnQoKSkKLSAgICAgICAgd2Vidmlldy0+Y2xpZW50KCkt
Pm5hdmlnYXRlQmFja0ZvcndhcmRTb29uKG9mZnNldCk7Ci19Ci0KIFBhc3NPd25QdHI8V2ViUGx1
Z2luTG9hZE9ic2VydmVyPiBGcmFtZUxvYWRlckNsaWVudEltcGw6OnBsdWdpbkxvYWRPYnNlcnZl
cigpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUltcGwqIGRzID0gV2ViRGF0YVNvdXJjZUltcGw6OmZy
b21Eb2N1bWVudExvYWRlcigKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NjAzMikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3Vi
bGUgZmlyZURhdGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGlu
UGFnZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7
CkBAIC0yMDYsOSArMjA3LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBhY3Rpb25TcGVj
aWZpZXNOYXZpZ2F0aW9uUG9saWN5KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFdlYk5hdmlnYXRpb25Qb2xpY3kqIHBvbGljeSk7CiAKLSAgICAvLyBD
YWxsZWQgd2hlbiBhIGR1bW15IGJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIGludGVyY2VwdGVk
LgotICAgIHZvaWQgaGFuZGxlQmFja0ZvcndhcmROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLQogICAgIFBhc3NPd25QdHI8V2ViUGx1Z2luTG9hZE9ic2VydmVyPiBwbHVnaW5Mb2Fk
T2JzZXJ2ZXIoKTsKIAogICAgIC8vIFRoZSBXZWJGcmFtZSB0aGF0IG93bnMgdGhpcyBvYmplY3Qg
YW5kIG1hbmFnZXMgaXRzIGxpZmV0aW1lLiBUaGVyZWZvcmUsCg==
</data>
<flag name="review"
          id="33928"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>