<?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>155898</bug_id>
          
          <creation_ts>2016-03-25 12:52:07 -0700</creation_ts>
          <short_desc>bmalloc: support physical page sizes that don&apos;t match the virtual page size</short_desc>
          <delta_ts>2016-03-25 16:45:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>barraclough</cc>
    
    <cc>kling</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178060</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 12:52:07 -0700</bug_when>
    <thetext>bmalloc: support physical page sizes that don&apos;t match the virtual page size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178066</commentid>
    <comment_count>1</comment_count>
      <attachid>274931</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 13:00:51 -0700</bug_when>
    <thetext>Created attachment 274931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178068</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 13:02:30 -0700</bug_when>
    <thetext>*** Tested on a 4kB/4kB Mac ***

** Memory: **

~/OpenSource/PerformanceTests/MallocBench&gt; ./run-malloc-benchmarks --memory_warning Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                     
                                                                Baseline                               Patch                                   Δ
Peak Memory:
    reddit_memory_warning --runs 0                              13,152kB                            13,152kB                                    
    flickr_memory_warning --runs 0                              23,940kB                            23,896kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            25,488kB                            25,516kB                       ! 1.0x bigger

    &lt;geometric mean&gt;                                            20,021kB                            20,016kB                      ^ 1.0x smaller
    &lt;arithmetic mean&gt;                                           20,860kB                            20,855kB                      ^ 1.0x smaller
    &lt;harmonic mean&gt;                                             19,103kB                            19,099kB                      ^ 1.0x smaller

Memory at End:
    reddit_memory_warning --runs 0                               8,708kB                             8,708kB                                    
    flickr_memory_warning --runs 0                              11,952kB                            11,908kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            20,644kB                            20,672kB                       ! 1.0x bigger

    &lt;geometric mean&gt;                                            12,904kB                            12,894kB                      ^ 1.0x smaller
    &lt;arithmetic mean&gt;                                           13,768kB                            13,763kB                      ^ 1.0x smaller
    &lt;harmonic mean&gt;                                             12,148kB                            12,136kB                      ^ 1.0x smaller

~/OpenSource/PerformanceTests/MallocBench&gt; ./run-malloc-benchmarks --memory Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                  Baseline                Patch                    Δ
Peak Memory:
    facebook                      73,972kB             73,972kB                     
    reddit                        13,244kB             13,256kB        ! 1.0x bigger
    flickr                        23,496kB             23,432kB       ^ 1.0x smaller
    theverge                      25,516kB             25,520kB        ! 1.0x bigger

    &lt;geometric mean&gt;              27,684kB             27,672kB       ^ 1.0x smaller
    &lt;arithmetic mean&gt;             34,057kB             34,045kB       ^ 1.0x smaller
    &lt;harmonic mean&gt;               23,422kB             23,417kB       ^ 1.0x smaller

Memory at End:
    facebook                       3,300kB              3,300kB                     
    reddit                         1,788kB              1,800kB       ! 1.01x bigger
    flickr                         2,872kB              2,812kB      ^ 1.02x smaller
    theverge                       2,868kB              2,872kB        ! 1.0x bigger

    &lt;geometric mean&gt;               2,640kB              2,632kB       ^ 1.0x smaller
    &lt;arithmetic mean&gt;              2,707kB              2,696kB       ^ 1.0x smaller
    &lt;harmonic mean&gt;                2,565kB              2,560kB       ^ 1.0x smaller

** Throughput: **

~/OpenSource/PerformanceTests/MallocBench&gt; ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                                      Baseline                          Patch                              Δ
Execution Time:
    churn                                                 78ms                           74ms                 ^ 1.05x faster
    list_allocate                                         73ms                           71ms                 ^ 1.03x faster
    tree_allocate                                         78ms                           72ms                 ^ 1.08x faster
    tree_churn                                            81ms                           80ms                 ^ 1.01x faster
    fragment                                              68ms                           66ms                 ^ 1.03x faster
    fragment_iterate                                      76ms                           75ms                 ^ 1.01x faster
    medium                                               183ms                          174ms                 ^ 1.05x faster
    big                                                  138ms                          140ms                 ! 1.01x slower
    facebook                                             234ms                          231ms                 ^ 1.01x faster
    reddit                                               113ms                          115ms                 ! 1.02x slower
    flickr                                               117ms                          117ms                               
    theverge                                             145ms                          147ms                 ! 1.01x slower
    nimlang                                              123ms                          125ms                 ! 1.02x slower
    message_one                                          208ms                          209ms                  ! 1.0x slower
    message_many                                         113ms                          113ms                               
    churn --parallel                                      37ms                           38ms                 ! 1.03x slower
    list_allocate --parallel                              61ms                           63ms                 ! 1.03x slower
    tree_allocate --parallel                              75ms                           78ms                 ! 1.04x slower
    tree_churn --parallel                                 83ms                           86ms                 ! 1.04x slower
    fragment --parallel                                   47ms                           47ms                               
    fragment_iterate --parallel                           31ms                           31ms                               
    medium --parallel                                    176ms                          181ms                 ! 1.03x slower
    big --parallel                                       131ms                          132ms                 ! 1.01x slower

    &lt;geometric mean&gt;                                      95ms                           95ms                  ^ 1.0x faster
    &lt;arithmetic mean&gt;                                    107ms                          107ms                  ^ 1.0x faster
    &lt;harmonic mean&gt;                                       83ms                           83ms                  ^ 1.0x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178157</commentid>
    <comment_count>3</comment_count>
      <attachid>274931</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-25 16:01:55 -0700</bug_when>
    <thetext>Comment on attachment 274931
Patch

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

&gt; Source/bmalloc/bmalloc/Sizes.h:49
&gt; +    static const size_t smallPageSize = 4 * kB;

Maybe we should take the term &apos;PageSize&apos; out of this variable name at some point. Having a define for 4KB that is not actually correlated to machine page size might lead to confusion &amp; error in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178172</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 16:45:59 -0700</bug_when>
    <thetext>Committed r198702: &lt;http://trac.webkit.org/changeset/198702&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274931</attachid>
            <date>2016-03-25 13:00:51 -0700</date>
            <delta_ts>2016-03-25 16:01:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155898-20160325130053.patch</filename>
            <type>text/plain</type>
            <size>14028</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE2LTAzLTI1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogc3VwcG9ydCBw
aHlzaWNhbCBwYWdlIHNpemVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHZpcnR1YWwgcGFnZSBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgbWVtb3J5IHNhdmluZ3Mgb24gaU9TIGRldmljZXMgd2hlcmUgdGhlIHZpcnR1YWwgcGFnZSBz
aXplCisgICAgICAgIGlzIDE2a0IgYnV0IHRoZSBwaHlzaWNhbCBwYWdlIHNpemUgaXMgNGtCLgor
CisgICAgICAgICogYm1hbGxvYy9DaHVuay5oOgorICAgICAgICAoYm1hbGxvYzo6Q2h1bms6OkNo
dW5rKTogc21hbGxQYWdlU2l6ZSBpcyBub3cgdW5yZWxhdGVkIHRvIHRoZSBPUydzCisgICAgICAg
IHBhZ2Ugc2l6ZSAtLSBpdCBqdXN0IHJlZmxlY3RzIHRoZSBvcHRpbWFsIHVuaXQgb2YgbWVtb3J5
IHRvIHJlY3ljbGUKKyAgICAgICAgYmV0d2VlbiBzbWFsbCBvYmplY3RzLgorCisgICAgICAgIFdl
IG9ubHkgbmVlZCB0byByb3VuZCB1cCB0byBsYXJnZUFsaWdubWVudCBiZWNhdXNlIHNtYWxsIG9i
amVjdHMgYWxsb2NhdGUKKyAgICAgICAgYXMgc3Vic2V0cyBvZiBsYXJnZSBvYmplY3RzIG5vdy4K
KworICAgICAgICAoYm1hbGxvYzo6Q2h1bms6OnBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6T2Jq
ZWN0OjpwYWdlQmVnaW4pOgorICAgICAgICAoYm1hbGxvYzo6T2JqZWN0OjpsaW5lKTogQWRvcHQg
c21hbGxQYWdlU2l6ZS4KKworICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjppbml0aWFsaXplTGluZU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxsb2M6
OkhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9j
YXRlTGFyZ2UpOiBBZG9wdCBzbWFsbFBhZ2VTaXplLgorCisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpzcGxpdEFuZEFsbG9jYXRlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnRyeUFsbG9jYXRl
WExhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNocmlua1hMYXJnZSk6IEFkb3B0IHZt
UGFnZVNpemVQaHlzaWNhbCgpLiBXZSB3YW50IHRoZQorICAgICAgICBwaHlzaWNhbCBwYWdlIHNp
emUgYmVjYXVzZSB0aGF0J3MgdGhlIHVuaXQgYXQgd2hpY2ggdGhlIGhhcmR3YXJlIE1NVQorICAg
ICAgICB3aWxsIHJlY3ljbGUgbWVtb3J5LgorCisgICAgICAgICogYm1hbGxvYy9TaXplcy5oOiBB
ZG9wdCBzbWFsbFBhZ2VTaXplLgorCisgICAgICAgICogYm1hbGxvYy9WTUFsbG9jYXRlLmg6Cisg
ICAgICAgIChibWFsbG9jOjp2bVBhZ2VTaXplUGh5c2ljYWwpOgorICAgICAgICAoYm1hbGxvYzo6
dm1QYWdlU2l6ZSk6IERpc3Rpbmd1aXNoIGJldHdlZW4gcGFnZSBzaXplLCB3aGljaCBpcyB0aGUg
dmlydHVhbAorICAgICAgICBtZW1vcnkgcGFnZSBzaXplIGFkdmVydGlzZWQgYnkgdGhlIE9TLCBh
bmQgcGh5c2ljYWwgcGFnZSBzaXplLCB3aGljaCB0aGUKKyAgICAgICAgdHJ1ZSBoYXJkd2FyZSBw
YWdlIHNpemUuCisKKyAgICAgICAgKGJtYWxsb2M6OnZtU2l6ZSk6CisgICAgICAgIChibWFsbG9j
Ojp2bVZhbGlkYXRlKToKKyAgICAgICAgKGJtYWxsb2M6OnZtVmFsaWRhdGVQaHlzaWNhbCk6Cisg
ICAgICAgIChibWFsbG9jOjp0cnlWTUFsbG9jYXRlKToKKyAgICAgICAgKGJtYWxsb2M6OnZtRGVh
bGxvY2F0ZVBoeXNpY2FsUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6dm1BbGxvY2F0ZVBoeXNp
Y2FsUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6dm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlc1Ns
b3BweSk6CisgICAgICAgIChibWFsbG9jOjp2bUFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweSk6
IEFkb3B0IHZtUGFnZVNpemUoKSBhbmQKKyAgICAgICAgdm1QYWdlU2l6ZVBoeWlzY2FsKCkuCisK
KyAgICAgICAgKiBibWFsbG9jL1ZlY3Rvci5oOgorICAgICAgICAoYm1hbGxvYzo6VmVjdG9yOjpp
bml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoYm1hbGxvYzo6VmVjdG9yPFQ+OjpzaHJpbmspOgor
ICAgICAgICAoYm1hbGxvYzo6VmVjdG9yPFQ+OjpzaHJpbmtDYXBhY2l0eSk6CisgICAgICAgIChi
bWFsbG9jOjpWZWN0b3I8VD46Omdyb3dDYXBhY2l0eSk6IEFkb3B0IHZtUGFnZVNpemUoKS4gV2Un
ZCBwcmVmZXIgdG8KKyAgICAgICAgdXNlIHZtUGFnZVNpemVQaHlzaWNhbCgpIGJ1dCBtbWFwKCkg
ZG9lc24ndCBzdXBwb3J0IGl0LgorCisgICAgICAgICogYm1hbGxvYy9YTGFyZ2VNYXAuY3BwOiAj
aW5jbHVkZS4KKwogMjAxNi0wMy0yNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIGJtYWxsb2M6IHN0cmVzc19hbGlnbmVkIGZhaWxzIHdoZW4gYWxsb2NhdGlu
ZyBhIHplcm8tc2l6ZWQgb2JqZWN0IHdpdGggWExhcmdlIGFsaWdubWVudApJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9DaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQ2h1bmsuaAkocmV2aXNpb24gMTk4Njc5KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9DaHVuay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNCArODEsMTQgQEAgcHJpdmF0ZToKICAg
ICAvLyBXZSB1c2UgdGhlIFgncyBmb3IgYm91bmRhcnkgdGFncyBhbmQgdGhlIE8ncyBmb3IgZWRn
ZSBzZW50aW5lbHMuCiAKICAgICBzdGQ6OmFycmF5PFNtYWxsTGluZSwgY2h1bmtTaXplIC8gc21h
bGxMaW5lU2l6ZT4gbV9saW5lczsKLSAgICBzdGQ6OmFycmF5PFNtYWxsUGFnZSwgY2h1bmtTaXpl
IC8gdm1QYWdlU2l6ZT4gbV9wYWdlczsKKyAgICBzdGQ6OmFycmF5PFNtYWxsUGFnZSwgY2h1bmtT
aXplIC8gc21hbGxQYWdlU2l6ZT4gbV9wYWdlczsKICAgICBzdGQ6OmFycmF5PEJvdW5kYXJ5VGFn
LCBib3VuZGFyeVRhZ0NvdW50PiBtX2JvdW5kYXJ5VGFnczsKLSAgICBjaGFyIG1fbWVtb3J5W10g
X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyICogc21hbGxNYXggKyAwKSkpOworICAgIGNoYXIgbV9t
ZW1vcnlbXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKGxhcmdlQWxpZ25tZW50ICsgMCkpKTsKIH07
CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENodW5rKSArIGxhcmdlTWF4IDw9IGNodW5rU2l6ZSwg
ImxhcmdlTWF4IGlzIHRvbyBiaWciKTsKIHN0YXRpY19hc3NlcnQoCi0gICAgc2l6ZW9mKENodW5r
KSAlIHZtUGFnZVNpemUgKyAyICogc21hbGxNYXggPD0gdm1QYWdlU2l6ZSwKKyAgICBzaXplb2Yo
Q2h1bmspICUgc21hbGxQYWdlU2l6ZSArIDIgKiBzbWFsbE1heCA8PSBzbWFsbFBhZ2VTaXplLAog
ICAgICJ0aGUgZmlyc3QgcGFnZSBvZiBvYmplY3QgbWVtb3J5IGluIGEgc21hbGwgY2h1bmsgbXVz
dCBiZSBhYmxlIHRvIGFsbG9jYXRlIHNtYWxsTWF4Iik7CiAKIGlubGluZSBDaHVuazo6Q2h1bmso
c3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKQEAgLTE2NSw3ICsxNjUsNyBAQCBp
bmxpbmUgdm9pZCogQ2h1bms6Om9iamVjdChzaXplX3Qgb2Zmc2V0CiAKIGlubGluZSBTbWFsbFBh
Z2UqIENodW5rOjpwYWdlKHNpemVfdCBvZmZzZXQpCiB7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIg
PSBvZmZzZXQgLyB2bVBhZ2VTaXplOworICAgIHNpemVfdCBwYWdlTnVtYmVyID0gb2Zmc2V0IC8g
c21hbGxQYWdlU2l6ZTsKICAgICByZXR1cm4gJm1fcGFnZXNbcGFnZU51bWJlcl07CiB9CiAKQEAg
LTIyMSw3ICsyMjEsNyBAQCBpbmxpbmUgdm9pZCogT2JqZWN0OjpiZWdpbigpCiAKIGlubGluZSB2
b2lkKiBPYmplY3Q6OnBhZ2VCZWdpbigpCiB7Ci0gICAgcmV0dXJuIG1fY2h1bmstPm9iamVjdChy
b3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSwgbV9vZmZzZXQpKTsKKyAgICByZXR1cm4g
bV9jaHVuay0+b2JqZWN0KHJvdW5kRG93blRvTXVsdGlwbGVPZihzbWFsbFBhZ2VTaXplLCBtX29m
ZnNldCkpOwogfQogCiBpbmxpbmUgU21hbGxMaW5lKiBPYmplY3Q6OmxpbmUoKQpJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXAuY3BwCShyZXZpc2lvbiAxOTg2ODApCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgSGVh
cDo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCiAKICAgICAgICAgc2l6ZV90IG9iamVjdCA9IDA7
CiAgICAgICAgIHNpemVfdCBsaW5lID0gMDsKLSAgICAgICAgd2hpbGUgKG9iamVjdCA8IHZtUGFn
ZVNpemUpIHsKKyAgICAgICAgd2hpbGUgKG9iamVjdCA8IHNtYWxsUGFnZVNpemUpIHsKICAgICAg
ICAgICAgIGxpbmUgPSBvYmplY3QgLyBzbWFsbExpbmVTaXplOwogICAgICAgICAgICAgc2l6ZV90
IGxlZnRvdmVyID0gb2JqZWN0ICUgc21hbGxMaW5lU2l6ZTsKIApAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEhlYXA6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEoKQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gRG9uJ3QgYWxsb3cgdGhlIGxhc3Qgb2JqZWN0IGluIGEgcGFnZSB0byBlc2NhcGUgdGhlIHBh
Z2UuCi0gICAgICAgIGlmIChvYmplY3QgPiB2bVBhZ2VTaXplKSB7CisgICAgICAgIGlmIChvYmpl
Y3QgPiBzbWFsbFBhZ2VTaXplKSB7CiAgICAgICAgICAgICBCQVNTRVJUKG1ldGFkYXRhW2xpbmVd
Lm9iamVjdENvdW50KTsKICAgICAgICAgICAgIC0tbWV0YWRhdGFbbGluZV0ub2JqZWN0Q291bnQ7
CiAgICAgICAgIH0KQEAgLTIwMCw4ICsyMDAsOCBAQCBTbWFsbFBhZ2UqIEhlYXA6OmFsbG9jYXRl
U21hbGxQYWdlKHN0ZDo6CiAgICAgICAgIHJldHVybiBwYWdlOwogICAgIH0KIAotICAgIHNpemVf
dCB1bmFsaWduZWRTaXplID0gbGFyZ2VNaW4gKyB2bVBhZ2VTaXplIC0gbGFyZ2VBbGlnbm1lbnQg
KyB2bVBhZ2VTaXplOwotICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gYWxsb2NhdGVMYXJn
ZShsb2NrLCB2bVBhZ2VTaXplLCB2bVBhZ2VTaXplLCB1bmFsaWduZWRTaXplKTsKKyAgICBzaXpl
X3QgdW5hbGlnbmVkU2l6ZSA9IGxhcmdlTWluICsgc21hbGxQYWdlU2l6ZSAtIGxhcmdlQWxpZ25t
ZW50ICsgc21hbGxQYWdlU2l6ZTsKKyAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IGFsbG9j
YXRlTGFyZ2UobG9jaywgc21hbGxQYWdlU2l6ZSwgc21hbGxQYWdlU2l6ZSwgdW5hbGlnbmVkU2l6
ZSk7CiAKICAgICAvLyBUcmFuc2Zvcm0gb3VyIGxhcmdlIG9iamVjdCBpbnRvIGEgc21hbGwgb2Jq
ZWN0IHBhZ2UuIFdlIGRlcmVmIGhlcmUKICAgICAvLyBiZWNhdXNlIG91ciBzbWFsbCBvYmplY3Rz
IHdpbGwga2VlcCB0aGVpciBvd24gcmVmY291bnRzIG9uIHRoZSBsaW5lLgpAQCAtMzA3LDcgKzMw
Nyw3IEBAIHZvaWQqIEhlYXA6OmFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXIKICAgICBCQVNT
RVJUKHNpemUgPj0gbGFyZ2VNaW4pOwogICAgIEJBU1NFUlQoc2l6ZSA9PSByb3VuZFVwVG9NdWx0
aXBsZU9mPGxhcmdlQWxpZ25tZW50PihzaXplKSk7CiAgICAgCi0gICAgaWYgKHNpemUgPD0gdm1Q
YWdlU2l6ZSkKKyAgICBpZiAoc2l6ZSA8PSBzbWFsbFBhZ2VTaXplKQogICAgICAgICBzY2F2ZW5n
ZVNtYWxsUGFnZXMobG9jayk7CiAKICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IG1fbGFy
Z2VPYmplY3RzLnRha2Uoc2l6ZSk7CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCogSGVhcDo6YWxs
b2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcgogICAgIEJBU1NFUlQoYWxpZ25tZW50ID49IGxhcmdl
QWxpZ25tZW50KTsKICAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpKTsKIAotICAg
IGlmIChzaXplIDw9IHZtUGFnZVNpemUpCisgICAgaWYgKHNpemUgPD0gc21hbGxQYWdlU2l6ZSkK
ICAgICAgICAgc2NhdmVuZ2VTbWFsbFBhZ2VzKGxvY2spOwogCiAgICAgTGFyZ2VPYmplY3QgbGFy
Z2VPYmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlKGFsaWdubWVudCwgc2l6ZSwgdW5hbGlnbmVk
U2l6ZSk7CkBAIC00MTIsNyArNDEyLDcgQEAgWExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShYTGFyZwogICAgIC8vIGluIHRoZSBhbGxvY2F0ZWQgbGlzdC4gVGhpcyBpcyBhbiBpbXBv
cnRhbnQgb3B0aW1pemF0aW9uIGJlY2F1c2UgaXQKICAgICAvLyBrZWVwcyB0aGUgZnJlZSBsaXN0
IHNob3J0LCBzcGVlZGluZyB1cCBhbGxvY2F0aW9uIGFuZCBtZXJnaW5nLgogCi0gICAgc3RkOjpw
YWlyPFhMYXJnZVJhbmdlLCBYTGFyZ2VSYW5nZT4gYWxsb2NhdGVkID0gcmFuZ2Uuc3BsaXQocm91
bmRVcFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzaXplKSk7CisgICAgc3RkOjpwYWlyPFhMYXJn
ZVJhbmdlLCBYTGFyZ2VSYW5nZT4gYWxsb2NhdGVkID0gcmFuZ2Uuc3BsaXQocm91bmRVcFRvTXVs
dGlwbGVPZih2bVBhZ2VTaXplUGh5c2ljYWwoKSwgc2l6ZSkpOwogICAgIGlmIChhbGxvY2F0ZWQu
Zmlyc3Qudm1TdGF0ZSgpLmhhc1ZpcnR1YWwoKSkgewogICAgICAgICB2bUFsbG9jYXRlUGh5c2lj
YWxQYWdlc1Nsb3BweShhbGxvY2F0ZWQuZmlyc3QuYmVnaW4oKSwgYWxsb2NhdGVkLmZpcnN0LnNp
emUoKSk7CiAgICAgICAgIGFsbG9jYXRlZC5maXJzdC5zZXRWTVN0YXRlKFZNU3RhdGU6OlBoeXNp
Y2FsKTsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkKiBIZWFwOjp0cnlBbGxvY2F0ZVhMYXJnZShz
dGQ6OmxvY2tfCiAKICAgICBtX2lzQWxsb2NhdGluZ1BhZ2VzID0gdHJ1ZTsKIAotICAgIHNpemUg
PSBzdGQ6Om1heCh2bVBhZ2VTaXplLCBzaXplKTsKKyAgICBzaXplID0gc3RkOjptYXgodm1QYWdl
U2l6ZVBoeXNpY2FsKCksIHNpemUpOwogICAgIGFsaWdubWVudCA9IHJvdW5kVXBUb011bHRpcGxl
T2Y8eExhcmdlQWxpZ25tZW50PihhbGlnbm1lbnQpOwogCiAgICAgWExhcmdlUmFuZ2UgcmFuZ2Ug
PSBtX3hMYXJnZU1hcC50YWtlRnJlZShhbGlnbm1lbnQsIHNpemUpOwpAQCAtNDU2LDcgKzQ1Niw3
IEBAIHZvaWQgSGVhcDo6c2hyaW5rWExhcmdlKHN0ZDo6dW5pcXVlX2xvY2sKIHsKICAgICBCQVNT
RVJUKG9iamVjdC5zaXplKCkgPiBuZXdTaXplKTsKIAotICAgIGlmIChvYmplY3Quc2l6ZSgpIC0g
bmV3U2l6ZSA8IHZtUGFnZVNpemUpCisgICAgaWYgKG9iamVjdC5zaXplKCkgLSBuZXdTaXplIDwg
dm1QYWdlU2l6ZVBoeXNpY2FsKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBYTGFyZ2VS
YW5nZSByYW5nZSA9IG1feExhcmdlTWFwLnRha2VBbGxvY2F0ZWQob2JqZWN0LmJlZ2luKCkpOwpJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAkocmV2aXNpb24gMTk4Njc5KQorKysgU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TaXplcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTAgQEAg
bmFtZXNwYWNlIFNpemVzIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudCA9IDg7
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVs
OwogCi0jaWYgQlBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHZtUGFnZVNp
emUgPSAxNiAqIGtCOwotI2Vsc2UKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHZtUGFnZVNpemUg
PSA0ICoga0I7Ci0jZW5kaWYKLSAgICAKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsUGFn
ZVNpemUgPSA0ICoga0I7CisKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTGluZVNpemUg
PSAyNTY7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbExpbmVDb3VudCA9IHZtUGFnZVNp
emUgLyBzbWFsbExpbmVTaXplOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lQ291
bnQgPSBzbWFsbFBhZ2VTaXplIC8gc21hbGxMaW5lU2l6ZTsKIAogICAgIHN0YXRpYyBjb25zdCBz
aXplX3Qgc21hbGxNYXggPSAxICoga0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXNrU2l6
ZUNsYXNzTWF4ID0gNTEyOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUFsbG9jYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUFsbG9jYXRlLmgJKHJl
dmlzaW9uIDE5ODY3OCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpZm5kZWYgVk1BbGxvY2F0ZV9oCiAj
ZGVmaW5lIFZNQWxsb2NhdGVfaAogCisjaW5jbHVkZSAiQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAi
QkFzc2VydC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCi0jaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNs
dWRlICJTeXNjYWxsLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpZiBCT1MoREFSV0lOKQorI2luY2x1ZGUgPG1h
Y2gvdm1fcGFnZV9zaXplLmg+CiAjaW5jbHVkZSA8bWFjaC92bV9zdGF0aXN0aWNzLmg+CiAjZW5k
aWYKIApAQCAtNDYsMzEgKzQ3LDU5IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICNkZWZpbmUgQk1B
TExPQ19WTV9UQUcgLTEKICNlbmRpZgogCitpbmxpbmUgc2l6ZV90IHZtUGFnZVNpemVQaHlzaWNh
bCgpCit7CisjaWYgQlBMQVRGT1JNKERBUldJTikKKyAgICByZXR1cm4gdm1fa2VybmVsX3BhZ2Vf
c2l6ZTsKKyNlbHNlCisgICAgcmV0dXJuIHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKyNlbmRpZgor
fQorCitpbmxpbmUgc2l6ZV90IHZtUGFnZVNpemUoKQoreworI2lmIEJQTEFURk9STShEQVJXSU4p
CisgICAgcmV0dXJuIHZtX3BhZ2Vfc2l6ZTsKKyNlbHNlCisgICAgcmV0dXJuIHN5c2NvbmYoX1ND
X1BBR0VTSVpFKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgc2l6ZV90IHZtU2l6ZShzaXplX3Qgc2l6
ZSkKIHsKLSAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzaXplKTsK
KyAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZih2bVBhZ2VTaXplKCksIHNpemUpOwogfQog
CiBpbmxpbmUgdm9pZCB2bVZhbGlkYXRlKHNpemVfdCB2bVNpemUpCiB7Ci0gICAgLy8gV2UgdXNl
IGdldHBhZ2VzaXplKCkgaGVyZSBpbnN0ZWFkIG9mIHZtUGFnZVNpemUgYmVjYXVzZSB2bVBhZ2VT
aXplIGlzCi0gICAgLy8gYWxsb3dlZCB0byBiZSBsYXJnZXIgdGhhbiB0aGUgT1MncyB0cnVlIHBh
Z2Ugc2l6ZS4KLQogICAgIFVOVVNFRCh2bVNpemUpOwogICAgIEJBU1NFUlQodm1TaXplKTsKLSAg
ICBCQVNTRVJUKHZtU2l6ZSA9PSByb3VuZFVwVG9NdWx0aXBsZU9mKHN0YXRpY19jYXN0PHNpemVf
dD4oZ2V0cGFnZXNpemUoKSksIHZtU2l6ZSkpOworICAgIEJBU1NFUlQodm1TaXplID09IHJvdW5k
VXBUb011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCB2bVNpemUpKTsKIH0KIAogaW5saW5lIHZvaWQg
dm1WYWxpZGF0ZSh2b2lkKiBwLCBzaXplX3Qgdm1TaXplKQogewotICAgIC8vIFdlIHVzZSBnZXRw
YWdlc2l6ZSgpIGhlcmUgaW5zdGVhZCBvZiB2bVBhZ2VTaXplIGJlY2F1c2Ugdm1QYWdlU2l6ZSBp
cwotICAgIC8vIGFsbG93ZWQgdG8gYmUgbGFyZ2VyIHRoYW4gdGhlIE9TJ3MgdHJ1ZSBwYWdlIHNp
emUuCisgICAgdm1WYWxpZGF0ZSh2bVNpemUpOworICAgIAorICAgIFVOVVNFRChwKTsKKyAgICBC
QVNTRVJUKHApOworICAgIEJBU1NFUlQocCA9PSBtYXNrKHAsIH4odm1QYWdlU2l6ZSgpIC0gMSkp
KTsKK30KKworaW5saW5lIHZvaWQgdm1WYWxpZGF0ZVBoeXNpY2FsKHNpemVfdCB2bVNpemUpCit7
CisgICAgVU5VU0VEKHZtU2l6ZSk7CisgICAgQkFTU0VSVCh2bVNpemUpOworICAgIEJBU1NFUlQo
dm1TaXplID09IHJvdW5kVXBUb011bHRpcGxlT2Yodm1QYWdlU2l6ZVBoeXNpY2FsKCksIHZtU2l6
ZSkpOworfQogCitpbmxpbmUgdm9pZCB2bVZhbGlkYXRlUGh5c2ljYWwodm9pZCogcCwgc2l6ZV90
IHZtU2l6ZSkKK3sKICAgICB2bVZhbGlkYXRlKHZtU2l6ZSk7CiAgICAgCiAgICAgVU5VU0VEKHAp
OwogICAgIEJBU1NFUlQocCk7Ci0gICAgQkFTU0VSVChwID09IG1hc2socCwgfihnZXRwYWdlc2l6
ZSgpIC0gMSkpKTsKKyAgICBCQVNTRVJUKHAgPT0gbWFzayhwLCB+KHZtUGFnZVNpemVQaHlzaWNh
bCgpIC0gMSkpKTsKIH0KIAogaW5saW5lIHZvaWQqIHRyeVZNQWxsb2NhdGUoc2l6ZV90IHZtU2l6
ZSkKQEAgLTEzNSw3ICsxNjQsNyBAQCBpbmxpbmUgdm9pZCogdm1BbGxvY2F0ZShzaXplX3Qgdm1B
bGlnbm1lCiAKIGlubGluZSB2b2lkIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXModm9pZCogcCwg
c2l6ZV90IHZtU2l6ZSkKIHsKLSAgICB2bVZhbGlkYXRlKHAsIHZtU2l6ZSk7CisgICAgdm1WYWxp
ZGF0ZVBoeXNpY2FsKHAsIHZtU2l6ZSk7CiAjaWYgQk9TKERBUldJTikKICAgICBTWVNDQUxMKG1h
ZHZpc2UocCwgdm1TaXplLCBNQURWX0ZSRUVfUkVVU0FCTEUpKTsKICNlbHNlCkBAIC0xNDUsNyAr
MTc0LDcgQEAgaW5saW5lIHZvaWQgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyh2bwogCiBpbmxp
bmUgdm9pZCB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlcyh2b2lkKiBwLCBzaXplX3Qgdm1TaXplKQog
ewotICAgIHZtVmFsaWRhdGUocCwgdm1TaXplKTsKKyAgICB2bVZhbGlkYXRlUGh5c2ljYWwocCwg
dm1TaXplKTsKICNpZiBCT1MoREFSV0lOKQogICAgIFNZU0NBTEwobWFkdmlzZShwLCB2bVNpemUs
IE1BRFZfRlJFRV9SRVVTRSkpOwogI2Vsc2UKQEAgLTE1Niw4ICsxODUsOCBAQCBpbmxpbmUgdm9p
ZCB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlcyh2b2lkCiAvLyBUcmltcyByZXF1ZXN0cyB0aGF0IGFy
ZSB1bi1wYWdlLWFsaWduZWQuCiBpbmxpbmUgdm9pZCB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2Vz
U2xvcHB5KHZvaWQqIHAsIHNpemVfdCBzaXplKQogewotICAgIGNoYXIqIGJlZ2luID0gcm91bmRV
cFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkpOwotICAgIGNo
YXIqIGVuZCA9IHJvdW5kRG93blRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzdGF0aWNfY2FzdDxj
aGFyKj4ocCkgKyBzaXplKTsKKyAgICBjaGFyKiBiZWdpbiA9IHJvdW5kVXBUb011bHRpcGxlT2Yo
dm1QYWdlU2l6ZVBoeXNpY2FsKCksIHN0YXRpY19jYXN0PGNoYXIqPihwKSk7CisgICAgY2hhciog
ZW5kID0gcm91bmREb3duVG9NdWx0aXBsZU9mKHZtUGFnZVNpemVQaHlzaWNhbCgpLCBzdGF0aWNf
Y2FzdDxjaGFyKj4ocCkgKyBzaXplKTsKIAogICAgIGlmIChiZWdpbiA+PSBlbmQpCiAgICAgICAg
IHJldHVybjsKQEAgLTE2OCw4ICsxOTcsOCBAQCBpbmxpbmUgdm9pZCB2bURlYWxsb2NhdGVQaHlz
aWNhbFBhZ2VzU2xvCiAvLyBFeHBhbmRzIHJlcXVlc3RzIHRoYXQgYXJlIHVuLXBhZ2UtYWxpZ25l
ZC4KIGlubGluZSB2b2lkIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KHZvaWQqIHAsIHNp
emVfdCBzaXplKQogewotICAgIGNoYXIqIGJlZ2luID0gcm91bmREb3duVG9NdWx0aXBsZU9mPHZt
UGFnZVNpemU+KHN0YXRpY19jYXN0PGNoYXIqPihwKSk7Ci0gICAgY2hhciogZW5kID0gcm91bmRV
cFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgKyBzaXplKTsK
KyAgICBjaGFyKiBiZWdpbiA9IHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBhZ2VTaXplUGh5c2lj
YWwoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHApKTsKKyAgICBjaGFyKiBlbmQgPSByb3VuZFVwVG9N
dWx0aXBsZU9mKHZtUGFnZVNpemVQaHlzaWNhbCgpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocCkgKyBz
aXplKTsKIAogICAgIGlmIChiZWdpbiA+PSBlbmQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9WZWN0b3IuaAkocmV2aXNpb24gMTk4Njc4KQorKysgU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9WZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgZ3Jvd0ZhY3RvciA9IDI7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzaHJpbmtGYWN0b3IgPSA0OwotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgaW5pdGlhbENhcGFjaXR5ID0gdm1QYWdlU2l6ZSAvIHNpemVvZihUKTsKKyAgICBzdGF0
aWMgc2l6ZV90IGluaXRpYWxDYXBhY2l0eSgpIHsgcmV0dXJuIHZtUGFnZVNpemUoKSAvIHNpemVv
ZihUKTsgfQogCiAgICAgdm9pZCBncm93Q2FwYWNpdHkoKTsKICAgICB2b2lkIHNocmlua0NhcGFj
aXR5KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQ+OjpzaHJpbmso
c2l6ZV90IHNpegogewogICAgIEJBU1NFUlQoc2l6ZSA8PSBtX3NpemUpOwogICAgIG1fc2l6ZSA9
IHNpemU7Ci0gICAgaWYgKG1fY2FwYWNpdHkgPiBpbml0aWFsQ2FwYWNpdHkgJiYgbV9zaXplIDwg
bV9jYXBhY2l0eSAvIHNocmlua0ZhY3RvcikKKyAgICBpZiAobV9zaXplIDwgbV9jYXBhY2l0eSAv
IHNocmlua0ZhY3RvciAmJiBtX2NhcGFjaXR5ID4gaW5pdGlhbENhcGFjaXR5KCkpCiAgICAgICAg
IHNocmlua0NhcGFjaXR5KCk7CiB9CiAKQEAgLTE3MSwxNCArMTcxLDE0IEBAIHZvaWQgVmVjdG9y
PFQ+OjpyZWFsbG9jYXRlQnVmZmVyKHNpemVfdCAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBOT19J
TkxJTkUgdm9pZCBWZWN0b3I8VD46OnNocmlua0NhcGFjaXR5KCkKIHsKLSAgICBzaXplX3QgbmV3
Q2FwYWNpdHkgPSBtYXgoaW5pdGlhbENhcGFjaXR5LCBtX2NhcGFjaXR5IC8gc2hyaW5rRmFjdG9y
KTsKKyAgICBzaXplX3QgbmV3Q2FwYWNpdHkgPSBtYXgoaW5pdGlhbENhcGFjaXR5KCksIG1fY2Fw
YWNpdHkgLyBzaHJpbmtGYWN0b3IpOwogICAgIHJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogTk9fSU5MSU5FIHZvaWQgVmVjdG9yPFQ+Ojpn
cm93Q2FwYWNpdHkoKQogewotICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IG1heChpbml0aWFsQ2Fw
YWNpdHksIG1fc2l6ZSAqIGdyb3dGYWN0b3IpOworICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IG1h
eChpbml0aWFsQ2FwYWNpdHkoKSwgbV9zaXplICogZ3Jvd0ZhY3Rvcik7CiAgICAgcmVhbGxvY2F0
ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
WExhcmdlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1hMYXJn
ZU1hcC5jcHAJKHJldmlzaW9uIDE5ODY3OCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWExh
cmdlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNs
dWRlICJYTGFyZ2VNYXAuaCIKKyNpbmNsdWRlICJTaXplcy5oIgogCiBuYW1lc3BhY2UgYm1hbGxv
YyB7CiAK
</data>
<flag name="review"
          id="299330"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>