<?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>127161</bug_id>
          
          <creation_ts>2014-01-16 22:04:55 -0800</creation_ts>
          <short_desc>Get rid of OpaqueJSString::deprecatedCharacters()</short_desc>
          <delta_ts>2014-01-17 09:45:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>127164</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969043</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-16 22:04:55 -0800</bug_when>
    <thetext>Get rid of OpaqueJSString::deprecatedCharacters()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969046</commentid>
    <comment_count>1</comment_count>
      <attachid>221440</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-16 22:29:40 -0800</bug_when>
    <thetext>Created attachment 221440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969048</commentid>
    <comment_count>2</comment_count>
      <attachid>221440</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-16 22:34:58 -0800</bug_when>
    <thetext>Comment on attachment 221440
Patch

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

&gt; Source/JavaScriptCore/API/OpaqueJSString.cpp:45
&gt; +    if (UChar* characters = m_characters)
&gt; +        fastFree(static_cast&lt;void*&gt;(characters));

You should add a comment about why you are putting this in a local.

&gt; Source/JavaScriptCore/API/OpaqueJSString.cpp:78
&gt; +    UChar* characters = m_characters;
&gt; +    if (characters)
&gt; +        return characters;

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969051</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-16 22:46:20 -0800</bug_when>
    <thetext>Committed r162185: &lt;http://trac.webkit.org/changeset/162185&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969053</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-16 22:58:30 -0800</bug_when>
    <thetext>This broke Windows build:

     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\X86Assembler.h(2348): warning C4309: &apos;argument&apos; : truncation of constant value
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(97): error C2039: &apos;atomic&apos; : is not a member of &apos;std&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(97): error C2143: syntax error : missing &apos;;&apos; before &apos;&lt;&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(97): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(97): error C2238: unexpected token(s) preceding &apos;;&apos;
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(79): error C2614: &apos;OpaqueJSString&apos; : illegal member initialization: &apos;m_characters&apos; is not a base or member
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(85): error C2614: &apos;OpaqueJSString&apos; : illegal member initialization: &apos;m_characters&apos; is not a base or member
     1&gt;c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(91): error C2614: &apos;OpaqueJSString&apos; : illegal member initialization: &apos;m_characters&apos; is not a base or member</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969056</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-16 23:04:25 -0800</bug_when>
    <thetext>And Mac too:


Undefined symbols for architecture x86_64:
  &quot;__ZN14OpaqueJSStringD1Ev&quot;, referenced from:
      __ZN3WTF20ThreadSafeRefCountedI14OpaqueJSStringE5derefEv in ScriptCachedFrameData.o
      __ZN3WTF20ThreadSafeRefCountedI14OpaqueJSStringE5derefEv in ScriptController.o

Undefined symbols for architecture i386:
  &quot;__ZN14OpaqueJSStringD1Ev&quot;, referenced from:
      __ZN24OpaqueJSClassContextDataD2Ev in ScriptCachedFrameData.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969070</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-16 23:59:48 -0800</bug_when>
    <thetext>...and it also fails JSC API test:

2014-01-16 23:47:39.670 testapi[96811:507] myObj2.currentThis: [object Object]
ASSERTION FAILED: JSStringGetCharactersPtr(constantStringRef) == constantString
/Volumes/Data/slave/mavericks-release/build/Source/JavaScriptCore/API/tests/testapi.c(1263) : int main(int, char **)
1   0x7fff8e72a5fd start
2   0x1

http://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK1%20(Tests)/builds/2483/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969072</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-17 00:08:01 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 127164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969074</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 00:09:55 -0800</bug_when>
    <thetext>Looks like this really breaks semantics of JSStringCreateWithCharactersNoCopy, rolling out :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969142</commentid>
    <comment_count>9</comment_count>
      <attachid>221471</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-17 09:06:26 -0800</bug_when>
    <thetext>Created attachment 221471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969144</commentid>
    <comment_count>10</comment_count>
      <attachid>221472</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-17 09:12:29 -0800</bug_when>
    <thetext>Created attachment 221472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969154</commentid>
    <comment_count>11</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-17 09:40:42 -0800</bug_when>
    <thetext>Committed r162205: &lt;http://trac.webkit.org/changeset/162205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969155</commentid>
    <comment_count>12</comment_count>
      <attachid>221472</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 09:41:44 -0800</bug_when>
    <thetext>Comment on attachment 221472
Patch

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

&gt; Source/JavaScriptCore/API/OpaqueJSString.h:98
&gt; +    // This will be initialized on demand when characters() is called.

This comment seems off now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969156</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-17 09:45:17 -0800</bug_when>
    <thetext>And this broke build on Windows (EWS also said so):

     1&gt;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xxatomic(229): error C2664: &apos;std::_Atomic_address &amp;std::_Atomic_address::operator =(const std::_Atomic_address &amp;)&apos; : cannot convert argument 1 from &apos;const UChar *&apos; to &apos;void *&apos;
                 Conversion loses qualifiers
                 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xxatomic(227) : while compiling class template member function &apos;std::atomic&lt;const UChar *&gt;::atomic(_Ty *) throw()&apos;
                 with
                 [
                     _Ty=const UChar
                 ]
                 c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(75) : see reference to function template instantiation &apos;std::atomic&lt;const UChar *&gt;::atomic(_Ty *) throw()&apos; being compiled
                 with
                 [
                     _Ty=const UChar
                 ]
                 c:\cygwin\home\buildbot\slave\win-release\build\source\javascriptcore\api\OpaqueJSString.h(99) : see reference to class template instantiation &apos;std::atomic&lt;const UChar *&gt;&apos; being compiled</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221440</attachid>
            <date>2014-01-16 22:29:40 -0800</date>
            <delta_ts>2014-01-17 09:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127161-20140116222939.patch</filename>
            <type>text/plain</type>
            <size>11283</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NThlMGM4MWI3NTUyNDhlZTYyNjdhN2U5YjRkNDA5NWIyYjE0NDhjLi45MDIyNTdmODI0NGExZGY2
MWE4MTZiM2M5OTI0M2VjZjkzOTNhNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OSBAQAogMjAxNC0wMS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCisgICAgICAgIEdldCByaWQgb2YgT3BhcXVlSlNTdHJpbmc6OmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhhbmRsZSBPcGFxdWVKU1N0cmluZzo6bV9zdHJpbmcgYmVpbmcgZWl0aGVyIDgtYml0IG9yIDE2
LWJpdCBhbmQgYWRkIGV4dHJhCisgICAgICAgIGNvZGUgcGF0aHMgZm9yIHRoZSA4LWJpdCBjYXNl
cy4KKyAgICAgICAgCisgICAgICAgIFVuZm9ydHVuYXRlbHksIEpTU3RyaW5nR2V0Q2hhcmFjdGVy
c1B0ciBpcyBzdGlsbCBleHBlY3RlZCB0byByZXR1cm4gYSAxNi1iaXQgY2hhcmFjdGVyIHBvaW50
ZXIuCisgICAgICAgIEhhbmRsZSB0aGlzIGJ5IHN0b3JpbmcgYSBzZXBhcmF0ZSAxNi1iaXQgc3Ry
aW5nIGFuZCBpbml0aWFsaXppbmcgaXQgb24gZGVtYW5kIHdoZW4gSlNTdHJpbmdHZXRDaGFyYWN0
ZXJzUHRyCisgICAgICAgIGlzIGNhbGxlZC4gVGhpcyBoYXMgdGhlIG5pY2Ugc2lkZSBlZmZlY3Qg
b2YgbWFraW5nIEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0ciB0aHJlYWQtc2FmZSB3aGVuIGl0IHdh
c24ndCBiZWZvcmUuCisgICAgICAgIChJbiB0aGVvcnksIHNvbWVvbmUgY291bGQgaGF2ZSBhIEpT
U3RyaW5nUmVmIGJhY2tlZCBieSBhbiA4LWJpdCBzdHJpbmcgYW5kIGNhbGwgSlNTdHJpbmdHZXRD
aGFyYWN0ZXJzUHRyIG9uIGl0CisgICAgICAgIGNhdXNpbmcgYW4gdW5zYWZlIHVwY29udmVyc2lv
biB0byBhIDE2LWJpdCBzdHJpbmcpLgorCisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmLmNwcDoK
KyAgICAgICAgKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cik6CisgICAgICAgIENhbGwgT3BhcXVl
SlNTdHJpbmc6OmNoYXJhY3RlcnMuCisKKyAgICAgICAgKEpTU3RyaW5nR2V0VVRGOENTdHJpbmcp
OgorICAgICAgICBBZGQgYSBjb2RlIHBhdGggdGhhdCBoYW5kbGVzIDgtYml0IHN0cmluZ3MuCisK
KyAgICAgICAgKEpTU3RyaW5nSXNFcXVhbCk6CisgICAgICAgIENhbGwgT3BhcXVlSlNTdHJpbmc6
OmVxdWFsLgorCisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNT
dHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcpOgorICAgICAgICBSZWZvcm1hdCB0aGUgY29kZSB0byB1
c2UgYW4gZWFybHkgcmV0dXJuIGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoZSBjb2RlIGlu
c2lkZSB0aGUgYm9keSBvZiBhbiBpZiBzdGF0ZW1lbnQuCisKKyAgICAgICAgKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKToKKyAgICAgICAgQ3JlYXRlIGFuIDgtYml0IENGU3RyaW5nUmVmIGlmIHBvc3Np
YmxlLgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUpOgorICAgICAgICBVc2UgbnVsbHB0ci4KKworICAgICAgICAoT3Bh
cXVlSlNTdHJpbmc6On5PcGFxdWVKU1N0cmluZyk6CisgICAgICAgIEZyZWUgbV9jaGFyYWN0ZXJz
LgorCisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVycyk6CisgICAgICAgIERvIHRo
ZSB1cC1jb252ZXJzaW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIG1fY2hhcmFjdGVycy4KKwor
ICAgICAgICAoT3BhcXVlSlNTdHJpbmc6OmVxdWFsKToKKyAgICAgICAgTmV3IGhlbHBlciBmdW5j
dGlvbi4KKworICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAoT3BhcXVl
SlNTdHJpbmc6OmlzOEJpdCk6CisgICAgICAgIE5ldyBmdW5jdGlvbiB0aGF0IHJldHVybnMgd2hl
dGhlciBhIHN0cmluZyBpcyA4LWJpdCBvciBub3QuCisKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5n
OjpjaGFyYWN0ZXJzOCk6CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVyczE2KToK
KyAgICAgICAgQWRkIGdldHRlcnMuCisKKzIwMTQtMDEtMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBDaGFuZ2UgYWxsIHVzZXMgb2YgRklOQUwgdG8g
ZmluYWwgbm93IHRoYXQgYWxsIG91ciBjb21waWxlcnMgc3VwcG9ydCBpdAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MTQyCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggOTVlZGM2NzNhMWI1ZWYzNWEzMDk1
ZWVkYWI1OTcwMzIzZWUyMzdmYS4uMjViODRjN2QyYzdkM2UxZGMwMzlkNTc4ZDRjZDRlOGJmMTFh
MWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgc2l6ZV90IEpTU3RyaW5nR2V0TGVuZ3RoKEpTU3RyaW5nUmVmIHN0cmluZykK
IAogY29uc3QgSlNDaGFyKiBKU1N0cmluZ0dldENoYXJhY3RlcnNQdHIoSlNTdHJpbmdSZWYgc3Ry
aW5nKQogewotICAgIHJldHVybiBzdHJpbmctPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CisgICAg
cmV0dXJuIHN0cmluZy0+Y2hhcmFjdGVycygpOwogfQogCiBzaXplX3QgSlNTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKEpTU3RyaW5nUmVmIHN0cmluZykKQEAgLTk3LDIwICs5NywyNiBA
QCBzaXplX3QgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcsIGNoYXIq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpegogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBjaGFyKiBwID0gYnVmZmVyOwotICAgIGNvbnN0IFVDaGFyKiBkID0g
c3RyaW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVz
dWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgc3RyaW5nLT5sZW5ndGgoKSwgJnAsIHAg
KyBidWZmZXJTaXplIC0gMSwgdHJ1ZSk7Ci0gICAgKnArKyA9ICdcMCc7CisgICAgY2hhciogZGVz
dGluYXRpb24gPSBidWZmZXI7CisgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQ7CisgICAgaWYg
KHN0cmluZy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIHNvdXJjZSA9IHN0cmlu
Zy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgm
c291cmNlLCBzb3VyY2UgKyBzdHJpbmctPmxlbmd0aCgpLCAmZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uICsgYnVmZmVyU2l6ZSAtIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFy
KiBzb3VyY2UgPSBzdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICByZXN1bHQgPSBjb252
ZXJ0VVRGMTZUb1VURjgoJnNvdXJjZSwgc291cmNlICsgc3RyaW5nLT5sZW5ndGgoKSwgJmRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbiArIGJ1ZmZlclNpemUgLSAxLCB0cnVlKTsKKyAgICB9CisKKyAg
ICAqZGVzdGluYXRpb24rKyA9ICdcMCc7CiAgICAgaWYgKHJlc3VsdCAhPSBjb252ZXJzaW9uT0sg
JiYgcmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gcCAtIGJ1ZmZlcjsKKyAgICByZXR1cm4gZGVzdGluYXRpb24gLSBidWZmZXI7CiB9CiAK
IGJvb2wgSlNTdHJpbmdJc0VxdWFsKEpTU3RyaW5nUmVmIGEsIEpTU3RyaW5nUmVmIGIpCiB7Ci0g
ICAgdW5zaWduZWQgbGVuID0gYS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGxlbiA9PSBiLT5sZW5n
dGgoKSAmJiAwID09IG1lbWNtcChhLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBiLT5kZXByZWNh
dGVkQ2hhcmFjdGVycygpLCBsZW4gKiBzaXplb2YoVUNoYXIpKTsKKyAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OmVxdWFsKGEsIGIpOwogfQogCiBib29sIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoSlNTdHJpbmdSZWYgYSwgY29uc3QgY2hhciogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IGNkMDk1NjRkNWIyZTY3MTlmOTQ0N2U0ZTE5
MjJjMmNjZTBjNzg3N2IuLmEzNzkyM2IxMzA2NTU1OTIyYjQ4YmZiODk5MzVkY2MyNTBmMmM1ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDAs
MjYgKzQwLDI4IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3Ry
aW5nUmVmIHN0cmluZykKICAgICAvLyBXZSBjYW5ub3QgdXNlIENGSW5kZXggaGVyZSBzaW5jZSBD
RlN0cmluZ0dldExlbmd0aCBjYW4gcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbgogICAgIC8vIGl0
IGNhbiBob2xkLiAgKDxyZGFyOi8vcHJvYmxlbS82ODA2NDc4PikKICAgICBzaXplX3QgbGVuZ3Ro
ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBpZiAobGVuZ3RoKSB7Ci0gICAgICAg
IFZlY3RvcjxMQ2hhciwgMTAyND4gbGNoYXJCdWZmZXIobGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRl
eCB1c2VkQnVmZmVyTGVuZ3RoOwotICAgICAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0
cmluZ0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnVz
ZWRCdWZmZXJMZW5ndGgpOwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0
ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3Ro
KSA9PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShs
Y2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1JlZigpOworICAgIGlmICghbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIiIpLCAwKS5sZWFrUmVmKCk7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgQ0ZTdHJpbmdHZXRD
aGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsK
LSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciks
IHVuaWNoYXJfYW5kX3VjaGFyX211c3RfYmVfc2FtZV9zaXplKTsKLSAgICAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQo
KSksIGxlbmd0aCkubGVha1JlZigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpLCAwKS5sZWFr
UmVmKCk7CisgICAgVmVjdG9yPExDaGFyLCAxMDI0PiBsY2hhckJ1ZmZlcihsZW5ndGgpOworICAg
IENGSW5kZXggdXNlZEJ1ZmZlckxlbmd0aDsKKyAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBD
RlN0cmluZ0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwg
JnVzZWRCdWZmZXJMZW5ndGgpOworICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnZlcnRl
ZFNpemUpID09IGxlbmd0aCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZmZXJMZW5ndGgp
ID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJC
dWZmZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKKworICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0
ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBh
bmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3RoKS5s
ZWFrUmVmKCk7CiB9CiAKLUNGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBKU1N0cmluZ1JlZiBzdHJpbmcpCitDRlN0cmluZ1JlZiBKU1N0cmluZ0Nv
cHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykK
IHsKICAgICBpZiAoIXN0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7
CiAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhhbGxvYywgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygp
KSwgc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCisgICAgICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihzdHJpbmctPmNoYXJhY3RlcnM4KCkpLCBzdHJpbmctPmxlbmd0aCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpOworCisgICAgcmV0dXJuIENGU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVuaUNoYXIqPihzdHJpbmctPmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IGM5
ODAyNTA2NTkwYmE4YmVlYmFiOGYxNWI0OTBkOTg5NmRjOWZkZWQuLmU5YmEzZGM0Y2I5ZjMwYTE2
ZDg0MGYwMTQ2NmEzNTExNWQyMzMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T3BhcXVlSlNTdHJpbmcuY3BwCkBAIC0zNiw3ICszNiwxMyBAQCBQYXNzUmVmUHRyPE9wYXF1ZUpT
U3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9w
YXF1ZUpTU3RyaW5nKHN0cmluZykpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OworfQorCitPcGFxdWVKU1N0cmluZzo6fk9wYXF1ZUpTU3RyaW5nKCkKK3sKKyAgICBpZiAoVUNo
YXIqIGNoYXJhY3RlcnMgPSBtX2NoYXJhY3RlcnMpCisgICAgICAgIGZhc3RGcmVlKHN0YXRpY19j
YXN0PHZvaWQqPihjaGFyYWN0ZXJzKSk7CiB9CiAKIFN0cmluZyBPcGFxdWVKU1N0cmluZzo6c3Ry
aW5nKCkgY29uc3QKQEAgLTYxLDMgKzY3LDQyIEBAIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6
OmlkZW50aWZpZXIoVk0qIHZtKSBjb25zdAogCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIG1f
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtX3N0cmluZy5sZW5ndGgoKSk7CiB9CisKK2NvbnN0IFVD
aGFyKiBPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVycygpCit7CisgICAgaWYgKCF0aGlzKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFVDaGFyKiBjaGFyYWN0ZXJzID0gbV9jaGFyYWN0
ZXJzOworICAgIGlmIChjaGFyYWN0ZXJzKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyczsKKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fc3RyaW5nLmxlbmd0aCgpOworICAgIFVDaGFyKiBuZXdD
aGFyYWN0ZXJzID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0TWFsbG9jKGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpKTsKKworICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbmV3Q2hhcmFjdGVy
c1tpXSA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KClbaV07CisgICAgfSBlbHNlCisgICAgICAgIG1l
bWNweShuZXdDaGFyYWN0ZXJzLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoICogc2l6
ZW9mKFVDaGFyKSk7CisKKyAgICBpZiAoIW1fY2hhcmFjdGVycy5jb21wYXJlX2V4Y2hhbmdlX3N0
cm9uZyhjaGFyYWN0ZXJzLCBuZXdDaGFyYWN0ZXJzKSkgeworICAgICAgICBmYXN0RnJlZShuZXdD
aGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnM7CisgICAgfQorCisgICAgcmV0
dXJuIG5ld0NoYXJhY3RlcnM7Cit9CisKK2Jvb2wgT3BhcXVlSlNTdHJpbmc6OmVxdWFsKGNvbnN0
IE9wYXF1ZUpTU3RyaW5nKiBhLCBjb25zdCBPcGFxdWVKU1N0cmluZyogYikKK3sKKyAgICBpZiAo
YSA9PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghYSB8fCAhYikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGEtPm1fc3RyaW5nID09IGItPm1fc3RyaW5n
OworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAppbmRl
eCA2MWQ4MGYzZGM4YzcxNDA5OThlODgwZDM3ODY3NDBmZGZlNmQ4NjQ4Li44OGE4YzdlZjk0ZWZi
Y2JmYzhmOWExZTI5MTFlNzk4ZWM0MGM2NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PcGFxdWVKU1N0cmluZy5oCkBAIC0zNSw4ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogfQog
CiBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3Bh
cXVlSlNTdHJpbmc+IHsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBj
cmVhdGUoKSAvLyBudWxsCisgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNy
ZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTU3RyaW5n
KTsKICAgICB9CkBAIC01MywxMyArNTIsMjAgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSB7IHJldHVybiBkZXBy
ZWNhdGVkQ2hhcmFjdGVycygpOyB9IC8vIEZJWE1FOiBEZWxldGUgdGhpcy4KLSAgICBjb25zdCBV
Q2hhciogZGVwcmVjYXRlZENoYXJhY3RlcnMoKSB7IHJldHVybiB0aGlzID8gbV9zdHJpbmcuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKSA6IG51bGxwdHI7IH0KKyAgICB+T3BhcXVlSlNTdHJpbmcoKTsK
KworICAgIGJvb2wgaXM4Qml0KCkgeyByZXR1cm4gdGhpcyA/IG1fc3RyaW5nLmlzOEJpdCgpIDog
ZmFsc2U7IH0KKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSB7IHJldHVybiB0aGlzID8g
bV9zdHJpbmcuY2hhcmFjdGVyczgoKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2KCkgeyByZXR1cm4gdGhpcyA/IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpIDogbnVs
bHB0cjsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMgPyBtX3N0cmluZy5s
ZW5ndGgoKSA6IDA7IH0KIAorICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCk7CisKICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nKCkgY29uc3Q7CiAgICAgSlNDOjpJZGVudGlm
aWVyIGlkZW50aWZpZXIoSlNDOjpWTSopIGNvbnN0OwogCisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgT3BhcXVlSlNTdHJpbmcqLCBjb25zdCBPcGFxdWVKU1N0cmluZyopOworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3Ry
aW5nPjsKIApAQCAtNjksMjAgKzc1LDI2IEBAIHByaXZhdGU6CiAKICAgICBPcGFxdWVKU1N0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcuaXNvbGF0
ZWRDb3B5KCkpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzKG51bGxwdHIpCiAgICAgewogICAgIH0K
IAogICAgIE9wYXF1ZUpTU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgICAgIDogbV9zdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKQorICAgICAgICAs
IG1fY2hhcmFjdGVycyhudWxscHRyKQogICAgIHsKICAgICB9CiAKICAgICBPcGFxdWVKU1N0cmlu
Zyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICA6IG1f
c3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkKKyAgICAgICAgLCBtX2NoYXJhY3RlcnMobnVsbHB0
cikKICAgICB7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fc3RyaW5nOworCisgICAgLy8gVGhpcyB3
aWxsIGJlIGluaXRpYWxpemVkIG9uIGRlbWFuZCB3aGVuIGNoYXJhY3RlcnMoKSBpcyBjYWxsZWQu
CisgICAgc3RkOjphdG9taWM8VUNoYXIqPiBtX2NoYXJhY3RlcnM7CiB9OwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221471</attachid>
            <date>2014-01-17 09:06:26 -0800</date>
            <delta_ts>2014-01-17 09:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127161-20140117090625.patch</filename>
            <type>text/plain</type>
            <size>11900</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
N2Y5YTUxODI5ZmMyMmZhNjczYzYzYTg3YmYwOTE3MzUwZjU4NjFkLi45MTQwZjRhMDQ1MTU4ZTA4
MjBlYzJiMDM5NGY0M2M1NDU0NWE0ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNC0wMS0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEdldCByaWQgb2YgT3BhcXVlSlNTdHJpbmc6OmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgSGFu
ZGxlIE9wYXF1ZUpTU3RyaW5nOjptX3N0cmluZyBiZWluZyBlaXRoZXIgOC1iaXQgb3IgMTYtYml0
IGFuZCBhZGQgZXh0cmEKKyAgICAgICAgY29kZSBwYXRocyBmb3IgdGhlIDgtYml0IGNhc2VzLgor
ICAgICAgICAKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRy
IGlzIHN0aWxsIGV4cGVjdGVkIHRvIHJldHVybiBhIDE2LWJpdCBjaGFyYWN0ZXIgcG9pbnRlci4K
KyAgICAgICAgSGFuZGxlIHRoaXMgYnkgc3RvcmluZyBhIHNlcGFyYXRlIDE2LWJpdCBzdHJpbmcg
YW5kIGluaXRpYWxpemluZyBpdCBvbiBkZW1hbmQgd2hlbiBKU1N0cmluZ0dldENoYXJhY3RlcnNQ
dHIKKyAgICAgICAgaXMgY2FsbGVkIGFuZCB0aGUgYmFja2luZyBzdHJpbmcgaXMgOC1iaXQuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGhhcyB0aGUgbmljZSBzaWRlIGVmZmVjdCBvZiBtYWtpbmcg
SlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyIHRocmVhZC1zYWZlIHdoZW4gaXQgd2Fzbid0IGJlZm9y
ZS4KKyAgICAgICAgKEluIHRoZW9yeSwgc29tZW9uZSBjb3VsZCBoYXZlIGEgSlNTdHJpbmdSZWYg
YmFja2VkIGJ5IGFuIDgtYml0IHN0cmluZyBhbmQgY2FsbCBKU1N0cmluZ0dldENoYXJhY3RlcnNQ
dHIgb24gaXQKKyAgICAgICAgY2F1c2luZyBhbiB1bnNhZmUgdXBjb252ZXJzaW9uIHRvIGEgMTYt
Yml0IHN0cmluZykuCisKKyAgICAgICAgKiBBUEkvSlNTdHJpbmdSZWYuY3BwOgorICAgICAgICAo
SlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKToKKyAgICAgICAgQ2FsbCBPcGFxdWVKU1N0cmluZzo6
Y2hhcmFjdGVycy4KKworICAgICAgICAoSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyk6CisgICAgICAg
IEFkZCBhIGNvZGUgcGF0aCB0aGF0IGhhbmRsZXMgOC1iaXQgc3RyaW5ncy4KKworICAgICAgICAo
SlNTdHJpbmdJc0VxdWFsKToKKyAgICAgICAgQ2FsbCBPcGFxdWVKU1N0cmluZzo6ZXF1YWwuCisK
KyAgICAgICAgKiBBUEkvSlNTdHJpbmdSZWZDRi5jcHA6CisgICAgICAgIChKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZyk6CisgICAgICAgIFJlZm9ybWF0IHRoZSBjb2RlIHRvIHVzZSBhbiBlYXJs
eSByZXR1cm4gaW5zdGVhZCBvZiBwdXR0aW5nIG1vc3Qgb2YgdGhlIGNvZGUgaW5zaWRlIHRoZSBi
b2R5IG9mIGFuIGlmIHN0YXRlbWVudC4KKworICAgICAgICAoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcp
OgorICAgICAgICBDcmVhdGUgYW4gOC1iaXQgQ0ZTdHJpbmdSZWYgaWYgcG9zc2libGUuCisKKyAg
ICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAgICAoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZSk6CisgICAgICAgIFVzZSBudWxscHRyLgorCisgICAgICAgIChPcGFxdWVKU1N0cmlu
Zzo6fk9wYXF1ZUpTU3RyaW5nKToKKyAgICAgICAgRnJlZSBtX2NoYXJhY3RlcnMuCisKKyAgICAg
ICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgRG8gdGhlIHVwLWNvbnZl
cnNpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gbV9jaGFyYWN0ZXJzLgorCisgICAgICAgIChP
cGFxdWVKU1N0cmluZzo6ZXF1YWwpOgorICAgICAgICBOZXcgaGVscGVyIGZ1bmN0aW9uLgorCisg
ICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6
aXM4Qml0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB3aGV0aGVyIGEgc3Ry
aW5nIGlzIDgtYml0IG9yIG5vdC4KKworICAgICAgICAoT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3Rl
cnM4KToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFyYWN0ZXJzMTYpOgorICAgICAgICBB
ZGQgZ2V0dGVycy4KKwogMjAxNC0wMS0xNyAgUGV0ZXIgTW9sbmFyICA8cG1vbG5hci51LXN6ZWdl
ZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB3b3JrYXJvdW5kIGZvciBj
b21waWxlcnMgbm90IHN1cHBvcnRpbmcgZGVsZXRlZCBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggOTVlZGM2NzNhMWI1ZWYzNWEzMDk1ZWVk
YWI1OTcwMzIzZWUyMzdmYS4uMjViODRjN2QyYzdkM2UxZGMwMzlkNTc4ZDRjZDRlOGJmMTFhMWM2
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgc2l6ZV90IEpTU3RyaW5nR2V0TGVuZ3RoKEpTU3RyaW5nUmVmIHN0cmluZykKIAog
Y29uc3QgSlNDaGFyKiBKU1N0cmluZ0dldENoYXJhY3RlcnNQdHIoSlNTdHJpbmdSZWYgc3RyaW5n
KQogewotICAgIHJldHVybiBzdHJpbmctPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CisgICAgcmV0
dXJuIHN0cmluZy0+Y2hhcmFjdGVycygpOwogfQogCiBzaXplX3QgSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKEpTU3RyaW5nUmVmIHN0cmluZykKQEAgLTk3LDIwICs5NywyNiBAQCBz
aXplX3QgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcsIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpegogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBjaGFyKiBwID0gYnVmZmVyOwotICAgIGNvbnN0IFVDaGFyKiBkID0gc3Ry
aW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gY29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgc3RyaW5nLT5sZW5ndGgoKSwgJnAsIHAgKyBi
dWZmZXJTaXplIC0gMSwgdHJ1ZSk7Ci0gICAgKnArKyA9ICdcMCc7CisgICAgY2hhciogZGVzdGlu
YXRpb24gPSBidWZmZXI7CisgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQ7CisgICAgaWYgKHN0
cmluZy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIHNvdXJjZSA9IHN0cmluZy0+
Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgmc291
cmNlLCBzb3VyY2UgKyBzdHJpbmctPmxlbmd0aCgpLCAmZGVzdGluYXRpb24sIGRlc3RpbmF0aW9u
ICsgYnVmZmVyU2l6ZSAtIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBz
b3VyY2UgPSBzdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICByZXN1bHQgPSBjb252ZXJ0
VVRGMTZUb1VURjgoJnNvdXJjZSwgc291cmNlICsgc3RyaW5nLT5sZW5ndGgoKSwgJmRlc3RpbmF0
aW9uLCBkZXN0aW5hdGlvbiArIGJ1ZmZlclNpemUgLSAxLCB0cnVlKTsKKyAgICB9CisKKyAgICAq
ZGVzdGluYXRpb24rKyA9ICdcMCc7CiAgICAgaWYgKHJlc3VsdCAhPSBjb252ZXJzaW9uT0sgJiYg
cmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gcCAtIGJ1ZmZlcjsKKyAgICByZXR1cm4gZGVzdGluYXRpb24gLSBidWZmZXI7CiB9CiAKIGJv
b2wgSlNTdHJpbmdJc0VxdWFsKEpTU3RyaW5nUmVmIGEsIEpTU3RyaW5nUmVmIGIpCiB7Ci0gICAg
dW5zaWduZWQgbGVuID0gYS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGxlbiA9PSBiLT5sZW5ndGgo
KSAmJiAwID09IG1lbWNtcChhLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBiLT5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBsZW4gKiBzaXplb2YoVUNoYXIpKTsKKyAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OmVxdWFsKGEsIGIpOwogfQogCiBib29sIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcoSlNTdHJpbmdSZWYgYSwgY29uc3QgY2hhciogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IGNkMDk1NjRkNWIyZTY3MTlmOTQ0N2U0ZTE5MjJj
MmNjZTBjNzg3N2IuLmEzNzkyM2IxMzA2NTU1OTIyYjQ4YmZiODk5MzVkY2MyNTBmMmM1ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDAsMjYg
KzQwLDI4IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5n
UmVmIHN0cmluZykKICAgICAvLyBXZSBjYW5ub3QgdXNlIENGSW5kZXggaGVyZSBzaW5jZSBDRlN0
cmluZ0dldExlbmd0aCBjYW4gcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbgogICAgIC8vIGl0IGNh
biBob2xkLiAgKDxyZGFyOi8vcHJvYmxlbS82ODA2NDc4PikKICAgICBzaXplX3QgbGVuZ3RoID0g
Q0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBpZiAobGVuZ3RoKSB7Ci0gICAgICAgIFZl
Y3RvcjxMQ2hhciwgMTAyND4gbGNoYXJCdWZmZXIobGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCB1
c2VkQnVmZmVyTGVuZ3RoOwotICAgICAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0cmlu
Z0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnVzZWRC
dWZmZXJMZW5ndGgpOwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRT
aXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9
PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hh
ckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1JlZigpOworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIiIpLCAwKS5sZWFrUmVmKCk7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgQ0ZTdHJpbmdHZXRDaGFy
YWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKLSAg
ICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciksIHVu
aWNoYXJfYW5kX3VjaGFyX211c3RfYmVfc2FtZV9zaXplKTsKLSAgICAgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSks
IGxlbmd0aCkubGVha1JlZigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJp
bmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpLCAwKS5sZWFrUmVm
KCk7CisgICAgVmVjdG9yPExDaGFyLCAxMDI0PiBsY2hhckJ1ZmZlcihsZW5ndGgpOworICAgIENG
SW5kZXggdXNlZEJ1ZmZlckxlbmd0aDsKKyAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0
cmluZ0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnVz
ZWRCdWZmZXJMZW5ndGgpOworICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnZlcnRlZFNp
emUpID09IGxlbmd0aCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZmZXJMZW5ndGgpID09
IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJCdWZm
ZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKKworICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
KHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQg
VUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3RoKS5sZWFr
UmVmKCk7CiB9CiAKLUNGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9y
UmVmIGFsbG9jLCBKU1N0cmluZ1JlZiBzdHJpbmcpCitDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlD
RlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsK
ICAgICBpZiAoIXN0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CiAK
LSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhhbGxvYywgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpKSwg
c3RyaW5nLT5sZW5ndGgoKSk7CisgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihzdHJpbmctPmNoYXJhY3RlcnM4KCkpLCBzdHJpbmctPmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpOworCisgICAgcmV0dXJuIENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihzdHJpbmctPmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IGM5ODAy
NTA2NTkwYmE4YmVlYmFiOGYxNWI0OTBkOTg5NmRjOWZkZWQuLjI5NWUyZTRlNzA1YjE1Yjc5MmVh
N2EzM2IyYjM2N2YyNTg0MzE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3Bh
cXVlSlNTdHJpbmcuY3BwCkBAIC0zNCw5ICszNCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTU3RyaW5nKHN0cmluZykpOwotICAgIHJldHVybiAw
OworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhzdHJpbmcpKTsKK30KKworT3Bh
cXVlSlNTdHJpbmc6On5PcGFxdWVKU1N0cmluZygpCit7CisgICAgLy8gbV9jaGFyYWN0ZXJzIGlz
IHB1dCBpbiBhIGxvY2FsIGhlcmUgdG8gYXZvaWQgYW4gZXh0cmEgYXRvbWljIGxvYWQuCisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX2NoYXJhY3RlcnM7CisgICAgaWYgKCFjaGFyYWN0
ZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc3RyaW5nLmlzOEJpdCgpICYmIG1f
c3RyaW5nLmNoYXJhY3RlcnMoKSA9PSBjaGFyYWN0ZXJzKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oY2hh
cmFjdGVycykpKTsKIH0KIAogU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjpzdHJpbmcoKSBjb25zdApA
QCAtNjEsMyArNzUsNDQgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihW
TSogdm0pIGNvbnN0CiAKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFj
dGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIH0KKworY29uc3QgVUNoYXIqIE9wYXF1ZUpT
U3RyaW5nOjpjaGFyYWN0ZXJzKCkKK3sKKyAgICBpZiAoIXRoaXMpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gbV9jaGFyYWN0ZXJzIGlzIHB1dCBpbiBhIGxvY2FsIGhlcmUgdG8g
YXZvaWQgYW4gZXh0cmEgYXRvbWljIGxvYWQuCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSBtX2NoYXJhY3RlcnM7CisgICAgaWYgKGNoYXJhY3RlcnMpCisgICAgICAgIHJldHVybiBjaGFy
YWN0ZXJzOworCisgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fc3RyaW5nLmxlbmd0aCgpOworICAgIFVD
aGFyKiBuZXdDaGFyYWN0ZXJzID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0TWFsbG9jKGxlbmd0
aCAqIHNpemVvZihVQ2hhcikpKTsKKworICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbmV3
Q2hhcmFjdGVyc1tpXSA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KClbaV07CisgICAgfSBlbHNlCisg
ICAgICAgIG1lbWNweShuZXdDaGFyYWN0ZXJzLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVu
Z3RoICogc2l6ZW9mKFVDaGFyKSk7CisKKyAgICBpZiAoIW1fY2hhcmFjdGVycy5jb21wYXJlX2V4
Y2hhbmdlX3N0cm9uZyhjaGFyYWN0ZXJzLCBuZXdDaGFyYWN0ZXJzKSkgeworICAgICAgICBmYXN0
RnJlZShuZXdDaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnM7CisgICAgfQor
CisgICAgcmV0dXJuIG5ld0NoYXJhY3RlcnM7Cit9CisKK2Jvb2wgT3BhcXVlSlNTdHJpbmc6OmVx
dWFsKGNvbnN0IE9wYXF1ZUpTU3RyaW5nKiBhLCBjb25zdCBPcGFxdWVKU1N0cmluZyogYikKK3sK
KyAgICBpZiAoYSA9PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghYSB8fCAh
YikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGEtPm1fc3RyaW5nID09IGIt
Pm1fc3RyaW5nOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFx
dWVKU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5o
CmluZGV4IDYxZDgwZjNkYzhjNzE0MDk5OGU4ODBkMzc4Njc0MGZkZmU2ZDg2NDguLjhhNmU0NzQz
MWFkYjRmZWJmYmQwMzRhODBjYTdlMThmMWM1ZDZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTM1LDggKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiB9CiAKIHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxPcGFxdWVKU1N0cmluZz4gewotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJp
bmc+IGNyZWF0ZSgpIC8vIG51bGwKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmlu
Zz4gY3JlYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BhcXVlSlNT
dHJpbmcpOwogICAgIH0KQEAgLTUzLDM2ICs1Miw1MCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIHsgcmV0dXJu
IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7IH0gLy8gRklYTUU6IERlbGV0ZSB0aGlzLgotICAgIGNv
bnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hhcmFjdGVycygpIHsgcmV0dXJuIHRoaXMgPyBtX3N0cmlu
Zy5kZXByZWNhdGVkQ2hhcmFjdGVycygpIDogbnVsbHB0cjsgfQorICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5PcGFxdWVKU1N0cmluZygpOworCisgICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiB0aGlz
ID8gbV9zdHJpbmcuaXM4Qml0KCkgOiBmYWxzZTsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzOCgpIHsgcmV0dXJuIHRoaXMgPyBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpIDogbnVsbHB0cjsg
fQorICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSB7IHJldHVybiB0aGlzID8gbV9zdHJp
bmcuY2hhcmFjdGVyczE2KCkgOiBudWxscHRyOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyBy
ZXR1cm4gdGhpcyA/IG1fc3RyaW5nLmxlbmd0aCgpIDogMDsgfQogCisgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMoKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmcoKSBj
b25zdDsKICAgICBKU0M6OklkZW50aWZpZXIgaWRlbnRpZmllcihKU0M6OlZNKikgY29uc3Q7CiAK
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcGFxdWVKU1N0cmluZyosIGNvbnN0IE9wYXF1
ZUpTU3RyaW5nKik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6VGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+OwogCiAgICAgT3BhcXVlSlNTdHJpbmcoKQorICAg
ICAgICA6IG1fY2hhcmFjdGVycyhudWxscHRyKQogICAgIHsKICAgICB9CiAKICAgICBPcGFxdWVK
U1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcu
aXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzKG1fc3RyaW5nLmlzOEJpdCgp
ID8gbnVsbHB0ciA6IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpKQogICAgIHsKICAgICB9CiAKICAg
ICBPcGFxdWVKU1N0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQogICAgICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkKKyAgICAgICAgLCBtX2No
YXJhY3RlcnMobnVsbHB0cikKICAgICB7CiAgICAgfQogCiAgICAgT3BhcXVlSlNTdHJpbmcoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgOiBtX3N0cmlu
ZyhjaGFyYWN0ZXJzLCBsZW5ndGgpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzKG1fc3RyaW5nLmlz
OEJpdCgpID8gbnVsbHB0ciA6IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpKQogICAgIHsKICAgICB9
CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAvLyBUaGlzIHdpbGwgYmUgaW5pdGlhbGl6
ZWQgb24gZGVtYW5kIHdoZW4gY2hhcmFjdGVycygpIGlzIGNhbGxlZC4KKyAgICBzdGQ6OmF0b21p
Yzxjb25zdCBVQ2hhcio+IG1fY2hhcmFjdGVyczsKIH07CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221472</attachid>
            <date>2014-01-17 09:12:29 -0800</date>
            <delta_ts>2014-01-17 09:41:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127161-20140117091229.patch</filename>
            <type>text/plain</type>
            <size>12065</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
N2Y5YTUxODI5ZmMyMmZhNjczYzYzYTg3YmYwOTE3MzUwZjU4NjFkLi45MTQwZjRhMDQ1MTU4ZTA4
MjBlYzJiMDM5NGY0M2M1NDU0NWE0ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNC0wMS0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEdldCByaWQgb2YgT3BhcXVlSlNTdHJpbmc6OmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgSGFu
ZGxlIE9wYXF1ZUpTU3RyaW5nOjptX3N0cmluZyBiZWluZyBlaXRoZXIgOC1iaXQgb3IgMTYtYml0
IGFuZCBhZGQgZXh0cmEKKyAgICAgICAgY29kZSBwYXRocyBmb3IgdGhlIDgtYml0IGNhc2VzLgor
ICAgICAgICAKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRy
IGlzIHN0aWxsIGV4cGVjdGVkIHRvIHJldHVybiBhIDE2LWJpdCBjaGFyYWN0ZXIgcG9pbnRlci4K
KyAgICAgICAgSGFuZGxlIHRoaXMgYnkgc3RvcmluZyBhIHNlcGFyYXRlIDE2LWJpdCBzdHJpbmcg
YW5kIGluaXRpYWxpemluZyBpdCBvbiBkZW1hbmQgd2hlbiBKU1N0cmluZ0dldENoYXJhY3RlcnNQ
dHIKKyAgICAgICAgaXMgY2FsbGVkIGFuZCB0aGUgYmFja2luZyBzdHJpbmcgaXMgOC1iaXQuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGhhcyB0aGUgbmljZSBzaWRlIGVmZmVjdCBvZiBtYWtpbmcg
SlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyIHRocmVhZC1zYWZlIHdoZW4gaXQgd2Fzbid0IGJlZm9y
ZS4KKyAgICAgICAgKEluIHRoZW9yeSwgc29tZW9uZSBjb3VsZCBoYXZlIGEgSlNTdHJpbmdSZWYg
YmFja2VkIGJ5IGFuIDgtYml0IHN0cmluZyBhbmQgY2FsbCBKU1N0cmluZ0dldENoYXJhY3RlcnNQ
dHIgb24gaXQKKyAgICAgICAgY2F1c2luZyBhbiB1bnNhZmUgdXBjb252ZXJzaW9uIHRvIGEgMTYt
Yml0IHN0cmluZykuCisKKyAgICAgICAgKiBBUEkvSlNTdHJpbmdSZWYuY3BwOgorICAgICAgICAo
SlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKToKKyAgICAgICAgQ2FsbCBPcGFxdWVKU1N0cmluZzo6
Y2hhcmFjdGVycy4KKworICAgICAgICAoSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyk6CisgICAgICAg
IEFkZCBhIGNvZGUgcGF0aCB0aGF0IGhhbmRsZXMgOC1iaXQgc3RyaW5ncy4KKworICAgICAgICAo
SlNTdHJpbmdJc0VxdWFsKToKKyAgICAgICAgQ2FsbCBPcGFxdWVKU1N0cmluZzo6ZXF1YWwuCisK
KyAgICAgICAgKiBBUEkvSlNTdHJpbmdSZWZDRi5jcHA6CisgICAgICAgIChKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZyk6CisgICAgICAgIFJlZm9ybWF0IHRoZSBjb2RlIHRvIHVzZSBhbiBlYXJs
eSByZXR1cm4gaW5zdGVhZCBvZiBwdXR0aW5nIG1vc3Qgb2YgdGhlIGNvZGUgaW5zaWRlIHRoZSBi
b2R5IG9mIGFuIGlmIHN0YXRlbWVudC4KKworICAgICAgICAoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcp
OgorICAgICAgICBDcmVhdGUgYW4gOC1iaXQgQ0ZTdHJpbmdSZWYgaWYgcG9zc2libGUuCisKKyAg
ICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAgICAoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZSk6CisgICAgICAgIFVzZSBudWxscHRyLgorCisgICAgICAgIChPcGFxdWVKU1N0cmlu
Zzo6fk9wYXF1ZUpTU3RyaW5nKToKKyAgICAgICAgRnJlZSBtX2NoYXJhY3RlcnMuCisKKyAgICAg
ICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgRG8gdGhlIHVwLWNvbnZl
cnNpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gbV9jaGFyYWN0ZXJzLgorCisgICAgICAgIChP
cGFxdWVKU1N0cmluZzo6ZXF1YWwpOgorICAgICAgICBOZXcgaGVscGVyIGZ1bmN0aW9uLgorCisg
ICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6
aXM4Qml0KToKKyAgICAgICAgTmV3IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB3aGV0aGVyIGEgc3Ry
aW5nIGlzIDgtYml0IG9yIG5vdC4KKworICAgICAgICAoT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3Rl
cnM4KToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFyYWN0ZXJzMTYpOgorICAgICAgICBB
ZGQgZ2V0dGVycy4KKwogMjAxNC0wMS0xNyAgUGV0ZXIgTW9sbmFyICA8cG1vbG5hci51LXN6ZWdl
ZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB3b3JrYXJvdW5kIGZvciBj
b21waWxlcnMgbm90IHN1cHBvcnRpbmcgZGVsZXRlZCBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggOTVlZGM2NzNhMWI1ZWYzNWEzMDk1ZWVk
YWI1OTcwMzIzZWUyMzdmYS4uMjViODRjN2QyYzdkM2UxZGMwMzlkNTc4ZDRjZDRlOGJmMTFhMWM2
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgc2l6ZV90IEpTU3RyaW5nR2V0TGVuZ3RoKEpTU3RyaW5nUmVmIHN0cmluZykKIAog
Y29uc3QgSlNDaGFyKiBKU1N0cmluZ0dldENoYXJhY3RlcnNQdHIoSlNTdHJpbmdSZWYgc3RyaW5n
KQogewotICAgIHJldHVybiBzdHJpbmctPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CisgICAgcmV0
dXJuIHN0cmluZy0+Y2hhcmFjdGVycygpOwogfQogCiBzaXplX3QgSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKEpTU3RyaW5nUmVmIHN0cmluZykKQEAgLTk3LDIwICs5NywyNiBAQCBz
aXplX3QgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcsIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpegogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBjaGFyKiBwID0gYnVmZmVyOwotICAgIGNvbnN0IFVDaGFyKiBkID0gc3Ry
aW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gY29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgc3RyaW5nLT5sZW5ndGgoKSwgJnAsIHAgKyBi
dWZmZXJTaXplIC0gMSwgdHJ1ZSk7Ci0gICAgKnArKyA9ICdcMCc7CisgICAgY2hhciogZGVzdGlu
YXRpb24gPSBidWZmZXI7CisgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQ7CisgICAgaWYgKHN0
cmluZy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIHNvdXJjZSA9IHN0cmluZy0+
Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgmc291
cmNlLCBzb3VyY2UgKyBzdHJpbmctPmxlbmd0aCgpLCAmZGVzdGluYXRpb24sIGRlc3RpbmF0aW9u
ICsgYnVmZmVyU2l6ZSAtIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBz
b3VyY2UgPSBzdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICByZXN1bHQgPSBjb252ZXJ0
VVRGMTZUb1VURjgoJnNvdXJjZSwgc291cmNlICsgc3RyaW5nLT5sZW5ndGgoKSwgJmRlc3RpbmF0
aW9uLCBkZXN0aW5hdGlvbiArIGJ1ZmZlclNpemUgLSAxLCB0cnVlKTsKKyAgICB9CisKKyAgICAq
ZGVzdGluYXRpb24rKyA9ICdcMCc7CiAgICAgaWYgKHJlc3VsdCAhPSBjb252ZXJzaW9uT0sgJiYg
cmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gcCAtIGJ1ZmZlcjsKKyAgICByZXR1cm4gZGVzdGluYXRpb24gLSBidWZmZXI7CiB9CiAKIGJv
b2wgSlNTdHJpbmdJc0VxdWFsKEpTU3RyaW5nUmVmIGEsIEpTU3RyaW5nUmVmIGIpCiB7Ci0gICAg
dW5zaWduZWQgbGVuID0gYS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGxlbiA9PSBiLT5sZW5ndGgo
KSAmJiAwID09IG1lbWNtcChhLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBiLT5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBsZW4gKiBzaXplb2YoVUNoYXIpKTsKKyAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OmVxdWFsKGEsIGIpOwogfQogCiBib29sIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcoSlNTdHJpbmdSZWYgYSwgY29uc3QgY2hhciogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IGNkMDk1NjRkNWIyZTY3MTlmOTQ0N2U0ZTE5MjJj
MmNjZTBjNzg3N2IuLmEzNzkyM2IxMzA2NTU1OTIyYjQ4YmZiODk5MzVkY2MyNTBmMmM1ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDAsMjYg
KzQwLDI4IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5n
UmVmIHN0cmluZykKICAgICAvLyBXZSBjYW5ub3QgdXNlIENGSW5kZXggaGVyZSBzaW5jZSBDRlN0
cmluZ0dldExlbmd0aCBjYW4gcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbgogICAgIC8vIGl0IGNh
biBob2xkLiAgKDxyZGFyOi8vcHJvYmxlbS82ODA2NDc4PikKICAgICBzaXplX3QgbGVuZ3RoID0g
Q0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBpZiAobGVuZ3RoKSB7Ci0gICAgICAgIFZl
Y3RvcjxMQ2hhciwgMTAyND4gbGNoYXJCdWZmZXIobGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCB1
c2VkQnVmZmVyTGVuZ3RoOwotICAgICAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0cmlu
Z0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnVzZWRC
dWZmZXJMZW5ndGgpOwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRT
aXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9
PSBsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hh
ckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1JlZigpOworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIiIpLCAwKS5sZWFrUmVmKCk7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgQ0ZTdHJpbmdHZXRDaGFy
YWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKLSAg
ICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciksIHVu
aWNoYXJfYW5kX3VjaGFyX211c3RfYmVfc2FtZV9zaXplKTsKLSAgICAgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSks
IGxlbmd0aCkubGVha1JlZigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJp
bmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpLCAwKS5sZWFrUmVm
KCk7CisgICAgVmVjdG9yPExDaGFyLCAxMDI0PiBsY2hhckJ1ZmZlcihsZW5ndGgpOworICAgIENG
SW5kZXggdXNlZEJ1ZmZlckxlbmd0aDsKKyAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0
cmluZ0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnVz
ZWRCdWZmZXJMZW5ndGgpOworICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnZlcnRlZFNp
emUpID09IGxlbmd0aCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZmZXJMZW5ndGgpID09
IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJCdWZm
ZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKKworICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
KHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQg
VUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3RoKS5sZWFr
UmVmKCk7CiB9CiAKLUNGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9y
UmVmIGFsbG9jLCBKU1N0cmluZ1JlZiBzdHJpbmcpCitDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlD
RlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsK
ICAgICBpZiAoIXN0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CiAK
LSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhhbGxvYywgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpKSwg
c3RyaW5nLT5sZW5ndGgoKSk7CisgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihzdHJpbmctPmNoYXJhY3RlcnM4KCkpLCBzdHJpbmctPmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpOworCisgICAgcmV0dXJuIENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihzdHJpbmctPmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IGM5ODAy
NTA2NTkwYmE4YmVlYmFiOGYxNWI0OTBkOTg5NmRjOWZkZWQuLjI5NWUyZTRlNzA1YjE1Yjc5MmVh
N2EzM2IyYjM2N2YyNTg0MzE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3Bh
cXVlSlNTdHJpbmcuY3BwCkBAIC0zNCw5ICszNCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTU3RyaW5nKHN0cmluZykpOwotICAgIHJldHVybiAw
OworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhzdHJpbmcpKTsKK30KKworT3Bh
cXVlSlNTdHJpbmc6On5PcGFxdWVKU1N0cmluZygpCit7CisgICAgLy8gbV9jaGFyYWN0ZXJzIGlz
IHB1dCBpbiBhIGxvY2FsIGhlcmUgdG8gYXZvaWQgYW4gZXh0cmEgYXRvbWljIGxvYWQuCisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX2NoYXJhY3RlcnM7CisgICAgaWYgKCFjaGFyYWN0
ZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc3RyaW5nLmlzOEJpdCgpICYmIG1f
c3RyaW5nLmNoYXJhY3RlcnMoKSA9PSBjaGFyYWN0ZXJzKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oY2hh
cmFjdGVycykpKTsKIH0KIAogU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjpzdHJpbmcoKSBjb25zdApA
QCAtNjEsMyArNzUsNDQgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihW
TSogdm0pIGNvbnN0CiAKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgbV9zdHJpbmcuY2hhcmFj
dGVyczE2KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKIH0KKworY29uc3QgVUNoYXIqIE9wYXF1ZUpT
U3RyaW5nOjpjaGFyYWN0ZXJzKCkKK3sKKyAgICBpZiAoIXRoaXMpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gbV9jaGFyYWN0ZXJzIGlzIHB1dCBpbiBhIGxvY2FsIGhlcmUgdG8g
YXZvaWQgYW4gZXh0cmEgYXRvbWljIGxvYWQuCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSBtX2NoYXJhY3RlcnM7CisgICAgaWYgKGNoYXJhY3RlcnMpCisgICAgICAgIHJldHVybiBjaGFy
YWN0ZXJzOworCisgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fc3RyaW5nLmxlbmd0aCgpOworICAgIFVD
aGFyKiBuZXdDaGFyYWN0ZXJzID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0TWFsbG9jKGxlbmd0
aCAqIHNpemVvZihVQ2hhcikpKTsKKworICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbmV3
Q2hhcmFjdGVyc1tpXSA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KClbaV07CisgICAgfSBlbHNlCisg
ICAgICAgIG1lbWNweShuZXdDaGFyYWN0ZXJzLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVu
Z3RoICogc2l6ZW9mKFVDaGFyKSk7CisKKyAgICBpZiAoIW1fY2hhcmFjdGVycy5jb21wYXJlX2V4
Y2hhbmdlX3N0cm9uZyhjaGFyYWN0ZXJzLCBuZXdDaGFyYWN0ZXJzKSkgeworICAgICAgICBmYXN0
RnJlZShuZXdDaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnM7CisgICAgfQor
CisgICAgcmV0dXJuIG5ld0NoYXJhY3RlcnM7Cit9CisKK2Jvb2wgT3BhcXVlSlNTdHJpbmc6OmVx
dWFsKGNvbnN0IE9wYXF1ZUpTU3RyaW5nKiBhLCBjb25zdCBPcGFxdWVKU1N0cmluZyogYikKK3sK
KyAgICBpZiAoYSA9PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghYSB8fCAh
YikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGEtPm1fc3RyaW5nID09IGIt
Pm1fc3RyaW5nOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFx
dWVKU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5o
CmluZGV4IDYxZDgwZjNkYzhjNzE0MDk5OGU4ODBkMzc4Njc0MGZkZmU2ZDg2NDguLmViYmY3YTk5
MWJmNzU5NDc4NjRhMGJiMTM2NmM3ZmQxZTI3OTNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgT3BhcXVl
SlNTdHJpbmdfaAogI2RlZmluZSBPcGFxdWVKU1N0cmluZ19oCiAKKyNpbmNsdWRlIDxhdG9taWM+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM1LDggKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB9CiAK
IHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxPcGFx
dWVKU1N0cmluZz4gewotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNy
ZWF0ZSgpIC8vIG51bGwKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3Jl
YXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BhcXVlSlNTdHJpbmcp
OwogICAgIH0KQEAgLTUzLDM2ICs1Myw1MCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJik7CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIHsgcmV0dXJuIGRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzKCk7IH0gLy8gRklYTUU6IERlbGV0ZSB0aGlzLgotICAgIGNvbnN0IFVD
aGFyKiBkZXByZWNhdGVkQ2hhcmFjdGVycygpIHsgcmV0dXJuIHRoaXMgPyBtX3N0cmluZy5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpIDogbnVsbHB0cjsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIH5P
cGFxdWVKU1N0cmluZygpOworCisgICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiB0aGlzID8gbV9z
dHJpbmcuaXM4Qml0KCkgOiBmYWxzZTsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgp
IHsgcmV0dXJuIHRoaXMgPyBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpIDogbnVsbHB0cjsgfQorICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSB7IHJldHVybiB0aGlzID8gbV9zdHJpbmcuY2hh
cmFjdGVyczE2KCkgOiBudWxscHRyOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4g
dGhpcyA/IG1fc3RyaW5nLmxlbmd0aCgpIDogMDsgfQogCisgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMoKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmcoKSBjb25zdDsK
ICAgICBKU0M6OklkZW50aWZpZXIgaWRlbnRpZmllcihKU0M6OlZNKikgY29uc3Q7CiAKKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcGFxdWVKU1N0cmluZyosIGNvbnN0IE9wYXF1ZUpTU3Ry
aW5nKik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6VGhyZWFkU2FmZVJlZkNv
dW50ZWQ8T3BhcXVlSlNTdHJpbmc+OwogCiAgICAgT3BhcXVlSlNTdHJpbmcoKQorICAgICAgICA6
IG1fY2hhcmFjdGVycyhudWxscHRyKQogICAgIHsKICAgICB9CiAKICAgICBPcGFxdWVKU1N0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcuaXNvbGF0
ZWRDb3B5KCkpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzKG1fc3RyaW5nLmlzOEJpdCgpID8gbnVs
bHB0ciA6IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpKQogICAgIHsKICAgICB9CiAKICAgICBPcGFx
dWVKU1N0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAg
ICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkKKyAgICAgICAgLCBtX2NoYXJhY3Rl
cnMobnVsbHB0cikKICAgICB7CiAgICAgfQogCiAgICAgT3BhcXVlSlNTdHJpbmcoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgOiBtX3N0cmluZyhjaGFy
YWN0ZXJzLCBsZW5ndGgpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzKG1fc3RyaW5nLmlzOEJpdCgp
ID8gbnVsbHB0ciA6IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpKQogICAgIHsKICAgICB9CiAKICAg
ICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAvLyBUaGlzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgb24g
ZGVtYW5kIHdoZW4gY2hhcmFjdGVycygpIGlzIGNhbGxlZC4KKyAgICBzdGQ6OmF0b21pYzxjb25z
dCBVQ2hhcio+IG1fY2hhcmFjdGVyczsKIH07CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="245395"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>