<?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>56041</bug_id>
          
          <creation_ts>2011-03-09 12:11:13 -0800</creation_ts>
          <short_desc>RexExp constructor should only accept flags &quot;gim&quot;</short_desc>
          <delta_ts>2011-06-07 12:08:41 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>pkasting</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>364675</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-09 12:11:13 -0800</bug_when>
    <thetext>We also should be passing the flags around as a bitfield rather than a string, and should not have redundant, incompatible code for converting the string to a bitfield!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364678</commentid>
    <comment_count>1</comment_count>
      <attachid>85213</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-09 12:17:48 -0800</bug_when>
    <thetext>Created attachment 85213
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364681</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-09 12:20:20 -0800</bug_when>
    <thetext>Attachment 85213 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/sput...&quot; exit_code: 1

Source/JavaScriptCore/runtime/RegExp.h:40:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExp.h:40:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExp.h:60:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExp.h:60:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpCache.h:44:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpCache.h:45:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExpCache.h:45:  The parameter name &quot;iterator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364695</commentid>
    <comment_count>3</comment_count>
      <attachid>85213</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-09 12:28:52 -0800</bug_when>
    <thetext>Comment on attachment 85213
The patch

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

&gt; Source/JavaScriptCore/runtime/RegExp.h:27
&gt; +#include &quot;RegExpKey.h&quot;

Seems a little awkward to have to include RegExpKey here to get this flags enum.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/RegExp.h:40
&gt;&gt;&gt; +        static PassRefPtr&lt;RegExp&gt; create(JSGlobalData* globalData, const UString&amp; pattern, RegExpFlags flags);
&gt;&gt; 
&gt;&gt; The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the stylebot.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/RegExp.h:60
&gt;&gt;&gt; +        RegExp(JSGlobalData* globalData, const UString&amp; pattern, RegExpFlags flags);
&gt;&gt; 
&gt;&gt; The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the stylebot.

&gt;&gt; Source/JavaScriptCore/runtime/RegExpCache.h:44
&gt;&gt; +    PassRefPtr&lt;RegExp&gt; lookupOrCreate(const UString&amp; patternString, RegExpFlags flags);
&gt; 
&gt; The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the stylebot.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/RegExpCache.h:45
&gt;&gt;&gt; +    PassRefPtr&lt;RegExp&gt; create(const UString&amp; patternString, RegExpFlags flags, RegExpCacheMap::iterator iterator);
&gt;&gt; 
&gt;&gt; The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; The parameter name &quot;iterator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the stylebot.

&gt; Source/JavaScriptCore/runtime/RegExpConstructor.cpp:313
&gt; +        flags = regExpFlags(arg1.toString(exec));

Should return here if toString raised an exception rather than continuing with NoFlags.

&gt; Source/JavaScriptCore/runtime/RegExpKey.h:36
&gt; +enum RegExpFlags {

Flag bits are not quite an enum since they can be enum values or&apos;ed together. In some places we’ve used a separate integral typedef for this. I guess this is OK.

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:98
&gt; +            flags = regExpFlags(arg1.toString(exec));

Should return here if toString raised an exception rather than continuing with NoFlags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364709</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-09 12:44:10 -0800</bug_when>
    <thetext>Attachment 85213 did not build on win:
Build output: http://queues.webkit.org/results/8118525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364727</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-09 13:11:08 -0800</bug_when>
    <thetext>Attachment 85213 did not build on qt:
Build output: http://queues.webkit.org/results/8118549</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364739</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-09 13:27:28 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; Source/JavaScriptCore/runtime/RegExp.h:27
&gt; &gt; +#include &quot;RegExpKey.h&quot;
&gt; 
&gt; Seems a little awkward to have to include RegExpKey here to get this flags enum.

Agreed, but I didn&apos;t have a better solution.  RegExpKey comes quite high up the food chain (included by JSGlobalData.h), and it seems that RegExpKey really needs to know about this type.  If you have any suggestions I&apos;ll be happy to follow up.

Fixed stylebot issues / missing toString exception checks.

&gt; &gt; Source/JavaScriptCore/runtime/RegExpKey.h:36
&gt; &gt; +enum RegExpFlags {
&gt; 
&gt; Flag bits are not quite an enum since they can be enum values or&apos;ed together. In some places we’ve used a separate integral typedef for this. I guess this is OK.

Whilst it is a slight abuse of the language I strongly prefer an enum to get static type checking to catch errors.  Since you&apos;ve said okay I won&apos;t change, give me a stronger signal that you don&apos;t like this if you want me to change my approach here. :-)

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364812</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-09 15:04:47 -0800</bug_when>
    <thetext>Fixed in r80667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364844</commentid>
    <comment_count>8</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-03-09 16:01:58 -0800</bug_when>
    <thetext>This commit broke the Qt bots, see e.g. http://build.webkit.org/builders/Qt%20Windows%2032-bit%20Debug/builds/17389/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364846</commentid>
    <comment_count>9</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-03-09 16:03:11 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; This commit broke the Qt bots, see e.g. http://build.webkit.org/builders/Qt%20Windows%2032-bit%20Debug/builds/17389/steps/compile-webkit/logs/stdio

...and Windows as well.  I notice the EWS bots in both these cases flagged this before landing.  Maybe this shouldn&apos;t have landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364855</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-09 16:08:07 -0800</bug_when>
    <thetext>Hi peter,

Apologies for the breakage, I&apos;m fixing this now.

Just wanted to let you know, I did fix the issues identified by the EWS, unfortunately this patch managed to break the same two builds in different ways, too. :-(

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364988</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-09 21:52:59 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Hi peter,
&gt; 
&gt; Apologies for the breakage, I&apos;m fixing this now.

For completeness, it appears that this fix was landed in changeset 80684 &lt;http://trac.webkit.org/changeset/80684&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364989</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-09 21:54:30 -0800</bug_when>
    <thetext>Changeset 80684 &lt;http://trac.webkit.org/changeset/80684&gt; broke the WinCE build.

Build fix committed in changeset 80691 &lt;http://trac.webkit.org/changeset/80691&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365195</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-03-10 08:19:47 -0800</bug_when>
    <thetext>It seems this patch makes 2 tests on GTK crash sometimes:

fast/regex/parentheses.html -&gt; crashed
fast/regex/pcre-test-1.html -&gt; crashed

#0  0x00002b947b5ef542 in JSC::RegExpNode::emitBytecode (this=0x12d6838, generator=..., dst=0x13c1e2c) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:129
129	    ASSERT(flags != InvalidFlags);

Thread 1 (Thread 1535):
#0  0x00002b947b5ef542 in JSC::RegExpNode::emitBytecode (this=0x12d6838, generator=..., dst=0x13c1e2c) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:129
#1  0x00002b947b5d8d83 in JSC::BytecodeGenerator::emitNode (this=0x13bfe90, dst=0x13c1e2c, n=0x12d6838) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:212
#2  0x00002b947b5f6e17 in JSC::AssignResolveNode::emitBytecode (this=0x12d6860, generator=..., dst=0x0) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1198
#3  0x00002b947b5d8d83 in JSC::BytecodeGenerator::emitNode (this=0x13bfe90, dst=0x0, n=0x12d6860) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:212
#4  0x00002b947b5fd539 in JSC::BytecodeGenerator::emitNode (this=0x13bfe90, n=0x12d6860) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:217
#5  0x00002b947b5f8161 in JSC::VarStatementNode::emitBytecode (this=0x12d6898, generator=...) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1403
#6  0x00002b947b5d8d83 in JSC::BytecodeGenerator::emitNode (this=0x13bfe90, dst=0x13c01f8, n=0x12d6898) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:212
#7  0x00002b947b5fd9d8 in JSC::SourceElements::emitBytecode (this=0xc32e90, generator=..., dst=0x13c01f8) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1350
#8  0x00002b947b5fdaef in JSC::ScopeNode::emitStatementsBytecode (this=0x12af170, generator=..., dst=0x13c01f8) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1968
#9  0x00002b947b5fbb2d in JSC::ProgramNode::emitBytecode (this=0x12af170, generator=...) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1979
#10 0x00002b947b5c9efe in JSC::BytecodeGenerator::generate (this=0x13bfe90) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:144
#11 0x00002b947b6b0dbb in JSC::ProgramExecutable::compileInternal (this=0x2b94d08341d8, exec=0x2b948c002538, scopeChainNode=0x2b94d0824188) at ../../Source/JavaScriptCore/runtime/Executable.cpp:173
#12 0x00002b947b610f04 in JSC::ProgramExecutable::compile (this=0x2b94d08341d8, exec=0x2b948c002538, scopeChainNode=0x2b94d0824188) at ../../Source/JavaScriptCore/runtime/Executable.h:265
#13 0x00002b947b6a6658 in JSC::evaluate (exec=0x2b948c002538, scopeChain=0x2b94d0824188, source=..., thisValue=...) at ../../Source/JavaScriptCore/runtime/Completion.cpp:61
#14 0x00002b947a8d0d0f in WebCore::JSMainThreadExecState::evaluate (exec=0x2b948c002538, chain=0x2b94d0824188, source=..., thisValue=...) at ../../Source/WebCore/bindings/js/JSMainThreadExecState.h:54
#15 0x00002b947a8f78a2 in WebCore::ScriptController::evaluateInWorld (this=0xc8e0e8, sourceCode=..., world=0x12ac390) at ../../Source/WebCore/bindings/js/ScriptController.cpp:142
#16 0x00002b947a8f7a62 in WebCore::ScriptController::evaluate (this=0xc8e0e8, sourceCode=...) at ../../Source/WebCore/bindings/js/ScriptController.cpp:165
#17 0x00002b947ab07e1d in WebCore::ScriptElement::executeScript (this=0x2b948c009e00, sourceCode=...) at ../../Source/WebCore/dom/ScriptElement.cpp:256
#18 0x00002b947ac8f866 in WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent (this=0xc328f0, pendingScript=...) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:144
#19 0x00002b947ac8f68a in WebCore::HTMLScriptRunner::executeParsingBlockingScript (this=0xc328f0) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:123
#20 0x00002b947ac8fb91 in WebCore::HTMLScriptRunner::executeParsingBlockingScripts (this=0xc328f0) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:195
#21 0x00002b947ac8fcf4 in WebCore::HTMLScriptRunner::executeScriptsWaitingForLoad (this=0xc328f0, cachedScript=0x2b948c00a0c0) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:206
#22 0x00002b947ac849da in WebCore::HTMLDocumentParser::notifyFinished (this=0xcad8d0, cachedResource=0x2b948c00a0c0) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:496
#23 0x00002b947ad89c52 in WebCore::CachedScript::checkNotify (this=0x2b948c00a0c0) at ../../Source/WebCore/loader/cache/CachedScript.cpp:112
#24 0x00002b947ad89bd7 in WebCore::CachedScript::data (this=0x2b948c00a0c0, data=..., allDataReceived=true) at ../../Source/WebCore/loader/cache/CachedScript.cpp:102
#25 0x00002b947ad88595 in WebCore::CachedResourceRequest::didFinishLoading (this=0x2b948c009670, loader=0x2b948c055460) at ../../Source/WebCore/loader/cache/CachedResourceRequest.cpp:160
#26 0x00002b947aded112 in WebCore::SubresourceLoader::didFinishLoading (this=0x2b948c055460, finishTime=0) at ../../Source/WebCore/loader/SubresourceLoader.cpp:181
#27 0x00002b947ade432d in WebCore::ResourceLoader::didFinishLoading (this=0x2b948c055460, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:436
#28 0x00002b947a740670 in WebCore::readCallback (source=0x129c4c0, asyncResult=0xcb1520, data=0x0) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:781
#29 0x00002b947e77bf65 in async_ready_callback_wrapper (source_object=0x129c4c0, res=0xcb1520, user_data=0x0) at /tmp/buildd/glib2.0-2.27.91/./gio/ginputstream.c:470
#30 0x00002b947e78d628 in complete_in_idle_cb_for_thread (_data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./gio/gsimpleasyncresult.c:812
#31 0x00002b947f2f4362 in g_main_dispatch (context=0xc0e760) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:2440
#32 g_main_context_dispatch (context=0xc0e760) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3013
#33 0x00002b947f2f8a28 in g_main_context_iterate (context=0xc0e760, block=&lt;value optimized out&gt;, dispatch=&lt;value optimized out&gt;, self=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3091
#34 0x00002b947f2f8f35 in g_main_loop_run (loop=0xd08be0) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3299
#35 0x00002b947d267657 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#36 0x000000000041e5ad in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:679
#37 0x000000000041dc3f in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:489
#38 0x000000000041fd24 in main (argc=2, argv=0x7fff16b06688) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1143</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85213</attachid>
            <date>2011-03-09 12:17:48 -0800</date>
            <delta_ts>2011-03-09 12:28:52 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>56041.patch</filename>
            <type>text/plain</type>
            <size>27749</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA2NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDMtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyA1NjA0
MSAtIFJleEV4cCBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBhY2NlcHQgZmxhZ3MgImdpbSIKKyAg
ICAgICAgV2UgYWxzbyBzaG91bGQgYmUgcGFzc2luZyB0aGUgZmxhZ3MgYXJvdW5kIGFzIGEgYml0
ZmllbGQgcmF0aGVyIHRoYW4gYSBzdHJpbmcsCisgICAgICAgIGFuZCBzaG91bGQgbm90IGhhdmUg
cmVkdW5kYW50LCBpbmNvbXBhdGlibGUgY29kZSBmb3IgY29udmVydGluZyB0aGUgc3RyaW5nIHRv
IGEgYml0ZmllbGQhCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICAgICAtIE5lZWQgdG8gcGFyc2UgZmxhZ3Mgc3RyaW5n
IHRvIGVudW0uCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpy
ZWdFeHBGbGFncyk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwOjpjcmVhdGUpOgorICAgICAgICAgICAgLSBBZGQgbWV0aG9kIHRvIHBhcnNlIGZs
YWdzIHN0cmluZyB0byBlbnVtLCBjaGFuZ2UgY29uc3RydWN0b3IvY3JlYXRlIGFyZ3MgdG8gdGFr
ZSBlbnVtLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6Z2xvYmFsKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjppZ25vcmVDYXNlKToKKyAgICAgICAg
KEpTQzo6UmVnRXhwOjptdWx0aWxpbmUpOgorICAgICAgICAgICAgLSBDaGFuZ2UgdG8gdXNlIG5l
dyBlbnVtIHZhbHVlcy4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6UmVnRXhwQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ2FjaGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5oOgorICAg
ICAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSByZWdFeHBGbGFncyBlbnVtIGluc3RlYWQgb2YgaW50
L2NvbnN0IFVTdHJpbmcmLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAgICAgICAgICAgLSBBZGQgdXNl
IG5ldyBlbnVtIHBhcnNpbmcsIGNoZWNrIGZvciBlcnJvci4KKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cEtleS5oOgorICAgICAgICAoSlNDOjpSZWdFeHBLZXk6OlJlZ0V4cEtleSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90
b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgICAgICAtIFBhc3MgTm9GbGFncyB2YWx1
ZSBpbnN0ZWFkIG9mIGVtcHR5IHN0cmluZy4KKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5j
Q29tcGlsZSk6CisgICAgICAgICAgICAtIEFkZCB1c2UgbmV3IGVudW0gcGFyc2luZywgY2hlY2sg
Zm9yIGVycm9yLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTWF0Y2gpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNTZWFyY2gpOgorICAgICAgICAgICAgLSBQYXNzIE5vRmxhZ3MgdmFsdWUgaW5zdGVhZCBv
ZiBlbXB0eSBzdHJpbmcuCisKIDIwMTEtMDMtMDggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gODA2NTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsMyBAQAotX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9yVGFibGVFCiBf
SlNDaGVja1NjcmlwdFN5bnRheAogX0pTQ2xhc3NDcmVhdGUKIF9KU0NsYXNzUmVsZWFzZQpAQCAt
MTIwLDYgKzExOSw3IEBAIF9fWk4zSlNDMTFNYXJrZWRTcGFjZTIxYWxsb2NhdGVGcm9tU2l6ZUMK
IF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5T
XzlFeGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFCiBfX1pOM0pTQzExY3JlYXRlRXJyb3JFUE5T
XzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTFyZWdFeHBGbGFnc0VSS05TXzdV
U3RyaW5nRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTZzX2luZm9FCiBfX1pOM0pTQzEyRGF0ZUlu
c3RhbmNlQzFFUE5TXzlFeGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1
Y3R1cmVFRUVkCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNlQzFFUE5TXzlFeGVjU3RhdGVFZApAQCAt
MjAxLDYgKzIwMSw3IEBAIF9fWk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlND
MjBNYXJrZWRBcmd1bWVudEJ1ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlND
MjBjcmVhdGVSZWZlcmVuY2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19a
TjNKU0MyMmdsb2JhbE1lbW9yeVN0YXRpc3RpY3NFdgorX19aTjNKU0MyMm9iamVjdENvbnN0cnVj
dG9yVGFibGVFCiBfX1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CiBfX1pO
M0pTQzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzIz
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3RFUE5TXzlFeGVjU3RhdGVFUEtOU185SGFzaEVudHJ5RVBO
U184SlNPYmplY3RFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQpAQCAtMjQ4
LDcgKzI0OSw3IEBAIF9fWk4zSlNDNkpTTG9jazRsb2NrRU5TXzE0SlNMb2NrQmVoYXZpb3IKIF9f
Wk4zSlNDNkpTTG9jazZ1bmxvY2tFTlNfMTRKU0xvY2tCZWhhdmlvckUKIF9fWk4zSlNDNkpTTG9j
azlsb2NrQ291bnRFdgogX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pT
QzZSZWdFeHA2Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRVM1XworX19a
TjNKU0M2UmVnRXhwNmNyZWF0ZUVQTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VOU18x
MVJlZ0V4cEZsYWdzRQogX19aTjNKU0M2UmVnRXhwRDFFdgogX19aTjNKU0M3SlNBcnJheTEybWFy
a0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0M3SlNBcnJheTE1c2V0U3ViY2xhc3NE
YXRhRVB2CkBAIC00NDYsMTAgKzQ0NywxMCBAQCBfX1pOM1dURjM5aW5pdGlhbGl6ZU1haW5UaHJl
YWRUb1Byb2Nlc3NNCiBfX1pOM1dURjNNRDU4YWRkQnl0ZXNFUEtobQogX19aTjNXVEYzTUQ1OGNo
ZWNrc3VtRVJOU182VmVjdG9ySWhMbTE2RUVFCiBfX1pOM1dURjNNRDVDMUV2Ci1fX1pOM1dURjRk
dG9hRVBjZFJiUmlSagogX19aTjNXVEY0U0hBMTExY29tcHV0ZUhhc2hFUk5TXzZWZWN0b3JJaExt
MjBFRUUKIF9fWk4zV1RGNFNIQTE4YWRkQnl0ZXNFUEtobQogX19aTjNXVEY0U0hBMUMxRXYKK19f
Wk4zV1RGNGR0b2FFUGNkUmJSaVJqCiBfX1pOM1dURjVNdXRleDRsb2NrRXYKIF9fWk4zV1RGNU11
dGV4NnVubG9ja0V2CiBfX1pOM1dURjVNdXRleDd0cnlMb2NrRXYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlz
aW9uIDgwNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDkgQEAgUmVnaXN0ZXJJRCog
UmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVmUHRyPFJlZ0V4cD4g
cmVnRXhwID0gZ2VuZXJhdG9yLmdsb2JhbERhdGEoKS0+cmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JD
cmVhdGUobV9wYXR0ZXJuLnVzdHJpbmcoKSwgbV9mbGFncy51c3RyaW5nKCkpOworICAgIFJlZ0V4
cEZsYWdzIGZsYWdzID0gcmVnRXhwRmxhZ3MobV9mbGFncy51c3RyaW5nKCkpOworICAgIEFTU0VS
VChmbGFncyAhPSBJbnZhbGlkRmxhZ3MpOworICAgIFJlZlB0cjxSZWdFeHA+IHJlZ0V4cCA9IGdl
bmVyYXRvci5nbG9iYWxEYXRhKCktPnJlZ0V4cENhY2hlKCktPmxvb2t1cE9yQ3JlYXRlKG1fcGF0
dGVybi51c3RyaW5nKCksIGZsYWdzKTsKICAgICBBU1NFUlQocmVnRXhwLT5pc1ZhbGlkKCkpOwog
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5ld1JlZ0V4cChnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCByZWdFeHAuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiA4MDY1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDM4IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitSZWdFeHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBVU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgUmVnRXhwRmxhZ3MgZmxhZ3MgPSBOb0ZsYWdzOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IHN3aXRjaCAoc3RyaW5nLmNoYXJhY3RlcnMoKVtpXSkgeworICAgICAgICBjYXNlICdnJzoKKyAg
ICAgICAgICAgIGlmIChmbGFncyAmIEZsYWdHbG9iYWwpCisgICAgICAgICAgICAgICAgcmV0dXJu
IEludmFsaWRGbGFnczsKKyAgICAgICAgICAgIGZsYWdzID0gc3RhdGljX2Nhc3Q8UmVnRXhwRmxh
Z3M+KGZsYWdzIHwgRmxhZ0dsb2JhbCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlICdpJzoKKyAgICAgICAgICAgIGlmIChmbGFncyAmIEZsYWdJZ25vcmVDYXNlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBJbnZhbGlkRmxhZ3M7CisgICAgICAgICAgICBmbGFncyA9IHN0YXRp
Y19jYXN0PFJlZ0V4cEZsYWdzPihmbGFncyB8IEZsYWdJZ25vcmVDYXNlKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgaWYgKGZsYWdzICYgRmxh
Z011bHRpbGluZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSW52YWxpZEZsYWdzOworICAgICAg
ICAgICAgZmxhZ3MgPSBzdGF0aWNfY2FzdDxSZWdFeHBGbGFncz4oZmxhZ3MgfCBGbGFnTXVsdGls
aW5lKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gSW52YWxpZEZsYWdzOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZs
YWdzOworfQorICAKIHN0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbiB7CiAjaWYgRU5BQkxFKFlB
UlJfSklUKQogICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwpAQCAtNDEs
OSArNzMsOSBAQCBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb24gewogICAgIE93blB0cjxZYXJy
OjpCeXRlY29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNvZGU7CiB9OwogCi1pbmxpbmUgUmVnRXhw
OjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
U3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncykKK2lubGluZSBSZWdFeHA6OlJlZ0V4cChKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4
cEZsYWdzIGZsYWdzKQogICAgIDogbV9wYXR0ZXJuU3RyaW5nKHBhdHRlcm5TdHJpbmcpCi0gICAg
LCBtX2ZsYWdCaXRzKDApCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgICwgbV9jb25zdHJ1Y3Rp
b25FcnJvcigwKQogICAgICwgbV9udW1TdWJwYXR0ZXJucygwKQogI2lmIEVOQUJMRShSRUdFWFBf
VFJBQ0lORykKQEAgLTUyLDE3ICs4NCw2IEBAIGlubGluZSBSZWdFeHA6OlJlZ0V4cChKU0dsb2Jh
bERhdGEqIGdsb2IKICNlbmRpZgogICAgICwgbV9yZXByZXNlbnRhdGlvbihhZG9wdFB0cihuZXcg
UmVnRXhwUmVwcmVzZW50YXRpb24pKQogewotICAgIC8vIE5PVEU6IFRoZSBnbG9iYWwgZmxhZyBp
cyBoYW5kbGVkIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzIGJ5IGZ1bmN0aW9ucyBsaWtlCi0gICAg
Ly8gU3RyaW5nOjptYXRjaCBhbmQgUmVnRXhwT2JqZWN0OjptYXRjaC4KLSAgICBpZiAoIWZsYWdz
LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChmbGFncy5maW5kKCdnJykgIT0gbm90Rm91bmQpCi0g
ICAgICAgICAgICBtX2ZsYWdCaXRzIHw9IEdsb2JhbDsKLSAgICAgICAgaWYgKGZsYWdzLmZpbmQo
J2knKSAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fZmxhZ0JpdHMgfD0gSWdub3JlQ2FzZTsK
LSAgICAgICAgaWYgKGZsYWdzLmZpbmQoJ20nKSAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1f
ZmxhZ0JpdHMgfD0gTXVsdGlsaW5lOwotICAgIH0KLQogICAgIG1fc3RhdGUgPSBjb21waWxlKGds
b2JhbERhdGEpOwogfQogCkBAIC03MCw3ICs5MSw3IEBAIFJlZ0V4cDo6flJlZ0V4cCgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdz
KQorUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgUmVmUHRyPFJlZ0V4cD4gcmVzID0gYWRvcHRSZWYobmV3IFJlZ0V4cChnbG9iYWxEYXRh
LCBwYXR0ZXJuU3RyaW5nLCBmbGFncykpOwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiA4MDY1NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIlJlZ0V4cEtleS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzIsMTQgKzMz
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbjsK
ICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKKyAgICBSZWdFeHBGbGFncyByZWdFeHBGbGFncyhj
b25zdCBVU3RyaW5nJik7CisKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWdFeHA+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZ0V4cD4g
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
Y29uc3QgVVN0cmluZyYgZmxhZ3MpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+
IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IFJlZ0V4cEZsYWdzIGZsYWdzKTsKICAgICAgICAgflJlZ0V4cCgpOwogCi0gICAgICAgIGJvb2wg
Z2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAmIEdsb2JhbDsgfQotICAgICAgICBi
b29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdCaXRzICYgSWdub3JlQ2FzZTsg
fQotICAgICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ0JpdHMgJiBN
dWx0aWxpbmU7IH0KKyAgICAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
ICYgRmxhZ0dsb2JhbDsgfQorICAgICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KKyAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQogCiAgICAgICAgIGNvbnN0
IFVTdHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KIApA
QCAtNTQsNyArNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpOworICAgICAgICBSZWdFeHAoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyBmbGFn
cyk7CiAKICAgICAgICAgZW51bSBSZWdFeHBTdGF0ZSB7CiAgICAgICAgICAgICBQYXJzZUVycm9y
LApAQCAtNjgsOSArNzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXRjaENv
bXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50
KiBvZmZzZXRWZWN0b3IsIGludCBqaXRSZXN1bHQpOwogI2VuZGlmCiAKLSAgICAgICAgZW51bSBG
bGFnQml0cyB7IEdsb2JhbCA9IDEsIElnbm9yZUNhc2UgPSAyLCBNdWx0aWxpbmUgPSA0IH07CiAg
ICAgICAgIFVTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOwotICAgICAgICBpbnQgbV9mbGFnQml0czsK
KyAgICAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKICAgICAgICAgY29uc3QgY2hhciogbV9jb25z
dHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCShyZXZpc2lvbiA4MDY1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cENh
Y2hlOjpsb29rdXBPckNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBV
U3RyaW5nJiBmbGFncykKK1Bhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHBDYWNoZTo6bG9va3VwT3JD
cmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgaWYgKHBhdHRlcm5TdHJpbmcubGVuZ3RoKCkgPCBtYXhDYWNoZWFibGVQYXR0ZXJuTGVu
Z3RoKSB7CiAgICAgICAgIHBhaXI8UmVnRXhwQ2FjaGVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX2NhY2hlTWFwLmFkZChSZWdFeHBLZXkoZmxhZ3MsIHBhdHRlcm5TdHJpbmcpLCAwKTsK
QEAgLTQzLDcgKzQzLDcgQEAgUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cENhY2hlOjpsb29rdXBP
cgogICAgIHJldHVybiBjcmVhdGUocGF0dGVyblN0cmluZywgZmxhZ3MsIG1fY2FjaGVNYXAuZW5k
KCkpOwogfQogCi1QYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwQ2FjaGU6OmNyZWF0ZShjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBjb25zdCBVU3RyaW5nJiBmbGFncywgUmVnRXhwQ2FjaGVN
YXA6Oml0ZXJhdG9yIGl0ZXJhdG9yKSAKK1Bhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHBDYWNoZTo6
Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzLCBS
ZWdFeHBDYWNoZU1hcDo6aXRlcmF0b3IgaXRlcmF0b3IpIAogewogICAgIFJlZlB0cjxSZWdFeHA+
IHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZywgZmxh
Z3MpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmgJKHJldmlzaW9uIDgwNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBSZWdFeHBD
YWNoZSB7CiB0eXBlZGVmIEhhc2hNYXA8UmVnRXhwS2V5LCBSZWZQdHI8UmVnRXhwPiA+IFJlZ0V4
cENhY2hlTWFwOwogCiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0cjxSZWdFeHA+IGxvb2t1cE9yQ3Jl
YXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsK
LSAgICBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJp
bmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzLCBSZWdFeHBDYWNoZU1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IpOworICAgIFBhc3NSZWZQdHI8UmVnRXhwPiBsb29rdXBPckNyZWF0ZShjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncyk7CisgICAgUGFzc1JlZlB0cjxSZWdF
eHA+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFn
cywgUmVnRXhwQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yKTsKICAgICBSZWdFeHBDYWNoZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gODA2NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIHNldFJlZ0V4
cENvbnN0cnVjdG9yTXVsdGlsaW5lKEV4ZWNTCiB7CiAgICAgYXNSZWdFeHBDb25zdHJ1Y3Rvcihi
YXNlT2JqZWN0KS0+c2V0TXVsdGlsaW5lKHZhbHVlLnRvQm9vbGVhbihleGVjKSk7CiB9Ci0gIAor
CiAvLyBFQ01BIDE1LjEwLjQKIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewpAQCAtMzA1LDcgKzMwNSwxNSBAQCBKU09iamVj
dCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlCiAgICAgfQogCiAgICAgVVN0cmluZyBw
YXR0ZXJuID0gYXJnMC5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygiIikgOiBhcmcwLnRvU3RyaW5n
KGV4ZWMpOwotICAgIFVTdHJpbmcgZmxhZ3MgPSBhcmcxLmlzVW5kZWZpbmVkKCkgPyBVU3RyaW5n
KCIiKSA6IGFyZzEudG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZ0V4cEZsYWdzIGZsYWdzID0gTm9GbGFnczsK
KyAgICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBmbGFncyA9IHJlZ0V4cEZs
YWdzKGFyZzEudG9TdHJpbmcoZXhlYykpOworICAgICAgICBpZiAoZmxhZ3MgPT0gSW52YWxpZEZs
YWdzKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIp
KTsKKyAgICB9CiAKICAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHAgPSBleGVjLT5nbG9iYWxEYXRh
KCkucmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUocGF0dGVybiwgZmxhZ3MpOwogICAgIGlm
ICghcmVnRXhwLT5pc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBLZXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBLZXkuaAkocmV2aXNpb24gODA2NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBLZXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNjMgKzI1LDUzIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJVU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgotCiAjaWZuZGVmIFJlZ0V4cEtleV9oCiAjZGVmaW5lIFJlZ0V4
cEtleV9oCiAKKyNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAorZW51bSBSZWdFeHBGbGFncyB7CisgICAgTm9G
bGFncyA9IDAsCisgICAgRmxhZ0dsb2JhbCA9IDEsCisgICAgRmxhZ0lnbm9yZUNhc2UgPSAyLAor
ICAgIEZsYWdNdWx0aWxpbmUgPSA0LAorICAgIEludmFsaWRGbGFncyA9IDgKK307CisKIHN0cnVj
dCBSZWdFeHBLZXkgewotICAgIGludCBmbGFnc1ZhbHVlOworICAgIFJlZ0V4cEZsYWdzIGZsYWdz
VmFsdWU7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHBhdHRlcm47CiAKICAgICBSZWdFeHBLZXko
KQotICAgICAgICA6IGZsYWdzVmFsdWUoMCkKKyAgICAgICAgOiBmbGFnc1ZhbHVlKE5vRmxhZ3Mp
CiAgICAgewogICAgIH0KIAotICAgIFJlZ0V4cEtleShpbnQgZmxhZ3MpCisgICAgUmVnRXhwS2V5
KFJlZ0V4cEZsYWdzIGZsYWdzKQogICAgICAgICA6IGZsYWdzVmFsdWUoZmxhZ3MpCiAgICAgewog
ICAgIH0KIAotICAgIFJlZ0V4cEtleShpbnQgZmxhZ3MsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4p
CisgICAgUmVnRXhwS2V5KFJlZ0V4cEZsYWdzIGZsYWdzLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
KQogICAgICAgICA6IGZsYWdzVmFsdWUoZmxhZ3MpCiAgICAgICAgICwgcGF0dGVybihwYXR0ZXJu
LmltcGwoKSkKICAgICB7CiAgICAgfQogCi0gICAgUmVnRXhwS2V5KGludCBmbGFncywgY29uc3Qg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBwYXR0ZXJuKQorICAgIFJlZ0V4cEtleShSZWdFeHBGbGFn
cyBmbGFncywgY29uc3QgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBwYXR0ZXJuKQogICAgICAgICA6
IGZsYWdzVmFsdWUoZmxhZ3MpCiAgICAgICAgICwgcGF0dGVybihwYXR0ZXJuKQogICAgIHsKICAg
ICB9CiAKLSAgICBSZWdFeHBLZXkoaW50IGZsYWdzLCBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4m
IHBhdHRlcm4pCisgICAgUmVnRXhwS2V5KFJlZ0V4cEZsYWdzIGZsYWdzLCBjb25zdCBSZWZQdHI8
U3RyaW5nSW1wbD4mIHBhdHRlcm4pCiAgICAgICAgIDogZmxhZ3NWYWx1ZShmbGFncykKICAgICAg
ICAgLCBwYXR0ZXJuKHBhdHRlcm4pCiAgICAgewogICAgIH0KLQotICAgIFJlZ0V4cEtleShjb25z
dCBVU3RyaW5nJiBmbGFncywgY29uc3QgVVN0cmluZyYgcGF0dGVybikKLSAgICAgICAgOiBwYXR0
ZXJuKHBhdHRlcm4uaW1wbCgpKQotICAgIHsKLSAgICAgICAgZmxhZ3NWYWx1ZSA9IGdldEZsYWdz
VmFsdWUoZmxhZ3MpOwotICAgIH0KLQotICAgIGludCBnZXRGbGFnc1ZhbHVlKGNvbnN0IFVTdHJp
bmcgZmxhZ3MpIAotICAgIHsKLSAgICAgICAgZmxhZ3NWYWx1ZSA9IDA7Ci0gICAgICAgIGlmIChm
bGFncy5maW5kKCdnJykgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICBmbGFnc1ZhbHVlICs9IDQ7
Ci0gICAgICAgIGlmIChmbGFncy5maW5kKCdpJykgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICBm
bGFnc1ZhbHVlICs9IDI7Ci0gICAgICAgIGlmIChmbGFncy5maW5kKCdtJykgIT0gbm90Rm91bmQp
Ci0gICAgICAgICAgICBmbGFnc1ZhbHVlICs9IDE7Ci0gICAgICAgIHJldHVybiBmbGFnc1ZhbHVl
OwotICAgIH0KIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnRXhwS2V5JiBh
LCBjb25zdCBSZWdFeHBLZXkmIGIpIApAQCAtMTEyLDggKzEwMiw4IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPEpTQzo6UmVnRXgKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpSZWdFeHBLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpSZWdFeHBLZXk+
IHsKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpSZWdFeHBLZXkm
IHNsb3QpIHsgc2xvdC5mbGFnc1ZhbHVlID0gLTE7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBKU0M6OlJlZ0V4cEtleSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmZsYWdz
VmFsdWUgPT0gLTE7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoSlND
OjpSZWdFeHBLZXkmIHNsb3QpIHsgc2xvdC5mbGFnc1ZhbHVlID0gSlNDOjpJbnZhbGlkRmxhZ3M7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBKU0M6OlJlZ0V4cEtleSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmZsYWdzVmFsdWUgPT0gSlNDOjpJbnZhbGlkRmxhZ3M7IH0K
IH07CiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA4MDY1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRQogLy8gRUNNQSAxNS4xMC41CiAKIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUpCi0gICAgOiBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFJlZ0V4
cDo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksICIiLCAiIikpCisgICAgOiBSZWdFeHBPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFJlZ0V4cDo6Y3JlYXRlKCZleGVjLT5nbG9iYWxE
YXRhKCksICIiLCBOb0ZsYWdzKSkKIHsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhw
UHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhlYywgcmVn
RXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKQEAgLTkwLDcgKzkwLDE1IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgcmVnRXhwID0gYXNSZWdF
eHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFVTdHJpbmcg
cGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkgPyBVU3RyaW5nKCIiKSA6IGFyZzAudG9T
dHJpbmcoZXhlYyk7Ci0gICAgICAgIFVTdHJpbmcgZmxhZ3MgPSBhcmcxLmlzVW5kZWZpbmVkKCkg
PyBVU3RyaW5nKCIiKSA6IGFyZzEudG9TdHJpbmcoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAgICAgUmVnRXhwRmxhZ3MgZmxhZ3MgPSBOb0ZsYWdzOworICAgICAg
ICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgZmxhZ3MgPSByZWdFeHBG
bGFncyhhcmcxLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSBJbnZh
bGlkRmxhZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0
cnVjdG9yLiIpKTsKKyAgICAgICAgfQogICAgICAgICByZWdFeHAgPSBleGVjLT5nbG9iYWxEYXRh
KCkucmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUocGF0dGVybiwgZmxhZ3MpOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiA4MDY1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNSw3ICs2MTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAqICBJ
ZiByZWdleHAgaXMgbm90IGFuIG9iamVjdCB3aG9zZSBbW0NsYXNzXV0gcHJvcGVydHkgaXMgIlJl
Z0V4cCIsIGl0IGlzCiAgICAgICAgICAqICByZXBsYWNlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhl
IGV4cHJlc3Npb24gbmV3IFJlZ0V4cChyZWdleHApLgogICAgICAgICAgKi8KLSAgICAgICAgcmVn
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnJlZ0V4cENhY2hlKCktPmxvb2t1cE9yQ3JlYXRlKGEwLnRv
U3RyaW5nKGV4ZWMpLCBVU3RyaW5nKCkpOworICAgICAgICByZWcgPSBleGVjLT5nbG9iYWxEYXRh
KCkucmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUoYTAudG9TdHJpbmcoZXhlYyksIE5vRmxh
Z3MpOwogICAgIH0KICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cENvbnN0cnVjdG9yKCk7CiAgICAgaW50
IHBvczsKQEAgLTY2OCw3ICs2NjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAgICAgICAgICAqICBJZiByZWdleHAgaXMgbm90IGFuIG9iamVjdCB3aG9zZSBb
W0NsYXNzXV0gcHJvcGVydHkgaXMgIlJlZ0V4cCIsIGl0IGlzCiAgICAgICAgICAqICByZXBsYWNl
ZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24gbmV3IFJlZ0V4cChyZWdleHApLgog
ICAgICAgICAgKi8KLSAgICAgICAgcmVnID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnJlZ0V4cENhY2hl
KCktPmxvb2t1cE9yQ3JlYXRlKGEwLnRvU3RyaW5nKGV4ZWMpLCBVU3RyaW5nKCkpOworICAgICAg
ICByZWcgPSBleGVjLT5nbG9iYWxEYXRhKCkucmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUo
YTAudG9TdHJpbmcoZXhlYyksIE5vRmxhZ3MpOwogICAgIH0KICAgICBSZWdFeHBDb25zdHJ1Y3Rv
ciogcmVnRXhwQ29uc3RydWN0b3IgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4
cENvbnN0cnVjdG9yKCk7CiAgICAgaW50IHBvczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgw
NjU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDMtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ1ZyA1NjA0MSAtIFJleEV4cCBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBhY2NlcHQgZmxhZ3Mg
ImdpbSIKKyAgICAgICAgV2UgYWxzbyBzaG91bGQgYmUgcGFzc2luZyB0aGUgZmxhZ3MgYXJvdW5k
IGFzIGEgYml0ZmllbGQgcmF0aGVyIHRoYW4gYSBzdHJpbmcsCisgICAgICAgIGFuZCBzaG91bGQg
bm90IGhhdmUgcmVkdW5kYW50LCBpbmNvbXBhdGlibGUgY29kZSBmb3IgY29udmVydGluZyB0aGUg
c3RyaW5nIHRvIGEgYml0ZmllbGQhCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJl
YWRUZXJtaW5hbCk6CisgICAgICAgICAgICAtIE5lZWQgdG8gcGFyc2UgZmxhZ3Mgc3RyaW5nIGJh
Y2sgdG8gZW51bS4KKwogMjAxMS0wMy0wOSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCShyZXZpc2lvbiA4MDY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsNyArMTE3Niw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgZmxhZ3M7CiAgICAgICAg
ICAgICBpZiAoIXJlYWRTdHJpbmdEYXRhKGZsYWdzKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ0V4cD4gcmVnRXhwID0gUmVnRXhwOjpj
cmVhdGUoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLT51c3RyaW5nKCksIGZsYWdzLT51
c3RyaW5nKCkpOworICAgICAgICAgICAgUmVnRXhwRmxhZ3MgcmVGbGFncyA9IHJlZ0V4cEZsYWdz
KGZsYWdzLT51c3RyaW5nKCkpOworICAgICAgICAgICAgQVNTRVJUKHJlRmxhZ3MgIT0gSW52YWxp
ZEZsYWdzKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdFeHA+IHJlZ0V4cCA9IFJlZ0V4cDo6Y3Jl
YXRlKCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVybi0+dXN0cmluZygpLCByZUZsYWdzKTsK
ICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgUmVnRXhwT2JqZWN0KG1fZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBtX2dsb2JhbE9iamVjdC0+cmVnRXhwU3RydWN0dXJlKCksIHJl
Z0V4cCk7IAogICAgICAgICB9CiAgICAgICAgIGNhc2UgT2JqZWN0UmVmZXJlbmNlVGFnOiB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MDY1NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDExLTAzLTA5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCdWcgNTYwNDEgLSBSZXhFeHAgY29uc3RydWN0b3Igc2hvdWxkIG9u
bHkgYWNjZXB0IGZsYWdzICJnaW0iCisgICAgICAgIFdlIGFsc28gc2hvdWxkIGJlIHBhc3Npbmcg
dGhlIGZsYWdzIGFyb3VuZCBhcyBhIGJpdGZpZWxkIHJhdGhlciB0aGFuIGEgc3RyaW5nLAorICAg
ICAgICBhbmQgc2hvdWxkIG5vdCBoYXZlIHJlZHVuZGFudCwgaW5jb21wYXRpYmxlIGNvZGUgZm9y
IGNvbnZlcnRpbmcgdGhlIHN0cmluZyB0byBhIGJpdGZpZWxkIQorCisgICAgICAgICogc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUu
MTAuNC4xX0E1X1QxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNl
LzE1X05hdGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09i
amVjdHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UMy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xMF9S
ZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
cHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40
L1MxNS4xMC40LjFfQTVfVDUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9B
NV9UNi1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q3LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1
LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDgtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMTBfUmVnRXhwLzE1
LjEwLjQvUzE1LjEwLjQuMV9BNV9UOS1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICAtIENoZWNr
IGluIHBhc3NpbmcgcmVzdWx0cyEKKwogMjAxMS0wMy0wOSAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMgb2Yg
c3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljIGFmdGVyIHI4MDU4Mi4KSW5kZXg6IExheW91
dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMTBfUmVnRXhw
LzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdF
eHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1QxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODA2NTcp
CisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1
LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDEtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjEwLjQuMV9BNV9UMQogCi1GQUlMIFNwdXRuaWtF
cnJvcjogIzEuMjogbmV3IFJlZ0V4cCh1bmRlZmluZWQsImlpIikgdGhyb3cgU3ludGF4RXJyb3Iu
IEFjdHVhbDogU3B1dG5pa0Vycm9yOiAjMS4xOiBuZXcgUmVnRXhwKHVuZGVmaW5lZCwiaWkiKSB0
aHJvdyBTeW50YXhFcnJvci4gQWN0dWFsOiAvKD86KS9pCitQQVNTIAogCiBURVNUIENPTVBMRVRF
CiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UMi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2Jq
ZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1QyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gODA2NTcpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjEwLjQuMV9BNV9UMgog
Ci1GQUlMIFNwdXRuaWtFcnJvcjogIzEuMjogbmV3IFJlZ0V4cChudWxsLCJtaWdnIikgdGhyb3cg
U3ludGF4RXJyb3IuIEFjdHVhbDogU3B1dG5pa0Vycm9yOiAjMS4xOiBuZXcgUmVnRXhwKG51bGws
Im1pZ2ciKSB0aHJvdyBTeW50YXhFcnJvci4gQWN0dWFsOiAvbnVsbC9naW0KK1BBU1MgCiAKIFRF
U1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1QzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA4MDY1NykKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9B
NV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuMTAu
NC4xX0E1X1QzCiAKLUZBSUwgU3B1dG5pa0Vycm9yOiAjMS4yOiBuZXcgUmVnRXhwKCIiLGV2YWwo
IlwibWlnclwiIikpIHRocm93IFN5bnRheEVycm9yLiBBY3R1YWw6IFNwdXRuaWtFcnJvcjogIzEu
MTogbmV3IFJlZ0V4cCgiIixldmFsKCJcIm1pZ3JcIiIpKSB0aHJvdyBTeW50YXhFcnJvci4gQWN0
dWFsOiAvKD86KS9naW0KK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUu
MTAuNC9TMTUuMTAuNC4xX0E1X1Q0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8x
NS4xMC40L1MxNS4xMC40LjFfQTVfVDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4MDY1NykKKysr
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMTBf
UmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UNC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiBTMTUuMTAuNC4xX0E1X1Q0CiAKLUZBSUwgU3B1dG5pa0Vycm9y
OiAjMS4yOiBuZXcgUmVnRXhwKCJhfGIiLCJ6IikgdGhyb3cgU3ludGF4RXJyb3IuIEFjdHVhbDog
U3B1dG5pa0Vycm9yOiAjMS4xOiBuZXcgUmVnRXhwKCJhfGIiLCJ6IikgdGhyb3cgU3ludGF4RXJy
b3IuIEFjdHVhbDogL2F8Yi8KK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0
VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAv
MTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q1LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjEwX1JlZ0V4
cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4MDY1NykK
KysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUu
MTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UNS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuMTAuNC4xX0E1X1Q1CiAKLUZBSUwgU3B1dG5pa0Vy
cm9yOiAjMS4yOiBuZXcgUmVnRXhwKCJhfGJ8W2EtYl0iLHt0b1N0cmluZzpmdW5jdGlvbigpe3Jl
dHVybiAieCIgdGhyb3cgU3ludGF4RXJyb3IuIEFjdHVhbDogU3B1dG5pa0Vycm9yOiAjMS4xOiBu
ZXcgUmVnRXhwKCJhfGJ8W2EtYl0iLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAieCIgdGhy
b3cgU3ludGF4RXJyb3IuIEFjdHVhbDogL2F8YnxbYS1iXS8KK1BBU1MgCiAKIFRFU1QgQ09NUExF
VEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2Jq
ZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q2LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDYtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA4MDY1NykKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UNi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuMTAuNC4xX0E1X1Q2
CiAKLUZBSUwgU3B1dG5pa0Vycm9yOiAjMS4yOiBuZXcgUmVnRXhwKCIuIixudWxsKSB0aHJvdyBT
eW50YXhFcnJvci4gQWN0dWFsOiBTcHV0bmlrRXJyb3I6ICMxLjE6IG5ldyBSZWdFeHAoIi4iLG51
bGwpIHRocm93IFN5bnRheEVycm9yLiBBY3R1YWw6IC8uLworUEFTUyAKIAogVEVTVCBDT01QTEVU
RQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09i
amVjdHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UNy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDgwNjU3KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q3LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS4xMC40LjFfQTVfVDcK
IAotRkFJTCBTcHV0bmlrRXJyb3I6ICMxLjI6IG5ldyBSZWdFeHAoIl4iLDEuMCkgdGhyb3cgU3lu
dGF4RXJyb3IuIEFjdHVhbDogU3B1dG5pa0Vycm9yOiAjMS4xOiBuZXcgUmVnRXhwKCJeIiwxLjAp
IHRocm93IFN5bnRheEVycm9yLiBBY3R1YWw6IC9eLworUEFTUyAKIAogVEVTVCBDT01QTEVURQog
CkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDgtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UOC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDgwNjU3KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q4LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS4xMC40LjFfQTVfVDgKIAot
RkFJTCBTcHV0bmlrRXJyb3I6ICMxLjI6IG5ldyBSZWdFeHAoInwiLHRydWUpIHRocm93IFN5bnRh
eEVycm9yLiBBY3R1YWw6IFNwdXRuaWtFcnJvcjogIzEuMTogbmV3IFJlZ0V4cCgifCIsdHJ1ZSkg
dGhyb3cgU3ludGF4RXJyb3IuIEFjdHVhbDogL3wvCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuMTBfUmVnRXhwLzE1LjEwLjQvUzE1LjEwLjQuMV9BNV9UOS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS4xMF9SZWdFeHAvMTUuMTAuNC9TMTUuMTAuNC4xX0E1X1Q5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gODA2NTcpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2
ZV9PYmplY3RzLzE1LjEwX1JlZ0V4cC8xNS4xMC40L1MxNS4xMC40LjFfQTVfVDktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjEwLjQuMV9BNV9UOQogCi1G
QUlMIFNwdXRuaWtFcnJvcjogIzEuMjogbmV3IFJlZ0V4cCgiJHN1cCIse3RvU3RyaW5nOmZ1bmN0
aW9uKCl7fX0pIHRocm93IFN5bnRheEVycm9yLiBBY3R1YWw6IFNwdXRuaWtFcnJvcjogIzEuMTog
bmV3IFJlZ0V4cCgiJHN1cCIse3RvU3RyaW5nOmZ1bmN0aW9uKCl7fX0pIHRocm93IFN5bnRheEVy
cm9yLiBBY3R1YWw6IC8kc3VwL2kKK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUKIAo=
</data>
<flag name="review"
          id="77307"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>