<?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>155770</bug_id>
          
          <creation_ts>2016-03-22 15:03:42 -0700</creation_ts>
          <short_desc>bmalloc: use a log scale for large-ish size classes</short_desc>
          <delta_ts>2016-03-22 18:39:36 -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>bmalloc</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>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177145</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-22 15:03:42 -0700</bug_when>
    <thetext>bmalloc: use a log scale for large-ish size classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177158</commentid>
    <comment_count>1</comment_count>
      <attachid>274691</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-22 15:22:21 -0700</bug_when>
    <thetext>Created attachment 274691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177159</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-22 15:23:13 -0700</bug_when>
    <thetext>Attachment 274691 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/SmallPage.h:65:  The parameter name &quot;&gt;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177160</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-22 15:24:22 -0700</bug_when>
    <thetext>Memory numbers:

~/OpenSource/PerformanceTests/MallocBench&gt; ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                     
                                                                Baseline                               Patch                                   Δ
Execution Time:
    facebook                                                       225ms                               231ms                      ! 1.03x slower
    reddit                                                         109ms                               111ms                      ! 1.02x slower
    flickr                                                         113ms                               115ms                      ! 1.02x slower
    theverge                                                       141ms                               146ms                      ! 1.04x slower
    nimlang                                                        121ms                               119ms                      ^ 1.02x faster
    reddit_memory_warning --runs 0                                   0ms                                 0ms                                    
    flickr_memory_warning --runs 0                                   0ms                                 0ms                                    
    theverge_memory_warning --runs 0                                 0ms                                 0ms                                    

    &lt;geometric mean&gt;                                                 0ms                                 0ms                                    
    &lt;arithmetic mean&gt;                                               89ms                                90ms                      ! 1.02x slower
    &lt;harmonic mean&gt;                                                  0ms                                 0ms                                    

Peak Memory:
    facebook                                                    73,172kB                            73,040kB                      ^ 1.0x smaller
    reddit                                                      13,368kB                            13,184kB                     ^ 1.01x smaller
    flickr                                                      24,828kB                            24,656kB                     ^ 1.01x smaller
    theverge                                                    26,252kB                            26,188kB                      ^ 1.0x smaller
    nimlang                                                    184,484kB                           184,340kB                      ^ 1.0x smaller
    reddit_memory_warning --runs 0                              13,328kB                            13,236kB                     ^ 1.01x smaller
    flickr_memory_warning --runs 0                              24,936kB                            24,776kB                     ^ 1.01x smaller
    theverge_memory_warning --runs 0                            26,300kB                            26,180kB                      ^ 1.0x smaller

    &lt;geometric mean&gt;                                            31,732kB                            31,559kB                     ^ 1.01x smaller
    &lt;arithmetic mean&gt;                                           48,334kB                            48,200kB                      ^ 1.0x smaller
    &lt;harmonic mean&gt;                                             24,584kB                            24,404kB                     ^ 1.01x smaller

Memory at End:
    facebook                                                     2,724kB                             2,716kB                      ^ 1.0x smaller
    reddit                                                       1,740kB                             1,684kB                     ^ 1.03x smaller
    flickr                                                       2,748kB                             2,712kB                     ^ 1.01x smaller
    theverge                                                     2,728kB                             2,772kB                      ! 1.02x bigger
    nimlang                                                     33,400kB                            33,304kB                      ^ 1.0x smaller
    reddit_memory_warning --runs 0                               8,796kB                             8,860kB                      ! 1.01x bigger
    flickr_memory_warning --runs 0                              11,888kB                            11,856kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            20,744kB                            20,860kB                      ! 1.01x bigger

    &lt;geometric mean&gt;                                             6,329kB                             6,309kB                      ^ 1.0x smaller
    &lt;arithmetic mean&gt;                                           10,596kB                            10,596kB                      ^ 1.0x smaller
    &lt;harmonic mean&gt;                                              4,106kB                             4,068kB                     ^ 1.01x smaller</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177161</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-22 15:25:01 -0700</bug_when>
    <thetext>Throughput numbers:

~/OpenSource/PerformanceTests/MallocBench&gt; ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                                      Baseline                          Patch                              Δ
Execution Time:
    churn                                                 76ms                           74ms                 ^ 1.03x faster
    list_allocate                                         73ms                           70ms                 ^ 1.04x faster
    tree_allocate                                         74ms                           73ms                 ^ 1.01x faster
    tree_churn                                            82ms                           81ms                 ^ 1.01x faster
    fragment                                              67ms                           67ms                               
    fragment_iterate                                      78ms                           77ms                 ^ 1.01x faster
    facebook                                             222ms                          227ms                 ! 1.02x slower
    reddit                                               110ms                          110ms                               
    flickr                                               114ms                          118ms                 ! 1.04x slower
    theverge                                             149ms                          144ms                 ^ 1.03x faster
    nimlang                                              122ms                          118ms                 ^ 1.03x faster
    message_one                                          210ms                          210ms                               
    message_many                                         114ms                          114ms                               
    churn --parallel                                      39ms                           40ms                 ! 1.03x slower
    list_allocate --parallel                              65ms                           65ms                               
    tree_allocate --parallel                              81ms                           79ms                 ^ 1.03x faster
    tree_churn --parallel                                 82ms                           82ms                               
    fragment --parallel                                   48ms                           47ms                 ^ 1.02x faster
    fragment_iterate --parallel                           31ms                           34ms                  ! 1.1x slower

    &lt;geometric mean&gt;                                      86ms                           86ms                  ^ 1.0x faster
    &lt;arithmetic mean&gt;                                     97ms                           96ms                  ^ 1.0x faster
    &lt;harmonic mean&gt;                                       76ms                           76ms                  ! 1.0x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177175</commentid>
    <comment_count>5</comment_count>
      <attachid>274691</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-22 15:54:33 -0700</bug_when>
    <thetext>Comment on attachment 274691
Patch

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

r=me

&gt; Source/bmalloc/ChangeLog:68
&gt; +        bug that makes it impossible to print out variales named &apos;size&apos; -- which

Spelling *variables*

&gt; Source/bmalloc/bmalloc/Sizes.h:116
&gt; +        size_t i = log2(size - 1) - log2(maskSizeClassMax);
&gt; +        size_t j = (size - 1 - (maskSizeClassMax &lt;&lt; i));

What about calling i &quot;base&quot; and j &quot;offset&quot;.

&gt; Source/bmalloc/bmalloc/Sizes.h:123
&gt; +        size_t i = logSizeClass / logWasteFactor;
&gt; +        size_t j = logSizeClass % logWasteFactor;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177254</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-22 18:39:36 -0700</bug_when>
    <thetext>Committed r198571: &lt;http://trac.webkit.org/changeset/198571&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274691</attachid>
            <date>2016-03-22 15:22:21 -0700</date>
            <delta_ts>2016-03-22 15:54:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155770-20160322152222.patch</filename>
            <type>text/plain</type>
            <size>15887</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODU1NikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTAzLTIyICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogdXNlIGEgbG9n
IHNjYWxlIGZvciBsYXJnZS1pc2ggc2l6ZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3NzAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdCBsYXJnZXIgc2l6ZXMsIHByZWNpc2UgYWxsb2Nh
dGlvbiBzaXplcyBkb24ndCBzYXZlIG11Y2ggbWVtb3J5IC0tIGFuZAorICAgICAgICB0aGV5IGNh
biBjb3N0IG1lbW9yeSB3aGVuIG9iamVjdHMgb2YgZGlzdGluY3Qgc2l6ZSBjbGFzc2VzIGNhbid0
CisgICAgICAgIGFsbG9jYXRlIHRvZ2V0aGVyLgorCisgICAgICAgIFRoaXMgaXMgYSBzbWFsbCBz
YXZpbmdzIHVwIHRvIG91ciBjdXJyZW50IGFsbG9jYXRpb24gbGltaXRzLCBhbmQgaXQgbWF5Cisg
ICAgICAgIGVuYWJsZSBjaGFuZ2luZyB0aG9zZSBsaW1pdHMgaW4gdGhlIGxvbmcgdGVybS4KKwor
ICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpsb2cyKTog
V2UgdXNlIHRoaXMgdG8gY29tcHV0ZSBsYXJnZS1pc2ggc2l6ZSBjbGFzc2VzLgorCisgICAgICAg
ICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpB
bGxvY2F0b3IpOiBJdGVyYXRlIGJ5IHNpemUgY2xhc3MgaW5zdGVhZCBvZiBieQorICAgICAgICBv
YmplY3Qgc2l6ZSBzbyB3ZSBjYW4gY2hhbmdlIG9iamVjdCBzaXplIGxpbWl0cyB3aXRob3V0IGJy
ZWFraW5nIHN0dWZmLgorCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnNjYXZlbmdlKTog
RGl0dG8uCisKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVMb2dTaXplQ2xh
c3MpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIGZvcgorICAgICAgICBhbGxvY2F0aW5nIGJhc2VkIG9u
IGxvZyBzaXplIGNsYXNzZXMuCisKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2Nh
dGVTbG93Q2FzZSk6IEFjY291bnQgZm9yIGV4dHJhIHNpemUgY2xhc3MKKyAgICAgICAgcG9zc2li
aWxpdGllcy4KKworICAgICAgICAqIGJtYWxsb2MvQWxsb2NhdG9yLmg6CisgICAgICAgIChibWFs
bG9jOjpBbGxvY2F0b3I6OmFsbG9jYXRlRmFzdENhc2UpOiBXZSBvbmx5IGhhbmRsZSB1cCB0byA1
MTJiIG9uCisgICAgICAgIHRoZSBmYXN0ZXN0IGZhc3QgcGF0aCBub3cuCisKKyAgICAgICAgKiBi
bWFsbG9jL0J1bXBBbGxvY2F0b3IuaDoKKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6
OnZhbGlkYXRlKTogRGVsZXRlZC4gSSBub3RpY2VkIHRoYXQgdGhpcyBmdW5jdGlvbgorICAgICAg
ICBoYWQgYmVlbiByZWZhY3RvcmVkIG5vdCB0byBkbyBhbnl0aGluZyBhbnltb3JlLgorCisgICAg
ICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmluaXRpYWxp
emVMaW5lTWV0YWRhdGEpOiBJdGVyYXRlIGJ5IHNpemUgY2xhc3MuIChTZWUKKyAgICAgICAgQWxs
b2NhdG9yOjpBbGxvY2F0b3IuKQorCisgICAgICAgICogYm1hbGxvYy9IZWFwLmg6IFVzZSB0aGUg
c2l6ZUNsYXNzQ291bnQgY29uc3RhbnQgaW5zdGVhZCBvZiBoYXJkIGNvZGluZworICAgICAgICB0
aGluZ3MuCisKKyAgICAgICAgKiBibWFsbG9jL1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpT
aXplczo6bWFza1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVj
dFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAg
IChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXpl
czo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpvYmplY3RTaXplKTogU2Vw
YXJhdGUgc2l6ZSBjbGFzcyBjYWxjdWxhdGlvbiBiZXR3ZWVuCisgICAgICAgIHNpbXBsZSBzaXpl
IGNsYXNzZXMgdGhhdCBjYW4gYmUgY29tcHV0ZWQgd2l0aCBhIG1hc2sgYW5kIGFyZSA4LWJ5dGUt
cHJlY2lzZQorICAgICAgICBhbmQgY29tcGxleCBzaXplIGNsYXNzZXMgdGhhdCByZXF1aXJlIG1v
cmUgbWF0aCBhbmQgYXJlIGxlc3MgcHJlY2lzZS4KKworICAgICAgICAqIGJtYWxsb2MvU21hbGxM
aW5lLmg6CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OnJlZik6CisgICAgICAgICogYm1h
bGxvYy9TbWFsbFBhZ2UuaDoKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6U21hbGxQYWdl
KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6cmVmKToKKyAgICAgICAgKGJtYWxsb2M6
OlNtYWxsUGFnZTo6ZGVyZWYpOiBDbGVhbmVkIHVwIHNvbWUgQVNTRVJUcyB0aGF0IHRyaWdnZXJl
ZAorICAgICAgICB3aGlsZSB3b3JraW5nIG9uIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBibWFs
bG9jL1pvbmUuY3BwOgorICAgICAgICAoYm1hbGxvYzo6c3RhdGlzdGljcyk6CisgICAgICAgIChi
bWFsbG9jOjp6b25lU2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpab25lOjpab25lKToKKyAgICAg
ICAgKGJtYWxsb2M6OnNpemUpOiBEZWxldGVkLiBSZW5hbWVkIHRoZXNlIHN5bWJvbHMgdG8gd29y
ayBhcm91bmQgYW4gbGxkYgorICAgICAgICBidWcgdGhhdCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRv
IHByaW50IG91dCB2YXJpYWxlcyBuYW1lZCAnc2l6ZScgLS0gd2hpY2gKKyAgICAgICAgY2FuIGJl
IGEgcHJvYmxlbSB3aGVuIHdvcmtpbmcgb24gbWFsbG9jLgorCiAyMDE2LTAzLTIyICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogc2hyaW5rIGxh
cmdlTWF4CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgJKHJldmlzaW9uIDE5ODU0
NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCw2ICsxMDgsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhw
ciBzaQogICAgIHJldHVybiBzaXplb2YoVCkgKiA4OwogfQogCitpbmxpbmUgY29uc3RleHByIHVu
c2lnbmVkIGxvbmcgbG9nMih1bnNpZ25lZCBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBiaXRD
b3VudDx1bnNpZ25lZCBsb25nPigpIC0gMSAtIF9fYnVpbHRpbl9jbHpsKHZhbHVlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gQWxnb3JpdGhtX2gKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHJldmlzaW9uIDE5ODU0NikKKysrIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCAr
NDIsOCBAQCBBbGxvY2F0b3I6OkFsbG9jYXRvcihIZWFwKiBoZWFwLCBEZWFsbG9jCiAgICAgOiBt
X2lzQm1hbGxvY0VuYWJsZWQoaGVhcC0+ZW52aXJvbm1lbnQoKS5pc0JtYWxsb2NFbmFibGVkKCkp
CiAgICAgLCBtX2RlYWxsb2NhdG9yKGRlYWxsb2NhdG9yKQogewotICAgIGZvciAodW5zaWduZWQg
c2hvcnQgc2l6ZSA9IGFsaWdubWVudDsgc2l6ZSA8PSBzbWFsbE1heDsgc2l6ZSArPSBhbGlnbm1l
bnQpCi0gICAgICAgIG1fYnVtcEFsbG9jYXRvcnNbc2l6ZUNsYXNzKHNpemUpXS5pbml0KHNpemUp
OworICAgIGZvciAoc2l6ZV90IHNpemVDbGFzcyA9IDA7IHNpemVDbGFzcyA8IHNpemVDbGFzc0Nv
dW50OyArK3NpemVDbGFzcykKKyAgICAgICAgbV9idW1wQWxsb2NhdG9yc1tzaXplQ2xhc3NdLmlu
aXQob2JqZWN0U2l6ZShzaXplQ2xhc3MpKTsKIH0KIAogQWxsb2NhdG9yOjp+QWxsb2NhdG9yKCkK
QEAgLTE2NCw5ICsxNjQsOSBAQCB2b2lkKiBBbGxvY2F0b3I6OnJlYWxsb2NhdGUodm9pZCogb2Jq
ZWN0CiAKIHZvaWQgQWxsb2NhdG9yOjpzY2F2ZW5nZSgpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBz
aG9ydCBpID0gYWxpZ25tZW50OyBpIDw9IHNtYWxsTWF4OyBpICs9IGFsaWdubWVudCkgewotICAg
ICAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX2J1bXBBbGxvY2F0b3JzW3NpemVDbGFz
cyhpKV07Ci0gICAgICAgIEJ1bXBSYW5nZUNhY2hlJiBidW1wUmFuZ2VDYWNoZSA9IG1fYnVtcFJh
bmdlQ2FjaGVzW3NpemVDbGFzcyhpKV07CisgICAgZm9yIChzaXplX3Qgc2l6ZUNsYXNzID0gMDsg
c2l6ZUNsYXNzIDwgc2l6ZUNsYXNzQ291bnQ7ICsrc2l6ZUNsYXNzKSB7CisgICAgICAgIEJ1bXBB
bGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fYnVtcEFsbG9jYXRvcnNbc2l6ZUNsYXNzXTsKKyAgICAg
ICAgQnVtcFJhbmdlQ2FjaGUmIGJ1bXBSYW5nZUNhY2hlID0gbV9idW1wUmFuZ2VDYWNoZXNbc2l6
ZUNsYXNzXTsKIAogICAgICAgICB3aGlsZSAoYWxsb2NhdG9yLmNhbkFsbG9jYXRlKCkpCiAgICAg
ICAgICAgICBtX2RlYWxsb2NhdG9yLmRlYWxsb2NhdGUoYWxsb2NhdG9yLmFsbG9jYXRlKCkpOwpA
QCAtMjEwLDE4ICsyMTAsMzAgQEAgTk9fSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVY
TGFyZwogICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5hbGxvY2F0
ZVhMYXJnZShsb2NrLCBzaXplKTsKIH0KIAorTk9fSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxs
b2NhdGVMb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZV90IHNpemVDbGFzcyA9
IGJtYWxsb2M6OnNpemVDbGFzcyhzaXplKTsKKyAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3Ig
PSBtX2J1bXBBbGxvY2F0b3JzW3NpemVDbGFzc107CisgICAgaWYgKCFhbGxvY2F0b3IuY2FuQWxs
b2NhdGUoKSkKKyAgICAgICAgcmVmaWxsQWxsb2NhdG9yKGFsbG9jYXRvciwgc2l6ZUNsYXNzKTsK
KyAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKCk7Cit9CisKIHZvaWQqIEFsbG9jYXRvcjo6
YWxsb2NhdGVTbG93Q2FzZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIW1faXNCbWFsbG9jRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKIAotICAgIGlmIChzaXplIDw9IHNt
YWxsTWF4KSB7Ci0gICAgICAgIHNpemVfdCBzaXplQ2xhc3MgPSBibWFsbG9jOjpzaXplQ2xhc3Mo
c2l6ZSk7CisgICAgaWYgKHNpemUgPD0gbWFza1NpemVDbGFzc01heCkgeworICAgICAgICBzaXpl
X3Qgc2l6ZUNsYXNzID0gYm1hbGxvYzo6bWFza1NpemVDbGFzcyhzaXplKTsKICAgICAgICAgQnVt
cEFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9idW1wQWxsb2NhdG9yc1tzaXplQ2xhc3NdOwogICAg
ICAgICByZWZpbGxBbGxvY2F0b3IoYWxsb2NhdG9yLCBzaXplQ2xhc3MpOwogICAgICAgICByZXR1
cm4gYWxsb2NhdG9yLmFsbG9jYXRlKCk7CiAgICAgfQogCisgICAgaWYgKHNpemUgPD0gc21hbGxN
YXgpCisgICAgICAgIHJldHVybiBhbGxvY2F0ZUxvZ1NpemVDbGFzcyhzaXplKTsKKwogICAgIGlm
IChzaXplIDw9IGxhcmdlTWF4KQogICAgICAgICByZXR1cm4gYWxsb2NhdGVMYXJnZShzaXplKTsK
IApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCShyZXZpc2lvbiAxOTg1NDYpCisr
KyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MiwxNCArNTIsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG9jYXRlRmFzdENhc2Uoc2l6ZV90
LCB2b2lkKiYpOwogICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90KTsKICAgICAKKyAg
ICB2b2lkKiBhbGxvY2F0ZUxvZ1NpemVDbGFzcyhzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRl
TGFyZ2Uoc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVhMYXJnZShzaXplX3QpOwogICAgIAog
ICAgIHZvaWQgcmVmaWxsQWxsb2NhdG9yKEJ1bXBBbGxvY2F0b3ImLCBzaXplX3Qgc2l6ZUNsYXNz
KTsKICAgICB2b2lkIHJlZmlsbEFsbG9jYXRvclNsb3dDYXNlKEJ1bXBBbGxvY2F0b3ImLCBzaXpl
X3Qgc2l6ZUNsYXNzKTsKICAgICAKLSAgICBzdGQ6OmFycmF5PEJ1bXBBbGxvY2F0b3IsIHNtYWxs
TWF4IC8gYWxpZ25tZW50PiBtX2J1bXBBbGxvY2F0b3JzOwotICAgIHN0ZDo6YXJyYXk8QnVtcFJh
bmdlQ2FjaGUsIHNtYWxsTWF4IC8gYWxpZ25tZW50PiBtX2J1bXBSYW5nZUNhY2hlczsKKyAgICBz
dGQ6OmFycmF5PEJ1bXBBbGxvY2F0b3IsIHNpemVDbGFzc0NvdW50PiBtX2J1bXBBbGxvY2F0b3Jz
OworICAgIHN0ZDo6YXJyYXk8QnVtcFJhbmdlQ2FjaGUsIHNpemVDbGFzc0NvdW50PiBtX2J1bXBS
YW5nZUNhY2hlczsKIAogICAgIGJvb2wgbV9pc0JtYWxsb2NFbmFibGVkOwogICAgIERlYWxsb2Nh
dG9yJiBtX2RlYWxsb2NhdG9yOwpAQCAtNjcsMTAgKzY4LDEwIEBAIHByaXZhdGU6CiAKIGlubGlu
ZSBib29sIEFsbG9jYXRvcjo6YWxsb2NhdGVGYXN0Q2FzZShzaXplX3Qgc2l6ZSwgdm9pZComIG9i
amVjdCkKIHsKLSAgICBpZiAoc2l6ZSA+IHNtYWxsTWF4KQorICAgIGlmIChzaXplID4gbWFza1Np
emVDbGFzc01heCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQnVtcEFsbG9jYXRvciYg
YWxsb2NhdG9yID0gbV9idW1wQWxsb2NhdG9yc1tzaXplQ2xhc3Moc2l6ZSldOworICAgIEJ1bXBB
bGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fYnVtcEFsbG9jYXRvcnNbbWFza1NpemVDbGFzcyhzaXpl
KV07CiAgICAgaWYgKCFhbGxvY2F0b3IuY2FuQWxsb2NhdGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0J1bXBBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0J1bXBBbGxvY2F0b3IuaAkocmV2aXNp
b24gMTk4NTQ2KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVmaWxsKGNv
bnN0IEJ1bXBSYW5nZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdmFsaWRhdGUodm9pZCopOwot
CiAgICAgY2hhciogbV9wdHI7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9zaXplOwogICAgIHVuc2ln
bmVkIHNob3J0IG1fcmVtYWluaW5nOwpAQCAtNzEsMTggKzY5LDYgQEAgaW5saW5lIHZvaWQgQnVt
cEFsbG9jYXRvcjo6aW5pdChzaXplX3QgcwogICAgIG1fcmVtYWluaW5nID0gMDsKIH0KIAotaW5s
aW5lIHZvaWQgQnVtcEFsbG9jYXRvcjo6dmFsaWRhdGUodm9pZCogcHRyKQotewotICAgIFVOVVNF
RChwdHIpOwotICAgIGlmIChtX3NpemUgPD0gc21hbGxNYXgpIHsKLSAgICAgICAgQkFTU0VSVChp
c1NtYWxsKHB0cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIEJBU1NFUlQo
bV9zaXplIDw9IHNtYWxsTWF4KTsKLSAgICBCQVNTRVJUKGlzU21hbGwocHRyKSk7Ci19Ci0KIGlu
bGluZSB2b2lkKiBCdW1wQWxsb2NhdG9yOjphbGxvY2F0ZSgpCiB7CiAgICAgQkFTU0VSVChtX3Jl
bWFpbmluZyk7CkBAIC05MCw3ICs3Niw3IEBAIGlubGluZSB2b2lkKiBCdW1wQWxsb2NhdG9yOjph
bGxvY2F0ZSgpCiAgICAgLS1tX3JlbWFpbmluZzsKICAgICBjaGFyKiByZXN1bHQgPSBtX3B0cjsK
ICAgICBtX3B0ciArPSBtX3NpemU7Ci0gICAgdmFsaWRhdGUocmVzdWx0KTsKKyAgICBCQVNTRVJU
KGlzU21hbGwocmVzdWx0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCShyZXZpc2lvbiAxOTg1NDYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIHZvaWQgSGVhcDo6
aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCiB7CiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgbV9zbWFs
bExpbmVNZXRhZGF0YSBpcyB6ZXJvLWZpbGxlZC4KIAotICAgIGZvciAoc2l6ZV90IHNpemUgPSBh
bGlnbm1lbnQ7IHNpemUgPD0gc21hbGxNYXg7IHNpemUgKz0gYWxpZ25tZW50KSB7Ci0gICAgICAg
IHNpemVfdCBzaXplQ2xhc3MgPSBibWFsbG9jOjpzaXplQ2xhc3Moc2l6ZSk7CisgICAgZm9yIChz
aXplX3Qgc2l6ZUNsYXNzID0gMDsgc2l6ZUNsYXNzIDwgc2l6ZUNsYXNzQ291bnQ7ICsrc2l6ZUNs
YXNzKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwogICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IG1fc21hbGxMaW5lTWV0YWRhdGFbc2l6ZUNsYXNzXTsKIAog
ICAgICAgICBzaXplX3Qgb2JqZWN0ID0gMDsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCShyZXZp
c2lvbiAxOTg1NDYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsOSArOTIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NhdmVuZ2VMYXJnZU9i
amVjdHMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzKTsKICAgICB2b2lkIHNjYXZlbmdlWExhcmdlT2JqZWN0cyhzdGQ6OnVuaXF1ZV9sb2Nr
PFN0YXRpY011dGV4PiYsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpOwogCi0gICAgc3RkOjph
cnJheTxzdGQ6OmFycmF5PExpbmVNZXRhZGF0YSwgc21hbGxMaW5lQ291bnQ+LCBzbWFsbE1heCAv
IGFsaWdubWVudD4gbV9zbWFsbExpbmVNZXRhZGF0YTsKKyAgICBzdGQ6OmFycmF5PHN0ZDo6YXJy
YXk8TGluZU1ldGFkYXRhLCBzbWFsbExpbmVDb3VudD4sIHNpemVDbGFzc0NvdW50PiBtX3NtYWxs
TGluZU1ldGFkYXRhOwogCi0gICAgc3RkOjphcnJheTxMaXN0PFNtYWxsUGFnZT4sIHNtYWxsTWF4
IC8gYWxpZ25tZW50PiBtX3NtYWxsUGFnZXNXaXRoRnJlZUxpbmVzOworICAgIHN0ZDo6YXJyYXk8
TGlzdDxTbWFsbFBhZ2U+LCBzaXplQ2xhc3NDb3VudD4gbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5l
czsKIAogICAgIExpc3Q8U21hbGxQYWdlPiBtX3NtYWxsUGFnZXM7CiAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NpemVzLmgJKHJldmlzaW9uIDE5ODU0NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2l6ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTAgKzYwLDEyIEBAIG5hbWVzcGFjZSBTaXpl
cyB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbENodW5rT2Zmc2V0ID0gc3VwZXJDaHVu
a1NpemUgLyAyOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxDaHVua01hc2sgPSB+KHNt
YWxsQ2h1bmtTaXplIC0gMXVsKTsKIAotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxNYXgg
PSAxMDI0OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9IDI1NjsKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTGluZUNvdW50ID0gdm1QYWdlU2l6ZSAvIHNtYWxs
TGluZVNpemU7CiAKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTWF4ID0gMSAqIGtCOwor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc01heCA9IDUxMjsKKwogICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VDaHVua1NpemUgPSBzdXBlckNodW5rU2l6ZSAvIDI7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUNodW5rT2Zmc2V0ID0gMDsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGxhcmdlQ2h1bmtNYXNrID0gfihsYXJnZUNodW5rU2l6ZSAtIDF1bCk7CkBA
IC05MCwxNyArOTIsNTQgQEAgbmFtZXNwYWNlIFNpemVzIHsKICAgICAKICAgICBzdGF0aWMgY29u
c3Qgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzY2F2ZW5nZVNsZWVwRHVyYXRpb24gPSBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUxMik7CiAKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
c2tTaXplQ2xhc3NDb3VudCA9IG1hc2tTaXplQ2xhc3NNYXggLyBhbGlnbm1lbnQ7CisKKyAgICBp
bmxpbmUgY29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzKHNpemVfdCBzaXplKQorICAgIHsK
KyAgICAgICAgLy8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgorICAgICAgICByZXR1cm4g
bWFzaygoc2l6ZSAtIDEpIC8gYWxpZ25tZW50LCBtYXNrU2l6ZUNsYXNzQ291bnQgLSAxKTsKKyAg
ICB9CisKKyAgICBpbmxpbmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNs
YXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzICsgMSkgKiBhbGlnbm1l
bnQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9IDg7
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6ZUNsYXNz
TWF4IC8gbG9nV2FzdGVGYWN0b3I7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxvZ1NpemVD
bGFzc0NvdW50ID0gKGxvZzIoc21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KSkgKiBs
b2dXYXN0ZUZhY3RvcjsKKworICAgIGlubGluZSBzaXplX3QgbG9nU2l6ZUNsYXNzKHNpemVfdCBz
aXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGkgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFz
a1NpemVDbGFzc01heCk7CisgICAgICAgIHNpemVfdCBqID0gKHNpemUgLSAxIC0gKG1hc2tTaXpl
Q2xhc3NNYXggPDwgaSkpOworICAgICAgICByZXR1cm4gaSAqIGxvZ1dhc3RlRmFjdG9yICsgaiAv
IChsb2dBbGlnbm1lbnRNaW4gPDwgaSk7CisgICAgfQorCisgICAgaW5saW5lIHNpemVfdCBsb2dP
YmplY3RTaXplKHNpemVfdCBsb2dTaXplQ2xhc3MpCisgICAgeworICAgICAgICBzaXplX3QgaSA9
IGxvZ1NpemVDbGFzcyAvIGxvZ1dhc3RlRmFjdG9yOworICAgICAgICBzaXplX3QgaiA9IGxvZ1Np
emVDbGFzcyAlIGxvZ1dhc3RlRmFjdG9yOworICAgICAgICByZXR1cm4gKG1hc2tTaXplQ2xhc3NN
YXggPDwgaSkgKyAoaiArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0NvdW50
ICsgbG9nU2l6ZUNsYXNzQ291bnQ7CisKICAgICBpbmxpbmUgc2l6ZV90IHNpemVDbGFzcyhzaXpl
X3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZUNsYXNzTWFz
ayA9IChzbWFsbE1heCAvIGFsaWdubWVudCkgLSAxOwotICAgICAgICByZXR1cm4gbWFzaygoc2l6
ZSAtIDEpIC8gYWxpZ25tZW50LCBzaXplQ2xhc3NNYXNrKTsKKyAgICAgICAgaWYgKHNpemUgPD0g
bWFza1NpemVDbGFzc01heCkKKyAgICAgICAgICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzKHNpemUp
OworICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzKHNpemUp
OwogICAgIH0KIAogICAgIGlubGluZSBzaXplX3Qgb2JqZWN0U2l6ZShzaXplX3Qgc2l6ZUNsYXNz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzaXplQ2xhc3MgKyAxKSAqIGFsaWdubWVudDsKKyAg
ICAgICAgaWYgKHNpemVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKKyAgICAgICAgICAgIHJl
dHVybiBtYXNrT2JqZWN0U2l6ZShzaXplQ2xhc3MpOworICAgICAgICByZXR1cm4gbG9nT2JqZWN0
U2l6ZShzaXplQ2xhc3MgLSBtYXNrU2l6ZUNsYXNzQ291bnQpOwogICAgIH0KLX07Cit9CiAKIHVz
aW5nIG5hbWVzcGFjZSBTaXplczsKIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bExpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGluZS5o
CShyZXZpc2lvbiAxOTg1NDYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGluZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw2IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
Y2xhc3MgU21hbGxMaW5lIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciBtYXhSZWZDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46Om1heCgp
OwotICAgIHN0YXRpY19hc3NlcnQoc21hbGxMaW5lU2l6ZSAvIGFsaWdubWVudCA8IG1heFJlZkNv
dW50LCAibWF4aW11bSBvYmplY3QgY291bnQgbXVzdCBmaXQgaW4gTGluZSIpOwotCiAgICAgc3Rh
dGljIFNtYWxsTGluZSogZ2V0KHZvaWQqKTsKIAogICAgIHZvaWQgcmVmKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFyKTsKQEAgLTQ5LDYgKzQ2LDExIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ7CisKK3N0YXRpY19h
c3NlcnQoCisgICAgc21hbGxMaW5lU2l6ZSAvIGFsaWdubWVudCA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkIGNoYXI+OjptYXgoKSwKKyAgICAibWF4aW11bSBvYmplY3QgY291bnQgbXVz
dCBmaXQgaW4gU21hbGxMaW5lOjptX3JlZkNvdW50Iik7CisKIH07CiAKIGlubGluZSB2b2lkIFNt
YWxsTGluZTo6cmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFy
IHJlZkNvdW50KQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCShyZXZpc2lvbiAx
OTg1NDYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw5ICszNiw2IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgU21hbGxQ
YWdlIDogcHVibGljIExpc3ROb2RlPFNtYWxsUGFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjaGFyIG1heFJlZkNvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZCBjaGFyPjo6bWF4KCk7Ci0gICAgc3RhdGljX2Fzc2VydChzbWFsbExpbmVDb3VudCA8IG1h
eFJlZkNvdW50LCAibWF4aW11bSBsaW5lIGNvdW50IG11c3QgZml0IGluIFNtYWxsUGFnZSIpOwot
ICAgIAogICAgIHN0YXRpYyBTbWFsbFBhZ2UqIGdldChTbWFsbExpbmUqKTsKIAogICAgIFNtYWxs
UGFnZSgpCkBAIC02MywxMiArNjAsMTYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBjaGFyIG1f
aGFzRnJlZUxpbmVzOiAxOwogICAgIHVuc2lnbmVkIGNoYXIgbV9yZWZDb3VudDogNzsKICAgICB1
bnNpZ25lZCBjaGFyIG1fc2l6ZUNsYXNzOworCitzdGF0aWNfYXNzZXJ0KAorICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZGVjbHR5cGUobV9zaXplQ2xhc3MpPjo6bWF4KCkgPj0gc2l6ZUNsYXNzQ291
bnQsCisgICAgIkxhcmdlc3Qgc2l6ZSBjbGFzcyBtdXN0IGZpdCBpbiBTbWFsbFBhZ2UgbWV0YWRh
dGEiKTsKIH07CiAKIGlubGluZSB2b2lkIFNtYWxsUGFnZTo6cmVmKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mKQogewotICAgIEJBU1NFUlQobV9yZWZDb3VudCA8IG1heFJlZkNvdW50KTsK
ICAgICArK21fcmVmQ291bnQ7CisgICAgQkFTU0VSVChtX3JlZkNvdW50KTsKIH0KIAogaW5saW5l
IGJvb2wgU21hbGxQYWdlOjpkZXJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAkocmV2aXNpb24gMTk4NTQ2KQorKysgU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9ab25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBz
dGF0aWMgdm9pZCBzdGF0aXN0aWNzKG1hbGxvY196b25lX3QqLCBtCiAgICAgbWVtc2V0KHN0YXRp
c3RpY3MsIDAsIHNpemVvZihtYWxsb2Nfc3RhdGlzdGljc190KSk7CiB9CiAKLXN0YXRpYyBzaXpl
X3Qgc2l6ZShtYWxsb2Nfem9uZV90KiwgY29uc3Qgdm9pZCopCitzdGF0aWMgc2l6ZV90IHpvbmVT
aXplKG1hbGxvY196b25lX3QqLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBPdXIgem9uZSBpcyBu
b3QgcHVibGljIEFQSSwgc28gbm8gcG9pbnRlciBjYW4gYmVsb25nIHRvIHVzLgogICAgIHJldHVy
biAwOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBrZXJuX3JldHVybl90IGVudW1lcmF0b3Io
dGFza190IHQKIC8vIFRoZSBtZW1vcnkgYW5hbHlzaXMgQVBJIHJlcXVpcmVzIHRoZSBjb250ZW50
cyBvZiB0aGlzIHN0cnVjdCB0byBiZSBhIHN0YXRpYwogLy8gY29uc3RhbnQgaW4gdGhlIHByb2dy
YW0gYmluYXJ5LiBUaGUgbGVha3MgcHJvY2VzcyB3aWxsIGxvYWQgdGhpcyBzdHJ1Y3QKIC8vIG91
dCBvZiB0aGUgcHJvZ3JhbSBiaW5hcnkgKGFuZCBub3Qgb3V0IG9mIHRoZSBydW5uaW5nIHByb2Nl
c3MpLgotc3RhdGljIG1hbGxvY19pbnRyb3NwZWN0aW9uX3QgaW50cm9zcGVjdCA9IHsKK3N0YXRp
YyBtYWxsb2NfaW50cm9zcGVjdGlvbl90IHpvbmVJbnRyb3NwZWN0ID0gewogICAgIC5lbnVtZXJh
dG9yID0gYm1hbGxvYzo6ZW51bWVyYXRvciwKICAgICAuZ29vZF9zaXplID0gYm1hbGxvYzo6Z29v
ZF9zaXplLAogICAgIC5jaGVjayA9IGJtYWxsb2M6OmNoZWNrLApAQCAtMTE3LDkgKzExNyw5IEBA
IHN0YXRpYyBtYWxsb2NfaW50cm9zcGVjdGlvbl90IGludHJvc3BlY3QKIAogWm9uZTo6Wm9uZSgp
CiB7Ci0gICAgbWFsbG9jX3pvbmVfdDo6c2l6ZSA9ICZibWFsbG9jOjpzaXplOworICAgIG1hbGxv
Y196b25lX3Q6OnNpemUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAgbWFsbG9jX3pvbmVfdDo6
em9uZV9uYW1lID0gIldlYktpdCBNYWxsb2MiOwotICAgIG1hbGxvY196b25lX3Q6OmludHJvc3Bl
Y3QgPSAmYm1hbGxvYzo6aW50cm9zcGVjdDsKKyAgICBtYWxsb2Nfem9uZV90OjppbnRyb3NwZWN0
ID0gJmJtYWxsb2M6OnpvbmVJbnRyb3NwZWN0OwogICAgIG1hbGxvY196b25lX3Q6OnZlcnNpb24g
PSA0OwogICAgIG1hbGxvY196b25lX3JlZ2lzdGVyKHRoaXMpOwogfQo=
</data>
<flag name="review"
          id="299108"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>