<?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>130538</bug_id>
          
          <creation_ts>2014-03-20 14:30:27 -0700</creation_ts>
          <short_desc>Strict mode destructuring assignment crashes the parser.</short_desc>
          <delta_ts>2014-03-24 18:54:33 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>992731</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-20 14:30:27 -0700</bug_when>
    <thetext>Here&apos;s the test case:

&quot;use strict&quot;;  (function(){ ({a: NaN} = null) });

Run that in jsc and you&apos;ll get a crash with the following back trace:

(lldb) bt
* thread #1: tid = 0x4ddaef, 0x000000010006d50c JavaScriptCore`WTF::RefPtr&lt;WTF::StringImpl&gt;::get(this=0x0000000000000000) const + 12 at RefPtr.h:57, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000010006d50c JavaScriptCore`WTF::RefPtr&lt;WTF::StringImpl&gt;::get(this=0x0000000000000000) const + 12 at RefPtr.h:57
    frame #1: 0x000000010006d4f5 JavaScriptCore`WTF::String::impl(this=0x0000000000000000) const + 21 at WTFString.h:150
    frame #2: 0x00000001000e2699 JavaScriptCore`JSC::Identifier::equal(a=0x0000000000000000, b=0x0000000103001b98) + 25 at Identifier.h:106
    frame #3: 0x00000001000b21ad JavaScriptCore`JSC::operator==(a=0x0000000000000000, b=0x0000000103001b98) + 29 at Identifier.h:200
    frame #4: 0x000000010067e751 JavaScriptCore`JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseUnaryExpression&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 1697 at Parser.cpp:2262
    frame #5: 0x000000010067dcec JavaScriptCore`JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseBinaryExpression&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 140 at Parser.cpp:1683
    frame #6: 0x000000010067d8a9 JavaScriptCore`JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseConditionalExpression&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 57 at Parser.h:1643
    frame #7: 0x000000010067d055 JavaScriptCore`JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseAssignmentExpression&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 469 at Parser.h:1576
    frame #8: 0x000000010067cb52 JavaScriptCore`JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseExpression&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 178 at Parser.h:1539
    frame #9: 0x000000010067c8ce JavaScriptCore`JSC::SyntaxChecker::Statement JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseExpressionStatement&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8) + 78 at Parser.h:1444
    frame #10: 0x000000010067478f JavaScriptCore`JSC::SyntaxChecker::Statement JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseStatement&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8, directive=0x00007fff5fbfbc30, directiveLiteralLength=0x00007fff5fbfbc2c) + 1183 at Parser.cpp:1178
    frame #11: 0x0000000100673eeb JavaScriptCore`JSC::SyntaxChecker::SourceElements JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseSourceElements&lt;JSC::SyntaxChecker&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfbcd8, mode=CheckForStrictMode) + 107 at Parser.h:336
    frame #12: 0x0000000100673926 JavaScriptCore`JSC::ASTBuilder::FunctionBody JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseFunctionBody&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 390 at Parser.cpp:1214
    frame #13: 0x000000010066c2fa JavaScriptCore`bool JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseFunctionInfo&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8, requirements=FunctionNoRequirements, mode=FunctionMode, nameIsInContainingScope=false, name=0x00007fff5fbfc578, parameters=0x00007fff5fbfc570, body=0x00007fff5fbfc568, openBraceOffset=0x00007fff5fbfc564, closeBraceOffset=0x00007fff5fbfc560, bodyStartLine=0x00007fff5fbfc55c, bodyStartColumn=0x00007fff5fbfc558) + 4922 at Parser.h:1304
    frame #14: 0x0000000100669eed JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseMemberExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 477 at Parser.cpp:2124
    frame #15: 0x0000000100668e74 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseUnaryExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 1060 at Parser.h:2251
    frame #16: 0x000000010066819a JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseBinaryExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 186 at Parser.cpp:1683
    frame #17: 0x00000001006678b9 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseConditionalExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 57 at Parser.h:1643
    frame #18: 0x0000000100666d78 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseAssignmentExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 616 at Parser.h:1576
    frame #19: 0x00000001006665b4 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 180 at Parser.h:1539
    frame #20: 0x000000010066d459 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parsePrimaryExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 649 at Parser.cpp:1986
    frame #21: 0x000000010066a02b JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseMemberExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 795 at Parser.h:2127
    frame #22: 0x0000000100668e74 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseUnaryExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 1060 at Parser.h:2251
    frame #23: 0x000000010066819a JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseBinaryExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 186 at Parser.cpp:1683
    frame #24: 0x00000001006678b9 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseConditionalExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 57 at Parser.h:1643
    frame #25: 0x0000000100666d78 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseAssignmentExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 616 at Parser.h:1576
    frame #26: 0x00000001006665b4 JavaScriptCore`JSC::ASTBuilder::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseExpression&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 180 at Parser.h:1539
    frame #27: 0x000000010066632e JavaScriptCore`JSC::ASTBuilder::Statement JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseExpressionStatement&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8) + 78 at Parser.h:1444
    frame #28: 0x000000010065d7e6 JavaScriptCore`JSC::ASTBuilder::Statement JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseStatement&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8, directive=0x00007fff5fbfd6f8, directiveLiteralLength=0x00007fff5fbfd6f4) + 1206 at Parser.cpp:1178
    frame #29: 0x0000000100607edc JavaScriptCore`JSC::ASTBuilder::SourceElements JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseSourceElements&lt;JSC::ASTBuilder&gt;(this=0x00007fff5fbfec58, context=0x00007fff5fbfd8f8, mode=CheckForStrictMode) + 108 at Parser.cpp:336
    frame #30: 0x0000000100607943 JavaScriptCore`JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseInner(this=0x00007fff5fbfec58) + 227 at Parser.cpp:267
    frame #31: 0x000000010009b93b JavaScriptCore`WTF::PassRefPtr&lt;JSC::ProgramNode&gt; JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parse&lt;JSC::ProgramNode&gt;(this=0x00007fff5fbfec58, error=0x00007fff5fbff988) + 283 at Parser.h:894
    frame #32: 0x000000010009a621 JavaScriptCore`WTF::PassRefPtr&lt;JSC::ProgramNode&gt; JSC::parse&lt;JSC::ProgramNode&gt;(vm=0x0000000102007800, source=0x00007fff5fbff8d8, parameters=0x0000000000000000, name=0x00007fff5fbff748, strictness=JSParseNormal, parserMode=JSParseProgramCode, error=0x00007fff5fbff988, positionBeforeLastNewline=0x0000000000000000) + 305 at Parser.h:964
    frame #33: 0x000000010014d06b JavaScriptCore`JSC::checkSyntax(vm=0x0000000102007800, source=0x00007fff5fbff8d8, error=0x00007fff5fbff988) + 219 at Completion.cpp:58
    frame #34: 0x0000000100002668 jsc`runInteractive(globalObject=0x0000000101cff970) + 648 at SourceCode.h:118
    frame #35: 0x00000001000017f3 jsc`jscmain(argc=1, argv=0x00007fff5fbffb58) + 403 at jsc.cpp:1132
    frame #36: 0x00000001000015a1 jsc`main(argc=1, argv=0x00007fff5fbffb58) + 177 at jsc.cpp:871
    frame #37: 0x00007fff854185fd libdyld.dylib`start + 1
    frame #38: 0x00007fff854185fd libdyld.dylib`start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992734</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-20 14:35:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/16383775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992736</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-03-20 14:36:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/16383811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992818</commentid>
    <comment_count>3</comment_count>
      <attachid>227357</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-03-20 17:33:46 -0700</bug_when>
    <thetext>Created attachment 227357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992845</commentid>
    <comment_count>4</comment_count>
      <attachid>227357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-20 18:13:44 -0700</bug_when>
    <thetext>Comment on attachment 227357
Patch

r=me with additional tests cases for &quot;eval&quot; and &quot;arguments&quot; in destructing assignments as we discussed offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992846</commentid>
    <comment_count>5</comment_count>
      <attachid>227357</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-20 18:14:52 -0700</bug_when>
    <thetext>Comment on attachment 227357
Patch

Can you add a test for the &quot;Cannot deconstruct to&quot; case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994049</commentid>
    <comment_count>6</comment_count>
      <attachid>227712</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-03-24 18:01:21 -0700</bug_when>
    <thetext>Created attachment 227712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994056</commentid>
    <comment_count>7</comment_count>
      <attachid>227712</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-03-24 18:22:03 -0700</bug_when>
    <thetext>Comment on attachment 227712
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994059</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-03-24 18:54:33 -0700</bug_when>
    <thetext>Committed r166216: &lt;http://trac.webkit.org/changeset/166216&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227357</attachid>
            <date>2014-03-20 17:33:46 -0700</date>
            <delta_ts>2014-03-24 18:01:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130538-20140320173322.patch</filename>
            <type>text/plain</type>
            <size>5067</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YmYyMDc4YmU1MmViNmY4OWFlMjM1ODUyOTU1MjkzYTRjZWEwMzI4Li4xYTQ2OTA1MTEyNjllNTYy
MWRkMGIwNmM4NjQ5NjRlNDk4MzZjZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNC0wMy0yMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmljdCBtb2RlIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudCBjcmFzaGVzIHRo
ZSBwYXJzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzA1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIHN1cmUgd2UgZmFpbCBlYXJseSBvbiBpbnZhbGlkIGJpbmRpbmcgbm9kZXMsIGFuZAor
ICAgICAgICB0aGVuIHZlcmlmeSB0aGF0IHdlIGFjdHVhbGx5IHdlcmUgcGFyc2luZyBhIHJlc29s
dmUgbm9kZQorICAgICAgICBiZWZvcmUgYXR0ZW1wdGluZyB0byByZS10ZXN0IHRoZSBhc3NpZ25t
ZW50LgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisKIDIwMTQtMDMtMjAgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBiZW5lYXRoIG9wZXJh
dGlvblRlYXJPZmZBY3RpdmF0aW9uIHJ1bm5pbmcgdGhpcyBKUyBjb21wcmVzc2lvbiBkZW1vCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYzVlNzBhMzZkNTM0NjY1
YmVmY2VkOGIyNzk0YmM0MDE4NGY4NTk4Yi4uNTZiMTgwMWEzYjlkY2FjYTgwMzdmODRkMjZjYWM1
YmJkNGI5YzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
NTUyLDYgKzU1MiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0
cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHN0cmljdE1vZGUoKSkKKyAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSBuYW1lIHx8IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gbmFtZSwgIkNhbm5vdCBkZWNvbnN0cnVjdCB0byAn
IiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CisgICAgCiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKG1fdG9rZW4ubV9sb2NhdGlvbiwgbmFtZSwgbV90
b2tlbi5tX3N0YXJ0UG9zaXRpb24sIG1fdG9rZW4ubV9lbmRQb3NpdGlvbik7CiB9CiAKQEAgLTIy
NTEsNyArMjI1NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgfQogICAgIGJvb2wg
aXNFdmFsT3JBcmd1bWVudHMgPSBmYWxzZTsKICAgICBpZiAoc3RyaWN0TW9kZSgpICYmICFtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKLSAgICAgICAgaWYgKGNvbnRleHQuaXNSZXNvbHZlKGV4
cHIpKQorICAgICAgICBpZiAoY29udGV4dC5pc1Jlc29sdmUoZXhwcikgJiYgbV9sYXN0SWRlbnRp
ZmllcikKICAgICAgICAgICAgIGlzRXZhbE9yQXJndW1lbnRzID0gKm1fbGFzdElkZW50aWZpZXIg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCB8fCAqbV9sYXN0SWRlbnRpZmllciA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHM7CiAgICAgfQogICAgIGZhaWxJZlRydWVJZlN0cmlj
dChpc0V2YWxPckFyZ3VtZW50cyAmJiBtb2RpZmllc0V4cHIsICJDYW5ub3QgbW9kaWZ5ICciLCBt
X2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmZj
NmFlZWEzNmI0Yzc3ZTNkMjM2NDU5YzdkOTRiZjA1YTA1ZjFjMy4uYWI1ZGY2ZTYyMWU1YzYyNWZh
NzY3NjJmMjllNzliYTVmODFmNDM2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTAzLTIw
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaWN0IG1vZGUg
ZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50IGNyYXNoZXMgdGhlIHBhcnNlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDUzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhZGRpdGlvbmFsIHRlc3Rp
bmcKKworICAgICAgICAqIGpzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzOgorCiAyMDE0LTAz
LTIwICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3IE11bHRp
Y29sdW1uXSBnZXRDbGllbnRSZWN0cyByZXR1cm5zIHdyb25nIHJlY3RhbmdsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAppbmRleCBmOTEzNzU5
ZTQ5ODAwZjRjZjU3ZDY5NTZjMTVjYTBlNDZkMWMxNDY1Li43ZWQwYjdmZTk2MTIyN2MxOThjMWQ1
YjNiYWQ5NDZlNWZiYzFiOWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3lu
dGF4LWNoZWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4
LWNoZWNrLWV4cGVjdGVkLnR4dApAQCAtNjg4LDYgKzY4OCwyNCBAQCBQQVNTIFZhbGlkOiAgICIo
ezE6IHh9KSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7MTogeH0pIH0iCiBQQVNT
IFZhbGlkOiAgICIoezE6IHh9PTEpIgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgKHsx
OiB4fT0xKSB9IgorUEFTUyBWYWxpZDogICAiKHsxOiB4fT1udWxsKSIKK1BBU1MgVmFsaWQ6ICAg
ImZ1bmN0aW9uIGYoKSB7ICh7MTogeH09bnVsbCkgfSIKK1BBU1MgVmFsaWQ6ICAgIih7MTogeH0p
IgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgKHsxOiB4fSkgfSIKK1BBU1MgVmFsaWQ6
ICAgIih7MTogeH09MSkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoezE6IHh9PTEp
IH0iCitQQVNTIFZhbGlkOiAgICIoezE6IHh9PW51bGwpIgorUEFTUyBWYWxpZDogICAiZnVuY3Rp
b24gZigpIHsgKHsxOiB4fT1udWxsKSB9IgorUEFTUyBWYWxpZDogICAiKHthOiBifT1udWxsKSIK
K1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7YTogYn09bnVsbCkgfSIKK1BBU1MgVmFs
aWQ6ICAgIid1c2Ugc3RyaWN0JzsgKHsxOiB4fSkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBm
KCkgeyAndXNlIHN0cmljdCc7ICh7MTogeH0pIH0iCitQQVNTIFZhbGlkOiAgICIndXNlIHN0cmlj
dCc7ICh7MTogeH09MSkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAndXNlIHN0cmlj
dCc7ICh7MTogeH09MSkgfSIKK1BBU1MgVmFsaWQ6ICAgIid1c2Ugc3RyaWN0JzsgKHsxOiB4fT1u
dWxsKSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICd1c2Ugc3RyaWN0JzsgKHsxOiB4
fT1udWxsKSB9IgorUEFTUyBWYWxpZDogICAiJ3VzZSBzdHJpY3QnOyAoe2E6IGJ9PW51bGwpIgor
UEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgJ3VzZSBzdHJpY3QnOyAoe2E6IGJ9PW51bGwp
IH0iCiBQQVNTIFZhbGlkOiAgICJ2YXIgezE6eH09MSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9u
IGYoKSB7IHZhciB7MTp4fT0xIH0iCiBQQVNTIFZhbGlkOiAgICJbeF09MSIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKaW5kZXggNmU5
MWQ1MjNlMzY2MzNmNmVkNzJhYzRhZTZmZWJlYTUyYzM1N2JmNC4uYzZmOTM0YzNhMzY0MjJlOGQy
OGI0OTliNzMwYWRmZjA5NTU3Y2Y2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKQEAgLTQyNyw2ICs0MjcsMTUgQEAgdmFsaWQo
IlsuLi5iYXIsLCwsXSIpCiB2YWxpZCgiWywsLCwuLi5iYXJdIikKIHZhbGlkKCIoezE6IHh9KSIp
CiB2YWxpZCgiKHsxOiB4fT0xKSIpCit2YWxpZCgiKHsxOiB4fT1udWxsKSIpCit2YWxpZCgiKHsx
OiB4fSkiKQordmFsaWQoIih7MTogeH09MSkiKQordmFsaWQoIih7MTogeH09bnVsbCkiKQordmFs
aWQoIih7YTogYn09bnVsbCkiKQordmFsaWQoIid1c2Ugc3RyaWN0JzsgKHsxOiB4fSkiKQordmFs
aWQoIid1c2Ugc3RyaWN0JzsgKHsxOiB4fT0xKSIpCit2YWxpZCgiJ3VzZSBzdHJpY3QnOyAoezE6
IHh9PW51bGwpIikKK3ZhbGlkKCIndXNlIHN0cmljdCc7ICh7YTogYn09bnVsbCkiKQogdmFsaWQo
InZhciB7MTp4fT0xIikKIHZhbGlkKCJbeF09MSIpCiB2YWxpZCgidmFyIFt4XT0xIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227712</attachid>
            <date>2014-03-24 18:01:21 -0700</date>
            <delta_ts>2014-03-24 18:22:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130538-20140324180049.patch</filename>
            <type>text/plain</type>
            <size>17071</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MmUyMjVmYTVjOTcwOGE3NjI4ODM0M2FlZTE3MTZlNTRkNTNhMmYwLi43M2Q4NWM3ZGJhNWEwNWQ3
NTU1OWQ2ZGI3OGRiOWIzODRjNDU2YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNC0wMy0yNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmljdCBtb2RlIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudCBjcmFzaGVzIHRo
ZSBwYXJzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzA1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgU3ludGF4Q2hlY2tlciBtb2RlIGFsd2F5cyByZXR1cm4gMSBmb3Igc3VjY2VzcywgZXhj
ZXB0CisgICAgICAgIGZvciBhIHNtYWxsIHN1YnNldCBvZiBmdW5jdGlvbnMgd2hlcmUgd2UgbmVl
ZGVkIGV4YWN0IGluZm9ybWF0aW9uLgorICAgICAgICBUaGlzIGVuZHMgdXAganVzdCBiZWluZyBh
IHBvb3IgZGVzaWduIGRlY2lzaW9uIGFzIGl0IG1lYW5zCisgICAgICAgIHRoZSBwYXJzZXIgY2Fu
IGdldCBjb25mdXNlZCBiZXR3ZWVuIGEgZnVuY3Rpb24gcmV0dXJuIDEsIGFuZAorICAgICAgICB0
aGUgUmVzb2x2ZSBjb25zdGFudCB3aGljaCB3YXMgYWxzbyAxLiBTbyB3ZSBub3cgdXNlIGEgdW5p
cXVlCisgICAgICAgIHR5cGUgZm9yIGV2ZXJ5IGNyZWF0aW9uIG1ldGhvZC4KKworICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJndW1l
bnRzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3ByZWFkRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFyZ3VtZW50c0xpc3QpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGF1c2UpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDbGF1c2VMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUV4
cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVJZlN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckxvb3ApOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JPZkxvb3ApOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVUcnlT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVXaGlsZVN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb1doaWxlU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTGFiZWxTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQ29uc3RTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjphcHBlbmRDb25zdERlY2wpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjb21i
aW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3Rh
Y2tQb3ApOgorCiAyMDE0LTAzLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdGFja0xheW91dFBoYXNlIHNob3VsZCBmaW5kIHRoZSB1bmlvbidlZCBjYWxsZWVW
YXJpYWJsZSBiZWZvcmUgYWNjZXNzaW5nIGl0cyBtYWNoaW5lTG9jYWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDAyMWUxMjgzMjQyYjVhMDY0
Y2FkMzljYjVhNTUwYTlkNmY2MGU5ZWEuLjg5MTJkOGI4OGI4MzlkMGY5NTc3YmUxMDY0OWZiZGRh
OGY3YWJmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCkBAIC03NSw3ICs3NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uRXhwciwgQnJh
Y2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQ
b3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLAogICAgICAgICBDb25kaXRpb25hbEV4cHIs
IEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHByLAotICAgICAgICBEZWxldGVFeHByLCBBcnJheUxp
dGVyYWxFeHByIH07CisgICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRp
bmdEZWNvbnN0cnVjdGlvbiwKKyAgICAgICAgQXJyYXlEZWNvbnN0cnVjdGlvbiwgT2JqZWN0RGVj
b25zdHJ1Y3Rpb24sIFNvdXJjZUVsZW1lbnRzUmVzdWx0LAorICAgICAgICBGdW5jdGlvbkJvZHlS
ZXN1bHQsIFNwcmVhZEV4cHIsIEFyZ3VtZW50c1Jlc3VsdCwKKyAgICAgICAgUHJvcGVydHlMaXN0
UmVzdWx0LCBBcmd1bWVudHNMaXN0UmVzdWx0LCBFbGVtZW50c0xpc3RSZXN1bHQsCisgICAgICAg
IFN0YXRlbWVudFJlc3VsdCwgRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdCwgQ2xhdXNlUmVzdWx0
LAorICAgICAgICBDbGF1c2VMaXN0UmVzdWx0LCBDb21tYUV4cHIsIERlY29uc3RydWN0aW5nQXNz
aWdubWVudAorICAgIH07CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvblR5cGU7CiAKICAgICB0
eXBlZGVmIEV4cHJlc3Npb25UeXBlIEV4cHJlc3Npb247CkBAIC0xMTEsNyArMTE3LDYgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgaW50IENsYXVzZTsKICAgICB0eXBlZGVmIGludCBDb25zdERlY2xM
aXN0OwogICAgIHR5cGVkZWYgaW50IEJpbmFyeU9wZXJhbmQ7Ci0gICAgZW51bSB7IEJpbmRpbmdE
ZWNvbnN0cnVjdGlvbiA9IDEsIEFycmF5RGVjb25zdHJ1Y3Rpb24sIE9iamVjdERlY29uc3RydWN0
aW9uIH07CiAgICAgdHlwZWRlZiBpbnQgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuOwogICAgIHR5cGVk
ZWYgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIEFycmF5UGF0dGVybjsKICAgICB0eXBlZGVmIERlY29u
c3RydWN0aW9uUGF0dGVybiBPYmplY3RQYXR0ZXJuOwpAQCAtMTIyLDcgKzEyNyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRG9udEJ1aWxkS2V5d29yZHMgPSBMZXhleEZs
YWdzRG9udEJ1aWxkS2V5d29yZHM7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWls
ZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAotICAgIGludCBjcmVhdGVT
b3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVu
dHMoKSB7IHJldHVybiBTb3VyY2VFbGVtZW50c1Jlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBl
IG1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQogICAgIHZvaWQgYXBwZW5kVG9Db21t
YShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9IHJp
Z2h0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4g
cmlnaHQ7IH0KQEAgLTE1NCwxMyArMTU5LDEzIEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9u
YWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9u
RXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlS
ZXN1bHQ7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KLSAg
ICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1
bWVudHMoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3ByZWFk
RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1
bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQor
ICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTcHJlYWRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTcHJlYWRF
eHByOyB9CisgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUFy
Z3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIEFy
Z3VtZW50c0xpc3RSZXN1bHQ7IH0KICAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIGNvbXBs
ZXRlKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE3OCw0MSArMTgzLDQxIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0g
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0
eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVF
bGVtZW50TGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFbGVtZW50
TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvcm1hbFBh
cmFtZXRlckxpc3QoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoaW50LCBEZWNvbnN0cnVjdGlvblBhdHRlcm4pIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlUHJv
cGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5KSB7IHJldHVybiBQcm9w
ZXJ0eUxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJuIFByb3BlcnR5TGlzdFJlc3VsdDsg
fQorICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCkgeyByZXR1cm4gRWxlbWVudHNM
aXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0
ZXJMaXN0KERlY29uc3RydWN0aW9uUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlz
dFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGludCwgRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9Cisg
ICAgaW50IGNyZWF0ZUNsYXVzZShpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlUmVzdWx0OyB9Cisg
ICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0OyB9
CisgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RS
ZXN1bHQ7IH0KICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JPZkxvb3AoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJikgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdp
dGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVMYWJlbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgYXBwZW5kQ29uc3REZWNsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3Qg
SWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0K
KyAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUV4
cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAg
ICBpbnQgY3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBpbnQgY3Jl
YXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBpbnQg
Y3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBp
bnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4g
U3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0K
KyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVC
cmVha1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4g
U3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCkgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAg
ICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAg
ICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1
bHQ7IH0KKyAgICBpbnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBp
bnQgY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBpbnQg
Y3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVMYWJl
bFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZVRo
cm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAg
aW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBhcHBlbmRDb25zdERl
Y2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7
IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBib29sIHN0cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwpAQCAtMjI5
LDcgKzIzNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVtZW50KGludCwgaW50
KSB7IH0KICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9Ci0gICAg
aW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50KSB7IHJldHVybiBDb21tYUV4cHI7IH0KICAgICBpbnQgZXZhbENvdW50
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbklu
Zm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQsIGJvb2wp
CiAgICAgewpAQCAtMjU1LDEzICsyNjAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdW5hcnlUb2tl
blN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAg
ICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgT3BlcmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgY29uc3QgSWRlbnRp
ZmllciogZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgQVNTRVJUKHBy
b3BlcnR5Lm5hbWUpOyByZXR1cm4gcHJvcGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6
VHlwZSBnZXRUeXBlKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJv
cGVydHkudHlwZTsgfQogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIGNv
bnN0IHsgcmV0dXJuIGV4cHIgPT0gUmVzb2x2ZUV4cHIgfHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBFeHByZXNzaW9uVHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Owog
ICAgIH0KICAgICAKICAgICBBcnJheVBhdHRlcm4gY3JlYXRlQXJyYXlQYXR0ZXJuKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjdlYTg4ZjUxOWFhYzhhMTQyOGRkNGFlZWVkYjUxMTcy
MDgxNTA0Ny4uNTIyMTVmNGFlOGU3ZTg5NDIyYjZkMjJhZDEwZTY1ODFmZjdjM2JiMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTAzLTI0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RyaWN0IG1vZGUgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50IGNyYXNo
ZXMgdGhlIHBhcnNlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDUzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0cworCisgICAgICAgICoganMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2su
anM6CisKIDIwMTQtMDMtMjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggc2VtYW50aWNzIG9mIEpTIGV4ZWN1dGlvbiB3aGVuIGFzc2lnbmluZyBhbiBvYmpl
Y3QgdG8gZG9jdW1lbnQubG9jYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3BhcnNl
ci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRh
eC1jaGVjay1leHBlY3RlZC50eHQKaW5kZXggZjkxMzc1OWU0OTgwMGY0Y2Y1N2Q2OTU2YzE1Y2Ew
ZTQ2ZDFjMTQ2NS4uN2VkMGI3ZmU5NjEyMjdjMTk4YzFkNWIzYmFkOTQ2ZTVmYmMxYjlmMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQKQEAg
LTY4OCw2ICs2ODgsMjQgQEAgUEFTUyBWYWxpZDogICAiKHsxOiB4fSkiCiBQQVNTIFZhbGlkOiAg
ICJmdW5jdGlvbiBmKCkgeyAoezE6IHh9KSB9IgogUEFTUyBWYWxpZDogICAiKHsxOiB4fT0xKSIK
IFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7MTogeH09MSkgfSIKK1BBU1MgVmFsaWQ6
ICAgIih7MTogeH09bnVsbCkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoezE6IHh9
PW51bGwpIH0iCitQQVNTIFZhbGlkOiAgICIoezE6IHh9KSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0
aW9uIGYoKSB7ICh7MTogeH0pIH0iCitQQVNTIFZhbGlkOiAgICIoezE6IHh9PTEpIgorUEFTUyBW
YWxpZDogICAiZnVuY3Rpb24gZigpIHsgKHsxOiB4fT0xKSB9IgorUEFTUyBWYWxpZDogICAiKHsx
OiB4fT1udWxsKSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7MTogeH09bnVsbCkg
fSIKK1BBU1MgVmFsaWQ6ICAgIih7YTogYn09bnVsbCkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlv
biBmKCkgeyAoe2E6IGJ9PW51bGwpIH0iCitQQVNTIFZhbGlkOiAgICIndXNlIHN0cmljdCc7ICh7
MTogeH0pIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgJ3VzZSBzdHJpY3QnOyAoezE6
IHh9KSB9IgorUEFTUyBWYWxpZDogICAiJ3VzZSBzdHJpY3QnOyAoezE6IHh9PTEpIgorUEFTUyBW
YWxpZDogICAiZnVuY3Rpb24gZigpIHsgJ3VzZSBzdHJpY3QnOyAoezE6IHh9PTEpIH0iCitQQVNT
IFZhbGlkOiAgICIndXNlIHN0cmljdCc7ICh7MTogeH09bnVsbCkiCitQQVNTIFZhbGlkOiAgICJm
dW5jdGlvbiBmKCkgeyAndXNlIHN0cmljdCc7ICh7MTogeH09bnVsbCkgfSIKK1BBU1MgVmFsaWQ6
ICAgIid1c2Ugc3RyaWN0JzsgKHthOiBifT1udWxsKSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9u
IGYoKSB7ICd1c2Ugc3RyaWN0JzsgKHthOiBifT1udWxsKSB9IgogUEFTUyBWYWxpZDogICAidmFy
IHsxOnh9PTEiCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIgezE6eH09MSB9Igog
UEFTUyBWYWxpZDogICAiW3hdPTEiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCmluZGV4IDZlOTFkNTIzZTM2NjMzZjZlZDcyYWM0YWU2
ZmViZWE1MmMzNTdiZjQuLmM2ZjkzNGMzYTM2NDIyZThkMjhiNDk5YjczMGFkZmYwOTU1N2NmNmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNo
ZWNrLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNo
ZWNrLmpzCkBAIC00MjcsNiArNDI3LDE1IEBAIHZhbGlkKCJbLi4uYmFyLCwsLF0iKQogdmFsaWQo
IlssLCwsLi4uYmFyXSIpCiB2YWxpZCgiKHsxOiB4fSkiKQogdmFsaWQoIih7MTogeH09MSkiKQor
dmFsaWQoIih7MTogeH09bnVsbCkiKQordmFsaWQoIih7MTogeH0pIikKK3ZhbGlkKCIoezE6IHh9
PTEpIikKK3ZhbGlkKCIoezE6IHh9PW51bGwpIikKK3ZhbGlkKCIoe2E6IGJ9PW51bGwpIikKK3Zh
bGlkKCIndXNlIHN0cmljdCc7ICh7MTogeH0pIikKK3ZhbGlkKCIndXNlIHN0cmljdCc7ICh7MTog
eH09MSkiKQordmFsaWQoIid1c2Ugc3RyaWN0JzsgKHsxOiB4fT1udWxsKSIpCit2YWxpZCgiJ3Vz
ZSBzdHJpY3QnOyAoe2E6IGJ9PW51bGwpIikKIHZhbGlkKCJ2YXIgezE6eH09MSIpCiB2YWxpZCgi
W3hdPTEiKQogdmFsaWQoInZhciBbeF09MSIpCg==
</data>
<flag name="review"
          id="251957"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>