<?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>138495</bug_id>
          
          <creation_ts>2014-11-06 22:15:32 -0800</creation_ts>
          <short_desc>bmalloc uses 8X more virtual memory than necessary</short_desc>
          <delta_ts>2014-11-07 10:12:31 -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>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047027</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-06 22:15:32 -0800</bug_when>
    <thetext>bmalloc uses 8X more virtual memory than necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047029</commentid>
    <comment_count>1</comment_count>
      <attachid>241163</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-06 22:26:19 -0800</bug_when>
    <thetext>Created attachment 241163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047040</commentid>
    <comment_count>2</comment_count>
      <attachid>241163</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-07 01:23:34 -0800</bug_when>
    <thetext>Comment on attachment 241163
Patch

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

&gt; Source/bmalloc/bmalloc/VMAllocate.h:96
&gt; +    char* aligned = mask(mapped, ~vmAlignmentMask) + vmAlignment;

I think this should be:
    char* aligned = mask(mapped + vmAlignment, ~vmAlignmentMask);

i.e. the same algorithm as roundUpToMultipleOf().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047101</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-07 09:59:21 -0800</bug_when>
    <thetext>&gt; i.e. the same algorithm as roundUpToMultipleOf().

Good idea. I&apos;ll just use roundUpToMultipleOf directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047102</commentid>
    <comment_count>4</comment_count>
      <attachid>241189</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-07 09:59:49 -0800</bug_when>
    <thetext>Created attachment 241189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047103</commentid>
    <comment_count>5</comment_count>
      <attachid>241189</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-07 10:01:14 -0800</bug_when>
    <thetext>Comment on attachment 241189
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047105</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-07 10:12:31 -0800</bug_when>
    <thetext>Committed r175751: &lt;http://trac.webkit.org/changeset/175751&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241163</attachid>
            <date>2014-11-06 22:26:19 -0800</date>
            <delta_ts>2014-11-07 09:59:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138495-20141106222630.patch</filename>
            <type>text/plain</type>
            <size>11964</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NTc0MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTExLTA2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYyB1c2VzIDhYIG1v
cmUgdmlydHVhbCBtZW1vcnkgdGhhbiBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODQ5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGlPUyBoYXMgYSBwZXItcHJvY2VzcyB2aXJ0dWFsIG1l
bW9yeSBjYXAgYXJvdW5kIDFHQiwgc28gdGhlcmUncyBzb21lCisgICAgICAgIHZhbHVlIHRvIG5v
dCBnb2luZyB0b3RhbGx5IGhhbSB3aXRoIHZpcnR1YWwgbWVtb3J5LgorCisgICAgICAgIFdlIGN1
cnJlbnRseSB1c2UgYWJvdXQgOFggdGhlIG5lY2Vzc2FyeSBhbW91bnQ6CisgICAgICAgICAgICAt
IDJYIHRvIGFsaWduIG91ciBWTSBhbGxvY2F0aW9uCisgICAgICAgICAgICAtIDRYIHRvIHJlc2Vy
dmUgc21hbGwgLyBtZWRpdW0gLyAoMikgbGFyZ2UgY2h1bmsgVk0gcmFuZ2VzIHBlciBzdXBlcmNo
dW5rCisKKyAgICAgICAgV2UgY2FuIGN1dCB0aGF0IGRvd246CisgICAgICAgICAgICAtIFJldHVy
biB0aGUgdW5hbGlnbmVkIHBvcnRpb24gb2Ygb3VyIFZNIGFsbG9jYXRpb24gKC0yWCkKKyAgICAg
ICAgICAgIC0gVXNlIGFsbCB0aGUgY2h1bmtzIGluIGEgc3VwZXJjaHVuaywgaW5zdGVhZCBvZiBh
bGxvY2F0aW5nIG9uZQorICAgICAgICAgICAgICBjaHVuayBwZXIgc3VwZXJjaHVuayAoLTRYKQor
CisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OnJvdW5k
VXBUb011bHRpcGxlT2YpOiBBZGRlZCBhIG5vbi1jb25zdGFudCB2ZXJzaW9uIG9mIHRoaXMKKyAg
ICAgICAgZnVuY3Rpb24gc28gd2UgY2FuIGNhbGwgaXQgd2l0aCBnZXRwYWdlc2l6ZSgpIGF0IHJ1
bnRpbWUuCisKKyAgICAgICAgKiBibWFsbG9jL0NodW5rLmg6CisgICAgICAgICogYm1hbGxvYy9M
YXJnZUNodW5rLmg6CisgICAgICAgIChibWFsbG9jOjpMYXJnZUNodW5rOjpjcmVhdGUpOiBEZWxl
dGVkLiBJbnN0ZWFkIG9mIGVhY2ggY2h1bmsgYWxsb2NhdGluZworICAgICAgICBpdHMgb3duIFZN
LCBWTUhlYXAgYWxsb2NhdGVzIHRoZSBzdXBlcmNodW5rIGFuZCBhbGwgdGhlIGNodW5rcyBpbiBp
dCBhdCBhIHRpbWUuCisKKyAgICAgICAgKiBibWFsbG9jL1ZNQWxsb2NhdGUuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnZtVmFsaWRhdGUpOgorICAgICAgICAoYm1hbGxvYzo6dm1BbGxvY2F0ZSk6IEFT
U0VSVCB0aGF0IG1tYXAgc3VjY2VlZHMgdG8gbWFrZSBjcmFzaGVzIGNsZWFyZXIKKyAgICAgICAg
aWYgaXQgZG9lcyBub3Qgc3VjY2VlZC4gQWxsb2NhdGUgcHJlY2lzZWx5LCBhbmQgZ2l2ZSBiYWNr
IHRoZSBleHRyYS4KKworICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OlZNSGVhcDo6YWxsb2NhdGVTdXBlckNodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OlZN
SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlZN
SGVhcDo6YWxsb2NhdGVNZWRpdW1DaHVuayk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpW
TUhlYXA6OmFsbG9jYXRlTGFyZ2VDaHVuayk6IERlbGV0ZWQuIFVzZSBhbGwgdGhlIGNodW5rcwor
ICAgICAgICBpbiBhIHN1cGVyY2h1bmssIGluc3RlYWQgb2YganVzdCBvbmUuCisKKyAgICAgICAg
KiBibWFsbG9jL1ZNSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjphbGxvY2F0ZVNt
YWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OmFsbG9jYXRlTWVkaXVtUGFnZSk6
CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OmFsbG9jYXRlTGFyZ2VSYW5nZSk6CisgICAgICAg
ICogYm1hbGxvYy9YTGFyZ2VDaHVuay5oOgorICAgICAgICAoYm1hbGxvYzo6WExhcmdlQ2h1bms6
OmNyZWF0ZSk6IFVwZGF0ZWQgdG8gbWF0Y2ggY2hhbmdlcyBhYm92ZS4KKwogMjAxNC0xMS0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEphdmFTY3JpcHRD
b3JlIGlzIG1pc3NpbmcgZGVidWcgaW5mbyBmb3IgYm1hbGxvYyBiZWNhdXNlIGxpYmJtYWxsb2Mu
YSBpcyBzdHJpcHBlZApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCShyZXZpc2lv
biAxNzU3MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxMCArNjIsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNv
bnN0ZXhwciBibwogICAgIHJldHVybiAhIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFs
dWUpICYgbWFzayk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIHJvdW5kVXBU
b011bHRpcGxlT2Yoc2l6ZV90IGRpdmlzb3IsIFQgeCkKK3sKKyAgICBCQVNTRVJUKGRpdmlzb3Ig
JiYgIShkaXZpc29yICYgKGRpdmlzb3IgLSAxKSkpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oeCkgKyAoZGl2aXNvciAtIDF1bCkp
ICYgfihkaXZpc29yIC0gMXVsKSk7Cit9CisKIHRlbXBsYXRlPHNpemVfdCBkaXZpc29yLCB0eXBl
bmFtZSBUPiBpbmxpbmUgY29uc3RleHByIFQgcm91bmRVcFRvTXVsdGlwbGVPZihUIHgpCiB7CiAg
ICAgc3RhdGljX2Fzc2VydChkaXZpc29yICYmICEoZGl2aXNvciAmIChkaXZpc29yIC0gMSkpLCAi
J2Rpdmlzb3InIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VD4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih4KSArIChkaXZpc29yIC0g
MXVsKSkgJiB+KGRpdmlzb3IgLSAxdWwpKTsKKyAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVP
ZihkaXZpc29yLCB4KTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGRpdmlzb3IsIHR5cGVuYW1lIFQ+
IGlubGluZSBjb25zdGV4cHIgVCByb3VuZERvd25Ub011bHRpcGxlT2YoVCB4KQpJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9DaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvQ2h1bmsuaAkocmV2aXNpb24gMTc1NzA0KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9DaHVuay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rT2Zmc2V0ID0gVHJhaXRzOjpjaHVua09mZnNldDsK
ICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IGNodW5rTWFzayA9IFRyYWl0czo6Y2h1bmtNYXNr
OwogCi0gICAgc3RhdGljIENodW5rKiBjcmVhdGUoKTsKICAgICBzdGF0aWMgQ2h1bmsqIGdldCh2
b2lkKik7CiAKICAgICBQYWdlKiBiZWdpbigpIHsgcmV0dXJuIFBhZ2U6OmdldChMaW5lOjpnZXQo
bV9tZW1vcnkpKTsgfQpAQCAtNjcsMTQgKzY2LDYgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIFRyYWl0cz4KLWlubGluZSBhdXRvIENodW5rPFRyYWl0cz46OmNyZWF0ZSgpIC0+IENo
dW5rKgotewotICAgIHNpemVfdCB2bVNpemUgPSBibWFsbG9jOjp2bVNpemUoY2h1bmtTaXplKTsK
LSAgICBzdGQ6OnBhaXI8dm9pZCosIFJhbmdlPiByZXN1bHQgPSB2bUFsbG9jYXRlKHZtU2l6ZSwg
c3VwZXJDaHVua1NpemUsIGNodW5rT2Zmc2V0KTsKLSAgICByZXR1cm4gbmV3IChyZXN1bHQuZmly
c3QpIENodW5rOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+CiBpbmxpbmUgYXV0byBDaHVu
azxUcmFpdHM+OjpnZXQodm9pZCogb2JqZWN0KSAtPiBDaHVuayoKIHsKICAgICBCQVNTRVJUKGlz
U21hbGxPck1lZGl1bShvYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFy
Z2VDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VDaHVu
ay5oCShyZXZpc2lvbiAxNzU3MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlQ2h1
bmsuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDYgQEAgcHJpdmF0ZToKICAgICBhbGln
bmFzKHZtUGFnZVNpemUpIGNoYXIgbV9tZW1vcnlbXTsKIH07CiAKLWlubGluZSBMYXJnZUNodW5r
KiBMYXJnZUNodW5rOjpjcmVhdGUoKQotewotICAgIHNpemVfdCB2bVNpemUgPSBibWFsbG9jOjp2
bVNpemUobGFyZ2VDaHVua1NpemUpOwotICAgIHN0ZDo6cGFpcjx2b2lkKiwgUmFuZ2U+IHJlc3Vs
dCA9IHZtQWxsb2NhdGUodm1TaXplLCBzdXBlckNodW5rU2l6ZSwgbGFyZ2VDaHVua09mZnNldCk7
Ci0gICAgcmV0dXJuIG5ldyAocmVzdWx0LmZpcnN0KSBMYXJnZUNodW5rOwotfQotCiBpbmxpbmUg
TGFyZ2VDaHVuayogTGFyZ2VDaHVuazo6Z2V0KHZvaWQqIG9iamVjdCkKIHsKICAgICBCQVNTRVJU
KCFpc1NtYWxsT3JNZWRpdW0ob2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1ZNQWxsb2NhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNQWxs
b2NhdGUuaAkocmV2aXNpb24gMTc1NzA0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUFs
bG9jYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDIwICs0MywyNCBAQCBpbmxpbmUgc2l6ZV90
IHZtU2l6ZShzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjx2
bVBhZ2VTaXplPihzaXplKTsKIH0KLSAgICAKKwogaW5saW5lIHZvaWQgdm1WYWxpZGF0ZShzaXpl
X3Qgdm1TaXplKQogeworICAgIC8vIFdlIHVzZSBnZXRwYWdlc2l6ZSgpIGhlcmUgaW5zdGVhZCBv
ZiB2bVBhZ2VTaXplIGJlY2F1c2Ugdm1QYWdlU2l6ZSBpcworICAgIC8vIGFsbG93ZWQgdG8gYmUg
bGFyZ2VyIHRoYW4gdGhlIE9TJ3MgdHJ1ZSBwYWdlIHNpemUuCisKICAgICBVTlVTRUQodm1TaXpl
KTsKICAgICBCQVNTRVJUKHZtU2l6ZSk7Ci0gICAgQkFTU0VSVCh2bVNpemUgPT0gYm1hbGxvYzo6
dm1TaXplKHZtU2l6ZSkpOworICAgIEJBU1NFUlQodm1TaXplID09IHJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhdGljX2Nhc3Q8c2l6ZV90PihnZXRwYWdlc2l6ZSgpKSwgdm1TaXplKSk7CiB9CiAKIGlu
bGluZSB2b2lkIHZtVmFsaWRhdGUodm9pZCogcCwgc2l6ZV90IHZtU2l6ZSkKIHsKLSAgICB2bVZh
bGlkYXRlKHZtU2l6ZSk7Ci0gICAgCiAgICAgLy8gV2UgdXNlIGdldHBhZ2VzaXplKCkgaGVyZSBp
bnN0ZWFkIG9mIHZtUGFnZVNpemUgYmVjYXVzZSB2bVBhZ2VTaXplIGlzCiAgICAgLy8gYWxsb3dl
ZCB0byBiZSBsYXJnZXIgdGhhbiB0aGUgT1MncyB0cnVlIHBhZ2Ugc2l6ZS4KKworICAgIHZtVmFs
aWRhdGUodm1TaXplKTsKKyAgICAKICAgICBVTlVTRUQocCk7CiAgICAgQkFTU0VSVChwKTsKICAg
ICBCQVNTRVJUKHAgPT0gbWFzayhwLCB+KGdldHBhZ2VzaXplKCkgLSAxKSkpOwpAQCAtNjUsNyAr
NjksOSBAQCBpbmxpbmUgdm9pZCB2bVZhbGlkYXRlKHZvaWQqIHAsIHNpemVfdCB2CiBpbmxpbmUg
dm9pZCogdm1BbGxvY2F0ZShzaXplX3Qgdm1TaXplKQogewogICAgIHZtVmFsaWRhdGUodm1TaXpl
KTsKLSAgICByZXR1cm4gbW1hcCgwLCB2bVNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIEJNQUxMT0NfVk1fVEFHLCAwKTsKKyAgICB2b2lkKiByZXN1
bHQgPSBtbWFwKDAsIHZtU2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiwgQk1BTExPQ19WTV9UQUcsIDApOworICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1
bHQgIT0gTUFQX0ZBSUxFRCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHZvaWQg
dm1EZWFsbG9jYXRlKHZvaWQqIHAsIHNpemVfdCB2bVNpemUpCkBAIC03NCwzMCArODAsMjkgQEAg
aW5saW5lIHZvaWQgdm1EZWFsbG9jYXRlKHZvaWQqIHAsIHNpemVfdAogICAgIG11bm1hcChwLCB2
bVNpemUpOwogfQogCi0vLyBBbGxvY2F0ZXMgdm1TaXplIGJ5dGVzIGF0IGEgc3BlY2lmaWVkIG9m
ZnNldCBmcm9tIGEgcG93ZXItb2YtdHdvIGFsaWdubWVudC4KLS8vIFVzZSB0aGlzIGZ1bmN0aW9u
IHRvIGNyZWF0ZSBwb2ludGVyIG1hc2tzIHRoYXQgYXJlbid0IHNpbXBsZSBwb3dlcnMgb2YgdHdv
LgorLy8gQWxsb2NhdGVzIHZtU2l6ZSBieXRlcyBhdCBhIHNwZWNpZmllZCBwb3dlci1vZi10d28g
YWxpZ25tZW50LgorLy8gVXNlIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIG1hc2thYmxlIG1lbW9y
eSByZWdpb25zLgogCi1pbmxpbmUgc3RkOjpwYWlyPHZvaWQqLCBSYW5nZT4gdm1BbGxvY2F0ZShz
aXplX3Qgdm1TaXplLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgb2Zmc2V0KQoraW5saW5lIHZv
aWQqIHZtQWxsb2NhdGUoc2l6ZV90IHZtU2l6ZSwgc2l6ZV90IHZtQWxpZ25tZW50KQogewogICAg
IHZtVmFsaWRhdGUodm1TaXplKTsKLSAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQp
KTsKKyAgICB2bVZhbGlkYXRlKHZtQWxpZ25tZW50KTsKIAotICAgIHNpemVfdCBtYXBwZWRTaXpl
ID0gc3RkOjptYXgodm1TaXplLCBhbGlnbm1lbnQpICsgYWxpZ25tZW50OworICAgIHNpemVfdCBt
YXBwZWRTaXplID0gc3RkOjptYXgodm1TaXplLCB2bUFsaWdubWVudCkgKyB2bUFsaWdubWVudDsK
ICAgICBjaGFyKiBtYXBwZWQgPSBzdGF0aWNfY2FzdDxjaGFyKj4odm1BbGxvY2F0ZShtYXBwZWRT
aXplKSk7CisgICAgY2hhciogbWFwcGVkRW5kID0gbWFwcGVkICsgbWFwcGVkU2l6ZTsKKworICAg
IHVpbnRwdHJfdCB2bUFsaWdubWVudE1hc2sgPSB2bUFsaWdubWVudCAtIDE7CisgICAgY2hhciog
YWxpZ25lZCA9IG1hc2sobWFwcGVkLCB+dm1BbGlnbm1lbnRNYXNrKSArIHZtQWxpZ25tZW50Owor
ICAgIGNoYXIqIGFsaWduZWRFbmQgPSBhbGlnbmVkICsgdm1TaXplOworICAgIAorICAgIGlmIChz
aXplX3QgbGVmdEV4dHJhID0gYWxpZ25lZCAtIG1hcHBlZCkKKyAgICAgICAgdm1EZWFsbG9jYXRl
KG1hcHBlZCwgbGVmdEV4dHJhKTsKICAgICAKLSAgICB1aW50cHRyX3QgYWxpZ25tZW50TWFzayA9
IGFsaWdubWVudCAtIDE7Ci0gICAgaWYgKCF0ZXN0KG1hcHBlZCwgYWxpZ25tZW50TWFzaykgJiYg
b2Zmc2V0ICsgdm1TaXplIDw9IGFsaWdubWVudCkgewotICAgICAgICAvLyBXZSBnb3QgdHdvIHBl
cmZlY3RseSBhbGlnbmVkIHJlZ2lvbnMuIEdpdmUgb25lIGJhY2sgdG8gYXZvaWQgd2FzdGluZwot
ICAgICAgICAvLyBWTSB1bm5lY2Vzc2FyaWx5LiBUaGlzIGlzbid0IGNvc3RseSBiZWNhdXNlIHdl
IGFyZW4ndCBtYWtpbmcgaG9sZXMuCi0gICAgICAgIHZtRGVhbGxvY2F0ZShtYXBwZWQgKyBhbGln
bm1lbnQsIGFsaWdubWVudCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYXBwZWQg
KyBvZmZzZXQsIFJhbmdlKG1hcHBlZCwgYWxpZ25tZW50KSk7Ci0gICAgfQotCi0gICAgLy8gV2Ug
Z290IGFuIHVuYWxpZ25lZCByZWdpb24uIEtlZXAgdGhlIHdob2xlIHRoaW5nIHRvIGF2b2lkIGNy
ZWF0aW5nIGhvbGVzLAotICAgIC8vIGFuZCBob3BlZnVsbHkgcmVhbGlnbiB0aGUgVk0gYWxsb2Nh
dG9yIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMuIE9uIERhcndpbiwKLSAgICAvLyBWTSBob2xlcyB0
cmlnZ2VyIE8oTl4yKSBiZWhhdmlvciBpbiBtbWFwLCBzbyB3ZSB3YW50IHRvIG1pbmltaXplIHRo
ZW0uCi0gICAgY2hhciogbWFwcGVkQWxpZ25lZCA9IG1hc2sobWFwcGVkLCB+YWxpZ25tZW50TWFz
aykgKyBhbGlnbm1lbnQ7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1hcHBlZEFsaWduZWQg
KyBvZmZzZXQsIFJhbmdlKG1hcHBlZCwgbWFwcGVkU2l6ZSkpOworICAgIGlmIChzaXplX3Qgcmln
aHRFeHRyYSA9IG1hcHBlZEVuZCAtIGFsaWduZWRFbmQpCisgICAgICAgIHZtRGVhbGxvY2F0ZShh
bGlnbmVkRW5kLCByaWdodEV4dHJhKTsKKworICAgIHJldHVybiBhbGlnbmVkOwogfQogCiBpbmxp
bmUgdm9pZCB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHZvaWQqIHAsIHNpemVfdCB2bVNpemUp
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCShyZXZpc2lvbiAxNzU3MDQpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDI0
ICszNiwyMCBAQCBWTUhlYXA6OlZNSGVhcCgpCiB7CiB9CiAKLXZvaWQgVk1IZWFwOjphbGxvY2F0
ZVNtYWxsQ2h1bmsoKQordm9pZCBWTUhlYXA6OmFsbG9jYXRlU3VwZXJDaHVuaygpCiB7Ci0gICAg
U21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpjcmVhdGUoKTsKLSAgICBmb3IgKGF1dG8q
IGl0ID0gY2h1bmstPmJlZ2luKCk7IGl0ICE9IGNodW5rLT5lbmQoKTsgKytpdCkKKyAgICBjaGFy
KiBzdXBlckNodW5rID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHZtQWxsb2NhdGUoc3VwZXJDaHVua1Np
emUsIHN1cGVyQ2h1bmtTaXplKSk7CisKKyAgICBTbWFsbENodW5rKiBzbWFsbENodW5rID0gbmV3
IChzdXBlckNodW5rICsgc21hbGxDaHVua09mZnNldCkgU21hbGxDaHVuazsKKyAgICBmb3IgKGF1
dG8qIGl0ID0gc21hbGxDaHVuay0+YmVnaW4oKTsgaXQgIT0gc21hbGxDaHVuay0+ZW5kKCk7ICsr
aXQpCiAgICAgICAgIG1fc21hbGxQYWdlcy5wdXNoKGl0KTsKLX0KIAotdm9pZCBWTUhlYXA6OmFs
bG9jYXRlTWVkaXVtQ2h1bmsoKQotewotICAgIE1lZGl1bUNodW5rKiBjaHVuayA9IE1lZGl1bUNo
dW5rOjpjcmVhdGUoKTsKLSAgICBmb3IgKGF1dG8qIGl0ID0gY2h1bmstPmJlZ2luKCk7IGl0ICE9
IGNodW5rLT5lbmQoKTsgKytpdCkKKyAgICBNZWRpdW1DaHVuayogbWVkaXVtQ2h1bmsgPSBuZXcg
KHN1cGVyQ2h1bmsgKyBtZWRpdW1DaHVua09mZnNldCkgTWVkaXVtQ2h1bms7CisgICAgZm9yIChh
dXRvKiBpdCA9IG1lZGl1bUNodW5rLT5iZWdpbigpOyBpdCAhPSBtZWRpdW1DaHVuay0+ZW5kKCk7
ICsraXQpCiAgICAgICAgIG1fbWVkaXVtUGFnZXMucHVzaChpdCk7Ci19CiAKLVJhbmdlIFZNSGVh
cDo6YWxsb2NhdGVMYXJnZUNodW5rKCkKLXsKLSAgICBMYXJnZUNodW5rKiBjaHVuayA9IExhcmdl
Q2h1bms6OmNyZWF0ZSgpOwotICAgIHJldHVybiBCb3VuZGFyeVRhZzo6aW5pdChjaHVuayk7Cisg
ICAgTGFyZ2VDaHVuayogbGFyZ2VDaHVuayA9IG5ldyAoc3VwZXJDaHVuayArIGxhcmdlQ2h1bmtP
ZmZzZXQpIExhcmdlQ2h1bms7CisgICAgbV9sYXJnZVJhbmdlcy5pbnNlcnQoQm91bmRhcnlUYWc6
OmluaXQobGFyZ2VDaHVuaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVk1IZWFwLmgJKHJldmlzaW9uIDE3NTcwNCkKKysrIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvVk1IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNN
dXRleD4mLCBSYW5nZSk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhbGxvY2F0ZVNtYWxsQ2h1bmso
KTsKLSAgICB2b2lkIGFsbG9jYXRlTWVkaXVtQ2h1bmsoKTsKLSAgICBSYW5nZSBhbGxvY2F0ZUxh
cmdlQ2h1bmsoKTsKKyAgICB2b2lkIGFsbG9jYXRlU3VwZXJDaHVuaygpOwogCiAgICAgVmVjdG9y
PFNtYWxsUGFnZSo+IG1fc21hbGxQYWdlczsKICAgICBWZWN0b3I8TWVkaXVtUGFnZSo+IG1fbWVk
aXVtUGFnZXM7CkBAIC02Niw3ICs2NCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgU21hbGxQYWdlKiBW
TUhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKCkKIHsKICAgICBpZiAoIW1fc21hbGxQYWdlcy5zaXpl
KCkpCi0gICAgICAgIGFsbG9jYXRlU21hbGxDaHVuaygpOworICAgICAgICBhbGxvY2F0ZVN1cGVy
Q2h1bmsoKTsKIAogICAgIHJldHVybiBtX3NtYWxsUGFnZXMucG9wKCk7CiB9CkBAIC03NCw3ICs3
Miw3IEBAIGlubGluZSBTbWFsbFBhZ2UqIFZNSGVhcDo6YWxsb2NhdGVTbWFsbFAKIGlubGluZSBN
ZWRpdW1QYWdlKiBWTUhlYXA6OmFsbG9jYXRlTWVkaXVtUGFnZSgpCiB7CiAgICAgaWYgKCFtX21l
ZGl1bVBhZ2VzLnNpemUoKSkKLSAgICAgICAgYWxsb2NhdGVNZWRpdW1DaHVuaygpOworICAgICAg
ICBhbGxvY2F0ZVN1cGVyQ2h1bmsoKTsKIAogICAgIHJldHVybiBtX21lZGl1bVBhZ2VzLnBvcCgp
OwogfQpAQCAtODIsOCArODAsMTEgQEAgaW5saW5lIE1lZGl1bVBhZ2UqIFZNSGVhcDo6YWxsb2Nh
dGVNZWRpdQogaW5saW5lIFJhbmdlIFZNSGVhcDo6YWxsb2NhdGVMYXJnZVJhbmdlKHNpemVfdCBz
aXplKQogewogICAgIFJhbmdlIHJhbmdlID0gbV9sYXJnZVJhbmdlcy50YWtlKHNpemUpOwotICAg
IGlmICghcmFuZ2UpCi0gICAgICAgIHJhbmdlID0gYWxsb2NhdGVMYXJnZUNodW5rKCk7CisgICAg
aWYgKCFyYW5nZSkgeworICAgICAgICBhbGxvY2F0ZVN1cGVyQ2h1bmsoKTsKKyAgICAgICAgcmFu
Z2UgPSBtX2xhcmdlUmFuZ2VzLnRha2Uoc2l6ZSk7CisgICAgICAgIEJBU1NFUlQocmFuZ2UpOwor
ICAgIH0KICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvWExhcmdlQ2h1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1hM
YXJnZUNodW5rLmgJKHJldmlzaW9uIDE3NTcwNCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
WExhcmdlQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBpbmxpbmUgWExh
cmdlQ2h1bms6OlhMYXJnZUNodW5rKGNvbnN0IFJhCiBpbmxpbmUgWExhcmdlQ2h1bmsqIFhMYXJn
ZUNodW5rOjpjcmVhdGUoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IHZtU2l6ZSA9IGJtYWxs
b2M6OnZtU2l6ZShzaXplb2YoWExhcmdlQ2h1bmspICsgc2l6ZSk7Ci0gICAgc3RkOjpwYWlyPHZv
aWQqLCBSYW5nZT4gcmVzdWx0ID0gdm1BbGxvY2F0ZSh2bVNpemUsIHN1cGVyQ2h1bmtTaXplLCBs
YXJnZUNodW5rT2Zmc2V0KTsKLSAgICByZXR1cm4gbmV3IChyZXN1bHQuZmlyc3QpIFhMYXJnZUNo
dW5rKHJlc3VsdC5zZWNvbmQsIHNpemUpOworICAgIGF1dG8geGxhcmdlQ2h1bmsgPSB2bUFsbG9j
YXRlKHZtU2l6ZSwgc3VwZXJDaHVua1NpemUpOworICAgIHJldHVybiBuZXcgKHhsYXJnZUNodW5r
KSBYTGFyZ2VDaHVuayhSYW5nZSh4bGFyZ2VDaHVuaywgdm1TaXplKSwgc2l6ZSk7CiB9CiAKIGlu
bGluZSB2b2lkIFhMYXJnZUNodW5rOjpkZXN0cm95KFhMYXJnZUNodW5rKiBjaHVuaykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241189</attachid>
            <date>2014-11-07 09:59:49 -0800</date>
            <delta_ts>2014-11-07 10:01:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138495-20141107095959.patch</filename>
            <type>text/plain</type>
            <size>11910</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NTc0MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE0LTExLTA2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYyB1c2VzIDhYIG1v
cmUgdmlydHVhbCBtZW1vcnkgdGhhbiBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODQ5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGlPUyBoYXMgYSBwZXItcHJvY2VzcyB2aXJ0dWFsIG1l
bW9yeSBjYXAgYXJvdW5kIDFHQiwgc28gdGhlcmUncyBzb21lCisgICAgICAgIHZhbHVlIHRvIG5v
dCBnb2luZyB0b3RhbGx5IGhhbSB3aXRoIHZpcnR1YWwgbWVtb3J5LgorCisgICAgICAgIFdlIGN1
cnJlbnRseSB1c2UgYWJvdXQgOFggdGhlIG5lY2Vzc2FyeSBhbW91bnQ6CisgICAgICAgICAgICAt
IDJYIHRvIGFsaWduIG91ciBWTSBhbGxvY2F0aW9uCisgICAgICAgICAgICAtIDRYIHRvIHJlc2Vy
dmUgc21hbGwgLyBtZWRpdW0gLyAoMikgbGFyZ2UgY2h1bmsgVk0gcmFuZ2VzIHBlciBzdXBlcmNo
dW5rCisKKyAgICAgICAgV2UgY2FuIGN1dCB0aGF0IGRvd246CisgICAgICAgICAgICAtIFJldHVy
biB0aGUgdW5hbGlnbmVkIHBvcnRpb24gb2Ygb3VyIFZNIGFsbG9jYXRpb24gKC0yWCkKKyAgICAg
ICAgICAgIC0gVXNlIGFsbCB0aGUgY2h1bmtzIGluIGEgc3VwZXJjaHVuaywgaW5zdGVhZCBvZiBh
bGxvY2F0aW5nIG9uZQorICAgICAgICAgICAgICBjaHVuayBwZXIgc3VwZXJjaHVuayAoLTRYKQor
CisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OnJvdW5k
VXBUb011bHRpcGxlT2YpOiBBZGRlZCBhIG5vbi1jb25zdGFudCB2ZXJzaW9uIG9mIHRoaXMKKyAg
ICAgICAgZnVuY3Rpb24gc28gd2UgY2FuIGNhbGwgaXQgd2l0aCBnZXRwYWdlc2l6ZSgpIGF0IHJ1
bnRpbWUuCisKKyAgICAgICAgKiBibWFsbG9jL0NodW5rLmg6CisgICAgICAgICogYm1hbGxvYy9M
YXJnZUNodW5rLmg6CisgICAgICAgIChibWFsbG9jOjpMYXJnZUNodW5rOjpjcmVhdGUpOiBEZWxl
dGVkLiBJbnN0ZWFkIG9mIGVhY2ggY2h1bmsgYWxsb2NhdGluZworICAgICAgICBpdHMgb3duIFZN
LCBWTUhlYXAgYWxsb2NhdGVzIHRoZSBzdXBlcmNodW5rIGFuZCBhbGwgdGhlIGNodW5rcyBpbiBp
dCBhdCBhIHRpbWUuCisKKyAgICAgICAgKiBibWFsbG9jL1ZNQWxsb2NhdGUuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnZtVmFsaWRhdGUpOgorICAgICAgICAoYm1hbGxvYzo6dm1BbGxvY2F0ZSk6IEFT
U0VSVCB0aGF0IG1tYXAgc3VjY2VlZHMgdG8gbWFrZSBjcmFzaGVzIGNsZWFyZXIKKyAgICAgICAg
aWYgaXQgZG9lcyBub3Qgc3VjY2VlZC4gQWxsb2NhdGUgcHJlY2lzZWx5LCBhbmQgZ2l2ZSBiYWNr
IHRoZSBleHRyYS4KKworICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OlZNSGVhcDo6YWxsb2NhdGVTdXBlckNodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OlZN
SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlZN
SGVhcDo6YWxsb2NhdGVNZWRpdW1DaHVuayk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpW
TUhlYXA6OmFsbG9jYXRlTGFyZ2VDaHVuayk6IERlbGV0ZWQuIFVzZSBhbGwgdGhlIGNodW5rcwor
ICAgICAgICBpbiBhIHN1cGVyY2h1bmssIGluc3RlYWQgb2YganVzdCBvbmUuCisKKyAgICAgICAg
KiBibWFsbG9jL1ZNSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjphbGxvY2F0ZVNt
YWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OmFsbG9jYXRlTWVkaXVtUGFnZSk6
CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OmFsbG9jYXRlTGFyZ2VSYW5nZSk6CisgICAgICAg
ICogYm1hbGxvYy9YTGFyZ2VDaHVuay5oOgorICAgICAgICAoYm1hbGxvYzo6WExhcmdlQ2h1bms6
OmNyZWF0ZSk6IFVwZGF0ZWQgdG8gbWF0Y2ggY2hhbmdlcyBhYm92ZS4KKwogMjAxNC0xMS0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEphdmFTY3JpcHRD
b3JlIGlzIG1pc3NpbmcgZGVidWcgaW5mbyBmb3IgYm1hbGxvYyBiZWNhdXNlIGxpYmJtYWxsb2Mu
YSBpcyBzdHJpcHBlZApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCShyZXZpc2lv
biAxNzU3MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxMCArNjIsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNv
bnN0ZXhwciBibwogICAgIHJldHVybiAhIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFs
dWUpICYgbWFzayk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIHJvdW5kVXBU
b011bHRpcGxlT2Yoc2l6ZV90IGRpdmlzb3IsIFQgeCkKK3sKKyAgICBCQVNTRVJUKGRpdmlzb3Ig
JiYgIShkaXZpc29yICYgKGRpdmlzb3IgLSAxKSkpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oeCkgKyAoZGl2aXNvciAtIDF1bCkp
ICYgfihkaXZpc29yIC0gMXVsKSk7Cit9CisKIHRlbXBsYXRlPHNpemVfdCBkaXZpc29yLCB0eXBl
bmFtZSBUPiBpbmxpbmUgY29uc3RleHByIFQgcm91bmRVcFRvTXVsdGlwbGVPZihUIHgpCiB7CiAg
ICAgc3RhdGljX2Fzc2VydChkaXZpc29yICYmICEoZGl2aXNvciAmIChkaXZpc29yIC0gMSkpLCAi
J2Rpdmlzb3InIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VD4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih4KSArIChkaXZpc29yIC0g
MXVsKSkgJiB+KGRpdmlzb3IgLSAxdWwpKTsKKyAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVP
ZihkaXZpc29yLCB4KTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGRpdmlzb3IsIHR5cGVuYW1lIFQ+
IGlubGluZSBjb25zdGV4cHIgVCByb3VuZERvd25Ub011bHRpcGxlT2YoVCB4KQpJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9DaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvQ2h1bmsuaAkocmV2aXNpb24gMTc1NzA0KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9DaHVuay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rT2Zmc2V0ID0gVHJhaXRzOjpjaHVua09mZnNldDsK
ICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IGNodW5rTWFzayA9IFRyYWl0czo6Y2h1bmtNYXNr
OwogCi0gICAgc3RhdGljIENodW5rKiBjcmVhdGUoKTsKICAgICBzdGF0aWMgQ2h1bmsqIGdldCh2
b2lkKik7CiAKICAgICBQYWdlKiBiZWdpbigpIHsgcmV0dXJuIFBhZ2U6OmdldChMaW5lOjpnZXQo
bV9tZW1vcnkpKTsgfQpAQCAtNjcsMTQgKzY2LDYgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIFRyYWl0cz4KLWlubGluZSBhdXRvIENodW5rPFRyYWl0cz46OmNyZWF0ZSgpIC0+IENo
dW5rKgotewotICAgIHNpemVfdCB2bVNpemUgPSBibWFsbG9jOjp2bVNpemUoY2h1bmtTaXplKTsK
LSAgICBzdGQ6OnBhaXI8dm9pZCosIFJhbmdlPiByZXN1bHQgPSB2bUFsbG9jYXRlKHZtU2l6ZSwg
c3VwZXJDaHVua1NpemUsIGNodW5rT2Zmc2V0KTsKLSAgICByZXR1cm4gbmV3IChyZXN1bHQuZmly
c3QpIENodW5rOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+CiBpbmxpbmUgYXV0byBDaHVu
azxUcmFpdHM+OjpnZXQodm9pZCogb2JqZWN0KSAtPiBDaHVuayoKIHsKICAgICBCQVNTRVJUKGlz
U21hbGxPck1lZGl1bShvYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFy
Z2VDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGFyZ2VDaHVu
ay5oCShyZXZpc2lvbiAxNzU3MDQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlQ2h1
bmsuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDYgQEAgcHJpdmF0ZToKICAgICBhbGln
bmFzKHZtUGFnZVNpemUpIGNoYXIgbV9tZW1vcnlbXTsKIH07CiAKLWlubGluZSBMYXJnZUNodW5r
KiBMYXJnZUNodW5rOjpjcmVhdGUoKQotewotICAgIHNpemVfdCB2bVNpemUgPSBibWFsbG9jOjp2
bVNpemUobGFyZ2VDaHVua1NpemUpOwotICAgIHN0ZDo6cGFpcjx2b2lkKiwgUmFuZ2U+IHJlc3Vs
dCA9IHZtQWxsb2NhdGUodm1TaXplLCBzdXBlckNodW5rU2l6ZSwgbGFyZ2VDaHVua09mZnNldCk7
Ci0gICAgcmV0dXJuIG5ldyAocmVzdWx0LmZpcnN0KSBMYXJnZUNodW5rOwotfQotCiBpbmxpbmUg
TGFyZ2VDaHVuayogTGFyZ2VDaHVuazo6Z2V0KHZvaWQqIG9iamVjdCkKIHsKICAgICBCQVNTRVJU
KCFpc1NtYWxsT3JNZWRpdW0ob2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1ZNQWxsb2NhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNQWxs
b2NhdGUuaAkocmV2aXNpb24gMTc1NzA0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUFs
bG9jYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDIwICs0MywyNCBAQCBpbmxpbmUgc2l6ZV90
IHZtU2l6ZShzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjx2
bVBhZ2VTaXplPihzaXplKTsKIH0KLSAgICAKKwogaW5saW5lIHZvaWQgdm1WYWxpZGF0ZShzaXpl
X3Qgdm1TaXplKQogeworICAgIC8vIFdlIHVzZSBnZXRwYWdlc2l6ZSgpIGhlcmUgaW5zdGVhZCBv
ZiB2bVBhZ2VTaXplIGJlY2F1c2Ugdm1QYWdlU2l6ZSBpcworICAgIC8vIGFsbG93ZWQgdG8gYmUg
bGFyZ2VyIHRoYW4gdGhlIE9TJ3MgdHJ1ZSBwYWdlIHNpemUuCisKICAgICBVTlVTRUQodm1TaXpl
KTsKICAgICBCQVNTRVJUKHZtU2l6ZSk7Ci0gICAgQkFTU0VSVCh2bVNpemUgPT0gYm1hbGxvYzo6
dm1TaXplKHZtU2l6ZSkpOworICAgIEJBU1NFUlQodm1TaXplID09IHJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhdGljX2Nhc3Q8c2l6ZV90PihnZXRwYWdlc2l6ZSgpKSwgdm1TaXplKSk7CiB9CiAKIGlu
bGluZSB2b2lkIHZtVmFsaWRhdGUodm9pZCogcCwgc2l6ZV90IHZtU2l6ZSkKIHsKLSAgICB2bVZh
bGlkYXRlKHZtU2l6ZSk7Ci0gICAgCiAgICAgLy8gV2UgdXNlIGdldHBhZ2VzaXplKCkgaGVyZSBp
bnN0ZWFkIG9mIHZtUGFnZVNpemUgYmVjYXVzZSB2bVBhZ2VTaXplIGlzCiAgICAgLy8gYWxsb3dl
ZCB0byBiZSBsYXJnZXIgdGhhbiB0aGUgT1MncyB0cnVlIHBhZ2Ugc2l6ZS4KKworICAgIHZtVmFs
aWRhdGUodm1TaXplKTsKKyAgICAKICAgICBVTlVTRUQocCk7CiAgICAgQkFTU0VSVChwKTsKICAg
ICBCQVNTRVJUKHAgPT0gbWFzayhwLCB+KGdldHBhZ2VzaXplKCkgLSAxKSkpOwpAQCAtNjUsNyAr
NjksOSBAQCBpbmxpbmUgdm9pZCB2bVZhbGlkYXRlKHZvaWQqIHAsIHNpemVfdCB2CiBpbmxpbmUg
dm9pZCogdm1BbGxvY2F0ZShzaXplX3Qgdm1TaXplKQogewogICAgIHZtVmFsaWRhdGUodm1TaXpl
KTsKLSAgICByZXR1cm4gbW1hcCgwLCB2bVNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIEJNQUxMT0NfVk1fVEFHLCAwKTsKKyAgICB2b2lkKiByZXN1
bHQgPSBtbWFwKDAsIHZtU2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiwgQk1BTExPQ19WTV9UQUcsIDApOworICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1
bHQgIT0gTUFQX0ZBSUxFRCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHZvaWQg
dm1EZWFsbG9jYXRlKHZvaWQqIHAsIHNpemVfdCB2bVNpemUpCkBAIC03NCwzMCArODAsMjggQEAg
aW5saW5lIHZvaWQgdm1EZWFsbG9jYXRlKHZvaWQqIHAsIHNpemVfdAogICAgIG11bm1hcChwLCB2
bVNpemUpOwogfQogCi0vLyBBbGxvY2F0ZXMgdm1TaXplIGJ5dGVzIGF0IGEgc3BlY2lmaWVkIG9m
ZnNldCBmcm9tIGEgcG93ZXItb2YtdHdvIGFsaWdubWVudC4KLS8vIFVzZSB0aGlzIGZ1bmN0aW9u
IHRvIGNyZWF0ZSBwb2ludGVyIG1hc2tzIHRoYXQgYXJlbid0IHNpbXBsZSBwb3dlcnMgb2YgdHdv
LgorLy8gQWxsb2NhdGVzIHZtU2l6ZSBieXRlcyBhdCBhIHNwZWNpZmllZCBwb3dlci1vZi10d28g
YWxpZ25tZW50LgorLy8gVXNlIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIG1hc2thYmxlIG1lbW9y
eSByZWdpb25zLgogCi1pbmxpbmUgc3RkOjpwYWlyPHZvaWQqLCBSYW5nZT4gdm1BbGxvY2F0ZShz
aXplX3Qgdm1TaXplLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgb2Zmc2V0KQoraW5saW5lIHZv
aWQqIHZtQWxsb2NhdGUoc2l6ZV90IHZtU2l6ZSwgc2l6ZV90IHZtQWxpZ25tZW50KQogewogICAg
IHZtVmFsaWRhdGUodm1TaXplKTsKLSAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQp
KTsKKyAgICB2bVZhbGlkYXRlKHZtQWxpZ25tZW50KTsKIAotICAgIHNpemVfdCBtYXBwZWRTaXpl
ID0gc3RkOjptYXgodm1TaXplLCBhbGlnbm1lbnQpICsgYWxpZ25tZW50OworICAgIHNpemVfdCBt
YXBwZWRTaXplID0gc3RkOjptYXgodm1TaXplLCB2bUFsaWdubWVudCkgKyB2bUFsaWdubWVudDsK
ICAgICBjaGFyKiBtYXBwZWQgPSBzdGF0aWNfY2FzdDxjaGFyKj4odm1BbGxvY2F0ZShtYXBwZWRT
aXplKSk7CisgICAgY2hhciogbWFwcGVkRW5kID0gbWFwcGVkICsgbWFwcGVkU2l6ZTsKKworICAg
IGNoYXIqIGFsaWduZWQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKHZtQWxpZ25tZW50LCBtYXBwZWQp
OworICAgIGNoYXIqIGFsaWduZWRFbmQgPSBhbGlnbmVkICsgdm1TaXplOworICAgIAorICAgIGlm
IChzaXplX3QgbGVmdEV4dHJhID0gYWxpZ25lZCAtIG1hcHBlZCkKKyAgICAgICAgdm1EZWFsbG9j
YXRlKG1hcHBlZCwgbGVmdEV4dHJhKTsKICAgICAKLSAgICB1aW50cHRyX3QgYWxpZ25tZW50TWFz
ayA9IGFsaWdubWVudCAtIDE7Ci0gICAgaWYgKCF0ZXN0KG1hcHBlZCwgYWxpZ25tZW50TWFzaykg
JiYgb2Zmc2V0ICsgdm1TaXplIDw9IGFsaWdubWVudCkgewotICAgICAgICAvLyBXZSBnb3QgdHdv
IHBlcmZlY3RseSBhbGlnbmVkIHJlZ2lvbnMuIEdpdmUgb25lIGJhY2sgdG8gYXZvaWQgd2FzdGlu
ZwotICAgICAgICAvLyBWTSB1bm5lY2Vzc2FyaWx5LiBUaGlzIGlzbid0IGNvc3RseSBiZWNhdXNl
IHdlIGFyZW4ndCBtYWtpbmcgaG9sZXMuCi0gICAgICAgIHZtRGVhbGxvY2F0ZShtYXBwZWQgKyBh
bGlnbm1lbnQsIGFsaWdubWVudCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYXBw
ZWQgKyBvZmZzZXQsIFJhbmdlKG1hcHBlZCwgYWxpZ25tZW50KSk7Ci0gICAgfQotCi0gICAgLy8g
V2UgZ290IGFuIHVuYWxpZ25lZCByZWdpb24uIEtlZXAgdGhlIHdob2xlIHRoaW5nIHRvIGF2b2lk
IGNyZWF0aW5nIGhvbGVzLAotICAgIC8vIGFuZCBob3BlZnVsbHkgcmVhbGlnbiB0aGUgVk0gYWxs
b2NhdG9yIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMuIE9uIERhcndpbiwKLSAgICAvLyBWTSBob2xl
cyB0cmlnZ2VyIE8oTl4yKSBiZWhhdmlvciBpbiBtbWFwLCBzbyB3ZSB3YW50IHRvIG1pbmltaXpl
IHRoZW0uCi0gICAgY2hhciogbWFwcGVkQWxpZ25lZCA9IG1hc2sobWFwcGVkLCB+YWxpZ25tZW50
TWFzaykgKyBhbGlnbm1lbnQ7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1hcHBlZEFsaWdu
ZWQgKyBvZmZzZXQsIFJhbmdlKG1hcHBlZCwgbWFwcGVkU2l6ZSkpOworICAgIGlmIChzaXplX3Qg
cmlnaHRFeHRyYSA9IG1hcHBlZEVuZCAtIGFsaWduZWRFbmQpCisgICAgICAgIHZtRGVhbGxvY2F0
ZShhbGlnbmVkRW5kLCByaWdodEV4dHJhKTsKKworICAgIHJldHVybiBhbGlnbmVkOwogfQogCiBp
bmxpbmUgdm9pZCB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHZvaWQqIHAsIHNpemVfdCB2bVNp
emUpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCShyZXZpc2lvbiAxNzU3MDQpCisr
KyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDI0ICszNiwyMCBAQCBWTUhlYXA6OlZNSGVhcCgpCiB7CiB9CiAKLXZvaWQgVk1IZWFwOjphbGxv
Y2F0ZVNtYWxsQ2h1bmsoKQordm9pZCBWTUhlYXA6OmFsbG9jYXRlU3VwZXJDaHVuaygpCiB7Ci0g
ICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpjcmVhdGUoKTsKLSAgICBmb3IgKGF1
dG8qIGl0ID0gY2h1bmstPmJlZ2luKCk7IGl0ICE9IGNodW5rLT5lbmQoKTsgKytpdCkKKyAgICBj
aGFyKiBzdXBlckNodW5rID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHZtQWxsb2NhdGUoc3VwZXJDaHVu
a1NpemUsIHN1cGVyQ2h1bmtTaXplKSk7CisKKyAgICBTbWFsbENodW5rKiBzbWFsbENodW5rID0g
bmV3IChzdXBlckNodW5rICsgc21hbGxDaHVua09mZnNldCkgU21hbGxDaHVuazsKKyAgICBmb3Ig
KGF1dG8qIGl0ID0gc21hbGxDaHVuay0+YmVnaW4oKTsgaXQgIT0gc21hbGxDaHVuay0+ZW5kKCk7
ICsraXQpCiAgICAgICAgIG1fc21hbGxQYWdlcy5wdXNoKGl0KTsKLX0KIAotdm9pZCBWTUhlYXA6
OmFsbG9jYXRlTWVkaXVtQ2h1bmsoKQotewotICAgIE1lZGl1bUNodW5rKiBjaHVuayA9IE1lZGl1
bUNodW5rOjpjcmVhdGUoKTsKLSAgICBmb3IgKGF1dG8qIGl0ID0gY2h1bmstPmJlZ2luKCk7IGl0
ICE9IGNodW5rLT5lbmQoKTsgKytpdCkKKyAgICBNZWRpdW1DaHVuayogbWVkaXVtQ2h1bmsgPSBu
ZXcgKHN1cGVyQ2h1bmsgKyBtZWRpdW1DaHVua09mZnNldCkgTWVkaXVtQ2h1bms7CisgICAgZm9y
IChhdXRvKiBpdCA9IG1lZGl1bUNodW5rLT5iZWdpbigpOyBpdCAhPSBtZWRpdW1DaHVuay0+ZW5k
KCk7ICsraXQpCiAgICAgICAgIG1fbWVkaXVtUGFnZXMucHVzaChpdCk7Ci19CiAKLVJhbmdlIFZN
SGVhcDo6YWxsb2NhdGVMYXJnZUNodW5rKCkKLXsKLSAgICBMYXJnZUNodW5rKiBjaHVuayA9IExh
cmdlQ2h1bms6OmNyZWF0ZSgpOwotICAgIHJldHVybiBCb3VuZGFyeVRhZzo6aW5pdChjaHVuayk7
CisgICAgTGFyZ2VDaHVuayogbGFyZ2VDaHVuayA9IG5ldyAoc3VwZXJDaHVuayArIGxhcmdlQ2h1
bmtPZmZzZXQpIExhcmdlQ2h1bms7CisgICAgbV9sYXJnZVJhbmdlcy5pbnNlcnQoQm91bmRhcnlU
YWc6OmluaXQobGFyZ2VDaHVuaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgJKHJldmlzaW9uIDE3NTcwNCkKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVk1IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0
aWNNdXRleD4mLCBSYW5nZSk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhbGxvY2F0ZVNtYWxsQ2h1
bmsoKTsKLSAgICB2b2lkIGFsbG9jYXRlTWVkaXVtQ2h1bmsoKTsKLSAgICBSYW5nZSBhbGxvY2F0
ZUxhcmdlQ2h1bmsoKTsKKyAgICB2b2lkIGFsbG9jYXRlU3VwZXJDaHVuaygpOwogCiAgICAgVmVj
dG9yPFNtYWxsUGFnZSo+IG1fc21hbGxQYWdlczsKICAgICBWZWN0b3I8TWVkaXVtUGFnZSo+IG1f
bWVkaXVtUGFnZXM7CkBAIC02Niw3ICs2NCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgU21hbGxQYWdl
KiBWTUhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKCkKIHsKICAgICBpZiAoIW1fc21hbGxQYWdlcy5z
aXplKCkpCi0gICAgICAgIGFsbG9jYXRlU21hbGxDaHVuaygpOworICAgICAgICBhbGxvY2F0ZVN1
cGVyQ2h1bmsoKTsKIAogICAgIHJldHVybiBtX3NtYWxsUGFnZXMucG9wKCk7CiB9CkBAIC03NCw3
ICs3Miw3IEBAIGlubGluZSBTbWFsbFBhZ2UqIFZNSGVhcDo6YWxsb2NhdGVTbWFsbFAKIGlubGlu
ZSBNZWRpdW1QYWdlKiBWTUhlYXA6OmFsbG9jYXRlTWVkaXVtUGFnZSgpCiB7CiAgICAgaWYgKCFt
X21lZGl1bVBhZ2VzLnNpemUoKSkKLSAgICAgICAgYWxsb2NhdGVNZWRpdW1DaHVuaygpOworICAg
ICAgICBhbGxvY2F0ZVN1cGVyQ2h1bmsoKTsKIAogICAgIHJldHVybiBtX21lZGl1bVBhZ2VzLnBv
cCgpOwogfQpAQCAtODIsOCArODAsMTEgQEAgaW5saW5lIE1lZGl1bVBhZ2UqIFZNSGVhcDo6YWxs
b2NhdGVNZWRpdQogaW5saW5lIFJhbmdlIFZNSGVhcDo6YWxsb2NhdGVMYXJnZVJhbmdlKHNpemVf
dCBzaXplKQogewogICAgIFJhbmdlIHJhbmdlID0gbV9sYXJnZVJhbmdlcy50YWtlKHNpemUpOwot
ICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJhbmdlID0gYWxsb2NhdGVMYXJnZUNodW5rKCk7Cisg
ICAgaWYgKCFyYW5nZSkgeworICAgICAgICBhbGxvY2F0ZVN1cGVyQ2h1bmsoKTsKKyAgICAgICAg
cmFuZ2UgPSBtX2xhcmdlUmFuZ2VzLnRha2Uoc2l6ZSk7CisgICAgICAgIEJBU1NFUlQocmFuZ2Up
OworICAgIH0KICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvWExhcmdlQ2h1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1hMYXJnZUNodW5rLmgJKHJldmlzaW9uIDE3NTcwNCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvWExhcmdlQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBpbmxpbmUg
WExhcmdlQ2h1bms6OlhMYXJnZUNodW5rKGNvbnN0IFJhCiBpbmxpbmUgWExhcmdlQ2h1bmsqIFhM
YXJnZUNodW5rOjpjcmVhdGUoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IHZtU2l6ZSA9IGJt
YWxsb2M6OnZtU2l6ZShzaXplb2YoWExhcmdlQ2h1bmspICsgc2l6ZSk7Ci0gICAgc3RkOjpwYWly
PHZvaWQqLCBSYW5nZT4gcmVzdWx0ID0gdm1BbGxvY2F0ZSh2bVNpemUsIHN1cGVyQ2h1bmtTaXpl
LCBsYXJnZUNodW5rT2Zmc2V0KTsKLSAgICByZXR1cm4gbmV3IChyZXN1bHQuZmlyc3QpIFhMYXJn
ZUNodW5rKHJlc3VsdC5zZWNvbmQsIHNpemUpOworICAgIGF1dG8geGxhcmdlQ2h1bmsgPSB2bUFs
bG9jYXRlKHZtU2l6ZSwgc3VwZXJDaHVua1NpemUpOworICAgIHJldHVybiBuZXcgKHhsYXJnZUNo
dW5rKSBYTGFyZ2VDaHVuayhSYW5nZSh4bGFyZ2VDaHVuaywgdm1TaXplKSwgc2l6ZSk7CiB9CiAK
IGlubGluZSB2b2lkIFhMYXJnZUNodW5rOjpkZXN0cm95KFhMYXJnZUNodW5rKiBjaHVuaykK
</data>
<flag name="review"
          id="266014"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>