<?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>65325</bug_id>
          
          <creation_ts>2011-07-28 10:30:26 -0700</creation_ts>
          <short_desc>Performance tweak to parseInt</short_desc>
          <delta_ts>2011-07-30 06:20: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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65366</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>oliver</cc>
    
    <cc>shinyak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443549</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-28 10:30:26 -0700</bug_when>
    <thetext>parseInt applied to small positive numbers = floor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443552</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-28 10:32:50 -0700</bug_when>
    <thetext>Fixed in r91938.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443554</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-28 10:34:41 -0700</bug_when>
    <thetext>Shouldn’t it be &lt;= INT_MAX rather than &lt; INT_MAX? Should we be using a constant instead of INT_MAX? Could we use unsigned instead of int to cover a slightly larger range?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443696</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-28 16:21:56 -0700</bug_when>
    <thetext>&gt; Shouldn’t it be &lt;= INT_MAX rather than &lt; INT_MAX?
&gt; Should we be using a constant instead of INT_MAX?

This should probably be &lt; (INT_MAX + 1), will fix this &amp; use a constant.

&gt; Could we use unsigned instead of int to cover a slightly larger range?

Unsigned doesn&apos;t buy us much coverage, and makes the jsNumber conversion slightly more expensive (we&apos;ll have to check we&apos;re in the int32 range &amp; potentially generate a boxed double), so I probably won&apos;t do this.  I&apos;d go to int64_t if this bought us the whole 10^21 range, but sadly not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444276</commentid>
    <comment_count>4</comment_count>
      <attachid>102433</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-07-30 06:18:14 -0700</bug_when>
    <thetext>Created attachment 102433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444277</commentid>
    <comment_count>5</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-07-30 06:19:47 -0700</bug_when>
    <thetext>Oops!  I have mistaken to upload the patch to the wrong place...!!
Please ignore it and remove the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>102433</attachid>
            <date>2011-07-30 06:18:14 -0700</date>
            <delta_ts>2011-07-30 06:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65325-20110730221812.patch</filename>
            <type>text/plain</type>
            <size>20698</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDI4NTY3Zjg2ZWI1NzFiNGQ5MzMx
M2JiODM4ZmUzNjdkMjQwNDE0Li42YmRlMzY1NzgxZGQ4NjFhYzZmODEzODhjZDZkZWUzOTU0NGUy
ZjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMzAgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTI4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbUXRdIEZpeCBzdHlsZSBlcnJvcnMgb2YgdGVzdF9leHBlY3RhdGlv
bnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIt
c2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1z
aXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjBlM2JmNzU5ZmFjMWE0ZmZkNTI2OWUzZWI0
ZjI2N2MwNmJiZDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NCBAQAorVGVzdCBmb3Ig
c2l6ZSBhdHRyaWJ1dGUgb2YgaW5wdXQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1RoZSBudW1iZXIgaW5wdXQgd2l0aG91dCBtaW4vbWF4L3N0ZXAgaGFzIHRoZSBzYW1lIHdpZHRo
IGFzIHRleHQgaW5wdXQKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lk
dGgKKworVGhlIG51bWJlciBpbnB1dCBzaG91bGQgaWdub3JlIHNpemUgYXR0cmlidXRlIGZvciBs
YXlvdXQKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1Mg
bnVtYmVyLnNpemUgaXMgMTAKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0
V2lkdGgKK1BBU1MgbnVtYmVyLnNpemUgaXMgMTAwCisKK0lmIG1pbiBvciBtYXggaXMgYWJzZW50
LCB0aGUgbnVtYmVyIGlucHV0IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRd
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK0lmIHN0ZXAgaXMgYW55LCB0aGUgaW5wdXRbdHlwZT10
ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0XQorUEFTUyBudW1iZXIu
b2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGgg
aXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZz
ZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorCitU
aGUgZGVmYXVsdCBzdGVwIGRvZXMgbm90IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KK1BBU1MgbnVt
YmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdp
ZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQu
b2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgK
K1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVy
Lm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRo
IGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zm
c2V0V2lkdGgKKworQ2hlY2sgdGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdoZW4gbWluL21h
eC9zdGVwIGlzIGNoYW5nZWQgdmFyaW91c2x5CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0
ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdp
ZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51
bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRX
aWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQ
QVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5v
ZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBp
cyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNl
dFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNT
IG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZz
ZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0
ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdp
ZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51
bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRX
aWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQ
QVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5v
ZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LW51bWJlci1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LW51bWJlci1zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjN2E3YjNiYTgwZTZjYmY1NjBlZGZh
NDUzZDg1NmIyNmM1NGMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtbnVtYmVyLXNpemUuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IGZvciBzaXplIGF0dHJpYnV0ZSBvZiBpbnB1dCcpOworCitmdW5jdGlvbiBzaG91bGRCZVRo
ZVNhbWVXaWR0aChzaXplLCBtaW4sIG1heCwgc3RlcCkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7
CisgICAgbnVtYmVyLnN0ZXAgPSBzdGVwOworICAgIG51bWJlci5taW4gPSBtaW47CisgICAgbnVt
YmVyLm1heCA9IG1heDsKKyAgICBzaG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRoJywgJ3RleHQu
b2Zmc2V0V2lkdGgnKTsKK30KKwordmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworcGFyZW50LmlubmVy
SFRNTCA9ICc8aW5wdXQgdHlwZT1udW1iZXIgaWQ9bnVtYmVyPjxpbnB1dCB0eXBlPXRleHQgaWQ9
dGV4dD4nCit2YXIgbnVtYmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bWJlcicpOwor
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpOworCitkZWJ1ZygnVGhl
IG51bWJlciBpbnB1dCB3aXRob3V0IG1pbi9tYXgvc3RlcCBoYXMgdGhlIHNhbWUgd2lkdGggYXMg
dGV4dCBpbnB1dCcpOworc2hvdWxkQmUoJ251bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNl
dFdpZHRoJyk7CitkZWJ1ZygnJykKKworZGVidWcoJ1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGln
bm9yZSBzaXplIGF0dHJpYnV0ZSBmb3IgbGF5b3V0Jyk7CitudW1iZXIuc2l6ZSA9IDEwOworc2hv
dWxkQmUoJ251bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNldFdpZHRoJyk7CitzaG91bGRC
ZSgnbnVtYmVyLnNpemUnLCAnMTAnKTsKK251bWJlci5zaXplID0gMTAwOworc2hvdWxkQmUoJ251
bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNldFdpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVy
LnNpemUnLCAnMTAwJyk7CitudW1iZXIuc2l6ZSA9IG51bGw7CitkZWJ1ZygnJykKKworZGVidWco
J0lmIG1pbiBvciBtYXggaXMgYWJzZW50LCB0aGUgbnVtYmVyIGlucHV0IGhhcyB0aGUgc2FtZSB3
aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRdJykKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIDAs
IG51bGwsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgobnVsbCwgbnVsbCwgMTAwLCBudWxs
KTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIG51bGwsIG51bGwsIDEwMCk7CitkZWJ1Zygn
Jyk7CisKK2RlYnVnKCdJZiBzdGVwIGlzIGFueSwgdGhlIGlucHV0W3R5cGU9dGV4dF0gaGFzIHRo
ZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5cGU9dGV4dF0nKQorc2hvdWxkQmVUaGVTYW1lV2lkdGgo
bnVsbCwgMCwgMSwgJ2FueScpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgobnVsbCwgMCwgMTAsICdh
bnknKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIDAsIDEuMSwgJ2FueScpOworc2hvdWxk
QmVUaGVTYW1lV2lkdGgobnVsbCwgMCwgMSwgJ2FueScpOworZGVidWcoJycpOworCitkZWJ1Zygn
VGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuJykKK3Nob3Vs
ZEJlVGhlU2FtZVdpZHRoKDEsIDAsIDEsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoMywg
MCwgMTAwLCBudWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIC0xMDAsIDEsIG51bGwpOwor
c2hvdWxkQmVUaGVTYW1lV2lkdGgoMSwgMC4wLCAxLjAsIG51bGwpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMC41LCAxLjUsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNCwgLTAuNSwg
MS41LCBudWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDExLCAxZSsxMCwgMWUrMTAgKyAxLCBu
dWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDEyLCAtMWUrMTAsIDFlKzEwICsgMSwgbnVsbCk7
CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdDaGVjayB0aGUgd2lkdGggb2YgYSBudW1iZXIgaW5wdXQg
d2hlbiBtaW4vbWF4L3N0ZXAgaXMgY2hhbmdlZCB2YXJpb3VzbHknKQorc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMSwgMCwgMSwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCgyLCAwLCAxMCwgMSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCgzLCAwLCAxMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgo
NCwgMCwgMTAwMCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg1LCAwLCAxMDAwMCwgMSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCg2LCAwLCAxMDAwMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lk
dGgoNywgMCwgMTAwMDAwMCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg4LCAwLCAxMDAwMDAw
MCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg5LCAwLCAxMDAwMDAwMDAsIDEpOworc2hvdWxk
QmVUaGVTYW1lV2lkdGgoMTAsIDAsIDEwMDAwMDAwMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lk
dGgoMiwgLTEsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoMywgLTEwLCAwLCAxKTsKK3No
b3VsZEJlVGhlU2FtZVdpZHRoKDQsIC0xMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgo
NSwgLTEwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNiwgLTEwMDAwLCAwLCAxKTsK
K3Nob3VsZEJlVGhlU2FtZVdpZHRoKDcsIC0xMDAwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoOCwgLTEwMDAwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoOSwgLTEwMDAw
MDAwLCAwLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDEwLCAtMTAwMDAwMDAwLCAwLCAxKTsK
K3Nob3VsZEJlVGhlU2FtZVdpZHRoKDExLCAtMTAwMDAwMDAwMCwgMCwgMSk7CitzaG91bGRCZVRo
ZVNhbWVXaWR0aCgzLCAwLCAxLCAwLjUpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNCwgMCwgMSwg
MC4wNSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg1LCAwLCAxLCAwLjAwNSk7CitzaG91bGRCZVRo
ZVNhbWVXaWR0aCg2LCAwLCAxLCAwLjAwMDUpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNywgMCwg
MSwgMC4wMDAwNSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg4LCAwLCAxLCAwLjAwMDAwNSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCg5LCAwLCAxLCAwLjAwMDAwMDUpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMC41LCAxLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIDAuMDUsIDEsIDEp
Oworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNSwgMC4wMDUsIDEsIDEpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMS41LCAyLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIDEuMDUsIDIsIDEp
Oworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNSwgMS4wMDUsIDIsIDEpOworZGVidWcoJycpCisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQzMDVhMWJmYmU1ZThiZTU0YmVkNmYwYzgzMzEz
NTJlYTYwMTg2MC4uNGFlYjFkOWEzYjBiZjM0NzE2YjY2ZmVkNDM4NGYyNmVjNjJiZGEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTA3LTMwICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlucHV0W3R5cGU9bnVtYmVyXSBlbGVt
ZW50IHNob3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0byBzaG93IHRoZSB3aWRlc3QgcG9z
c2libGUgdmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUuaHRtbAorCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgICAgQWRkZWQgc3RlcEF0dHJp
YnV0ZUNoYW5nZWQgaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBBZGRlZCB0byBnZXQgdGhlIHdpZGVz
dCBwb3NzaWJsZSBjb250ZW50IGxlbmd0aC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3
aWRlc3QgcG9zc2libGUgY29udGVudCBsZW5ndGguIElmIG5vdCBvdmVycmlkZW4sIHNpemUoKSBp
cyB1c2VkIGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgICAgV2lsbCBiZSBjYWxsZWQgd2hlbiBzdGVwIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoQmVmb3JlRGVj
aW1hbFBvaW50KToKKyAgICAgICAgICAgQWRkZWQgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBiZWZv
cmUgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3aWRlc3QgcG9z
c2libGUgY29udGVudCBsZW5ndGggaWYgbWluL21heCBhcmUgZGVmaW5lZCwgYW5kIHN0ZXAgaXMg
ZGVmaW5lZCBjb3JyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Om1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICAgIFJlYXR0YWNoZXMgdGhlIHJlbmRl
cmVyIGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVw
QXR0cmlidXRlQ2hhbmdlZCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjpzaG91bGRBdm9pZFJlZm9ybWF0KToKKyAgICAgICAgICAgQ2hlY2sgdGhlIGNvbmRpdGlv
biB3aGVyZSByZWF0dGFjaGluZyBpcyBub3QgcHJlZmVycmVkLgorICAgICAgICAqIGh0bWwvTnVt
YmVySW5wdXRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVk
Q29udGVudFdpZHRoKToKKyAgICAgICAgICAgVXNlcyBwb3NzaWJsZUNvbnRlbnRTaXplIGluc3Rl
YWQgb2Ygc2l6ZS4KKyAgICAgICAgICAgQWxzbywgYWRkcyBpbm5lclNwaW5CdXR0b25FbGVtZW50
IHNpemUgdG8gd2lkdGguCisKIDIwMTEtMDctMjggIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVy
c29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVtYWluaW5nIHVzZXMgb2YgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOGQyNTY4Zjg3YTE4YmVkMGI1NTg1NTI3
MDdlYzdiMDRjYjg0ODQ2MS4uODRjMDJkMjUzM2Y0YzI0YjQyMTVlNDgxZjQ2NTdjM2NlMTI2NDJl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MCw2ICs1
MCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTnVtYmVySW5wdXRU
eXBlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgpAQCAtODAxLDcgKzgw
MiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIp
IHsKICAgICAgICAgbV9pbnB1dFR5cGUtPm11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpOwogICAg
ICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBwYXR0ZXJuQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gcHJlY2lzaW9uQXR0ciB8fCBhdHRy
LT5uYW1lKCkgPT0gc3RlcEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3Rl
cEF0dHIpIHsKKyAgICAgICAgbV9pbnB1dFR5cGUtPnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7Cisg
ICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyKQogICAg
ICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAgIG1faW5wdXRUeXBlLT5kaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKTsKQEAgLTk5MSw2ICs5OTUsMTEgQEAgaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNp
emUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKK2ludCBIVE1MSW5wdXRFbGVtZW50
Ojpwb3NzaWJsZUNvbnRlbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnBvc3NpYmxlQ29udGVudFNpemUoZGVmYXVsdFNpemUpOworfQorCiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1lbnQqIHNvdXJjZSkK
IHsKICAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBzb3VyY2VFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTElucHV0RWxlbWVudCo+KHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDkyZmE5ZjU4NTdhNzNhOTExNTBhNTU4ODhlODQ1OTJkMzQz
MWZjZWUuLjU1NzY0ZDJlOGRmNmRhNzVhNWZmMjAzYjI3ZTQ3NTVmMTA5ZDk5MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBpbmRl
dGVybWluYXRlKCk7IH0KIAogICAgIGludCBzaXplKCkgY29uc3Q7CisgICAgaW50IHBvc3NpYmxl
Q29udGVudFNpemUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQx
N2M4N2ExNDAwZjk0ZWZlNTAuLmE4MDNkOTUyOWQ1YWExMmQ0ZTJkN2FhZTI5NzBiOWIwOTM1ZjI5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI0OSw2ICsyNDksMTEgQEAgZG91
YmxlIElucHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCBJ
bnB1dFR5cGU6OnBvc3NpYmxlQ29udGVudFNpemUoaW50IGRlZmF1bHRTaXplKSBjb25zdAorewor
ICAgIHJldHVybiBlbGVtZW50KCktPnNpemUoKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXN1cHBv
cnRlZCB0eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxs
b3dlZFZhbHVlU3RlcCgpLgpAQCAtNDUzLDYgKzQ1OCwxMCBAQCB2b2lkIElucHV0VHlwZTo6bWlu
T3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKIH0KIAordm9pZCBJbnB1dFR5cGU6OnN0ZXBBdHRy
aWJ1dGVDaGFuZ2VkKCkKK3sKK30KKwogYm9vbCBJbnB1dFR5cGU6OmNhbkJlU3VjY2Vzc2Z1bFN1
Ym1pdEJ1dHRvbigpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgK
aW5kZXggMmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0YjdiY2JmNDY0MS4uODNjODllZDlm
NTE2YTU1ODZmNmFjMzI4MDBmNDJjZjU2OWRkMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRW
YWx1ZUZvclN0ZXBVcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
cG9zc2libGVDb250ZW50U2l6ZShpbnQgZGVmYXVsdFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlIHN0ZXApIGNvbnN0OwogICAg
IHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3Rl
cEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0OwpAQCAtMjA2LDYgKzIwNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGFsdEF0
dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgp
OwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAppbmRleCBiODFlM2E0NTYyZTQ2NWMwNTU4OWU1YWRhNzUzODRiYTU2
NDIzODc4Li5mNWM4MTAxMzViMmZjZTg0NDMwMWFiMmNjOTcxNWEzMmExMGIzNTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC01Miw2ICs1MiwyMiBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVw
ID0gMS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxLjA7
CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRNYXhDb250ZW50U2l6ZSA9IDIwOworCitzdGF0aWMg
dW5zaWduZWQgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICAv
LyBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSwgJy0nIHNob3VsZCBiZSBjb3VudGVkLgorCisgICAgZG91
YmxlIGFic1ZhbHVlID0gZmFicyh2YWx1ZSk7CisgICAgaWYgKGFic1ZhbHVlIDwgMSkKKyAgICAg
ICAgcmV0dXJuIHZhbHVlIDwgMCA/IDIgOiAxOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8aW50Pihsb2cxMChmbG9vcihhYnNWYWx1ZSkpKSArIDE7CisgICAgaWYgKHZhbHVl
IDwgMCkKKyAgICAgICAgbGVuZ3RoICs9IDE7CisKKyAgICByZXR1cm4gbGVuZ3RoOworfQogCiBQ
YXNzT3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKIHsKQEAgLTEyMSw2ICsxMzcsNTUgQEAgZG91YmxlIE51bWJlcklucHV0
VHlwZTo6bWF4aW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKIH0KIAoraW50IE51bWJlcklucHV0VHlwZTo6cG9zc2libGVDb250ZW50U2l6ZShpbnQgZGVm
YXVsdFNpemUpIGNvbnN0Cit7CisgICAgY29uc3QgZG91YmxlIGxpbWl0ID0gbnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKTsKKworICAgIHVuc2lnbmVkIG1pblZhbHVlRGVjaW1hbFBsYWNlcywg
bWF4VmFsdWVEZWNpbWFsUGxhY2VzLCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRvdWJs
ZSBtaW5WYWx1ZURvdWJsZSwgbWF4VmFsdWVEb3VibGUsIHN0ZXBWYWx1ZURvdWJsZTsKKworICAg
IFN0cmluZyBtaW5WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKTsK
KyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWlu
VmFsdWUsICZtaW5WYWx1ZURvdWJsZSwgJm1pblZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgICAg
IHJldHVybiBkZWZhdWx0U2l6ZTsKKyAgICBpZiAobWluVmFsdWVEb3VibGUgPCAtbGltaXQgfHwg
bGltaXQgPCBtaW5WYWx1ZURvdWJsZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworCisg
ICAgU3RyaW5nIG1heFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIp
OworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyht
YXhWYWx1ZSwgJm1heFZhbHVlRG91YmxlLCAmbWF4VmFsdWVEZWNpbWFsUGxhY2VzKSkKKyAgICAg
ICAgcmV0dXJuIGRlZmF1bHRTaXplOworICAgIGlmIChtYXhWYWx1ZURvdWJsZSA8IC1saW1pdCB8
fCBsaW1pdCA8IG1heFZhbHVlRG91YmxlKQorICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7CisK
KyAgICBpZiAobWF4VmFsdWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgeworICAgICAgICBtYXhW
YWx1ZURvdWJsZSA9IG1pblZhbHVlRG91YmxlOworICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFj
ZXMgPSBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgfQorCisgICAgU3RyaW5nIHN0ZXBWYWx1
ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKHN0ZXBW
YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3RlcFZhbHVlRG91YmxlID0gMTsKKyAgICAgICAg
c3RlcFZhbHVlRGVjaW1hbFBsYWNlcyA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBWYWx1ZSwgJnN0
ZXBWYWx1ZURvdWJsZSwgJnN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpKQorICAgICAgICAgICAgcmV0
dXJuIGRlZmF1bHRTaXplOworICAgICAgICBpZiAoc3RlcFZhbHVlRG91YmxlIDwgLWxpbWl0IHx8
IGxpbWl0IDwgc3RlcFZhbHVlRG91YmxlKQorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXpl
OworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2lu
dChtaW5WYWx1ZURvdWJsZSk7CisgICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3Jl
RGVjaW1hbFBvaW50KG1heFZhbHVlRG91YmxlKSk7CisgICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwg
bGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0ZXBWYWx1ZURvdWJsZSkpOworCisgICAgdW5zaWdu
ZWQgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7CisgICAg
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1h
eFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgo
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOworCisgICAg
aWYgKGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID4gMCkKKyAgICAgICAgbGVuZ3RoICs9IGxlbmd0
aEFmdGVyRGVjaW1hbFBvaW50ICsgMTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKIGJvb2wg
TnVtYmVySW5wdXRUeXBlOjppc1N0ZXBwYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0yNzQsNCArMzM5LDI4IEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc051bWJlckZpZWxk
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBOdW1iZXJJbnB1dFR5cGU6Om1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKCFzaG91bGRBdm9pZFJlZm9ybWF0
KCkpCisgICAgICAgIGVsZW1lbnQoKS0+cmVhdHRhY2hJZkF0dGFjaGVkKCk7Cit9CisKK3ZvaWQg
TnVtYmVySW5wdXRUeXBlOjpzdGVwQXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKCFzaG91
bGRBdm9pZFJlZm9ybWF0KCkpCisgICAgICAgIGVsZW1lbnQoKS0+cmVhdHRhY2hJZkF0dGFjaGVk
KCk7Cit9CisKK2Jvb2wgTnVtYmVySW5wdXRUeXBlOjpzaG91bGRBdm9pZFJlZm9ybWF0KCkKK3sK
KyAgICAvLyBUT0RPOgorICAgIGlmIChlbGVtZW50KCktPnJlbmRlclN0eWxlKCkgJiYgIWVsZW1l
bnQoKS0+cmVuZGVyU3R5bGUoKS0+d2lkdGgoKS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmIChlbGVtZW50KCktPmZvY3VzZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IDU0ZWFhNjZiNDQ1YWUxMjA3
YjU5YzQ4Njg1YTEzY2ZkNWVlMGRmMTYuLmI1NTBmYTExOWQzYjMxZTFiZDA5NTFhNWVjMGY3ODc0
OGJjZWI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtNTEsNiAr
NTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlTGltaXRhdGlv
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICB2aXJ0
dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgcG9zc2libGVDb250
ZW50U2l6ZShpbnQgZGVmYXVsdFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBw
YWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5n
JiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwpA
QCAtNzIsNiArNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0
U3BlZWNoQXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXZvaWRSZWZv
cm1hdCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyLmgKaW5kZXggMDFkMjU1M2VmMjY1ZGQ0YTJm
MWRiYmY1Y2QxYzVmMTViZjBkMGFmMy4uMTNiNGVkMGZhYzc3NWFlNjQwZjJlNmQzY2Q0ZTVhNGZl
MmFmYWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6
ZWROdW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51
bWJlci5oCkBAIC01MSw2ICs1MSw4IEBAIGRvdWJsZSBwYXJzZUxvY2FsaXplZE51bWJlcihjb25z
dCBTdHJpbmcmKTsKIC8vIHJlc3VsdGFudCBzdHJpbmcuCiBTdHJpbmcgZm9ybWF0TG9jYWxpemVk
TnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZnJhY3Rpb25EaWdpdHMpOwogCitTdHJpbmcgZ2V0TG9j
YWxpemVkRGVjaW1hbFBvaW50KCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIExvY2FsaXplZE51bWJlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDUyYTVhYzhhZDE1ZTAz
OTBlNWNmZmQ0NGI0MTc0YzdhMTdlNWRlZWYuLmRjZmVlZTUwMTE3OTVjYmU5M2I4MmY0MzMyZmVj
NmYzNWZkMDdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zODksMTAgKzM4OSwxMCBAQCBmbG9h
dCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmdldEF2Z0NoYXJXaWR0aChBdG9taWNTdHJp
bmcgZmFtaWx5KQogCiAgICAgcmV0dXJuIFJlbmRlclRleHRDb250cm9sOjpnZXRBdmdDaGFyV2lk
dGgoZmFtaWx5KTsKIH0KLSAgICAKKwogaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
cHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QKIHsKLSAgICBpbnQg
ZmFjdG9yID0gaW5wdXRFbGVtZW50KCktPnNpemUoKTsKKyAgICBpbnQgZmFjdG9yID0gaW5wdXRF
bGVtZW50KCktPnBvc3NpYmxlQ29udGVudFNpemUoKTsKICAgICBpZiAoZmFjdG9yIDw9IDApCiAg
ICAgICAgIGZhY3RvciA9IDIwOwogCkBAIC00MjMsNiArNDIzLDExIEBAIGludCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgp
IGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBjYW5jZWxSZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsg
Y2FuY2VsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKwogICAgICAgICAgICAgICAgICAgY2FuY2Vs
UmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCk7
CiAKKyAgICBIVE1MRWxlbWVudCogc3BpbkJ1dHRvbiA9IGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQo
KTsKKyAgICBpZiAoUmVuZGVyQm94KiBzcGluUmVuZGVyZXIgPSBzcGluQnV0dG9uID8gc3BpbkJ1
dHRvbi0+cmVuZGVyQm94KCkgOiAwKQorICAgICAgICByZXN1bHQgKz0gc3BpblJlbmRlcmVyLT5i
b3JkZXJMZWZ0KCkgKyBzcGluUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKworICAgICAgICAgICAg
ICAgICAgc3BpblJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsgc3BpblJlbmRlcmVyLT5wYWRkaW5n
UmlnaHQoKTsKKwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgSFRNTEVsZW1lbnQqIHNw
ZWVjaEJ1dHRvbiA9IHNwZWVjaEJ1dHRvbkVsZW1lbnQoKTsKICAgICBpZiAoUmVuZGVyQm94KiBz
cGVlY2hSZW5kZXJlciA9IHNwZWVjaEJ1dHRvbiA/IHNwZWVjaEJ1dHRvbi0+cmVuZGVyQm94KCkg
OiAwKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>