<?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>97911</bug_id>
          
          <creation_ts>2012-09-28 07:19:45 -0700</creation_ts>
          <short_desc>DOMTokenList add/remove should use Vector&lt;AtomicString&gt; instead of Vector&lt;String&gt;</short_desc>
          <delta_ts>2013-04-08 18:04:17 -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="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730636</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 07:19:45 -0700</bug_when>
    <thetext>Darin Adler wrote in https://bugs.webkit.org/show_bug.cgi?id=97335#c21

&quot;I think we should investigate having the variadic string support use Vector&lt;AtomicString&gt; for the same reason that the single-argument functions use AtomicString.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730909</commentid>
    <comment_count>1</comment_count>
      <attachid>166298</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 12:56:22 -0700</bug_when>
    <thetext>Created attachment 166298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730910</commentid>
    <comment_count>2</comment_count>
      <attachid>166298</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 12:57:15 -0700</bug_when>
    <thetext>Comment on attachment 166298
Patch

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

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp:1925
&gt; +    Vector&lt;Node*&gt; tail;

Now the generated type is same for V8 and JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730923</commentid>
    <comment_count>3</comment_count>
      <attachid>166298</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-28 13:12:41 -0700</bug_when>
    <thetext>Comment on attachment 166298
Patch

WebCore/html changes LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730958</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 13:38:55 -0700</bug_when>
    <thetext>&gt; &quot;I think we should investigate having the variadic string support use Vector&lt;AtomicString&gt; for the same reason that the single-argument functions use AtomicString.&quot;

Did we investigate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730988</commentid>
    <comment_count>5</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 14:18:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &quot;I think we should investigate having the variadic string support use Vector&lt;AtomicString&gt; for the same reason that the single-argument functions use AtomicString.&quot;
&gt; 
&gt; Did we investigate?

I&apos;m not really sure what Darin wanted to investigate?

It is cleaner to use Vector&lt;AtomicString&gt; since all the other DOMTokenList functions use AtomicString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731257</commentid>
    <comment_count>6</comment_count>
      <attachid>166298</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-29 16:58:18 -0700</bug_when>
    <thetext>Comment on attachment 166298
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        This makes DOMString... args use Vector&lt;AtomicString&gt; instead of Vector&lt;String&gt;.
&gt; +

Why is that always the right decision.  I can see it making sense for DOMTokenList (where we want to treat the strings as tokens), but not in the general case.

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests. No change in behavior.

Does this speed something up?

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:367
&gt; +            indexedValue = jsValue.toString(exec)-&gt;value(exec);

jsValue.toWTFString(exec) would be slightly less code.  What is the return value for here? Should it return true even if there was an exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731968</commentid>
    <comment_count>7</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-01 14:10:53 -0700</bug_when>
    <thetext>I did a perf test which does:

  element.classList.remove(&apos;aaaaa&apos;, &apos;bbbbb&apos;, &apos;ccccc&apos;);
  element.classList.add(&apos;aaaaa&apos;, &apos;bbbbb&apos;, &apos;ccccc&apos;);

Vector&lt;String&gt;
2941.29±2.54%
2935.29±2.46%
3035.28±2.99%

Vector&lt;AtomicString&gt;
2982.24±3.04%
3136.07±3.14%
3098.22±2.47%

Based on this simple test, using AtomicString is slightly faster but it is very close to the noise level.

Based on these I think it is cleaner to continue to use String, since it is more generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732013</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 14:50:15 -0700</bug_when>
    <thetext>Should we close this as WONTFIX then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732089</commentid>
    <comment_count>9</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-01 16:08:55 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Should we close this as WONTFIX then?

I&apos;m fine with that but I would still like to hear from Darin what he had in mind.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166298</attachid>
            <date>2012-09-28 12:56:22 -0700</date>
            <delta_ts>2013-04-08 18:04:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97911-20120928155538.patch</filename>
            <type>text/plain</type>
            <size>15681</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFkZGM2MGZhNjQ4MzBl
MmUzZjAzMzZiOTM2NTNhY2NiZGVhOGM1NS4uMWFmODcxMTQ1MjRhZTFhMTc1ZDM2YmJjZWE5Mzli
NDM5MjM0MTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA5LTI4ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NVG9rZW5MaXN0IGFk
ZC9yZW1vdmUgc2hvdWxkIHVzZSBWZWN0b3I8QXRvbWljU3RyaW5nPiBpbnN0ZWFkIG9mIFZlY3Rv
cjxTdHJpbmc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgbWFrZXMgRE9NU3RyaW5nLi4uIGFyZ3MgdXNlIFZlY3RvcjxBdG9taWNTdHJpbmc+IGlu
c3RlYWQgb2YgVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgSXQgYWxzbyBmaXhlcyBhbiBpc3N1
ZSB3aGVyZSBOb2RlLi4uIHNob3VsZCBnZW5lcmF0ZSBWZWN0b3I8Tm9kZSo+IGluc3RlYWQgb2Yg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdl
IGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVN
ZXRob2RDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAg
ICAgICogaHRtbC9DbGFzc0xpc3QuaDoKKyAgICAgICAgKiBodG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxlVG9rZW5MaXN0OjphZGQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZSk6CisgICAgICAg
ICogaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5M
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0
OjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OmFkZFRva2Vucyk6
CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlVG9rZW5zKToKKyAgICAgICAgKiBodG1sL0RP
TVRva2VuTGlzdC5oOgorICAgICAgICAoRE9NVG9rZW5MaXN0KToKKwogMjAxMi0wOS0yOCAgTWlr
aGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAg
ICBDb2RlIGluc2lkZSBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKCkgaW1wbGVt
ZW50YXRpb25zIGNhbiBiZSBzaGFyZWQgYW1vbmcgZGlmZmVyZW50IFdLIHBvcnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDFlZmE0YjMwNGY2MmI3MDE1
ZWExZTVkZTcxYzJlYzhkZTRiYzU4MGIuLjhhMzZhY2QyYzFlYmRhMGMxYWIwMGNhMTA4NjdhOWE3
OWY1ZjVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBA
IC0zNjEsNiArMzYxLDE1IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgfTsK
IAogICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8QXRvbWljU3Ry
aW5nPiB7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIEF0b21pY1N0cmluZyYgaW5kZXhlZFZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp
dHM8dW5zaWduZWQgbG9uZz4gewogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBs
b25nJiBpbmRleGVkVmFsdWUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNTM5ZDllZjNmOTIxMzA5YjY5
YmFhMGNmNTQyNjYyYzI3ZmQ1ZGY4Ny4uNDY1YzQ2YzRkZDY4YjBlN2M3OGYzODdhZDU3OGZiMmI3
MjMwMmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTI3MjMsOCArMjcyMyw4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9
IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOwogICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGU7Ci0gICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKLSAgICAg
ICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhcmdUeXBlKSkgeworICAgICAgICAgICAg
ICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICJBdG9taWNTdHJpbmciOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSBHZXROYXRpdmVUeXBl
KCRhcmdUeXBlKTsKICAgICAgICAgICAgICAgICBpZiAoJG5hdGl2ZUVsZW1lbnRUeXBlID1+IC8+
JC8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggMmQzNWQzZDZmMjI5ZWM1ODhmY2FiYmVjZWFmMzY3N2NiMjljN2Y4ZS4u
ZDk3NTZkYmYwMjk1ZDQ1MDIyZmVlN2E0YTBlOTdiYzczN2RlZjQ1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE3Njgs
MTIgKzE3NjgsMTcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZ290byBmYWlsO1xuIjsKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0gZWxzaWYg
KCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKLSAgICAgICAgICAgIG15ICRuYXRpdmVFbGVtZW50
VHlwZSA9IEdldE5hdGl2ZVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7Ci0gICAgICAgICAgICBpZiAo
JG5hdGl2ZUVsZW1lbnRUeXBlID1+IC8+JC8pIHsKLSAgICAgICAgICAgICAgICAkbmF0aXZlRWxl
bWVudFR5cGUgLj0gIiAiOworICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNp
Z25hdHVyZSgkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgIG15ICRuYXRpdmVFbGVtZW50VHlwZTsK
KyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhcmdUeXBlKSkg
eworICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICJBdG9taWNTdHJpbmciOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUg
PSAkbmF0aXZlVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoJG5hdGl2ZUVsZW1lbnRUeXBlID1+
IC8+JC8pIHsKKyAgICAgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlIC49ICIgIjsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG15ICRhcmdU
eXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcik7CiAgICAgICAgICAgICBpZiAo
SXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkcGFyYW1ldGVyTmFt
ZTtcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgZm9y
IChpbnQgaSA9ICRwYXJhbUluZGV4OyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7XG4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCBmMzcwNTRmNGUwM2M0M2VhMTkwMTVhOWNkYjUzZGNhZDcxYjM1ZGQzLi44ZDMz
OGRmNDM0OThjMWUwMGE2Njg1ZmE2NDAxYzdkZWRlNzMxYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjYx
NCw3ICsyNjE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWMKICAgICBjb25zdCBTdHJpbmcm
IGhlYWQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZlQXJndW1l
bnRzPFN0cmluZz4oZXhlYywgMSk7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdGFpbCA9IHRv
TmF0aXZlQXJndW1lbnRzPEF0b21pY1N0cmluZz4oZXhlYywgMSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGltcGwtPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAppbmRleCAyYWJkYjQzNDE4ZDc1OGFmY2QxMGU1NDM3MjA2MGU0YjVlMWU1ZjdhLi43MDIwZDcz
OTEyNzZhNDVmZDIwZDdkNjNlNmZhYThlZTZiMWQ1OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTg5OCw3
ICsxODk4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY1N0cmluZ01l
dGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgU1RSSU5HX1RP
X1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBoZWFkLCBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBFWENF
UFRJT05fQkxPQ0soVmVjdG9yPFN0cmluZz4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPFN0cmlu
Zz4oYXJncywgMSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0b3I8QXRvbWljU3RyaW5nPiwg
dGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8QXRvbWljU3RyaW5nPihhcmdzLCAxKSk7CiAgICAgaW1w
LT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KQEAgLTE5MjIsNyArMTkyMiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwogICAgIEVYQ0VQVElPTl9CTE9DSyhOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5j
ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/
IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKLSAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gdGFpbDsKKyAgICBWZWN0b3I8Tm9kZSo+IHRhaWw7CiAgICAg
Zm9yIChpbnQgaSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKCFW
OE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbaV0pKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKaW5kZXggYTQwZTc1YWFlZjMzNzUzZDM0ODdkMzU0NmQzYzUwZTVkZDcwNGU4NC4u
ZmE0MDhjOGFmNzIzN2Y1ZDUzNzIwZjA1NzcwYTljZjFhYjExM2FmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE4OSw2ICsxODksMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPEF0b21pY1N0cmluZz4geworICAgICAgICBzdGF0aWMgaW5saW5lIEF0b21pY1N0cmlu
ZyBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gdG9XZWJDb3JlQXRvbWljU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPGZsb2F0PiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgZmxvYXQgbmF0aXZlVmFsdWUo
Y29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2YWx1ZSkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2xhc3NMaXN0LmgKaW5kZXggNWUzMzljMDQ1YjI0NWY5ZTY1NGJkYWRkM2Q2ZmU0MGM5OTZmMGVm
ZC4uY2FlNDFhMWNlNTA3NTFhNTRlMWIyZjVjMGZmMzc5NjBmMGVhMWYxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NsYXNzTGlzdC5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAKaW5kZXggNGVmMGY3ZjUx
YTUwMDI4NTgyYjgwNGQ1MzdhM2FjYjllMjQ5NWVhMS4uNzE4MmM0OWQ4N2E3NzIxMDEwYjgyMDll
MGM0M2NkZWVkNWI1MjVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRv
a2VuTGlzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6
Y29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKSBjb25zdAogICAgIHJl
dHVybiBtX3Rva2Vucy5jb250YWlucyh0b2tlbik7CiB9CiAKLXZvaWQgRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8QXRvbWljU3Ry
aW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01Ub2tlbkxpc3Q6OmFk
ZCh0b2tlbnMsIGVjKTsKIApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIERPTVNldHRhYmxlVG9rZW5M
aXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogICAgICAgICBtX3Rv
a2Vucy5hZGQodG9rZW4pOwogfQogCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpyZW1vdmUo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERP
TVNldHRhYmxlVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHRv
a2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NVG9rZW5MaXN0OjpyZW1vdmUodG9r
ZW5zLCBlYyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmgKaW5kZXggZjMzOGRj
MzJiZjY5YmMxNzQ3MTQ4ZGU0NjUyNDVhYTE0MWUxYjE1NS4uMTM5MjdmOWNkMzA3YjhiYjM3NGEx
NDdiZTI5YTkwN2VkMjU1YjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01T
ZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVU
b2tlbkxpc3QuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rva2Vucy5zaXplKCk7IH0KICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBF
eGNlcHRpb25Db2RlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkKGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4m
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB2
YWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVRva2VuTGlzdC5jcHAKaW5kZXggNTMzYjFmMTAzNjc5MjYxZmJiNDVhZWY2Zjk4ZTI0NGFj
ODU3YTZlMS4uN2E2Zjc5MjdkYjNiODk1OTIwZDZhN2U3ZjAxM2RmYzQyZjc2MzAzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBib29sIERPTVRv
a2VuTGlzdDo6dmFsaWRhdGVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBET01Ub2tlbkxpc3Q6OnZh
bGlkYXRlVG9rZW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorYm9vbCBET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW5zKGNvbnN0IFZlY3RvcjxBdG9t
aWNTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghdmFsaWRhdGVU
b2tlbih0b2tlbnNbaV0sIGVjKSkKQEAgLTY4LDE0ICs2OCwxNCBAQCBib29sIERPTVRva2VuTGlz
dDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CiAKIHZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tl
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwotICAg
IHRva2Vucy5hcHBlbmQodG9rZW4uc3RyaW5nKCkpOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+
IHRva2VuczsKKyAgICB0b2tlbnMuYXBwZW5kKHRva2VuKTsKICAgICBhZGQodG9rZW5zLCBlYyk7
CiB9CiAKLXZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2Vu
cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IFZlY3Rv
cjxBdG9taWNTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFZlY3Rv
cjxTdHJpbmc+IGZpbHRlcmVkVG9rZW5zOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IGZpbHRl
cmVkVG9rZW5zOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbnNbaV0sIGVjKSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTkxLDEyICs5MSwxMiBAQCB2b2lkIERPTVRva2VuTGlzdDo6YWRkKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIERP
TVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKLSAgICB0b2tlbnMuYXBwZW5k
KHRva2VuLnN0cmluZygpKTsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiB0b2tlbnM7CisgICAg
dG9rZW5zLmFwcGVuZCh0b2tlbik7CiAgICAgcmVtb3ZlKHRva2VucywgZWMpOwogfQogCi12b2lk
IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXZhbGlk
YXRlVG9rZW5zKHRva2VucywgZWMpKQogICAgICAgICByZXR1cm47CkBAIC0xNDUsMTIgKzE0NSwx
MiBAQCB2b2lkIERPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB0b2tlbikKIAogU3RyaW5nIERPTVRva2VuTGlzdDo6YWRkVG9rZW4oY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnB1dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsKLSAgICBWZWN0b3I8U3Ry
aW5nPiB0b2tlbnM7Ci0gICAgdG9rZW5zLmFwcGVuZCh0b2tlbi5zdHJpbmcoKSk7CisgICAgVmVj
dG9yPEF0b21pY1N0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4pOwogICAg
IHJldHVybiBhZGRUb2tlbnMoaW5wdXQsIHRva2Vucyk7CiB9CiAKLVN0cmluZyBET01Ub2tlbkxp
c3Q6OmFkZFRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdG9rZW5zKQorU3RyaW5nIERPTVRva2VuTGlzdDo6YWRkVG9rZW5zKGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5wdXQsIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiB0b2tlbnMpCiB7CiAg
ICAgYm9vbCBuZWVkc1NwYWNlID0gZmFsc2U7CiAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIFN0cmlu
ZyBET01Ub2tlbkxpc3Q6OmFkZFRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYKIAogU3RyaW5nIERPTVRva2VuTGlzdDo6cmVtb3ZlVG9rZW4oY29u
c3QgQXRvbWljU3RyaW5nJiBpbnB1dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsKLSAg
ICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7Ci0gICAgdG9rZW5zLmFwcGVuZCh0b2tlbi5zdHJpbmco
KSk7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQo
dG9rZW4pOwogICAgIHJldHVybiByZW1vdmVUb2tlbnMoaW5wdXQsIHRva2Vucyk7CiB9CiAKLVN0
cmluZyBET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorU3RyaW5nIERPTVRva2VuTGlzdDo6cmVt
b3ZlVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IFZlY3RvcjxBdG9taWNT
dHJpbmc+JiB0b2tlbnMpCiB7CiAgICAgLy8gQWxnb3JpdGhtIGRlZmluZWQgYXQgaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9u
LW1pY3Jvc3ludGF4ZXMuaHRtbCNyZW1vdmUtYS10b2tlbi1mcm9tLWEtc3RyaW5nCiAgICAgLy8g
TmV3IHNwZWMgaXMgYXQgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JlbW92ZS1hLXRva2Vu
LWZyb20tYS1zdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCmluZGV4IDRiMjVkY2U1
ZTNjODk3MjRmYTU1M2IwYjcxNDY3ZTUxYTU2MzJhOWMuLjEyYzQ5YjFjODAzYjRhOGFlMzBjYWYy
MDkxYmY3YjAxNzcxZDIzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaApAQCAtNDcs
OSArNDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcgaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9t
aWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkKGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIGJvb2wgdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIApAQCAtNjYsMTEgKzY2LDExIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAgICBzdGF0aWMgYm9vbCB2
YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBz
dGF0aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGFkZFRva2Vu
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHN0YXRpYyBT
dHJpbmcgYWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CisgICAgc3RhdGljIFN0cmluZyBhZGRUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZVRva2Vu
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHN0YXRpYyBT
dHJpbmcgcmVtb3ZlVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisgICAgc3RhdGljIFN0cmluZyByZW1vdmVUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>