<?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>30037</bug_id>
          
          <creation_ts>2009-10-02 21:48:18 -0700</creation_ts>
          <short_desc>Factor PageController out of FrameLoader and Page</short_desc>
          <delta_ts>2009-10-14 23:08:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>jparent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152044</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 21:48:18 -0700</bug_when>
    <thetext>Removes a few methods that have nothing to do with loading frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152045</commentid>
    <comment_count>1</comment_count>
      <attachid>40563</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 21:49:54 -0700</bug_when>
    <thetext>Created attachment 40563
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152046</commentid>
    <comment_count>2</comment_count>
      <attachid>40563</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 22:21:42 -0700</bug_when>
    <thetext>Comment on attachment 40563
Patch v1

This patch isn&apos;t right.  updateHistoryForAnchorScroll shouldn&apos;t go in this object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152056</commentid>
    <comment_count>3</comment_count>
      <attachid>40567</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 23:48:24 -0700</bug_when>
    <thetext>Created attachment 40567
PageController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152057</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 23:51:57 -0700</bug_when>
    <thetext>CCing Julie because this is undoubtably going to break the Chromium WebKit canary when it lands.  We&apos;ll need to add some &quot;-&gt;controller()&quot; action to the Chromium port too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152070</commentid>
    <comment_count>5</comment_count>
      <attachid>40567</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-03 07:17:43 -0700</bug_when>
    <thetext>Comment on attachment 40567
PageController

The object named Page is already a page controller, so I don&apos;t think this is the right name for a new object. On the other hand it has frequently been a problem that there is a loader for each frame, but no corresponding loader for the page.

Could you describe the distinction between what would go on the page and what on the page controller? Maybe that can give us a better idea what its name should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152076</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-03 08:21:49 -0700</bug_when>
    <thetext>My main goal for this patch is to remove these methods from FrameLoader because they have nothing to do with FrameLoader:

-        bool canGoBackOrForward(int distance) const;
-        void goBackOrForward(int distance);
-        int getHistoryLength();

They ought to be methods of some page-scoped object.  Looking around, they seem related to these methods of Page:

-        bool goBack();
-        bool goForward();
-        void goToItem(HistoryItem*, FrameLoadType);

I was going to add them to the Page object, but I saw this comment:

-        // FIXME: The following three methods don&apos;t fall under the responsibilities of the Page object
-        // They seem to fit a hypothetical Page-controller object that would be akin to the 
-        // Frame-FrameLoader relationship.  They have to live here now, but should move somewhere that
-        // makes more sense when that class exists.

I didn&apos;t want to add to the problem described by this comment, so I created the hypothetical Page-controller object.  If you&apos;d prefer we just moved the methods from FrameLoader to Page, I&apos;d be happy to do that (and it would make the patch MUCH smaller).  We can sort out whether to create the hypothetical Page-controller object later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152079</commentid>
    <comment_count>7</comment_count>
      <attachid>40576</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-03 08:46:23 -0700</bug_when>
    <thetext>Created attachment 40576
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152080</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-03 08:48:22 -0700</bug_when>
    <thetext>Here&apos;s what that patch would look like.  Even if we do decide we want something like a page controller, we should probably do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152114</commentid>
    <comment_count>9</comment_count>
      <attachid>40576</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-03 17:17:18 -0700</bug_when>
    <thetext>Comment on attachment 40576
Patch v1

Clearing flags on attachment: 40576

Committed r49067: &lt;http://trac.webkit.org/changeset/49067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152115</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-03 17:17:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40563</attachid>
            <date>2009-10-02 21:49:54 -0700</date>
            <delta_ts>2009-10-02 23:47:34 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30037-20091002214953.patch</filename>
            <type>text/plain</type>
            <size>10532</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0MjM5Yy4uM2Q0OGJjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMC0wMiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBQYWdlQ29udHJvbGxlciBvdXQgb2YgRnJhbWVMb2FkZXIgYW5k
IFBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
MDM3CisKKyAgICAgICAgSSd2ZSBsZWZ0IHRoZSBvcmlnaW5hbCBBUElzIGluIHBsYWNlLiAgSSds
bCByZW1vdmUgdGhlbSBhbmQgbW92ZQorICAgICAgICBQYWdlQ29udHJvbGxlciB0byBpdHMgb3du
IGZpbGUgaW4gYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Z29CYWNrT3JGb3J3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpnZXRIaXN0b3J5TGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cGRhdGVIaXN0b3J5Rm9yQW5jaG9yU2Nyb2xsKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29udHJvbGxlcjo6UGFnZUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6flBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xs
ZXI6On5QYWdlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpiYWNrRm9yd2Fy
ZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xsZXI6OmJhY2tGb3J3YXJkTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpnb0JhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNvbnRyb2xsZXI6OmdvQmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpnb0Zvcndh
cmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xsZXI6OmdvRm9yd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpnb1RvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29u
dHJvbGxlcjo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xsZXI6Omdv
QmFja09yRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29udHJvbGxlcjo6Z2V0SGlz
dG9yeUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29udHJvbGxlcjo6dXBkYXRlSGlz
dG9yeUZvckFuY2hvclNjcm9sbCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpjb250cm9sbGVyKToKKwogMjAwOS0wOS0yNSAgSm9uIEhvbmV5Y3V0dCAg
PGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgV2ViQ29yZTo6UGx1Z2luVmll
dyBwYXJ0aWNpcGF0ZSBpbiBwbHVnLWluIGhhbHRpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggODcyNDA5YS4uNWM1MDcwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTI3MiwzMiAr
MTI3Miw4IEBAIEtVUkwgRnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogCiB2b2lkIEZyYW1lTG9hZGVyOjpnb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKQogewot
ICAgIGlmIChkaXN0YW5jZSA9PSAwKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm47Ci0gICAgQmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7
Ci0gICAgaWYgKCFsaXN0KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgSGlzdG9yeUl0ZW0q
IGl0ZW0gPSBsaXN0LT5pdGVtQXRJbmRleChkaXN0YW5jZSk7Ci0gICAgaWYgKCFpdGVtKSB7Ci0g
ICAgICAgIGlmIChkaXN0YW5jZSA+IDApIHsKLSAgICAgICAgICAgIGludCBmb3J3YXJkTGlzdENv
dW50ID0gbGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwotICAgICAgICAgICAgaWYgKGZvcndhcmRM
aXN0Q291bnQgPiAwKSAKLSAgICAgICAgICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgo
Zm9yd2FyZExpc3RDb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgYmFj
a0xpc3RDb3VudCA9IGxpc3QtPmJhY2tMaXN0Q291bnQoKTsKLSAgICAgICAgICAgIGlmIChiYWNr
TGlzdENvdW50ID4gMCkKLSAgICAgICAgICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgo
LWJhY2tMaXN0Q291bnQpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChpdGVt
KTsgLy8gd2Ugc2hvdWxkIG5vdCByZWFjaCB0aGlzIGxpbmUgd2l0aCBhbiBlbXB0eSBiYWNrL2Zv
cndhcmQgbGlzdAotICAgIGlmIChpdGVtKQotICAgICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLCBG
cmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBpZihQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jb250cm9sbGVyKCktPmdvQmFja09yRm9yd2Fy
ZChkaXN0YW5jZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJh
bWUpCkBAIC0zOTczLDcgKzM5NDksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5Hb0JhY2tPckZv
cndhcmQoaW50IGRpc3RhbmNlKSBjb25zdAogaW50IEZyYW1lTG9hZGVyOjpnZXRIaXN0b3J5TGVu
Z3RoKCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAg
cmV0dXJuIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrTGlzdENvdW50KCkgKyAxOworICAg
ICAgICByZXR1cm4gcGFnZS0+Y29udHJvbGxlcigpLT5nZXRIaXN0b3J5TGVuZ3RoKCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKQEAgLTQ2NzMsMTggKzQ2NDksOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9y
eUZvckFuY2hvclNjcm9sbCgpCiB7Ci0gICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsK
LSAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0g
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLT5ncm91cCgpLmFkZFZp
c2l0ZWRMaW5rKG1fVVJMKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcGFnZS0+Y29udHJvbGxlcigpLT51cGRhdGVIaXN0b3J5Rm9yQW5jaG9yU2Nyb2xs
KG1fVVJMKTsKIH0KIAogLy8gV2FsayB0aGUgZnJhbWUgdHJlZSwgdGVsbGluZyBhbGwgZnJhbWVz
IHRvIHNhdmUgdGhlaXIgZm9ybSBzdGF0ZSBpbnRvIHRoZWlyIGN1cnJlbnQKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyZDBj
OTFjLi45YzA3N2U5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFnZTo6UGFnZShDaHJvbWVD
bGllbnQqIGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50
LCBFZGkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhuZXcgU2V0dGluZ3ModGhpcykpCiAgICAg
LCBtX3Byb2dyZXNzKG5ldyBQcm9ncmVzc1RyYWNrZXIpCi0gICAgLCBtX2JhY2tGb3J3YXJkTGlz
dChCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29udHJvbGxlcihuZXcg
UGFnZUNvbnRyb2xsZXIodGhpcykpCiAgICAgLCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZv
clBhZ2UodGhpcykpCiAgICAgLCBtX2VkaXRvckNsaWVudChlZGl0b3JDbGllbnQpCiAgICAgLCBt
X2ZyYW1lQ291bnQoMCkKQEAgLTE2Nyw2ICsxNjcsMTIgQEAgUGFnZTo6UGFnZShDaHJvbWVDbGll
bnQqIGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBF
ZGkKICNlbmRpZgogfQogCitQYWdlQ29udHJvbGxlcjo6UGFnZUNvbnRyb2xsZXIoUGFnZSogcGFn
ZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9iYWNrRm9yd2FyZExpc3QoQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGUocGFnZSkpCit7Cit9CisKIFBhZ2U6On5QYWdlKCkKIHsKICAgICBtX21h
aW5GcmFtZS0+c2V0VmlldygwKTsKQEAgLTE4Myw4ICsxODksNiBAQCBQYWdlOjp+UGFnZSgpCiAg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CiAjZW5k
aWYKIAotICAgIG1fYmFja0ZvcndhcmRMaXN0LT5jbG9zZSgpOwotCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHBhZ2VDb3VudGVyLmRlY3JlbWVudCgpOwogCkBAIC0xOTUsNiArMTk5LDExIEBAIFBhZ2U6
On5QYWdlKCkKICNlbmRpZgogfQogCitQYWdlQ29udHJvbGxlcjo6flBhZ2VDb250cm9sbGVyKCkK
K3sKKyAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Y2xvc2UoKTsKK30KKwogdm9pZCBQYWdlOjpzZXRN
YWluRnJhbWUoUGFzc1JlZlB0cjxGcmFtZT4gbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9t
YWluRnJhbWUpOyAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9u
CkBAIC0yMDMsMTEgKzIxMiwyMSBAQCB2b2lkIFBhZ2U6OnNldE1haW5GcmFtZShQYXNzUmVmUHRy
PEZyYW1lPiBtYWluRnJhbWUpCiAKIEJhY2tGb3J3YXJkTGlzdCogUGFnZTo6YmFja0ZvcndhcmRM
aXN0KCkKIHsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5iYWNrRm9yd2FyZExpc3QoKTsKK30K
KworQmFja0ZvcndhcmRMaXN0KiBQYWdlQ29udHJvbGxlcjo6YmFja0ZvcndhcmRMaXN0KCkKK3sK
ICAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3QuZ2V0KCk7CiB9CiAKIGJvb2wgUGFnZTo6Z29C
YWNrKCkKIHsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5nb0JhY2soKTsKK30KKworYm9vbCBQ
YWdlQ29udHJvbGxlcjo6Z29CYWNrKCkKK3sKICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IG1fYmFj
a0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpOwogICAgIAogICAgIGlmIChpdGVtKSB7CkBAIC0yMTks
NiArMjM4LDExIEBAIGJvb2wgUGFnZTo6Z29CYWNrKCkKIAogYm9vbCBQYWdlOjpnb0ZvcndhcmQo
KQogeworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPmdvRm9yd2FyZCgpOworfQorCitib29sIFBh
Z2VDb250cm9sbGVyOjpnb0ZvcndhcmQoKQorewogICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gbV9i
YWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCk7CiAgICAgCiAgICAgaWYgKGl0ZW0pIHsKQEAg
LTIzMCwyMSArMjU0LDY3IEBAIGJvb2wgUGFnZTo6Z29Gb3J3YXJkKCkKIAogdm9pZCBQYWdlOjpn
b1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogeworICAgIG1f
Y29udHJvbGxlci0+Z29Ub0l0ZW0oaXRlbSwgdHlwZSk7Cit9CisKK3ZvaWQgUGFnZUNvbnRyb2xs
ZXI6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCit7CiAg
ICAgLy8gQWJvcnQgYW55IGN1cnJlbnQgbG9hZCBpZiB3ZSdyZSBnb2luZyB0byBhIGhpc3Rvcnkg
aXRlbQogCiAgICAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2l0aCBhbnkgb3BlbiBkYXRhYmFzZSBj
b25uZWN0aW9ucy4gQnkgZGVmYXVsdCB3ZSBzdG9wIHRoZW0gYW5kIHRlcm1pbmF0ZSB0aGUgZGF0
YWJhc2UgdGhyZWFkLgogICAgIERhdGFiYXNlUG9saWN5IGRhdGFiYXNlUG9saWN5ID0gRGF0YWJh
c2VQb2xpY3lTdG9wOwogCisgICAgRnJhbWUqIG1haW5GcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1l
KCk7CisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0
aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBk
byBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4KLSAgICBjb25zdCBLVVJMJiBjdXJyZW50VVJM
ID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBjb25zdCBLVVJMJiBjdXJyZW50
VVJMID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CiAgICAgY29uc3QgS1VSTCYgbmV3VVJM
ID0gaXRlbS0+dXJsKCk7CiAKICAgICBpZiAobmV3VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
ICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY3VycmVudFVSTCwgbmV3VVJMKSkK
ICAgICAgICAgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeUNvbnRpbnVlOwogI2VuZGlm
Ci0gICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycyhkYXRhYmFzZVBvbGlj
eSk7Ci0gICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5nb1RvSXRlbShpdGVtLCB0eXBlKTsKKyAg
ICBtYWluRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycyhkYXRhYmFzZVBvbGljeSk7Cisg
ICAgbWFpbkZyYW1lLT5sb2FkZXIoKS0+Z29Ub0l0ZW0oaXRlbSwgdHlwZSk7Cit9CisKK3ZvaWQg
UGFnZUNvbnRyb2xsZXI6OmdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpCit7CisgICAgaWYg
KGRpc3RhbmNlID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIEhpc3RvcnlJdGVtKiBpdGVt
ID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGRpc3RhbmNlKTsKKyAgICBpZiAoIWl0
ZW0pIHsKKyAgICAgICAgaWYgKGRpc3RhbmNlID4gMCkgeworICAgICAgICAgICAgaW50IGZvcndh
cmRMaXN0Q291bnQgPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOworICAg
ICAgICAgICAgaWYgKGZvcndhcmRMaXN0Q291bnQgPiAwKSAKKyAgICAgICAgICAgICAgICBpdGVt
ID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGZvcndhcmRMaXN0Q291bnQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGJhY2tMaXN0Q291bnQgPSBtX2JhY2tGb3J3
YXJkTGlzdC0+YmFja0xpc3RDb3VudCgpOworICAgICAgICAgICAgaWYgKGJhY2tMaXN0Q291bnQg
PiAwKQorICAgICAgICAgICAgICAgIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbUF0SW5k
ZXgoLWJhY2tMaXN0Q291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKGl0ZW0p
OyAvLyB3ZSBzaG91bGQgbm90IHJlYWNoIHRoaXMgbGluZSB3aXRoIGFuIGVtcHR5IGJhY2svZm9y
d2FyZCBsaXN0CisgICAgaWYgKGl0ZW0pCisgICAgICAgIGdvVG9JdGVtKGl0ZW0sIEZyYW1lTG9h
ZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpOworfQorCitpbnQgUGFnZUNvbnRyb2xsZXI6OmdldEhp
c3RvcnlMZW5ndGgoKQoreworICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0xpc3RD
b3VudCgpICsgMTsKK30KKwordm9pZCBQYWdlQ29udHJvbGxlcjo6dXBkYXRlSGlzdG9yeUZvckFu
Y2hvclNjcm9sbChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExp
bmsodXJsKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRHbG9iYWxIaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSogaXRlbSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDYwMmQ5OWIuLmM4YTNkZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTksNiArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBjbGFzcyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgUGFnZTsK
ICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKICAgICBjbGFzcyBQ
bHVnaW5IYWx0ZXI7CkBAIC04MSw2ICs4MiwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBlbnVtIEZpbmREaXJlY3Rpb24geyBGaW5kRGlyZWN0aW9uRm9yd2FyZCwgRmluZERpcmVjdGlv
bkJhY2t3YXJkIH07CiAKKyAgICBjbGFzcyBQYWdlQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBQYWdlQ29udHJvbGxlcihQYWdlKik7CisgICAg
ICAgIH5QYWdlQ29udHJvbGxlcigpOworCisgICAgICAgIEJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0KCk7CisgICAgICAgIGludCBnZXRIaXN0b3J5TGVuZ3RoKCk7CisKKyAgICAgICAg
Ym9vbCBnb0JhY2soKTsKKyAgICAgICAgYm9vbCBnb0ZvcndhcmQoKTsKKyAgICAgICAgdm9pZCBn
b0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKTsKKworICAgICAgICB2b2lkIGdvVG9JdGVtKEhp
c3RvcnlJdGVtKiwgRnJhbWVMb2FkVHlwZSk7CisKKyAgICAgICAgdm9pZCB1cGRhdGVIaXN0b3J5
Rm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFBh
Z2UqIG1fcGFnZTsKKyAgICAgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2Fy
ZExpc3Q7CisgICAgfTsKKwogICAgIGNsYXNzIFBhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgc2V0TmVlZHNSZWFwcGx5U3R5bGVzKCk7
CkBAIC0xMDYsOSArMTI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCYWNrRm9y
d2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9s
bG93aW5nIHRocmVlIG1ldGhvZHMgZG9uJ3QgZmFsbCB1bmRlciB0aGUgcmVzcG9uc2liaWxpdGll
cyBvZiB0aGUgUGFnZSBvYmplY3QKLSAgICAgICAgLy8gVGhleSBzZWVtIHRvIGZpdCBhIGh5cG90
aGV0aWNhbCBQYWdlLWNvbnRyb2xsZXIgb2JqZWN0IHRoYXQgd291bGQgYmUgYWtpbiB0byB0aGUg
Ci0gICAgICAgIC8vIEZyYW1lLUZyYW1lTG9hZGVyIHJlbGF0aW9uc2hpcC4gIFRoZXkgaGF2ZSB0
byBsaXZlIGhlcmUgbm93LCBidXQgc2hvdWxkIG1vdmUgc29tZXdoZXJlIHRoYXQKLSAgICAgICAg
Ly8gbWFrZXMgbW9yZSBzZW5zZSB3aGVuIHRoYXQgY2xhc3MgZXhpc3RzLgorICAgICAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSB0ZW1wb3JhcnkgYW5kIGp1c3QgZm9yd2FyZCB0byBjb250cm9sbGVy
KCkKICAgICAgICAgYm9vbCBnb0JhY2soKTsKICAgICAgICAgYm9vbCBnb0ZvcndhcmQoKTsKICAg
ICAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwpAQCAtMTQw
LDYgKzE2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAg
IFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdl
dCgpOyB9CisgICAgICAgIFBhZ2VDb250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250cm9sbGVyLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAg
ICB2b2lkIHNldFBhcmVudEluc3BlY3RvckNvbnRyb2xsZXIoSW5zcGVjdG9yQ29udHJvbGxlciog
Y29udHJvbGxlcikgeyBtX3BhcmVudEluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250cm9sbGVyOyB9
CkBAIC0yNDcsOCArMjY4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAg
IE93blB0cjxTZXR0aW5ncz4gbV9zZXR0aW5nczsKICAgICAgICAgT3duUHRyPFByb2dyZXNzVHJh
Y2tlcj4gbV9wcm9ncmVzczsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxCYWNrRm9yd2FyZExp
c3Q+IG1fYmFja0ZvcndhcmRMaXN0OworCisgICAgICAgIE93blB0cjxQYWdlQ29udHJvbGxlcj4g
bV9jb250cm9sbGVyOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fbWFpbkZyYW1lOwogCiAgICAg
ICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9nbG9iYWxIaXN0b3J5SXRlbTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40567</attachid>
            <date>2009-10-02 23:48:24 -0700</date>
            <delta_ts>2009-10-03 08:46:16 -0700</delta_ts>
            <desc>PageController</desc>
            <filename>bug-30037-20091002234823.patch</filename>
            <type>text/plain</type>
            <size>48421</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0MjM5Yy4uOTNkY2Q4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAwOS0xMC0wMiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBQYWdlQ29udHJvbGxlciBvdXQgb2YgRnJhbWVMb2FkZXIgYW5k
IFBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
MDM3CisKKyAgICAgICAgSSdsbCBtb3ZlIFBhZ2VDb250cm9sbGVyIGludG8gYSBzZXBhcmF0ZSBm
aWxlIGluIGFub3RoZXIgcGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2dD
YW5DYWNoZVBhZ2VEZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVj
a0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlkRmlyc3RMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6YWRkQmFja0ZvcndhcmRJdGVtQ2xpcHBlZEF0VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpnb1RvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6dXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVy
Ojp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OmNsb3NlKToKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6bGVuZ3RoKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29udHJvbGxlcjo6UGFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6flBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xsZXI6On5QYWdlQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29udHJvbGxlcjo6YmFja0ZvcndhcmRMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb250cm9sbGVyOjpnb0JhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnRyb2xsZXI6OmdvRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29u
dHJvbGxlcjo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnRyb2xsZXI6OmNh
bkdvQmFja09yRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29udHJvbGxlcjo6Z29C
YWNrT3JGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb250cm9sbGVyOjpnZXRIaXN0
b3J5TGVuZ3RoKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZXNQYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpwb3B1bGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6Y2hlY2tPckVuYWJsZUlmTmVlZGVk
KToKKyAgICAgICAgKiB3bWwvV01MRG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldN
TERvRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogd21sL1dNTERvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcp
OgorICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01M
UGFnZVN0YXRlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjp0cnlBY2Nlc3NIaXN0b3J5VVJM
cyk6CisgICAgICAgICogd21sL1dNTFByZXZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldNTFByZXZFbGVtZW50OjpleGVjdXRlVGFzayk6CisKIDIwMDktMDktMjUgIEpvbiBIb25leWN1
dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmU6OlBsdWdp
blZpZXcgcGFydGljaXBhdGUgaW4gcGx1Zy1pbiBoYWx0aW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDViOWMy
YmQuLjY0MzZiNzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI5Nyw2ICsyOTcsMTAgQEAgX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjhzZXRGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjhzZXRUaXRsZUVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50
TG9hZGVyQzJFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURhdGFFCiBf
X1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyRDJFdgorX19aTjdXZWJDb3JlMTRQYWdlQ29udHJv
bGxlcjE1YmFja0ZvcndhcmRMaXN0RXYKK19fWk43V2ViQ29yZTE0UGFnZUNvbnRyb2xsZXI2Z29C
YWNrRXYKK19fWk43V2ViQ29yZTE0UGFnZUNvbnRyb2xsZXI4Z29Ub0l0ZW1FUE5TXzExSGlzdG9y
eUl0ZW1FTlNfMTNGcmFtZUxvYWRUeXBlRQorX19aTjdXZWJDb3JlMTRQYWdlQ29udHJvbGxlcjln
b0ZvcndhcmRFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYK
IF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKQEAgLTQ3Miw3ICs0
NzYsNiBAQCBfX1pON1dlYkNvcmU0Tm9kZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2Vi
Q29yZTRQYWdlMTJzZXRHcm91cE5hbWVFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlNFBhZ2Ux
NHNldE1lZGlhVm9sdW1lRWYKIF9fWk43V2ViQ29yZTRQYWdlMTVhZGRTY2hlZHVsZVBhaXJFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUKLV9fWk43V2ViQ29yZTRQYWdlMTVi
YWNrRm9yd2FyZExpc3RFdgogX19aTjdXZWJDb3JlNFBhZ2UxNWRpZE1vdmVPbnNjcmVlbkV2CiBf
X1pON1dlYkNvcmU0UGFnZTE2c2V0RGVmZXJzTG9hZGluZ0ViCiBfX1pON1dlYkNvcmU0UGFnZTE3
d2lsbE1vdmVPZmZzY3JlZW5FdgpAQCAtNDgzLDkgKzQ4Niw2IEBAIF9fWk43V2ViQ29yZTRQYWdl
MzFzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplRWkKIF9fWk43V2ViQ29yZTRQYWdlMzFz
ZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRN
ZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM3c2V0SW5M
b3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZUViCi1fX1pON1dlYkNvcmU0UGFnZTZnb0Jh
Y2tFdgotX19aTjdXZWJDb3JlNFBhZ2U4Z29Ub0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FTlNfMTNG
cmFtZUxvYWRUeXBlRQotX19aTjdXZWJDb3JlNFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29y
ZTRQYWdlOWluaXRHcm91cEV2CiBfX1pON1dlYkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVu
dEVQTlNfMTdDb250ZXh0TWVudUNsaWVudEVQTlNfMTJFZGl0b3JDbGllbnRFUE5TXzEwRHJhZ0Ns
aWVudEVQTlNfMTVJbnNwZWN0b3JDbGllbnRFUE5TXzE4UGx1Z2luSGFsdGVyQ2xpZW50RQogX19a
TjdXZWJDb3JlNFBhZ2VEMUV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggODcyNDA5YS4uZGJm
YzY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTI3MCwzNiArMTI3MCw2IEBAIEtVUkwg
RnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyOjpnb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKQotewotICAgIGlmIChkaXN0YW5jZSA9
PSAwKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgQmFja0Zvcndh
cmRMaXN0KiBsaXN0ID0gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgaWYgKCFsaXN0KQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBsaXN0LT5pdGVt
QXRJbmRleChkaXN0YW5jZSk7Ci0gICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGlmIChkaXN0YW5j
ZSA+IDApIHsKLSAgICAgICAgICAgIGludCBmb3J3YXJkTGlzdENvdW50ID0gbGlzdC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwotICAgICAgICAgICAgaWYgKGZvcndhcmRMaXN0Q291bnQgPiAwKSAKLSAg
ICAgICAgICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgoZm9yd2FyZExpc3RDb3VudCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgYmFja0xpc3RDb3VudCA9IGxpc3Qt
PmJhY2tMaXN0Q291bnQoKTsKLSAgICAgICAgICAgIGlmIChiYWNrTGlzdENvdW50ID4gMCkKLSAg
ICAgICAgICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgoLWJhY2tMaXN0Q291bnQpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChpdGVtKTsgLy8gd2Ugc2hvdWxkIG5v
dCByZWFjaCB0aGlzIGxpbmUgd2l0aCBhbiBlbXB0eSBiYWNrL2ZvcndhcmQgbGlzdAotICAgIGlm
IChpdGVtKQotICAgICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLCBGcmFtZUxvYWRUeXBlSW5kZXhl
ZEJhY2tGb3J3YXJkKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZy
YW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSogY2hpbGRG
cmFtZSkKIHsKICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CkBAIC0xNjg5LDggKzE2NTksOCBAQCBi
b29sIEZyYW1lTG9hZGVyOjpjYW5DYWNoZVBhZ2UoKQogICAgIHJldHVybiAhbV9mcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKQogICAgICAgICAmJiBjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1l
KCkKICAgICAgICAgJiYgbV9mcmFtZS0+cGFnZSgpCi0gICAgICAgICYmIG1fZnJhbWUtPnBhZ2Uo
KS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKQotICAgICAgICAmJiBtX2ZyYW1lLT5wYWdl
KCktPmJhY2tGb3J3YXJkTGlzdCgpLT5jYXBhY2l0eSgpID4gMAorICAgICAgICAmJiBtX2ZyYW1l
LT5wYWdlKCktPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKQorICAg
ICAgICAmJiBtX2ZyYW1lLT5wYWdlKCktPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCkt
PmNhcGFjaXR5KCkgPiAwCiAgICAgICAgICYmIG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
dXNlc1BhZ2VDYWNoZSgpCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVSZWxv
YWQgCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2lu
CkBAIC0xNzQ0LDkgKzE3MTQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2dDYW5DYWNoZVBhZ2VE
ZWNpc2lvbigpCiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+YmFja0Zvcndh
cmRMaXN0KCktPmVuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPmNvbnRy
b2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKSkKICAgICAgICAgICAgIHsgUENM
T0coIiAgIC1UaGUgYmFjay9mb3J3YXJkIGxpc3QgaXMgZGlzYWJsZWQiKTsgY2Fubm90Q2FjaGUg
PSB0cnVlOyB9Ci0gICAgICAgIGlmICghKG1fZnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRMaXN0
KCktPmNhcGFjaXR5KCkgPiAwKSkKKyAgICAgICAgaWYgKCEobV9mcmFtZS0+cGFnZSgpLT5jb250
cm9sbGVyKCktPmJhY2tGb3J3YXJkTGlzdCgpLT5jYXBhY2l0eSgpID4gMCkpCiAgICAgICAgICAg
ICB7IFBDTE9HKCIgICAtVGhlIGJhY2svZm9yd2FyZCBsaXN0IGhhcyBhIDAgY2FwYWNpdHkiKTsg
Y2Fubm90Q2FjaGUgPSB0cnVlOyB9CiAgICAgICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT5zZXR0
aW5ncygpLT51c2VzUGFnZUNhY2hlKCkpCiAgICAgICAgICAgICB7IFBDTE9HKCIgICAtUGFnZSBz
ZXR0aW5ncyBzYXlzIGIvZiBjYWNoZSBkaXNhYmxlZCIpOyBjYW5ub3RDYWNoZSA9IHRydWU7IH0K
QEAgLTI2OTQsNyArMjY2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAgICAgICAgIGNhc2UgRnJh
bWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZToKICAgICAgICAgY2FzZSBGcmFtZUxv
YWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkOgogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgaWYgKHBhZ2UtPmJhY2tGb3J3YXJkTGlz
dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0Zvcndh
cmRMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSGlzdG9yeUZvckJhY2tGb3J3
YXJkTmF2aWdhdGlvbigpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGRvY3Vt
ZW50IHZpZXcgZm9yIHRoaXMgZG9jdW1lbnQsIG9yIHVzZWQgdGhlIGNhY2hlZCB2aWV3LgpAQCAt
MzExOCw3ICszMDg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JU
aGlzRnJhbWUoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHNob3VsZFJlc2V0ICYm
IGl0ZW0pCiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmdvVG9JdGVt
KGl0ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBwYWdlLT5jb250cm9sbGVyKCktPmJh
Y2tGb3J3YXJkTGlzdCgpLT5nb1RvSXRlbShpdGVtLmdldCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKICAgICAgICAgICAg
ICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8fCBzZXR0aW5n
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVtLmdldCgpKTsKICAgICAgICAg
ICAgICAgICB9CkBAIC0zMTQwLDcgKzMxMTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgdXNlciBoYWQgYSBzY3JvbGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0
aGUgYW5jaG9yIHBvaW50IGlmIGFueS4KICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIGlmICgoaXNCYWNrRm9yd2FyZExvYWRUeXBl
KG1fbG9hZFR5cGUpIHx8IG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCB8fCBtX2xv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSAmJiBwYWdlLT5iYWNrRm9y
d2FyZExpc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAoKGlzQmFja0ZvcndhcmRMb2FkVHlwZSht
X2xvYWRUeXBlKSB8fCBtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQgfHwgbV9sb2Fk
VHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbikgJiYgcGFnZS0+Y29udHJvbGxl
cigpLT5iYWNrRm9yd2FyZExpc3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNjcm9s
bFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CiAKICAgICAgICAgICAgIGlmIChtX2NyZWF0aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQgfHwgIW1fY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKQpA
QCAtMzIwOCw3ICszMTc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJX
aWxsU3VibWl0Rm9ybShQb2xpY3lBY3Rpb24pCiB2b2lkIEZyYW1lTG9hZGVyOjpkaWRGaXJzdExh
eW91dCgpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAg
IGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgJiYgcGFnZS0+YmFja0Zvcndh
cmRMaXN0KCkpCisgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkg
JiYgcGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKSkKICAgICAgICAgICAgIHJl
c3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwogCiAgICAgbV9maXJzdExheW91dERv
bmUgPSB0cnVlOwpAQCAtMzgwMCw3ICszNzcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MK
ICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAg
ICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICAg
ICAgICAgIGlmIChIaXN0b3J5SXRlbSogcmVzZXRJdGVtID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+
bV9jdXJyZW50SGlzdG9yeUl0ZW0uZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+
YmFja0ZvcndhcmRMaXN0KCktPmdvVG9JdGVtKHJlc2V0SXRlbSk7CisgICAgICAgICAgICAgICAg
ICAgIHBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCktPmdvVG9JdGVtKHJlc2V0
SXRlbSk7CiAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUt
PnNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEdsb2JhbEhpc3RvcnlJ
dGVtKCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgPyAw
IDogcmVzZXRJdGVtKTsKICAgICAgICAgICAgICAgICB9CkBAIC0zOTU3LDI2ICszOTI3LDYgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29u
c3QgU3RyaW5nJiBjb250ZW50LCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRnJh
bWVMb2FkZXI6OmNhbkdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpIGNvbnN0Ci17Ci0gICAg
aWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKGRpc3RhbmNl
ID09IDApCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGRpc3RhbmNlID4g
MCAmJiBkaXN0YW5jZSA8PSBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZExpc3RDb3Vu
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IDAg
JiYgLWRpc3RhbmNlIDw9IHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrTGlzdENvdW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1pbnQgRnJhbWVMb2FkZXI6OmdldEhpc3RvcnlMZW5ndGgoKQotewotICAgIGlmIChQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICByZXR1cm4gcGFnZS0+YmFja0ZvcndhcmRM
aXN0KCktPmJhY2tMaXN0Q291bnQoKSArIDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgRnJh
bWVMb2FkZXI6OmFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKQogewogICAgIGFkZEJh
Y2tGb3J3YXJkSXRlbUNsaXBwZWRBdFRhcmdldChmYWxzZSk7CkBAIC00MTA4LDE0ICs0MDU4LDE0
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEJhY2tGb3J3YXJkSXRlbUNsaXBwZWRBdFRhcmdldChi
b29sIGRvQ2xpcCkKICAgICBBU1NFUlQobWFpbkZyYW1lKTsKICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBtYWluRnJhbWUtPmxvYWRlcigpOwogCi0gICAgaWYgKCFmcmFtZUxvYWRlci0+
bV9kaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uICYmIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5l
bnRyaWVzKCkuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoIWZyYW1lTG9hZGVyLT5tX2RpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb24gJiYgcGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3Qo
KS0+ZW50cmllcygpLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGZyYW1lTG9hZGVyLT5tX2RpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24gPSB0cnVlOwogICAgICAgICBtX2NsaWVudC0+ZGlkUGVyZm9y
bUZpcnN0TmF2aWdhdGlvbigpOwogICAgIH0KIAogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRl
bSA9IGZyYW1lTG9hZGVyLT5jcmVhdGVIaXN0b3J5SXRlbVRyZWUobV9mcmFtZSwgZG9DbGlwKTsK
ICAgICBMT0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2Zv
cndhcmQgaXRlbSAlcCBmb3IgZnJhbWUgJXMiLCBpdGVtLmdldCgpLCBkb2N1bWVudExvYWRlcigp
LT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmRM
aXN0KCktPmFkZEl0ZW0oaXRlbSk7CisgICAgcGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2Fy
ZExpc3QoKS0+YWRkSXRlbShpdGVtKTsKIH0KIAogUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gRnJh
bWVMb2FkZXI6OmNyZWF0ZUhpc3RvcnlJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wg
Y2xpcEF0VGFyZ2V0KQpAQCAtNDQyOSw3ICs0Mzc5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAv
LyBTZXQgdGhlIEJGIGN1cnNvciBiZWZvcmUgY29tbWl0LCB3aGljaCBsZXRzIHRoZSB1c2VyIHF1
aWNrbHkgY2xpY2sgYmFjay9mb3J3YXJkIGFnYWluLgogICAgIC8vIC0gcGx1cywgaXQgb25seSBt
YWtlcyBzZW5zZSBmb3IgdGhlIHRvcCBsZXZlbCBvZiB0aGUgb3BlcmF0aW9uIHRocm91Z2ggdGhl
IGZyYW1ldHJlZSwKICAgICAvLyBhcyBvcHBvc2VkIHRvIGhhcHBlbmluZyBmb3Igc29tZS9vbmUg
b2YgdGhlIHBhZ2UgY29tbWl0cyB0aGF0IG1pZ2h0IGhhcHBlbiBzb29uCi0gICAgQmFja0Zvcndh
cmRMaXN0KiBiZkxpc3QgPSBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBCYWNrRm9yd2Fy
ZExpc3QqIGJmTGlzdCA9IHBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCk7CiAg
ICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtID0gYmZMaXN0LT5jdXJyZW50SXRlbSgpOyAgICAK
ICAgICBiZkxpc3QtPmdvVG9JdGVtKHRhcmdldEl0ZW0pOwogICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CkBAIC00NTM3LDcgKzQ0ODcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjp1cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKCkKICAgICAgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAg
ICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbShuZWVkUHJpdmFjeSA/IDAg
OiBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKSk7CisgICAgICAgICAgICAg
ICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0obmVlZFByaXZhY3kgPyAwIDogcGFnZS0+Y29u
dHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKGRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0
eSgpICYmIG1fY3VycmVudEhpc3RvcnlJdGVtKSB7CiAgICAgICAgIG1fY3VycmVudEhpc3RvcnlJ
dGVtLT5zZXRVUkwoZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpOwpAQCAtNDYyOSw3ICs0NTc5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvclJlZGlyZWN0V2l0aExvY2tlZEJh
Y2tGb3J3YXJkTGlzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+dXBkYXRl
R2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHBhZ2UtPnNldEdsb2JhbEhpc3RvcnlJdGVtKG5lZWRQcml2YWN5ID8gMCA6IHBhZ2Ut
PmJhY2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0obmVlZFByaXZhY3kgPyAwIDogcGFnZS0+Y29udHJv
bGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fY3VycmVudEhpc3RvcnlJdGVtKSB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAppbmRleCBjNWZkNDJkLi5lNDc3M2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTIz
OCwxMCArMjM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgYmFzZVVS
TCgpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgY2FuR29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5j
ZSkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZ29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSk7Ci0g
ICAgICAgIGludCBnZXRIaXN0b3J5TGVuZ3RoKCk7Ci0KICAgICAgICAgdm9pZCBiZWdpbigpOwog
ICAgICAgICB2b2lkIGJlZ2luKGNvbnN0IEtVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0
QXZhaWxhYmxlID0gdHJ1ZSwgU2VjdXJpdHlPcmlnaW4qIGZvcmNlZFNlY3VyaXR5T3JpZ2luID0g
MCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcCBi
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAppbmRleCAzNzUzOGY4Li5iNjg2
ZDc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCkBAIC0yODIsOCArMjgyLDgg
QEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVk
dWxlcj4qKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gZ28oaSE9MCkgZnJvbSBhIGZy
YW1lIG5hdmlnYXRlcyBpbnRvIHRoZSBoaXN0b3J5IG9mIHRoZSBmcmFtZSBvbmx5LAogICAgICAg
ICAgICAgLy8gaW4gYm90aCBJRSBhbmQgTlMgKGJ1dCBub3QgaW4gTW96aWxsYSkuIFdlIGNhbid0
IGVhc2lseSBkbyB0aGF0LgotICAgICAgICAgICAgaWYgKGxvYWRlci0+Y2FuR29CYWNrT3JGb3J3
YXJkKHJlZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpKQotICAgICAgICAgICAgICAgIGxvYWRlci0+
Z29CYWNrT3JGb3J3YXJkKHJlZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpOworICAgICAgICAgICAg
aWYgKG1fZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5jYW5Hb0JhY2tPckZvcndhcmQocmVk
aXJlY3Rpb24tPmhpc3RvcnlTdGVwcykpCisgICAgICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgp
LT5jb250cm9sbGVyKCktPmdvQmFja09yRm9yd2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBz
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlv
bjo6Zm9ybVN1Ym1pc3Npb246CiAgICAgICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlv
biB3aWxsIGZpbmQgYSB0YXJnZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0
aW1lci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTNhODZhNS4u
ZjZiODdlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE2Niwx
MCArMTY2LDEyIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29weSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0dvQmFj
azoKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5nb0JhY2tPckZvcndhcmQoLTEpOworICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jb250
cm9sbGVyKCktPmdvQmFja09yRm9yd2FyZCgtMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmdv
QmFja09yRm9yd2FyZCgxKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
KQorICAgICAgICAgICAgcGFnZS0+Y29udHJvbGxlcigpLT5nb0JhY2tPckZvcndhcmQoMSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcDoKICAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLT5zdG9wKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDBmZjg4MTEuLjkwMTFj
NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBET01XaW5kb3c6OmNs
b3NlKCkKICAgICAgICAgc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmFsbG93U2NyaXB0c1RvQ2xvc2VX
aW5kb3dzKCk7CiAKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPm9wZW5lZEJ5RE9NKCkKLSAg
ICAgICAgfHwgbV9mcmFtZS0+bG9hZGVyKCktPmdldEhpc3RvcnlMZW5ndGgoKSA8PSAxCisgICAg
ICAgIHx8IHBhZ2UtPmNvbnRyb2xsZXIoKS0+Z2V0SGlzdG9yeUxlbmd0aCgpIDw9IDEKICAgICAg
ICAgfHwgYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MpCiAgICAgICAgIG1fZnJhbWUtPnNjaGVk
dWxlQ2xvc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1dl
YkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCBiODUxNThmLi5hYTgxYmFjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CkBAIC01MCw3ICs1MCw5IEBAIHVuc2lnbmVkIEhpc3Rvcnk6Omxlbmd0aCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9mcmFtZS0+
bG9hZGVyKCktPmdldEhpc3RvcnlMZW5ndGgoKTsKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxl
cigpLT5nZXRIaXN0b3J5TGVuZ3RoKCk7CiB9CiAKIHZvaWQgSGlzdG9yeTo6YmFjaygpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggMmQwYzkxYy4uMzE2N2MwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFBhZ2U6OlBhZ2Uo
Q2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVu
dUNsaWVudCwgRWRpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MobmV3IFNldHRpbmdzKHRoaXMp
KQogICAgICwgbV9wcm9ncmVzcyhuZXcgUHJvZ3Jlc3NUcmFja2VyKQotICAgICwgbV9iYWNrRm9y
d2FyZExpc3QoQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUodGhpcykpCisgICAgLCBtX2NvbnRyb2xs
ZXIobmV3IFBhZ2VDb250cm9sbGVyKHRoaXMpKQogICAgICwgbV90aGVtZShSZW5kZXJUaGVtZTo6
dGhlbWVGb3JQYWdlKHRoaXMpKQogICAgICwgbV9lZGl0b3JDbGllbnQoZWRpdG9yQ2xpZW50KQog
ICAgICwgbV9mcmFtZUNvdW50KDApCkBAIC0xNjcsNiArMTY3LDEyIEBAIFBhZ2U6OlBhZ2UoQ2hy
b21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNs
aWVudCwgRWRpCiAjZW5kaWYKIH0KIAorUGFnZUNvbnRyb2xsZXI6OlBhZ2VDb250cm9sbGVyKFBh
Z2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEJh
Y2tGb3J3YXJkTGlzdDo6Y3JlYXRlKHBhZ2UpKQoreworfQorCiBQYWdlOjp+UGFnZSgpCiB7CiAg
ICAgbV9tYWluRnJhbWUtPnNldFZpZXcoMCk7CkBAIC0xODMsOCArMTg5LDYgQEAgUGFnZTo6flBh
Z2UoKQogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgp
OwogI2VuZGlmCiAKLSAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Y2xvc2UoKTsKLQogI2lmbmRlZiBO
REVCVUcKICAgICBwYWdlQ291bnRlci5kZWNyZW1lbnQoKTsKIApAQCAtMTk1LDE4ICsxOTksMjMg
QEAgUGFnZTo6flBhZ2UoKQogI2VuZGlmCiB9CiAKK1BhZ2VDb250cm9sbGVyOjp+UGFnZUNvbnRy
b2xsZXIoKQoreworICAgIG1fYmFja0ZvcndhcmRMaXN0LT5jbG9zZSgpOworfQorCiB2b2lkIFBh
Z2U6OnNldE1haW5GcmFtZShQYXNzUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUpCiB7CiAgICAgQVNT
RVJUKCFtX21haW5GcmFtZSk7IC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaW5pdGlh
bGl6YXRpb24KICAgICBtX21haW5GcmFtZSA9IG1haW5GcmFtZTsKIH0KIAotQmFja0ZvcndhcmRM
aXN0KiBQYWdlOjpiYWNrRm9yd2FyZExpc3QoKQorQmFja0ZvcndhcmRMaXN0KiBQYWdlQ29udHJv
bGxlcjo6YmFja0ZvcndhcmRMaXN0KCkKIHsKICAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3Qu
Z2V0KCk7CiB9CiAKLWJvb2wgUGFnZTo6Z29CYWNrKCkKK2Jvb2wgUGFnZUNvbnRyb2xsZXI6Omdv
QmFjaygpCiB7CiAgICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+YmFj
a0l0ZW0oKTsKICAgICAKQEAgLTIxNyw3ICsyMjYsNyBAQCBib29sIFBhZ2U6OmdvQmFjaygpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFBhZ2U6OmdvRm9yd2FyZCgpCitib29sIFBhZ2VD
b250cm9sbGVyOjpnb0ZvcndhcmQoKQogewogICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gbV9iYWNr
Rm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCk7CiAgICAgCkBAIC0yMjgsMjMgKzIzNyw2NCBAQCBi
b29sIFBhZ2U6OmdvRm9yd2FyZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBhZ2U6
OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCit2b2lkIFBh
Z2VDb250cm9sbGVyOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSB0
eXBlKQogewogICAgIC8vIEFib3J0IGFueSBjdXJyZW50IGxvYWQgaWYgd2UncmUgZ29pbmcgdG8g
YSBoaXN0b3J5IGl0ZW0KIAogICAgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdpdGggYW55IG9wZW4g
ZGF0YWJhc2UgY29ubmVjdGlvbnMuIEJ5IGRlZmF1bHQgd2Ugc3RvcCB0aGVtIGFuZCB0ZXJtaW5h
dGUgdGhlIGRhdGFiYXNlIHRocmVhZC4KICAgICBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGlj
eSA9IERhdGFiYXNlUG9saWN5U3RvcDsKIAorICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpOworCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIC8vIElmIHdlJ3JlIG5h
dmlnYXRpbmcgdGhlIGhpc3RvcnkgdmlhIGEgZnJhZ21lbnQgb24gdGhlIHNhbWUgZG9jdW1lbnQs
IHRoZW4gd2UgZG8gbm90IHdhbnQgdG8gc3RvcCBkYXRhYmFzZXMuCi0gICAgY29uc3QgS1VSTCYg
Y3VycmVudFVSTCA9IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgY29uc3QgS1VS
TCYgY3VycmVudFVSTCA9IG1haW5GcmFtZS0+bG9hZGVyKCktPnVybCgpOwogICAgIGNvbnN0IEtV
UkwmIG5ld1VSTCA9IGl0ZW0tPnVybCgpOwogCiAgICAgaWYgKG5ld1VSTC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGN1cnJlbnRVUkws
IG5ld1VSTCkpCiAgICAgICAgIGRhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lDb250aW51
ZTsKICNlbmRpZgotICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0
YWJhc2VQb2xpY3kpOwotICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+Z29Ub0l0ZW0oaXRlbSwg
dHlwZSk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0YWJhc2VQ
b2xpY3kpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCktPmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwor
fQorCitib29sIFBhZ2VDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdAoreworICAgIGlmIChkaXN0YW5jZSA9PSAwKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoZGlzdGFuY2UgPiAwICYmIGRpc3RhbmNlIDw9IG1fYmFja0ZvcndhcmRMaXN0LT5m
b3J3YXJkTGlzdENvdW50KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChkaXN0YW5j
ZSA8IDAgJiYgLWRpc3RhbmNlIDw9IG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrTGlzdENvdW50KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQYWdl
Q29udHJvbGxlcjo6Z29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSkKK3sKKyAgICBpZiAoZGlz
dGFuY2UgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBt
X2JhY2tGb3J3YXJkTGlzdC0+aXRlbUF0SW5kZXgoZGlzdGFuY2UpOworICAgIGlmICghaXRlbSkg
eworICAgICAgICBpZiAoZGlzdGFuY2UgPiAwKSB7CisgICAgICAgICAgICBpbnQgZm9yd2FyZExp
c3RDb3VudCA9IG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkTGlzdENvdW50KCk7CisgICAgICAg
ICAgICBpZiAoZm9yd2FyZExpc3RDb3VudCA+IDApIAorICAgICAgICAgICAgICAgIGl0ZW0gPSBt
X2JhY2tGb3J3YXJkTGlzdC0+aXRlbUF0SW5kZXgoZm9yd2FyZExpc3RDb3VudCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgYmFja0xpc3RDb3VudCA9IG1fYmFja0ZvcndhcmRM
aXN0LT5iYWNrTGlzdENvdW50KCk7CisgICAgICAgICAgICBpZiAoYmFja0xpc3RDb3VudCA+IDAp
CisgICAgICAgICAgICAgICAgaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtQXRJbmRleCgt
YmFja0xpc3RDb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoaXRlbSk7IC8v
IHdlIHNob3VsZCBub3QgcmVhY2ggdGhpcyBsaW5lIHdpdGggYW4gZW1wdHkgYmFjay9mb3J3YXJk
IGxpc3QKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgZ29Ub0l0ZW0oaXRlbSwgRnJhbWVMb2FkVHlw
ZUluZGV4ZWRCYWNrRm9yd2FyZCk7Cit9CisKK2ludCBQYWdlQ29udHJvbGxlcjo6Z2V0SGlzdG9y
eUxlbmd0aCgpCit7CisgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrTGlzdENvdW50
KCkgKyAxOwogfQogCiB2b2lkIFBhZ2U6OnNldEdsb2JhbEhpc3RvcnlJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggNjAyZDk5Yi4uOTNlODY1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogICAgIGNsYXNzIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ7CiAgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBQYWdlOwog
ICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwogICAgIGNsYXNzIFBs
dWdpbkhhbHRlcjsKQEAgLTgxLDYgKzgyLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGVudW0gRmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9u
QmFja3dhcmQgfTsKIAorICAgIGNsYXNzIFBhZ2VDb250cm9sbGVyIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhZ2VDb250cm9sbGVyKFBhZ2UqKTsKKyAgICAg
ICAgflBhZ2VDb250cm9sbGVyKCk7CisKKyAgICAgICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9y
d2FyZExpc3QoKTsKKyAgICAgICAgaW50IGdldEhpc3RvcnlMZW5ndGgoKTsKKworICAgICAgICBi
b29sIGdvQmFjaygpOworICAgICAgICBib29sIGdvRm9yd2FyZCgpOworICAgICAgICBib29sIGNh
bkdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpIGNvbnN0OworICAgICAgICB2b2lkIGdvQmFj
a09yRm9yd2FyZChpbnQgZGlzdGFuY2UpOworCisgICAgICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9y
eUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFBhZ2UqIG1f
cGFnZTsKKyAgICAgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7
CisgICAgfTsKKwogICAgIGNsYXNzIFBhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgc2V0TmVlZHNSZWFwcGx5U3R5bGVzKCk7CkBAIC0x
MDMsMTYgKzEyNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRNYWlu
RnJhbWUoUGFzc1JlZlB0cjxGcmFtZT4pOwogICAgICAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KIAotICAgICAgICBCYWNrRm9yd2FyZExp
c3QqIGJhY2tGb3J3YXJkTGlzdCgpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5n
IHRocmVlIG1ldGhvZHMgZG9uJ3QgZmFsbCB1bmRlciB0aGUgcmVzcG9uc2liaWxpdGllcyBvZiB0
aGUgUGFnZSBvYmplY3QKLSAgICAgICAgLy8gVGhleSBzZWVtIHRvIGZpdCBhIGh5cG90aGV0aWNh
bCBQYWdlLWNvbnRyb2xsZXIgb2JqZWN0IHRoYXQgd291bGQgYmUgYWtpbiB0byB0aGUgCi0gICAg
ICAgIC8vIEZyYW1lLUZyYW1lTG9hZGVyIHJlbGF0aW9uc2hpcC4gIFRoZXkgaGF2ZSB0byBsaXZl
IGhlcmUgbm93LCBidXQgc2hvdWxkIG1vdmUgc29tZXdoZXJlIHRoYXQKLSAgICAgICAgLy8gbWFr
ZXMgbW9yZSBzZW5zZSB3aGVuIHRoYXQgY2xhc3MgZXhpc3RzLgotICAgICAgICBib29sIGdvQmFj
aygpOwotICAgICAgICBib29sIGdvRm9yd2FyZCgpOwotICAgICAgICB2b2lkIGdvVG9JdGVtKEhp
c3RvcnlJdGVtKiwgRnJhbWVMb2FkVHlwZSk7Ci0KICAgICAgICAgSGlzdG9yeUl0ZW0qIGdsb2Jh
bEhpc3RvcnlJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxIaXN0b3J5SXRlbS5nZXQoKTsg
fQogICAgICAgICB2b2lkIHNldEdsb2JhbEhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKik7CiAKQEAg
LTE0MCw2ICsxNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgU2V0
dGluZ3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAg
ICAgICBQcm9ncmVzc1RyYWNrZXIqIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVz
cy5nZXQoKTsgfQorICAgICAgICBQYWdlQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udHJvbGxlci5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICAgICAgdm9pZCBzZXRQYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpIHsgbV9wYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyID0gY29udHJvbGxl
cjsgfQpAQCAtMjQ3LDggKzI1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAg
ICAgICBPd25QdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxQcm9ncmVz
c1RyYWNrZXI+IG1fcHJvZ3Jlc3M7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8QmFja0Zvcndh
cmRMaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKKworICAgICAgICBPd25QdHI8UGFnZUNvbnRyb2xs
ZXI+IG1fY29udHJvbGxlcjsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX21haW5GcmFtZTsKIAog
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fZ2xvYmFsSGlzdG9yeUl0ZW07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAppbmRleCA2NzJmY2FiLi4wYzI5MjM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTM2Niw3ICszNjYsNyBA
QCB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdXNlc1BhZ2VDYWNoZSkKICAg
ICAgICAgCiAgICAgbV91c2VzUGFnZUNhY2hlID0gdXNlc1BhZ2VDYWNoZTsKICAgICBpZiAoIW1f
dXNlc1BhZ2VDYWNoZSkgewotICAgICAgICBIaXN0b3J5SXRlbVZlY3RvciYgaGlzdG9yeUl0ZW1z
ID0gbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW50cmllcygpOworICAgICAgICBIaXN0b3J5
SXRlbVZlY3RvciYgaGlzdG9yeUl0ZW1zID0gbV9wYWdlLT5jb250cm9sbGVyKCktPmJhY2tGb3J3
YXJkTGlzdCgpLT5lbnRyaWVzKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBo
aXN0b3J5SXRlbXMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICBwYWdlQ2FjaGUoKS0+cmVtb3Zl
KGhpc3RvcnlJdGVtc1tpXS5nZXQoKSk7CiAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZWxlYXNlQXV0
b3JlbGVhc2VkUGFnZXNOb3coKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4
dE1lbnUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXggMjFmYTdk
Zi4uYzE3YTAyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKQEAgLTM2MSwxMCArMzYxLDEw
IEBAIHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkKICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKFN0b3BJdGVtKTsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFJlbG9hZEl0ZW0pOwog
I2Vsc2UKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyLT5jYW5Hb0JhY2tPckZvcndhcmQoLTEp
KQorICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmNv
bnRyb2xsZXIoKS0+Y2FuR29CYWNrT3JGb3J3YXJkKC0xKSkKICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShCYWNrSXRlbSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyLT5jYW5H
b0JhY2tPckZvcndhcmQoMSkpCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYg
ZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5jYW5Hb0JhY2tPckZvcndhcmQoMSkpCiAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0pOwogCiAgICAgICAgICAgICAg
ICAgLy8gdXNlIGlzTG9hZGluZ0luQVBJU2Vuc2UgcmF0aGVyIHRoYW4gaXNMb2FkaW5nIGJlY2F1
c2UgU3RvcC9SZWxvYWQgYXJlCkBAIC03MjEsMTAgKzcyMSwxMCBAQCB2b2lkIENvbnRleHRNZW51
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0dv
QmFjazoKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5sb2FkZXIoKS0+Y2FuR29C
YWNrT3JGb3J3YXJkKC0xKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5wYWdl
KCkgJiYgZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5jYW5Hb0JhY2tPckZvcndhcmQoLTEp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnR29G
b3J3YXJkOgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmxvYWRlcigpLT5jYW5H
b0JhY2tPckZvcndhcmQoMSk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+cGFn
ZSgpICYmIGZyYW1lLT5wYWdlKCktPmNvbnRyb2xsZXIoKS0+Y2FuR29CYWNrT3JGb3J3YXJkKDEp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3Rv
cDoKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwv
V01MRG9FbGVtZW50LmNwcCBiL1dlYkNvcmUvd21sL1dNTERvRWxlbWVudC5jcHAKaW5kZXggMzhh
ZDVkZC4uMWQ0N2I4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MRG9FbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL3dtbC9XTUxEb0VsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
V01MRG9FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
ICAgICAgICBldmVudFRpbWVyLT5zdG9wKCk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWdlU3Rh
dGUtPnBhZ2UoKS0+Z29CYWNrKCk7CisgICAgICAgIHBhZ2VTdGF0ZS0+cGFnZSgpLT5jb250cm9s
bGVyKCktPmdvQmFjaygpOwogICAgIH0gZWxzZSBpZiAobV90eXBlID09ICJyZXNldCIpIHsKICAg
ICAgICAgV01MUGFnZVN0YXRlKiBwYWdlU3RhdGUgPSB3bWxQYWdlU3RhdGVGb3JEb2N1bWVudChk
b2N1bWVudCgpKTsKICAgICAgICAgaWYgKCFwYWdlU3RhdGUpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dtbC9XTUxEb2N1bWVudC5jcHAgYi9XZWJDb3JlL3dtbC9XTUxEb2N1bWVudC5jcHAKaW5kZXgg
ZWYwYmZjOC4uY2FmN2E1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvd21sL1dNTERvY3VtZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IFdNTERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogICAgICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gcGFnZS0+
YmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIEJhY2tGb3J3YXJkTGlzdCogbGlzdCA9IHBhZ2Ut
PmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCk7CiAgICAgICAgIGlmICghbGlzdCkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdNTERvY3VtZW50Ojpm
aW5pc2hlZFBhcnNpbmcoKQogICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgcGFnZS0+Z29Ub0l0ZW0oaXRlbSwgRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNr
Tm90QWNjZXNzaWJsZSk7CisgICAgICAgIHBhZ2UtPmNvbnRvbGxlcigpLT5nb1RvSXRlbShpdGVt
LCBGcmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RBY2Nlc3NpYmxlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmNwcCBiL1dl
YkNvcmUvd21sL1dNTFBhZ2VTdGF0ZS5jcHAKaW5kZXggM2UxODYzZC4uYmIzZmZiMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmNwcAorKysgYi9XZWJDb3JlL3dtbC9XTUxQ
YWdlU3RhdGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV01MUGFnZVN0YXRlOjpyZXNldCgp
CiAgICAgbV92YXJpYWJsZXMuY2xlYXIoKTsKIAogICAgIC8vIENsZWFyIHRoZSBuYXZpZ2F0aW9u
IGhpc3Rvcnkgc3RhdGUgCi0gICAgaWYgKEJhY2tGb3J3YXJkTGlzdCogbGlzdCA9IG1fcGFnZSA/
IG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkgOiAwKQorICAgIGlmIChCYWNrRm9yd2FyZExpc3Qq
IGxpc3QgPSBtX3BhZ2UgPyBtX3BhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCkg
OiAwKQogICAgICAgICBsaXN0LT5jbGVhcldNTFBhZ2VIaXN0b3J5KCk7CiB9CiAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdGF0aWMgYm9vbCB0cnlBY2Nlc3NIaXN0b3J5VVJMcyhQYWdlKiBwYWdlLCBL
VVJMJiBwcmV2aW91c1VSTCwgS1VSTCYgY3VycmVudFVSTAogICAgIGlmICghZnJhbWUgfHwgIWZy
YW1lLT5kb2N1bWVudCgpKSAgICAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQmFja0Zv
cndhcmRMaXN0KiBsaXN0ID0gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7CisgICAgQmFja0Zvcndh
cmRMaXN0KiBsaXN0ID0gcGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKTsKICAg
ICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93bWwvV01MUHJldkVsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01MUHJldkVsZW1lbnQuY3Bw
CmluZGV4IDNkNDg3ZWEuLjE2ZTI1YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTFByZXZF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3dtbC9XTUxQcmV2RWxlbWVudC5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgdm9pZCBXTUxQcmV2RWxlbWVudDo6ZXhlY3V0ZVRhc2soKQogICAgIGlmIChXTUxU
aW1lckVsZW1lbnQqIGV2ZW50VGltZXIgPSBjYXJkLT5ldmVudFRpbWVyKCkpCiAgICAgICAgIGV2
ZW50VGltZXItPnN0b3AoKTsKIAotICAgIHBhZ2VTdGF0ZS0+cGFnZSgpLT5nb0JhY2soKTsKKyAg
ICBwYWdlU3RhdGUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5nb0JhY2soKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCAzMjQ2ZGY4Li43NzFjN2IwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTEwLTAyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yIFBhZ2VDb250cm9sbGVyIG91dCBvZiBGcmFtZUxv
YWRlciBhbmQgUGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAwMzcKKworICAgICAgICBNb3ZlIHRvIG5ldyBQYWdlQ29udHJvbGxlciBBUEkuCisK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcDoKKyAgICAgICAg
KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfbmV3X3dpdGhfd2ViX3ZpZXcpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3QpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dvX3Rv
X2JhY2tfZm9yd2FyZF9pdGVtKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nb19iYWNrKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nb19iYWNrX29yX2ZvcndhcmQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nh
bl9nb19iYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCk6CisK
IDIwMDktMTAtMDEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuY3BwCmluZGV4IDMxNjMxYTUuLjMwZTE4NjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRf
bGlzdF9uZXdfd2l0aF93ZWJfdmlldyhXZWJLaXRXCiAgICAgd2ViQmFja0ZvcndhcmRMaXN0ID0g
V0VCS0lUX1dFQl9CQUNLX0ZPUldBUkRfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0JBQ0tfRk9SV0FSRF9MSVNULCBOVUxMKSk7CiAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0
UHJpdmF0ZSogcHJpdiA9IHdlYkJhY2tGb3J3YXJkTGlzdC0+cHJpdjsKIAotICAgIHByaXYtPmJh
Y2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViVmlldyktPmJhY2tGb3J3YXJkTGlzdCgpOworICAgIHBy
aXYtPmJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViVmlldyktPmNvbnRyb2xsZXIoKS0+YmFja0Zv
cndhcmRMaXN0KCk7CiAgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0LT5zZXRFbmFibGVkKFRSVUUp
OwogCiAgICAgcmV0dXJuIHdlYkJhY2tGb3J3YXJkTGlzdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggMzgyNjI1YS4uMWQ1ODI4MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKQEAgLTI3NTgsNyArMjc1OCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9t
YWludGFpbnNfYmFja19mb3J3YXJkX2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2JvCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0g
ICAgY29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCktPnNldEVuYWJsZWQoZmxhZyk7Cisg
ICAgY29yZSh3ZWJWaWV3KS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5h
YmxlZChmbGFnKTsKIH0KIAogLyoqCkBAIC0yNzc1LDcgKzI3NzUsNyBAQCBXZWJLaXRXZWJCYWNr
Rm9yd2FyZExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3QoV2ViS2l0
V2ViVmlldyogdwogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwogCi0gICAgaWYgKCFjb3JlKHdlYlZpZXcpIHx8ICFjb3JlKHdlYlZpZXcpLT5iYWNrRm9y
d2FyZExpc3QoKS0+ZW5hYmxlZCgpKQorICAgIGlmICghY29yZSh3ZWJWaWV3KSB8fCAhY29yZSh3
ZWJWaWV3KS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBwcml2LT5iYWNrRm9yd2FyZExpc3Q7CkBA
IC0yNzk5LDcgKzI3OTksNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19m
b3J3YXJkX2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VwogICAgIGlmICghd2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKGJhY2tGb3J3YXJkTGlzdCwg
aXRlbSkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGNvcmUod2ViVmlldyktPmdvVG9J
dGVtKGNvcmUoaXRlbSksIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpOworICAgIGNv
cmUod2ViVmlldyktPmNvbnRyb2xsZXIoKS0+Z29Ub0l0ZW0oY29yZShpdGVtKSwgRnJhbWVMb2Fk
VHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTI4MTMs
NyArMjgxMyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5nb0JhY2soKTsKKyAgICBjb3JlKHdlYlZpZXcp
LT5jb250cm9sbGVyKCktPmdvQmFjaygpOwogfQogCiAvKioKQEAgLTI4MjksOCArMjgyOSw3IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2tfb3JfZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBnaW50IHN0ZXBzKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1h
aW5GcmFtZSgpOwotICAgIGZyYW1lLT5sb2FkZXIoKS0+Z29CYWNrT3JGb3J3YXJkKHN0ZXBzKTsK
KyAgICBjb3JlKHdlYlZpZXcpLT5jb250cm9sbGVyKCktPmdvQmFja09yRm9yd2FyZChzdGVwcyk7
CiB9CiAKIC8qKgpAQCAtMjg0Myw3ICsyODQyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29f
Zm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAotICAgIGNvcmUod2ViVmlldyktPmdvRm9y
d2FyZCgpOworICAgIGNvcmUod2ViVmlldyktPmNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiB9
CiAKIC8qKgpAQCAtMjg1OCw3ICsyODU3LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nh
bl9nb19iYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKLSAgICBpZiAoIWNv
cmUod2ViVmlldykgfHwgIWNvcmUod2ViVmlldyktPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRl
bSgpKQorICAgIGlmICghY29yZSh3ZWJWaWV3KSB8fCAhY29yZSh3ZWJWaWV3KS0+Y29udHJvbGxl
cigpLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKSkKICAgICAgICAgcmV0dXJuIEZBTFNF
OwogCiAgICAgcmV0dXJuIFRSVUU7CkBAIC0yOTAwLDcgKzI4OTksNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGlmICghcGFnZS0+YmFja0Zv
cndhcmRMaXN0KCktPmZvcndhcmRJdGVtKCkpCisgICAgaWYgKCFwYWdlLT5jb250cm9sbGVyKCkt
PmJhY2tGb3J3YXJkTGlzdCgpLT5mb3J3YXJkSXRlbSgpKQogICAgICAgICByZXR1cm4gRkFMU0U7
CiAKICAgICByZXR1cm4gVFJVRTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDAwZWUwOC4uMWU5NTJlMCAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAwOS0xMC0wMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvciBQYWdl
Q29udHJvbGxlciBvdXQgb2YgRnJhbWVMb2FkZXIgYW5kIFBhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDM3CisKKyAgICAgICAgTW92ZSB0byBu
ZXcgUGFnZUNvbnRyb2xsZXIgQVBJLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcu
bW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBrZXlEb3duOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfbG9hZEJhY2tGb3J3YXJkTGlzdEZy
b21PdGhlclZpZXc6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5pdFdpdGhDb2RlcjpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
YmFja0ZvcndhcmRMaXN0XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0TWFpbnRhaW5zQmFja0Zv
cndhcmRMaXN0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGdvQmFja10pOgorICAgICAgICAoLVtX
ZWJWaWV3IGdvRm9yd2FyZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZEl0
ZW06XSk6CisgICAgICAgICgtW1dlYlZpZXcgY2FuR29CYWNrXSk6CisgICAgICAgICgtW1dlYlZp
ZXcgY2FuR29Gb3J3YXJkXSk6CisKIDIwMDktMTAtMDIgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVWaWV3Lm1tCmluZGV4IGMzMDA1ODYuLjE4MTUxMjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbQpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBl
c0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAg
ICAgaW50IGluZGV4LCBjb3VudDsKICAgICBCT09MIGNhbGxTdXBlciA9IFlFUzsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gW3NlbGYgX3dlYl9mcmFtZV07Ci0gICAgQk9PTCBtYWludGFpbnNCYWNr
Rm9yd2FyZExpc3QgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5wYWdlKCktPmJhY2tGb3J3YXJk
TGlzdCgpLT5lbmFibGVkKCkgPyBZRVMgOiBOTzsKKyAgICBCT09MIG1haW50YWluc0JhY2tGb3J3
YXJkTGlzdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5i
YWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpID8gWUVTIDogTk87CiAgICAgCiAgICAgY291bnQg
PSBbY2hhcmFjdGVycyBsZW5ndGhdOwogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDYwZjAzM2QuLmEyYjEzNjEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMTY4LDEwICsxMTY4LDEwIEBAIHN0YXRpYyBib29sIGZh
c3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgLy8gdHlwZS4gIChTZWUgYmVoYXZpb3Ig
bWF0cml4IGF0IHRoZSB0b3Agb2YgV2ViRnJhbWVQcml2YXRlLikgIFNvIHdlIGNvcHkgYWxsIHRo
ZSBpdGVtcwogICAgIC8vIGluIHRoZSBiYWNrIGZvcndhcmQgbGlzdCwgYW5kIGdvIHRvIHRoZSBj
dXJyZW50IG9uZS4KIAotICAgIEJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gX3By
aXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpOworICAgIEJhY2tGb3J3YXJkTGlzdCogYmFj
a0ZvcndhcmRMaXN0ID0gX3ByaXZhdGUtPnBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRM
aXN0KCk7CiAgICAgQVNTRVJUKCFiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpOyAvLyBk
ZXN0aW5hdGlvbiBsaXN0IHNob3VsZCBiZSBlbXB0eQogCi0gICAgQmFja0ZvcndhcmRMaXN0KiBv
dGhlckJhY2tGb3J3YXJkTGlzdCA9IG90aGVyVmlldy0+X3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3
YXJkTGlzdCgpOworICAgIEJhY2tGb3J3YXJkTGlzdCogb3RoZXJCYWNrRm9yd2FyZExpc3QgPSBv
dGhlclZpZXctPl9wcml2YXRlLT5wYWdlLT5jb250cm9sbGVyKCktPmJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIGlmICghb3RoZXJCYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpCiAgICAgICAg
IHJldHVybjsgLy8gZW1wdHkgYmFjayBmb3J3YXJkIGxpc3QsIGJhaWwKICAgICAKQEAgLTExOTIs
NyArMTE5Miw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAg
ICAgfQogICAgIAogICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKLSAgICBfcHJpdmF0ZS0+cGFn
ZS0+Z29Ub0l0ZW0obmV3SXRlbVRvR29UbywgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2Fy
ZCk7CisgICAgX3ByaXZhdGUtPnBhZ2UtPmNvbnRyb2xsZXIoKS0+Z29Ub0l0ZW0obmV3SXRlbVRv
R29UbywgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiB9CiAKIC0gKHZvaWQpX3Nl
dEZvcm1EZWxlZ2F0ZTogKGlkPFdlYkZvcm1EZWxlZ2F0ZT4pZGVsZWdhdGUKQEAgLTI1MzAsNyAr
MjUzMCw3IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCkK
IAogICAgICAgICBMT0coRW5jb2RpbmcsICJGcmFtZU5hbWUgPSAlQCwgR3JvdXBOYW1lID0gJUAs
IHVzZUJhY2tGb3J3YXJkTGlzdCA9ICVkXG4iLCBmcmFtZU5hbWUsIGdyb3VwTmFtZSwgKGludCl1
c2VCYWNrRm9yd2FyZExpc3QpOwogICAgICAgICBbcmVzdWx0IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhGcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWUgdXNlc0RvY3VtZW50
Vmlld3M6WUVTXTsKLSAgICAgICAgW3Jlc3VsdCBwYWdlXS0+YmFja0ZvcndhcmRMaXN0KCktPnNl
dEVuYWJsZWQodXNlQmFja0ZvcndhcmRMaXN0KTsKKyAgICAgICAgW3Jlc3VsdCBwYWdlXS0+Y29u
dHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5hYmxlZCh1c2VCYWNrRm9yd2FyZExp
c3QpOwogICAgICAgICByZXN1bHQtPl9wcml2YXRlLT5hbGxvd3NVbmRvID0gYWxsb3dzVW5kbzsK
ICAgICAgICAgaWYgKHByZWZlcmVuY2VzKQogICAgICAgICAgICAgW3Jlc3VsdCBzZXRQcmVmZXJl
bmNlczpwcmVmZXJlbmNlc107CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCBzdGF0aWMgYm9vbCBuZWVk
c1dlYlZpZXdJbml0VGhyZWFkV29ya2Fyb3VuZCgpCiAgICAgLy8gUmVzdG9yZSB0aGUgc3Vidmll
d3Mgd2Ugc2V0IGFzaWRlLgogICAgIF9zdWJ2aWV3cyA9IG9yaWdpbmFsU3Vidmlld3M7CiAKLSAg
ICBCT09MIHVzZUJhY2tGb3J3YXJkTGlzdCA9IF9wcml2YXRlLT5wYWdlICYmIF9wcml2YXRlLT5w
YWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpOworICAgIEJPT0wgdXNlQmFja0Zvcndh
cmRMaXN0ID0gX3ByaXZhdGUtPnBhZ2UgJiYgX3ByaXZhdGUtPnBhZ2UtPmNvbnRyb2xsZXIoKS0+
YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKTsKICAgICBpZiAoW2VuY29kZXIgYWxsb3dzS2V5
ZWRDb2RpbmddKSB7CiAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpbW3NlbGYgbWFpbkZy
YW1lXSBuYW1lXSBmb3JLZXk6QCJGcmFtZU5hbWUiXTsKICAgICAgICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OltzZWxmIGdyb3VwTmFtZV0gZm9yS2V5OkAiR3JvdXBOYW1lIl07CkBAIC0yODYwLDE2
ICsyODYwLDE2IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5k
KCkKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IGlmICghX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5lbmFibGVkKCkpCisgICAg
aWYgKCFfcHJpdmF0ZS0+cGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBh
Z2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5wYWdlLT5j
b250cm9sbGVyKCktPmJhY2tGb3J3YXJkTGlzdCgpKTsKIH0KIAogLSAodm9pZClzZXRNYWludGFp
bnNCYWNrRm9yd2FyZExpc3Q6KEJPT0wpZmxhZwogewogICAgIGlmICghX3ByaXZhdGUtPnBhZ2Up
CiAgICAgICAgIHJldHVybjsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkt
PnNldEVuYWJsZWQoZmxhZyk7CisgICAgX3ByaXZhdGUtPnBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFj
a0ZvcndhcmRMaXN0KCktPnNldEVuYWJsZWQoZmxhZyk7CiB9CiAKIC0gKEJPT0wpZ29CYWNrCkBA
IC0yODc3LDcgKzI4NzcsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1dlYlZpZXdJbml0VGhyZWFkV29y
a2Fyb3VuZCgpCiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIAotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+Z29CYWNrKCk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5wYWdlLT5jb250cm9sbGVyKCktPmdvQmFjaygpOwogfQogCiAtIChCT09MKWdvRm9y
d2FyZApAQCAtMjg4NSw3ICsyODg1LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRo
cmVhZFdvcmthcm91bmQoKQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVy
biBOTzsKIAotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+Z29Gb3J3YXJkKCk7CisgICAgcmV0
dXJuIF9wcml2YXRlLT5wYWdlLT5jb250cm9sbGVyKCktPmdvRm9yd2FyZCgpOwogfQogCiAtIChC
T09MKWdvVG9CYWNrRm9yd2FyZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQpAQCAtMjg5Myw3
ICsyODkzLDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91bmQo
KQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIF9w
cml2YXRlLT5wYWdlLT5nb1RvSXRlbShjb3JlKGl0ZW0pLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJh
Y2tGb3J3YXJkKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+Y29udHJvbGxlcigpLT5nb1RvSXRlbShj
b3JlKGl0ZW0pLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKICAgICByZXR1cm4g
WUVTOwogfQogCkBAIC0zNjM5LDcgKzM2MzksNyBAQCBkb25lOgogICAgIGlmICghX3ByaXZhdGUt
PnBhZ2UpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIHJldHVybiAhIV9wcml2YXRlLT5wYWdl
LT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKTsKKyAgICByZXR1cm4gISFfcHJpdmF0ZS0+
cGFnZS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKTsKIH0KIAog
LSAoQk9PTCljYW5Hb0ZvcndhcmQKQEAgLTM2NDcsNyArMzY0Nyw3IEBAIGRvbmU6CiAgICAgaWYg
KCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgcmV0dXJuICEhX3By
aXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5mb3J3YXJkSXRlbSgpOworICAgIHJldHVy
biAhIV9wcml2YXRlLT5wYWdlLT5jb250cm9sbGVyKCktPmJhY2tGb3J3YXJkTGlzdCgpLT5mb3J3
YXJkSXRlbSgpOwogfQogCiAtIChJQkFjdGlvbilnb0JhY2s6KGlkKXNlbmRlcgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0
b3J5LmNwcAppbmRleCA1NzUyZDY2Li5hZjllZTgzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBp
L3F3ZWJoaXN0b3J5LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcApAQCAt
MzU5LDcgKzM1OSw3IEBAIHZvaWQgUVdlYkhpc3Rvcnk6OmJhY2soKQogICAgIGlmIChjYW5Hb0Jh
Y2soKSkgewogICAgICAgICBkLT5sc3QtPmdvQmFjaygpOwogICAgICAgICBXZWJDb3JlOjpQYWdl
KiBwYWdlID0gZC0+bHN0LT5wYWdlKCk7Ci0gICAgICAgIHBhZ2UtPmdvVG9JdGVtKGN1cnJlbnRJ
dGVtKCkuZC0+aXRlbSwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7
CisgICAgICAgIHBhZ2UtPmNvbnRyb2xsZXIoKS0+Z29Ub0l0ZW0oY3VycmVudEl0ZW0oKS5kLT5p
dGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKICAgICB9CiB9
CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFFXZWJIaXN0b3J5Ojpmb3J3YXJkKCkKICAgICBp
ZiAoY2FuR29Gb3J3YXJkKCkpIHsKICAgICAgICAgZC0+bHN0LT5nb0ZvcndhcmQoKTsKICAgICAg
ICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IGQtPmxzdC0+cGFnZSgpOwotICAgICAgICBwYWdlLT5n
b1RvSXRlbShjdXJyZW50SXRlbSgpLmQtPml0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGVJbmRl
eGVkQmFja0ZvcndhcmQpOworICAgICAgICBwYWdlLT5jb250cm9sbGVyKCktPmdvVG9JdGVtKGN1
cnJlbnRJdGVtKCkuZC0+aXRlbSwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9y
d2FyZCk7CiAgICAgfQogfQogCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBRV2ViSGlzdG9yeTo6
Z29Ub0l0ZW0oY29uc3QgUVdlYkhpc3RvcnlJdGVtICZpdGVtKQogewogICAgIGQtPmxzdC0+Z29U
b0l0ZW0oaXRlbS5kLT5pdGVtKTsKICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gZC0+bHN0LT5w
YWdlKCk7Ci0gICAgcGFnZS0+Z29Ub0l0ZW0oY3VycmVudEl0ZW0oKS5kLT5pdGVtLCBXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBwYWdlLT5jb250cm9sbGVy
KCktPmdvVG9JdGVtKGN1cnJlbnRJdGVtKCkuZC0+aXRlbSwgV2ViQ29yZTo6RnJhbWVMb2FkVHlw
ZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA2NTVmZDBl
Li44MTc3MDIwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICBjdXJyZW50Q29udGV4dE1l
bnUgPSAwOwogI2VuZGlmCiAKLSAgICBoaXN0b3J5LmQgPSBuZXcgUVdlYkhpc3RvcnlQcml2YXRl
KHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICBoaXN0b3J5LmQgPSBuZXcgUVdlYkhpc3Rv
cnlQcml2YXRlKHBhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCkpOwogICAgIG1l
bXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9ucykpOwogfQogCkBAIC0xOTAyLDEwICsxOTAy
LDEwIEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwgYm9v
bCkKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQmFjazoKLSAgICAg
ICAgICAgIGQtPnBhZ2UtPmdvQmFjaygpOworICAgICAgICAgICAgZC0+cGFnZS0+Y29udHJvbGxl
cigpLT5nb0JhY2soKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZvcndhcmQ6
Ci0gICAgICAgICAgICBkLT5wYWdlLT5nb0ZvcndhcmQoKTsKKyAgICAgICAgICAgIGQtPnBhZ2Ut
PmNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTdG9wOgogICAgICAgICAgICAgbWFpbkZyYW1lKCktPmQtPmZyYW1lLT5sb2FkZXIoKS0+
c3RvcEZvclVzZXJDYW5jZWwoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDcwMDU5MTYuLmQyMzNhNjMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDA5LTEwLTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yIFBhZ2VDb250
cm9sbGVyIG91dCBvZiBGcmFtZUxvYWRlciBhbmQgUGFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwMzcKKworICAgICAgICBNb3ZlIHRvIG5ldyBQ
YWdlQ29udHJvbGxlciBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAg
ICAgICAoUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmZvcndhcmQp
OgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmdvVG9JdGVtKToKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAg
ICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorCiAyMDA5LTEwLTAyICBOb3JiZXJ0IExl
c2VyICA8bm9yYmVydC5sZXNlckBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IDc1MWFjOTMuLmY1YjZlYmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMDktMTAtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGYWN0b3IgUGFnZUNvbnRyb2xs
ZXIgb3V0IG9mIEZyYW1lTG9hZGVyIGFuZCBQYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDAzNworCisgICAgICAgIE1vdmUgdG8gbmV3IFBhZ2VD
b250cm9sbGVyIEFQSS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6a2V5RG93bik6CisgICAgICAgIChXZWJWaWV3OjpiYWNrRm9yd2FyZExpc3QpOgorICAgICAg
ICAoV2ViVmlldzo6Z29CYWNrKToKKyAgICAgICAgKFdlYlZpZXc6OmdvRm9yd2FyZCk6CisgICAg
ICAgIChXZWJWaWV3Ojpnb1RvQmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAgKFdlYlZpZXc6OmNh
bkdvQmFjayk6CisgICAgICAgIChXZWJWaWV3OjpjYW5Hb0ZvcndhcmQpOgorICAgICAgICAoV2Vi
Vmlldzo6bG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXcpOgorCiAyMDA5LTEwLTAyICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAppbmRleCAyZGVjNWQwLi42OWVmODYyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE3NDUsOSArMTc0
NSw5IEBAIGJvb2wgV2ViVmlldzo6a2V5RG93bihXUEFSQU0gdmlydHVhbEtleUNvZGUsIExQQVJB
TSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCiAKICAgICAvLyBXZSBuZWVkIHRvIGhhbmRs
ZSBiYWNrL2ZvcndhcmQgdXNpbmcgZWl0aGVyIEJhY2tzcGFjZSgrU2hpZnQpIG9yIEN0cmwrTGVm
dC9SaWdodCBBcnJvdyBrZXlzLgogICAgIGlmICgodmlydHVhbEtleUNvZGUgPT0gVktfQkFDSyAm
JiBrZXlFdmVudC5zaGlmdEtleSgpKSB8fCAodmlydHVhbEtleUNvZGUgPT0gVktfUklHSFQgJiYg
a2V5RXZlbnQuY3RybEtleSgpKSkKLSAgICAgICAgbV9wYWdlLT5nb0ZvcndhcmQoKTsKKyAgICAg
ICAgbV9wYWdlLT5jb250cm9sbGVyKCktPmdvRm9yd2FyZCgpOwogICAgIGVsc2UgaWYgKHZpcnR1
YWxLZXlDb2RlID09IFZLX0JBQ0sgfHwgKHZpcnR1YWxLZXlDb2RlID09IFZLX0xFRlQgJiYga2V5
RXZlbnQuY3RybEtleSgpKSkKLSAgICAgICAgbV9wYWdlLT5nb0JhY2soKTsKKyAgICAgICAgbV9w
YWdlLT5jb250cm9sbGVyKCktPmdvQmFjaygpOwogICAgIAogICAgIC8vIE5lZWQgdG8gc2Nyb2xs
IHRoZSBwYWdlIGlmIHRoZSBhcnJvdyBrZXlzLCBwZ3VwL2RuLCBvciBob21lL2VuZCBhcmUgaGl0
LgogICAgIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247CkBAIC0yNjM3LDcgKzI2MzcsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCgKICAgICBp
ZiAoIW1fdXNlQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogIAotICAg
ICpsaXN0ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShtX3BhZ2UtPmJhY2tG
b3J3YXJkTGlzdCgpKTsKKyAgICAqbGlzdCA9IFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5z
dGFuY2UobV9wYWdlLT5jb250cm9sbGVyKCktPmJhY2tGb3J3YXJkTGlzdCgpKTsKIAogICAgIHJl
dHVybiBTX09LOwogfQpAQCAtMjY1MiwxNCArMjY1MiwxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnNldE1haW50YWluc0JhY2tGb3J3YXJkTGlzdCgKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z29CYWNrKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHN1Y2NlZWRlZCkKIHsKLSAgICAqc3VjY2VlZGVkID0gbV9wYWdlLT5nb0JhY2soKTsK
KyAgICAqc3VjY2VlZGVkID0gbV9wYWdlLT5jb250cm9sbGVyKCktPmdvQmFjaygpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmdvRm9y
d2FyZCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBzdWNjZWVkZWQpCiB7Ci0gICAg
KnN1Y2NlZWRlZCA9IG1fcGFnZS0+Z29Gb3J3YXJkKCk7CisgICAgKnN1Y2NlZWRlZCA9IG1fcGFn
ZS0+Y29udHJvbGxlcigpLT5nb0ZvcndhcmQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
MjY3NCw3ICsyNjc0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpnb1Rv
QmFja0ZvcndhcmRJdGVtKAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7
CiAKLSAgICBtX3BhZ2UtPmdvVG9JdGVtKHdlYkhpc3RvcnlJdGVtLT5oaXN0b3J5SXRlbSgpLCBG
cmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBtX3BhZ2UtPmNvbnRyb2xsZXIo
KS0+Z29Ub0l0ZW0od2ViSGlzdG9yeUl0ZW0tPmhpc3RvcnlJdGVtKCksIEZyYW1lTG9hZFR5cGVJ
bmRleGVkQmFja0ZvcndhcmQpOwogICAgICpzdWNjZWVkZWQgPSBUUlVFOwogCiAgICAgcmV0dXJu
IFNfT0s7CkBAIC0zNDMyLDcgKzM0MzIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OmNhbkdvQmFjaygKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIq
LywKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgKnJl
c3VsdCA9ICEhbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKTsKKyAgICAqcmVz
dWx0ID0gISFtX3BhZ2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCktPmJhY2tJdGVt
KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC0zNDQ3LDcgKzM0NDcsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNhbkdvRm9yd2FyZCgKICAgICAgICAgLyog
W2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9ICEhbV9wYWdlLT5iYWNrRm9yd2FyZExp
c3QoKS0+Zm9yd2FyZEl0ZW0oKTsKKyAgICAqcmVzdWx0ID0gISFtX3BhZ2UtPmNvbnRyb2xsZXIo
KS0+YmFja0ZvcndhcmRMaXN0KCktPmZvcndhcmRJdGVtKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAgICAgCkBAIC00Nzk3LDEzICs0Nzk3LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6bG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXcoCiAgICAgLy8gSXQgdHVy
bnMgb3V0IHRoZSByaWdodCBjb21iaW5hdGlvbiBvZiBiZWhhdmlvciBpcyBkb25lIHdpdGggdGhl
IGJhY2svZm9yd2FyZCBsb2FkCiAgICAgLy8gdHlwZS4gIChTZWUgYmVoYXZpb3IgbWF0cml4IGF0
IHRoZSB0b3Agb2YgV2ViRnJhbWVQcml2YXRlLikgIFNvIHdlIGNvcHkgYWxsIHRoZSBpdGVtcwog
ICAgIC8vIGluIHRoZSBiYWNrIGZvcndhcmQgbGlzdCwgYW5kIGdvIHRvIHRoZSBjdXJyZW50IG9u
ZS4KLSAgICBCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IG1fcGFnZS0+YmFja0Zv
cndhcmRMaXN0KCk7CisgICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBtX3Bh
Z2UtPmNvbnRyb2xsZXIoKS0+YmFja0ZvcndhcmRMaXN0KCk7CiAgICAgQVNTRVJUKCFiYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpOyAvLyBkZXN0aW5hdGlvbiBsaXN0IHNob3VsZCBiZSBl
bXB0eQogCiAgICAgQ09NUHRyPFdlYlZpZXc+IG90aGVyV2ViVmlldzsKICAgICBpZiAoRkFJTEVE
KG90aGVyVmlldy0+UXVlcnlJbnRlcmZhY2UoJm90aGVyV2ViVmlldykpKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwotICAgIEJhY2tGb3J3YXJkTGlzdCogb3RoZXJCYWNrRm9yd2FyZExpc3QgPSBv
dGhlcldlYlZpZXctPm1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7CisgICAgQmFja0ZvcndhcmRM
aXN0KiBvdGhlckJhY2tGb3J3YXJkTGlzdCA9IG90aGVyV2ViVmlldy0+bV9wYWdlLT5jb250cm9s
bGVyKCktPmJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGlmICghb3RoZXJCYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCkpCiAgICAgICAgIHJldHVybiBTX09LOyAvLyBlbXB0eSBiYWNrIGZvcndh
cmQgbGlzdCwgYmFpbAogICAgIApAQCAtNDgyNCw3ICs0ODI0LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojpsb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldygKICAg
ICB9CiAgICAgCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwotICAgIG1fcGFnZS0+Z29Ub0l0
ZW0obmV3SXRlbVRvR29UbywgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CisgICAg
bV9wYWdlLT5jb250cm9sbGVyKCktPmdvVG9JdGVtKG5ld0l0ZW1Ub0dvVG8sIEZyYW1lTG9hZFR5
cGVJbmRleGVkQmFja0ZvcndhcmQpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAyNTA5NmE4
Li44YzhhNDc5IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0xMC0wMiAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZhY3RvciBQYWdlQ29udHJvbGxlciBvdXQgb2YgRnJhbWVMb2FkZXIgYW5kIFBh
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDM3
CisKKyAgICAgICAgTW92ZSB0byBuZXcgUGFnZUNvbnRyb2xsZXIgQVBJLgorCisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFtZTo6R29CYWNrKToKKyAgICAgICAgKHd4
V2ViRnJhbWU6OkdvRm9yd2FyZCk6CisgICAgICAgICh3eFdlYkZyYW1lOjpDYW5Hb0JhY2spOgor
ICAgICAgICAod3hXZWJGcmFtZTo6Q2FuR29Gb3J3YXJkKToKKwogMjAwOS0wOS0yNSAgS2V2aW4g
T2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICB3eCBidWlsZCBm
aXguIEFkZCBFbXB0eVBsdWdpbkhhbHRlckNsaWVudCB3aGVuIGNyZWF0aW5nIHRoZSBQYWdlLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcCBiL1dlYktpdC93eC9XZWJGcmFtZS5j
cHAKaW5kZXggZjIwNTE1Mi4uNWE2YTM1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYkZyYW1l
LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9p
ZCB3eFdlYkZyYW1lOjpMb2FkVVJMKGNvbnN0IHd4U3RyaW5nJiB1cmwpCiBib29sIHd4V2ViRnJh
bWU6OkdvQmFjaygpCiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+
cGFnZSgpKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5nb0JhY2soKTsK
KyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5nb0Jh
Y2soKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIzNiwyMyArMjM2LDIzIEBAIGJvb2wg
d3hXZWJGcmFtZTo6R29CYWNrKCkKIGJvb2wgd3hXZWJGcmFtZTo6R29Gb3J3YXJkKCkKIHsKICAg
ICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJl
dHVybiBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPmdvRm9yd2FyZCgpOworICAgICAgICByZXR1cm4g
bV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5jb250cm9sbGVyKCktPmdvRm9yd2FyZCgpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIHd4V2ViRnJhbWU6OkNhbkdvQmFjaygpCiB7Ci0gICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+cGFnZSgpICYmIG1faW1wbC0+ZnJh
bWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRMaXN0KCkpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZy
YW1lLT5wYWdlKCktPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRlbSgpICE9IE5VTEw7CisgICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+cGFnZSgpICYmIG1faW1wbC0+ZnJh
bWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKSkKKyAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3Qo
KS0+YmFja0l0ZW0oKSAhPSBOVUxMOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIHd4
V2ViRnJhbWU6OkNhbkdvRm9yd2FyZCgpCiB7Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9p
bXBsLT5mcmFtZS0+cGFnZSgpICYmIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRM
aXN0KCkpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPmJhY2tGb3J3YXJk
TGlzdCgpLT5mb3J3YXJkSXRlbSgpICE9IE5VTEw7CisgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYg
bV9pbXBsLT5mcmFtZS0+cGFnZSgpICYmIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+Y29udHJvbGxl
cigpLT5iYWNrRm9yd2FyZExpc3QoKSkKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnBh
Z2UoKS0+Y29udHJvbGxlcigpLT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZEl0ZW0oKSAhPSBO
VUxMOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40576</attachid>
            <date>2009-10-03 08:46:23 -0700</date>
            <delta_ts>2009-10-03 17:17:18 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30037-20091003084623.patch</filename>
            <type>text/plain</type>
            <size>11584</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA0MjM5Yy4uNzY0NzI3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0xMC0wMyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBiYWNrLWZvcndhcmQgbGlzdCBtZXRob2RzIG91dCBvZiBGcmFt
ZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzAwMzcKKworICAgICAgICBUaGlzIGNoYW5nZSBtb3ZlcyB0aGVzZSBiYWNrLWZvcndhcmQgcmVs
YXRlZCBtZXRob2RzIGZyb20gRnJhbWVMb2FkZXIKKyAgICAgICAgdG8gUGFnZS4gIEl0J3MgcG9z
c2libGUgd2Ugc2hvdWxkIG1vdmUgdGhlc2UgbWV0aG9kcyBpbnRvIHNvbWUga2luZCBvZgorICAg
ICAgICAicGFnZSBjb250cm9sbGVyIiBvYmplY3QsIGJ1dCB3ZSBjYW4gZmlndXJlIHRoYXQgb3V0
IGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5OjpsZW5ndGgpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpjYW5Hb0JhY2tPckZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Z29CYWNrT3JGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdl
dEhpc3RvcnlMZW5ndGgpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0NvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6Y2hlY2tPckVuYWJsZUlmTmVl
ZGVkKToKKwogMjAwOS0wOS0yNSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgV2ViQ29yZTo6UGx1Z2luVmlldyBwYXJ0aWNpcGF0ZSBpbiBwbHVn
LWluIGhhbHRpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggODcyNDA5YS4uZDIxYzZhOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTI3MCwzNiArMTI3MCw2IEBAIEtVUkwgRnJhbWVM
b2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpn
b0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKQotewotICAgIGlmIChkaXN0YW5jZSA9PSAwKQot
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgQmFja0ZvcndhcmRMaXN0
KiBsaXN0ID0gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgaWYgKCFsaXN0KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBsaXN0LT5pdGVtQXRJbmRl
eChkaXN0YW5jZSk7Ci0gICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA+IDAp
IHsKLSAgICAgICAgICAgIGludCBmb3J3YXJkTGlzdENvdW50ID0gbGlzdC0+Zm9yd2FyZExpc3RD
b3VudCgpOwotICAgICAgICAgICAgaWYgKGZvcndhcmRMaXN0Q291bnQgPiAwKSAKLSAgICAgICAg
ICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgoZm9yd2FyZExpc3RDb3VudCk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgYmFja0xpc3RDb3VudCA9IGxpc3QtPmJhY2tM
aXN0Q291bnQoKTsKLSAgICAgICAgICAgIGlmIChiYWNrTGlzdENvdW50ID4gMCkKLSAgICAgICAg
ICAgICAgICBpdGVtID0gbGlzdC0+aXRlbUF0SW5kZXgoLWJhY2tMaXN0Q291bnQpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIEFTU0VSVChpdGVtKTsgLy8gd2Ugc2hvdWxkIG5vdCByZWFj
aCB0aGlzIGxpbmUgd2l0aCBhbiBlbXB0eSBiYWNrL2ZvcndhcmQgbGlzdAotICAgIGlmIChpdGVt
KQotICAgICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tG
b3J3YXJkKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSogY2hpbGRGcmFtZSkK
IHsKICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CkBAIC0zOTU3LDI2ICszOTI3LDYgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRnJhbWVMb2Fk
ZXI6OmNhbkdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpIGNvbnN0Ci17Ci0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKGRpc3RhbmNlID09IDAp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGRpc3RhbmNlID4gMCAmJiBk
aXN0YW5jZSA8PSBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZExpc3RDb3VudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IDAgJiYgLWRp
c3RhbmNlIDw9IHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrTGlzdENvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbnQg
RnJhbWVMb2FkZXI6OmdldEhpc3RvcnlMZW5ndGgoKQotewotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQotICAgICAgICByZXR1cm4gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkt
PmJhY2tMaXN0Q291bnQoKSArIDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgRnJhbWVMb2Fk
ZXI6OmFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKQogewogICAgIGFkZEJhY2tGb3J3
YXJkSXRlbUNsaXBwZWRBdFRhcmdldChmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBjNWZk
NDJkLi5lNDc3M2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisr
KyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTIzOCwxMCArMjM4LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgYmFzZVVSTCgpIGNvbnN0OwogCi0gICAg
ICAgIGJvb2wgY2FuR29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgZ29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSk7Ci0gICAgICAgIGludCBnZXRIaXN0
b3J5TGVuZ3RoKCk7Ci0KICAgICAgICAgdm9pZCBiZWdpbigpOwogICAgICAgICB2b2lkIGJlZ2lu
KGNvbnN0IEtVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwg
U2VjdXJpdHlPcmlnaW4qIGZvcmNlZFNlY3VyaXR5T3JpZ2luID0gMCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcAppbmRleCAzNzUzOGY4Li44MTljYmRkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
UmVkaXJlY3RTY2hlZHVsZXIuY3BwCkBAIC0yODIsOCArMjgyLDggQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgLy8gZ28oaSE9MCkgZnJvbSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRv
IHRoZSBoaXN0b3J5IG9mIHRoZSBmcmFtZSBvbmx5LAogICAgICAgICAgICAgLy8gaW4gYm90aCBJ
RSBhbmQgTlMgKGJ1dCBub3QgaW4gTW96aWxsYSkuIFdlIGNhbid0IGVhc2lseSBkbyB0aGF0Lgot
ICAgICAgICAgICAgaWYgKGxvYWRlci0+Y2FuR29CYWNrT3JGb3J3YXJkKHJlZGlyZWN0aW9uLT5o
aXN0b3J5U3RlcHMpKQotICAgICAgICAgICAgICAgIGxvYWRlci0+Z29CYWNrT3JGb3J3YXJkKHJl
ZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpOworICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnBhZ2Uo
KS0+Y2FuR29CYWNrT3JGb3J3YXJkKHJlZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpKQorICAgICAg
ICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Z29CYWNrT3JGb3J3YXJkKHJlZGlyZWN0aW9uLT5o
aXN0b3J5U3RlcHMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpmb3JtU3VibWlzc2lvbjoKICAgICAgICAgICAgIC8vIFRoZSBzdWJtaXRG
b3JtIGZ1bmN0aW9uIHdpbGwgZmluZCBhIHRhcmdldCBmcmFtZSBiZWZvcmUgdXNpbmcgdGhlIHJl
ZGlyZWN0aW9uIHRpbWVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCBhM2E4NmE1Li4xY2YwMDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMTY2LDEwICsxNjYsMTIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnR29CYWNrOgotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmdvQmFja09yRm9yd2FyZCgt
MSk7CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAg
IHBhZ2UtPmdvQmFja09yRm9yd2FyZCgtMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmdvQmFj
a09yRm9yd2FyZCgxKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQor
ICAgICAgICAgICAgcGFnZS0+Z29CYWNrT3JGb3J3YXJkKDEpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0b3A6CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAwZmY4ODExLi40OTI1MjNmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtNzQzLDcgKzc0Myw3IEBAIHZvaWQgRE9NV2luZG93OjpjbG9zZSgpCiAgICAgICAgIHNl
dHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cygpOwogCiAgICAg
aWYgKG1fZnJhbWUtPmxvYWRlcigpLT5vcGVuZWRCeURPTSgpCi0gICAgICAgIHx8IG1fZnJhbWUt
PmxvYWRlcigpLT5nZXRIaXN0b3J5TGVuZ3RoKCkgPD0gMQorICAgICAgICB8fCBwYWdlLT5nZXRI
aXN0b3J5TGVuZ3RoKCkgPD0gMQogICAgICAgICB8fCBhbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93
cykKICAgICAgICAgbV9mcmFtZS0+c2NoZWR1bGVDbG9zZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IGI4
NTE1OGYuLjlhMjdmMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTUwLDcgKzUwLDkgQEAgdW5zaWduZWQgSGlz
dG9yeTo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Z2V0SGlzdG9yeUxlbmd0aCgpOwor
ICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bV9mcmFtZS0+cGFnZSgpLT5nZXRIaXN0b3J5TGVuZ3RoKCk7CiB9CiAKIHZvaWQgSGlzdG9yeTo6
YmFjaygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggMmQwYzkxYy4uMTA1YmM0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjI4LDYgKzIyOCw0MCBA
QCBib29sIFBhZ2U6OmdvRm9yd2FyZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFBh
Z2U6OmNhbkdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpIGNvbnN0Cit7CisgICAgaWYgKGRp
c3RhbmNlID09IDApCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChkaXN0YW5jZSA+IDAg
JiYgZGlzdGFuY2UgPD0gbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRMaXN0Q291bnQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGRpc3RhbmNlIDwgMCAmJiAtZGlzdGFuY2UgPD0g
bV9iYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBhZ2U6OmdvQmFja09yRm9yd2FyZChpbnQg
ZGlzdGFuY2UpCit7CisgICAgaWYgKGRpc3RhbmNlID09IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGRp
c3RhbmNlKTsKKyAgICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgaWYgKGRpc3RhbmNlID4gMCkgewor
ICAgICAgICAgICAgaW50IGZvcndhcmRMaXN0Q291bnQgPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zm9y
d2FyZExpc3RDb3VudCgpOworICAgICAgICAgICAgaWYgKGZvcndhcmRMaXN0Q291bnQgPiAwKSAK
KyAgICAgICAgICAgICAgICBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGZv
cndhcmRMaXN0Q291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGJhY2tM
aXN0Q291bnQgPSBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0xpc3RDb3VudCgpOworICAgICAgICAg
ICAgaWYgKGJhY2tMaXN0Q291bnQgPiAwKQorICAgICAgICAgICAgICAgIGl0ZW0gPSBtX2JhY2tG
b3J3YXJkTGlzdC0+aXRlbUF0SW5kZXgoLWJhY2tMaXN0Q291bnQpOworICAgICAgICB9CisgICAg
fQorCisgICAgQVNTRVJUKGl0ZW0pOyAvLyB3ZSBzaG91bGQgbm90IHJlYWNoIHRoaXMgbGluZSB3
aXRoIGFuIGVtcHR5IGJhY2svZm9yd2FyZCBsaXN0CisgICAgaWYgKGl0ZW0pCisgICAgICAgIGdv
VG9JdGVtKGl0ZW0sIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpOworfQorCiB2b2lk
IFBhZ2U6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiB7
CiAgICAgLy8gQWJvcnQgYW55IGN1cnJlbnQgbG9hZCBpZiB3ZSdyZSBnb2luZyB0byBhIGhpc3Rv
cnkgaXRlbQpAQCAtMjQ3LDYgKzI4MSwxMSBAQCB2b2lkIFBhZ2U6OmdvVG9JdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigp
LT5nb1RvSXRlbShpdGVtLCB0eXBlKTsKIH0KIAoraW50IFBhZ2U6OmdldEhpc3RvcnlMZW5ndGgo
KQoreworICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0xpc3RDb3VudCgpICsgMTsK
K30KKwogdm9pZCBQYWdlOjpzZXRHbG9iYWxIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkK
IHsKICAgICBtX2dsb2JhbEhpc3RvcnlJdGVtID0gaXRlbTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDYwMmQ5OWIuLjUyYWQwNWIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMTExLDcgKzExMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIG1h
a2VzIG1vcmUgc2Vuc2Ugd2hlbiB0aGF0IGNsYXNzIGV4aXN0cy4KICAgICAgICAgYm9vbCBnb0Jh
Y2soKTsKICAgICAgICAgYm9vbCBnb0ZvcndhcmQoKTsKKyAgICAgICAgYm9vbCBjYW5Hb0JhY2tP
ckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKKyAgICAgICAgdm9pZCBnb0JhY2tPckZvcndh
cmQoaW50IGRpc3RhbmNlKTsKICAgICAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZy
YW1lTG9hZFR5cGUpOworICAgICAgICBpbnQgZ2V0SGlzdG9yeUxlbmd0aCgpOwogCiAgICAgICAg
IEhpc3RvcnlJdGVtKiBnbG9iYWxIaXN0b3J5SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFs
SGlzdG9yeUl0ZW0uZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRHbG9iYWxIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAppbmRleCAyMWZhN2RmLi5lZTZh
YTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcApAQCAtMzYxLDEwICszNjEsMTAgQEAgdm9p
ZCBDb250ZXh0TWVudTo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3Rv
cEl0ZW0pOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oUmVsb2FkSXRlbSk7CiAjZWxzZQot
ICAgICAgICAgICAgICAgIGlmIChsb2FkZXItPmNhbkdvQmFja09yRm9yd2FyZCgtMSkpCisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Y2FuR29CYWNr
T3JGb3J3YXJkKC0xKSkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShCYWNrSXRlbSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyLT5jYW5Hb0JhY2tPckZvcndhcmQoMSkpCisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Y2FuR29C
YWNrT3JGb3J3YXJkKDEpKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKEZvcndhcmRJ
dGVtKTsKIAogICAgICAgICAgICAgICAgIC8vIHVzZSBpc0xvYWRpbmdJbkFQSVNlbnNlIHJhdGhl
ciB0aGFuIGlzTG9hZGluZyBiZWNhdXNlIFN0b3AvUmVsb2FkIGFyZQpAQCAtNzIxLDEwICs3MjEs
MTAgQEAgdm9pZCBDb250ZXh0TWVudTo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51
SXRlbSYgaXRlbSkgY29uc3QKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZCgtMSk7CisgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmNhbkdvQmFja09yRm9y
d2FyZCgtMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdHb0ZvcndhcmQ6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+bG9hZGVy
KCktPmNhbkdvQmFja09yRm9yd2FyZCgxKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Y2FuR29CYWNrT3JGb3J3YXJkKDEpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcDoKICAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzMjQ2ZGY4Li5iODYwNDNhIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDA5LTEwLTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9y
IFBhZ2VDb250cm9sbGVyIG91dCBvZiBGcmFtZUxvYWRlciBhbmQgUGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwMzcKKworICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29f
YmFja19vcl9mb3J3YXJkKToKKwogMjAwOS0xMC0wMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAzODI2MjVhLi40MTI3MmUzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjg3OSw4ICsyODc5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X2Nhbl9nb19iYWNrX29yX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Z2ludCBzdGUKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIEZBTFNFKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1h
aW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2Fy
ZChzdGVwcyk7CisgICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmdvQmFja09yRm9yd2FyZChzdGVw
cyk7CiB9CiAKIC8qKg==
</data>

          </attachment>
      

    </bug>

</bugzilla>