<?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>123182</bug_id>
          
          <creation_ts>2013-10-22 16:06:39 -0700</creation_ts>
          <short_desc>Change local variable register allocation to start at offset -1</short_desc>
          <delta_ts>2013-10-29 16:13:40 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123209</dependson>
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942466</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-22 16:06:39 -0700</bug_when>
    <thetext>Local variables and temporaries in the JavaScript engine start at offset or slot 0 from the CallFrame location.  To align with native calling conventions, the frame pointer typically points at either the previous frame pointer or return PC.  Therefore local need to start at offset -1 from the call frame register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942468</commentid>
    <comment_count>1</comment_count>
      <attachid>214898</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-22 16:09:13 -0700</bug_when>
    <thetext>Created attachment 214898
Work in progress

Passes JSC tests using LLInt + baseline JIT on 64 bit. Runs all but on 32 bit test using LLInt + baseline JIT.  It crashes in js/script-tests/function-apply-aliased.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943207</commentid>
    <comment_count>2</comment_count>
      <attachid>215080</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-24 10:40:04 -0700</bug_when>
    <thetext>Created attachment 215080
Patch

The definition and use of numCalleeRegistersIncludingSkippedSlot0() will need to change when this patch is reconciled with the relayout of CallFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943239</commentid>
    <comment_count>3</comment_count>
      <attachid>215080</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-24 11:53:29 -0700</bug_when>
    <thetext>Comment on attachment 215080
Patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:350
&gt; +    int numCalleeRegistersIncludingSkippedSlot0() { return m_numCalleeRegisters + 1; }

We want the call frame pointer to point to the first call frame header slot, with the first local below it. This skipped slot 0 design logically points the call frame header at the first local slot, and then avoids allocating a virtual register to the first local slot. That&apos;s not quite what we want.

Instead, you should adjust the call frame pointer to point to the first call frame header slot.

&gt; Source/JavaScriptCore/bytecode/VirtualRegister.h:77
&gt; +    static int localToOperand(int local) { return -1-local; }
&gt; +    static int operandToLocal(int operand) { return -1-operand; }

Spaces around &quot;-&quot; please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944223</commentid>
    <comment_count>4</comment_count>
      <attachid>215336</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-28 14:39:23 -0700</bug_when>
    <thetext>Created attachment 215336
Patch - Only DFG inlining remaining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944588</commentid>
    <comment_count>5</comment_count>
      <attachid>215421</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-29 13:53:52 -0700</bug_when>
    <thetext>Created attachment 215421
Patch

Has updates suggested from original review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944589</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 13:55:56 -0700</bug_when>
    <thetext>Attachment 215421 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/VirtualRegister.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVirtualRegisterAllocationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/JSStack.h&apos;, u&apos;Source/JavaScriptCore/interpreter/JSStackInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.cpp&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntData.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter64.asm&apos;, u&apos;Source/JavaScriptCore/runtime/CommonSlowPaths.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/JavaScriptCore/llint/LLIntData.cpp:79:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 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>944592</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-29 13:59:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 215421 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/VirtualRegister.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVirtualRegisterAllocationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/JSStack.h&apos;, u&apos;Source/JavaScriptCore/interpreter/JSStackInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.cpp&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntData.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter64.asm&apos;, u&apos;Source/JavaScriptCore/runtime/CommonSlowPaths.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
&gt; Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
&gt; Source/JavaScriptCore/llint/LLIntData.cpp:79:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
&gt; Total errors found: 2 in 23 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I will remove the inadvertent changes to Tools/*.  (Thanks Xcode).

The style error in LLIntData.cpp follows existing pattern, but I can change the ASSERT().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944616</commentid>
    <comment_count>8</comment_count>
      <attachid>215421</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-29 14:39:58 -0700</bug_when>
    <thetext>Comment on attachment 215421
Patch

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

&gt; Source/JavaScriptCore/bytecode/VirtualRegister.h:77
&gt; +    static int localToOperand(int local) { return -1-local; }
&gt; +    static int operandToLocal(int operand) { return -1-operand; }

Spaces around &quot;-&quot;, please.

Looks like this abstraction worked out really well. It&apos;s nice that we could avoid making any changes to JSActivation, Arguments, and BytecodeGenerator in this patch.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:320
&gt; +    end = callFrame-&gt;registers() + JSStack::ThisArgument;
&gt; +    while (it &gt;= end) {

In C++, &quot;end&quot; means &quot;past the end&quot;, so we should keep &gt;, and change the value of end.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:936
&gt; +    if (((intptr_t)callFrame &amp; 0xfff) == 0xce8)

Please remove.

&gt; Source/JavaScriptCore/interpreter/JSStack.h:56
&gt; +            ThisArgument = 6,

Let&apos;s use avoid duplication with CallFrame:s_thisArgumentOffset and CallFrame::s_firstArgumentOffset, and let&apos;s make sure these constants live next to each other. If we want them in JSStack.h, I&apos;d call them:

FirstArgument = 7
ThisArgument = 6

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:149
&gt;      // Add one so we don&apos;t need to index with -1 to get current frame pointer.
&gt;      // An index of -1 is an error for some compilers.
&gt; -    Register m_globalCallFrame[JSStack::CallFrameHeaderSize + 1];
&gt; +    Register m_globalCallFrame[JSStack::CallFrameHeaderSize];

Please update this comment, or remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944665</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-29 16:11:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 215421 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215421&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/VirtualRegister.h:77
&gt; &gt; +    static int localToOperand(int local) { return -1-local; }
&gt; &gt; +    static int operandToLocal(int operand) { return -1-operand; }
&gt; 
&gt; Spaces around &quot;-&quot;, please.
&gt; 
&gt; Looks like this abstraction worked out really well. It&apos;s nice that we could avoid making any changes to JSActivation, Arguments, and BytecodeGenerator in this patch.
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:320
&gt; &gt; +    end = callFrame-&gt;registers() + JSStack::ThisArgument;
&gt; &gt; +    while (it &gt;= end) {
&gt; 
&gt; In C++, &quot;end&quot; means &quot;past the end&quot;, so we should keep &gt;, and change the value of end.
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:936
&gt; &gt; +    if (((intptr_t)callFrame &amp; 0xfff) == 0xce8)
&gt; 
&gt; Please remove.
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/JSStack.h:56
&gt; &gt; +            ThisArgument = 6,
&gt; 
&gt; Let&apos;s use avoid duplication with CallFrame:s_thisArgumentOffset and CallFrame::s_firstArgumentOffset, and let&apos;s make sure these constants live next to each other. If we want them in JSStack.h, I&apos;d call them:
&gt; 
&gt; FirstArgument = 7
&gt; ThisArgument = 6
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:149
&gt; &gt;      // Add one so we don&apos;t need to index with -1 to get current frame pointer.
&gt; &gt;      // An index of -1 is an error for some compilers.
&gt; &gt; -    Register m_globalCallFrame[JSStack::CallFrameHeaderSize + 1];
&gt; &gt; +    Register m_globalCallFrame[JSStack::CallFrameHeaderSize];
&gt; 
&gt; Please update this comment, or remove it.

I made the suggested changes.  I also made some fixes to Interpreter::dumpRegisters() to test the changes.  There had been some bit rot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944666</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-29 16:13:40 -0700</bug_when>
    <thetext>Committed r158237: &lt;http://trac.webkit.org/changeset/158237&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214898</attachid>
            <date>2013-10-22 16:09:13 -0700</date>
            <delta_ts>2013-10-24 10:40:04 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>first-reg-neg1-wip2.patch</filename>
            <type>text/plain</type>
            <size>14187</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDE1NzYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDYgKzM1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fbmVlZHNBY3RpdmF0aW9uOwogICAgIH0KIAorICAgIGludCBudW1DYWxsZWVSZWdpc3Rl
cnMoKSB7IHJldHVybiBtX251bUNhbGxlZVJlZ2lzdGVycyArIDE7IH0KKwogICAgIGJvb2wgaXND
YXB0dXJlZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgSW5saW5lQ2FsbEZyYW1lKiA9IDApIGNv
bnN0OwogICAgIAogICAgIGludCBmcmFtZVBvaW50ZXJPZmZzZXRUb0dldEFjdGl2YXRpb25SZWdp
c3RlcnMoaW50IG1hY2hpbmVDYXB0dXJlU3RhcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAkocmV2aXNpb24gMTU3NjM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBi
b29sIG9wZXJhbmRJc0xvY2FsKGludCBvcGVyYW5kKQogewotICAgIHJldHVybiBvcGVyYW5kIDw9
IDA7CisgICAgcmV0dXJuIG9wZXJhbmQgPCAwOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNB
cmd1bWVudChpbnQgb3BlcmFuZCkKIHsKLSAgICByZXR1cm4gb3BlcmFuZCA+IDA7CisgICAgcmV0
dXJuIG9wZXJhbmQgPj0gMDsKIH0KIAogCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IGludCBzX2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwog
ICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDA7CiAKLSAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1
cm4gLWxvY2FsOyB9Ci0gICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkg
eyByZXR1cm4gLW9wZXJhbmQ7IH0KKyAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBs
b2NhbCkgeyByZXR1cm4gLTEtbG9jYWw7IH0KKyAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2Fs
KGludCBvcGVyYW5kKSB7IHJldHVybiAtMS1vcGVyYW5kOyB9CiAgICAgc3RhdGljIGludCBvcGVy
YW5kVG9Bcmd1bWVudChpbnQgb3BlcmFuZCkgeyByZXR1cm4gb3BlcmFuZCAtIENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCk7IH0KICAgICBzdGF0aWMgaW50IGFyZ3VtZW50VG9PcGVyYW5k
KGludCBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTc2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4NCw3
ICsxMjg0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAg
IGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFu
ZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemU7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBl
bm91Z2ggbG9jYWxzLgotICAgIHVuc2lnbmVkIG5ld051bUxvY2FscyA9IFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQg
bmV3TnVtTG9jYWxzID0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xv
Y2FsKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2NrLT5udW1DYWxs
ZWVSZWdpc3RlcnMoKTsKICAgICBpZiAobmV3TnVtTG9jYWxzID4gbV9udW1Mb2NhbHMpIHsKICAg
ICAgICAgbV9udW1Mb2NhbHMgPSBuZXdOdW1Mb2NhbHM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1NzYzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkK
ICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAgICAvLyBQbGFudCBhIGNoZWNrIHRo
YXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQotICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoLW1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAq
IHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1fY29kZUJsb2NrLT5udW1DYWxsZWVS
ZWdpc3RlcnMoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6cmVnVDEpOwogICAgIEp1bXAgc3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92
ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVu
ZCgpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIC8vIFJldHVybiBoZXJlIGFmdGVyIHN0YWNrIGNo
ZWNrLgogICAgIExhYmVsIGZyb21TdGFja0NoZWNrID0gbGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAxNTc2MzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEMKICAgICAvLyAgICBpdCBzZWVtcyBzaWxseTogeW91J2QgYmUgZGl2ZXJ0aW5nIHRoZSBwcm9n
cmFtIHRvIGVycm9yIGhhbmRsaW5nIHdoZW4gaXQKICAgICAvLyAgICB3b3VsZCBoYXZlIG90aGVy
d2lzZSBqdXN0IGtlcHQgcnVubmluZyBhbGJlaXQgbGVzcyBxdWlja2x5LgogICAgIAotICAgIGlm
ICghdm0tPmludGVycHJldGVyLT5zdGFjaygpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNl
dCgpXSkpIHsKKyAgICBpZiAoIXZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5y
ZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm51bUNhbGxlZVJl
Z2lzdGVycygpKS5vZmZzZXQoKV0pKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NS
KCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBzdGFjayBn
cm93dGggZmFpbGVkLlxuIik7CiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZp
c2lvbiAxNTc2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBWYXJp
YWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXM7CiAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICBudW1W
YXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgVmlydHVhbFJlZ2lzdGVy
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpOworICAg
ICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm51bUNhbGxlZVJlZ2lzdGVycygpICsgVmlydHVh
bFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2Nh
bCgpOwogICAgIGVsc2UKICAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTU3NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZVNldDo6
aXRlcmF0b3IgaXRlciA9IG1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVzLT5iZWdpbigpOyAhIWl0
ZXI7ICsraXRlcikgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUgPSAqaXRlcjsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVD
b2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKLSAgICAgICAgICAg
IHVuc2lnbmVkIHJlcXVpcmVkQ2FsbGVlUmVnaXN0ZXJzID0gVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSArIGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnM7CisgICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJlZENhbGxlZVJlZ2lzdGVy
cyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2Fs
KCkgKyBjb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKHJl
cXVpcmVkQ2FsbGVlUmVnaXN0ZXJzID4gY2FsbGVlUmVnaXN0ZXJzKQogICAgICAgICAgICAgICAg
IGNhbGxlZVJlZ2lzdGVycyA9IHJlcXVpcmVkQ2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1NzYzOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgLy8gUGxh
bnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0
YWNrLgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2MjkxCiAgICAgICAgIGppdC5hZGRQdHIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLAorICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29k
ZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnMoKSkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwKICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdU
MSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdGFja0NoZWNrID0gaml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmUsCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMTU3NjM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIGZvciAoaW50IGxvY2FsID0g
dmFsdWVzLm51bWJlck9mTG9jYWxzKCk7IGxvY2FsLS07KQogICAgICAgICBzY3JhdGNoW2xvY2Fs
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZXMubG9jYWwobG9jYWwpKTsKICAgICAKLSAgICBpbnQg
c3RhY2tGcmFtZVNpemUgPSBlbnRyeUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7Cisg
ICAgaW50IHN0YWNrRnJhbWVTaXplID0gZW50cnlDb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lzdGVy
cygpOwogICAgIGlmICghdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0
ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhY2tGcmFtZVNpemUpLm9mZnNldCgpXSkp
IHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBPU1IgZmFpbGVkIGJjYXVzZSBzdGFjayBncm93dGggZmFpbGVkLlxuIik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAko
cmV2aXNpb24gMTU3NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBSZWdpc3Rlciog
Q2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSB0aGlzLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICByZXR1
cm4gcmVnaXN0ZXJzKCkgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgIHJl
dHVybiByZWdpc3RlcnMoKSAtIGNvZGVCbG9jay0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0pTU3RhY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJKHJldmlzaW9uIDE1NzYzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBDYWxsRnJhbWUqIEpTU3RhY2s6OnB1c2hGcmFt
ZShDYWwKIAogICAgIFJlZ2lzdGVyKiBuZXdFbmQgPSBuZXdDYWxsRnJhbWVTbG90OwogICAgIGlm
ICghIWNvZGVCbG9jaykKLSAgICAgICAgbmV3RW5kIC09IGNvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnM7CisgICAgICAgIG5ld0VuZCAtPSBjb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lzdGVy
cygpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2ZSB0aGUgbmVlZGVkIHN0YWNrIGNhcGFj
aXR5IHRvIHB1c2ggdGhlIG5ldyBmcmFtZToKICAgICBpZiAoIWdyb3cobmV3RW5kKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1NzYzOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDcgKzYzNSw3
IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgfQog
I2VuZGlmCiAKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtbV9jb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBy
ZWdUMSk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1fY29kZUJsb2NrLT5udW1DYWxs
ZWVSZWdpc3RlcnMoKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVn
VDEpOwogICAgICAgICBzdGFja0NoZWNrID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJl
c3MobV92bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDE1NzYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0YWNrQ2hlY2soRQogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+
aW50ZXJwcmV0ZXItPnN0YWNrKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoIXN0YWNrLmdyb3coJmV4
ZWMtPnJlZ2lzdGVycygpWy1jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKQorICAg
IGlmIChVTkxJS0VMWSghc3RhY2suZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbLWNvZGVCbG9jay0+
bnVtQ2FsbGVlUmVnaXN0ZXJzKCldKSkpCiAgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxs
ZXJGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
cmV2aXNpb24gMTU3NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDggKzQyNyw4IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRhdGFMb2dGKCJOdW0gdmFycyA9ICV1LlxuIiwg
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAgICAgZGF0YUxvZ0YoIkN1cnJlbnQgZW5k
IGlzIGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+c3RhY2soKS5lbmQoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlQoIWV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFp
bnNBZGRyZXNzKCZleGVjLT5yZWdpc3RlcnMoKVstZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzXSkpOwotICAgIGlmIChVTkxJS0VMWSghdm0uaW50ZXJwcmV0ZXItPnN0YWNr
KCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbLWV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZVJlZ2lzdGVyc10pKSkgeworICAgIEFTU0VSVCghZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+c3Rh
Y2soKS5jb250YWluc0FkZHJlc3MoJmV4ZWMtPnJlZ2lzdGVycygpWy1leGVjLT5jb2RlQmxvY2so
KS0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCldKSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pbnRlcnBy
ZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVstZXhlYy0+Y29kZUJsb2NrKCkt
Pm51bUNhbGxlZVJlZ2lzdGVycygpXSkpKSB7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJG
cmFtZSgpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBwYyA9IHJl
dHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkocmV2aXNpb24gMTU3NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw5ICszNTcsOSBA
QCBfbGxpbnRfb3BfZW50ZXI6CiAgICAgbW92ZSAwLCB0MQogICAgIG5lZ2kgdDIKIC5vcEVudGVy
TG9vcDoKLSAgICBhZGRpIDEsIHQyCiAgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBhZGRpIDEs
IHQyCiAgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAogLm9wRW50ZXJEb25lOgogICAgIGRpc3Bh
dGNoKDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTU3NjM5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTI1MSw4ICsyNTEsOCBAQCBfbGxpbnRfb3BfZW50ZXI6CiAgICAgbmVnaSB0MgogICAgIHN4
aTJxIHQyLCB0MgogLm9wRW50ZXJMb29wOgotICAgIGFkZHEgMSwgdDIKICAgICBzdG9yZXEgdDAs
IFtjZnIsIHQyLCA4XQorICAgIGFkZHEgMSwgdDIKICAgICBidHFueiB0MiwgLm9wRW50ZXJMb29w
CiAub3BFbnRlckRvbmU6CiAgICAgZGlzcGF0Y2goMSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE1
NzYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzcyLDYgKzM3Miw3IEBAIG1hY3JvIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKICAgICAgICAgCiAgICAgIyBDaGVjayBzdGFjayBoZWln
aHQuCiAgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisg
ICAgYWRkaSAxLCB0MCAjIEFjY291bnQgdGhhdCBsb2NhbDAgZ29lcyBhdCBzbG90IC0xCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QxXSwgdDIKICAgICBsb2FkcCBWTTo6aW50ZXJwcmV0ZXJb
dDJdLCB0MgogICAgIGxzaGlmdHAgMywgdDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTc2MzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNyArNTMsNyBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNT
dGF0CiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAKICAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNw
YWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQg
YnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpIC0g
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSkKKyAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpIC0gbmV3
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBuZXdDb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lz
dGVycygpKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAogICAgIEFTU0VSVChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0RhdGFMb2cuY3BwCShyZXZpc2lvbiAxNTc2MzkpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAot
I2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKKyNkZWZpbmUgREFUQV9MT0dfVE9fRklMRSAxCiAK
IC8vIFVuY29tbWVudCB0byBmb3JjZSBsb2dnaW5nIHRvIHRoZSBnaXZlbiBmaWxlIHJlZ2FyZGxl
c3Mgb2Ygd2hhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgc2F5cy4gTm90ZSB0aGF0CiAvLyB3
ZSB3aWxsIGFwcGVuZCAiLjxwaWQ+LnR4dCIgd2hlcmUgPHBpZD4gaXMgdGhlIFBJRC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215080</attachid>
            <date>2013-10-24 10:40:04 -0700</date>
            <delta_ts>2013-10-28 14:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>123182.patch</filename>
            <type>text/plain</type>
            <size>17716</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEzLTEwLTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENoYW5nZSBsb2NhbCB2YXJpYWJsZSByZWdpc3RlciBhbGxvY2F0aW9uIHRvIHN0YXJ0IGF0
IG9mZnNldCAtMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRqdXN0ZWQgdGhlIHZpcnR1YWwgcmVnaXN0ZXIgbWFwcGluZyBkb3duIGJ5IG9uZSBzbG90
LiAgQWRkZWQgbmV3IGhlbHBlciAKKyAgICAgICAgbnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5n
U2tpcHBlZFNsb3QwKCkgdG8gQ29kZUJsb2NrIHRvIGhhbmRsZSB0aGUgZXh0cmEKKyAgICAgICAg
c3BhY2UgbmVlZGVkIGZvciB0aGUgdW51c2VkIHZpcnR1YWwgcmVnaXN0ZXIgc2xvdCAwLiAgVGhp
cyBuZWVkcyB0byBiZSBjaGFuZ2VkCisgICAgICAgIHdoZW4gdGhlIGNhbGxmcmFtZSBpcyBhZGp1
c3QgdG8gc3RhcnQgYXQgb2Zmc2V0IDAuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdT
a2lwcGVkU2xvdDApOgorICAgICAgICAgIE5ldyBIZWxwZXIuCisKKyAgICAgICAgKiBieXRlY29k
ZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6b3BlcmFuZElzTG9jYWwpOgorICAg
ICAgICAoSlNDOjpvcGVyYW5kSXNBcmd1bWVudCk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdp
c3Rlcjo6bG9jYWxUb09wZXJhbmQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6Om9w
ZXJhbmRUb0xvY2FsKToKKyAgICAgICAgICBBZGp1c3RlZCBmdW5jdGlvbnMgZm9yIHNoaWZ0IGlu
IG1hcHBpbmcgZnJvbSBsb2NhbCB0byByZWdpc3RlciBvZmZzZXQuCisKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRy
eSk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBk
ZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZnRs
L0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9G
VExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJlcGFyZU9TUkVudHJ5KToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OmZyYW1lRXh0ZW50SW50ZXJuYWwpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2tJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnB1c2hGcmFtZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgICBDaGFuZ2VkIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMgdG8gLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVk
U2xvdDAoKQorICAgICAgICAgIHRvIGFjY291bnQgZm9yIGV4dHJhIHVudXNlZCBzbG90LgorCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxlZUZyYW1lT2Zmc2V0KToKKyAgICAgICAgICBGaXhlZCBvZmZzZXQg
Y2FsY3VsYXRpb24gdG8gdXNlIFZpcnR1YWxSZWdpc3RlciBhbmQgcmVsYXRlZCBjYWxjdWxhdGlv
biBpbnN0ZWFkIG9mIAorICAgICAgICAgIGRvaW5nIGl0IGhlcmUuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgICBUaGlzIGlzIHRoZSBhc3NlbWJs
eSBlcXVpdmFsZW50IG9mIG51bUNhbGxlZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRTbG90MCgp
IGFuZAorICAgICAgICAgIG5lZWRzIHRvIGJlIGFkZHJlc3Mgd2hlbiB0aGUgY2FsbGZyYW1lIG9m
ZnNldHMgYXJlIHJlYmlhc2VkLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAgIEFkanVzdGVkIFZpcnR1YWxSZWdpc3RlciBpbml0IHRvIFVuZGVmaW5lZCB0byBi
ZSBvbmUgc2xvdCBsb3dlci4KKwogMjAxMy0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGJyb2tlbiBDIExvb3AgTExJTlQgYnVpbGQuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNTc4
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0Nyw2ICszNDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX25l
ZWRzQWN0aXZhdGlvbjsKICAgICB9CiAKKyAgICBpbnQgbnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVk
aW5nU2tpcHBlZFNsb3QwKCkgeyByZXR1cm4gbV9udW1DYWxsZWVSZWdpc3RlcnMgKyAxOyB9CisK
ICAgICBib29sIGlzQ2FwdHVyZWQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxG
cmFtZSogPSAwKSBjb25zdDsKICAgICAKICAgICBpbnQgZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRB
Y3RpdmF0aW9uUmVnaXN0ZXJzKGludCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHJldmlz
aW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMb2NhbChpbnQgb3BlcmFuZCkKIHsKLSAgICByZXR1
cm4gb3BlcmFuZCA8PSAwOworICAgIHJldHVybiBvcGVyYW5kIDwgMDsKIH0KIAogaW5saW5lIGJv
b2wgb3BlcmFuZElzQXJndW1lbnQoaW50IG9wZXJhbmQpCiB7Ci0gICAgcmV0dXJuIG9wZXJhbmQg
PiAwOworICAgIHJldHVybiBvcGVyYW5kID49IDA7CiB9CiAKIApAQCAtNzMsOCArNzMsOCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0g
MHgzZmZmZmZmZjsKICAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPSAweDQwMDAwMDAwOwogCi0gICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChpbnQg
bG9jYWwpIHsgcmV0dXJuIC1sb2NhbDsgfQotICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwo
aW50IG9wZXJhbmQpIHsgcmV0dXJuIC1vcGVyYW5kOyB9CisgICAgc3RhdGljIGludCBsb2NhbFRv
T3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xLWxvY2FsOyB9CisgICAgc3RhdGljIGludCBv
cGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEtb3BlcmFuZDsgfQogICAgIHN0
YXRpYyBpbnQgb3BlcmFuZFRvQXJndW1lbnQoaW50IG9wZXJhbmQpIHsgcmV0dXJuIG9wZXJhbmQg
LSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpOyB9CiAgICAgc3RhdGljIGludCBhcmd1
bWVudFRvT3BlcmFuZChpbnQgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ICsgQ2FsbEZyYW1l
Ojp0aGlzQXJndW1lbnRPZmZzZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU3ODc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyODYsNyArMTI4Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9w
LT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkg
KyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IHdlIGhhdmUgZW5vdWdoIGxvY2Fscy4KLSAgICB1bnNpZ25lZCBuZXdOdW1Mb2NhbHMgPSBW
aXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lU3RhcnQpLnRvTG9jYWwoKSArIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwor
ICAgIHVuc2lnbmVkIG5ld051bUxvY2FscyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWVTdGFydCkudG9Mb2NhbCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVC
bG9jay0+bnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCk7CiAgICAgaWYg
KG5ld051bUxvY2FscyA+IG1fbnVtTG9jYWxzKSB7CiAgICAgICAgIG1fbnVtTG9jYWxzID0gbmV3
TnVtTG9jYWxzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7ICsraSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hl
Y2sodGhpcyk7CiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1t
X2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKC1tX2NvZGVCbG9jay0+bnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBl
ZFNsb3QwKCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1QxKTsKICAgICBKdW1wIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUs
IEFic29sdXRlQWRkcmVzcyhtX3ZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQo
KSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAvLyBSZXR1cm4gaGVyZSBhZnRlciBzdGFjayBjaGVj
ay4KICAgICBMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGxhYmVsKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMTU3ODc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBD
CiAgICAgLy8gICAgaXQgc2VlbXMgc2lsbHk6IHlvdSdkIGJlIGRpdmVydGluZyB0aGUgcHJvZ3Jh
bSB0byBlcnJvciBoYW5kbGluZyB3aGVuIGl0CiAgICAgLy8gICAgd291bGQgaGF2ZSBvdGhlcndp
c2UganVzdCBrZXB0IHJ1bm5pbmcgYWxiZWl0IGxlc3MgcXVpY2tseS4KICAgICAKLSAgICBpZiAo
IXZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQo
KV0pKSB7CisgICAgaWYgKCF2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVn
aXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5udW1DYWxsZWVSZWdp
c3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKSkub2Zmc2V0KCldKSkgewogICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBPU1IgZmFp
bGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm4gMDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzM4LDcgKzczOCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3MpCiAgICAgewot
ICAgICAgICByZXR1cm4gLShtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hpbmVMb2NhbCArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1BcmdzKSAqIHNpemVvZihSZWdpc3Rlcik7Cisg
ICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ppdC5ncmFwaCgpLm1fbmV4
dE1hY2hpbmVMb2NhbCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1BcmdzKS5v
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgfQogICAgIAogICAgIC8vIEFjY2VzcyB0
byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTU3
ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgVmFyaWFibGVFdmVu
dFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzOwog
ICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgbnVtVmFyaWFibGVz
ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKTsKKyAgICAgICAgbnVt
VmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xv
dDAoKSArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQpLnRvTG9jYWwoKTsKICAgICBlbHNlCiAgICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChJbmxpbmVD
YWxsRnJhbWVTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+
YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJlZENhbGxlZVJlZ2lzdGVycyA9IFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyBjb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRD
YWxsZWVSZWdpc3RlcnMgPSBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCkudG9Mb2NhbCgpICsgY29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdT
a2lwcGVkU2xvdDAoKTsKICAgICAgICAgICAgIGlmIChyZXF1aXJlZENhbGxlZVJlZ2lzdGVycyA+
IGNhbGxlZVJlZ2lzdGVycykKICAgICAgICAgICAgICAgICBjYWxsZWVSZWdpc3RlcnMgPSByZXF1
aXJlZENhbGxlZVJlZ2lzdGVyczsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNp
ZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQogICAgICAgICBq
aXQuYWRkUHRyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+bnVtQ2FsbGVlUmVnaXN0
ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCkpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
CiAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEp
OwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc3RhY2tDaGVjayA9IGppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3
ICs3Nyw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICBmb3IgKGludCBsb2NhbCA9IHZh
bHVlcy5udW1iZXJPZkxvY2FscygpOyBsb2NhbC0tOykKICAgICAgICAgc2NyYXRjaFtsb2NhbF0g
PSBKU1ZhbHVlOjplbmNvZGUodmFsdWVzLmxvY2FsKGxvY2FsKSk7CiAgICAgCi0gICAgaW50IHN0
YWNrRnJhbWVTaXplID0gZW50cnlDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAg
IGludCBzdGFja0ZyYW1lU2l6ZSA9IGVudHJ5Q29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJ
bmNsdWRpbmdTa2lwcGVkU2xvdDAoKTsKICAgICBpZiAoIXZtLmludGVycHJldGVyLT5zdGFjaygp
Lmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YWNrRnJh
bWVTaXplKS5vZmZzZXQoKV0pKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGZhaWxlZCBiY2F1c2Ugc3RhY2sgZ3Jvd3Ro
IGZhaWxlZC5cbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyAr
MTE5LDcgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJbnRlcm5hbAogewogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNv
ZGVCbG9jayk7Ci0gICAgcmV0dXJuIHJlZ2lzdGVycygpIC0gY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVyczsKKyAgICByZXR1cm4gcmVnaXN0ZXJzKCkgLSBjb2RlQmxvY2stPm51bUNhbGxl
ZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRTbG90MCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIs
NyBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsCiAKICAgICBSZWdp
c3RlciogbmV3RW5kID0gbmV3Q2FsbEZyYW1lU2xvdDsKICAgICBpZiAoISFjb2RlQmxvY2spCi0g
ICAgICAgIG5ld0VuZCAtPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgICAg
ICBuZXdFbmQgLT0gY29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVk
U2xvdDAoKTsKIAogICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhhdmUgdGhlIG5lZWRlZCBzdGFjayBj
YXBhY2l0eSB0byBwdXNoIHRoZSBuZXcgZnJhbWU6CiAgICAgaWYgKCFncm93KG5ld0VuZCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Niw3ICs1
ODYsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAg
IH0KICNlbmRpZgogCi0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLW1fY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgcmVnVDEpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tX2NvZGVCbG9jay0+bnVt
Q2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxKTsKICAgICAgICAgc3RhY2tDaGVjayA9IGJyYW5j
aFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJldGVyLT5zdGFjaygpLmFk
ZHJlc3NPZkVuZCgpKSwgcmVnVDEpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdGFja0NoZWNrKEUKIAog
ICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOwogCi0gICAgaWYg
KFVOTElLRUxZKCFzdGFjay5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVstY29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVyc10pKSkKKyAgICBpZiAoVU5MSUtFTFkoIXN0YWNrLmdyb3coJmV4ZWMt
PnJlZ2lzdGVycygpWy1jb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBw
ZWRTbG90MCgpXSkpKQogICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1
Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyNyw4ICs0MjcsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
dGFja19jaGVjaykKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVC
bG9jaygpLT5tX251bVZhcnMpOwogICAgIGRhdGFMb2dGKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5c
biIsIGV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPnN0YWNrKCkuZW5kKCkpOwogI2VuZGlmCi0gICAg
QVNTRVJUKCFleGVjLT52bSgpLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcygm
ZXhlYy0+cmVnaXN0ZXJzKClbLWV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVy
c10pKTsKLSAgICBpZiAoVU5MSUtFTFkoIXZtLmludGVycHJldGVyLT5zdGFjaygpLmdyb3coJmV4
ZWMtPnJlZ2lzdGVycygpWy1leGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNd
KSkpIHsKKyAgICBBU1NFUlQoIWV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFp
bnNBZGRyZXNzKCZleGVjLT5yZWdpc3RlcnMoKVstZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxl
ZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRTbG90MCgpXSkpOworICAgIGlmIChVTkxJS0VMWSgh
dm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbLWV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKV0pKSkg
ewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpKTsKICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0
aW9uKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE1Nzg3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTgsOSArMzU4LDkgQEAgX2xsaW50X29wX2VudGVyOgogICAgIG1v
dmUgMCwgdDEKICAgICBuZWdpIHQyCiAub3BFbnRlckxvb3A6Ci0gICAgYWRkaSAxLCB0MgogICAg
IHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYWRkaSAxLCB0MgogICAgIGJ0aW56IHQyLCAub3BFbnRl
ckxvb3AKIC5vcEVudGVyRG9uZToKICAgICBkaXNwYXRjaCgxKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJl
dmlzaW9uIDE1Nzg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDggQEAgX2xsaW50
X29wX2VudGVyOgogICAgIG5lZ2kgdDIKICAgICBzeGkycSB0MiwgdDIKIC5vcEVudGVyTG9vcDoK
LSAgICBhZGRxIDEsIHQyCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KKyAgICBhZGRxIDEs
IHQyCiAgICAgYnRxbnogdDIsIC5vcEVudGVyTG9vcAogLm9wRW50ZXJEb25lOgogICAgIGRpc3Bh
dGNoKDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNTc4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM3
Miw2ICszNzIsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAg
ICAgICAgIAogICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIENvZGVCbG9jazo6
bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGFkZGkgMSwgdDAgIyBBY2NvdW50IHRo
YXQgbG9jYWwwIGdvZXMgYXQgc2xvdCAtMQogICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0s
IHQyCiAgICAgbG9hZHAgVk06OmludGVycHJldGVyW3QyXSwgdDIKICAgICBsc2hpZnRwIDMsIHQw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAkocmV2aXNpb24gMTU3ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlT
X0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdAogICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAg
CiAgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2Nl
bmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFz
dGFjay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgaWYgKCFzdGFj
ay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IC0gbmV3Q29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAo
KSkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Cg==
</data>
<flag name="review"
          id="237725"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215336</attachid>
            <date>2013-10-28 14:39:23 -0700</date>
            <delta_ts>2013-10-29 13:53:52 -0700</delta_ts>
            <desc>Patch - Only DFG inlining remaining</desc>
            <filename>first-reg-neg1-wip11.patch</filename>
            <type>text/plain</type>
            <size>36986</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEzLTEwLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENoYW5nZSBsb2NhbCB2YXJpYWJsZSByZWdpc3RlciBhbGxvY2F0aW9uIHRvIHN0YXJ0IGF0
IG9mZnNldCAtMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRqdXN0ZWQgdGhlIHZpcnR1YWwgcmVnaXN0ZXIgbWFwcGluZyBkb3duIGJ5IG9uZSBzbG90
LiAgQWRkZWQgbmV3IGhlbHBlciAKKyAgICAgICAgbnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5n
U2tpcHBlZFNsb3QwKCkgdG8gQ29kZUJsb2NrIHRvIGhhbmRsZSB0aGUgZXh0cmEKKyAgICAgICAg
c3BhY2UgbmVlZGVkIGZvciB0aGUgdW51c2VkIHZpcnR1YWwgcmVnaXN0ZXIgc2xvdCAwLiAgVGhp
cyBuZWVkcyB0byBiZSBjaGFuZ2VkCisgICAgICAgIHdoZW4gdGhlIGNhbGxmcmFtZSBpcyBhZGp1
c3QgdG8gc3RhcnQgYXQgb2Zmc2V0IDAuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdT
a2lwcGVkU2xvdDApOgorICAgICAgICAgIE5ldyBIZWxwZXIuCisKKyAgICAgICAgKiBieXRlY29k
ZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6b3BlcmFuZElzTG9jYWwpOgorICAg
ICAgICAoSlNDOjpvcGVyYW5kSXNBcmd1bWVudCk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdp
c3Rlcjo6bG9jYWxUb09wZXJhbmQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6Om9w
ZXJhbmRUb0xvY2FsKToKKyAgICAgICAgICBBZGp1c3RlZCBmdW5jdGlvbnMgZm9yIHNoaWZ0IGlu
IG1hcHBpbmcgZnJvbSBsb2NhbCB0byByZWdpc3RlciBvZmZzZXQuCisKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRy
eSk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBk
ZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZnRs
L0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9G
VExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJlcGFyZU9TUkVudHJ5KToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OmZyYW1lRXh0ZW50SW50ZXJuYWwpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2tJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnB1c2hGcmFtZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgICBDaGFuZ2VkIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMgdG8gLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVk
U2xvdDAoKQorICAgICAgICAgIHRvIGFjY291bnQgZm9yIGV4dHJhIHVudXNlZCBzbG90LgorCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxlZUZyYW1lT2Zmc2V0KToKKyAgICAgICAgICBGaXhlZCBvZmZzZXQg
Y2FsY3VsYXRpb24gdG8gdXNlIFZpcnR1YWxSZWdpc3RlciBhbmQgcmVsYXRlZCBjYWxjdWxhdGlv
biBpbnN0ZWFkIG9mIAorICAgICAgICAgIGRvaW5nIGl0IGhlcmUuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgICBUaGlzIGlzIHRoZSBhc3NlbWJs
eSBlcXVpdmFsZW50IG9mIG51bUNhbGxlZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRTbG90MCgp
IGFuZAorICAgICAgICAgIG5lZWRzIHRvIGJlIGFkZHJlc3Mgd2hlbiB0aGUgY2FsbGZyYW1lIG9m
ZnNldHMgYXJlIHJlYmlhc2VkLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAgIEFkanVzdGVkIFZpcnR1YWxSZWdpc3RlciBpbml0IHRvIFVuZGVmaW5lZCB0byBi
ZSBvbmUgc2xvdCBsb3dlci4KKwogMjAxMy0xMC0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQmV0dGVyIHdheSB0byBmaXggcGFydCBvZiBicm9rZW4gQyBMb29w
IExMSU5UIGJ1aWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYxLDcgKzI0NjEsNiBAQAog
CQlDMkYwRjJEMDE2QkFFRUU5MDAxODdDMTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlUmFyZURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkZDOUJEMjE2NjQ0REZCMDA4MTBEMzMgLyog
Q29waWVkQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cGllZEJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkZFMThB
MzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlUmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkVFN0Q1QTAwRDk5QUMwNDAwNTM1MUY2IC8qIGlPUy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBpT1MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBF
RDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERjdB
QkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTE0LDYgKzI1MTMsNyBAQAogCQlGRUQ5NEYyQjE3MUUzRTIzMDBC
RTc3QTQgLyogV2F0Y2hkb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2F0Y2hkb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQ5NEYyQzE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEOTRGMkQx
NzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhdGNoZG9nTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkVFN0Q1QTAwRDk5QUMwNDAwNTM1MUY2IC8qIGlPUy54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBpT1MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRjY4MzVBMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHVic0FSTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUY2ODM1QjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk12
Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHVic0FSTXY3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjY4MzVDMTc0MzQzQ0MwMEEzMkUyNSAvKiBK
SVRTdHVic1g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHVi
c1g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU3OTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDcsNiArMzQ3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9uZWVkc0FjdGl2YXRp
b247CiAgICAgfQogCisgICAgaW50IG51bUNhbGxlZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRT
bG90MCgpIHsgcmV0dXJuIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgMTsgfQorCiAgICAgYm9vbCBp
c0NhcHR1cmVkKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBJbmxpbmVDYWxsRnJhbWUqID0gMCkg
Y29uc3Q7CiAgICAgCiAgICAgaW50IGZyYW1lUG9pbnRlck9mZnNldFRvR2V0QWN0aXZhdGlvblJl
Z2lzdGVycyhpbnQgbWFjaGluZUNhcHR1cmVTdGFydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAxNTc5Mzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogaW5saW5l
IGJvb2wgb3BlcmFuZElzTG9jYWwoaW50IG9wZXJhbmQpCiB7Ci0gICAgcmV0dXJuIG9wZXJhbmQg
PD0gMDsKKyAgICByZXR1cm4gb3BlcmFuZCA8IDA7CiB9CiAKIGlubGluZSBib29sIG9wZXJhbmRJ
c0FyZ3VtZW50KGludCBvcGVyYW5kKQogewotICAgIHJldHVybiBvcGVyYW5kID4gMDsKKyAgICBy
ZXR1cm4gb3BlcmFuZCA+PSAwOwogfQogCiAKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKIAotICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJl
dHVybiAtbG9jYWw7IH0KLSAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5k
KSB7IHJldHVybiAtb3BlcmFuZDsgfQorICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50
IGxvY2FsKSB7IHJldHVybiAtMS1sb2NhbDsgfQorICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9j
YWwoaW50IG9wZXJhbmQpIHsgcmV0dXJuIC0xLW9wZXJhbmQ7IH0KICAgICBzdGF0aWMgaW50IG9w
ZXJhbmRUb0FyZ3VtZW50KGludCBvcGVyYW5kKSB7IHJldHVybiBvcGVyYW5kIC0gQ2FsbEZyYW1l
Ojp0aGlzQXJndW1lbnRPZmZzZXQoKTsgfQogICAgIHN0YXRpYyBpbnQgYXJndW1lbnRUb09wZXJh
bmQoaW50IGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudCArIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODks
MTEgKzM4OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlm
IChvcGVyYW5kLm9mZnNldCgpIDw9IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpKQorICAgICAgICAgICAg
aWYgKG9wZXJhbmQub2Zmc2V0KCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID09IGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zm
c2V0KCkgPiBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpKSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID4gc3RhdGljX2Nhc3Q8
aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1l
bnRPZmZzZXQoKSArIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBWaXJ0dWFsUmVn
aXN0ZXIob3BlcmFuZC5vZmZzZXQoKSAtIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRv
QXJndW1lbnQoKTsKICAgICAgICAgICAgIHJldHVybiBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9u
c1thcmd1bWVudF07CkBAIC03NjcsOCArNzY3LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpKTsKICAgICAgICAgaW50IGFyZ0NvdW50ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgaWYgKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgKyAodW5zaWduZWQpYXJnQ291bnQgPiBtX3BhcmFtZXRlclNsb3RzKQotICAgICAgICAgICAg
bV9wYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBhcmdDb3Vu
dDsKKyAgICAgICAgaWYgKEpTU3RhY2s6OlRoaXNBcmd1bWVudCArICh1bnNpZ25lZClhcmdDb3Vu
dCA+IG1fcGFyYW1ldGVyU2xvdHMpCisgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gSlNT
dGFjazo6VGhpc0FyZ3VtZW50ICsgYXJnQ291bnQ7CiAKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gLWN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBkdW1t
eVRoaXNBcmd1bWVudCA9IG9wID09IENhbGwgPyAwIDogMTsKQEAgLTEyODMsMTAgKzEyODMsMTIg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIAogICAgIC8v
IEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCisvLyAmJiYmIENoZWNrIHRoaXMg
YXJpdGhtZXRpYwogICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQo
KSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgd2UgaGF2ZSBlbm91Z2ggbG9jYWxzLgotICAgIHVuc2lnbmVkIG5ld051bUxvY2FscyA9
IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7
CisgICAgdW5zaWduZWQgbmV3TnVtTG9jYWxzID0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZVN0YXJ0KS50b0xvY2FsKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29k
ZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKTsKKy8vICYm
JiYgVG8gaGVyZQogICAgIGlmIChuZXdOdW1Mb2NhbHMgPiBtX251bUxvY2FscykgewogICAgICAg
ICBtX251bUxvY2FscyA9IG5ld051bUxvY2FsczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2kpCkBAIC0yOTY2LDggKzI5NjgsOCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHVuc2lnbmVkIGFyZ0NvdW50ID0gaW5saW5lQ2FsbEZyYW1lKCktPmFyZ3VtZW50cy5zaXplKCk7
Ci0gICAgICAgICAgICBpZiAoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50
ID4gbV9wYXJhbWV0ZXJTbG90cykKLSAgICAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0g
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50OworICAgICAgICAgICAgaWYg
KEpTU3RhY2s6OlRoaXNBcmd1bWVudCArIGFyZ0NvdW50ID4gbV9wYXJhbWV0ZXJTbG90cykKKyAg
ICAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gSlNTdGFjazo6VGhpc0FyZ3VtZW50ICsg
YXJnQ291bnQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsgLy8gY2Fs
bGVlCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7IC8vIHRoaXMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc5MzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bigpCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2sodGhpcyk7CiAgICAgLy8gUGxhbnQgYSBjaGVj
ayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgogICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEK
LSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tX2NvZGVCbG9jay0+bnVtQ2Fs
bGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKICAgICBKdW1wIHN0
YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5pbnRlcnBy
ZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAvLyBS
ZXR1cm4gaGVyZSBhZnRlciBzdGFjayBjaGVjay4KICAgICBMYWJlbCBmcm9tU3RhY2tDaGVjayA9
IGxhYmVsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgLy8gICAgaXQgc2VlbXMgc2lsbHk6IHlv
dSdkIGJlIGRpdmVydGluZyB0aGUgcHJvZ3JhbSB0byBlcnJvciBoYW5kbGluZyB3aGVuIGl0CiAg
ICAgLy8gICAgd291bGQgaGF2ZSBvdGhlcndpc2UganVzdCBrZXB0IHJ1bm5pbmcgYWxiZWl0IGxl
c3MgcXVpY2tseS4KICAgICAKLSAgICBpZiAoIXZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93
KCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKV0pKSB7CisgICAgaWYgKCF2bS0+aW50ZXJwcmV0
ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoY29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKSku
b2Zmc2V0KCldKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxl
ZC5cbiIpOwogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzM4LDcgKzczOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVP
ZmZzZXQoaW50IG51bUFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4gLShtX2ppdC5ncmFwaCgp
Lm1fbmV4dE1hY2hpbmVMb2NhbCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1B
cmdzKSAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hpbmVMb2NhbCArIEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgKyBudW1BcmdzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CiAg
ICAgfQogICAgIAogICAgIC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2
ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzOwogICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKLSAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVD
YWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQpLnRvTG9jYWwoKTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5udW1DYWxsZWVS
ZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKSArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKTsKICAgICBlbHNlCiAg
ICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVyczsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1
YmxpYzoKICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWVTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBt
X2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5l
Q2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJl
ZENhbGxlZVJlZ2lzdGVycyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0KS50b0xvY2FsKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAg
ICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRDYWxsZWVSZWdpc3RlcnMgPSBWaXJ0dWFsUmVnaXN0
ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpICsgY29kZUJsb2NrLT5u
dW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKTsKICAgICAgICAgICAgIGlm
IChyZXF1aXJlZENhbGxlZVJlZ2lzdGVycyA+IGNhbGxlZVJlZ2lzdGVycykKICAgICAgICAgICAg
ICAgICBjYWxsZWVSZWdpc3RlcnMgPSByZXF1aXJlZENhbGxlZVJlZ2lzdGVyczsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTc5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8v
IFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUg
SlNTdGFjay4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NjI5MQogICAgICAgICBqaXQuYWRkUHRyKAotICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycykub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGNvZGVCbG9jay0+bnVtQ2FsbGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCkpLm9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksCiAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
c3RhY2tDaGVjayA9IGppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFi
b3ZlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHJl
dmlzaW9uIDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRy
eSgKICAgICBmb3IgKGludCBsb2NhbCA9IHZhbHVlcy5udW1iZXJPZkxvY2FscygpOyBsb2NhbC0t
OykKICAgICAgICAgc2NyYXRjaFtsb2NhbF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWVzLmxvY2Fs
KGxvY2FsKSk7CiAgICAgCi0gICAgaW50IHN0YWNrRnJhbWVTaXplID0gZW50cnlDb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgIGludCBzdGFja0ZyYW1lU2l6ZSA9IGVudHJ5Q29k
ZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKTsKICAgICBp
ZiAoIXZtLmludGVycHJldGVyLT5zdGFjaygpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKHN0YWNrRnJhbWVTaXplKS5vZmZzZXQoKV0pKSB7CiAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NS
IGZhaWxlZCBiY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE1
NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6
ZnJhbWVFeHRlbnRJbnRlcm5hbAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+
Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHJlZ2lzdGVy
cygpIC0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICByZXR1cm4gcmVnaXN0
ZXJzKCkgLSBjb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lzdGVyc0luY2x1ZGluZ1NraXBwZWRTbG90
MCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc5LDcgKzE3OSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgUmVnaXN0ZXIqIGZy
YW1lRXh0ZW50KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2soKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlZ2lzdGVycygpIC0gMTsKICAgICAgICAgICAgIHJldHVybiBmcmFtZUV4dGVudEludGVybmFs
KCk7CiAgICAgICAgIH0KICAgICAKQEAgLTI1OCw3ICsyNTgsNyBAQCBuYW1lc3BhY2UgSlNDICB7
CiAKICAgICAgICAgSlNWYWx1ZSBhcmd1bWVudEFmdGVyQ2FwdHVyZShzaXplX3QgYXJndW1lbnQp
OwogCi0gICAgICAgIHN0YXRpYyBpbnQgb2Zmc2V0Rm9yKHNpemVfdCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBpbnQgb2Zmc2V0Rm9yKHNp
emVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeyByZXR1cm4gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpUaGlzQXJndW1lbnQgLSAxOyB9CiAKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGVzZS4KICAgICAgICAgaW50IGhvc3RUaGlzUmVnaXN0ZXIoKSB7IHJl
dHVybiB0aGlzQXJndW1lbnRPZmZzZXQoKTsgfQpAQCAtMjg4LDcgKzI4OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBI
b3N0Q2FsbEZyYW1lRmxhZyA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc190aGlzQXJn
dW1lbnRPZmZzZXQgPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGludCBzX3RoaXNBcmd1bWVudE9mZnNldCA9IEpTU3RhY2s6OlRoaXNBcmd1
bWVudDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0QXJndW1lbnRPZmZzZXQgPSBz
X3RoaXNBcmd1bWVudE9mZnNldCArIDE7CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBDYWxsRnJhbWUqIGxv
YWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiB7CiAgICAgaWYgKCFhcmd1bWVudHMpIHsgLy8g
Zi5hcHBseSh4LCBhcmd1bWVudHMpLCB3aXRoIGFyZ3VtZW50cyB1bm1vZGlmaWVkLgogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVn
aXN0ZXIgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAtIEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemUpOworICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6
Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdpc3RlciAtIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDEp
OwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBBcmd1bWVudHM6Ok1h
eEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkp
KSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTE2OCw3ICsxNjgsNyBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENhbGxGcmFt
ZSogY2FsbEZyCiAgICAgfQogCiAgICAgaWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7Ci0gICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVyIC0gMSAtIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9
IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdp
c3RlciAtIDEgLSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gMSk7CiAgICAgICAgIGlm
ICghc3RhY2stPmdyb3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAgICAgICAgICAg
IGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzE1LDkg
KzMxNSw5IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KICAgICBj
b25zdCBSZWdpc3RlciogaXQ7CiAgICAgY29uc3QgUmVnaXN0ZXIqIGVuZDsKIAotICAgIGl0ID0g
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgZW5kID0gY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7Ci0gICAgd2hp
bGUgKGl0ID4gZW5kKSB7CisgICAgaXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgSlNTdGFj
azo6VGhpc0FyZ3VtZW50ICsgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgZW5kID0g
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRoaXNBcmd1bWVudDsKKyAgICB3aGls
ZSAoaXQgPj0gZW5kKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGl0LT5qc1ZhbHVlKCk7CiAgICAg
ICAgIGludCByZWdpc3Rlck51bWJlciA9IGl0IC0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIocmVnaXN0ZXJOdW1iZXIpKTsKQEAgLTkzMyw2ICs5MzMsOCBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9n
LmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAorICAgIGlmICgoKGludHB0cl90KWNhbGxGcmFt
ZSAmIDB4ZmZmKSA9PSAweGNlOCkKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CiAgICAgQ2Fs
bEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5ld0Nv
ZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOwogICAgIGlmIChVTkxJS0VMWSgh
bmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1
MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ2FsbEZy
YW1lSGVhZGVyRW50cnkgewogICAgICAgICAgICAgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDYsCi0K
LSAgICAgICAgICAgIEFyZ3VtZW50Q291bnQgPSA2LAotICAgICAgICAgICAgQ2FsbGVyRnJhbWUg
PSA1LAotICAgICAgICAgICAgQ2FsbGVlID0gNCwKLSAgICAgICAgICAgIFNjb3BlQ2hhaW4gPSAz
LAotICAgICAgICAgICAgUmV0dXJuUEMgPSAyLCAvLyBUaGlzIGlzIGVpdGhlciBhbiBJbnN0cnVj
dGlvbiogb3IgYSBwb2ludGVyIGludG8gSklUIGdlbmVyYXRlZCBjb2RlIHN0b3JlZCBhcyBhbiBJ
bnN0cnVjdGlvbiouCi0gICAgICAgICAgICBDb2RlQmxvY2sgPSAxLAorICAgICAgICAgICAgVGhp
c0FyZ3VtZW50ID0gNiwKKyAgICAgICAgICAgIEFyZ3VtZW50Q291bnQgPSA1LAorICAgICAgICAg
ICAgQ2FsbGVyRnJhbWUgPSA0LAorICAgICAgICAgICAgQ2FsbGVlID0gMywKKyAgICAgICAgICAg
IFNjb3BlQ2hhaW4gPSAyLAorICAgICAgICAgICAgUmV0dXJuUEMgPSAxLCAvLyBUaGlzIGlzIGVp
dGhlciBhbiBJbnN0cnVjdGlvbiogb3IgYSBwb2ludGVyIGludG8gSklUIGdlbmVyYXRlZCBjb2Rl
IHN0b3JlZCBhcyBhbiBJbnN0cnVjdGlvbiouCisgICAgICAgICAgICBDb2RlQmxvY2sgPSAwLAog
ICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgZGVmYXVsdENhcGFjaXR5
ID0gNTEyICogMTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9K
U1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTc5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2Fs
CiAKICAgICBSZWdpc3RlciogbmV3RW5kID0gbmV3Q2FsbEZyYW1lU2xvdDsKICAgICBpZiAoISFj
b2RlQmxvY2spCi0gICAgICAgIG5ld0VuZCAtPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzOworICAgICAgICBuZXdFbmQgLT0gY29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNs
dWRpbmdTa2lwcGVkU2xvdDAoKTsgLy8gJiYgVGhpbmsgdGhpcyBjYW4gY2hhbmdlIGJhY2suCiAK
ICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBoYXZlIHRoZSBuZWVkZWQgc3RhY2sgY2FwYWNpdHkgdG8g
cHVzaCB0aGUgbmV3IGZyYW1lOgogICAgIGlmICghZ3JvdyhuZXdFbmQpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODYsNyArNTg2LDcgQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgICAgICB9CiAjZW5kaWYK
IAotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1tX2NvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxKTsK
KyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtbV9jb2RlQmxvY2stPm51bUNhbGxlZVJlZ2lz
dGVyc0luY2x1ZGluZ1NraXBwZWRTbG90MCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFt
ZVJlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUs
IEFic29sdXRlQWRkcmVzcyhtX3ZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQo
KSksIHJlZ1QxKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVjayhFCiAKICAgICBKU1N0YWNr
JiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKIAotICAgIGlmIChVTkxJS0VMWSgh
c3RhY2suZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbLWNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnNdKSkpCisgICAgaWYgKFVOTElLRUxZKCFzdGFjay5ncm93KCZleGVjLT5yZWdpc3RlcnMo
KVstY29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAoKV0p
KSkKICAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpKTsKIH0KIApAQCAtMTcxNyw3ICsxNzE3LDcgQEAgYXNt
ICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
IEhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IDQwKCVyMTMpLCAlcjEz
XG4iCisgICAgIm1vdiAzMiglcjEzKSwgJXIxM1xuIgogICAgICJtb3YgJXIxMywgJXJkaVxuIgog
ICAgICJqbXAgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUpICJcbiIKICk7CkBAIC0xNzI4LDcgKzE3MjgsNyBAQCBhc20gKAogIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92IDMy
KCVlZGkpLCAlZWRpXG4iCiAgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCiAgICAgImptcCAiIExP
Q0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgog
KTsKQEAgLTE3NDIsNyArMTc0Miw3IEBAIEhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKICIudGh1bWIiICJcbiIKICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIzQwXSIgIlxuIgorICAgICJs
ZHIgcjUsIFtyNSwgIzMyXSIgIlxuIgogICAgICJtb3YgcjAsIHI1IiAiXG4iCiAgICAgImIgIiBM
T0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
ICk7CkBAIC0xNzU0LDcgKzE3NTQsNyBAQCBhc20gKAogSElERV9TWU1CT0woZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgogSU5MSU5FX0FSTV9GVU5DVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKQogU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAg
ICJsZHIgcjUsIFtyNSwgIzQwXSIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIzMyXSIgIlxuIgog
ICAgICJtb3YgcjAsIHI1IiAiXG4iCiAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CkBAIC0xNzY2LDcgKzE3NjYsNyBA
QCBhc20gKAogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgogSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHVyIHgyNSwgW3gy
NSwgIy00MF0iICJcbiIKKyAgICAibGR1ciB4MjUsIFt4MjUsICMtMzJdIiAiXG4iCiAgICAgICJt
b3YgeDAsIHgyNSIgIlxuIgogICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgogKTsKQEAgLTE3NzgsNyArMTc3OCw3IEBAIGFz
bSAoCiBISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCiAgICAgTE9BRF9GVU5DVElPTl9U
T19UOShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkKLSAgICAibHcgJHMwLCA0
MCgkczApIiAiXG4iCisgICAgImx3ICRzMCwgMzIoJHMwKSIgIlxuIgogICAgICJtb3ZlICRhMCwg
JHMwIiAiXG4iCiAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CkBAIC0xNzg5LDcgKzE3ODksNyBAQCBhc20gKAogIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogSElERV9T
WU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJhZGQgIzQwLCByMTQiICJcbiIKKyAgICAi
YWRkICMzMiwgcjE0IiAiXG4iCiAgICAgIm1vdi5sIEByMTQsIHIxNCIgIlxuIgogICAgICJtb3Yg
cjE0LCByNCIgIlxuIgogICAgICJtb3YubCAyZiwgIiBTSDRfU0NSQVRDSF9SRUdJU1RFUiAiXG4i
CkBAIC0xODA0LDcgKzE4MDQsNyBAQCBleHRlcm4gIkMiIHsKICAgICBfX2RlY2xzcGVjKG5ha2Vk
KSBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKCkKICAgICB7CiAgICAgICAgIF9fYXNtIHsKLSAgICAgICAgICAgIG1vdiBl
ZGksIFtlZGkgKyA0MF07CisgICAgICAgICAgICBtb3YgZWRpLCBbZWRpICsgMzJdOwogICAgICAg
ICAgICAgbW92IFtlc3AgKyA0XSwgZWRpOwogICAgICAgICAgICAgam1wIGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlCiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDk5LDcgKzQ5OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwKFZN
KiB2bSkKICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRpZgogICAg
IGppdC5uZWc2NChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwotICAgIGppdC5hZGRQdHIoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lz
dGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklU
OjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQubG9h
ZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIp
OwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogCkBAIC01MzEsNyAr
NTMxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qIHZtKQogICAgIGpp
dC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0KTsKICMgIGVuZGlmCiAgICAgaml0Lm5lZzMyKEpT
SW50ZXJmYWNlSklUOjpyZWdUMCk7Ci0gICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJm
YWNlSklUOjpyZWdUMyk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwogICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50ICogOCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAgICAgaml0LmFk
ZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNTc5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTMg
KzcxLDEzIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIC8vIEFz
c2VydGlvbnMgdG8gbWF0Y2ggTG93TGV2ZWxJbnRlcnByZXRlci5hc20uICBJZiB5b3UgY2hhbmdl
IGFueSBvZiB0aGlzIGNvZGUsIGJlCiAgICAgLy8gcHJlcGFyZWQgdG8gY2hhbmdlIExvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGFzIHdlbGwhIQogICAgIEFTU0VSVChKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplICogOCA9PSA0OCk7Ci0gICAgQVNTRVJUKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
KiA4ID09IDQ4KTsKLSAgICBBU1NFUlQoSlNTdGFjazo6Q2FsbGVyRnJhbWUgKiA4ID09IDQwKTsK
LSAgICBBU1NFUlQoSlNTdGFjazo6Q2FsbGVlICogOCA9PSAzMik7Ci0gICAgQVNTRVJUKEpTU3Rh
Y2s6OlNjb3BlQ2hhaW4gKiA4ID09IDI0KTsKLSAgICBBU1NFUlQoSlNTdGFjazo6UmV0dXJuUEMg
KiA4ID09IDE2KTsKLSAgICBBU1NFUlQoSlNTdGFjazo6Q29kZUJsb2NrICogOCA9PSA4KTsKLSAg
ICBBU1NFUlQoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgPT0gSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDEpOworICAgIEFTU0VSVChKU1N0YWNrOjpBcmd1
bWVudENvdW50ICogOCA9PSA0MCk7CisgICAgQVNTRVJUKEpTU3RhY2s6OkNhbGxlckZyYW1lICog
OCA9PSAzMik7CisgICAgQVNTRVJUKEpTU3RhY2s6OkNhbGxlZSAqIDggPT0gMjQpOworICAgIEFT
U0VSVChKU1N0YWNrOjpTY29wZUNoYWluICogOCA9PSAxNik7CisgICAgQVNTRVJUKEpTU3RhY2s6
OlJldHVyblBDICogOCA9PSA4KTsKKyAgICBBU1NFUlQoSlNTdGFjazo6Q29kZUJsb2NrICogOCA9
PSAwKTsKKyAgICBBU1NFUlQoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMo
MCkgPT0gSlNTdGFjazo6VGhpc0FyZ3VtZW50KTsKICNpZiBDUFUoQklHX0VORElBTikKICAgICBB
U1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
ID09IDApOwogICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpID09IDQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNTc5MzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MjcsOCArNDI3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAgICAg
ZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJz
KTsKICAgICBkYXRhTG9nRigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLmlu
dGVycHJldGVyLT5zdGFjaygpLmVuZCgpKTsKICNlbmRpZgotICAgIEFTU0VSVCghZXhlYy0+dm0o
KS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJlc3MoJmV4ZWMtPnJlZ2lzdGVycygp
Wy1leGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCF2bS5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVst
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgQVNTRVJU
KCFleGVjLT52bSgpLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcygmZXhlYy0+
cmVnaXN0ZXJzKClbLWV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRp
bmdTa2lwcGVkU2xvdDAoKV0pKTsKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmludGVycHJldGVyLT5z
dGFjaygpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpWy1leGVjLT5jb2RlQmxvY2soKS0+bnVtQ2Fs
bGVlUmVnaXN0ZXJzSW5jbHVkaW5nU2tpcHBlZFNsb3QwKCldKSkpIHsKICAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAg
ICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTc5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MzE2LDcgKzMxNiw2IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cK
ICAgICAvLyBNb3ZlIGZyYW1lIHVwICJ0MSIgc2xvdHMKICAgICBuZWdpIHQxCiAgICAgbW92ZSBj
ZnIsIHQzCi0gICAgYWRkcCA4LCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVu
dENvdW50W2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTbG90cywgdDIKIC5jb3B5
TG9vcDoKQEAgLTM1OCw5ICszNTcsOSBAQCBfbGxpbnRfb3BfZW50ZXI6CiAgICAgbW92ZSAwLCB0
MQogICAgIG5lZ2kgdDIKIC5vcEVudGVyTG9vcDoKLSAgICBhZGRpIDEsIHQyCiAgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBhZGRpIDEsIHQyCiAgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAog
Lm9wRW50ZXJEb25lOgogICAgIGRpc3BhdGNoKDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsNiBAQCBtYWNybyBmdW5jdGlv
bkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgLy8gTW92ZSBmcmFtZSB1cCAidDEiIHNs
b3RzCiAgICAgbmVncSB0MQogICAgIG1vdmUgY2ZyLCB0MwotICAgIGFkZHAgOCwgdDMKICAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgogICAgIGFkZGkgQ2Fs
bEZyYW1lSGVhZGVyU2xvdHMsIHQyCiAuY29weUxvb3A6CkBAIC0yNTIsOCArMjUxLDggQEAgX2xs
aW50X29wX2VudGVyOgogICAgIG5lZ2kgdDIKICAgICBzeGkycSB0MiwgdDIKIC5vcEVudGVyTG9v
cDoKLSAgICBhZGRxIDEsIHQyCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KKyAgICBhZGRx
IDEsIHQyCiAgICAgYnRxbnogdDIsIC5vcEVudGVyTG9vcAogLm9wRW50ZXJEb25lOgogICAgIGRp
c3BhdGNoKDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNTc5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE0ICszMywxNCBAQCBlbmQKICMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50
ZXJwcmV0ZXIvSlNTdGFjay5oLgogY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4CiBjb25z
dCBDYWxsRnJhbWVIZWFkZXJTbG90cyA9IDYKLWNvbnN0IEFyZ3VtZW50Q291bnQgPSA0OAotY29u
c3QgQ2FsbGVyRnJhbWUgPSA0MAotY29uc3QgQ2FsbGVlID0gMzIKLWNvbnN0IFNjb3BlQ2hhaW4g
PSAyNAotY29uc3QgUmV0dXJuUEMgPSAxNgotY29uc3QgQ29kZUJsb2NrID0gOAorY29uc3QgQXJn
dW1lbnRDb3VudCA9IDQwCitjb25zdCBDYWxsZXJGcmFtZSA9IDMyCitjb25zdCBDYWxsZWUgPSAy
NAorY29uc3QgU2NvcGVDaGFpbiA9IDE2Citjb25zdCBSZXR1cm5QQyA9IDgKK2NvbnN0IENvZGVC
bG9jayA9IDAKIAotY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gQ2FsbEZyYW1lSGVhZGVyU2l6
ZSArIDgKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291bnQgKyA4CiAKICMg
U29tZSB2YWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCiBpZiBKU1ZBTFVFNjQKQEAgLTM3
Miw2ICszNzIsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAg
ICAgICAgIAogICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIENvZGVCbG9jazo6
bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGFkZGkgMSwgdDAgIyBBY2NvdW50IHRo
YXQgbG9jYWwwIGdvZXMgYXQgc2xvdCAtMQogICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0s
IHQyCiAgICAgbG9hZHAgVk06OmludGVycHJldGVyW3QyXSwgdDIKICAgICBsc2hpZnRwIDMsIHQw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlT
X0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdAogICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAg
CiAgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2Nl
bmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFz
dGFjay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgaWYgKCFzdGFj
ay0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAtIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IC0gbmV3Q29kZUJsb2NrLT5udW1DYWxsZWVSZWdpc3RlcnNJbmNsdWRpbmdTa2lwcGVkU2xvdDAo
KSkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9u
IDE1NzkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAv
LyBBZGQgb25lIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5kZXggd2l0aCAtMSB0byBnZXQgY3VycmVu
dCBmcmFtZSBwb2ludGVyLgogICAgIC8vIEFuIGluZGV4IG9mIC0xIGlzIGFuIGVycm9yIGZvciBz
b21lIGNvbXBpbGVycy4KLSAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplICsgMV07CisgICAgUmVnaXN0ZXIgbV9nbG9iYWxDYWxsRnJhbWVb
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fZ2xvYmFsVGhpczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMyLDYgKzEzMzIsOCBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxEZWZhdWx0CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CiAKKyAg
ICBpZiAoKChpbnRwdHJfdClleGVjICYgMHhmZmYpID09IDB4Y2U4KQorICAgICAgICBBU1NFUlQo
ZXhlYyk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLCBleGVjLT5lbXB0eUxp
c3QoKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkocmV2aXNpb24gMTU3OTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDggQEAgdHlwZWRlZiBP
cHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25G
b3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDApIFwKICAgICBc
CiAgICAgLyogRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBv
bmUgbGV2ZWwsIGV0Yy4gKi8gXAotICAgIHYodW5zaWduZWQsIG1heGltdW1JbmxpbmluZ0RlcHRo
LCA1KSBcCisgICAgLyogJiYmJiBDaGFuZ2UgdGhpcyBiYWNrIHRvIDUgKi8gXAorICAgIHYodW5z
aWduZWQsIG1heGltdW1JbmxpbmluZ0RlcHRoLCAxKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQs
IG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCkgXAogICAgIHYodW5zaWdu
ZWQsIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hUb3RhbExlbmd0aCwgMjAwMCkgXApJbmRleDog
U291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
RGF0YUxvZy5jcHAJKHJldmlzaW9uIDE1NzkzOSkKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0j
ZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMAorI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDEKIAog
Ly8gVW5jb21tZW50IHRvIGZvcmNlIGxvZ2dpbmcgdG8gdGhlIGdpdmVuIGZpbGUgcmVnYXJkbGVz
cyBvZiB3aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzYXlzLiBOb3RlIHRoYXQKIC8vIHdl
IHdpbGwgYXBwZW5kICIuPHBpZD4udHh0IiB3aGVyZSA8cGlkPiBpcyB0aGUgUElELgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215421</attachid>
            <date>2013-10-29 13:53:52 -0700</date>
            <delta_ts>2013-10-29 14:39:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>123182-2.patch</filename>
            <type>text/plain</type>
            <size>35809</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBA
CisyMDEzLTEwLTI5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENoYW5nZSBsb2NhbCB2YXJpYWJsZSByZWdpc3RlciBhbGxvY2F0aW9uIHRvIHN0YXJ0IGF0
IG9mZnNldCAtMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRqdXN0ZWQgdGhlIHZpcnR1YWwgcmVnaXN0ZXIgbWFwcGluZyBkb3duIGJ5IG9uZSBzbG90
LiAgUmVkdWNlZAorICAgICAgICB0aGUgQ2FsbEZyYW1lIGhlYWRlciBzbG90cyBvZmZzZXRzIGJ5
IG9uZS4gIFRoZXkgbm93IHN0YXJ0IGF0IDAuCisgICAgICAgIENoYW5nZWQgYXJpdHkgZml4dXAg
dG8gbm8gbG9uZ2VyIHNraXAgcGFzc2VkIHJlZ2lzdGVyIHNsb3QgMCBhcyB0aGlzCisgICAgICAg
IGlzIG5vdyBwYXJ0IG9mIHRoZSBDYWxsRnJhbWUgaGVhZGVyLgorCisgICAgICAgICogYnl0ZWNv
ZGUvVmlydHVhbFJlZ2lzdGVyLmg6CisgICAgICAgIChKU0M6Om9wZXJhbmRJc0xvY2FsKToKKyAg
ICAgICAgKEpTQzo6b3BlcmFuZElzQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVn
aXN0ZXI6OmxvY2FsVG9PcGVyYW5kKToKKyAgICAgICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjpv
cGVyYW5kVG9Mb2NhbCk6CisgICAgICAgICAgQWRqdXN0ZWQgZnVuY3Rpb25zIGZvciBzaGlmdCBp
biBtYXBwaW5nIGZyb20gbG9jYWwgdG8gcmVnaXN0ZXIgb2Zmc2V0LgorCisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAg
ICAgICogZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmZy
YW1lRXh0ZW50KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvZmZzZXRGb3IpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFZhcmFy
Z3MpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgICBBZGp1
c3RlZCBtYXRoIHRvIGFjY29tb2RhdGUgZm9yIHNoaWZ0IGluIGNhbGwgZnJhbWUgc2xvdHMuCisK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsZWVGcmFtZU9m
ZnNldCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9KU1N0YWNrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpwdXNoRnJhbWUpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfc2xvd19wYXRoX3N0
YWNrX2NoZWNrKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAgIEZpeGVk
IG9mZnNldCBjYWxjdWxhdGlvbiB0byB1c2UgVmlydHVhbFJlZ2lzdGVyIGFuZCByZWxhdGVkIGNh
bGN1bGF0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgICBkb2luZyBzZXBlcmF0ZSBjYWxjdWxhdGlv
bnMuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6CisgICAgICAgICAgQWRqdXN0
ZWQgQ2FsbEZyYW1lIHNsb3RzIGRvd24gYnkgb25lLgorCisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmFyaXR5Rml4dXApOgorICAgICAgICAgIENoYW5n
ZWQgYXJpdHkgZml4dXAgdG8gbm8gbG9uZ2VyIHNraXAgcGFzc2VkIHJlZ2lzdGVyIHNsb3QgMCBh
cyB0aGlzCisgICAgICAgICAgaXMgbm93IHBhcnQgb2YgdGhlIENhbGxGcmFtZSBoZWFkZXIuCisK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICAgQ2hhbmdlZCBhcml0
eSBmaXh1cCB0byBubyBsb25nZXIgc2tpcCBwYXNzZWQgcmVnaXN0ZXIgc2xvdCAwIGFzIHRoaXMK
KyAgICAgICAgICBpcyBub3cgcGFydCBvZiB0aGUgQ2FsbEZyYW1lIGhlYWRlci4gIFVwZGF0ZWQg
b3BfZW50ZXIgcHJvY2Vzc2luZyBmb3IKKyAgICAgICAgICB0aGUgY2hhbmdlIGluIGxvY2FsIHJl
Z2lzdGVycy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
ICBSZW1vdmVkIHRoZSBub3cgdW5uZWVkZWQgZXh0cmEgc2xvdCBpbiB0aGUgZ2xvYmFsIGNhbGxm
cmFtZQorCiAyMDEzLTEwLTI5ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VAY2lzY28uY29t
PgogCiAgICAgICAgIFthcm1dIEZpeCBsb3RzIG9mIGNyYXNoZXMgYmVjYXVzZSBvZiA0dGggYXJn
dW1lbnQgcmVnaXN0ZXIgdHJhbXBsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAkocmV2aXNpb24gMTU4MjIxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBib29sIG9w
ZXJhbmRJc0xvY2FsKGludCBvcGVyYW5kKQogewotICAgIHJldHVybiBvcGVyYW5kIDw9IDA7Cisg
ICAgcmV0dXJuIG9wZXJhbmQgPCAwOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBcmd1bWVu
dChpbnQgb3BlcmFuZCkKIHsKLSAgICByZXR1cm4gb3BlcmFuZCA+IDA7CisgICAgcmV0dXJuIG9w
ZXJhbmQgPj0gMDsKIH0KIAogCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBzX2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7
CiAKLSAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1cm4gLWxv
Y2FsOyB9Ci0gICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1
cm4gLW9wZXJhbmQ7IH0KKyAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkg
eyByZXR1cm4gLTEtbG9jYWw7IH0KKyAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBv
cGVyYW5kKSB7IHJldHVybiAtMS1vcGVyYW5kOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9B
cmd1bWVudChpbnQgb3BlcmFuZCkgeyByZXR1cm4gb3BlcmFuZCAtIENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCk7IH0KICAgICBzdGF0aWMgaW50IGFyZ3VtZW50VG9PcGVyYW5kKGludCBh
cmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTgyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDExICszOTEs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAob3BlcmFu
ZC5vZmZzZXQoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSkKKyAgICAgICAgICAgIGlmIChvcGVy
YW5kLm9mZnNldCgpIDwgc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID4g
c3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkp
CisgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kLm9mZnNldCgpIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Bcmd1bWVu
dCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3Vt
ZW50XTsKQEAgLTc2OSw4ICs3NjksOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQoZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSkpOwogICAgICAgICBpbnQgYXJnQ291bnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwotICAgICAgICBpZiAoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArICh1
bnNpZ25lZClhcmdDb3VudCA+IG1fcGFyYW1ldGVyU2xvdHMpCi0gICAgICAgICAgICBtX3BhcmFt
ZXRlclNsb3RzID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50OworICAg
ICAgICBpZiAoSlNTdGFjazo6VGhpc0FyZ3VtZW50ICsgKHVuc2lnbmVkKWFyZ0NvdW50ID4gbV9w
YXJhbWV0ZXJTbG90cykKKyAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBKU1N0YWNrOjpU
aGlzQXJndW1lbnQgKyBhcmdDb3VudDsKIAogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAt
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGR1bW15VGhpc0Fy
Z3VtZW50ID0gb3AgPT0gQ2FsbCA/IDAgOiAxOwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgIGludCBpbmxpbmVDYWxsRnJh
bWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIo
cmVnaXN0ZXJPZmZzZXQpKS5vZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7
CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBlbm91Z2ggbG9jYWxzLgotICAg
IHVuc2lnbmVkIG5ld051bUxvY2FscyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVT
dGFydCkudG9Mb2NhbCgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQgbmV3TnVtTG9jYWxzID0gVmly
dHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAxICsgSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7
CiAgICAgaWYgKG5ld051bUxvY2FscyA+IG1fbnVtTG9jYWxzKSB7CiAgICAgICAgIG1fbnVtTG9j
YWxzID0gbmV3TnVtTG9jYWxzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7ICsraSkKQEAgLTI5NzgsOCArMjk3OCw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tB
cmd1bWVudHNOb3RDcmVhdGVkKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQg
YXJnQ291bnQgPSBpbmxpbmVDYWxsRnJhbWUoKS0+YXJndW1lbnRzLnNpemUoKTsKLSAgICAgICAg
ICAgIGlmIChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgYXJnQ291bnQgPiBtX3BhcmFt
ZXRlclNsb3RzKQotICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplICsgYXJnQ291bnQ7CisgICAgICAgICAgICBpZiAoSlNTdGFjazo6
VGhpc0FyZ3VtZW50ICsgYXJnQ291bnQgPiBtX3BhcmFtZXRlclNsb3RzKQorICAgICAgICAgICAg
ICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBKU1N0YWNrOjpUaGlzQXJndW1lbnQgKyBhcmdDb3VudDsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOyAvLyBjYWxsZWUKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpKTsgLy8gdGhpcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzIsNyArMzMyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBM
YWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3Vm
ZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQotICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoLW1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVv
ZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEp
OworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwogICAgIEp1bXAg
c3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVy
cHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIC8v
IFJldHVybiBoZXJlIGFmdGVyIHN0YWNrIGNoZWNrLgogICAgIExhYmVsIGZyb21TdGFja0NoZWNr
ID0gbGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzM3LDcgKzczNyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFy
Z3MpCiAgICAgewotICAgICAgICByZXR1cm4gLShtX2ppdC5ncmFwaCgpLm1fbmV4dE1hY2hpbmVM
b2NhbCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1BcmdzKSAqIHNpemVvZihS
ZWdpc3Rlcik7CisgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ppdC5n
cmFwaCgpLm1fbmV4dE1hY2hpbmVMb2NhbCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBudW1BcmdzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgfQogICAgIAogICAg
IC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAko
cmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUV2ZW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
VmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAgICAgdW5zaWduZWQgbnVt
VmFyaWFibGVzOwogICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAg
bnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIFZpcnR1YWxSZWdp
c3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKTsK
KyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIFZp
cnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRv
TG9jYWwoKSArIDE7CiAgICAgZWxzZQogICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxv
Y2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTgyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZy
YW1lU2V0OjppdGVyYXRvciBpdGVyID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPmJlZ2lu
KCk7ICEhaXRlcjsgKytpdGVyKSB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9ICppdGVyOwogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBi
YXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRDYWxsZWVSZWdpc3RlcnMgPSBWaXJ0dWFsUmVnaXN0
ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpICsgY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQ2FsbGVl
UmVnaXN0ZXJzID0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQp
LnRvTG9jYWwoKSArIDEgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgICAg
ICAgICAgaWYgKHJlcXVpcmVkQ2FsbGVlUmVnaXN0ZXJzID4gY2FsbGVlUmVnaXN0ZXJzKQogICAg
ICAgICAgICAgICAgIGNhbGxlZVJlZ2lzdGVycyA9IHJlcXVpcmVkQ2FsbGVlUmVnaXN0ZXJzOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTks
NyBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsCiB7CiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKLSAgICByZXR1cm4gcmVnaXN0ZXJzKCkgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzOworICAgIHJldHVybiByZWdpc3RlcnMoKSArIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDEyICsxNzksMTIg
QEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBSZWdpc3RlciogZnJhbWVFeHRlbnQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jaygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiByZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKCkgLSAx
OwogICAgICAgICAgICAgcmV0dXJuIGZyYW1lRXh0ZW50SW50ZXJuYWwoKTsKICAgICAgICAgfQog
ICAgIAogICAgICAgICBSZWdpc3RlciogZnJhbWVFeHRlbnRJbnRlcm5hbCgpOwotICAgIAorCiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBj
b25zdAogICAgICAgICB7CkBAIC0yNTgsNyArMjU4LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAg
ICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KTsKIAot
ICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsgfQorICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3Qg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgSlNTdGFjazo6VGhpc0FyZ3VtZW50IC0gMTsgfQogCiAgICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhlc2UuCiAgICAgICAgIGludCBob3N0VGhpc1JlZ2lzdGVyKCkgeyByZXR1cm4g
dGhpc0FyZ3VtZW50T2Zmc2V0KCk7IH0KQEAgLTI4OCw3ICsyODgsNyBAQCBuYW1lc3BhY2UgSlND
ICB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgSG9zdENh
bGxGcmFtZUZsYWcgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfdGhpc0FyZ3VtZW50
T2Zmc2V0ID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQgc190aGlzQXJndW1lbnRPZmZzZXQgPSBKU1N0YWNrOjpUaGlzQXJndW1lbnQ7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdEFyZ3VtZW50T2Zmc2V0ID0gc190aGlz
QXJndW1lbnRPZmZzZXQgKyAxOwogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
NTgyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgQ2FsbEZyYW1lKiBsb2FkVmFy
YXJncyhDYWxsRnJhbWUqIGNhbGxGcgogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBw
bHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAgdW5z
aWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2Fs
bEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVy
IC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplKTsKKyAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0
ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVnaXN0ZXIgLSBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAxKTsKICAg
ICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gQXJndW1lbnRzOjpNYXhBcmd1
bWVudHMgKyAxIHx8ICFzdGFjay0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewog
ICAgICAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xNjgsNyArMTY4LDcgQEAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNh
bGxGcgogICAgIH0KIAogICAgIGlmIChhcmd1bWVudHMuaXNVbmRlZmluZWRPck51bGwoKSkgewot
ICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdpc3RlciAtIDEgLSBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVnaXN0ZXIg
LSAxIC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDEpOwogICAgICAgICBpZiAoIXN0
YWNrLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAgICAgICAgICAgICBjYWxs
RnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMxNSw5ICszMTUs
OSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAgICAgY29uc3Qg
UmVnaXN0ZXIqIGl0OwogICAgIGNvbnN0IFJlZ2lzdGVyKiBlbmQ7CiAKLSAgICBpdCA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotICAgIGVuZCA9IGNhbGxGcmFtZS0+
cmVnaXN0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwotICAgIHdoaWxlIChp
dCA+IGVuZCkgeworICAgIGl0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRo
aXNBcmd1bWVudCArIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOworICAgIGVuZCA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkgKyBKU1N0YWNrOjpUaGlzQXJndW1lbnQ7CisgICAgd2hpbGUgKGl0
ID49IGVuZCkgewogICAgICAgICBKU1ZhbHVlIHYgPSBpdC0+anNWYWx1ZSgpOwogICAgICAgICBp
bnQgcmVnaXN0ZXJOdW1iZXIgPSBpdCAtIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7CiAgICAgICAg
IFN0cmluZyBuYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KHJlZ2lzdGVyTnVtYmVyKSk7CkBAIC05MzMsNiArOTMzLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZy5kaWRG
aXJlKGNhbGxGcmFtZSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKGNhbGxGcmFtZSk7CiAKKyAgICBpZiAoKChpbnRwdHJfdCljYWxsRnJhbWUgJiAw
eGZmZikgPT0gMHhjZTgpCisgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOwogICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1lLCBuZXdDb2RlQmxv
Y2ssIHNjb3BlLCBhcmdzQ291bnQsIGZ1bmN0aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0Nh
bGxGcmFtZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAxNTgyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMyArNTMsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENhbGxGcmFtZUhl
YWRlckVudHJ5IHsKICAgICAgICAgICAgIENhbGxGcmFtZUhlYWRlclNpemUgPSA2LAotCi0gICAg
ICAgICAgICBBcmd1bWVudENvdW50ID0gNiwKLSAgICAgICAgICAgIENhbGxlckZyYW1lID0gNSwK
LSAgICAgICAgICAgIENhbGxlZSA9IDQsCi0gICAgICAgICAgICBTY29wZUNoYWluID0gMywKLSAg
ICAgICAgICAgIFJldHVyblBDID0gMiwgLy8gVGhpcyBpcyBlaXRoZXIgYW4gSW5zdHJ1Y3Rpb24q
IG9yIGEgcG9pbnRlciBpbnRvIEpJVCBnZW5lcmF0ZWQgY29kZSBzdG9yZWQgYXMgYW4gSW5zdHJ1
Y3Rpb24qLgotICAgICAgICAgICAgQ29kZUJsb2NrID0gMSwKKyAgICAgICAgICAgIFRoaXNBcmd1
bWVudCA9IDYsCisgICAgICAgICAgICBBcmd1bWVudENvdW50ID0gNSwKKyAgICAgICAgICAgIENh
bGxlckZyYW1lID0gNCwKKyAgICAgICAgICAgIENhbGxlZSA9IDMsCisgICAgICAgICAgICBTY29w
ZUNoYWluID0gMiwKKyAgICAgICAgICAgIFJldHVyblBDID0gMSwgLy8gVGhpcyBpcyBlaXRoZXIg
YW4gSW5zdHJ1Y3Rpb24qIG9yIGEgcG9pbnRlciBpbnRvIEpJVCBnZW5lcmF0ZWQgY29kZSBzdG9y
ZWQgYXMgYW4gSW5zdHJ1Y3Rpb24qLgorICAgICAgICAgICAgQ29kZUJsb2NrID0gMCwKICAgICAg
ICAgfTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGRlZmF1bHRDYXBhY2l0eSA9IDUx
MiAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFj
a0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSlNTdGFja0lubGluZXMuaAkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDcgKzcyLDcgQEAgaW5saW5lIENhbGxGcmFtZSogSlNTdGFjazo6cHVzaEZyYW1lKENhbAogCiAg
ICAgUmVnaXN0ZXIqIG5ld0VuZCA9IG5ld0NhbGxGcmFtZVNsb3Q7CiAgICAgaWYgKCEhY29kZUJs
b2NrKQotICAgICAgICBuZXdFbmQgLT0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsK
KyAgICAgICAgbmV3RW5kICs9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2
ZSB0aGUgbmVlZGVkIHN0YWNrIGNhcGFjaXR5IHRvIHB1c2ggdGhlIG5ldyBmcmFtZToKICAgICBp
ZiAoIWdyb3cobmV3RW5kKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlz
aW9uIDE1ODIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTg2LDcgKzU4Niw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0
ZUNvbXBpbGUoSkkKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigtbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVy
KSksIGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVn
VDEpOwogICAgICAgICBzdGFja0NoZWNrID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJl
c3MobV92bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0YWNrQ2hlY2soRQogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+
aW50ZXJwcmV0ZXItPnN0YWNrKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoIXN0YWNrLmdyb3coJmV4
ZWMtPnJlZ2lzdGVycygpWy1jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKQorICAg
IGlmIChVTkxJS0VMWSghc3RhY2suZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykub2Zmc2V0KCldKSkp
CiAgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CiB9CiAKQEAgLTE3MTcsNyArMTcxNyw3IEBAIGFzbSAo
CiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCiBI
SURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiA0MCglcjEzKSwgJXIxM1xu
IgorICAgICJtb3YgMzIoJXIxMyksICVyMTNcbiIKICAgICAibW92ICVyMTMsICVyZGlcbiIKICAg
ICAiam1wICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCiApOwpAQCAtMTcyOCw3ICsxNzI4LDcgQEAgYXNtICgKICIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIEhJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibW92IDQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAzMigl
ZWRpKSwgJWVkaVxuIgogICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgogICAgICJqbXAgIiBMT0NB
TF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7
CkBAIC0xNzQyLDcgKzE3NDIsNyBAQCBISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCiAiLnRodW1iIiAiXG4iCiAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICM0MF0iICJcbiIKKyAgICAibGRy
IHI1LCBbcjUsICMzMl0iICJcbiIKICAgICAibW92IHIwLCByNSIgIlxuIgogICAgICJiICIgTE9D
QUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCiAp
OwpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgYXNtICgKIEhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKIElOTElORV9BUk1fRlVOQ1RJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkKIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAi
bGRyIHI1LCBbcjUsICM0MF0iICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMzMl0iICJcbiIKICAg
ICAibW92IHIwLCByNSIgIlxuIgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCiApOwpAQCAtMTc2Niw3ICsxNzY2LDcgQEAg
YXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKIEhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGR1ciB4MjUsIFt4MjUs
ICMtNDBdIiAiXG4iCisgICAgImxkdXIgeDI1LCBbeDI1LCAjLTMyXSIgIlxuIgogICAgICAibW92
IHgwLCB4MjUiICJcbiIKICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBhc20g
KAogSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgogU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogICAgIExPQURfRlVOQ1RJT05fVE9f
VDkoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpCi0gICAgImx3ICRzMCwgNDAo
JHMwKSIgIlxuIgorICAgICJsdyAkczAsIDMyKCRzMCkiICJcbiIKICAgICAibW92ZSAkYTAsICRz
MCIgIlxuIgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCiApOwpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgYXNtICgKICIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIEhJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAiYWRkICM0MCwgcjE0IiAiXG4iCisgICAgImFk
ZCAjMzIsIHIxNCIgIlxuIgogICAgICJtb3YubCBAcjE0LCByMTQiICJcbiIKICAgICAibW92IHIx
NCwgcjQiICJcbiIKICAgICAibW92LmwgMmYsICIgU0g0X1NDUkFUQ0hfUkVHSVNURVIgIlxuIgpA
QCAtMTgwNCw3ICsxODA0LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgX19kZWNsc3BlYyhuYWtlZCkg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSgpCiAgICAgewogICAgICAgICBfX2FzbSB7Ci0gICAgICAgICAgICBtb3YgZWRp
LCBbZWRpICsgNDBdOworICAgICAgICAgICAgbW92IGVkaSwgW2VkaSArIDMyXTsKICAgICAgICAg
ICAgIG1vdiBbZXNwICsgNF0sIGVkaTsKICAgICAgICAgICAgIGptcCBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxNTgyMjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5OSw3ICs0OTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSog
dm0pCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAgICBq
aXQubmVnNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKLSAgICBqaXQuYWRkUHRyKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7CiAgICAgaml0LmxvYWQz
MihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiA4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsK
ICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKIApAQCAtNTMxLDcgKzUz
MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKICAgICBqaXQu
cG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRpZgogICAgIGppdC5uZWczMihKU0lu
dGVyZmFjZUpJVDo6cmVnVDApOwotICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0
ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDMpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6
QXJndW1lbnRDb3VudCAqIDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5hZGQz
MihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEzICs3
MSwxMyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAvLyBBc3Nl
cnRpb25zIHRvIG1hdGNoIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLiAgSWYgeW91IGNoYW5nZSBh
bnkgb2YgdGhpcyBjb2RlLCBiZQogICAgIC8vIHByZXBhcmVkIHRvIGNoYW5nZSBMb3dMZXZlbElu
dGVycHJldGVyLmFzbSBhcyB3ZWxsISEKICAgICBBU1NFUlQoSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSAqIDggPT0gNDgpOwotICAgIEFTU0VSVChKU1N0YWNrOjpBcmd1bWVudENvdW50ICog
OCA9PSA0OCk7Ci0gICAgQVNTRVJUKEpTU3RhY2s6OkNhbGxlckZyYW1lICogOCA9PSA0MCk7Ci0g
ICAgQVNTRVJUKEpTU3RhY2s6OkNhbGxlZSAqIDggPT0gMzIpOwotICAgIEFTU0VSVChKU1N0YWNr
OjpTY29wZUNoYWluICogOCA9PSAyNCk7Ci0gICAgQVNTRVJUKEpTU3RhY2s6OlJldHVyblBDICog
OCA9PSAxNik7Ci0gICAgQVNTRVJUKEpTU3RhY2s6OkNvZGVCbG9jayAqIDggPT0gOCk7Ci0gICAg
QVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyAxKTsKKyAgICBBU1NFUlQoSlNTdGFjazo6QXJndW1l
bnRDb3VudCAqIDggPT0gNDApOworICAgIEFTU0VSVChKU1N0YWNrOjpDYWxsZXJGcmFtZSAqIDgg
PT0gMzIpOworICAgIEFTU0VSVChKU1N0YWNrOjpDYWxsZWUgKiA4ID09IDI0KTsKKyAgICBBU1NF
UlQoSlNTdGFjazo6U2NvcGVDaGFpbiAqIDggPT0gMTYpOworICAgIEFTU0VSVChKU1N0YWNrOjpS
ZXR1cm5QQyAqIDggPT0gOCk7CisgICAgQVNTRVJUKEpTU3RhY2s6OkNvZGVCbG9jayAqIDggPT0g
MCk7CisgICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
ID09IEpTU3RhY2s6OlRoaXNBcmd1bWVudCk7CiAjaWYgQ1BVKEJJR19FTkRJQU4pCiAgICAgQVNT
RVJUKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSA9
PSAwKTsKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSA9PSA0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDI3LDggKzQyNyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRh
dGFMb2dGKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7
CiAgICAgZGF0YUxvZ0YoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5pbnRl
cnByZXRlci0+c3RhY2soKS5lbmQoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlQoIWV4ZWMtPnZtKCku
aW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFpbnNBZGRyZXNzKCZleGVjLT5yZWdpc3RlcnMoKVst
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpOwotICAgIGlmIChVTkxJ
S0VMWSghdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbLWV4
ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgIEFTU0VSVCgh
ZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJlc3MoJmV4ZWMtPnJl
Z2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGV4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVycykub2Zmc2V0KCldKSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pbnRl
cnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgp
XSkpKSB7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwogICAgICAgICBDb21t
b25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25F
eGNlcHRpb24oZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTU4MjIxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgLy8gTW92ZSBmcmFtZSB1cCAidDEiIHNsb3RzCiAg
ICAgbmVnaSB0MQogICAgIG1vdmUgY2ZyLCB0MwotICAgIGFkZHAgOCwgdDMKICAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgogICAgIGFkZGkgQ2FsbEZyYW1l
SGVhZGVyU2xvdHMsIHQyCiAuY29weUxvb3A6CkBAIC0zNTgsOSArMzU3LDkgQEAgX2xsaW50X29w
X2VudGVyOgogICAgIG1vdmUgMCwgdDEKICAgICBuZWdpIHQyCiAub3BFbnRlckxvb3A6Ci0gICAg
YWRkaSAxLCB0MgogICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYWRkaSAxLCB0MgogICAgIGJ0
aW56IHQyLCAub3BFbnRlckxvb3AKIC5vcEVudGVyRG9uZToKICAgICBkaXNwYXRjaCgxKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyAr
MjEyLDYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgIC8v
IE1vdmUgZnJhbWUgdXAgInQxIiBzbG90cwogICAgIG5lZ3EgdDEKICAgICBtb3ZlIGNmciwgdDMK
LSAgICBhZGRwIDgsIHQzCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRb
Y2ZyXSwgdDIKICAgICBhZGRpIENhbGxGcmFtZUhlYWRlclNsb3RzLCB0MgogLmNvcHlMb29wOgpA
QCAtMjUyLDggKzI1MSw4IEBAIF9sbGludF9vcF9lbnRlcjoKICAgICBuZWdpIHQyCiAgICAgc3hp
MnEgdDIsIHQyCiAub3BFbnRlckxvb3A6Ci0gICAgYWRkcSAxLCB0MgogICAgIHN0b3JlcSB0MCwg
W2NmciwgdDIsIDhdCisgICAgYWRkcSAxLCB0MgogICAgIGJ0cW56IHQyLCAub3BFbnRlckxvb3AK
IC5vcEVudGVyRG9uZToKICAgICBkaXNwYXRjaCgxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU4
MjIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNCArMzMsMTQgQEAgZW5kCiAjIFRoZXNlIGRlY2xh
cmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL0pTU3RhY2suaC4KIGNvbnN0IENhbGxGcmFt
ZUhlYWRlclNpemUgPSA0OAogY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2xvdHMgPSA2Ci1jb25zdCBB
cmd1bWVudENvdW50ID0gNDgKLWNvbnN0IENhbGxlckZyYW1lID0gNDAKLWNvbnN0IENhbGxlZSA9
IDMyCi1jb25zdCBTY29wZUNoYWluID0gMjQKLWNvbnN0IFJldHVyblBDID0gMTYKLWNvbnN0IENv
ZGVCbG9jayA9IDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSA0MAorY29uc3QgQ2FsbGVyRnJhbWUg
PSAzMgorY29uc3QgQ2FsbGVlID0gMjQKK2NvbnN0IFNjb3BlQ2hhaW4gPSAxNgorY29uc3QgUmV0
dXJuUEMgPSA4Citjb25zdCBDb2RlQmxvY2sgPSAwCiAKLWNvbnN0IFRoaXNBcmd1bWVudE9mZnNl
dCA9IENhbGxGcmFtZUhlYWRlclNpemUgKyA4Citjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSBB
cmd1bWVudENvdW50ICsgOAogCiAjIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRz
LgogaWYgSlNWQUxVRTY0CkBAIC0zNzIsNiArMzcyLDcgQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFs
aXphdGlvbihwcm9maWxlQXJnUwogICAgICAgICAKICAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4K
ICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBh
ZGRpIDEsIHQwICMgQWNjb3VudCB0aGF0IGxvY2FsMCBnb2VzIGF0IHNsb3QgLTEKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MgogICAgIGxvYWRwIFZNOjppbnRlcnByZXRlclt0Ml0s
IHQyCiAgICAgbHNoaWZ0cCAzLCB0MApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDE1ODIyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXQK
ICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpOwogICAgIAogICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2Ug
Zm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0
aGUgY2FsbGVyLgotICAgIGlmICghc3RhY2stPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgLSBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpKQorICAgIGlmICghc3RhY2stPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgLSBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSArIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG5ld0NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgpKSkKICAgICAgICAgcmV0dXJuIC0x
OwogICAgIAogICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTU4MjIxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ2LDcgKzE0Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEFkZCBvbmUgc28gd2UgZG9uJ3Qg
bmVlZCB0byBpbmRleCB3aXRoIC0xIHRvIGdldCBjdXJyZW50IGZyYW1lIHBvaW50ZXIuCiAgICAg
Ly8gQW4gaW5kZXggb2YgLTEgaXMgYW4gZXJyb3IgZm9yIHNvbWUgY29tcGlsZXJzLgotICAgIFJl
Z2lzdGVyIG1fZ2xvYmFsQ2FsbEZyYW1lW0pTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyAx
XTsKKyAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJTaXplXTsKIAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9nbG9iYWxUaGlzOwogCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTgyMjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0xMC0yOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
KworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVl
ZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTMtMTAtMjkgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIHRoZSBXZWJLaXQyIHRlc3RlcnMgdG8gYWJv
cnQgZWFybHkgYnkgc2V0dGluZyB0aGUgc2hvdWxkQWJvcnRFYXJseSBwcm9wZXJ0eSB0byBUcnVl
LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODIyMSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTgsOCArMjE4LDYgQEAKIAkJQ0Q1MzkzQzgxNzU3QkE5NzAwQzA3
MTIzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDUzOTNDNzE3NTdCQTk3MDBDMDcxMjMgLyogTUQ1LmNwcCAqLzsgfTsKIAkJQ0Q1Mzkz
Q0ExNzU3QkFDNDAwQzA3MTIzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1MzkzQzkxNzU3QkFDNDAwQzA3MTIzIC8qIFNIQTEuY3Bw
ICovOyB9OwogCQlDRDU0OTdCNDE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0IzMTU4NTdG
MEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwotCQlDRTE0RjFBNDE4MTg3M0IwMDAx
QzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE0RjFBMjE4
MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRt
bCAqLzsgfTsKLQkJQ0UzMkM3QzgxODE4NEM0OTAwQ0Q4QzI4IC8qIFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTENyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UzMkM3QzcxODE4NEM0OTAwQ0Q4QzI4IC8qIFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTENyYXNoLm1tICovOyB9OwogCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMg
LyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gKi87IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAv
KiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9
OwogCQlFMTk0RTFCQjE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE5NEUxQkExNzdFNTE0NTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVS
ZXNwb25zZS5tbSAqLzsgfTsKQEAgLTI5MCw3ICsyODgsNiBAQAogCQkJCTFBMDJDODcwMTI1RDRD
RkQwMEUzRjRCRCAvKiBmaW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUI0RjhG
QTcxNTlENTJERDAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIyNkZDQ0ExNTlEMTZERTAwQ0MzNzY1IC8qIEhUTUxGb3Jt
Q29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCUNFMTRG
MUE0MTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFz
aC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUJDQkQzNzM3MTI1QUJCRUIwMEQyQzI5
RiAvKiBpY29uLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzhFNjQ3OTE2MzI3MDc0
MDBCNkM2NzYgLyogbGluay13aXRoLXRpdGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJOTM2MTAwMjkxNERDOTVBNzAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLApAQCAtNTUyLDggKzU0OSw2IEBACiAJCUNENTM5M0M3MTc1N0JBOTcw
MEMwNzEyMyAvKiBNRDUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TUQ1LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1MzkzQzkxNzU3QkFDNDAw
QzA3MTIzIC8qIFNIQTEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U0hBMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0IzMTU4NTdGMEMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0UxNEYx
QTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNo
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTMyQzdDNzE4MTg0QzQ5MDBDRDhDMjgg
LyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2gubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxD
cmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5NEUxQkExNzdFNTE0NTAwOUM0RDRFIC8qIFN0b3BM
b2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0MCw3ICs5MzUsNiBAQAogCQkJCUM1NDBGNzc1
MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSAqLywKIAkJCQkyOTE4NjFGRDE3
QkQ0REM3MDBENEU0MUUgLyogU3RvcExvYWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSAqLywK
IAkJCQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlLm1tICovLAotCQkJCUNFMzJDN0M3MTgxODRDNDkwMENEOEMyOCAvKiBXaWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5tbSAqLywKIAkJCQkzNzk5QUQzOTE0MTIwQTQz
MDA1RUIwQzYgLyogU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW0gKi8s
CiAJCQkJMzdBNjg5NUQxNDhBOUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5t
bSAqLywKIAkJCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5t
bSAqLywKQEAgLTk2OCw3ICs5NjIsNiBAQAogCQkJCTFBN0U4QjM1MTgxMjA5MzYwMEFFQjc0QSAv
KiBGcmFnbWVudE5hdmlnYXRpb24uaHRtbCAqLywKIAkJCQk5QjRGOEZBNjE1OUQ1MkNBMDAyRDlG
OTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLywKIAkJCQk5QjI2RkNCNDE1OUQx
NUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCi0JCQkJ
Q0UxNEYxQTIxODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TENyYXNoLmh0bWwgKi8sCiAJCQkJQzJDRjk3NTgxNkNFQzY5RTAwNTRFOTlEIC8qIEpTQ29udGV4
dEJhY2tGb3J3YXJkQ2FjaGUxLmh0bWwgKi8sCiAJCQkJQzJDRjk3NTkxNkNFQzY5RTAwNTRFOTlE
IC8qIEpTQ29udGV4dEJhY2tGb3J3YXJkQ2FjaGUyLmh0bWwgKi8sCiAJCQkJRTEyMjBEQzkxNTVC
Mjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWwgKi8sCkBAIC0xMTQ2LDcgKzExMzksNiBAQAogCQkJCTFBREJFRkFFMTMwQzY4OUMw
MEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRDM3MTAx
MjVBQTJFQjAwRDJDMjlGIC8qIEZyYW1lTUlNRVR5cGVIVE1MLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQkQzNzYxMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUNFMzJDN0M4MTgxODRDNDkwMENEOEMyOCAvKiBXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkxDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MEY0MjdCMTcy
QTIzQTUwMDkzOUZGMCAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUE5
RTU1OTE0OTgwQTk5MDAwMDFBOEEgLyogRnVuY3Rpb25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMEM1RDNCRTE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGlu
IFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="238145"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>