<?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>101642</bug_id>
          
          <creation_ts>2012-11-08 13:58:55 -0800</creation_ts>
          <short_desc>MarkStackArray should use the BlockAllocator instead of the MarkStackSegmentAllocator</short_desc>
          <delta_ts>2012-11-09 09:58:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762152</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-08 13:58:55 -0800</bug_when>
    <thetext>MarkStackSegmentAllocator is like a miniature version of the BlockAllocator. Now that the BlockAllocator has support for a variety of block sizes, we should get rid of the MarkStackSegmentAllocator in favor of the BlockAllocator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762173</commentid>
    <comment_count>1</comment_count>
      <attachid>173116</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-08 14:25:48 -0800</bug_when>
    <thetext>Created attachment 173116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762200</commentid>
    <comment_count>2</comment_count>
      <attachid>173116</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-08 14:42:24 -0800</bug_when>
    <thetext>Comment on attachment 173116
Patch

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

&gt; Source/JavaScriptCore/heap/BlockAllocator.h:326
&gt; +    return m_weakRegionSet;

Then can you rename m_weakRegionSet to something that reflects its dual purpose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762204</commentid>
    <comment_count>3</comment_count>
      <attachid>173124</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-08 14:48:12 -0800</bug_when>
    <thetext>Created attachment 173124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762317</commentid>
    <comment_count>4</comment_count>
      <attachid>173124</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-08 16:43:15 -0800</bug_when>
    <thetext>Comment on attachment 173124
Patch

Attachment 173124 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14763806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763073</commentid>
    <comment_count>5</comment_count>
      <attachid>173124</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 09:15:26 -0800</bug_when>
    <thetext>Comment on attachment 173124
Patch

Rejecting attachment 173124 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ing file Source/JavaScriptCore/heap/MarkStackInlineMethods.h
Hunk #1 FAILED at 31.
Hunk #2 FAILED at 69.
Hunk #3 FAILED at 79.
Hunk #4 FAILED at 89.
Hunk #5 FAILED at 105.
5 out of 5 hunks FAILED -- saving rejects to file Source/JavaScriptCore/heap/MarkStackInlineMethods.h.rej
patching file Source/JavaScriptCore/heap/SlotVisitor.cpp

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

Full output: http://queues.webkit.org/results/14778471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763113</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-09 09:58:50 -0800</bug_when>
    <thetext>Committed r134080: &lt;http://trac.webkit.org/changeset/134080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173116</attachid>
            <date>2012-11-08 14:25:48 -0800</date>
            <delta_ts>2012-11-08 14:48:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101642-20121108142357.patch</filename>
            <type>text/plain</type>
            <size>17766</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzOTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTExLTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgTWFya1N0YWNrQXJyYXkgc2hvdWxkIHVzZSB0aGUgQmxvY2tBbGxvY2F0b3IgaW5z
dGVhZCBvZiB0aGUgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciBp
cyBsaWtlIGEgbWluaWF0dXJlIHZlcnNpb24gb2YgdGhlIEJsb2NrQWxsb2NhdG9yLiBOb3cgdGhh
dCB0aGUgQmxvY2tBbGxvY2F0b3IgaGFzIHN1cHBvcnQgCisgICAgICAgIGZvciBhIHZhcmlldHkg
b2YgYmxvY2sgc2l6ZXMsIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoZSBNYXJrU3RhY2tTZWdtZW50
QWxsb2NhdG9yIGluIGZhdm9yIG9mIHRoZSBCbG9ja0FsbG9jYXRvci4KKworICAgICAgICAqIGhl
YXAvQmxvY2tBbGxvY2F0b3IuaDogQWRkIG5ldyBzcGVjaWFsaXphdGlvbnMgb2YgcmVnaW9uU2V0
Rm9yIGZvciB0aGUgbmV3IE1hcmtTdGFja1NlZ21lbnRzLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudCk6CisgICAgICAgICogaGVhcC9HQ1RocmVhZFNoYXJl
ZERhdGEuY3BwOgorICAgICAgICAoSlNDOjpHQ1RocmVhZFNoYXJlZERhdGE6OkdDVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQpOgorICAg
ICAgICAqIGhlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmg6CisgICAgICAgIChHQ1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDogCisgICAgICAgIChKU0M6Ok1h
cmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJheSk6IFdlIG5vdyBoYXZlIGEgZG91Ymx5IGxpbmtl
ZCBsaXN0IG9mIE1hcmtTdGFja1NlZ21lbnRzLCBzbyB3ZSBuZWVkIHRvIHJlZmFjdG9yIAorICAg
ICAgICBhbGwgdGhlIHBsYWNlcyB0aGF0IHVzZWQgdGhlIG9sZCBjdXN0b20gdGFpbC9wcmV2aW91
cyBsb2dpYy4KKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6On5NYXJrU3RhY2tBcnJheSk6
CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpleHBhbmQpOgorICAgICAgICAoSlNDOjpN
YXJrU3RhY2tBcnJheTo6cmVmaWxsKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRv
bmF0ZVNvbWVDZWxsc1RvKTogUmVmYWN0b3IgdG8gdXNlIHRoZSBuZXcgbGlua2VkIGxpc3QuCisg
ICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20pOiBEaXR0by4K
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1h
cmtTdGFja1NlZ21lbnQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50OjpNYXJrU3Rh
Y2tTZWdtZW50KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudDo6c2l6ZUZyb21DYXBh
Y2l0eSk6CisgICAgICAgIChNYXJrU3RhY2tBcnJheSk6CisgICAgICAgICogaGVhcC9NYXJrU3Rh
Y2tJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6cG9zdElu
Y1RvcCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpwcmVEZWNUb3ApOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRnVsbFNlZ21lbnQpOgorICAgICAgICAo
SlNDOjpNYXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRW1wdHlTZWdtZW50KToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrQXJyYXk6OnRvcCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5Ojp2
YWxpZGF0ZVByZXZpb3VzKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmFwcGVuZCk6
CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpyZW1vdmVMYXN0KToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrQXJyYXk6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJh
eTo6c2l6ZSk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6
OlNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcik6CisKIDIwMTItMTEtMDggIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
KCkgc2hvdWxkIHVzZSBTdHJpbmdJbXBsOjppc29sYXRlZENvcHkoKSB0byBtYWtlIHN0cmluZyBj
b3BpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTMzOTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tB
bGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQmxvY2tBbGxvY2F0b3I7CiBjbGFzcyBDb3BpZWRCbG9jazsKK2NsYXNzIE1h
cmtTdGFja1NlZ21lbnQ7CiBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNz
IFdlYWtCbG9jazsKQEAgLTMxOCw2ICszMTksMTMgQEAgaW5saW5lIEJsb2NrQWxsb2NhdG9yOjpS
ZWdpb25TZXQmIEJsb2NrQQogICAgIHJldHVybiBtX3dlYWtSZWdpb25TZXQ7CiB9CiAKKy8vIFdl
IHVzZSB0aGUgV2Vha0Jsb2NrIFJlZ2lvblNldCBzaW5jZSB0aGV5J3JlIHRoZSBzYW1lIHNpemUu
Cit0ZW1wbGF0ZSA8PgoraW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxs
b2NhdG9yOjpyZWdpb25TZXRGb3I8TWFya1N0YWNrU2VnbWVudD4oKQoreworICAgIHJldHVybiBt
X3dlYWtSZWdpb25TZXQ7Cit9CisKIHRlbXBsYXRlIDw+CiBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6
OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNldEZvcjxIZWFwQmxvY2s8Q29waWVk
QmxvY2s+ID4oKQogewpAQCAtMzM2LDYgKzM0NCwxMyBAQCBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6
OlJlZ2lvblNldCYgQmxvY2tBCiAgICAgcmV0dXJuIG1fd2Vha1JlZ2lvblNldDsKIH0KIAorLy8g
V2UgdXNlIHRoZSBXZWFrQmxvY2sgUmVnaW9uU2V0IHNpbmNlIHRoZXkncmUgdGhlIHNhbWUgc2l6
ZS4KK3RlbXBsYXRlIDw+CitpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tB
bGxvY2F0b3I6OnJlZ2lvblNldEZvcjxIZWFwQmxvY2s8TWFya1N0YWNrU2VnbWVudD4gPigpCit7
CisgICAgcmV0dXJuIG1fd2Vha1JlZ2lvblNldDsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lv
blNldEZvcigpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNo
YXJlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
VGhyZWFkU2hhcmVkRGF0YS5jcHAJKHJldmlzaW9uIDEzMzkxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgR0NUaHJlYWRTaGFyZWREYXRhOjpHQ1RocmVhZFNoYXJlZERhdGEoSgogICAg
IDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX2NvcGllZFNwYWNlKCZnbG9iYWxE
YXRhLT5oZWFwLm1fc3RvcmFnZVNwYWNlKQogICAgICwgbV9zaG91bGRIYXNoQ29uc3QoZmFsc2Up
Ci0gICAgLCBtX3NoYXJlZE1hcmtTdGFjayhtX3NlZ21lbnRBbGxvY2F0b3IpCisgICAgLCBtX3No
YXJlZE1hcmtTdGFjayhnbG9iYWxEYXRhLT5oZWFwLmJsb2NrQWxsb2NhdG9yKCkpCiAgICAgLCBt
X251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJrZXJzKDApCiAgICAgLCBtX3BhcmFsbGVsTWFya2Vy
c1Nob3VsZEV4aXQoZmFsc2UpCiAgICAgLCBtX2Jsb2Nrc1RvQ29weShnbG9iYWxEYXRhLT5oZWFw
Lm1fYmxvY2tTbmFwc2hvdCkKQEAgLTExMCw3ICsxMTAsNiBAQCB2b2lkIEdDVGhyZWFkU2hhcmVk
RGF0YTo6cmVzZXQoKQogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFjay5pc0VtcHR5KCkpOwog
ICAgIAogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICBtX3NlZ21lbnRBbGxvY2F0b3Iuc2hy
aW5rUmVzZXJ2ZSgpOwogICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICNlbHNlCiAgICAgQVNT
RVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oCShyZXZpc2lvbiAxMzM5MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtODAsOCArODAsNiBAQCBwcml2YXRlOgogICAgIEpTR2xvYmFsRGF0YSogbV9nbG9i
YWxEYXRhOwogICAgIENvcGllZFNwYWNlKiBtX2NvcGllZFNwYWNlOwogICAgIAotICAgIE1hcmtT
dGFja1NlZ21lbnRBbGxvY2F0b3IgbV9zZWdtZW50QWxsb2NhdG9yOwotICAgIAogICAgIGJvb2wg
bV9zaG91bGRIYXNoQ29uc3Q7CiAKICAgICBWZWN0b3I8R0NUaHJlYWQqPiBtX2djVGhyZWFkczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24g
MTMzOTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsODQgKzQ1LDM1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1NYXJr
U3RhY2tTZWdtZW50QWxsb2NhdG9yOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yKCkKLSAgICA6
IG1fbmV4dEZyZWVTZWdtZW50KDApCi17Ci0gICAgbV9sb2NrLkluaXQoKTsKLX0KLQotTWFya1N0
YWNrU2VnbWVudEFsbG9jYXRvcjo6fk1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3IoKQotewotICAg
IHNocmlua1Jlc2VydmUoKTsKLX0KLQotTWFya1N0YWNrU2VnbWVudCogTWFya1N0YWNrU2VnbWVu
dEFsbG9jYXRvcjo6YWxsb2NhdGUoKQotewotICAgIHsKLSAgICAgICAgU3BpbkxvY2tIb2xkZXIg
bG9ja2VyKCZtX2xvY2spOwotICAgICAgICBpZiAobV9uZXh0RnJlZVNlZ21lbnQpIHsKLSAgICAg
ICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIHJlc3VsdCA9IG1fbmV4dEZyZWVTZWdtZW50OwotICAg
ICAgICAgICAgbV9uZXh0RnJlZVNlZ21lbnQgPSByZXN1bHQtPm1fcHJldmlvdXM7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hcmtTdGFja1NlZ21lbnQqPihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChP
cHRpb25zOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKCkpKTsKLX0KLQotdm9pZCBNYXJrU3RhY2tT
ZWdtZW50QWxsb2NhdG9yOjpyZWxlYXNlKE1hcmtTdGFja1NlZ21lbnQqIHNlZ21lbnQpCi17Ci0g
ICAgU3BpbkxvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAgIHNlZ21lbnQtPm1fcHJldmlv
dXMgPSBtX25leHRGcmVlU2VnbWVudDsKLSAgICBtX25leHRGcmVlU2VnbWVudCA9IHNlZ21lbnQ7
Ci19Ci0KLXZvaWQgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6c2hyaW5rUmVzZXJ2ZSgpCi17
Ci0gICAgTWFya1N0YWNrU2VnbWVudCogc2VnbWVudHM7Ci0gICAgewotICAgICAgICBTcGluTG9j
a0hvbGRlciBsb2NrZXIoJm1fbG9jayk7Ci0gICAgICAgIHNlZ21lbnRzID0gbV9uZXh0RnJlZVNl
Z21lbnQ7Ci0gICAgICAgIG1fbmV4dEZyZWVTZWdtZW50ID0gMDsKLSAgICB9Ci0gICAgd2hpbGUg
KHNlZ21lbnRzKSB7Ci0gICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIHRvRnJlZSA9IHNlZ21lbnRz
OwotICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLT5tX3ByZXZpb3VzOwotICAgICAgICBPU0Fs
bG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRvRnJlZSwgT3B0aW9uczo6Z2NNYXJrU3RhY2tT
ZWdtZW50U2l6ZSgpKTsKLSAgICB9Ci19Ci0KLU1hcmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJh
eShNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yJiBhbGxvY2F0b3IpCi0gICAgOiBtX2FsbG9jYXRv
cihhbGxvY2F0b3IpCitNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoQmxvY2tBbGxvY2F0
b3ImIGJsb2NrQWxsb2NhdG9yKQorICAgIDogbV9ibG9ja0FsbG9jYXRvcihibG9ja0FsbG9jYXRv
cikKICAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1hcmtTdGFja1NlZ21lbnQ6OmNhcGFjaXR5RnJv
bVNpemUoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSgpKSkKICAgICAsIG1fdG9wKDAp
Ci0gICAgLCBtX251bWJlck9mUHJldmlvdXNTZWdtZW50cygwKQorICAgICwgbV9udW1iZXJPZlNl
Z21lbnRzKDApCiB7Ci0gICAgbV90b3BTZWdtZW50ID0gbV9hbGxvY2F0b3IuYWxsb2NhdGUoKTsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV90b3BTZWdtZW50LT5tX3RvcCA9IDA7Ci0jZW5k
aWYKLSAgICBtX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMgPSAwOworICAgIEFTU0VSVChNYXJrU3Rh
Y2tTZWdtZW50OjpibG9ja1NpemUgPT0gV2Vha0Jsb2NrOjpibG9ja1NpemUpOworICAgIG1fc2Vn
bWVudHMucHVzaChNYXJrU3RhY2tTZWdtZW50OjpjcmVhdGUobV9ibG9ja0FsbG9jYXRvci5hbGxv
Y2F0ZTxNYXJrU3RhY2tTZWdtZW50PigpKSk7CisgICAgbV9udW1iZXJPZlNlZ21lbnRzKys7CiB9
CiAKIE1hcmtTdGFja0FycmF5Ojp+TWFya1N0YWNrQXJyYXkoKQogewotICAgIEFTU0VSVCghbV90
b3BTZWdtZW50LT5tX3ByZXZpb3VzKTsKLSAgICBtX2FsbG9jYXRvci5yZWxlYXNlKG1fdG9wU2Vn
bWVudCk7CisgICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA9PSAxICYmIG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOworICAgIG1fYmxvY2tBbGxvY2F0b3IuZGVhbGxvY2F0ZShNYXJrU3RhY2tT
ZWdtZW50OjpkZXN0cm95KG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpKSk7CiB9CiAKIHZvaWQgTWFy
a1N0YWNrQXJyYXk6OmV4cGFuZCgpCiB7Ci0gICAgQVNTRVJUKG1fdG9wU2VnbWVudC0+bV90b3Ag
PT0gbV9zZWdtZW50Q2FwYWNpdHkpOworICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bV90
b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpOwogICAgIAotICAgIG1fbnVtYmVyT2ZQcmV2aW91c1Nl
Z21lbnRzKys7CisgICAgTWFya1N0YWNrU2VnbWVudCogbmV4dFNlZ21lbnQgPSBNYXJrU3RhY2tT
ZWdtZW50OjpjcmVhdGUobV9ibG9ja0FsbG9jYXRvci5hbGxvY2F0ZTxNYXJrU3RhY2tTZWdtZW50
PigpKTsKKyAgICBtX251bWJlck9mU2VnbWVudHMrKzsKICAgICAKLSAgICBNYXJrU3RhY2tTZWdt
ZW50KiBuZXh0U2VnbWVudCA9IG1fYWxsb2NhdG9yLmFsbG9jYXRlKCk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIG5leHRTZWdtZW50LT5tX3RvcCA9IDA7CiAjZW5kaWYKLSAgICBuZXh0U2Vn
bWVudC0+bV9wcmV2aW91cyA9IG1fdG9wU2VnbWVudDsKLSAgICBtX3RvcFNlZ21lbnQgPSBuZXh0
U2VnbWVudDsKKworICAgIG1fc2VnbWVudHMucHVzaChuZXh0U2VnbWVudCk7CiAgICAgc2V0VG9w
Rm9yRW1wdHlTZWdtZW50KCk7CiAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogfQpAQCAtMTMyLDE0
ICs4Myw5IEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6OnJlZmlsbCgpCiAgICAgdmFsaWRhdGVQcmV2
aW91cygpOwogICAgIGlmICh0b3AoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgTWFya1N0
YWNrU2VnbWVudCogdG9GcmVlID0gbV90b3BTZWdtZW50OwotICAgIE1hcmtTdGFja1NlZ21lbnQq
IHByZXZpb3VzID0gbV90b3BTZWdtZW50LT5tX3ByZXZpb3VzOwotICAgIGlmICghcHJldmlvdXMp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQobV9udW1iZXJPZlByZXZpb3VzU2Vn
bWVudHMpOwotICAgIG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzLS07Ci0gICAgbV90b3BTZWdt
ZW50ID0gcHJldmlvdXM7Ci0gICAgbV9hbGxvY2F0b3IucmVsZWFzZSh0b0ZyZWUpOworICAgIG1f
YmxvY2tBbGxvY2F0b3IuZGVhbGxvY2F0ZShNYXJrU3RhY2tTZWdtZW50OjpkZXN0cm95KG1fc2Vn
bWVudHMucmVtb3ZlSGVhZCgpKSk7CisgICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA+IDEp
OworICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOwogICAgIHNldFRvcEZvckZ1bGxTZWdtZW50KCk7
CiAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTUzLDcgKzk5
LDcgQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTQogCiAgICAgQVNT
RVJUKG1fc2VnbWVudENhcGFjaXR5ID09IG90aGVyLm1fc2VnbWVudENhcGFjaXR5KTsKIAotICAg
IHNpemVfdCBzZWdtZW50c1RvRG9uYXRlID0gKG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzICsg
MiAtIDEpIC8gMjsgLy8gUm91bmQgdXAgdG8gZG9uYXRlIDEgLyAxIHByZXZpb3VzIHNlZ21lbnRz
LgorICAgIHNpemVfdCBzZWdtZW50c1RvRG9uYXRlID0gbV9udW1iZXJPZlNlZ21lbnRzIC8gMjsg
Ly8gSWYgd2Ugb25seSBoYXZlIG9uZSBzZWdtZW50IChvdXIgaGVhZCkgd2UgZG9uJ3QgZG9uYXRl
IGFueSBzZWdtZW50cy4KIAogICAgIGlmICghc2VnbWVudHNUb0RvbmF0ZSkgewogICAgICAgICBz
aXplX3QgY2VsbHNUb0RvbmF0ZSA9IG1fdG9wIC8gMjsgLy8gUm91bmQgZG93biB0byBkb25hdGUg
MCAvIDEgY2VsbHMuCkBAIC0xNjcsMjEgKzExMywyMyBAQCB2b2lkIE1hcmtTdGFja0FycmF5Ojpk
b25hdGVTb21lQ2VsbHNUbyhNCiAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogICAgIG90aGVyLnZh
bGlkYXRlUHJldmlvdXMoKTsKIAotICAgIE1hcmtTdGFja1NlZ21lbnQqIHByZXZpb3VzID0gbV90
b3BTZWdtZW50LT5tX3ByZXZpb3VzOwotICAgIHdoaWxlIChzZWdtZW50c1RvRG9uYXRlLS0pIHsK
LSAgICAgICAgQVNTRVJUKHByZXZpb3VzKTsKLSAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZQcmV2
aW91c1NlZ21lbnRzKTsKKyAgICAvLyBSZW1vdmUgb3VyIGhlYWQgYW5kIHRoZSBoZWFkIG9mIHRo
ZSBvdGhlciBsaXN0IGJlZm9yZSB3ZSBzdGFydCBtb3Zpbmcgc2VnbWVudHMgYXJvdW5kLgorICAg
IC8vIFdlJ2xsIGFkZCB0aGVtIGJhY2sgb24gb25jZSB3ZSdyZSBkb25lIGRvbmF0aW5nLgorICAg
IE1hcmtTdGFja1NlZ21lbnQqIG15SGVhZCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAg
IE1hcmtTdGFja1NlZ21lbnQqIG90aGVySGVhZCA9IG90aGVyLm1fc2VnbWVudHMucmVtb3ZlSGVh
ZCgpOwogCi0gICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBwcmV2aW91czsKLSAg
ICAgICAgcHJldmlvdXMgPSBjdXJyZW50LT5tX3ByZXZpb3VzOwotICAgICAgICAgICAgCi0gICAg
ICAgIGN1cnJlbnQtPm1fcHJldmlvdXMgPSBvdGhlci5tX3RvcFNlZ21lbnQtPm1fcHJldmlvdXM7
Ci0gICAgICAgIG90aGVyLm1fdG9wU2VnbWVudC0+bV9wcmV2aW91cyA9IGN1cnJlbnQ7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMtLTsKLSAgICAgICAg
b3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMrKzsKKyAgICB3aGlsZSAoc2VnbWVudHNU
b0RvbmF0ZS0tKSB7CisgICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBtX3NlZ21l
bnRzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgQVNTRVJUKGN1cnJlbnQpOworICAgICAgICBBU1NF
UlQobV9udW1iZXJPZlNlZ21lbnRzID4gMSk7CisgICAgICAgIG90aGVyLm1fc2VnbWVudHMucHVz
aChjdXJyZW50KTsKKyAgICAgICAgbV9udW1iZXJPZlNlZ21lbnRzLS07CisgICAgICAgIG90aGVy
Lm1fbnVtYmVyT2ZTZWdtZW50cysrOwogICAgIH0KLSAgICBtX3RvcFNlZ21lbnQtPm1fcHJldmlv
dXMgPSBwcmV2aW91czsKKworICAgIC8vIFB1dCB0aGUgb3JpZ2luYWwgaGVhZHMgYmFjayBpbiB0
aGVpciBwbGFjZXMuCisgICAgbV9zZWdtZW50cy5wdXNoKG15SGVhZCk7CisgICAgb3RoZXIubV9z
ZWdtZW50cy5wdXNoKG90aGVySGVhZCk7CiAKICAgICB2YWxpZGF0ZVByZXZpb3VzKCk7CiAgICAg
b3RoZXIudmFsaWRhdGVQcmV2aW91cygpOwpAQCAtMTk4LDIxICsxNDYsMjEgQEAgdm9pZCBNYXJr
U3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKAogICAgIG90aGVyLnZhbGlkYXRlUHJldmlv
dXMoKTsKICAgICAgICAgCiAgICAgLy8gSWYgb3RoZXIgaGFzIGFuIGVudGlyZSBzZWdtZW50LCBz
dGVhbCBpdCBhbmQgcmV0dXJuLgotICAgIGlmIChvdGhlci5tX3RvcFNlZ21lbnQtPm1fcHJldmlv
dXMpIHsKLSAgICAgICAgQVNTRVJUKG90aGVyLm1fdG9wU2VnbWVudC0+bV9wcmV2aW91cy0+bV90
b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIEZpcnN0
IHJlbW92ZSBhIHNlZ21lbnQgZnJvbSBvdGhlci4KLSAgICAgICAgTWFya1N0YWNrU2VnbWVudCog
Y3VycmVudCA9IG90aGVyLm1fdG9wU2VnbWVudC0+bV9wcmV2aW91czsKLSAgICAgICAgb3RoZXIu
bV90b3BTZWdtZW50LT5tX3ByZXZpb3VzID0gY3VycmVudC0+bV9wcmV2aW91czsKLSAgICAgICAg
b3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMtLTsKLSAgICAgICAgICAgIAotICAgICAg
ICBBU1NFUlQoISFvdGhlci5tX251bWJlck9mUHJldmlvdXNTZWdtZW50cyA9PSAhIW90aGVyLm1f
dG9wU2VnbWVudC0+bV9wcmV2aW91cyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gTm93IGFk
ZCBpdCB0byB0aGlzLgotICAgICAgICBjdXJyZW50LT5tX3ByZXZpb3VzID0gbV90b3BTZWdtZW50
LT5tX3ByZXZpb3VzOwotICAgICAgICBtX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMgPSBjdXJyZW50
OwotICAgICAgICBtX251bWJlck9mUHJldmlvdXNTZWdtZW50cysrOwotICAgICAgICAgICAgCisg
ICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZTZWdtZW50cyA+IDEpIHsKKyAgICAgICAgLy8gTW92ZSB0
aGUgaGVhZHMgb2YgdGhlIGxpc3RzIGFzaWRlLiBXZSdsbCBwdXNoIHRoZW0gYmFjayBvbiBhZnRl
ci4KKyAgICAgICAgTWFya1N0YWNrU2VnbWVudCogb3RoZXJIZWFkID0gb3RoZXIubV9zZWdtZW50
cy5yZW1vdmVIZWFkKCk7CisgICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIG15SGVhZCA9IG1fc2Vn
bWVudHMucmVtb3ZlSGVhZCgpOworCisgICAgICAgIEFTU0VSVChvdGhlci5tX3NlZ21lbnRzLmhl
YWQoKS0+bV90b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpOworCisgICAgICAgIG1fc2VnbWVudHMu
cHVzaChvdGhlci5tX3NlZ21lbnRzLnJlbW92ZUhlYWQoKSk7CisKKyAgICAgICAgbV9udW1iZXJP
ZlNlZ21lbnRzKys7CisgICAgICAgIG90aGVyLm1fbnVtYmVyT2ZTZWdtZW50cy0tOworICAgICAg
ICAKKyAgICAgICAgbV9zZWdtZW50cy5wdXNoKG15SGVhZCk7CisgICAgICAgIG90aGVyLm1fc2Vn
bWVudHMucHVzaChvdGhlckhlYWQpOworICAgIAogICAgICAgICB2YWxpZGF0ZVByZXZpb3VzKCk7
CiAgICAgICAgIG90aGVyLnZhbGlkYXRlUHJldmlvdXMoKTsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDEzMzkxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCwxOSArNTAsMjcgQEAKICNkZWZpbmUgTUFSS19MT0dfQ0hJTEQodmlzaXRvciwgY2hp
bGQpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAorI2luY2x1ZGUgIkhlYXBCbG9jay5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVENTcGluTG9j
ay5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmxvY2tBbGxvY2F0b3I7CitjbGFzcyBE
ZWFkQmxvY2s7CiBjbGFzcyBKU0NlbGw7CiAKLXN0cnVjdCBNYXJrU3RhY2tTZWdtZW50IHsKLSAg
ICBNYXJrU3RhY2tTZWdtZW50KiBtX3ByZXZpb3VzOworY2xhc3MgTWFya1N0YWNrU2VnbWVudCA6
IHB1YmxpYyBIZWFwQmxvY2s8TWFya1N0YWNrU2VnbWVudD4geworcHVibGljOgorICAgIE1hcmtT
dGFja1NlZ21lbnQoUmVnaW9uKiByZWdpb24pCisgICAgICAgIDogSGVhcEJsb2NrPE1hcmtTdGFj
a1NlZ21lbnQ+KHJlZ2lvbikKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc2l6ZV90IG1fdG9w
OworICAgICAgICAsIG1fdG9wKDApCiAjZW5kaWYKLSAgICAgICAgCisgICAgeworICAgIH0KKwor
ICAgIHN0YXRpYyBNYXJrU3RhY2tTZWdtZW50KiBjcmVhdGUoRGVhZEJsb2NrKik7CisKICAgICBj
b25zdCBKU0NlbGwqKiBkYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y29uc3QgSlNDZWxsKio+KHRoaXMgKyAxKTsKQEAgLTc3LDI2ICs4NSwxNyBAQCBzdHJ1Y3QgTWFy
a1N0YWNrU2VnbWVudCB7CiAgICAgewogICAgICAgICByZXR1cm4gc2l6ZW9mKE1hcmtTdGFja1Nl
Z21lbnQpICsgY2FwYWNpdHkgKiBzaXplb2YoY29uc3QgSlNDZWxsKik7CiAgICAgfQotfTsKIAot
Y2xhc3MgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgTWFya1N0YWNr
U2VnbWVudEFsbG9jYXRvcigpOwotICAgIH5NYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yKCk7Ci0g
ICAgCi0gICAgTWFya1N0YWNrU2VnbWVudCogYWxsb2NhdGUoKTsKLSAgICB2b2lkIHJlbGVhc2Uo
TWFya1N0YWNrU2VnbWVudCopOwotICAgIAotICAgIHZvaWQgc2hyaW5rUmVzZXJ2ZSgpOwotICAg
IAotcHJpdmF0ZToKLSAgICBTcGluTG9jayBtX2xvY2s7Ci0gICAgTWFya1N0YWNrU2VnbWVudCog
bV9uZXh0RnJlZVNlZ21lbnQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSA0
ICogS0I7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc2l6ZV90IG1fdG9wOworI2VuZGlm
CiB9OwogCiBjbGFzcyBNYXJrU3RhY2tBcnJheSB7CiBwdWJsaWM6Ci0gICAgTWFya1N0YWNrQXJy
YXkoTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYpOworICAgIE1hcmtTdGFja0FycmF5KEJsb2Nr
QWxsb2NhdG9yJik7CiAgICAgfk1hcmtTdGFja0FycmF5KCk7CiAKICAgICB2b2lkIGFwcGVuZChj
b25zdCBKU0NlbGwqKTsKQEAgLTEyMiwxMiArMTIxLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dm9pZCB2YWxpZGF0ZVByZXZpb3VzKCk7CiAKLSAgICBNYXJrU3RhY2tTZWdtZW50KiBtX3RvcFNl
Z21lbnQ7Ci0gICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYgbV9hbGxvY2F0b3I7CisgICAg
RG91Ymx5TGlua2VkTGlzdDxNYXJrU3RhY2tTZWdtZW50PiBtX3NlZ21lbnRzOworICAgIEJsb2Nr
QWxsb2NhdG9yJiBtX2Jsb2NrQWxsb2NhdG9yOwogCiAgICAgc2l6ZV90IG1fc2VnbWVudENhcGFj
aXR5OwogICAgIHNpemVfdCBtX3RvcDsKLSAgICBzaXplX3QgbV9udW1iZXJPZlByZXZpb3VzU2Vn
bWVudHM7CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZTZWdtZW50czsKICAgIAogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrSW5saW5lTWV0aG9kcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGluZU1ldGhv
ZHMuaAkocmV2aXNpb24gMTMzOTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzNSArMzEsNDAgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2lubGluZSBNYXJrU3RhY2tTZWdtZW50KiBNYXJrU3RhY2tT
ZWdtZW50OjpjcmVhdGUoRGVhZEJsb2NrKiBibG9jaykKK3sKKyAgICByZXR1cm4gbmV3IChOb3RO
dWxsLCBibG9jaykgTWFya1N0YWNrU2VnbWVudChibG9jay0+cmVnaW9uKCkpOworfQorCiBpbmxp
bmUgc2l6ZV90IE1hcmtTdGFja0FycmF5Ojpwb3N0SW5jVG9wKCkKIHsKICAgICBzaXplX3QgcmVz
dWx0ID0gbV90b3ArKzsKLSAgICBBU1NFUlQocmVzdWx0ID09IG1fdG9wU2VnbWVudC0+bV90b3Ar
Kyk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3ArKyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAgICAgCiBpbmxpbmUgc2l6ZV90IE1hcmtTdGFja0Fy
cmF5OjpwcmVEZWNUb3AoKQogewogICAgIHNpemVfdCByZXN1bHQgPSAtLW1fdG9wOwotICAgIEFT
U0VSVChyZXN1bHQgPT0gLS1tX3RvcFNlZ21lbnQtPm1fdG9wKTsKKyAgICBBU1NFUlQocmVzdWx0
ID09IC0tbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
ICAgICAgICAKIGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5OjpzZXRUb3BGb3JGdWxsU2VnbWVu
dCgpCiB7Ci0gICAgQVNTRVJUKG1fdG9wU2VnbWVudC0+bV90b3AgPT0gbV9zZWdtZW50Q2FwYWNp
dHkpOworICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPT0gbV9zZWdtZW50Q2Fw
YWNpdHkpOwogICAgIG1fdG9wID0gbV9zZWdtZW50Q2FwYWNpdHk7CiB9CiAKIGlubGluZSB2b2lk
IE1hcmtTdGFja0FycmF5OjpzZXRUb3BGb3JFbXB0eVNlZ21lbnQoKQogewotICAgIEFTU0VSVCgh
bV90b3BTZWdtZW50LT5tX3RvcCk7CisgICAgQVNTRVJUKCFtX3NlZ21lbnRzLmhlYWQoKS0+bV90
b3ApOwogICAgIG1fdG9wID0gMDsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrU3RhY2tBcnJheTo6
dG9wKCkKIHsKLSAgICBBU1NFUlQobV90b3AgPT0gbV90b3BTZWdtZW50LT5tX3RvcCk7CisgICAg
QVNTRVJUKG1fdG9wID09IG1fc2VnbWVudHMuaGVhZCgpLT5tX3RvcCk7CiAgICAgcmV0dXJuIG1f
dG9wOwogfQogCkBAIC02OSw5ICs3NCw5IEBAIGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5Ojp2
YWxpZGF0ZVByZXYKIGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5Ojp2YWxpZGF0ZVByZXZpb3Vz
KCkKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgZm9yIChNYXJrU3RhY2tTZWdtZW50
KiBjdXJyZW50ID0gbV90b3BTZWdtZW50LT5tX3ByZXZpb3VzOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bV9wcmV2aW91cykKKyAgICBmb3IgKE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQg
PSBtX3NlZ21lbnRzLmhlYWQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQoKSkK
ICAgICAgICAgY291bnQrKzsKLSAgICBBU1NFUlQoY291bnQgPT0gbV9udW1iZXJPZlByZXZpb3Vz
U2VnbWVudHMpOworICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSBtX251bWJlck9mU2Vn
bWVudHMpOwogfQogI2VuZGlmCiAKQEAgLTc5LDcgKzg0LDcgQEAgaW5saW5lIHZvaWQgTWFya1N0
YWNrQXJyYXk6OmFwcGVuZChjb25zdAogewogICAgIGlmIChtX3RvcCA9PSBtX3NlZ21lbnRDYXBh
Y2l0eSkKICAgICAgICAgZXhwYW5kKCk7Ci0gICAgbV90b3BTZWdtZW50LT5kYXRhKClbcG9zdElu
Y1RvcCgpXSA9IGNlbGw7CisgICAgbV9zZWdtZW50cy5oZWFkKCktPmRhdGEoKVtwb3N0SW5jVG9w
KCldID0gY2VsbDsKIH0KIAogaW5saW5lIGJvb2wgTWFya1N0YWNrQXJyYXk6OmNhblJlbW92ZUxh
c3QoKQpAQCAtODksMTUgKzk0LDE1IEBAIGlubGluZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5S
ZW1vdmVMYXMKIAogaW5saW5lIGNvbnN0IEpTQ2VsbCogTWFya1N0YWNrQXJyYXk6OnJlbW92ZUxh
c3QoKQogewotICAgIHJldHVybiBtX3RvcFNlZ21lbnQtPmRhdGEoKVtwcmVEZWNUb3AoKV07Cisg
ICAgcmV0dXJuIG1fc2VnbWVudHMuaGVhZCgpLT5kYXRhKClbcHJlRGVjVG9wKCldOwogfQogCiBp
bmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTo6aXNFbXB0eSgpCiB7CiAgICAgaWYgKG1fdG9wKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fdG9wU2VnbWVudC0+bV9wcmV2aW91cykg
ewotICAgICAgICBBU1NFUlQobV90b3BTZWdtZW50LT5tX3ByZXZpb3VzLT5tX3RvcCA9PSBtX3Nl
Z21lbnRDYXBhY2l0eSk7CisgICAgaWYgKG1fc2VnbWVudHMuaGVhZCgpLT5uZXh0KCkpIHsKKyAg
ICAgICAgQVNTRVJUKG1fc2VnbWVudHMuaGVhZCgpLT5uZXh0KCktPm1fdG9wID09IG1fc2VnbWVu
dENhcGFjaXR5KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNSw3ICsxMTAsNyBAQCBpbmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTo6aXNFbXB0
eSgpCiAKIGlubGluZSBzaXplX3QgTWFya1N0YWNrQXJyYXk6OnNpemUoKQogewotICAgIHJldHVy
biBtX3RvcCArIG1fc2VnbWVudENhcGFjaXR5ICogbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHM7
CisgICAgcmV0dXJuIG1fdG9wICsgbV9zZWdtZW50Q2FwYWNpdHkgKiAobV9udW1iZXJPZlNlZ21l
bnRzIC0gMSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMTMzOTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NSw3ICsxNSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogU2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9y
KEdDVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQotICAgIDogbV9zdGFjayhzaGFyZWQubV9zZWdt
ZW50QWxsb2NhdG9yKQorICAgIDogbV9zdGFjayhzaGFyZWQubV9nbG9iYWxEYXRhLT5oZWFwLmJs
b2NrQWxsb2NhdG9yKCkpCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKICAgICAsIG1faXNJblBhcmFs
bGVsTW9kZShmYWxzZSkKICAgICAsIG1fc2hhcmVkKHNoYXJlZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173124</attachid>
            <date>2012-11-08 14:48:12 -0800</date>
            <delta_ts>2012-11-09 09:15:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101642-20121108144621.patch</filename>
            <type>text/plain</type>
            <size>18769</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzOTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTExLTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgTWFya1N0YWNrQXJyYXkgc2hvdWxkIHVzZSB0aGUgQmxvY2tBbGxvY2F0b3IgaW5z
dGVhZCBvZiB0aGUgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciBp
cyBsaWtlIGEgbWluaWF0dXJlIHZlcnNpb24gb2YgdGhlIEJsb2NrQWxsb2NhdG9yLiBOb3cgdGhh
dCB0aGUgQmxvY2tBbGxvY2F0b3IgaGFzIHN1cHBvcnQgCisgICAgICAgIGZvciBhIHZhcmlldHkg
b2YgYmxvY2sgc2l6ZXMsIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoZSBNYXJrU3RhY2tTZWdtZW50
QWxsb2NhdG9yIGluIGZhdm9yIG9mIHRoZSBCbG9ja0FsbG9jYXRvci4KKworICAgICAgICAqIGhl
YXAvQmxvY2tBbGxvY2F0b3IuaDogQWRkIG5ldyBzcGVjaWFsaXphdGlvbnMgb2YgcmVnaW9uU2V0
Rm9yIGZvciB0aGUgbmV3IE1hcmtTdGFja1NlZ21lbnRzLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudCk6CisgICAgICAgICogaGVhcC9HQ1RocmVhZFNoYXJl
ZERhdGEuY3BwOgorICAgICAgICAoSlNDOjpHQ1RocmVhZFNoYXJlZERhdGE6OkdDVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQpOgorICAg
ICAgICAqIGhlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmg6CisgICAgICAgIChHQ1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDogCisgICAgICAgIChKU0M6Ok1h
cmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJheSk6IFdlIG5vdyBoYXZlIGEgZG91Ymx5IGxpbmtl
ZCBsaXN0IG9mIE1hcmtTdGFja1NlZ21lbnRzLCBzbyB3ZSBuZWVkIHRvIHJlZmFjdG9yIAorICAg
ICAgICBhbGwgdGhlIHBsYWNlcyB0aGF0IHVzZWQgdGhlIG9sZCBjdXN0b20gdGFpbC9wcmV2aW91
cyBsb2dpYy4KKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6On5NYXJrU3RhY2tBcnJheSk6
CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpleHBhbmQpOgorICAgICAgICAoSlNDOjpN
YXJrU3RhY2tBcnJheTo6cmVmaWxsKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRv
bmF0ZVNvbWVDZWxsc1RvKTogUmVmYWN0b3IgdG8gdXNlIHRoZSBuZXcgbGlua2VkIGxpc3QuCisg
ICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20pOiBEaXR0by4K
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKE1h
cmtTdGFja1NlZ21lbnQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50OjpNYXJrU3Rh
Y2tTZWdtZW50KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudDo6c2l6ZUZyb21DYXBh
Y2l0eSk6CisgICAgICAgIChNYXJrU3RhY2tBcnJheSk6CisgICAgICAgICogaGVhcC9NYXJrU3Rh
Y2tJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6cG9zdElu
Y1RvcCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpwcmVEZWNUb3ApOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRnVsbFNlZ21lbnQpOgorICAgICAgICAo
SlNDOjpNYXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRW1wdHlTZWdtZW50KToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrQXJyYXk6OnRvcCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5Ojp2
YWxpZGF0ZVByZXZpb3VzKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmFwcGVuZCk6
CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpyZW1vdmVMYXN0KToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrQXJyYXk6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJh
eTo6c2l6ZSk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6
OlNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcik6CisKIDIwMTItMTEtMDggIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
KCkgc2hvdWxkIHVzZSBTdHJpbmdJbXBsOjppc29sYXRlZENvcHkoKSB0byBtYWtlIHN0cmluZyBj
b3BpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRv
ci5jcHAJKHJldmlzaW9uIDEzMzkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIEJsb2NrQWxsb2NhdG9yOjpCbG9ja0FsbG9jYXRvcigpCiAgICAgOiBtX2NvcGll
ZFJlZ2lvblNldChDb3BpZWRCbG9jazo6YmxvY2tTaXplKQogICAgICwgbV9tYXJrZWRSZWdpb25T
ZXQoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSkKLSAgICAsIG1fd2Vha1JlZ2lvblNldChXZWFrQmxv
Y2s6OmJsb2NrU2l6ZSkKKyAgICAsIG1fd2Vha0FuZE1hcmtTdGFja1JlZ2lvblNldChXZWFrQmxv
Y2s6OmJsb2NrU2l6ZSkKICAgICAsIG1fbnVtYmVyT2ZFbXB0eVJlZ2lvbnMoMCkKICAgICAsIG1f
aXNDdXJyZW50bHlBbGxvY2F0aW5nKGZhbHNlKQogICAgICwgbV9ibG9ja0ZyZWVpbmdUaHJlYWRT
aG91bGRRdWl0KGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9j
a0FsbG9jYXRvci5oCShyZXZpc2lvbiAxMzM5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9ja0FsbG9jYXRvcjsKIGNsYXNzIENvcGllZEJsb2Nr
OworY2xhc3MgTWFya1N0YWNrU2VnbWVudDsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgUmVn
aW9uOwogY2xhc3MgV2Vha0Jsb2NrOwpAQCAtMTg1LDcgKzE4Niw4IEBAIHByaXZhdGU6CiAKICAg
ICBSZWdpb25TZXQgbV9jb3BpZWRSZWdpb25TZXQ7CiAgICAgUmVnaW9uU2V0IG1fbWFya2VkUmVn
aW9uU2V0OwotICAgIFJlZ2lvblNldCBtX3dlYWtSZWdpb25TZXQ7CisgICAgLy8gV2Vha0Jsb2Nr
cyBhbmQgTWFya1N0YWNrU2VnbWVudHMgdXNlIHRoZSBzYW1lIFJlZ2lvblNldCBzaW5jZSB0aGV5
J3JlIHRoZSBzYW1lIHNpemUuCisgICAgUmVnaW9uU2V0IG1fd2Vha0FuZE1hcmtTdGFja1JlZ2lv
blNldDsKIAogICAgIERvdWJseUxpbmtlZExpc3Q8UmVnaW9uPiBtX2VtcHR5UmVnaW9uczsKICAg
ICBzaXplX3QgbV9udW1iZXJPZkVtcHR5UmVnaW9uczsKQEAgLTMxNSw3ICszMTcsMTMgQEAgaW5s
aW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQQogdGVtcGxhdGUgPD4KIGlubGlu
ZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9y
PFdlYWtCbG9jaz4oKQogewotICAgIHJldHVybiBtX3dlYWtSZWdpb25TZXQ7CisgICAgcmV0dXJu
IG1fd2Vha0FuZE1hcmtTdGFja1JlZ2lvblNldDsKK30KKwordGVtcGxhdGUgPD4KK2lubGluZSBC
bG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPE1h
cmtTdGFja1NlZ21lbnQ+KCkKK3sKKyAgICByZXR1cm4gbV93ZWFrQW5kTWFya1N0YWNrUmVnaW9u
U2V0OwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAtMzMzLDcgKzM0MSwxMyBAQCBpbmxpbmUgQmxvY2tB
bGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBCiB0ZW1wbGF0ZSA8PgogaW5saW5lIEJsb2NrQWxs
b2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8SGVhcEJsb2Nr
PFdlYWtCbG9jaz4gPigpCiB7Ci0gICAgcmV0dXJuIG1fd2Vha1JlZ2lvblNldDsKKyAgICByZXR1
cm4gbV93ZWFrQW5kTWFya1N0YWNrUmVnaW9uU2V0OworfQorCit0ZW1wbGF0ZSA8PgoraW5saW5l
IEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8
SGVhcEJsb2NrPE1hcmtTdGFja1NlZ21lbnQ+ID4oKQoreworICAgIHJldHVybiBtX3dlYWtBbmRN
YXJrU3RhY2tSZWdpb25TZXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCShy
ZXZpc2lvbiAxMzM5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNo
YXJlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEdDVGhyZWFkU2hh
cmVkRGF0YTo6R0NUaHJlYWRTaGFyZWREYXRhKEoKICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxE
YXRhKQogICAgICwgbV9jb3BpZWRTcGFjZSgmZ2xvYmFsRGF0YS0+aGVhcC5tX3N0b3JhZ2VTcGFj
ZSkKICAgICAsIG1fc2hvdWxkSGFzaENvbnN0KGZhbHNlKQotICAgICwgbV9zaGFyZWRNYXJrU3Rh
Y2sobV9zZWdtZW50QWxsb2NhdG9yKQorICAgICwgbV9zaGFyZWRNYXJrU3RhY2soZ2xvYmFsRGF0
YS0+aGVhcC5ibG9ja0FsbG9jYXRvcigpKQogICAgICwgbV9udW1iZXJPZkFjdGl2ZVBhcmFsbGVs
TWFya2VycygwKQogICAgICwgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0KGZhbHNlKQogICAg
ICwgbV9ibG9ja3NUb0NvcHkoZ2xvYmFsRGF0YS0+aGVhcC5tX2Jsb2NrU25hcHNob3QpCkBAIC0x
MTAsNyArMTEwLDYgQEAgdm9pZCBHQ1RocmVhZFNoYXJlZERhdGE6OnJlc2V0KCkKICAgICBBU1NF
UlQobV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKTsKICAgICAKICNpZiBFTkFCTEUoUEFSQUxM
RUxfR0MpCi0gICAgbV9zZWdtZW50QWxsb2NhdG9yLnNocmlua1Jlc2VydmUoKTsKICAgICBtX29w
YXF1ZVJvb3RzLmNsZWFyKCk7CiAjZWxzZQogICAgIEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1w
dHkoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNo
YXJlZERhdGEuaAkocmV2aXNpb24gMTMzOTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvR0NUaHJlYWRTaGFyZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDYgQEAg
cHJpdmF0ZToKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICBDb3BpZWRTcGFj
ZSogbV9jb3BpZWRTcGFjZTsKICAgICAKLSAgICBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yIG1f
c2VnbWVudEFsbG9jYXRvcjsKLSAgICAKICAgICBib29sIG1fc2hvdWxkSGFzaENvbnN0OwogCiAg
ICAgVmVjdG9yPEdDVGhyZWFkKj4gbV9nY1RocmVhZHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEzMzkxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDg0ICs0
NSwzNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6
TWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcigpCi0gICAgOiBtX25leHRGcmVlU2VnbWVudCgwKQot
ewotICAgIG1fbG9jay5Jbml0KCk7Ci19Ci0KLU1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6On5N
YXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yKCkKLXsKLSAgICBzaHJpbmtSZXNlcnZlKCk7Ci19Ci0K
LU1hcmtTdGFja1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OmFsbG9jYXRlKCkK
LXsKLSAgICB7Ci0gICAgICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKLSAgICAg
ICAgaWYgKG1fbmV4dEZyZWVTZWdtZW50KSB7Ci0gICAgICAgICAgICBNYXJrU3RhY2tTZWdtZW50
KiByZXN1bHQgPSBtX25leHRGcmVlU2VnbWVudDsKLSAgICAgICAgICAgIG1fbmV4dEZyZWVTZWdt
ZW50ID0gcmVzdWx0LT5tX3ByZXZpb3VzOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tTZWdtZW50
Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdt
ZW50U2l6ZSgpKSk7Ci19Ci0KLXZvaWQgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6cmVsZWFz
ZShNYXJrU3RhY2tTZWdtZW50KiBzZWdtZW50KQotewotICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tl
cigmbV9sb2NrKTsKLSAgICBzZWdtZW50LT5tX3ByZXZpb3VzID0gbV9uZXh0RnJlZVNlZ21lbnQ7
Ci0gICAgbV9uZXh0RnJlZVNlZ21lbnQgPSBzZWdtZW50OwotfQotCi12b2lkIE1hcmtTdGFja1Nl
Z21lbnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUoKQotewotICAgIE1hcmtTdGFja1NlZ21lbnQq
IHNlZ21lbnRzOwotICAgIHsKLSAgICAgICAgU3BpbkxvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2sp
OwotICAgICAgICBzZWdtZW50cyA9IG1fbmV4dEZyZWVTZWdtZW50OwotICAgICAgICBtX25leHRG
cmVlU2VnbWVudCA9IDA7Ci0gICAgfQotICAgIHdoaWxlIChzZWdtZW50cykgewotICAgICAgICBN
YXJrU3RhY2tTZWdtZW50KiB0b0ZyZWUgPSBzZWdtZW50czsKLSAgICAgICAgc2VnbWVudHMgPSBz
ZWdtZW50cy0+bV9wcmV2aW91czsKLSAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVs
ZWFzZSh0b0ZyZWUsIE9wdGlvbnM6OmdjTWFya1N0YWNrU2VnbWVudFNpemUoKSk7Ci0gICAgfQot
fQotCi1NYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVudEFsbG9j
YXRvciYgYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorTWFya1N0YWNr
QXJyYXk6Ok1hcmtTdGFja0FycmF5KEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcikKKyAg
ICA6IG1fYmxvY2tBbGxvY2F0b3IoYmxvY2tBbGxvY2F0b3IpCiAgICAgLCBtX3NlZ21lbnRDYXBh
Y2l0eShNYXJrU3RhY2tTZWdtZW50OjpjYXBhY2l0eUZyb21TaXplKE9wdGlvbnM6OmdjTWFya1N0
YWNrU2VnbWVudFNpemUoKSkpCiAgICAgLCBtX3RvcCgwKQotICAgICwgbV9udW1iZXJPZlByZXZp
b3VzU2VnbWVudHMoMCkKKyAgICAsIG1fbnVtYmVyT2ZTZWdtZW50cygwKQogewotICAgIG1fdG9w
U2VnbWVudCA9IG1fYWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIG1fdG9wU2VnbWVudC0+bV90b3AgPSAwOwotI2VuZGlmCi0gICAgbV90b3BTZWdtZW50LT5t
X3ByZXZpb3VzID0gMDsKKyAgICBBU1NFUlQoTWFya1N0YWNrU2VnbWVudDo6YmxvY2tTaXplID09
IFdlYWtCbG9jazo6YmxvY2tTaXplKTsKKyAgICBtX3NlZ21lbnRzLnB1c2goTWFya1N0YWNrU2Vn
bWVudDo6Y3JlYXRlKG1fYmxvY2tBbGxvY2F0b3IuYWxsb2NhdGU8TWFya1N0YWNrU2VnbWVudD4o
KSkpOworICAgIG1fbnVtYmVyT2ZTZWdtZW50cysrOwogfQogCiBNYXJrU3RhY2tBcnJheTo6fk1h
cmtTdGFja0FycmF5KCkKIHsKLSAgICBBU1NFUlQoIW1fdG9wU2VnbWVudC0+bV9wcmV2aW91cyk7
Ci0gICAgbV9hbGxvY2F0b3IucmVsZWFzZShtX3RvcFNlZ21lbnQpOworICAgIEFTU0VSVChtX251
bWJlck9mU2VnbWVudHMgPT0gMSAmJiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKKyAgICBtX2Js
b2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoTWFya1N0YWNrU2VnbWVudDo6ZGVzdHJveShtX3NlZ21l
bnRzLnJlbW92ZUhlYWQoKSkpOwogfQogCiB2b2lkIE1hcmtTdGFja0FycmF5OjpleHBhbmQoKQog
ewotICAgIEFTU0VSVChtX3RvcFNlZ21lbnQtPm1fdG9wID09IG1fc2VnbWVudENhcGFjaXR5KTsK
KyAgICBBU1NFUlQobV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID09IG1fc2VnbWVudENhcGFjaXR5
KTsKICAgICAKLSAgICBtX251bWJlck9mUHJldmlvdXNTZWdtZW50cysrOworICAgIE1hcmtTdGFj
a1NlZ21lbnQqIG5leHRTZWdtZW50ID0gTWFya1N0YWNrU2VnbWVudDo6Y3JlYXRlKG1fYmxvY2tB
bGxvY2F0b3IuYWxsb2NhdGU8TWFya1N0YWNrU2VnbWVudD4oKSk7CisgICAgbV9udW1iZXJPZlNl
Z21lbnRzKys7CiAgICAgCi0gICAgTWFya1N0YWNrU2VnbWVudCogbmV4dFNlZ21lbnQgPSBtX2Fs
bG9jYXRvci5hbGxvY2F0ZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBuZXh0U2VnbWVu
dC0+bV90b3AgPSAwOwogI2VuZGlmCi0gICAgbmV4dFNlZ21lbnQtPm1fcHJldmlvdXMgPSBtX3Rv
cFNlZ21lbnQ7Ci0gICAgbV90b3BTZWdtZW50ID0gbmV4dFNlZ21lbnQ7CisKKyAgICBtX3NlZ21l
bnRzLnB1c2gobmV4dFNlZ21lbnQpOwogICAgIHNldFRvcEZvckVtcHR5U2VnbWVudCgpOwogICAg
IHZhbGlkYXRlUHJldmlvdXMoKTsKIH0KQEAgLTEzMiwxNCArODMsOSBAQCBib29sIE1hcmtTdGFj
a0FycmF5OjpyZWZpbGwoKQogICAgIHZhbGlkYXRlUHJldmlvdXMoKTsKICAgICBpZiAodG9wKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIE1hcmtTdGFja1NlZ21lbnQqIHRvRnJlZSA9IG1f
dG9wU2VnbWVudDsKLSAgICBNYXJrU3RhY2tTZWdtZW50KiBwcmV2aW91cyA9IG1fdG9wU2VnbWVu
dC0+bV9wcmV2aW91czsKLSAgICBpZiAoIXByZXZpb3VzKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgQVNTRVJUKG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzKTsKLSAgICBtX251bWJlck9m
UHJldmlvdXNTZWdtZW50cy0tOwotICAgIG1fdG9wU2VnbWVudCA9IHByZXZpb3VzOwotICAgIG1f
YWxsb2NhdG9yLnJlbGVhc2UodG9GcmVlKTsKKyAgICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2Nh
dGUoTWFya1N0YWNrU2VnbWVudDo6ZGVzdHJveShtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKSkpOwor
ICAgIEFTU0VSVChtX251bWJlck9mU2VnbWVudHMgPiAxKTsKKyAgICBtX251bWJlck9mU2VnbWVu
dHMtLTsKICAgICBzZXRUb3BGb3JGdWxsU2VnbWVudCgpOwogICAgIHZhbGlkYXRlUHJldmlvdXMo
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1Myw3ICs5OSw3IEBAIHZvaWQgTWFya1N0YWNrQXJy
YXk6OmRvbmF0ZVNvbWVDZWxsc1RvKE0KIAogICAgIEFTU0VSVChtX3NlZ21lbnRDYXBhY2l0eSA9
PSBvdGhlci5tX3NlZ21lbnRDYXBhY2l0eSk7CiAKLSAgICBzaXplX3Qgc2VnbWVudHNUb0RvbmF0
ZSA9IChtX251bWJlck9mUHJldmlvdXNTZWdtZW50cyArIDIgLSAxKSAvIDI7IC8vIFJvdW5kIHVw
IHRvIGRvbmF0ZSAxIC8gMSBwcmV2aW91cyBzZWdtZW50cy4KKyAgICBzaXplX3Qgc2VnbWVudHNU
b0RvbmF0ZSA9IG1fbnVtYmVyT2ZTZWdtZW50cyAvIDI7IC8vIElmIHdlIG9ubHkgaGF2ZSBvbmUg
c2VnbWVudCAob3VyIGhlYWQpIHdlIGRvbid0IGRvbmF0ZSBhbnkgc2VnbWVudHMuCiAKICAgICBp
ZiAoIXNlZ21lbnRzVG9Eb25hdGUpIHsKICAgICAgICAgc2l6ZV90IGNlbGxzVG9Eb25hdGUgPSBt
X3RvcCAvIDI7IC8vIFJvdW5kIGRvd24gdG8gZG9uYXRlIDAgLyAxIGNlbGxzLgpAQCAtMTY3LDIx
ICsxMTMsMjMgQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTQogICAg
IHZhbGlkYXRlUHJldmlvdXMoKTsKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3VzKCk7CiAKLSAg
ICBNYXJrU3RhY2tTZWdtZW50KiBwcmV2aW91cyA9IG1fdG9wU2VnbWVudC0+bV9wcmV2aW91czsK
LSAgICB3aGlsZSAoc2VnbWVudHNUb0RvbmF0ZS0tKSB7Ci0gICAgICAgIEFTU0VSVChwcmV2aW91
cyk7Ci0gICAgICAgIEFTU0VSVChtX251bWJlck9mUHJldmlvdXNTZWdtZW50cyk7CisgICAgLy8g
UmVtb3ZlIG91ciBoZWFkIGFuZCB0aGUgaGVhZCBvZiB0aGUgb3RoZXIgbGlzdCBiZWZvcmUgd2Ug
c3RhcnQgbW92aW5nIHNlZ21lbnRzIGFyb3VuZC4KKyAgICAvLyBXZSdsbCBhZGQgdGhlbSBiYWNr
IG9uIG9uY2Ugd2UncmUgZG9uZSBkb25hdGluZy4KKyAgICBNYXJrU3RhY2tTZWdtZW50KiBteUhl
YWQgPSBtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKKyAgICBNYXJrU3RhY2tTZWdtZW50KiBvdGhl
ckhlYWQgPSBvdGhlci5tX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKIAotICAgICAgICBNYXJrU3Rh
Y2tTZWdtZW50KiBjdXJyZW50ID0gcHJldmlvdXM7Ci0gICAgICAgIHByZXZpb3VzID0gY3VycmVu
dC0+bV9wcmV2aW91czsKLSAgICAgICAgICAgIAotICAgICAgICBjdXJyZW50LT5tX3ByZXZpb3Vz
ID0gb3RoZXIubV90b3BTZWdtZW50LT5tX3ByZXZpb3VzOwotICAgICAgICBvdGhlci5tX3RvcFNl
Z21lbnQtPm1fcHJldmlvdXMgPSBjdXJyZW50OwotICAgICAgICAgICAgCi0gICAgICAgIG1fbnVt
YmVyT2ZQcmV2aW91c1NlZ21lbnRzLS07Ci0gICAgICAgIG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91
c1NlZ21lbnRzKys7CisgICAgd2hpbGUgKHNlZ21lbnRzVG9Eb25hdGUtLSkgeworICAgICAgICBN
YXJrU3RhY2tTZWdtZW50KiBjdXJyZW50ID0gbV9zZWdtZW50cy5yZW1vdmVIZWFkKCk7CisgICAg
ICAgIEFTU0VSVChjdXJyZW50KTsKKyAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA+
IDEpOworICAgICAgICBvdGhlci5tX3NlZ21lbnRzLnB1c2goY3VycmVudCk7CisgICAgICAgIG1f
bnVtYmVyT2ZTZWdtZW50cy0tOworICAgICAgICBvdGhlci5tX251bWJlck9mU2VnbWVudHMrKzsK
ICAgICB9Ci0gICAgbV90b3BTZWdtZW50LT5tX3ByZXZpb3VzID0gcHJldmlvdXM7CisKKyAgICAv
LyBQdXQgdGhlIG9yaWdpbmFsIGhlYWRzIGJhY2sgaW4gdGhlaXIgcGxhY2VzLgorICAgIG1fc2Vn
bWVudHMucHVzaChteUhlYWQpOworICAgIG90aGVyLm1fc2VnbWVudHMucHVzaChvdGhlckhlYWQp
OwogCiAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogICAgIG90aGVyLnZhbGlkYXRlUHJldmlvdXMo
KTsKQEAgLTE5OCwyMSArMTQ2LDIxIEBAIHZvaWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNl
bGxzRnJvbSgKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3VzKCk7CiAgICAgICAgIAogICAgIC8v
IElmIG90aGVyIGhhcyBhbiBlbnRpcmUgc2VnbWVudCwgc3RlYWwgaXQgYW5kIHJldHVybi4KLSAg
ICBpZiAob3RoZXIubV90b3BTZWdtZW50LT5tX3ByZXZpb3VzKSB7Ci0gICAgICAgIEFTU0VSVChv
dGhlci5tX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMtPm1fdG9wID09IG1fc2VnbWVudENhcGFjaXR5
KTsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBGaXJzdCByZW1vdmUgYSBzZWdtZW50IGZyb20g
b3RoZXIuCi0gICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBvdGhlci5tX3RvcFNl
Z21lbnQtPm1fcHJldmlvdXM7Ci0gICAgICAgIG90aGVyLm1fdG9wU2VnbWVudC0+bV9wcmV2aW91
cyA9IGN1cnJlbnQtPm1fcHJldmlvdXM7Ci0gICAgICAgIG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91
c1NlZ21lbnRzLS07Ci0gICAgICAgICAgICAKLSAgICAgICAgQVNTRVJUKCEhb3RoZXIubV9udW1i
ZXJPZlByZXZpb3VzU2VnbWVudHMgPT0gISFvdGhlci5tX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMp
OwotICAgICAgICAgICAgCi0gICAgICAgIC8vIE5vdyBhZGQgaXQgdG8gdGhpcy4KLSAgICAgICAg
Y3VycmVudC0+bV9wcmV2aW91cyA9IG1fdG9wU2VnbWVudC0+bV9wcmV2aW91czsKLSAgICAgICAg
bV90b3BTZWdtZW50LT5tX3ByZXZpb3VzID0gY3VycmVudDsKLSAgICAgICAgbV9udW1iZXJPZlBy
ZXZpb3VzU2VnbWVudHMrKzsKLSAgICAgICAgICAgIAorICAgIGlmIChvdGhlci5tX251bWJlck9m
U2VnbWVudHMgPiAxKSB7CisgICAgICAgIC8vIE1vdmUgdGhlIGhlYWRzIG9mIHRoZSBsaXN0cyBh
c2lkZS4gV2UnbGwgcHVzaCB0aGVtIGJhY2sgb24gYWZ0ZXIuCisgICAgICAgIE1hcmtTdGFja1Nl
Z21lbnQqIG90aGVySGVhZCA9IG90aGVyLm1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAgICAg
ICBNYXJrU3RhY2tTZWdtZW50KiBteUhlYWQgPSBtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKKwor
ICAgICAgICBBU1NFUlQob3RoZXIubV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID09IG1fc2VnbWVu
dENhcGFjaXR5KTsKKworICAgICAgICBtX3NlZ21lbnRzLnB1c2gob3RoZXIubV9zZWdtZW50cy5y
ZW1vdmVIZWFkKCkpOworCisgICAgICAgIG1fbnVtYmVyT2ZTZWdtZW50cysrOworICAgICAgICBv
dGhlci5tX251bWJlck9mU2VnbWVudHMtLTsKKyAgICAgICAgCisgICAgICAgIG1fc2VnbWVudHMu
cHVzaChteUhlYWQpOworICAgICAgICBvdGhlci5tX3NlZ21lbnRzLnB1c2gob3RoZXJIZWFkKTsK
KyAgICAKICAgICAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogICAgICAgICBvdGhlci52YWxpZGF0
ZVByZXZpb3VzKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5oCShyZXZpc2lvbiAxMzM5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTkgKzUwLDI3IEBACiAj
ZGVmaW5lIE1BUktfTE9HX0NISUxEKHZpc2l0b3IsIGNoaWxkKSBkbyB7IH0gd2hpbGUgKGZhbHNl
KQogI2VuZGlmCiAKKyNpbmNsdWRlICJIZWFwQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1RDU3BpbkxvY2suaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKK2NsYXNzIEJsb2NrQWxsb2NhdG9yOworY2xhc3MgRGVhZEJsb2NrOwogY2xhc3MgSlNDZWxs
OwogCi1zdHJ1Y3QgTWFya1N0YWNrU2VnbWVudCB7Ci0gICAgTWFya1N0YWNrU2VnbWVudCogbV9w
cmV2aW91czsKK2NsYXNzIE1hcmtTdGFja1NlZ21lbnQgOiBwdWJsaWMgSGVhcEJsb2NrPE1hcmtT
dGFja1NlZ21lbnQ+IHsKK3B1YmxpYzoKKyAgICBNYXJrU3RhY2tTZWdtZW50KFJlZ2lvbiogcmVn
aW9uKQorICAgICAgICA6IEhlYXBCbG9jazxNYXJrU3RhY2tTZWdtZW50PihyZWdpb24pCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAotICAgIHNpemVfdCBtX3RvcDsKKyAgICAgICAgLCBtX3RvcCgwKQog
I2VuZGlmCi0gICAgICAgIAorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFya1N0YWNrU2Vn
bWVudCogY3JlYXRlKERlYWRCbG9jayopOworCiAgICAgY29uc3QgSlNDZWxsKiogZGF0YSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEpTQ2VsbCoqPih0aGlzICsg
MSk7CkBAIC03NywyNiArODUsMTcgQEAgc3RydWN0IE1hcmtTdGFja1NlZ21lbnQgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNpemVvZihNYXJrU3RhY2tTZWdtZW50KSArIGNhcGFjaXR5ICogc2l6
ZW9mKGNvbnN0IEpTQ2VsbCopOwogICAgIH0KLX07CiAKLWNsYXNzIE1hcmtTdGFja1NlZ21lbnRB
bGxvY2F0b3IgewotcHVibGljOgotICAgIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3IoKTsKLSAg
ICB+TWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcigpOwotICAgIAotICAgIE1hcmtTdGFja1NlZ21l
bnQqIGFsbG9jYXRlKCk7Ci0gICAgdm9pZCByZWxlYXNlKE1hcmtTdGFja1NlZ21lbnQqKTsKLSAg
ICAKLSAgICB2b2lkIHNocmlua1Jlc2VydmUoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgU3Bpbkxv
Y2sgbV9sb2NrOwotICAgIE1hcmtTdGFja1NlZ21lbnQqIG1fbmV4dEZyZWVTZWdtZW50OworICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNCAqIEtCOworCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIHNpemVfdCBtX3RvcDsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWFya1N0YWNr
QXJyYXkgewogcHVibGljOgotICAgIE1hcmtTdGFja0FycmF5KE1hcmtTdGFja1NlZ21lbnRBbGxv
Y2F0b3ImKTsKKyAgICBNYXJrU3RhY2tBcnJheShCbG9ja0FsbG9jYXRvciYpOwogICAgIH5NYXJr
U3RhY2tBcnJheSgpOwogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgSlNDZWxsKik7CkBAIC0xMjIs
MTIgKzEyMSwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgdmFsaWRhdGVQcmV2aW91cygp
OwogCi0gICAgTWFya1N0YWNrU2VnbWVudCogbV90b3BTZWdtZW50OwotICAgIE1hcmtTdGFja1Nl
Z21lbnRBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOworICAgIERvdWJseUxpbmtlZExpc3Q8TWFya1N0
YWNrU2VnbWVudD4gbV9zZWdtZW50czsKKyAgICBCbG9ja0FsbG9jYXRvciYgbV9ibG9ja0FsbG9j
YXRvcjsKIAogICAgIHNpemVfdCBtX3NlZ21lbnRDYXBhY2l0eTsKICAgICBzaXplX3QgbV90b3A7
Ci0gICAgc2l6ZV90IG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzOworICAgIHNpemVfdCBtX251
bWJlck9mU2VnbWVudHM7CiAgICAKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFja0lubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2tJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEzMzkxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGluZU1ldGhvZHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMzUgKzMxLDQwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitp
bmxpbmUgTWFya1N0YWNrU2VnbWVudCogTWFya1N0YWNrU2VnbWVudDo6Y3JlYXRlKERlYWRCbG9j
ayogYmxvY2spCit7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYmxvY2spIE1hcmtTdGFja1Nl
Z21lbnQoYmxvY2stPnJlZ2lvbigpKTsKK30KKwogaW5saW5lIHNpemVfdCBNYXJrU3RhY2tBcnJh
eTo6cG9zdEluY1RvcCgpCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IG1fdG9wKys7Ci0gICAgQVNT
RVJUKHJlc3VsdCA9PSBtX3RvcFNlZ21lbnQtPm1fdG9wKyspOworICAgIEFTU0VSVChyZXN1bHQg
PT0gbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKyspOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAg
ICAgICAgIAogaW5saW5lIHNpemVfdCBNYXJrU3RhY2tBcnJheTo6cHJlRGVjVG9wKCkKIHsKICAg
ICBzaXplX3QgcmVzdWx0ID0gLS1tX3RvcDsKLSAgICBBU1NFUlQocmVzdWx0ID09IC0tbV90b3BT
ZWdtZW50LT5tX3RvcCk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSAtLW1fc2VnbWVudHMuaGVhZCgp
LT5tX3RvcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAgICAgCiBpbmxpbmUgdm9pZCBN
YXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRnVsbFNlZ21lbnQoKQogewotICAgIEFTU0VSVChtX3Rv
cFNlZ21lbnQtPm1fdG9wID09IG1fc2VnbWVudENhcGFjaXR5KTsKKyAgICBBU1NFUlQobV9zZWdt
ZW50cy5oZWFkKCktPm1fdG9wID09IG1fc2VnbWVudENhcGFjaXR5KTsKICAgICBtX3RvcCA9IG1f
c2VnbWVudENhcGFjaXR5OwogfQogCiBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJheTo6c2V0VG9w
Rm9yRW1wdHlTZWdtZW50KCkKIHsKLSAgICBBU1NFUlQoIW1fdG9wU2VnbWVudC0+bV90b3ApOwor
ICAgIEFTU0VSVCghbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKICAgICBtX3RvcCA9IDA7CiB9
CiAKIGlubGluZSBzaXplX3QgTWFya1N0YWNrQXJyYXk6OnRvcCgpCiB7Ci0gICAgQVNTRVJUKG1f
dG9wID09IG1fdG9wU2VnbWVudC0+bV90b3ApOworICAgIEFTU0VSVChtX3RvcCA9PSBtX3NlZ21l
bnRzLmhlYWQoKS0+bV90b3ApOwogICAgIHJldHVybiBtX3RvcDsKIH0KIApAQCAtNjksOSArNzQs
OSBAQCBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJheTo6dmFsaWRhdGVQcmV2CiBpbmxpbmUgdm9p
ZCBNYXJrU3RhY2tBcnJheTo6dmFsaWRhdGVQcmV2aW91cygpCiB7CiAgICAgdW5zaWduZWQgY291
bnQgPSAwOwotICAgIGZvciAoTWFya1N0YWNrU2VnbWVudCogY3VycmVudCA9IG1fdG9wU2VnbWVu
dC0+bV9wcmV2aW91czsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fcHJldmlvdXMpCisg
ICAgZm9yIChNYXJrU3RhY2tTZWdtZW50KiBjdXJyZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpCiAgICAgICAgIGNvdW50Kys7Ci0gICAg
QVNTRVJUKGNvdW50ID09IG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzKTsKKyAgICBBU1NFUlQo
bV9zZWdtZW50cy5zaXplKCkgPT0gbV9udW1iZXJPZlNlZ21lbnRzKTsKIH0KICNlbmRpZgogCkBA
IC03OSw3ICs4NCw3IEBAIGlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5OjphcHBlbmQoY29uc3QK
IHsKICAgICBpZiAobV90b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpCiAgICAgICAgIGV4cGFuZCgp
OwotICAgIG1fdG9wU2VnbWVudC0+ZGF0YSgpW3Bvc3RJbmNUb3AoKV0gPSBjZWxsOworICAgIG1f
c2VnbWVudHMuaGVhZCgpLT5kYXRhKClbcG9zdEluY1RvcCgpXSA9IGNlbGw7CiB9CiAKIGlubGlu
ZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5SZW1vdmVMYXN0KCkKQEAgLTg5LDE1ICs5NCwxNSBA
QCBpbmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTo6Y2FuUmVtb3ZlTGFzCiAKIGlubGluZSBjb25z
dCBKU0NlbGwqIE1hcmtTdGFja0FycmF5OjpyZW1vdmVMYXN0KCkKIHsKLSAgICByZXR1cm4gbV90
b3BTZWdtZW50LT5kYXRhKClbcHJlRGVjVG9wKCldOworICAgIHJldHVybiBtX3NlZ21lbnRzLmhl
YWQoKS0+ZGF0YSgpW3ByZURlY1RvcCgpXTsKIH0KIAogaW5saW5lIGJvb2wgTWFya1N0YWNrQXJy
YXk6OmlzRW1wdHkoKQogewogICAgIGlmIChtX3RvcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChtX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9w
U2VnbWVudC0+bV9wcmV2aW91cy0+bV90b3AgPT0gbV9zZWdtZW50Q2FwYWNpdHkpOworICAgIGlm
IChtX3NlZ21lbnRzLmhlYWQoKS0+bmV4dCgpKSB7CisgICAgICAgIEFTU0VSVChtX3NlZ21lbnRz
LmhlYWQoKS0+bmV4dCgpLT5tX3RvcCA9PSBtX3NlZ21lbnRDYXBhY2l0eSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDUsNyArMTEwLDcgQEAg
aW5saW5lIGJvb2wgTWFya1N0YWNrQXJyYXk6OmlzRW1wdHkoKQogCiBpbmxpbmUgc2l6ZV90IE1h
cmtTdGFja0FycmF5OjpzaXplKCkKIHsKLSAgICByZXR1cm4gbV90b3AgKyBtX3NlZ21lbnRDYXBh
Y2l0eSAqIG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzOworICAgIHJldHVybiBtX3RvcCArIG1f
c2VnbWVudENhcGFjaXR5ICogKG1fbnVtYmVyT2ZTZWdtZW50cyAtIDEpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAJKHJldmlzaW9uIDEzMzkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUsNyArMTUsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihHQ1RocmVhZFNoYXJlZERhdGEmIHNo
YXJlZCkKLSAgICA6IG1fc3RhY2soc2hhcmVkLm1fc2VnbWVudEFsbG9jYXRvcikKKyAgICA6IG1f
c3RhY2soc2hhcmVkLm1fZ2xvYmFsRGF0YS0+aGVhcC5ibG9ja0FsbG9jYXRvcigpKQogICAgICwg
bV92aXNpdENvdW50KDApCiAgICAgLCBtX2lzSW5QYXJhbGxlbE1vZGUoZmFsc2UpCiAgICAgLCBt
X3NoYXJlZChzaGFyZWQpCg==
</data>
<flag name="review"
          id="187707"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="187735"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>