<?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>127171</bug_id>
          
          <creation_ts>2014-01-17 04:18:33 -0800</creation_ts>
          <short_desc>Script make_names.pl should generate lazily created arrays for attributes and tags.</short_desc>
          <delta_ts>2022-08-19 14:55:23 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Vivek Galatage">vivekg</reporter>
          <assigned_to name="Vivek Galatage">vivekg</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969105</commentid>
    <comment_count>0</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2014-01-17 04:18:33 -0800</bug_when>
    <thetext>Currently make_names.pl generate local static arrays for the tags and the attributes. 

These arrays hold pointers to the global data and these arrays are declared as 
static.

As the pointer data itself is global, the array need not be declared as static. We could create it lazily.

Also even though these functions, get{{namespace}}Tags/Attrs(), may not be called upon, the binary would still be loaded with 
allocation of that much amount of static data. 

Blink review URL: https://codereview.chromium.org/137783012/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969108</commentid>
    <comment_count>1</comment_count>
      <attachid>221455</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2014-01-17 04:26:52 -0800</bug_when>
    <thetext>Created attachment 221455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969143</commentid>
    <comment_count>2</comment_count>
      <attachid>221455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-17 09:08:14 -0800</bug_when>
    <thetext>Comment on attachment 221455
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        As the pointer data itself is global, the array need not be declared as static. 
&gt; +        We could create it lazily.
&gt; +
&gt; +        Also even though these functions, get{{namespace}}Tags/Attrs(), may not be called upon,
&gt; +        the binary would still be loaded with allocation of that much amount of static data. 

Doesn’t seem like a good tradeoff to me. In most systems, there is no significant cost to having static data that is never accessed, due to virtual memory and the OS. The code to build this structure seems like it will be significantly bigger than the data object.

Was there some specific case where this savings proved worthwhile? Could you give some numbers for the improvement?

&gt; Source/WebCore/dom/make_names.pl:704
&gt; +    printHeaderHead($F, &quot;DOM&quot;, $parameters{namespace}, &quot;#include \&quot;QualifiedName.h\&quot;\n#include &lt;wtf/PassOwnPtr.h&gt;\n&quot;);

This is wrong. Code doesn’t use PassOwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969150</commentid>
    <comment_count>3</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2014-01-17 09:20:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 221455 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221455&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        As the pointer data itself is global, the array need not be declared as static. 
&gt; &gt; +        We could create it lazily.
&gt; &gt; +
&gt; &gt; +        Also even though these functions, get{{namespace}}Tags/Attrs(), may not be called upon,
&gt; &gt; +        the binary would still be loaded with allocation of that much amount of static data. 
&gt; 
&gt; Doesn’t seem like a good tradeoff to me. In most systems, there is no significant cost to having static data that is never accessed, due to virtual memory and the OS. The code to build this structure seems like it will be significantly bigger than the data object.
&gt; 
&gt; Was there some specific case where this savings proved worthwhile? Could you give some numbers for the improvement?

I haven&apos;t calculated it specifically on Mac but did some measurements on linux and android using blink. Here is the link to the data saving table [1]. It saved us about 4.2kb from .data.rel.ro and .rel.dyn sections. Also saved about 360 relocations. The patch url also has array based approach [2]

[1] https://code.google.com/p/chromium/issues/detail?id=249746#c21
[2] https://codereview.chromium.org/137783012/#ps1

&gt; 
&gt; &gt; Source/WebCore/dom/make_names.pl:704
&gt; &gt; +    printHeaderHead($F, &quot;DOM&quot;, $parameters{namespace}, &quot;#include \&quot;QualifiedName.h\&quot;\n#include &lt;wtf/PassOwnPtr.h&gt;\n&quot;);
&gt; 
&gt; This is wrong. Code doesn’t use PassOwnPtr.

Yeah this is not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969179</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-17 11:34:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Here is the link to the data saving table [1]. It saved us about 4.2kb from .data.rel.ro and .rel.dyn sections. Also saved about 360 relocations.

How much did it add to the text section?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969219</commentid>
    <comment_count>5</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2014-01-17 12:51:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Here is the link to the data saving table [1]. It saved us about 4.2kb from .data.rel.ro and .rel.dyn sections. Also saved about 360 relocations.
&gt; 
&gt; How much did it add to the text section?

These arethe breakups

Section         Before      After        Diff

.text           24008156    24012876     +4720 (increased)
.data.rel.ro      995480      994040     -1440 (decreased)
.rel.dyn         1991888     1989008     -2880 (decreased)
                                         ------
                                          +400

So around 400 bytes were increased in the text section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969222</commentid>
    <comment_count>6</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2014-01-17 12:55:33 -0800</bug_when>
    <thetext>+--------------------+--------------------------+
|                    |    Relocation Details    |
+   Detail           +------------+-------------+
|                    |    Before  |      After  |
+--------------------+------------+-------------+
| relocations        |     248986 |      248626 |
| relative (99%)     |     248935 |      248575 |
| PLT entries        |        338 |         338 |
| for local syms     |        338 |         338 |
+--------------------+------------+-------------+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969248</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-17 13:35:13 -0800</bug_when>
    <thetext>My thinking would be to leave this as-is. Replacing read-only data with code of the same size doesn’t seem like a win to me. Replacing process-load relocation time with “lazy creation” code at runtime might be a win, but a small one. If we’re really concerned about the cost of these relocations, maybe we can change the data structure so there are fewer pointers involved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969249</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-17 13:35:35 -0800</bug_when>
    <thetext>But mine is not the only opinion that matters. I’d love to hear from other WebKit experts on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969251</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-17 13:37:13 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Replacing read-only data with code of the same size doesn’t seem like a win to me.

I should have said “replacing read-only data with code that is slightly larger than that data”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892512</commentid>
    <comment_count>10</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-19 14:54:13 -0700</bug_when>
    <thetext>rniwa@webkit.org - Is it something needed anymore?

Webkit Source - https://github.com/WebKit/WebKit/blob/5ddb4127ac4e4a104338422e546a1cdc7b698769/Source/WebCore/dom/make_names.pl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892513</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-19 14:55:23 -0700</bug_when>
    <thetext>This is won&apos;t fix at this point.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221455</attachid>
            <date>2014-01-17 04:26:52 -0800</date>
            <delta_ts>2014-01-17 09:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127171-20140117180257.patch</filename>
            <type>text/plain</type>
            <size>7685</size>
            <attacher name="Vivek Galatage">vivekg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2YmI5NjA0MzFlYjU0
YTZlNmY5YThjYzcyY2M2ZGQyMTE1MDkxYi4uZjM0MGI2NWM5NzllZGVhNGJjMWNhYmRiYTk4NmRi
ZDcxMGNmMTZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTAxLTE3ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFNjcmlwdCBtYWtl
X25hbWVzLnBsIHNob3VsZCBnZW5lcmF0ZSBsYXppbHkgY3JlYXRlZCBhcnJheSBmb3IgYXR0cmli
dXRlcyBhbmQgdGFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNjcmlwdCBtYWtlX25hbWVzLnBsIGdlbmVyYXRlIGxvY2FsIHN0YXRpYyBhcnJheXMg
Zm9yIHRoZSB0YWdzIGFuZCB0aGUgYXR0cmlidXRlcy4gCisKKyAgICAgICAgVGhlc2UgYXJyYXlz
IGhvbGQgcG9pbnRlcnMgdG8gdGhlIGdsb2JhbCBkYXRhIGFuZCB0aGVzZSBhcnJheXMgYXJlIGRl
Y2xhcmVkIGFzIAorICAgICAgICBzdGF0aWMuCisKKyAgICAgICAgQXMgdGhlIHBvaW50ZXIgZGF0
YSBpdHNlbGYgaXMgZ2xvYmFsLCB0aGUgYXJyYXkgbmVlZCBub3QgYmUgZGVjbGFyZWQgYXMgc3Rh
dGljLiAKKyAgICAgICAgV2UgY291bGQgY3JlYXRlIGl0IGxhemlseS4KKworICAgICAgICBBbHNv
IGV2ZW4gdGhvdWdoIHRoZXNlIGZ1bmN0aW9ucywgZ2V0e3tuYW1lc3BhY2V9fVRhZ3MvQXR0cnMo
KSwgbWF5IG5vdCBiZSBjYWxsZWQgdXBvbiwKKyAgICAgICAgdGhlIGJpbmFyeSB3b3VsZCBzdGls
bCBiZSBsb2FkZWQgd2l0aCBhbGxvY2F0aW9uIG9mIHRoYXQgbXVjaCBhbW91bnQgb2Ygc3RhdGlj
IGRhdGEuIAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBkdWUgdG8gY29kZSByZWZhY3RvcmluZy4K
KworICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnROYW1lc0hlYWRl
ckZpbGUpOgorICAgICAgICAocHJpbnROYW1lc0NwcEZpbGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWNvZ25pemVkVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1hcExvd2VyZWRMb2NhbE5hbWVUb05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkTmFtZXNXaXRoUHJlZml4KToKKwogMjAxNC0wMS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBjbGFuZy1tb2Rlcm5pemUgYW5kIGxldCBp
dCBhZGQgYSBidW5jaCBvZiBtaXNzaW5nIG92ZXJyaWRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwKaW5kZXggMTZiZDZmNGU5NTRhZTlkNzkyZGRlNzMzZmQxNTUzMjNlNTE2ZmQ4Ny4uMmJkY2E5
MGFhNDBhOTcxMGVhZjgyZjMwOTI1M2Y0MzdiMWU4NzMzNyAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFt
ZXMucGwKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKICAgICBv
cGVuIEYsICI+JGhlYWRlclBhdGgiOwogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKLSAg
ICBwcmludEhlYWRlckhlYWQoJEYsICJET00iLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9LCAiI2lu
Y2x1ZGUgXCJRdWFsaWZpZWROYW1lLmhcIiIpOworICAgIHByaW50SGVhZGVySGVhZCgkRiwgIkRP
TSIsICRwYXJhbWV0ZXJze25hbWVzcGFjZX0sICIjaW5jbHVkZSBcIlF1YWxpZmllZE5hbWUuaFwi
XG4jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD5cbiIpOwogCiAgICAgbXkgJGxvd2VyTmFtZXNw
YWNlID0gbGMoJHBhcmFtZXRlcnN7bmFtZXNwYWNlUHJlZml4fSk7CiAgICAgcHJpbnQgRiAiLy8g
TmFtZXNwYWNlXG4iOwpAQCAtNzIwLDEyICs3MjAsMTIgQEAgc3ViIHByaW50TmFtZXNIZWFkZXJG
aWxlCiAKICAgICBpZiAoa2V5cyAlYWxsVGFncykgewogICAgICAgICBwcmludCBGICJjb25zdCB1
bnNpZ25lZCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc0NvdW50ID0gIiwgc2NhbGFyKGtleXMg
JWFsbFRhZ3MpLCAiO1xuIjsKLSAgICAgICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6UXVhbGlm
aWVkTmFtZSogY29uc3QgKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncygpO1xuIjsKKyAg
ICAgICAgcHJpbnQgRiAic3RkOjp1bmlxdWVfcHRyPGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5h
bWUqW10+IGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzKCk7XG4iOwogICAgIH0KIAogICAg
IGlmIChrZXlzICVhbGxBdHRycykgewogICAgICAgICBwcmludCBGICJjb25zdCB1bnNpZ25lZCAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnNDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxBdHRy
cyksICI7XG4iOwotICAgICAgICBwcmludCBGICJjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1l
KiBjb25zdCAqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycygpO1xuIjsKKyAgICAgICAg
cHJpbnQgRiAic3RkOjp1bmlxdWVfcHRyPGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqW10+
IGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycygpO1xuIjsKICAgICB9CiAKICAgICBwcmlu
dEluaXQoJEYsIDEpOwpAQCAtNzUzLDE0ICs3NTMsMTUgQEAgc3ViIHByaW50TmFtZXNDcHBGaWxl
CiAgICAgICAgICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsICIsICRu
YW1lLCAiVGFnKVxuIjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcHJpbnQgRiAiXG5c
bmNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfVRhZ3MoKVxuIjsKLSAgICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBjb25zdCBX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc1td
ID0ge1xuIjsKKyAgICAgICAgcHJpbnQgRiAiXG5cbnN0ZDo6dW5pcXVlX3B0cjxjb25zdCBXZWJD
b3JlOjpRdWFsaWZpZWROYW1lKltdPiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncygpXG4i
OworICAgICAgICBwcmludCBGICJ7XG4gICAgYXV0byB0YWdzID0gc3RkOjptYWtlX3VuaXF1ZTxj
b25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKltdPigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFn
c0NvdW50KTtcbiI7CisgICAgICAgIG15ICRpbmRleCA9IDA7CiAgICAgICAgIGZvciBteSAkbmFt
ZSAoc29ydCBrZXlzICVhbGxUYWdzKSB7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSo+KCYke25hbWV9VGFn
KSxcbiI7CisgICAgICAgICAgICBwcmludCBGICIgICAgdGFnc1skaW5kZXhdID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKj4oJiR7bmFtZX1UYWcpO1xuIjsK
KyAgICAgICAgICAgICRpbmRleCsrOwogICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgIiAgICB9
O1xuIjsKLSAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
VGFncztcbiI7Ci0gICAgICAgIHByaW50IEYgIn1cbiI7CisgICAgICAgIHByaW50IEYgIiAgICBy
ZXR1cm4gdGFncztcbiI7CisgICAgICAgIHByaW50IEYgIn0iCiAgICAgfQogCiAgICAgaWYgKGtl
eXMgJWFsbEF0dHJzKSB7CkBAIC03NjgsMTMgKzc2OSwxNCBAQCBzdWIgcHJpbnROYW1lc0NwcEZp
bGUKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFsbEF0dHJzKSB7CiAgICAgICAg
ICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsICIsICRuYW1lLCAiQXR0
cilcbiI7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnQgRiAiXG5cbmNvbnN0IFdlYkNvcmU6OlF1
YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKClcbiI7
Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSogY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzW10gPSB7XG4iOworICAgICAg
ICBwcmludCBGICJcblxuc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5h
bWUqW10+IGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycygpXG4iOworICAgICAgICBwcmlu
dCBGICJ7XG4gICAgYXV0byBhdHRycyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3QgV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZSpbXT4oJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzQ291bnQpO1xuIjsK
KyAgICAgICAgbXkgJGluZGV4ID0gMDsKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMg
JWFsbEF0dHJzKSB7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSo+KCYke25hbWV9QXR0ciksXG4iOworICAg
ICAgICAgICAgcHJpbnQgRiAiICAgIGF0dHJzWyRpbmRleF0gPSByZWludGVycHJldF9jYXN0PGNv
bnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqPigmJHtuYW1lfUF0dHIpO1xuIjsKKyAgICAgICAg
ICAgICRpbmRleCsrOwogICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsKLSAg
ICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnM7XG4i
OworICAgICAgICBwcmludCBGICIgICAgcmV0dXJuIGF0dHJzO1xuIjsKICAgICAgICAgcHJpbnQg
RiAifVxuIjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKaW5kZXggOTIwN2IyOGI1NjllNDJlYzgzOTk0Mjk0OTQ1ZTNkMzQ1YjhhNjY3Mi4uYjcyMzI3
YjJhY2ZkYTMwNTNhYWNiNDk1YTZlNjIzOWU2MmI2OTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0aWMgYm9vbCBp
c1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgdGFnTGlzdCwg
KCkpOwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lKiBjb25zdCAqIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBRdWFsaWZpZWROYW1lKltdPiB0YWdzID0gSFRNTE5hbWVz
OjpnZXRIVE1MVGFncygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEhUTUxOYW1l
czo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKnRhZ3NbaV0gPT0gYmdz
b3VuZFRhZwogICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGNvbW1hbmRUYWcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDFhMWEw
YWFlYjgzY2NlZGQyYjg0ZWRlMmRjMTg1ODlkMmVmMTkxMDguLjQyODkxOTlkYWU3NThiYjhhYWY4
YjhjYzNkY2FjN2ZkNDVmNmExYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2xvc2VXaGVuTmVzdGVkVGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAK
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+IFByZWZpeGVkTmFt
ZVRvUXVhbGlmaWVkTmFtZU1hcDsKIAotc3RhdGljIHZvaWQgbWFwTG93ZXJlZExvY2FsTmFtZVRv
TmFtZShQcmVmaXhlZE5hbWVUb1F1YWxpZmllZE5hbWVNYXAqIG1hcCwgY29uc3QgUXVhbGlmaWVk
TmFtZSogY29uc3QgbmFtZXNbXSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyB2b2lkIG1hcExvd2Vy
ZWRMb2NhbE5hbWVUb05hbWUoUHJlZml4ZWROYW1lVG9RdWFsaWZpZWROYW1lTWFwKiBtYXAsIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBRdWFsaWZpZWROYW1lKltdPiYgbmFtZXMsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewog
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gKm5hbWVzW2ldOwpAQCAtNTY5LDcg
KzU2OSw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdFNWR1RhZ05hbWVDYXNlKEF0b21pY0hUTUxUb2tl
biogdG9rZW4pCiAgICAgdG9rZW4tPnNldE5hbWUoY2FzZWROYW1lLmxvY2FsTmFtZSgpKTsKIH0K
IAotdGVtcGxhdGU8Y29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXRBdHRycygpLCB1bnNp
Z25lZCBsZW5ndGg+Cit0ZW1wbGF0ZTxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUXVhbGlmaWVkTmFt
ZSpbXT4gZ2V0QXR0cnMoKSwgdW5zaWduZWQgbGVuZ3RoPgogc3RhdGljIHZvaWQgYWRqdXN0QXR0
cmlidXRlcyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIHN0YXRpYyBQcmVmaXhlZE5h
bWVUb1F1YWxpZmllZE5hbWVNYXAqIGNhc2VNYXAgPSAwOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHN0
YXRpYyB2b2lkIGFkanVzdE1hdGhNTEF0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
ICAgICBhZGp1c3RBdHRyaWJ1dGVzPE1hdGhNTE5hbWVzOjpnZXRNYXRoTUxBdHRycywgTWF0aE1M
TmFtZXM6Ok1hdGhNTEF0dHJzQ291bnQ+KHRva2VuKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTmFt
ZXNXaXRoUHJlZml4KFByZWZpeGVkTmFtZVRvUXVhbGlmaWVkTmFtZU1hcCogbWFwLCBjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgbmFtZXNbXSwg
c2l6ZV90IGxlbmd0aCkKK3N0YXRpYyB2b2lkIGFkZE5hbWVzV2l0aFByZWZpeChQcmVmaXhlZE5h
bWVUb1F1YWxpZmllZE5hbWVNYXAqIG1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBRdWFsaWZpZWROYW1lKltdPiYgbmFtZXMsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewog
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gKm5hbWVzW2ldOwo=
</data>
<flag name="review"
          id="245376"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>