<?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>158666</bug_id>
          
          <creation_ts>2016-06-11 12:52:21 -0700</creation_ts>
          <short_desc>Add new builtin opcode tailCallForwardArguments</short_desc>
          <delta_ts>2016-06-14 11:28:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201614</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-11 12:52:21 -0700</bug_when>
    <thetext>Add new builtin opcode tailCallForwardArguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201622</commentid>
    <comment_count>1</comment_count>
      <attachid>281108</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-11 13:13:27 -0700</bug_when>
    <thetext>Created attachment 281108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201623</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-11 13:15:32 -0700</bug_when>
    <thetext>Attachment 281108 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4503:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4505:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 31 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>1201638</commentid>
    <comment_count>3</comment_count>
      <attachid>281108</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-11 15:23:07 -0700</bug_when>
    <thetext>Comment on attachment 281108
Patch

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

Some quick comments. I&apos;ll look more closely later. Pizlo might also be a better reviewer here than me

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4481
&gt; +            // Verify that handleCall(), which could have inlined the callee, didn&apos;t trash m_currentInstruction.

ASSERT_WITH_MESSAGE instead of ASSERT + comment

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4497
&gt; +            ASSERT(m_currentInstruction == currentInstruction);

ASSERT_WITH_MESSAGE instead of ASSERT + comment

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4499
&gt; +            // If the call is not terminal, however, then we want the subsequent op_ret/op_jumpt to update metadata and clean

Typo: jumpt

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4501
&gt; +            if (terminality == NonTerminal) {

When is this true? When this is inlined?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1937
&gt; +CallFrame* JIT_OPERATION operationSetupForwardArgumentsFrame(ExecState* exec, CallFrame* newCallFrame, EncodedJSValue, int32_t, int32_t length)

Might as well reuse this same code you wrote in Interpreter.cpp and you can just inline it if you don&apos;t want to pay for the call.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:749
&gt; +macro prepareForTailCallForwardArguments(callee, temp1, temp2, temp3)

Not used</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201639</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-11 15:23:34 -0700</bug_when>
    <thetext>Also looks like 32-bit needs some love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201643</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-11 15:31:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Also looks like 32-bit needs some love.

Yeah, I&apos;ll take a look at that a little later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201672</commentid>
    <comment_count>6</comment_count>
      <attachid>281108</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-11 17:55:34 -0700</bug_when>
    <thetext>Comment on attachment 281108
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1250
&gt; +    ASSERT(callNode-&gt;op() != TailCallVarargs || callNode-&gt;op() != TailCallForwardVarargs);

Isn&apos;t this a tautology?  X is always my equal to A or not equal to B if A and B are not equal to each other. Maybe &amp;&amp;?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1778
&gt; +                        noticeArgumentsUse();

Wow, that&apos;s tricky!

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4501
&gt;&gt; +            if (terminality == NonTerminal) {
&gt; 
&gt; When is this true? When this is inlined?

I guess foo normal-called bar and bar tail-forward-called baz?

If that&apos;s it, then having such an example in the comment would help.

&gt; Source/JavaScriptCore/dfg/DFGPreciseLocalClobberize.h:120
&gt; +            if (m_node-&gt;child1())

This seems like the wrong condition since I&apos;m assuming that child1 is the arguments child some of the time and the callee child for the call opcodes. Seems like this was already a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201712</commentid>
    <comment_count>7</comment_count>
      <attachid>281108</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-12 13:15:00 -0700</bug_when>
    <thetext>Comment on attachment 281108
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1250
&gt;&gt; +    ASSERT(callNode-&gt;op() != TailCallVarargs || callNode-&gt;op() != TailCallForwardVarargs);
&gt; 
&gt; Isn&apos;t this a tautology?  X is always my equal to A or not equal to B if A and B are not equal to each other. Maybe &amp;&amp;?

You&apos;re right that should be &amp;&amp;. I&apos;ll fix all the cases of this.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4481
&gt;&gt; +            // Verify that handleCall(), which could have inlined the callee, didn&apos;t trash m_currentInstruction.
&gt; 
&gt; ASSERT_WITH_MESSAGE instead of ASSERT + comment

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4497
&gt;&gt; +            ASSERT(m_currentInstruction == currentInstruction);
&gt; 
&gt; ASSERT_WITH_MESSAGE instead of ASSERT + comment

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4499
&gt;&gt; +            // If the call is not terminal, however, then we want the subsequent op_ret/op_jumpt to update metadata and clean
&gt; 
&gt; Typo: jumpt

Fixed along with the other similar comments.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4501
&gt;&gt;&gt; +            if (terminality == NonTerminal) {
&gt;&gt; 
&gt;&gt; When is this true? When this is inlined?
&gt; 
&gt; I guess foo normal-called bar and bar tail-forward-called baz?
&gt; 
&gt; If that&apos;s it, then having such an example in the comment would help.

This happens when whenever the call is inlined. I believe the caller does not need to be inlined for this to happen.

&gt;&gt; Source/JavaScriptCore/dfg/DFGPreciseLocalClobberize.h:120
&gt;&gt; +            if (m_node-&gt;child1())
&gt; 
&gt; This seems like the wrong condition since I&apos;m assuming that child1 is the arguments child some of the time and the callee child for the call opcodes. Seems like this was already a bug.

Yeah, I think you are right. I missed that this code was working on both ForwardVarargs and TailCallForwardVarargs.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1937
&gt;&gt; +CallFrame* JIT_OPERATION operationSetupForwardArgumentsFrame(ExecState* exec, CallFrame* newCallFrame, EncodedJSValue, int32_t, int32_t length)
&gt; 
&gt; Might as well reuse this same code you wrote in Interpreter.cpp and you can just inline it if you don&apos;t want to pay for the call.

I meant to do that but I guess I forgot to update this code.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:749
&gt;&gt; +macro prepareForTailCallForwardArguments(callee, temp1, temp2, temp3)
&gt; 
&gt; Not used

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201713</commentid>
    <comment_count>8</comment_count>
      <attachid>281127</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-12 13:16:55 -0700</bug_when>
    <thetext>Created attachment 281127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201714</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-12 13:19:03 -0700</bug_when>
    <thetext>Attachment 281127 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4501:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4503:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 33 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>1201724</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-12 15:17:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 281108 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281108&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1250
&gt; &gt;&gt; +    ASSERT(callNode-&gt;op() != TailCallVarargs || callNode-&gt;op() != TailCallForwardVarargs);
&gt; &gt; 
&gt; &gt; Isn&apos;t this a tautology?  X is always my equal to A or not equal to B if A and B are not equal to each other. Maybe &amp;&amp;?
&gt; 
&gt; You&apos;re right that should be &amp;&amp;. I&apos;ll fix all the cases of this.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4481
&gt; &gt;&gt; +            // Verify that handleCall(), which could have inlined the callee, didn&apos;t trash m_currentInstruction.
&gt; &gt; 
&gt; &gt; ASSERT_WITH_MESSAGE instead of ASSERT + comment
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4497
&gt; &gt;&gt; +            ASSERT(m_currentInstruction == currentInstruction);
&gt; &gt; 
&gt; &gt; ASSERT_WITH_MESSAGE instead of ASSERT + comment
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4499
&gt; &gt;&gt; +            // If the call is not terminal, however, then we want the subsequent op_ret/op_jumpt to update metadata and clean
&gt; &gt; 
&gt; &gt; Typo: jumpt
&gt; 
&gt; Fixed along with the other similar comments.
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4501
&gt; &gt;&gt;&gt; +            if (terminality == NonTerminal) {
&gt; &gt;&gt; 
&gt; &gt;&gt; When is this true? When this is inlined?
&gt; &gt; 
&gt; &gt; I guess foo normal-called bar and bar tail-forward-called baz?
&gt; &gt; 
&gt; &gt; If that&apos;s it, then having such an example in the comment would help.
&gt; 
&gt; This happens when whenever the call is inlined. I believe the caller does
&gt; not need to be inlined for this to happen.

If we have foo tail-forward calling bar, then bar should a terminal inline. Right?

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGPreciseLocalClobberize.h:120
&gt; &gt;&gt; +            if (m_node-&gt;child1())
&gt; &gt; 
&gt; &gt; This seems like the wrong condition since I&apos;m assuming that child1 is the arguments child some of the time and the callee child for the call opcodes. Seems like this was already a bug.
&gt; 
&gt; Yeah, I think you are right. I missed that this code was working on both
&gt; ForwardVarargs and TailCallForwardVarargs.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1937
&gt; &gt;&gt; +CallFrame* JIT_OPERATION operationSetupForwardArgumentsFrame(ExecState* exec, CallFrame* newCallFrame, EncodedJSValue, int32_t, int32_t length)
&gt; &gt; 
&gt; &gt; Might as well reuse this same code you wrote in Interpreter.cpp and you can just inline it if you don&apos;t want to pay for the call.
&gt; 
&gt; I meant to do that but I guess I forgot to update this code.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:749
&gt; &gt;&gt; +macro prepareForTailCallForwardArguments(callee, temp1, temp2, temp3)
&gt; &gt; 
&gt; &gt; Not used
&gt; 
&gt; Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201727</commentid>
    <comment_count>11</comment_count>
      <attachid>281127</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-12 15:19:30 -0700</bug_when>
    <thetext>Comment on attachment 281127
Patch

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

r=me. Make sure you test everything.

&gt; Source/JavaScriptCore/dfg/DFGNode.h:774
&gt; +    Edge&amp; argumentsChild()

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201943</commentid>
    <comment_count>12</comment_count>
      <attachid>281196</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-13 13:51:26 -0700</bug_when>
    <thetext>Created attachment 281196
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201956</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-13 14:04:04 -0700</bug_when>
    <thetext>Committed r202003: &lt;http://trac.webkit.org/changeset/202003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202151</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-06-14 03:13:51 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Committed r202003: &lt;http://trac.webkit.org/changeset/202003&gt;

It broke many JSC tests on 32 bit platforms, see build.webkit.org for details.

Apple El Capitan 32-bit JSC (BuildAndTest)
- before: https://build.webkit.org/builders/Apple%20El%20Capitan%2032-bit%20JSC%20%28BuildAndTest%29/builds/2649
- after: https://build.webkit.org/builders/Apple%20El%20Capitan%2032-bit%20JSC%20%28BuildAndTest%29/builds/2650

Apple Yosemite 32-bit JSC (BuildAndTest)
- before: https://build.webkit.org/builders/Apple%20Yosemite%2032-bit%20JSC%20%28BuildAndTest%29/builds/9462
- after: https://build.webkit.org/builders/Apple%20Yosemite%2032-bit%20JSC%20%28BuildAndTest%29/builds/9463

Apple Win 7 Release (Tests)
- before: https://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29/builds/58209
- after: https://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29/builds/58210

JSCOnly Linux ARMv7 Thumb2 Release
- before: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/935
- after: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/936

JSCOnly Linux ARMv7 Traditional Release
- before: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Traditional%20Release/builds/931
- after: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Traditional%20Release/builds/932

Please watch the build waterfall after landing a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202249</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-14 11:28:41 -0700</bug_when>
    <thetext>Fixed in https://bugs.webkit.org/show_bug.cgi?id=158737</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281108</attachid>
            <date>2016-06-11 13:13:27 -0700</date>
            <delta_ts>2016-06-12 13:16:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158666-20160611131458.patch</filename>
            <type>text/plain</type>
            <size>66553</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTNkMjExNzk1YWM4ODgzOGUzZTNlZjhlNzgxOGRhMjBhYWVkOWM4Li43N2NhNmZlMzhjNmJlNGQ1
OTczMjdjYzUzOWEwMTJiNzEyMWVkNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMTYtMDYtMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBidWlsdGluIG9wY29kZSB0YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGhhdmUgYSBidWlsdGluIGZvcndhcmQg
aXRzCisgICAgICAgIGFyZ3VtZW50cyB0byBhIGhlbHBlciB3aXRob3V0IGFsbG9jYXRpbmcgYW4g
YXJndW1lbnRzIG9iamVjdC4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgbmV3IGJ5dGVjb2Rl
IGludHJpbnNpYyBAdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzIHRoYXQKKyAgICAgICAgdGFrZXMg
dHdvIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSB0YXJnZXQgb2YgdGhlIGNhbGwgYW5kIHRoZQor
ICAgICAgICBzZWNvbmQgaXMgdGhlIG5ldyB0aGlzIHZhbHVlLiBUaGlzIG9wY29kZSB3aWxsIHRh
aWwgY2FsbCB0byB0aGUKKyAgICAgICAgcGFzc2VkIGZ1bmN0aW9uIHdpdGhvdXQgdHJpZ2dlcmlu
ZyBhbiBhbGxvY2F0aW9uIG9mIGFuIGFyZ3VtZW50cworICAgICAgICBvYmplY3QgZm9yIHRoZSBj
YWxsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgSW4gdGhlIExMSW50IGFuZCBCYXNlbGluZSB0aGlz
IGZ1bmN0aW9uIGFjdHMgdGhlIHNhbWUgd2F5IGEgbm9ybWFsCisgICAgICAgIHRhaWwgY2FsbCBk
b2VzLiAgVGhlIGJ5dGVjb2RlIHdpbGwgYWxsb2NhdGUgYSBuZXcgc3RhY2sgZnJhbWUKKyAgICAg
ICAgY29weWluZyBhbGwgdGhlIGFyZ3VtZW50cyBvZiB0aGUgY2FsbGVyIGZ1bmN0aW9uIGludG8g
dGhlIG5ldworICAgICAgICBmcmFtZSwgYWxvbmcgd2l0aCB0aGUgbmV3IHRoaXMuIFRoZW4gd2hl
biB0aGUgYWN0dWFsIGNhbGwgaGFwcGVucworICAgICAgICB0aGUgbmV3IGZyYW1lIGlzIGNvcGll
ZCBvdmVyIHRoZSBjYWxsZXIgZnJhbWUuIFdoaWxlIHRoaXMgaXMgbm90CisgICAgICAgIG5lY2Vz
c2FyeSwgaXQgYWxsb3dzIHRoZSB0YXJnZXQgZnVuY3Rpb24gdG8gaGF2ZSBtb3JlIGFyZ3VtZW50
cworICAgICAgICB0aGFuIHRoZSBjYWxsZXIgZnVuY3Rpb24gdmlhIGFyaXR5IGZpeHVwLgorCisg
ICAgICAgIE9uY2Ugd2UgZ2V0IHRvIHRoZSBERkcgd2UgcmV1c2UgZXhpc3RpbmcgREZHIE5vZGVz
IGZvciBmb3J3YXJkaW5nCisgICAgICAgIGFyZ3VtZW50cywgYWx0aG91Z2ggdGhlcmUgd2VyZSBz
b21lIG1pbm9yIGNoYW5nZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgc3dhcHMgdGhlIG1lYW5pbmcg
b2YgdGhlIHNlY29uZCBhbmQgdGhpcmQgY2hpbGRyZW4gZm9yIGVhY2ggREZHCisgICAgICAgIHZh
cmFyZ3Mgbm9kZSwgZXhjaGFuZ2luZyB0aGUgYXJnbXVtZW50cyBhbmQgdGhpcyBjaGlsZCwKKyAg
ICAgICAgcmVzcGVjdGl2ZWx5LiBJdCBhbHNvIG1ha2VzIHRoZSBhcmd1bWVudHMgY2hpbGQgZm9y
IGVhY2ggdmFyYXJncworICAgICAgICBub2RlLCBhcyB3ZWxsIGFzIHRoZSBGb3J3YXJkVmFyYXJn
cyBub2RlIG9wdGlvbmFsLiBJZiB0aGUgb3B0aW9uYWwKKyAgICAgICAgY2hpbGQgaXMgbWlzc2lu
ZywgdGhlbiBmb3J3YXJkaW5nIG5vZGUgYXNzdW1lcyB0aGF0IHRoZSBhcmd1bWVudHMKKyAgICAg
ICAgZm9yIHRoZSBub2RlJ3MgaW5saW5lQ2FsbEZyYW1lIHNob3VsZCBiZSB1c2VkIGluc3RlYWQu
IEZpbmFsbHksCisgICAgICAgIHdoZW4gaW5saW5pbmcgdGhlIHRhcmdldCBvZiBhbiBpbmxpbmVk
CisgICAgICAgIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyB3ZSBtYWtlIHN1cmUgdGhl
IGFyZ3VtZW50cyBvZiB0aGUKKyAgICAgICAgZm9yd2FyZGluZyBmdW5jdGlvbiBhcmUgbWFya2Vk
IGFzIG5vbi11bmJveGFibGUgc2luY2UgdGhpcyB3b3VsZAorICAgICAgICBub3JtYWxseSBiZSBk
b25lIGJ5IHRoZSBjYWxsZXIncyBjcmVhdGUgYXJndW1lbnRzIG9iamVjdCBub2RlLAorICAgICAg
ICB3aGljaCBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5r
SW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3Np
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3Mp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdHJ5R2V0
QnlJZCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAg
ICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVGb3J3YXJkVmFyYXJncyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1Zh
cmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9y
Q29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVGb3J3YXJkVmFyYXJncyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6c2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUpOgorICAgICAgICAoSlNDOjpz
ZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMpOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlT3BDYWxsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnZhcmFyZ3NTZXR1cCk6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEZ1bmNUb1ByaXZhdGVOYW1lLmNyZWF0ZUJ1aWx0aW4p
OgorICAgICAgICAocHV0RnVuY1RvUHJpdmF0ZU5hbWUpOgorICAgICAgICAoY3JlYXRlVGFpbENh
bGxGb3J3YXJkaW5nRnVuY1dpdGgpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKGJhejIpOgor
ICAgICAgICAoYmF6Myk6CisgICAgICAgIChsZXQuYm9keVRleHQpOgorICAgICAgICAoYmF6NCk6
CisgICAgICAgIChiYXo1KToKKyAgICAgICAgKGFycmF5RXEpOgorCiAyMDE2LTA2LTA4ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIHNob3VsZCBi
ZSBhYmxlIHRvIGxvb2t1cCBzeW1ib2xzIGJ5IGlkZW50aWZpZXIgaW4gYnVpbHRpbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oCmluZGV4IDJjMzk5MzVmYjc4NWQ3ODUyNDA0ZDVhZjFiOWEzOTkxM2I0ZDU4
MDIuLjA3YjU5NTg3OTgzMGQwNzQ4ZjFiYjEyMjM0ZWFhOWY4NWU1MmJkMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJZGVudGlmaWVyOwogICAgIG1hY3Jv
KGFyZ3VtZW50Q291bnQpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKICAgICBtYWNybyhpc09iamVj
dCkgXAorICAgIG1hY3JvKHRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRy
eUdldEJ5SWQpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHRvU3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCmluZGV4IDhlOTgwNWE2NzUzZWViNmVjMDAwMTdhNzUwMjVhODk3MTgxM2YzOTIuLjQ3NTMy
Nzk0NzgzOTI1MDE0ZWYwZTE5MWUzMzNlYmJlYTY5MThjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwOCw2ICsxMDgsNyBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0aCIgOiA5IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVuZ3RoIiA6IDkg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbF92YXJhcmdzIiwgImxlbmd0
aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jl
dCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY29uc3RydWN0
IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1Y3Rf
dmFyYXJncyIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBjMzdhNzljNGE0ZmJiZWViNDQ4MGZjN2U0NDhj
NDM5MzQxYjM1YmFlLi5jN2ZiZDZkNjRmYTA2OWVmNGU1MDZjNzYxYjA2M2RmYjBiYjZiNTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApA
QCAtMjIzLDcgKzIyMyw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpczoKLSAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKKyAgICBjYXNl
IG9wX2RlbF9ieV92YWw6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6
IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0zOTAsNiArMzkxLDcgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJn
czoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKICAgICBjYXNlIG9w
X2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAgICAgY2Fz
ZSBvcF9jYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCmluZGV4IGJlZWVhYTEyYzNkMjgwYmIxYjc5OTIzZWMxYjMzMjcyYzZlNjA5MTIuLmY3ZTZl
NzM4ZmY4YzhmZjMxMzg5ZTgxNjQyNTBhYzJjNWNhYTQ0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7CiAgICAgICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGFpbENhbGw7Ci0gICAg
ICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyk7CisgICAgICAgIEFT
U0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1
N2YzMTVmYmNjYjNiYzc1YWYzMmQxY2Y2YTM1OTgwYmI5YzI2M2QxLi4yMzBjODIzMDNlODhjNThi
NzU5YzgzNDliMjIxOGI3MDNhZTE5ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Niw3ICsxNDY2LDggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92
YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKLSAgICAgICAgY2FzZSBvcF90
YWlsX2NhbGxfdmFyYXJnczogeworICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgor
ICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czogewogICAgICAgICAg
ICAgaW50IHJlc3VsdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGNhbGxl
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHRoaXNWYWx1ZSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTQ3NCw3ICsxNDc1LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCB2YXJBcmdPZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wY29kZSA9PSBvcF9jYWxsX3ZhcmFyZ3MgPyAiY2FsbF92
YXJhcmdzIiA6IG9wY29kZSA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyA/ICJjb25zdHJ1Y3RfdmFy
YXJncyIgOiAidGFpbF9jYWxsX3ZhcmFyZ3MiKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9w
TmFtZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2FsbF92YXJhcmdzKQorICAgICAg
ICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOworICAgICAgICAgICAgZWxzZSBpZiAo
b3Bjb2RlID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQorICAgICAgICAgICAgICAgIG9wTmFtZSA9
ICJjb25zdHJ1Y3RfdmFyYXJncyI7CisgICAgICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3Bf
dGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxfY2FsbF92
YXJhcmdzIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9wY29kZSA9PSBvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cyI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcE5hbWUpOwogICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlcywgJXMsICVkLCAlZCIsIHJlZ2lzdGVyTmFtZShyZXN1bHQpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUodGhpc1ZhbHVlKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIsIHZh
ckFyZ09mZnNldCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFz
UHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwNTUsNiArMjA2OCw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9j
YWxsX3ZhcmFyZ3M6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAgICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX2Nv
bnN0cnVjdF92YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsKICAgICAgICAg
ICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCA2NmJlMGE2MDY1MWMxMTI4NTc0OGVhMzAyYzA5NzRmOThlNzhi
ZDE2Li4zOTljMmU4NTRiMzRlODhhMjhkODJkMzI1MTc1N2QxYTdjNGU4ZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMzExNSw2ICszMTE1LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqCiB7
CiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJncyhvcF9jb25zdHJ1Y3RfdmFyYXJncywgZHN0LCBm
dW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFy
QXJnT2Zmc2V0LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQorCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxGb3J3YXJkQXJndW1lbnRzSW5UYWlsUG9zaXRp
b24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgQVNT
RVJUKG1faW5UYWlsUG9zaXRpb24pOworICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgbnVsbHB0
ciwgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOworfQogICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsVmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMs
IFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CkBAIC0zMTMwLDcgKzMx
MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKE9w
Y29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCogZHN0LAogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1JlZ2lzdGVyID8gdGhpc1JlZ2lzdGVy
LT5pbmRleCgpIDogMCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50cy0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50cyA/IGFyZ3VtZW50cy0+
aW5kZXgoKSA6IDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmaXJzdEZyZWVSZWdpc3Rl
ci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0VmFyQXJnT2Zmc2V0
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCAxNmIxZjUzOTEwYzg2N2I3NjZjNGU1MWQ4ZWIzM2U3NTg0ZGViOWFjLi5mN2I2NTY1N2Ix
MDI4ZDMzOWYxNjlkYzU2MmNlYWFjMzhmNDA5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01NzcsNiAr
NTc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsRXZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3Rl
cklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmly
c3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFy
YXJnc0luVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVn
aXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQq
IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3NpdGlvbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogZmlyc3RGcmVl
UmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0b3JPcHRp
b24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGRm
YjQxNjdmMThiM2UxNDc1YTIzZTIwZTFmMTRjNTVjYTgwNDAzYmQuLjhhYmI0NThlMTI3MmQxOGZj
YzE3NWU5OWM1MWMyYmQ0ZDZkZjcxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg4OCw2ICs4ODgsMTggQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRCeVZhbERp
cmVjdChCeXRlY29kZUdlbmVyYXQKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1l
bnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5v
ZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmaW5hbERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQ
b3NpdGlvbihmaW5hbERzdC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQo
KSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX3RyeUdldEJ5SWQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CkBAIC04OTksOCArOTExLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY190cnlHZXRCeUlkKEJ5dGVjb2RlR2VuZXJhdG9yJgogICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGUtPm1f
ZXhwciktPnZhbHVlKCk7CiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0gICAgUmVnaXN0
ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKLSAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRUcnlHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgaWRl
bnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRyeUdldEJ5SWQoZmlu
YWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXgg
OTE5MmNmOTA0ODliODEzZDUzODY0MTg2Mzc2NGIyYjM3MTNmODkwYy4uZmIzYTBiMjg1NzVlODU1
NTEwMzRkMGRkMmQ1Y2Q3ODlmY2Q3YmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0xOTEs
NyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJn
czoKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAg
ICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKSwgbm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKQEAgLTYxMiw3ICs2MTIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAg
ICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgICAgICBjYXNlIFRh
aWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSog
Y2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDMoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghbV9jYW5kaWRhdGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBAIC02MzMsNyArNjMzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXpl
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBw
ZW5kKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIGFyZ3VtZW50IDogYXJndW1lbnRzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBl
bmQoRWRnZShhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IGJiM2JlMTc4YjFiZDZjYzFlZTY2NjE0Y2YzOTFiM2EwMTEyMjFmY2IuLmMy
ZTY0ZGQ0NmZlNzU3YWJkMGMxZjhhZDM0ZTE4NGM2YTFjMzFmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC04MjgsNyArODI4LDgg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAg
ICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKLSAgICAgICAgICAgICAgICBjYXNlIG9wX3Rh
aWxfY2FsbF92YXJhcmdzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFy
YXJnczoKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gU3BlY0Z1bGxUb3A7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMjksNyArMTIzMCw3IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAg
ICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1cm4g
VGVybWluYWw7Ci0gICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFy
Z3MpOworICAgICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzIHx8
IGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgICAgICByZXR1
cm4gTm9uVGVybWluYWw7CiAgICAgfQogICAgIApAQCAtMTI0Niw3ICsxMjQ3LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgIE5v
ZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsT3BJbmZvLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgcmV0dXJuIFRl
cm1pbmFsOwotICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MpOwor
ICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgfHwgY2FsbE5vZGUt
Pm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgcmV0dXJuIE5vblRlcm1pbmFs
OwogfQogCkBAIC0xMjU0LDcgKzEyNTUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTgogewog
ICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPT0gT1BDT0RFX0xFTkdU
SChvcF9jb25zdHJ1Y3RfdmFyYXJncykpOwogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2Nh
bGxfdmFyYXJncykgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxfdmFyYXJncykpOwotICAg
IAorCiAgICAgaW50IHJlc3VsdCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgY2FsbGVlID0g
cGNbMl0udS5vcGVyYW5kOwogICAgIGludCB0aGlzUmVnID0gcGNbM10udS5vcGVyYW5kOwpAQCAt
MTI4NSwxNiArMTI4NiwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTgogICAgIGRhdGEtPmZp
cnN0VmFyQXJnT2Zmc2V0ID0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgCiAgICAgTm9kZSogdGhp
c0NoaWxkID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSk7CisgICAgTm9kZSogYXJndW1l
bnRzQ2hpbGQgPSBudWxscHRyOworICAgIGlmIChvcCAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdz
KQorICAgICAgICBhcmd1bWVudHNDaGlsZCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRz
KSk7CiAKLSAgICBpZiAob3AgPT0gVGFpbENhbGxWYXJhcmdzKSB7CisgICAgaWYgKG9wID09IFRh
aWxDYWxsVmFyYXJncyB8fCBvcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAg
IGlmIChhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkgewotICAgICAgICAgICAgYWRkVG9H
cmFwaChvcCwgT3BJbmZvKGRhdGEpLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgZ2V0KFZpcnR1YWxS
ZWdpc3Rlcihhcmd1bWVudHMpKSwgdGhpc0NoaWxkKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
b3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIHRoaXNDaGlsZCwgYXJndW1l
bnRzQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgICAgICB9Ci0gICAg
ICAgIG9wID0gVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjsKKyAgICAgICAgb3AgPSBvcCA9
PSBUYWlsQ2FsbFZhcmFyZ3MgPyBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVyIDogVGFpbENh
bGxGb3J3YXJkVmFyYXJnc0lubGluZWRDYWxsZXI7CiAgICAgfQogCi0gICAgTm9kZSogY2FsbCA9
IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBjYWxsVGFy
Z2V0LCBnZXQoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpLCB0aGlzQ2hpbGQpOworICAgIE5v
ZGUqIGNhbGwgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgY2FsbFRhcmdldCwgdGhpc0NoaWxkLCBhcmd1bWVudHNDaGlsZCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQog
ICAgICAgICBzZXQocmVzdWx0UmVnLCBjYWxsKTsKQEAgLTE3NjcsOCArMTc3MSwxNCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgICAgICAgICAgZGF0
YS0+b2Zmc2V0ID0gYXJndW1lbnRzT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBkYXRhLT5s
aW1pdCA9IG1heE51bUFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bWFuZGF0
b3J5TWluaW11bSA9IG1hbmRhdG9yeU1pbmltdW07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChMb2FkVmFyYXJncywgT3BJbmZvKGRhdGEpLCBnZXQoYXJndW1l
bnRzQXJndW1lbnQpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbE9wID09IFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdW5ib3ggb3VyIGFyZ3VtZW50cyBoZXJlIHNpbmNl
IHRoYXQgd29uJ3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgYnkgdGhlIGFy
Z3VtZW50cyBvYmplY3QgY3JlYXRpb24gbm9kZSBzaW5jZSB0aGF0IG5vZGUgbWF5IG5vdCBleGlz
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdGljZUFyZ3VtZW50c1VzZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3J3YXJkVmFyYXJncywgT3BJbmZvKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKExvYWRWYXJhcmdzLCBPcEluZm8oZGF0YSksIGdldChhcmd1bWVudHNBcmd1bWVu
dCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIExvYWRWYXJhcmdzIG1heSBPU1IgZXhpdC4g
SGVuY2UsIHdlIG5lZWQgdG8ga2VlcCBhbGl2ZSBjYWxsVGFyZ2V0Tm9kZSwgdGhpc0FyZ3VtZW50
CiAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhcmd1bWVudHNBcmd1bWVudCBmb3IgdGhlIGJh
c2VsaW5lIEpJVC4gSG93ZXZlciwgd2Ugb25seSBuZWVkIGEgUGhhbnRvbSBmb3IKQEAgLTE5NjIs
NyArMTk3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRo
aXMgb25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxp
bmVkIGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KICAgICAgICAgaWYgKE5vZGUqIHRl
cm1pbmFsID0gbV9jdXJyZW50QmxvY2stPnRlcm1pbmFsKCkpCi0gICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+
b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJt
aW5hbCwgdGVybWluYWwtPm9wKCkgPT0gVGFpbENhbGwgfHwgdGVybWluYWwtPm9wKCkgPT0gVGFp
bENhbGxWYXJhcmdzIHx8IHRlcm1pbmFsLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3Mp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAg
ICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CkBAIC0yMDAzLDcgKzIw
MTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBtX2V4aXRP
SyA9IHRydWU7IC8vIE9yaWdpbiBjaGFuZ2VkLCBzbyBpdCdzIGZpbmUgdG8gZXhpdCBhZ2Fpbi4K
ICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwogICAgIGlmIChOb2RlKiB0ZXJtaW5hbCA9IG1f
Y3VycmVudEJsb2NrLT50ZXJtaW5hbCgpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFs
LCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2Fs
bFZhcmFyZ3MpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3Ao
KSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgdGVy
bWluYWwtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3Vy
cmVudEJsb2NrKTsKQEAgLTQ0NjgsNiArNDQ3OCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFy
Z3M6IHsKICAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5h
bGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwg
VGFpbENhbGxWYXJhcmdzLCBDYWxsTW9kZTo6VGFpbCk7CisgICAgICAgICAgICAvLyBWZXJpZnkg
dGhhdCBoYW5kbGVDYWxsKCksIHdoaWNoIGNvdWxkIGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCBk
aWRuJ3QgdHJhc2ggbV9jdXJyZW50SW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICBBU1NFUlQobV9j
dXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwYXJzZSBhbnkgZnVy
dGhlciBieXRlY29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwgZXhpdCB0aGUgZnVuY3Rpb24uCiAg
ICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4g
d2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3BfanVtcHQgdG8gdXBkYXRlIG1ldGFkYXRh
IGFuZCBjbGVhbgogICAgICAgICAgICAgLy8gdGhpbmdzIHVwLgpAQCAtNDQ3Nyw2ICs0NDg5LDIx
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgTEFTVF9PUENPREUob3BfdGFpbF9jYWxsX3ZhcmFyZ3MpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHM6IHsKKyAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CisgICAgICAgICAgICBUZXJt
aW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJlbnRJbnN0cnVjdGlv
biwgVGFpbENhbGxGb3J3YXJkVmFyYXJncywgQ2FsbE1vZGU6OlRhaWwpOworICAgICAgICAgICAg
Ly8gVmVyaWZ5IHRoYXQgaGFuZGxlQ2FsbCgpLCB3aGljaCBjb3VsZCBoYXZlIGlubGluZWQgdGhl
IGNhbGxlZSwgZGlkbid0IHRyYXNoIG1fY3VycmVudEluc3RydWN0aW9uLgorICAgICAgICAgICAg
QVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAg
ICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyB0ZXJtaW5hbCB0aGVuIHdlIHNob3VsZCBub3QgcGFy
c2UgYW55IGZ1cnRoZXIgYnl0ZWNvZGVzIGFzIHRoZSBUYWlsQ2FsbCB3aWxsIGV4aXQgdGhlIGZ1
bmN0aW9uLgorICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgbm90IHRlcm1pbmFsLCBob3dl
dmVyLCB0aGVuIHdlIHdhbnQgdGhlIHN1YnNlcXVlbnQgb3BfcmV0L29wX2p1bXB0IHRvIHVwZGF0
ZSBtZXRhZGF0YSBhbmQgY2xlYW4KKyAgICAgICAgICAgIC8vIHRoaW5ncyB1cC4KKyAgICAgICAg
ICAgIGlmICh0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCkgeworICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiB7CiAg
ICAgICAgICAgICBoYW5kbGVWYXJhcmdzQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVj
dFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDIyNjdjM2U4ZDhiY2M1NzEyNDE4MjgwNmI0
ZjYyNTJlMzAxMzM5ZmMuLjI1MTI4NDJjMTc1NzI3MzBhZjUwMjI1YmRjZjY2ZTE0Nzc0MWM1OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAg
LTIwMCw2ICsyMDAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY29u
c3RydWN0OgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxs
X3ZhcmFyZ3M6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CiAgICAg
Y2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJn
dW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBhMzZjM2E0YTllZWNjNWVl
ZGI5NjliOTRiM2QxOGQ5NWJhMjc5ODMwLi44ZjdhYTE1ZjdkNDUyNTQ1YWJlNzI3NDQ2YjUzZGNi
MWIxZTVhMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKQEAgLTEzMjEsNyArMTMyMSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIEZvcndhcmRW
YXJhcmdzOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICAgICAgY2FzZSBQdXRIaW50OgpAQCAt
MTUyOSw2ICsxNTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3NJbmxpbmVkQ2FsbGVy
OgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgorICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdz
OgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOZXdPYmpl
Y3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDNlNWE4MzMy
YzExYWYxZDE5ZTRhZTRkNGE1MWRmOTY0OWFkZjBhZDAuLmFlOWU5YzA2ZmQ2NWQyN2RmZDY2YjIw
ZjAwZTYzYmRkMmU4NWUwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xMTUsNyArMTE1LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2Ug
VGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzSW5saW5lZENhbGxlcjogewotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUgPSBtX25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOworCisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAg
ICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgICAgIGlubGluZUNh
bGxGcmFtZSA9IG1fbm9kZS0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBvdXRlcm1v
c3QgYXJndW1lbnRzIGFuZCBhcmd1bWVudCBjb3VudC4KICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLSA+IDE7
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAzMGMzZjgzMzBkNjVjZDU4MTQ0MTU0NzcwNTA2
ZmQxMDVhOWQxN2FhLi4yZDU4YjE2YTEyMmJhNDU2NWFiYTcyZWZmYWMyNDQ3MDNjYmMzZWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTcyLDcgKzk3Miw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6Ci0g
ICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKQEAgLTEwNTUsNiArMTA1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Wm9tYmllSGludDoKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFy
Z3M6CisgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29weVJlc3Q6
CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwNTgx
YWNkMjM4MDE5MmI0ZGE2ZDg2MDU2OGFkNzFjZjVlNDZkMmIzLi5lYzA5MzUwYTI5ZWU1MGQ0OWVk
NDk3OTdlNWQ2MjA3ZWYzMGVhM2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNTk0Niw4ICs1OTQ2LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKiBub2RlKQogewogICAgIExvYWRW
YXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmxvYWRWYXJhcmdzRGF0YSgpOwotICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgIAorICAgIElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lOworICAgIGlmIChub2RlLT5jaGlsZDEoKSkKKyAgICAgICAgaW5saW5lQ2FsbEZy
YW1lID0gbm9kZS0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Cisg
ICAgZWxzZQorICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOworCiAgICAgR1BSVGVtcG9yYXJ5IGxlbmd0aCh0aGlzKTsKICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyBsZW5ndGhHUFIgPSBs
ZW5ndGguZ3ByKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2YjM4NjJhOWQyZDM1YjViMmI0NzcwNzgzZjA1MjY3
MGVlYjU2NjI2Li40NTJiNDJjZWJiOTgxNWZmMGViNDQ3MTdlZTgzZGUxMjk4ZGZmZjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTcyOSw3ICs3MjksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKGlzRm9yd2FyZFZhcmFyZ3MpIHsKICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIHVz
ZShub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSMTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMjsKQEAgLTc0MSw3ICs3NDIs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobnVtVXNlZFN0YWNrU2xv
dHMpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2U7Ci0gICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShtX2ppdCwg
c2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIG5vZGUt
PmNoaWxkMigpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZh
ckFyZ09mZnNldCwgc2xvd0Nhc2UpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWU7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAg
ICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKG1faml0LCBzY3JhdGNoR1BSMiwg
c2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBk
YXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93Rm9yVmFyYXJncyk7CkBAIC03NTksNyArNzY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGF1dG8gbG9hZEFyZ3VtZW50c0dQ
UiA9IFsmXSAoR1BSUmVnIHJlc2VydmVkR1BSKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc2Vy
dmVkR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICAgICAgICAgIGxvY2socmVzZXJ2
ZWRHUFIpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50cyh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnRz
KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudHNUYWdHUFIg
PSBhcmd1bWVudHMudGFnR1BSKCk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzUGF5bG9hZEdQ
UiA9IGFyZ3VtZW50cy5wYXlsb2FkR1BSKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc2VydmVk
R1BSICE9IEludmFsaWRHUFJSZWcpCkBAIC03OTgsNyArODA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdGhlIGFyZ3VtZW50cyBhcnJheSBhbnltb3JlLgogICAgICAgICBpZiAoaXNWYXJhcmdz
KQotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHVzZShub2Rl
LT5jaGlsZDMoKSk7CiAKICAgICAgICAgLy8gTm93IHNldCB1cCB0aGUgInRoaXMiIGFyZ3VtZW50
LgogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzQXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggNzQ0MTM5YmUxZjdiNzRlZGFmYWMwMjM0MWZkNGRhODg3MjEwNDczMS4uMTdh
ZDQ4NDQwNTFhZTkxYzNlOWUyZjIwNWQ3NjM4MzQ1MjQ0MmU0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC03MDEsNyArNzAx
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAg
CiAgICAgICAgIGlmIChpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjE7CiAgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUjI7CkBAIC03MTMsNyArNzE0LDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKG51bVVzZWRTdGFja1Nsb3RzKSwgc2NyYXRjaEdQUjIpOwog
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlOwotICAgICAgICAgICAg
ZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UobV9qaXQsIHNjcmF0Y2hHUFIyLCBzY3JhdGNo
R1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2RlLT5jaGlsZDIoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNl
KTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZSA9IG5vZGUtPmNoaWxkMygpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBlbWl0U2V0dXBWYXJh
cmdzRnJhbWVGYXN0Q2FzZShtX2ppdCwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNo
R1BSMiwgc2NyYXRjaEdQUjMsIGlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZz
ZXQsIHNsb3dDYXNlKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CiAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpOwpA
QCAtNzMwLDcgKzczNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBhdXRvIGxvYWRBcmd1bWVudHNHUFIgPSBbJl0gKEdQUlJlZyByZXNl
cnZlZEdQUikgewogICAgICAgICAgICAgICAgIGlmIChyZXNlcnZlZEdQUiAhPSBJbnZhbGlkR1BS
UmVnKQogICAgICAgICAgICAgICAgICAgICBsb2NrKHJlc2VydmVkR1BSKTsKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHModGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50cyh0aGlzLCBub2RlLT5jaGlsZDMo
KSk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzR1BSID0gYXJndW1lbnRzLmdwcigpOwogICAg
ICAgICAgICAgICAgIGlmIChyZXNlcnZlZEdQUiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAg
ICAgICAgICAgICB1bmxvY2socmVzZXJ2ZWRHUFIpOwpAQCAtNzY3LDEwICs3NzMsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdGhlIGFyZ3VtZW50cyBhcnJheSBhbnltb3JlLgogICAgICAgICBp
ZiAoaXNWYXJhcmdzKQotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHVzZShub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgLy8gTm93IHNldCB1cCB0aGUgInRo
aXMiIGFyZ3VtZW50LgotICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzQXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzQXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJSZWcgdGhpc0FyZ3VtZW50R1BSID0gdGhp
c0FyZ3VtZW50LmdwcigpOwogICAgICAgICB0aGlzQXJndW1lbnQudXNlKCk7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHAKaW5kZXggNTM1ZTc5ZjMyYTc2YWI2MzFiOWY0MTEwZTc5N2I1Njg4YWRiMDE0
OC4uZTNjNTJhY2E5ZGExM2ZjZDgzYzE4ZTAxYjg1NmY4YTQ4MDk4OWU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ29uc3Ry
dWN0VmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAg
ICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBjYW5kaWRhdGUgfHwgbm9kZS0+Y2hpbGQzKCkgPT0gY2FuZGlk
YXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSB8
fCBub2RlLT5jaGlsZDIoKSA9PSBjYW5kaWRhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0
ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzQsMjUg
KzI3NCwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDMoKSAhPSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENhbGxGb3J3YXJkVmFyYXJncyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdFZhcmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigp
ICE9IGNhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkgIT0gY2Fu
ZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKSAhPSBjYW5kaWRhdGUpCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMygpICE9IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoVGFp
bENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKSAhPSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRhaWxDYWxsRm9yd2FyZFZh
cmFyZ3NJbmxpbmVkQ2FsbGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlYWNmMjRhNjBjMzI5
NjQ1MTgxYjg0ZTQ2ZGMzNTA5ZThmZWJmOWNlLi40MDM4MGY0ZmY4MzZkNGUwZjAwYjM2NDRjOTgz
ZjVmZjI1ZTA2MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC01MTk0LDcgKzUxOTQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgTFZhbHVlIGpzQ2FsbGVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHRoaXNBcmcgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBMVmFsdWUgdGhpc0FyZyA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUganNBcmd1bWVudHMg
PSBudWxscHRyOwogICAgICAgICBib29sIGZvcndhcmRpbmcgPSBmYWxzZTsKQEAgLTUyMDQsNyAr
NTIwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAg
ICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3Ry
dWN0VmFyYXJnczoKLSAgICAgICAgICAgIGpzQXJndW1lbnRzID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJh
cmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CkBAIC01MzU3LDcgKzUz
NTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOwotICAgICAgICAgICAgICAg
ICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShqaXQsIHNjcmF0Y2hHUFIyLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2RlLT5jaGlsZDIoKS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dD
YXNlKTsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmNoaWxkMygpLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJh
bWVGYXN0Q2FzZShqaXQsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNj
cmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93
Q2FzZSk7CiAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBq
aXQuanVtcCgpOwogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZqaXQpOwpAQCAt
NTUwMSw3ICs1NTA2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFy
Z3MoKQogICAgIHsKICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ub2RlLT5sb2Fk
VmFyYXJnc0RhdGEoKTsKLSAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBtX25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPmNoaWxk
MSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gZ2V0QXJndW1lbnRz
TGVuZ3RoKGlubGluZUNhbGxGcmFtZSkudmFsdWU7CiAgICAgICAgIExWYWx1ZSBsZW5ndGhJbmNs
dWRpbmdUaGlzID0gbV9vdXQuYWRkKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQzMigxIC0gZGF0YS0+
b2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCAwNDc0MGNjMDZhMTA5OGNiODRiZjZiOTQ4ZmY1ZmY5OGNkZTYyNWRl
Li4yMDZlYzZiNDI1YTY5NWE0Y2FiMjllZDE2NzAyNzQwNzQwNjk5YzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTI0MCw2
ICsyNDAsMTYgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICByZXR1cm4gbGVuZ3RoOwog
fQogCit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpCit7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhjYWxsRnJhbWUsIG51
bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKKyAgICBpZiAoIXN0YWNrLT5lbnN1cmVDYXBh
Y2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKQorICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogdW5zaWdu
ZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNTdGFjayogc3Rh
Y2ssIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9mVmFy
YXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOwpAQCAtMzAwLDYg
KzMxMCwyMiBAQCB2b2lkIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsCiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRU
aGlzVmFsdWUodGhpc1ZhbHVlKTsKIH0KIAordm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFt
ZShDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3Qg
bGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPT0gZXhlY0NhbGxlci0+YXJndW1lbnRDb3Vu
dCgpKTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBleGVjQ2FsbGVyLT5hcmd1bWVudE9mZnNldCgw
KSAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGV4ZWNDYWxsZWUpICsgb2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNoYXIqPihleGVjQ2FsbGVy
KSArIG9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgZXhlY0NhbGxlZS0+
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobGVuZ3RoICsgMSk7Cit9CisKK3ZvaWQgc2V0
dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVuZ3Ro
KQoreworICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKGV4ZWNDYWxsZXIsIGV4ZWNDYWxs
ZWUsIGxlbmd0aCk7CisgICAgZXhlY0NhbGxlZS0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9
CisKKyAgICAKKwogSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZNJiB2bSkKICAgICA6IG1fdm0o
dm0pCiAgICAgLCBtX3N0YWNrKHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBkNzkwNjlhOTY4NjRhNTYwMmExZmQ5MTc3Yzc3YWMy
YTZhMTQ4MzBjLi5mYjhhMGQ3NmYyZjEyZjlkZTA4Zjk1Yjg3N2M4N2JiZGZkNjkyYmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAt
MjgyLDkgKzI4MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogZXhlYywgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QXJndW1lbnRzID0gMHgx
MDAwMDsKICAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogZXhlYywg
SlNTdGFjayosIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywg
dWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIHVuc2lnbmVkIHNpemVGcmFtZUZvckZv
cndhcmRBcmd1bWVudHMoQ2FsbEZyYW1lKiBleGVjLCBKU1N0YWNrKiwgdW5zaWduZWQgbnVtVXNl
ZFN0YWNrU2xvdHMpOwogICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBleGVjQ2FsbGVy
LCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBzb3VyY2UsIHVpbnQz
Ml90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKICAgICB2b2lkIHNldHVwVmFyYXJnc0ZyYW1l
KENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7CiAg
ICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1lKiBleGVjQ2FsbGVy
LCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3Vt
ZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7CisgICAg
dm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENh
bGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKKyAgICB2b2lkIHNldHVwRm9y
d2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxG
cmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0aCk7CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDk1YjFhYzEwZTcwYTM2MGU3ZWM2NDBjODFkYmQ5YWU1ZmUyZjJmY2QuLjNkZTJlNDVmNzc1ZWMz
ZWVmM2RmZmFjNTQyMGU2ZjQxNjZkNTBhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTIxNSw2ICsyMTUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9jYWxsX2V2YWwpCiAgICAgICAgIERFRklORV9PUChvcF9jYWxs
X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfdmFyYXJncykKKyAgICAg
ICAgREVGSU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgREVG
SU5FX09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0Y2gp
CiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCkBAIC00MTUsNiArNDE2LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2NhbGxfZXZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NhbGxfdmFy
YXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RhaWxfY2FsbF92YXJhcmdzKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF90b190aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODJlODMxZTQ0
ZDBhYzk5YTkzNThmZmQ0OGRiODc1N2ZhNzEyY2M0MC4uZjU0NjU4NTczZWUzNWMwNTNhMWJkN2Vk
ZmY0MzdiZmFjZWFlNjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0zMTcsNyArMzE3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKE9wY29k
ZUlELCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKICAgICAgICAg
dm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsK
LSAgICAgICAgdm9pZCBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoSW5zdHJ1Y3Rpb24qLCBDYWxs
TGlua0luZm8qKTsKKyAgICAgICAgdm9pZCBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2Rl
SUQsIEluc3RydWN0aW9uKiwgQ2FsbExpbmtJbmZvKik7CiAgICAgICAgIHZvaWQgY29tcGlsZUNh
bGxFdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nh
c2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTQ4Myw2ICs0ODMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwpAQCAtNjE0LDYgKzYxNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGxfZXZhbChJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0
cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggNTk5Zjg2YzhkNmViNDg5YmM3MjJkNDY0ODhjN2IwMDBlZDliMjg3OS4uN2VkZmNjMDhi
ODI5N2ZkZmM0NmI1ZjkxM2JiNjllYmJhMTMwY2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJlc3Vs
dChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZvKQordm9pZCBKSVQ6OmNvbXBpbGVTZXR1
cFZhcmFyZ3NGcmFtZShPcGNvZGVJRCBvcGNvZGUsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
Q2FsbExpbmtJbmZvKiBpbmZvKQogewogICAgIGludCB0aGlzVmFsdWUgPSBpbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ3VtZW50cyA9IGluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZDsKQEAgLTYxLDEyICs2MSwyMiBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIGludCBm
aXJzdFZhckFyZ09mZnNldCA9IGluc3RydWN0aW9uWzZdLnUub3BlcmFuZDsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgLWZpcnN0RnJlZVJlZ2lzdGVyLCBm
aXJzdFZhckFyZ09mZnNldCk7CisgICAgWl9KSVRPcGVyYXRpb25fRUpaWiBzaXplT3BlcmF0aW9u
OworICAgIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAg
ICAgICBzaXplT3BlcmF0aW9uID0gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50
czsKKyAgICBlbHNlCisgICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRpb25TaXplRnJhbWVG
b3JWYXJhcmdzOworICAgIGNhbGxPcGVyYXRpb24oc2l6ZU9wZXJhdGlvbiwgcmVnVDEsIC1maXJz
dEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KC1maXJzdEZyZWVSZWdpc3RlciksIHJlZ1QxKTsKICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKCp0
aGlzLCByZXR1cm5WYWx1ZUdQUiwgZmFsc2UsIHJlZ1QxLCByZWdUMSk7CiAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMigtKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2Yodm9pZCopKSkpLCByZWdU
MSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJn
dW1lbnRzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NG
cmFtZSwgcmVnVDEsIHJlZ1QyLCBmaXJzdFZhckFyZ09mZnNldCwgcmVnVDApOworICAgIEZfSklU
T3BlcmF0aW9uX0VGSlpaIHNldHVwT3BlcmF0aW9uOworICAgIGlmIChvcGNvZGUgPT0gb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAgICAgICBzZXR1cE9wZXJhdGlvbiA9IG9wZXJh
dGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lOworICAgIGVsc2UKKyAgICAgICAgc2V0dXBP
cGVyYXRpb24gPSBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZTsKKyAgICBjYWxsT3BlcmF0aW9u
KHNldHVwT3BlcmF0aW9uLCByZWdUMSwgcmVnVDIsIGZpcnN0VmFyQXJnT2Zmc2V0LCByZWdUMCk7
CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgLy8gUHJvZmlsZSB0aGUg
YXJndW1lbnQgY291bnQuCkBAIC0xNDcsMTEgKzE1NywxMyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25l
ZCBjYQogICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RF
X0xFTkdUSChvcF9jb25zdHJ1Y3RfdmFyYXJncyksIGNhbGxfYW5kX2NvbnN0cnVjdF92YXJhcmdz
X29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RF
X0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbCksIGNhbGxfYW5k
X3RhaWxfY2FsbF9vcGNvZGVzX211c3RfYmVfc2FtZV9sZW5ndGgpOwogICAgIENPTVBJTEVfQVNT
RVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxf
dmFyYXJncyksIGNhbGxfYW5kX3RhaWxfY2FsbF92YXJhcmdzX29wY29kZXNfbXVzdF9iZV9zYW1l
X2xlbmd0aCk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBP
UENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyksIGNhbGxfYW5kX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19vcGNvZGVzX211c3RfYmVfc2FtZV9sZW5ndGgpOwor
CiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9jYWxsX2V2
YWwpCiAgICAgICAgIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAg
aWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF9jb25zdHJ1
Y3RfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykKLSAgICAgICAg
Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKGluc3RydWN0aW9uLCBpbmZvKTsKKyAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJh
cmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgY29tcGlsZVNldHVwVmFyYXJn
c0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAgICAgaW50IHJl
Z2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAgLTE3MSw4ICsxODMs
OCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gaW5zdHJ1Y3Rpb24gLSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAg
ICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KS5i
aXRzKCk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhj
YWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUuCiAKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUu
CiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFj
azo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkg
ewpAQCAtMjExLDcgKzIyMyw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mp
IHsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7CiAgICAgICAgIGVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXMoKTsKICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9
IGVtaXROYWtlZFRhaWxDYWxsKCk7CkBAIC0yMzcsNyArMjQ5LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBWZWMKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIGlmIChvcGNvZGVJRCA9
PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAg
aWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
dmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxMaW5rSW5mbyks
IHJlZ1QyKTsKQEAgLTI4Miw2ICsyOTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjb21waWxlT3BD
YWxsKG9wX3RhaWxfY2FsbF92YXJhcmdzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGNvbXBpbGVP
cENhbGwob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVj
dF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGls
ZU9wQ2FsbChvcF9jb25zdHJ1Y3RfdmFyYXJncywgY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOwpAQCAtMzE2LDYgKzMzMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPAogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF90YWlsX2NhbGxfdmFyYXJncywg
Y3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKG9wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cywgY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOworfQogICAgIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCAxNzQ1ZDZlMjM3Y2MwMDkyZDM2NmQzZjE3YjBlODVjNjQxNmZlYmExLi4xOWYy
OGYzY2M1ZTA4Njc0MDcwMDIxMTM3ZWQzMGVjYmY2MGUxMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE5MTcsNiArMTkxNywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlc3VsdCkpOwogfQogCitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yRm9yd2FyZEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlLCBpbnQz
Ml90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIEpT
U3RhY2sqIHN0YWNrID0gJmV4ZWMtPmludGVycHJldGVyKCktPnN0YWNrKCk7CisgICAgcmV0dXJu
IHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoZXhlYywgc3RhY2ssIG51bVVzZWRTdGFja1Ns
b3RzKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZh
cmFyZ3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBp
bnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xOTI2LDYgKzE5MzQsMTYgQEAgaW50MzJfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gc2l6ZUZyYW1lRm9yVmFyYXJncyhleGVjLCBzdGFj
aywgYXJndW1lbnRzLCBudW1Vc2VkU3RhY2tTbG90cywgZmlyc3RWYXJBcmdPZmZzZXQpOwogfQog
CitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRz
RnJhbWUoRXhlY1N0YXRlKiBleGVjLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIHVu
c2lnbmVkIG9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50T2Zmc2V0KDApICogc2l6ZW9mKFJlZ2lzdGVy
KTsKKyAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obmV3Q2FsbEZyYW1lKSArIG9m
ZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZXhlYykgKyBvZmZzZXQsIGxlbmd0aCAqIHNp
emVvZihSZWdpc3RlcikpOworICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMobGVuZ3RoICsgMSk7CisgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKK30KKwogQ2Fs
bEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKEV4ZWNTdGF0
ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRB
cmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMyX3QgbGVuZ3RoKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IGE5NzI2ZWJkNmI2ODE5ZGVhZDZkY2M0ZTNhNTAwYmQ5OTFlZDAwMjQu
LjE0ZmEwMzg4ZGQ1Y2FmYjhmMzJmMDgyYjEyYzkyMjdiZmRjYmQzZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zODAsNyArMzgwLDkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1YKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdl
dCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1l
cyhFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdURl9JTlRFUk5BTDsKK2ludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCkgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
YXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0KSBXVEZfSU5URVJOQUw7CitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoRXhlY1N0YXRlKiwg
Q2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA0MGY1MWExYWI2ZWE2ZDZmMGY4YmM0NmU5YWVmNjdlZTA1NjcxMTRk
Li5jMzliNDFmNTk0OTlkOTVjMmE3ZjkzOTI1NTA3NzBkODMwNjk2NzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEzNjMsNDcgKzEz
NjMsNjkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3Zh
cmFyZ3MpCiAgICAgTExJTlRfUkVUVVJOX0NBTExFRV9GUkFNRShleGVjQ2FsbGVlKTsKIH0KIAot
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncykKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl9mb3J3YXJkX2FyZ3VtZW50cykKIHsK
LSAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKKyAgICBMTElOVF9CRUdJTigpOwogICAgIC8v
IFRoaXMgbmVlZHMgdG86Ci0gICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29t
cGlsZSBpdCBpZiBuZWNlc3NhcnkuCi0gICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5l
IGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCi0gICAgCi0gICAg
SlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Ci0gICAgCi0g
ICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gdm0ubmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWU7Cisg
ICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRo
ZSBjdXJyZW50IGZyYW1lLgorCisgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSAtcGNb
NV0udS5vcGVyYW5kOwogCi0gICAgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4
ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUo
KSwgcGNbNl0udS5vcGVyYW5kLCB2bS52YXJhcmdzTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBhcmd1
bWVudHMgPSBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKGV4ZWMsICZ2bS5pbnRlcnByZXRl
ci0+c3RhY2soKSwgbnVtVXNlZFN0YWNrU2xvdHMpOwogICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhD
RVBUSU9OKGV4ZWMsIGV4ZWMpOwotICAgIAotICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNT
dGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7Ci0gICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVy
RnJhbWUoZXhlYyk7Ci0gICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7Ci0gICAgCi0gICAgcmV0
dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUp
OworCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGV4
ZWMsIG51bVVzZWRTdGFja1Nsb3RzLCBhcmd1bWVudHMgKyAxKTsKKworICAgIHZtLnZhcmFyZ3NM
ZW5ndGggPSBhcmd1bWVudHM7CisgICAgdm0ubmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWUgPSBleGVj
Q2FsbGVlOworCisgICAgTExJTlRfUkVUVVJOX0NBTExFRV9GUkFNRShleGVjQ2FsbGVlKTsKIH0K
LSAgICAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfdmFyYXJncykK
KworZW51bSBjbGFzcyBTZXRBcmd1bWVudHNXaXRoIHsKKyAgICBPYmplY3QsCisgICAgQ3VycmVu
dEFyZ3VtZW50cworfTsKKworaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJhcmdzU2V0dXAo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCwgU2V0QXJndW1lbnRzV2l0aCBzZXQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BD
KCk7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBj
YWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxl
IG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4K
LSAgICAKKwogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOwotICAgIAorCiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gdm0ubmV3Q2FsbEZyYW1l
UmV0dXJuVmFsdWU7Ci0gICAgCi0gICAgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKGV4ZWMs
IGV4ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFs
dWUoKSwgcGNbNl0udS5vcGVyYW5kLCB2bS52YXJhcmdzTGVuZ3RoKTsKLSAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBleGVjKTsKLSAgICAKLSAgICBleGVjQ2FsbGVlLT51bmNo
ZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworCisgICAgaWYgKHNldCA9
PSBTZXRBcmd1bWVudHNXaXRoOjpPYmplY3QpIHsKKyAgICAgICAgc2V0dXBWYXJhcmdzRnJhbWVB
bmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDQpLmpzVmFsdWUoKSwgcGNbNl0udS5vcGVyYW5kLCB2bS52YXJhcmdzTGVuZ3RoKTsK
KyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CisgICAgfSBl
bHNlCisgICAgICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBl
eGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgdm0udmFyYXJnc0xlbmd0aCk7CisK
ICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWMtPnNl
dEN1cnJlbnRWUEMocGMpOwotICAgIAotICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwg
cGMsIENvZGVGb3JDb25zdHJ1Y3QsIGNhbGxlZUFzVmFsdWUpOworCisgICAgcmV0dXJuIHNldFVw
Q2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSk7CiB9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpCit7CisgICAgcmV0dXJuIHZhcmFy
Z3NTZXR1cChleGVjLCBwYywgQ29kZUZvckNhbGwsIFNldEFyZ3VtZW50c1dpdGg6Ok9iamVjdCk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMpCit7CisgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cChleGVjLCBwYywgQ29kZUZvckNh
bGwsIFNldEFyZ3VtZW50c1dpdGg6OkN1cnJlbnRBcmd1bWVudHMpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpCit7CisgICAgcmV0dXJuIHZh
cmFyZ3NTZXR1cChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCwgU2V0QXJndW1lbnRzV2l0aDo6
T2JqZWN0KTsKK30KKwogICAgIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxf
ZXZhbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
aW5kZXggYmFmYjFjOTk2MDIxZWZmZmNhMGY3NGNjYjQzMDJjNjkyOGJjYWVlMS4uNTkwNWY0Nzdi
YjA1NjM0NWQ5YzYyM2Y4OWRlNTJkNmQ1YzhjZTljYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTEwNiw3ICsxMDYsOSBAQCBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl9mb3J3YXJkX2FyZ3VtZW50cyk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncyk7CitMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92
YXJhcmdzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9ldmFs
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGVhcl9vZmZfYXJndW1l
bnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCA0YjJjNDk2Y2I5ZTIzZWQxNzMxNDVlNjg5MDIyNjYzZjNlZGFiNzEx
Li4wNjY1NTM1NWI5ODFkNzE0MTljNzdiNzQ0MThiMjhhNTEzNDhkODkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03
NDUsNiArNzQ1LDE1IEBAIG1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAx
LCB0ZW1wMiwgdGVtcDMpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAog
Cisjc3AgcG9pbnRzIHRvIGNmciBhbmQgd2UgZG9uJ3QgbmVlZCBhcml0eSBmaXh1cAorbWFjcm8g
cHJlcGFyZUZvclRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhjYWxsZWUsIHRlbXAxLCB0ZW1wMiwg
dGVtcDMpCisgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQorCisgICAgYWRkcCBQ
dHJTaXplLCBzcAorICAgIGxvYWRwIFtjZnJdLCBjZnIKKyAgICBqbXAgY2FsbGVlCitlbmQKKwog
IyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZQogbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNh
bGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlM
TEludCgpCkBAIC03NTYsNyArNzY1LDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMykKICAgICBtb3ZlIHRlbXAxLCB0ZW1wMgogCiAubm9Bcml0
eUZpeHVwOgotICAgICMgV2UgYXNzdW1lIDwgMl4yOCBhcmd1bWVudHMKKyAgICAjIFdlIGFzc3Vt
ZSA8IDJeMjggYXJndW1lbnRzIHRlbXAyIGlzIGFyZ3VtZW50IGNvdW50CiAgICAgbXVsaSBTbG90
U2l6ZSwgdGVtcDIKICAgICBhZGRpIFN0YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRl
clNpemUsIHRlbXAyCiAgICAgYW5kaSB+U3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMgpAQCAtMTUy
Niw4ICsxNTM1LDggQEAgX2xsaW50X29wX2NvbnN0cnVjdDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY29uc3RydWN0LCBwcmVwYXJlRm9yUmVndWxh
ckNhbGwpCiAKLW1hY3JvIGRvQ2FsbFZhcmFyZ3Moc2xvd1BhdGgsIHByZXBhcmVDYWxsKQotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCitt
YWNybyBkb0NhbGxWYXJhcmdzKGZyYW1lU2xvd1BhdGgsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
KyAgICBjYWxsU2xvd1BhdGgoZnJhbWVTbG93UGF0aCkKICAgICBicmFuY2hJZkV4Y2VwdGlvbihf
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKICAgICAjIGNhbGxlZUZyYW1l
IGluIHIxCiAgICAgaWYgSlNWQUxVRTY0CkBAIC0xNTQ2LDE4ICsxNTU1LDI3IEBAIGVuZAogCiBf
bGxpbnRfb3BfY2FsbF92YXJhcmdzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBkb0NhbGxW
YXJhcmdzKF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNh
bGwpCisgICAgZG9DYWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3Zh
cmFyZ3MsIF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNh
bGwpCiAKIF9sbGludF9vcF90YWlsX2NhbGxfdmFyYXJnczoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKICAgICAjIFdlIGxpZSBhbmQgcGVy
Zm9ybSB0aGUgdGFpbCBjYWxsIGluc3RlYWQgb2YgcHJlcGFyaW5nIGl0IHNpbmNlIHdlIGNhbid0
CiAgICAgIyBwcmVwYXJlIHRoZSBmcmFtZSBmb3IgYSBjYWxsIG9wY29kZQotICAgIGRvQ2FsbFZh
cmFyZ3MoX2xsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MsIHByZXBhcmVGb3JUYWlsQ2FsbCkK
KyAgICBkb0NhbGxWYXJhcmdzKF9sbGludF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJn
cywgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MsIHByZXBhcmVGb3JUYWlsQ2FsbCkKKwor
CitfbGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgICMgV2UgbGllIGFu
ZCBwZXJmb3JtIHRoZSB0YWlsIGNhbGwgaW5zdGVhZCBvZiBwcmVwYXJpbmcgaXQgc2luY2Ugd2Ug
Y2FuJ3QKKyAgICAjIHByZXBhcmUgdGhlIGZyYW1lIGZvciBhIGNhbGwgb3Bjb2RlCisgICAgZG9D
YWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX2ZvcndhcmRfYXJndW1l
bnRzLCBfbGxpbnRfc2xvd19wYXRoX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgcHJlcGFy
ZUZvclRhaWxDYWxsKQorCiAKIF9sbGludF9vcF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgZG9DYWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVj
dF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNhbGwpCisgICAgZG9DYWxsVmFyYXJncyhfbGxp
bnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MsIF9sbGludF9zbG93X3BhdGhfY29u
c3RydWN0X3ZhcmFyZ3MsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogCiBfbGxpbnRfb3BfY2Fs
bF9ldmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWRhYTRjNmZk
OTI2NDM2YzQwYTA3ZjczYTkxZmYyM2MxMTY3NmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMK
QEAgLTAsMCArMSwxMzEgQEAKKy8vIFRoaXMgaXMgcHJldHR5IGJhZCBidXQgSSBuZWVkIGEgcHJp
dmF0ZSBuYW1lLgordmFyIHB1dEZ1bmNUb1ByaXZhdGVOYW1lID0gY3JlYXRlQnVpbHRpbihgKGZ1
bmN0aW9uKGZ1bmMpIHsgQGFycmF5SXRlcmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKK3B1dEZ1bmNU
b1ByaXZhdGVOYW1lKGZ1bmN0aW9uIChhLGIpIHsgcmV0dXJuIGI7IH0pCisKK2Z1bmN0aW9uIGNy
ZWF0ZVRhaWxDYWxsRm9yd2FyZGluZ0Z1bmNXaXRoKGJvZHksIHRoaXNWYWx1ZSkgeworICAgIHJl
dHVybiBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKGEpIHsKKyAgICAgICAgInVzZSBzdHJpY3Qi
OworCisgICAgICAgICR7Ym9keX0KKworICAgICAgICByZXR1cm4gQHRhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cyhAYXJyYXlJdGVyYXRvcklzRG9uZSwgJHt0aGlzVmFsdWV9KTsKKyAgICB9KWApOwor
fQorCit2YXIgZm9vID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIsICJAdW5k
ZWZpbmVkIik7CisKK2Z1bmN0aW9uIGJheigpIHsKKyAgICByZXR1cm4gZm9vLmNhbGwodHJ1ZSwg
Nyk7Cit9Citub0lubGluZShiYXopOworCisKKwordmFyIGZvb05vSW5saW5lID0gY3JlYXRlVGFp
bENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIsICJAdW5kZWZpbmVkIik7Citub0lubGluZShmb28p
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYgKGJhei5jYWxs
KCkgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIGlmIChm
b29Ob0lubGluZS5jYWxsKHVuZGVmaW5lZCwgMykgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworfQorCitwdXRGdW5jVG9Qcml2YXRlTmFtZShmdW5jdGlvbiAoKSB7
ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHsgdGhpc1ZhbHVlOiB0aGlzLCBhcmd1bWVudHNWYWx1ZTog
YXJndW1lbnRzfTsgIH0pOwordmFyIGZvbzIgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5j
V2l0aCgiIiwgInRoaXMiKTsKK3ZhciBmb29OSTIgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdG
dW5jV2l0aCgiIiwgInRoaXMiKTsKK25vSW5saW5lKGZvb05JMik7CisKK2Z1bmN0aW9uIGJhejIo
KSB7CisgICAgcmV0dXJuIGZvbzIuY2FsbCh0cnVlLCA3KTsKK30KK25vSW5saW5lKGJhejIpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgbGV0IHJlc3VsdCA9IGZv
bzIuY2FsbCh0cnVlLCA3KTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1ZSB8fCBy
ZXN1bHQuYXJndW1lbnRzVmFsdWUubGVuZ3RoICE9PSAxIHx8IHJlc3VsdC5hcmd1bWVudHNWYWx1
ZVswXSAhPT0gNykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGJh
ejIuY2FsbCgpOworICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5h
cmd1bWVudHNWYWx1ZS5sZW5ndGggIT09IDEgfHwgcmVzdWx0LmFyZ3VtZW50c1ZhbHVlWzBdICE9
PSA3KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0gZm9vTkkyLmNh
bGwodHJ1ZSwgNyk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0
LmFyZ3VtZW50c1ZhbHVlLmxlbmd0aCAhPT0gMSB8fCByZXN1bHQuYXJndW1lbnRzVmFsdWVbMF0g
IT09IDcpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKK30KKworcHV0RnVuY1RvUHJpdmF0
ZU5hbWUoZnVuY3Rpb24gKCkgeyAidXNlIHN0cmljdCI7IHJldHVybiB0aGlzOyAgfSk7Cit2YXIg
Zm9vMyA9IGNyZWF0ZVRhaWxDYWxsRm9yd2FyZGluZ0Z1bmNXaXRoKCIiLCAieyB0aGlzVmFsdWU6
IHRoaXMsIG90aGVyVmFsdWU6ICdoZWxsbyd9ICIpOwordmFyIGZvb05JMyA9IGNyZWF0ZVRhaWxD
YWxsRm9yd2FyZGluZ0Z1bmNXaXRoKCIiLCAieyB0aGlzVmFsdWU6IHRoaXMsIG90aGVyVmFsdWU6
ICdoZWxsbyd9ICIpOworbm9JbmxpbmUoZm9vTkkzKTsKK2Z1bmN0aW9uIGJhejMoKSB7CisgICAg
cmV0dXJuIGZvbzMuY2FsbCh0cnVlLCA3KTsKK30KK25vSW5saW5lKGJhejMpOworCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgbGV0IHJlc3VsdCA9IGZvbzMuY2FsbCh0
cnVlLCA3KTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1ZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGJhejMuY2FsbCgpOworICAgIGlmIChyZXN1
bHQudGhpc1ZhbHVlICE9PSB0cnVlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAg
cmVzdWx0ID0gZm9vTkkzLmNhbGwodHJ1ZSwgNyk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUg
IT09IHRydWUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKK30KKworCitwdXRGdW5jVG9Q
cml2YXRlTmFtZShmdW5jdGlvbiAoKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7ICB9KTsK
K2xldCBib2R5VGV4dCA9IGAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICBp
ZiAoYSArIGkgPT09IDEwMCkKKyAgICAgICAgcmV0dXJuIGE7Cit9CitgOwordmFyIGZvbzQgPSBj
cmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5jV2l0aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0
aGlzLCBvdGhlclZhbHVlOiAnaGVsbG8nfSAiKTsKK3ZhciBmb29OSTQgPSBjcmVhdGVUYWlsQ2Fs
bEZvcndhcmRpbmdGdW5jV2l0aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhlclZh
bHVlOiAnaGVsbG8nfSAiKTsKK25vSW5saW5lKGZvb05JNCk7CitmdW5jdGlvbiBiYXo0KCkgewor
ICAgIHJldHVybiBmb280LmNhbGwodHJ1ZSwgMCk7Cit9Citub0lubGluZShiYXo0KTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgIGxldCByZXN1bHQgPSBmb280LmNh
bGwodHJ1ZSwgMCk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0
Lm90aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICByZXN1bHQgPSBiYXo0LmNhbGwoKTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1
ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGkpOworICAgIHJlc3VsdCA9IGZvb05JNC5jYWxsKHRydWUsIDApOworICAgIGlmIChyZXN1
bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5vdGhlclZhbHVlICE9PSAiaGVsbG8iKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0gZm9vTkk0LmNhbGwodHJ1
ZSwgMSk7CisgICAgaWYgKHJlc3VsdCAhPT0gMSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkp
OworICAgIHJlc3VsdCA9IGZvb05JNC5jYWxsKHRydWUsICIiKTsKKyAgICBpZiAocmVzdWx0LnRo
aXNWYWx1ZSAhPT0gdHJ1ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGkpOworfQorCitwdXRGdW5jVG9Qcml2YXRlTmFtZShmdW5jdGlv
bigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSk7Cit2YXIgZm9vNSA9IGNyZWF0ZVRhaWxDYWxsRm9y
d2FyZGluZ0Z1bmNXaXRoKGJvZHlUZXh0LCAieyB0aGlzVmFsdWU6IHRoaXMsIG90aGVyVmFsdWU6
ICdoZWxsbyd9ICIpOworZnVuY3Rpb24gYmF6NSgpIHsKKyAgICAidXNlIHN0cmljdCIKKyAgICBy
ZXR1cm4gZm9vNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorbm9JbmxpbmUoYmF6NSk7CisK
K2Z1bmN0aW9uIGFycmF5RXEoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5s
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOworICAgIH0KK30KK2xldCBhcmdzID0gWyJhIiwge30sIFtdLCBTeW1i
b2woKSwgMSwgMS4yMzQsIHVuZGVmaW5lZCwgbnVsbF07Citmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDsgaSsrKSB7CisgICAgbGV0IHJlc3VsdCA9IGJhejUuYXBwbHkodW5kZWZpbmVkLCBhcmdz
KTsKKyAgICBhcnJheUVxKHJlc3VsdCwgYXJncyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281127</attachid>
            <date>2016-06-12 13:16:55 -0700</date>
            <delta_ts>2016-06-13 13:51:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158666-20160612131827.patch</filename>
            <type>text/plain</type>
            <size>74693</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTNkMjExNzk1YWM4ODgzOGUzZTNlZjhlNzgxOGRhMjBhYWVkOWM4Li4zODc2OGY3MTJhYjNlNTNk
OGQ3MzYzYWYxOGU1ZDc2NWNjODZkYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjMgQEAKKzIwMTYtMDYtMTIgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBidWlsdGluIG9wY29kZSB0YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGhhdmUgYSBidWlsdGluIGZvcndhcmQg
aXRzCisgICAgICAgIGFyZ3VtZW50cyB0byBhIGhlbHBlciB3aXRob3V0IGFsbG9jYXRpbmcgYW4g
YXJndW1lbnRzIG9iamVjdC4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgbmV3IGJ5dGVjb2Rl
IGludHJpbnNpYyBAdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzIHRoYXQKKyAgICAgICAgdGFrZXMg
dHdvIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSB0YXJnZXQgb2YgdGhlIGNhbGwgYW5kIHRoZQor
ICAgICAgICBzZWNvbmQgaXMgdGhlIG5ldyB0aGlzIHZhbHVlLiBUaGlzIG9wY29kZSB3aWxsIHRh
aWwgY2FsbCB0byB0aGUKKyAgICAgICAgcGFzc2VkIGZ1bmN0aW9uIHdpdGhvdXQgdHJpZ2dlcmlu
ZyBhbiBhbGxvY2F0aW9uIG9mIGFuIGFyZ3VtZW50cworICAgICAgICBvYmplY3QgZm9yIHRoZSBj
YWxsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgSW4gdGhlIExMSW50IGFuZCBCYXNlbGluZSB0aGlz
IGZ1bmN0aW9uIGFjdHMgdGhlIHNhbWUgd2F5IGEgbm9ybWFsCisgICAgICAgIHRhaWwgY2FsbCBk
b2VzLiAgVGhlIGJ5dGVjb2RlIHdpbGwgYWxsb2NhdGUgYSBuZXcgc3RhY2sgZnJhbWUKKyAgICAg
ICAgY29weWluZyBhbGwgdGhlIGFyZ3VtZW50cyBvZiB0aGUgY2FsbGVyIGZ1bmN0aW9uIGludG8g
dGhlIG5ldworICAgICAgICBmcmFtZSwgYWxvbmcgd2l0aCB0aGUgbmV3IHRoaXMuIFRoZW4gd2hl
biB0aGUgYWN0dWFsIGNhbGwgaGFwcGVucworICAgICAgICB0aGUgbmV3IGZyYW1lIGlzIGNvcGll
ZCBvdmVyIHRoZSBjYWxsZXIgZnJhbWUuIFdoaWxlIHRoaXMgaXMgbm90CisgICAgICAgIG5lY2Vz
c2FyeSwgaXQgYWxsb3dzIHRoZSB0YXJnZXQgZnVuY3Rpb24gdG8gaGF2ZSBtb3JlIGFyZ3VtZW50
cworICAgICAgICB0aGFuIHRoZSBjYWxsZXIgZnVuY3Rpb24gdmlhIGFyaXR5IGZpeHVwLgorCisg
ICAgICAgIE9uY2Ugd2UgZ2V0IHRvIHRoZSBERkcgd2UgcmV1c2UgZXhpc3RpbmcgREZHIE5vZGVz
IGZvciBmb3J3YXJkaW5nCisgICAgICAgIGFyZ3VtZW50cywgYWx0aG91Z2ggdGhlcmUgd2VyZSBz
b21lIG1pbm9yIGNoYW5nZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgc3dhcHMgdGhlIG1lYW5pbmcg
b2YgdGhlIHNlY29uZCBhbmQgdGhpcmQgY2hpbGRyZW4gZm9yIGVhY2ggREZHCisgICAgICAgIHZh
cmFyZ3Mgbm9kZSwgZXhjaGFuZ2luZyB0aGUgYXJnbXVtZW50cyBhbmQgdGhpcyBjaGlsZCwKKyAg
ICAgICAgcmVzcGVjdGl2ZWx5LiBJdCBhbHNvIG1ha2VzIHRoZSBhcmd1bWVudHMgY2hpbGQgZm9y
IGVhY2ggdmFyYXJncworICAgICAgICBub2RlLCBhcyB3ZWxsIGFzIHRoZSBGb3J3YXJkVmFyYXJn
cyBub2RlIG9wdGlvbmFsLiBJZiB0aGUgb3B0aW9uYWwKKyAgICAgICAgY2hpbGQgaXMgbWlzc2lu
ZywgdGhlbiBmb3J3YXJkaW5nIG5vZGUgYXNzdW1lcyB0aGF0IHRoZSBhcmd1bWVudHMKKyAgICAg
ICAgZm9yIHRoZSBub2RlJ3MgaW5saW5lQ2FsbEZyYW1lIHNob3VsZCBiZSB1c2VkIGluc3RlYWQu
IEZpbmFsbHksCisgICAgICAgIHdoZW4gaW5saW5pbmcgdGhlIHRhcmdldCBvZiBhbiBpbmxpbmVk
CisgICAgICAgIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyB3ZSBtYWtlIHN1cmUgdGhl
IGFyZ3VtZW50cyBvZiB0aGUKKyAgICAgICAgZm9yd2FyZGluZyBmdW5jdGlvbiBhcmUgbWFya2Vk
IGFzIG5vbi11bmJveGFibGUgc2luY2UgdGhpcyB3b3VsZAorICAgICAgICBub3JtYWxseSBiZSBk
b25lIGJ5IHRoZSBjYWxsZXIncyBjcmVhdGUgYXJndW1lbnRzIG9iamVjdCBub2RlLAorICAgICAg
ICB3aGljaCBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5r
SW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3Np
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3Mp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdHJ5R2V0
QnlJZCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0FyZ3VtZW50c0NoaWxkKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcmd1bWVudHND
aGlsZCk6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6Cisg
ICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlRm9yd2FyZFZhcmFyZ3MpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAqIGRmZy9ERkdW
YXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxP
ckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlRm9yd2FyZFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OnNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKToKKyAgICAgICAgKEpTQzo6
c2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0
L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJh
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnZhcmFyZ3NTZXR1cCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJk
QXJndW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEZ1bmNUb1ByaXZhdGVOYW1lLmNyZWF0
ZUJ1aWx0aW4pOgorICAgICAgICAocHV0RnVuY1RvUHJpdmF0ZU5hbWUpOgorICAgICAgICAoY3Jl
YXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgpOgorICAgICAgICAoYmF6KToKKyAgICAgICAg
KGJhejIpOgorICAgICAgICAoYmF6Myk6CisgICAgICAgIChsZXQuYm9keVRleHQpOgorICAgICAg
ICAoYmF6NCk6CisgICAgICAgIChiYXo1KToKKyAgICAgICAgKGFycmF5RXEpOgorCiAyMDE2LTA2
LTA4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
IHNob3VsZCBiZSBhYmxlIHRvIGxvb2t1cCBzeW1ib2xzIGJ5IGlkZW50aWZpZXIgaW4gYnVpbHRp
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDJjMzk5MzVmYjc4NWQ3ODUyNDA0ZDVhZjFiOWEz
OTkxM2I0ZDU4MDIuLjA3YjU5NTg3OTgzMGQwNzQ4ZjFiYjEyMjM0ZWFhOWY4NWU1MmJkMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJZGVudGlmaWVyOwog
ICAgIG1hY3JvKGFyZ3VtZW50Q291bnQpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKICAgICBtYWNy
byhpc09iamVjdCkgXAorICAgIG1hY3JvKHRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAg
IG1hY3JvKHRyeUdldEJ5SWQpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1h
Y3JvKHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCmluZGV4IDhlOTgwNWE2NzUzZWViNmVjMDAwMTdhNzUwMjVhODk3MTgxM2Yz
OTIuLjQ3NTMyNzk0NzgzOTI1MDE0ZWYwZTE5MWUzMzNlYmJlYTY5MThjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwOCw2
ICsxMDgsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0
aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVu
Z3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbF92YXJhcmdz
IiwgImxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3JldCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Y29uc3RydWN0IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
b25zdHJ1Y3RfdmFyYXJncyIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBjMzdhNzljNGE0ZmJiZWViNDQ4
MGZjN2U0NDhjNDM5MzQxYjM1YmFlLi5jN2ZiZDZkNjRmYTA2OWVmNGU1MDZjNzYxYjA2M2RmYjBi
YjZiNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaApAQCAtMjIzLDcgKzIyMyw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCgKICAgICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKLSAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsK
KyAgICBjYXNlIG9wX2RlbF9ieV92YWw6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHM6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0zOTAsNiArMzkx
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6
CiAgICAgY2FzZSBvcF9jYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCmluZGV4IGJlZWVhYTEyYzNkMjgwYmIxYjc5OTIzZWMxYjMzMjcyYzZlNjA5
MTIuLmY3ZTZlNzM4ZmY4YzhmZjMxMzg5ZTgxNjQyNTBhYzJjNWNhYTQ0NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7CiAgICAgICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGFpbENh
bGw7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyk7Cisg
ICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdz
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA1N2YzMTVmYmNjYjNiYzc1YWYzMmQxY2Y2YTM1OTgwYmI5YzI2M2QxLi4yMzBjODIz
MDNlODhjNThiNzU5YzgzNDliMjIxOGI3MDNhZTE5ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Niw3ICsxNDY2LDggQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2Nv
bnN0cnVjdF92YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKLSAgICAgICAg
Y2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczogeworICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF92
YXJhcmdzOgorICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czogewog
ICAgICAgICAgICAgaW50IHJlc3VsdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IGNhbGxlZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHRoaXNWYWx1
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTQ3NCw3ICsxNDc1LDE5IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCB2YXJBcmdPZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wY29kZSA9PSBvcF9jYWxsX3ZhcmFyZ3Mg
PyAiY2FsbF92YXJhcmdzIiA6IG9wY29kZSA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyA/ICJjb25z
dHJ1Y3RfdmFyYXJncyIgOiAidGFpbF9jYWxsX3ZhcmFyZ3MiKTsKKyAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG9wTmFtZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2FsbF92YXJhcmdz
KQorICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOworICAgICAgICAgICAg
ZWxzZSBpZiAob3Bjb2RlID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQorICAgICAgICAgICAgICAg
IG9wTmFtZSA9ICJjb25zdHJ1Y3RfdmFyYXJncyI7CisgICAgICAgICAgICBlbHNlIGlmIChvcGNv
ZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRh
aWxfY2FsbF92YXJhcmdzIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9wY29kZSA9PSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cyI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcE5hbWUpOwogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVkLCAlZCIsIHJlZ2lzdGVyTmFtZShyZXN1bHQp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUodGhpc1Zh
bHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVn
aXN0ZXIsIHZhckFyZ09mZnNldCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0
LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwNTUs
NiArMjA2OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6
CisgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgogICAgICAgICBj
YXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsK
ICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMl0udS5v
cGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2NmJlMGE2MDY1MWMxMTI4NTc0OGVhMzAyYzA5
NzRmOThlNzhiZDE2Li4zOTljMmU4NTRiMzRlODhhMjhkODJkMzI1MTc1N2QxYTdjNGU4ZGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMzExNSw2ICszMTE1LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJncyhvcF9jb25zdHJ1Y3RfdmFyYXJn
cywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIs
IGZpcnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQorCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxGb3J3YXJkQXJndW1lbnRzSW5U
YWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7
CisgICAgQVNTRVJUKG1faW5UYWlsUG9zaXRpb24pOworICAgIHJldHVybiBlbWl0Q2FsbFZhcmFy
Z3Mob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3Rl
ciwgbnVsbHB0ciwgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQogICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CkBAIC0z
MTMwLDcgKzMxMzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxW
YXJhcmdzKE9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCogZHN0LAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5j
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1JlZ2lzdGVyID8gdGhp
c1JlZ2lzdGVyLT5pbmRleCgpIDogMCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3Vt
ZW50cy0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50cyA/IGFy
Z3VtZW50cy0+aW5kZXgoKSA6IDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmaXJzdEZy
ZWVSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCAxNmIxZjUzOTEwYzg2N2I3NjZjNGU1MWQ4ZWIzM2U3NTg0ZGViOWFjLi5m
N2I2NTY1N2IxMDI4ZDMzOWYxNjlkYzU2MmNlYWFjMzhmNDA5ZTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC01NzcsNiArNTc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVu
dHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0
ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJl
Z2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3NpdGlvbihSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURlc2Ny
aXB0b3JPcHRpb24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IGRmYjQxNjdmMThiM2UxNDc1YTIzZTIwZTFmMTRjNTVjYTgwNDAzYmQuLjhhYmI0NThl
MTI3MmQxOGZjYzE3NWU5OWM1MWMyYmQ0ZDZkZjcxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg4OCw2ICs4ODgs
MTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19w
dXRCeVZhbERpcmVjdChCeXRlY29kZUdlbmVyYXQKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVU
b0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5VmFsKGJh
c2UuZ2V0KCksIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3Vt
ZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAg
bm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsK
KworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERzdCA9IGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEZvcndhcmRBcmd1bWVu
dHNJblRhaWxQb3NpdGlvbihmaW5hbERzdC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3RyeUdldEJ5SWQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGU7CkBAIC04OTksOCArOTExLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190cnlHZXRCeUlkKEJ5dGVjb2RlR2VuZXJhdG9y
JgogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+
KG5vZGUtPm1fZXhwciktPnZhbHVlKCk7CiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0g
ICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRUcnlHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5n
ZXQoKSwgaWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERlc3QgPSBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRyeUdl
dEJ5SWQoZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKaW5kZXggOTE5MmNmOTA0ODliODEzZDUzODY0MTg2Mzc2NGIyYjM3MTNmODkwYy4uZmIzYTBi
Mjg1NzVlODU1NTEwMzRkMGRkMmQ1Y2Q3ODlmY2Q3YmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxD
YWxsVmFyYXJnczoKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRD
YWxsZXI6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKSwgbm9kZSk7CisgICAg
ICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKSwgbm9kZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKQEAgLTYxMiw3
ICs2MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJn
czoKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgICAg
ICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgTm9kZSogY2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDMoKS5ub2RlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9jYW5kaWRhdGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBAIC02MzMs
NyArNjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uYXBwZW5kKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIGFyZ3VtZW50IDogYXJn
dW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQoRWRnZShhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGJiM2JlMTc4YjFiZDZjYzFlZTY2NjE0Y2YzOTFiM2EwMTEy
MjFmY2IuLjA0ZWMzMDgzOGI5NzBkZGRmMmEzYjA4N2E1NWJmMjFkMWI3YzM2N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC04Mjgs
NyArODI4LDggQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICAgICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKLSAgICAgICAgICAgICAgICBj
YXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF90YWls
X2NhbGxfdmFyYXJnczoKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gU3BlY0Z1bGxUb3A7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMjksNyArMTIzMCw3IEBAIEJ5dGVD
b2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAg
ICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFy
Z2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rp
b24pOwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAg
ICByZXR1cm4gVGVybWluYWw7Ci0gICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWls
Q2FsbFZhcmFyZ3MpOworICAgICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxW
YXJhcmdzICYmIGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAg
ICAgICByZXR1cm4gTm9uVGVybWluYWw7CiAgICAgfQogICAgIApAQCAtMTI0Niw3ICsxMjQ3LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KAogICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsT3BJbmZvLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAg
cmV0dXJuIFRlcm1pbmFsOwotICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZh
cmFyZ3MpOworICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYg
Y2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgcmV0dXJuIE5v
blRlcm1pbmFsOwogfQogCkBAIC0xMjU0LDcgKzEyNTUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVy
bWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBw
YywgTgogewogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPT0gT1BD
T0RFX0xFTkdUSChvcF9jb25zdHJ1Y3RfdmFyYXJncykpOwogICAgIEFTU0VSVChPUENPREVfTEVO
R1RIKG9wX2NhbGxfdmFyYXJncykgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxfdmFyYXJn
cykpOwotICAgIAorCiAgICAgaW50IHJlc3VsdCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQg
Y2FsbGVlID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGludCB0aGlzUmVnID0gcGNbM10udS5vcGVy
YW5kOwpAQCAtMTI4NSwxNiArMTI4NiwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTgogICAg
IGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0ID0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgCiAgICAg
Tm9kZSogdGhpc0NoaWxkID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSk7CisgICAgTm9k
ZSogYXJndW1lbnRzQ2hpbGQgPSBudWxscHRyOworICAgIGlmIChvcCAhPSBUYWlsQ2FsbEZvcndh
cmRWYXJhcmdzKQorICAgICAgICBhcmd1bWVudHNDaGlsZCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
YXJndW1lbnRzKSk7CiAKLSAgICBpZiAob3AgPT0gVGFpbENhbGxWYXJhcmdzKSB7CisgICAgaWYg
KG9wID09IFRhaWxDYWxsVmFyYXJncyB8fCBvcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKSB7
CiAgICAgICAgIGlmIChhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkgewotICAgICAgICAg
ICAgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEpLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgZ2V0
KFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKSwgdGhpc0NoaWxkKTsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIHRoaXNDaGls
ZCwgYXJndW1lbnRzQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgICAg
ICB9Ci0gICAgICAgIG9wID0gVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjsKKyAgICAgICAg
b3AgPSBvcCA9PSBUYWlsQ2FsbFZhcmFyZ3MgPyBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVy
IDogVGFpbENhbGxGb3J3YXJkVmFyYXJnc0lubGluZWRDYWxsZXI7CiAgICAgfQogCi0gICAgTm9k
ZSogY2FsbCA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBjYWxsVGFyZ2V0LCBnZXQoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpLCB0aGlzQ2hpbGQp
OworICAgIE5vZGUqIGNhbGwgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YSksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgY2FsbFRhcmdldCwgdGhpc0NoaWxkLCBhcmd1bWVudHNDaGlsZCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgIGlmIChyZXN1bHRSZWcuaXNW
YWxpZCgpKQogICAgICAgICBzZXQocmVzdWx0UmVnLCBjYWxsKTsKQEAgLTE3NjcsOCArMTc3MSwx
NCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+b2Zmc2V0ID0gYXJndW1lbnRzT2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICBkYXRhLT5saW1pdCA9IG1heE51bUFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgZGF0
YS0+bWFuZGF0b3J5TWluaW11bSA9IG1hbmRhdG9yeU1pbmltdW07Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChMb2FkVmFyYXJncywgT3BJbmZvKGRhdGEpLCBn
ZXQoYXJndW1lbnRzQXJndW1lbnQpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbE9w
ID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdW5ib3ggb3VyIGFyZ3VtZW50cyBo
ZXJlIHNpbmNlIHRoYXQgd29uJ3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUg
YnkgdGhlIGFyZ3VtZW50cyBvYmplY3QgY3JlYXRpb24gbm9kZSBzaW5jZSB0aGF0IG5vZGUgbWF5
IG5vdCBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdGljZUFyZ3VtZW50c1VzZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3J3YXJkVmFyYXJncywgT3BJ
bmZvKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKExvYWRWYXJhcmdzLCBPcEluZm8oZGF0YSksIGdldChhcmd1bWVu
dHNBcmd1bWVudCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIExvYWRWYXJhcmdzIG1heSBP
U1IgZXhpdC4gSGVuY2UsIHdlIG5lZWQgdG8ga2VlcCBhbGl2ZSBjYWxsVGFyZ2V0Tm9kZSwgdGhp
c0FyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhcmd1bWVudHNBcmd1bWVudCBm
b3IgdGhlIGJhc2VsaW5lIEpJVC4gSG93ZXZlciwgd2Ugb25seSBuZWVkIGEgUGhhbnRvbSBmb3IK
QEAgLTE5NjIsNyArMTk3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KAogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVl
KCk7IC8vIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5v
cm1hbCBpbmxpbmVkIGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KICAgICAgICAgaWYg
KE5vZGUqIHRlcm1pbmFsID0gbV9jdXJyZW50QmxvY2stPnRlcm1pbmFsKCkpCi0gICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0
ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRCh0ZXJtaW5hbCwgdGVybWluYWwtPm9wKCkgPT0gVGFpbENhbGwgfHwgdGVybWluYWwtPm9w
KCkgPT0gVGFpbENhbGxWYXJhcmdzIHx8IHRlcm1pbmFsLT5vcCgpID09IFRhaWxDYWxsRm9yd2Fy
ZFZhcmFyZ3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7
CiAgICAgICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CkBAIC0y
MDAzLDcgKzIwMTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICBtX2V4aXRPSyA9IHRydWU7IC8vIE9yaWdpbiBjaGFuZ2VkLCBzbyBpdCdzIGZpbmUgdG8gZXhp
dCBhZ2Fpbi4KICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwogICAgIGlmIChOb2RlKiB0ZXJt
aW5hbCA9IG1fY3VycmVudEJsb2NrLT50ZXJtaW5hbCgpKQotICAgICAgICBBU1NFUlRfVU5VU0VE
KHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9
PSBUYWlsQ2FsbFZhcmFyZ3MpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsLCB0ZXJt
aW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFy
Z3MgfHwgdGVybWluYWwtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgIGxhbmRpbmdCbG9ja3MuYXBw
ZW5kKG1fY3VycmVudEJsb2NrKTsKQEAgLTQ0MzcsMTcgKzQ0NDcsMTUgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlv
biwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwotICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQg
aGFuZGxlQ2FsbCgpLCB3aGljaCBjb3VsZCBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgZGlkbid0
IHRyYXNoIG1fY3VycmVudEluc3RydWN0aW9uLgotICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwg
ImhhbmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBt
X2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbCk7
CiAKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6IHsKICAgICAgICAgICAgIGZsdXNoRm9yUmV0
dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZUNhbGwo
Y3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbCwgQ2FsbE1vZGU6OlRhaWwpOwotICAgICAgICAg
ICAgLy8gVmVyaWZ5IHRoYXQgaGFuZGxlQ2FsbCgpLCB3aGljaCBjb3VsZCBoYXZlIGlubGluZWQg
dGhlIGNhbGxlZSwgZGlkbid0IHRyYXNoIG1fY3VycmVudEluc3RydWN0aW9uLgotICAgICAgICAg
ICAgQVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7Cisg
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1
cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhl
IGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8g
SWYgdGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0
aGVyIGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KLSAg
ICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3
ZSB3YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wdCB0byB1cGRhdGUgbWV0YWRhdGEg
YW5kIGNsZWFuCisgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhv
d2V2ZXIsIHRoZW4gd2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3BfanVtcCB0byB1cGRh
dGUgbWV0YWRhdGEgYW5kIGNsZWFuCiAgICAgICAgICAgICAvLyB0aGluZ3MgdXAuCiAgICAgICAg
ICAgICBpZiAodGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpIHsKICAgICAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF90YWlsX2NhbGwpOwpAQCAtNDQ1OCwxOCArNDQ2NiwyMSBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ug
b3BfY29uc3RydWN0OgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24s
IENvbnN0cnVjdCwgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhh
bmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1
cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0
KTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczogewogICAgICAg
ICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywg
Q2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1
cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2Fs
bCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudElu
c3RydWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX3ZhcmFyZ3MpOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczogewogICAgICAg
ICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFs
aXR5ID0gaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbFZhcmFy
Z3MsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9j
dXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJnc0Nh
bGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJ
bnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgdGVybWluYWwgdGhl
biB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENh
bGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KLSAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlz
IG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50IHRoZSBzdWJzZXF1ZW50IG9wX3Jl
dC9vcF9qdW1wdCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNsZWFuCisgICAgICAgICAgICAvLyBJ
ZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4gd2Ugd2FudCB0aGUgc3Vi
c2VxdWVudCBvcF9yZXQvb3BfanVtcCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNsZWFuCiAgICAg
ICAgICAgICAvLyB0aGluZ3MgdXAuCiAgICAgICAgICAgICBpZiAodGVybWluYWxpdHkgPT0gTm9u
VGVybWluYWwpIHsKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90YWlsX2NhbGxfdmFy
YXJncyk7CkBAIC00NDc3LDkgKzQ0ODgsMjQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90YWls
X2NhbGxfdmFyYXJncyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBjYXNl
IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czogeworICAgICAgICAgICAgZmx1c2hGb3JS
ZXR1cm4oKTsKKyAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlVmFy
YXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzLCBDYWxs
TW9kZTo6VGFpbCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudElu
c3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGlj
aCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rp
b24iKTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hv
dWxkIG5vdCBwYXJzZSBhbnkgZnVydGhlciBieXRlY29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwg
ZXhpdCB0aGUgZnVuY3Rpb24uCisgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVy
bWluYWwsIGhvd2V2ZXIsIHRoZW4gd2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3BfanVt
cCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNsZWFuCisgICAgICAgICAgICAvLyB0aGluZ3MgdXAu
CisgICAgICAgICAgICBpZiAodGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpIHsKKyAgICAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF90YWlsX2NhbGwpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90YWlsX2NhbGwpOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFy
YXJnczogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9u
LCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxsTW9kZTo6Q29uc3RydWN0KTsKKyAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0
aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxl
ZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY29uc3RydWN0X3ZhcmFyZ3MpOwogICAgICAgICB9CiAgICAgICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyMjY3YzNl
OGQ4YmNjNTcxMjQxODI4MDZiNGY2MjUyZTMwMTMzOWZjLi4yNTEyODQyYzE3NTcyNzMwYWY1MDIy
NWJkY2Y2NmUxNDc3NDFjNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yMDAsNiArMjAwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWMKICAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAg
ICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAgICAgY2FzZSBv
cF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggYTM2YzNhNGE5ZWVjYzVlZWRiOTY5Yjk0YjNkMThkOTViYTI3OTgzMC4uOGY3YWExNWY3ZDQ1
MjU0NWFiZTcyNzQ0NmI1M2RjYjFiMWU1YTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMzIxLDcgKzEzMjEsNiBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKLSAg
ICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWw6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CiAgICAgICAg
IGNhc2UgUHV0SGludDoKQEAgLTE1MjksNiArMTUyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKKyAgICAgICAg
Y2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAg
ICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBmZGVmYmFhNTMyZDk4MTdkMzZhYzJhZDFm
NWFlOWM5NzA3MDE5YzQ3Li5kNmU2ZDMzYjg1ZDExYzIyMzk5MWNhNTRjN2E5YWU0OWZjNGMyZWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzQ5LDcgKzc0OSw1MSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChvcCgpID09IENyZWF0ZUFjdGl2YXRpb24pOwog
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8yKS0+dmFs
dWUoKTsKICAgICB9Ci0gICAgIAorCisgICAgYm9vbCBoYXNBcmd1bWVudHNDaGlsZCgpCisgICAg
eworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWw6CisgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CisgICAgICAg
IGNhc2UgTG9hZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CisgICAgICAg
IGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgorICAg
ICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2Fy
ZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgICAgICBjYXNlIFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5l
ZENhbGxlcjoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzSW5saW5lZENhbGxl
cjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgRWRnZSYgYXJndW1lbnRz
Q2hpbGQoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgR2V0
TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91
bmRzOgorICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgorICAgICAgICBjYXNlIEZvcndhcmRWYXJh
cmdzOgorICAgICAgICAgICAgcmV0dXJuIGNoaWxkMSgpOworICAgICAgICBjYXNlIENhbGxWYXJh
cmdzOgorICAgICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBDb25z
dHJ1Y3RWYXJhcmdzOgorICAgICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgorICAg
ICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CisgICAg
ICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnc0lubGluZWRDYWxsZXI6CisgICAgICAgICAg
ICByZXR1cm4gY2hpbGQzKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNoaWxkMSgpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgYm9vbCBjb250YWluc01vdkhpbnQoKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDNlNWE4MzMyYzExYWYxZDE5ZTRhZTRk
NGE1MWRmOTY0OWFkZjBhZDAuLjhkMWE3OWRkNzI3MGQzZDM3YzYwZjY3MDFhNGY5ZjMzNWQ5Zjhl
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxv
Y2FsQ2xvYmJlcml6ZS5oCkBAIC0xMTUsNyArMTE1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJk
VmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzSW5saW5lZENhbGxl
cjogewotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25v
ZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworCisgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgIGlmICht
X25vZGUtPmFyZ3VtZW50c0NoaWxkKCkpCisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1l
ID0gbV9ub2RlLT5hcmd1bWVudHNDaGlsZCgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9
IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVhZCB0aGUgb3V0ZXJt
b3N0IGFyZ3VtZW50cyBhbmQgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS0gPiAx
OykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMzBjM2Y4MzMwZDY1Y2Q1ODE0NDE1NDc3MDUw
NmZkMTA1YTlkMTdhYS4uMmQ1OGIxNmExMjJiYTQ1NjVhYmE3MmVmZmFjMjQ0NzAzY2JjM2VmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk3Miw3ICs5NzIsNiBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1
bWVudEJ5VmFsOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgot
ICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAg
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdPYmplY3Q6CkBAIC0xMDU1LDYgKzEwNTQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFpvbWJpZUhpbnQ6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJh
cmdzOgorICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0
OgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDU4
MWFjZDIzODAxOTJiNGRhNmQ4NjA1NjhhZDcxY2Y1ZTQ2ZDJiMy4uZWMwOTM1MGEyOWVlNTBkNDll
ZDQ5Nzk3ZTVkNjIwN2VmMzBlYTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTU5NDYsOCArNTk0NiwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9kZSogbm9kZSkKIHsKICAgICBMb2Fk
VmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5sb2FkVmFyYXJnc0RhdGEoKTsKLSAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAKKyAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZTsKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkpCisgICAgICAgIGlubGluZUNhbGxG
cmFtZSA9IG5vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwor
ICAgIGVsc2UKKyAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZTsKKwogICAgIEdQUlRlbXBvcmFyeSBsZW5ndGgodGhpcyk7CiAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICBHUFJSZWcgbGVuZ3RoR1BSID0g
bGVuZ3RoLmdwcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmIzODYyYTlkMmQzNWI1YjJiNDc3MDc4M2YwNTI2
NzBlZWI1NjYyNi4uNDUyYjQyY2ViYjk4MTVmZjBlYjQ0NzE3ZWU4M2RlMTI5OGRmZmYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC03MjksNyArNzI5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIGlmIChpc0ZvcndhcmRWYXJhcmdzKSB7CiAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICB1
c2Uobm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUjE7CiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjI7CkBAIC03NDEsNyArNzQy
LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG51bVVzZWRTdGFja1Ns
b3RzKSwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlOwotICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UobV9qaXQs
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2Rl
LT5jaGlsZDIoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RW
YXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAg
ICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmNoaWxkMygpLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAg
ICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShtX2ppdCwgc2NyYXRjaEdQUjIs
IHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlubGluZUNhbGxGcmFtZSwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBzbG93Q2FzZS5saW5r
KCZtX2ppdCk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0ZvclZhcmFyZ3MpOwpAQCAtNzU5LDcgKzc2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhdXRvIGxvYWRBcmd1bWVudHNH
UFIgPSBbJl0gKEdQUlJlZyByZXNlcnZlZEdQUikgewogICAgICAgICAgICAgICAgIGlmIChyZXNl
cnZlZEdQUiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAgICAgICAgICBsb2NrKHJlc2Vy
dmVkR1BSKTsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHModGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50
cyh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzVGFnR1BS
ID0gYXJndW1lbnRzLnRhZ0dQUigpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50c1BheWxvYWRH
UFIgPSBhcmd1bWVudHMucGF5bG9hZEdQUigpOwogICAgICAgICAgICAgICAgIGlmIChyZXNlcnZl
ZEdQUiAhPSBJbnZhbGlkR1BSUmVnKQpAQCAtNzk4LDcgKzgwNCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRoZSBhcmd1bWVudHMgYXJyYXkgYW55bW9yZS4KICAgICAgICAgaWYgKGlzVmFyYXJn
cykKLSAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB1c2Uobm9k
ZS0+Y2hpbGQzKCkpOwogCiAgICAgICAgIC8vIE5vdyBzZXQgdXAgdGhlICJ0aGlzIiBhcmd1bWVu
dC4KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc0FyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxk
MygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDc0NDEzOWJlMWY3Yjc0ZWRhZmFjMDIzNDFmZDRkYTg4NzIxMDQ3MzEuLjE3
YWQ0ODQ0MDUxYWU5MWMzZTllMmYyMDVkNzYzODM0NTI0NDJlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNzAxLDcgKzcw
MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAg
IAogICAgICAgICBpZiAoaXNGb3J3YXJkVmFyYXJncykgewogICAgICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMygpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIxOwogICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIyOwpAQCAtNzEzLDcgKzcxNCwxMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihudW1Vc2VkU3RhY2tTbG90cyksIHNjcmF0Y2hHUFIyKTsK
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAgICAgICAg
IGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRj
aEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgbm9kZS0+Y2hpbGQyKCktPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2Fz
ZSk7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJh
bWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgZW1pdFNldHVwVmFy
YXJnc0ZyYW1lRmFzdENhc2UobV9qaXQsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zm
c2V0LCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmbV9qaXQpOwogICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsK
QEAgLTczMCw3ICs3MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogICAgICAgICAgICAgYXV0byBsb2FkQXJndW1lbnRzR1BSID0gWyZdIChHUFJSZWcgcmVz
ZXJ2ZWRHUFIpIHsKICAgICAgICAgICAgICAgICBpZiAocmVzZXJ2ZWRHUFIgIT0gSW52YWxpZEdQ
UlJlZykKICAgICAgICAgICAgICAgICAgICAgbG9jayhyZXNlcnZlZEdQUik7Ci0gICAgICAgICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnRzKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHModGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50c0dQUiA9IGFyZ3VtZW50cy5ncHIoKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzZXJ2ZWRHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAg
ICAgICAgICAgICAgdW5sb2NrKHJlc2VydmVkR1BSKTsKQEAgLTc2NywxMCArNzczLDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAg
ICAvLyBXZSBkb24ndCBuZWVkIHRoZSBhcmd1bWVudHMgYXJyYXkgYW55bW9yZS4KICAgICAgICAg
aWYgKGlzVmFyYXJncykKLSAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICB1c2Uobm9kZS0+Y2hpbGQzKCkpOwogCiAgICAgICAgIC8vIE5vdyBzZXQgdXAgdGhlICJ0
aGlzIiBhcmd1bWVudC4KLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc0FyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc0FyZ3VtZW50KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BSUmVnIHRoaXNBcmd1bWVudEdQUiA9IHRo
aXNBcmd1bWVudC5ncHIoKTsKICAgICAgICAgdGhpc0FyZ3VtZW50LnVzZSgpOwogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2UuY3BwCmluZGV4IDUzNWU3OWYzMmE3NmFiNjMxYjlmNDExMGU3OTdiNTY4OGFkYjAx
NDguLmUzYzUyYWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENvbnN0
cnVjdFZhcmFyZ3M6CiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAg
ICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMygpID09IGNhbmRp
ZGF0ZSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjYW5kaWRhdGUg
fHwgbm9kZS0+Y2hpbGQyKCkgPT0gY2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBh
dCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc0LDI1
ICsyNzQsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMigpICE9IGNhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQzKCkgIT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRm9yd2FyZFZhcmFyZ3Mp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIo
KSAhPSBjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpICE9IGNh
bmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSAhPSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpICE9IGNhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQzKCkgIT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzSW5saW5lZENhbGxlcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWFjZjI0YTYwYzMy
OTY0NTE4MWI4NGU0NmRjMzUwOWU4ZmViZjljZS4uNDAzODBmNGZmODM2ZDRlMGYwMGIzNjQ0Yzk4
M2Y1ZmYyNWUwNjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtNTE5NCw3ICs1MTk0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIExWYWx1ZSBqc0NhbGxlZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSB0aGlzQXJnID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgTFZhbHVlIHRoaXNBcmcgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRz
ID0gbnVsbHB0cjsKICAgICAgICAgYm9vbCBmb3J3YXJkaW5nID0gZmFsc2U7CkBAIC01MjA0LDcg
KzUyMDQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIENvbnN0
cnVjdFZhcmFyZ3M6Ci0gICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAganNBcmd1bWVudHMgPSBsb3dKU1ZhbHVlKG5vZGUtPmNo
aWxkMygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENhbGxGb3J3YXJkVmFy
YXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgpAQCAtNTM1Nyw3ICs1
MzU3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKLSAgICAgICAgICAgICAg
ICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uoaml0LCBzY3JhdGNoR1BSMiwgc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgbm9kZS0+Y2hpbGQyKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93
Q2FzZSk7CisgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0Zy
YW1lRmFzdENhc2Uoaml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBz
Y3JhdGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xv
d0Nhc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0g
aml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKQEAg
LTU1MDEsNyArNTUwNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJh
cmdzKCkKICAgICB7CiAgICAgICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG1fbm9kZS0+bG9h
ZFZhcmFyZ3NEYXRhKCk7Ci0gICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbV9ub2RlLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7CisgICAgICAgIGlmIChtX25v
ZGUtPmNoaWxkMSgpKQorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5jaGls
ZDEoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGdldEFyZ3VtZW50
c0xlbmd0aChpbmxpbmVDYWxsRnJhbWUpLnZhbHVlOwogICAgICAgICBMVmFsdWUgbGVuZ3RoSW5j
bHVkaW5nVGhpcyA9IG1fb3V0LmFkZChsZW5ndGgsIG1fb3V0LmNvbnN0SW50MzIoMSAtIGRhdGEt
Pm9mZnNldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKaW5kZXggMDQ3NDBjYzA2YTEwOThjYjg0YmY2Yjk0OGZmNWZmOThjZGU2MjVk
ZS4uMjA2ZWM2YjQyNWE2OTVhNGNhYjI5ZWQxNjcwMjc0MDc0MDY5OWM5MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yNDAs
NiArMjQwLDE2IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAgcmV0dXJuIGxlbmd0aDsK
IH0KIAordW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNTdGFjayogc3RhY2ssIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzKQorewor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOworICAgIENh
bGxGcmFtZSogY2FsbGVlRnJhbWUgPSBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBu
dW1Vc2VkU3RhY2tTbG90cywgbGVuZ3RoICsgMSk7CisgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2Fw
YWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkKKyAgICAgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKIHVuc2ln
bmVkIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0
YWNrLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVPZlZh
cmFyZ3MoY2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKQEAgLTMwMCw2
ICszMTAsMjIgQEAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lLAogICAgIG5ld0NhbGxGcmFtZS0+c2V0
VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7CiB9CiAKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJh
bWUoQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90
IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoID09IGV4ZWNDYWxsZXItPmFyZ3VtZW50Q291
bnQoKSk7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gZXhlY0NhbGxlci0+YXJndW1lbnRPZmZzZXQo
MCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgIG1lbWNweShyZWludGVycHJldF9jYXN0PGNoYXIq
PihleGVjQ2FsbGVlKSArIG9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZXhlY0NhbGxl
cikgKyBvZmZzZXQsIGxlbmd0aCAqIHNpemVvZihSZWdpc3RlcikpOworICAgIGV4ZWNDYWxsZWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGxlbmd0aCArIDEpOworfQorCit2b2lkIHNl
dHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGV4ZWNDYWxsZXIs
IENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90IGxlbmd0
aCkKK3sKKyAgICBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShleGVjQ2FsbGVyLCBleGVjQ2Fs
bGVlLCBsZW5ndGgpOworICAgIGV4ZWNDYWxsZWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwor
fQorCisgICAgCisKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAgICAgOiBtX3Zt
KHZtKQogICAgICwgbV9zdGFjayh2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZDc5MDY5YTk2ODY0YTU2MDJhMWZkOTE3N2M3N2Fj
MmE2YTE0ODMwYy4uZmI4YTBkNzZmMmYxMmY5ZGUwOGY5NWI4NzdjODdiYmRmZDY5MmJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAg
LTI4Miw5ICsyODIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdW5zaWduZWQgc2l6ZU9mVmFy
YXJncyhDYWxsRnJhbWUqIGV4ZWMsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCk7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEFyZ3VtZW50cyA9IDB4
MTAwMDA7CiAgICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWMs
IEpTU3RhY2sqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMs
IHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JG
b3J3YXJkQXJndW1lbnRzKENhbGxGcmFtZSogZXhlYywgSlNTdGFjayosIHVuc2lnbmVkIG51bVVz
ZWRTdGFja1Nsb3RzKTsKICAgICB2b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogZXhlY0NhbGxl
ciwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50
MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7CiAgICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFt
ZShDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBh
cmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwog
ICAgIHZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxl
ciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1
bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOworICAg
IHZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBD
YWxsRnJhbWUqIGV4ZWNDYWxsZWUsIHVpbnQzMl90IGxlbmd0aCk7CisgICAgdm9pZCBzZXR1cEZv
cndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxs
RnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1aW50MzJfdCBsZW5ndGgpOwog
ICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCA5NWIxYWMxMGU3MGEzNjBlN2VjNjQwYzgxZGJkOWFlNWZlMmYyZmNkLi4zZGUyZTQ1Zjc3NWVj
M2VlZjNkZmZhYzU0MjBlNmY0MTY2ZDUwYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yMTUsNiArMjE1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY2FsbF9ldmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfY2Fs
bF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAg
ICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNo
KQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQpAQCAtNDE1LDYgKzQxNiw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9jYWxsX2V2YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jYWxsX3Zh
cmFyZ3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF90YWlsX2NhbGxfdmFyYXJncykK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfdG9fdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDgyZTgzMWU0
NGQwYWM5OWE5MzU4ZmZkNDhkYjg3NTdmYTcxMmNjNDAuLmY1NDY1ODU3M2VlMzVjMDUzYTFiZDdl
ZGZmNDM3YmZhY2VhZTYzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzE3LDcgKzMx
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbChPcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAg
IHZvaWQgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlELCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7
Ci0gICAgICAgIHZvaWQgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKEluc3RydWN0aW9uKiwgQ2Fs
bExpbmtJbmZvKik7CisgICAgICAgIHZvaWQgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKE9wY29k
ZUlELCBJbnN0cnVjdGlvbiosIENhbGxMaW5rSW5mbyopOwogICAgICAgICB2b2lkIGNvbXBpbGVD
YWxsRXZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGNvbXBpbGVDYWxsRXZhbFNsb3dD
YXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRDYWxsUmVzdWx0KEluc3RydWN0aW9uKik7CkBAIC00ODMsNiArNDgz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsX2V2YWwoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKQEAgLTYxNCw2ICs2MTUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2Fs
bF92YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25z
dHJ1Y3QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CmluZGV4IDU5OWY4NmM4ZDZlYjQ4OWJjNzIyZDQ2NDg4YzdiMDAwZWQ5YjI4NzkuLjdlZGZjYzA4
YjgyOTdmZGZjNDZiNWY5MTNiYjY5ZWJiYTEzMGNmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1
bHQoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0KTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIENhbGxMaW5rSW5mbyogaW5mbykKK3ZvaWQgSklUOjpjb21waWxlU2V0
dXBWYXJhcmdzRnJhbWUoT3Bjb2RlSUQgb3Bjb2RlLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IENhbGxMaW5rSW5mbyogaW5mbykKIHsKICAgICBpbnQgdGhpc1ZhbHVlID0gaW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHMgPSBpbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQ7CkBAIC02MSwxMiArNjEsMjIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFt
ZShJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENhbGxMaW5rSW5mbyogaW5mbykKICAgICBpbnQg
Zmlyc3RWYXJBcmdPZmZzZXQgPSBpbnN0cnVjdGlvbls2XS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgcmVnVDEsIC1maXJzdEZyZWVSZWdpc3Rlciwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgIFpfSklUT3BlcmF0aW9uX0VKWlogc2l6ZU9wZXJhdGlv
bjsKKyAgICBpZiAob3Bjb2RlID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAg
ICAgICAgc2l6ZU9wZXJhdGlvbiA9IG9wZXJhdGlvblNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVu
dHM7CisgICAgZWxzZQorICAgICAgICBzaXplT3BlcmF0aW9uID0gb3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJnczsKKyAgICBjYWxsT3BlcmF0aW9uKHNpemVPcGVyYXRpb24sIHJlZ1QxLCAtZmly
c3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigtZmlyc3RGcmVlUmVnaXN0ZXIpLCByZWdUMSk7CiAgICAgZW1pdFNldFZhcmFyZ3NGcmFtZSgq
dGhpcywgcmV0dXJuVmFsdWVHUFIsIGZhbHNlLCByZWdUMSwgcmVnVDEpOwogICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZvaWQqKSkpKSwgcmVn
VDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFy
Z3VtZW50cywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdz
RnJhbWUsIHJlZ1QxLCByZWdUMiwgZmlyc3RWYXJBcmdPZmZzZXQsIHJlZ1QwKTsKKyAgICBGX0pJ
VE9wZXJhdGlvbl9FRkpaWiBzZXR1cE9wZXJhdGlvbjsKKyAgICBpZiAob3Bjb2RlID09IG9wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgc2V0dXBPcGVyYXRpb24gPSBvcGVy
YXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZTsKKyAgICBlbHNlCisgICAgICAgIHNldHVw
T3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWU7CisgICAgY2FsbE9wZXJhdGlv
bihzZXR1cE9wZXJhdGlvbiwgcmVnVDEsIHJlZ1QyLCBmaXJzdFZhckFyZ09mZnNldCwgcmVnVDAp
OwogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8vIFByb2ZpbGUgdGhl
IGFyZ3VtZW50IGNvdW50LgpAQCAtMTQ3LDExICsxNTcsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWdu
ZWQgY2EKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09E
RV9MRU5HVEgob3BfY29uc3RydWN0X3ZhcmFyZ3MpLCBjYWxsX2FuZF9jb25zdHJ1Y3RfdmFyYXJn
c19vcGNvZGVzX211c3RfYmVfc2FtZV9sZW5ndGgpOwogICAgIENPTVBJTEVfQVNTRVJUKE9QQ09E
RV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGwpLCBjYWxsX2Fu
ZF90YWlsX2NhbGxfb3Bjb2Rlc19tdXN0X2JlX3NhbWVfbGVuZ3RoKTsKICAgICBDT01QSUxFX0FT
U0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9jYWxs
X3ZhcmFyZ3MpLCBjYWxsX2FuZF90YWlsX2NhbGxfdmFyYXJnc19vcGNvZGVzX211c3RfYmVfc2Ft
ZV9sZW5ndGgpOworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0g
T1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpLCBjYWxsX2FuZF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfb3Bjb2Rlc19tdXN0X2JlX3NhbWVfbGVuZ3RoKTsK
KwogICAgIENhbGxMaW5rSW5mbyogaW5mbzsKICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfY2FsbF9l
dmFsKQogICAgICAgICBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwotICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfY29uc3Ry
dWN0X3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCi0gICAgICAg
IGNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShpbnN0cnVjdGlvbiwgaW5mbyk7CisgICAgaWYgKG9w
Y29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFy
YXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgICAgIGNvbXBpbGVTZXR1cFZhcmFy
Z3NGcmFtZShvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGluZm8pOwogICAgIGVsc2UgewogICAgICAg
ICBpbnQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBy
ZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CkBAIC0xNzEsOCArMTgz
LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2EKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAg
ICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChieXRlY29kZU9mZnNldCku
Yml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3Mo
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogCisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVl
LgogICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwp
IHsKQEAgLTIxMSw3ICsyMjMsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdz
KSB7CisgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewogICAgICAgICBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKICAgICAg
ICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoT3RoZXIg
PSBlbWl0TmFrZWRUYWlsQ2FsbCgpOwpAQCAtMjM3LDcgKzI0OSw3IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKQorICAg
IGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxs
X3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQog
ICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIobV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlua0luZm8p
LCByZWdUMik7CkBAIC0yODIsNiArMjk0LDExIEBAIHZvaWQgSklUOjplbWl0X29wX3RhaWxfY2Fs
bF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY29tcGlsZU9w
Q2FsbChvcF90YWlsX2NhbGxfdmFyYXJncywgY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBjb21waWxl
T3BDYWxsKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgY3VycmVudEluc3RydWN0aW9u
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1
Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBp
bGVPcENhbGwob3BfY29uc3RydWN0X3ZhcmFyZ3MsIGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKQEAgLTMxNiw2ICszMzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3RhaWxfY2FsbF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjwKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2Uob3BfdGFpbF9jYWxsX3ZhcmFyZ3Ms
IGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KKwor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKK30KICAgICAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCmluZGV4IDhlOWIyMzllZWUxNDA5Y2M3ZTQ5MDk5NzViN2QxNmY5YWE0MzZhNTQuLmJiYTMw
NmE0MjdjNTg2ODUxNmY2YTZkMzFlMjI4ZGNhNzUzZjYxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTg3LDYgKzg3LDExIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8CiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKG9wX3RhaWxfY2FsbF92
YXJhcmdzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CiB9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2Uob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7Cit9CiAgICAgCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0X3Zh
cmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKQEAgLTEyMiw2ICsxMjcsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBjb21waWxlT3BDYWxsKG9wX3RhaWxfY2FsbF92YXJhcmdzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CisKK3ZvaWQgSklUOjplbWl0X29wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIGNvbXBpbGVPcENhbGwob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cit9CiAgICAgCiB2b2lk
IEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMTMzLDcgKzE0Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVj
dChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNvbXBpbGVPcENhbGwob3Bf
Y29uc3RydWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9
CiAKLXZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBDYWxsTGlua0luZm8qIGluZm8pCit2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJn
c0ZyYW1lKE9wY29kZUlEIG9wY29kZSwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBDYWxsTGlu
a0luZm8qIGluZm8pCiB7CiAgICAgaW50IHRoaXNWYWx1ZSA9IGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICBpbnQgYXJndW1lbnRzID0gaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwpAQCAt
MTQxLDEyICsxNTEsMjIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIENhbGxMaW5rSW5mbyogaW5mbykKICAgICBpbnQgZmlyc3RW
YXJBcmdPZmZzZXQgPSBpbnN0cnVjdGlvbls2XS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0TG9hZChh
cmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXpl
RnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIC1maXJzdEZyZWVSZWdpc3RlciwgZmlyc3RW
YXJBcmdPZmZzZXQpOworICAgIFpfSklUT3BlcmF0aW9uX0VKWlogc2l6ZU9wZXJhdGlvbjsKKyAg
ICBpZiAob3Bjb2RlID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAg
c2l6ZU9wZXJhdGlvbiA9IG9wZXJhdGlvblNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHM7Cisg
ICAgZWxzZQorICAgICAgICBzaXplT3BlcmF0aW9uID0gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFy
YXJnczsKKyAgICBjYWxsT3BlcmF0aW9uKHNpemVPcGVyYXRpb24sIHJlZ1QxLCByZWdUMCwgLWZp
cnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoLWZpcnN0RnJlZVJlZ2lzdGVyKSwgcmVnVDEpOwogICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUo
KnRoaXMsIHJldHVyblZhbHVlR1BSLCBmYWxzZSwgcmVnVDEsIHJlZ1QxKTsKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNiAqIHNpemVvZih2b2lkKikpKSksIHJl
Z1QxLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgZW1pdExvYWQoYXJndW1lbnRzLCByZWdU
MiwgcmVnVDQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUs
IHJlZ1QxLCByZWdUMiwgcmVnVDQsIGZpcnN0VmFyQXJnT2Zmc2V0LCByZWdUMCk7CisgICAgRl9K
SVRPcGVyYXRpb25fRUZKWlogc2V0dXBPcGVyYXRpb247CisgICAgaWYgKG9wY29kZSA9PSBvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgICAgIHNldHVwT3BlcmF0aW9uID0gb3Bl
cmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWU7CisgICAgZWxzZQorICAgICAgICBzZXR1
cE9wZXJhdGlvbiA9IG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lOworICAgIGNhbGxPcGVyYXRp
b24oc2V0dXBPcGVyYXRpb24sIHJlZ1QxLCByZWdUMiwgcmVnVDQsIGZpcnN0VmFyQXJnT2Zmc2V0
LCByZWdUMCk7CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgLy8gUHJv
ZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCkBAIC0yMjksOCArMjQ5LDggQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
dW5zaWduZWQgY2EKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBudWxscHRyOwogICAgIGlmIChv
cGNvZGVJRCAhPSBvcF9jYWxsX2V2YWwpCiAgICAgICAgIGluZm8gPSBtX2NvZGVCbG9jay0+YWRk
Q2FsbExpbmtJbmZvKCk7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBv
cGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGxfdmFyYXJncykKLSAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKGluc3RydWN0aW9u
LCBpbmZvKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlE
ID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJh
cmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAg
ICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZDsKQEAgLTI3Nyw3ICsyOTcsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIG1f
Y2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbExpbmtJbmZvID0gaW5m
bzsKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7Ci0gICAgaWYgKG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncykgewor
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KSB7CiAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKICAgICAgICAgbV9jYWxsQ29t
cGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoT3RoZXIgPSBlbWl0TmFrZWRU
YWlsQ2FsbCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCAxNzQ1ZDZlMjM3Y2MwMDkyZDM2NmQzZjE3YjBlODVjNjQx
NmZlYmExLi43YTk5NDhhNjY5ZDdmZDYwNmIwZDRkNjEyYWFlNjZmNTNhNmU4MjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE5MTcsNiArMTkx
NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2Yo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90KQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIEpTU3RhY2sqIHN0YWNrID0gJmV4ZWMtPmludGVycHJldGVyKCktPnN0YWNrKCk7
CisgICAgcmV0dXJuIHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoZXhlYywgc3RhY2ssIG51
bVVzZWRTdGFja1Nsb3RzKTsKK30KKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNp
emVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xOTI2LDYgKzE5MzQsMTQg
QEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gc2l6ZUZyYW1lRm9yVmFyYXJn
cyhleGVjLCBzdGFjaywgYXJndW1lbnRzLCBudW1Vc2VkU3RhY2tTbG90cywgZmlyc3RWYXJBcmdP
ZmZzZXQpOwogfQogCitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBGb3J3
YXJkQXJndW1lbnRzRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKGV4ZWMsIG5ld0NhbGxGcmFtZSwg
bGVuZ3RoKTsKKyAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOworfQorCiBDYWxsRnJhbWUqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgaW50MzJfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggYTk3MjZlYmQ2YjY4MTlkZWFkNmRjYzRlM2E1MDBiZDk5MWVkMDAyNC4uMTRmYTAzODhkZDVj
YWZiOGYzMmYwODJiMTJjOTIyN2JmZGNiZDNmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTM4MCw3ICszODAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbnN0YW5jZU9mKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBwcm90bykgV1RGX0lOVEVSTkFMOworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
YXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0KSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6
ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGlu
dDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpIFdURl9J
TlRFUk5BTDsKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cEZvcndhcmRB
cmd1bWVudHNGcmFtZShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKIENhbGxGcmFtZSogSklUX09QRVJB
VElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBF
bmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMy
X3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmlu
ZGV4IDQwZjUxYTFhYjZlYTZkNmYwZjhiYzQ2ZTlhZWY2N2VlMDU2NzExNGQuLmMzOWI0MWY1OTQ5
OWQ5NWMyYTdmOTM5MjU1MDc3MGQ4MzA2OTY3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTM2Myw0NyArMTM2Myw2OSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncykKICAgICBM
TElOVF9SRVRVUk5fQ0FMTEVFX0ZSQU1FKGV4ZWNDYWxsZWUpOwogfQogCi1MTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKQorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NpemVfZnJhbWVfZm9yX2ZvcndhcmRfYXJndW1lbnRzKQogewotICAgIExMSU5UX0JF
R0lOX05PX1NFVF9QQygpOworICAgIExMSU5UX0JFR0lOKCk7CiAgICAgLy8gVGhpcyBuZWVkcyB0
bzoKLSAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5l
Y2Vzc2FyeS4KLSAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNz
IHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KLSAgICAKLSAgICBKU1ZhbHVlIGNhbGxl
ZUFzVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKLSAgICAKLSAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUgPSB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKKyAgICAvLyAtIFNldCB1
cCBhIGNhbGwgZnJhbWUgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGN1cnJlbnQgZnJh
bWUuCisKKyAgICB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyA9IC1wY1s1XS51Lm9wZXJhbmQ7
CiAKLSAgICBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhlY0NhbGxlZSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9w
ZXJhbmQsIHZtLnZhcmFyZ3NMZW5ndGgpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50cyA9IHNpemVG
cmFtZUZvckZvcndhcmRBcmd1bWVudHMoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBu
dW1Vc2VkU3RhY2tTbG90cyk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywg
ZXhlYyk7Ci0gICAgCi0gICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUp
ID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsK
LSAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjKTsKLSAgICAKLSAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoZXhlYywgbnVtVXNlZFN0
YWNrU2xvdHMsIGFyZ3VtZW50cyArIDEpOworCisgICAgdm0udmFyYXJnc0xlbmd0aCA9IGFyZ3Vt
ZW50czsKKyAgICB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZSA9IGV4ZWNDYWxsZWU7CisKKyAg
ICBMTElOVF9SRVRVUk5fQ0FMTEVFX0ZSQU1FKGV4ZWNDYWxsZWUpOwogfQotICAgIAotTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzKQorCitlbnVtIGNsYXNz
IFNldEFyZ3VtZW50c1dpdGggeworICAgIE9iamVjdCwKKyAgICBDdXJyZW50QXJndW1lbnRzCit9
OworCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZhcmFyZ3NTZXR1cChFeGVjU3RhdGUqIGV4
ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTZXRBcmd1
bWVudHNXaXRoIHNldCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKICAgICAvLyBU
aGlzIG5lZWRzIHRvOgogICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBp
bGUgaXQgaWYgbmVjZXNzYXJ5LgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBj
b2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgotICAgIAorCiAgICAg
SlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Ci0gICAgCisK
ICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsK
LSAgICAKLSAgICBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhlY0NhbGxlZSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51
Lm9wZXJhbmQsIHZtLnZhcmFyZ3NMZW5ndGgpOwotICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBU
SU9OKGV4ZWMsIGV4ZWMpOwotICAgIAotICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFj
azo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisKKyAgICBpZiAoc2V0ID09IFNldEFyZ3VtZW50
c1dpdGg6Ok9iamVjdCkgeworICAgICAgICBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoZXhl
YywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNW
YWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQsIHZtLnZhcmFyZ3NMZW5ndGgpOworICAgICAgICBMTElO
VF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBleGVjKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
c2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCB2bS52YXJhcmdzTGVuZ3RoKTsKKwogICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNT
dGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhw
Yyk7Ci0gICAgCi0gICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNv
bnN0cnVjdCwgY2FsbGVlQXNWYWx1ZSk7CisKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKIH0KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NhbGxfdmFyYXJncykKK3sKKyAgICByZXR1cm4gdmFyYXJnc1NldHVwKGV4ZWMs
IHBjLCBDb2RlRm9yQ2FsbCwgU2V0QXJndW1lbnRzV2l0aDo6T2JqZWN0KTsKK30KKworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKK3sK
KyAgICByZXR1cm4gdmFyYXJnc1NldHVwKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCwgU2V0QXJndW1l
bnRzV2l0aDo6Q3VycmVudEFyZ3VtZW50cyk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3RfdmFyYXJncykKK3sKKyAgICByZXR1cm4gdmFyYXJnc1NldHVwKGV4
ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpPYmplY3QpOworfQor
CiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBiYWZiMWM5
OTYwMjFlZmZmY2EwZjc0Y2NiNDMwMmM2OTI4YmNhZWUxLi41OTA1ZjQ3N2JiMDU2MzQ1ZDljNjIz
Zjg5ZGU1MmQ2ZDVjOGNlOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaApAQCAtMTA2LDcgKzEwNiw5IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3NpemVfZnJhbWVfZm9yX2ZvcndhcmRfYXJndW1lbnRzKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKTsKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDRiMmM0OTZjYjllMjNlZDE3MzE0NWU2ODkwMjI2NjNmM2VkYWI3MTEuLjJlMjkzOTI2Yzg2
NmNmN2NmZTdmYWUyYzNmNzBiMjk0NjJmOTFhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1MjYsOCArMTUyNiw4
IEBAIF9sbGludF9vcF9jb25zdHJ1Y3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGRvQ2Fs
bChfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdCwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCi1t
YWNybyBkb0NhbGxWYXJhcmdzKHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQorbWFjcm8gZG9DYWxs
VmFyYXJncyhmcmFtZVNsb3dQYXRoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgY2FsbFNs
b3dQYXRoKGZyYW1lU2xvd1BhdGgpCiAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93
X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCiAgICAgIyBjYWxsZWVGcmFtZSBpbiByMQogICAg
IGlmIEpTVkFMVUU2NApAQCAtMTU0NiwxOCArMTU0NiwyNyBAQCBlbmQKIAogX2xsaW50X29wX2Nh
bGxfdmFyYXJnczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgZG9DYWxsVmFyYXJncyhfbGxp
bnRfc2xvd19wYXRoX2NhbGxfdmFyYXJncywgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQorICAgIGRv
Q2FsbFZhcmFyZ3MoX2xsaW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzLCBfbGxp
bnRfc2xvd19wYXRoX2NhbGxfdmFyYXJncywgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiBfbGxp
bnRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNr
U3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCiAgICAgIyBXZSBsaWUgYW5kIHBlcmZvcm0gdGhlIHRh
aWwgY2FsbCBpbnN0ZWFkIG9mIHByZXBhcmluZyBpdCBzaW5jZSB3ZSBjYW4ndAogICAgICMgcHJl
cGFyZSB0aGUgZnJhbWUgZm9yIGEgY2FsbCBvcGNvZGUKLSAgICBkb0NhbGxWYXJhcmdzKF9sbGlu
dF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yVGFpbENhbGwpCisgICAgZG9DYWxs
VmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MsIF9sbGludF9z
bG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yVGFpbENhbGwpCisKKworX2xsaW50X29w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICAjIFdlIGxpZSBhbmQgcGVyZm9ybSB0
aGUgdGFpbCBjYWxsIGluc3RlYWQgb2YgcHJlcGFyaW5nIGl0IHNpbmNlIHdlIGNhbid0CisgICAg
IyBwcmVwYXJlIHRoZSBmcmFtZSBmb3IgYSBjYWxsIG9wY29kZQorICAgIGRvQ2FsbFZhcmFyZ3Mo
X2xsaW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl9mb3J3YXJkX2FyZ3VtZW50cywgX2xsaW50
X3Nsb3dfcGF0aF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsIHByZXBhcmVGb3JUYWlsQ2Fs
bCkKKwogCiBfbGxpbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3M6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGRvQ2FsbFZhcmFyZ3MoX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3RfdmFyYXJncywg
cHJlcGFyZUZvclJlZ3VsYXJDYWxsKQorICAgIGRvQ2FsbFZhcmFyZ3MoX2xsaW50X3Nsb3dfcGF0
aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF92YXJh
cmdzLCBwcmVwYXJlRm9yUmVndWxhckNhbGwpCiAKIAogX2xsaW50X29wX2NhbGxfZXZhbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3
YXJkQXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWls
Q2FsbEZvcndhcmRBcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFkYWE0YzZmZDkyNjQzNmM0MGEw
N2Y3M2E5MWZmMjNjMTE2NzZiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLmpzCkBAIC0wLDAgKzEs
MTMxIEBACisvLyBUaGlzIGlzIHByZXR0eSBiYWQgYnV0IEkgbmVlZCBhIHByaXZhdGUgbmFtZS4K
K3ZhciBwdXRGdW5jVG9Qcml2YXRlTmFtZSA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbihmdW5j
KSB7IEBhcnJheUl0ZXJhdG9ySXNEb25lID0gZnVuYyB9KWApCitwdXRGdW5jVG9Qcml2YXRlTmFt
ZShmdW5jdGlvbiAoYSxiKSB7IHJldHVybiBiOyB9KQorCitmdW5jdGlvbiBjcmVhdGVUYWlsQ2Fs
bEZvcndhcmRpbmdGdW5jV2l0aChib2R5LCB0aGlzVmFsdWUpIHsKKyAgICByZXR1cm4gY3JlYXRl
QnVpbHRpbihgKGZ1bmN0aW9uIChhKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKworICAgICAg
ICAke2JvZHl9CisKKyAgICAgICAgcmV0dXJuIEB0YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMoQGFy
cmF5SXRlcmF0b3JJc0RvbmUsICR7dGhpc1ZhbHVlfSk7CisgICAgfSlgKTsKK30KKwordmFyIGZv
byA9IGNyZWF0ZVRhaWxDYWxsRm9yd2FyZGluZ0Z1bmNXaXRoKCIiLCAiQHVuZGVmaW5lZCIpOwor
CitmdW5jdGlvbiBiYXooKSB7CisgICAgcmV0dXJuIGZvby5jYWxsKHRydWUsIDcpOworfQorbm9J
bmxpbmUoYmF6KTsKKworCisKK3ZhciBmb29Ob0lubGluZSA9IGNyZWF0ZVRhaWxDYWxsRm9yd2Fy
ZGluZ0Z1bmNXaXRoKCIiLCAiQHVuZGVmaW5lZCIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgIGlmIChiYXouY2FsbCgpICE9PSB1bmRl
ZmluZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICBpZiAoZm9vTm9JbmxpbmUu
Y2FsbCh1bmRlZmluZWQsIDMpICE9PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihpKTsKK30KKworcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24gKCkgeyAidXNlIHN0cmlj
dCI7IHJldHVybiB7IHRoaXNWYWx1ZTogdGhpcywgYXJndW1lbnRzVmFsdWU6IGFyZ3VtZW50c307
ICB9KTsKK3ZhciBmb28yID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIsICJ0
aGlzIik7Cit2YXIgZm9vTkkyID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIs
ICJ0aGlzIik7Citub0lubGluZShmb29OSTIpOworCitmdW5jdGlvbiBiYXoyKCkgeworICAgIHJl
dHVybiBmb28yLmNhbGwodHJ1ZSwgNyk7Cit9Citub0lubGluZShiYXoyKTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgIGxldCByZXN1bHQgPSBmb28yLmNhbGwodHJ1
ZSwgNyk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0LmFyZ3Vt
ZW50c1ZhbHVlLmxlbmd0aCAhPT0gMSB8fCByZXN1bHQuYXJndW1lbnRzVmFsdWVbMF0gIT09IDcp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICByZXN1bHQgPSBiYXoyLmNhbGwoKTsK
KyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1ZSB8fCByZXN1bHQuYXJndW1lbnRzVmFs
dWUubGVuZ3RoICE9PSAxIHx8IHJlc3VsdC5hcmd1bWVudHNWYWx1ZVswXSAhPT0gNykKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGZvb05JMi5jYWxsKHRydWUsIDcp
OworICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5hcmd1bWVudHNW
YWx1ZS5sZW5ndGggIT09IDEgfHwgcmVzdWx0LmFyZ3VtZW50c1ZhbHVlWzBdICE9PSA3KQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7Cit9CisKK3B1dEZ1bmNUb1ByaXZhdGVOYW1lKGZ1bmN0
aW9uICgpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gdGhpczsgIH0pOwordmFyIGZvbzMgPSBjcmVh
dGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5jV2l0aCgiIiwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhl
clZhbHVlOiAnaGVsbG8nfSAiKTsKK3ZhciBmb29OSTMgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRp
bmdGdW5jV2l0aCgiIiwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhlclZhbHVlOiAnaGVsbG8nfSAi
KTsKK25vSW5saW5lKGZvb05JMyk7CitmdW5jdGlvbiBiYXozKCkgeworICAgIHJldHVybiBmb28z
LmNhbGwodHJ1ZSwgNyk7Cit9Citub0lubGluZShiYXozKTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDA7IGkrKykgeworICAgIGxldCByZXN1bHQgPSBmb28zLmNhbGwodHJ1ZSwgNyk7Cisg
ICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihpKTsKKyAgICByZXN1bHQgPSBiYXozLmNhbGwoKTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1
ZSAhPT0gdHJ1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGZv
b05JMy5jYWxsKHRydWUsIDcpOworICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7Cit9CisKKworcHV0RnVuY1RvUHJpdmF0ZU5hbWUo
ZnVuY3Rpb24gKCkgeyAidXNlIHN0cmljdCI7IHJldHVybiB0aGlzOyAgfSk7CitsZXQgYm9keVRl
eHQgPSBgCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgaWYgKGEgKyBpID09
PSAxMDApCisgICAgICAgIHJldHVybiBhOworfQorYDsKK3ZhciBmb280ID0gY3JlYXRlVGFpbENh
bGxGb3J3YXJkaW5nRnVuY1dpdGgoYm9keVRleHQsICJ7IHRoaXNWYWx1ZTogdGhpcywgb3RoZXJW
YWx1ZTogJ2hlbGxvJ30gIik7Cit2YXIgZm9vTkk0ID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5n
RnVuY1dpdGgoYm9keVRleHQsICJ7IHRoaXNWYWx1ZTogdGhpcywgb3RoZXJWYWx1ZTogJ2hlbGxv
J30gIik7Citub0lubGluZShmb29OSTQpOworZnVuY3Rpb24gYmF6NCgpIHsKKyAgICByZXR1cm4g
Zm9vNC5jYWxsKHRydWUsIDApOworfQorbm9JbmxpbmUoYmF6NCk7CisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICBsZXQgcmVzdWx0ID0gZm9vNC5jYWxsKHRydWUsIDAp
OworICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5vdGhlclZhbHVl
ICE9PSAiaGVsbG8iKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0g
YmF6NC5jYWxsKCk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0
Lm90aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICByZXN1bHQgPSBmb29OSTQuY2FsbCh0cnVlLCAwKTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1
ZSAhPT0gdHJ1ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGZvb05JNC5jYWxsKHRydWUsIDEpOworICAg
IGlmIChyZXN1bHQgIT09IDEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICByZXN1
bHQgPSBmb29OSTQuY2FsbCh0cnVlLCAiIik7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09
IHRydWUgfHwgcmVzdWx0Lm90aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihpKTsKK30KKworcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24oKSB7IHJldHVy
biBhcmd1bWVudHM7IH0pOwordmFyIGZvbzUgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5j
V2l0aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhlclZhbHVlOiAnaGVsbG8nfSAi
KTsKK2Z1bmN0aW9uIGJhejUoKSB7CisgICAgInVzZSBzdHJpY3QiCisgICAgcmV0dXJuIGZvbzUu
YXBwbHkodGhpcywgYXJndW1lbnRzKTsKK30KK25vSW5saW5lKGJhejUpOworCitmdW5jdGlvbiBh
cnJheUVxKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoKTsKKyAgICB9Cit9CitsZXQgYXJncyA9IFsiYSIsIHt9LCBbXSwgU3ltYm9sKCksIDEsIDEu
MjM0LCB1bmRlZmluZWQsIG51bGxdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykg
eworICAgIGxldCByZXN1bHQgPSBiYXo1LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgYXJy
YXlFcShyZXN1bHQsIGFyZ3MpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281196</attachid>
            <date>2016-06-13 13:51:26 -0700</date>
            <delta_ts>2016-06-13 13:53:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158666-20160613135300.patch</filename>
            <type>text/plain</type>
            <size>75716</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTNkMjExNzk1YWM4ODgzOGUzZTNlZjhlNzgxOGRhMjBhYWVkOWM4Li4wZTZmOTAxNGZmMzQ5ODIx
ODUwNDg5MjlkODM4MTBjODMxOGY2ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjMgQEAKKzIwMTYtMDYtMTIgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBidWlsdGluIG9wY29kZSB0YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFdl
IHNob3VsZCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGhhdmUgYSBidWlsdGluIGZvcndhcmQgaXRz
CisgICAgICAgIGFyZ3VtZW50cyB0byBhIGhlbHBlciB3aXRob3V0IGFsbG9jYXRpbmcgYW4gYXJn
dW1lbnRzIG9iamVjdC4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgbmV3IGJ5dGVjb2RlIGlu
dHJpbnNpYyBAdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzIHRoYXQKKyAgICAgICAgdGFrZXMgdHdv
IHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSB0YXJnZXQgb2YgdGhlIGNhbGwgYW5kIHRoZQorICAg
ICAgICBzZWNvbmQgaXMgdGhlIG5ldyB0aGlzIHZhbHVlLiBUaGlzIG9wY29kZSB3aWxsIHRhaWwg
Y2FsbCB0byB0aGUKKyAgICAgICAgcGFzc2VkIGZ1bmN0aW9uIHdpdGhvdXQgdHJpZ2dlcmluZyBh
biBhbGxvY2F0aW9uIG9mIGFuIGFyZ3VtZW50cworICAgICAgICBvYmplY3QgZm9yIHRoZSBjYWxs
ZXIgZnVuY3Rpb24uCisKKyAgICAgICAgSW4gdGhlIExMSW50IGFuZCBCYXNlbGluZSB0aGlzIGZ1
bmN0aW9uIGFjdHMgdGhlIHNhbWUgd2F5IGEgbm9ybWFsCisgICAgICAgIHRhaWwgY2FsbCBkb2Vz
LiAgVGhlIGJ5dGVjb2RlIHdpbGwgYWxsb2NhdGUgYSBuZXcgc3RhY2sgZnJhbWUKKyAgICAgICAg
Y29weWluZyBhbGwgdGhlIGFyZ3VtZW50cyBvZiB0aGUgY2FsbGVyIGZ1bmN0aW9uIGludG8gdGhl
IG5ldworICAgICAgICBmcmFtZSwgYWxvbmcgd2l0aCB0aGUgbmV3IHRoaXMuIFRoZW4gd2hlbiB0
aGUgYWN0dWFsIGNhbGwgaGFwcGVucworICAgICAgICB0aGUgbmV3IGZyYW1lIGlzIGNvcGllZCBv
dmVyIHRoZSBjYWxsZXIgZnJhbWUuIFdoaWxlIHRoaXMgaXMgbm90CisgICAgICAgIG5lY2Vzc2Fy
eSwgaXQgYWxsb3dzIHRoZSB0YXJnZXQgZnVuY3Rpb24gdG8gaGF2ZSBtb3JlIGFyZ3VtZW50cwor
ICAgICAgICB0aGFuIHRoZSBjYWxsZXIgZnVuY3Rpb24gdmlhIGFyaXR5IGZpeHVwLgorCisgICAg
ICAgIE9uY2Ugd2UgZ2V0IHRvIHRoZSBERkcgd2UgcmV1c2UgZXhpc3RpbmcgREZHIE5vZGVzIGZv
ciBmb3J3YXJkaW5nCisgICAgICAgIGFyZ3VtZW50cywgYWx0aG91Z2ggdGhlcmUgd2VyZSBzb21l
IG1pbm9yIGNoYW5nZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgc3dhcHMgdGhlIG1lYW5pbmcgb2Yg
dGhlIHNlY29uZCBhbmQgdGhpcmQgY2hpbGRyZW4gZm9yIGVhY2ggREZHCisgICAgICAgIHZhcmFy
Z3Mgbm9kZSwgZXhjaGFuZ2luZyB0aGUgYXJnbXVtZW50cyBhbmQgdGhpcyBjaGlsZCwKKyAgICAg
ICAgcmVzcGVjdGl2ZWx5LiBJdCBhbHNvIG1ha2VzIHRoZSBhcmd1bWVudHMgY2hpbGQgZm9yIGVh
Y2ggdmFyYXJncworICAgICAgICBub2RlLCBhcyB3ZWxsIGFzIHRoZSBGb3J3YXJkVmFyYXJncyBu
b2RlIG9wdGlvbmFsLiBJZiB0aGUgb3B0aW9uYWwKKyAgICAgICAgY2hpbGQgaXMgbWlzc2luZywg
dGhlbiBmb3J3YXJkaW5nIG5vZGUgYXNzdW1lcyB0aGF0IHRoZSBhcmd1bWVudHMKKyAgICAgICAg
Zm9yIHRoZSBub2RlJ3MgaW5saW5lQ2FsbEZyYW1lIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIEZp
bmFsbHksCisgICAgICAgIHdoZW4gaW5saW5pbmcgdGhlIHRhcmdldCBvZiBhbiBpbmxpbmVkCisg
ICAgICAgIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyB3ZSBtYWtlIHN1cmUgdGhlIGFy
Z3VtZW50cyBvZiB0aGUKKyAgICAgICAgZm9yd2FyZGluZyBmdW5jdGlvbiBhcmUgbWFya2VkIGFz
IG5vbi11bmJveGFibGUgc2luY2UgdGhpcyB3b3VsZAorICAgICAgICBub3JtYWxseSBiZSBkb25l
IGJ5IHRoZSBjYWxsZXIncyBjcmVhdGUgYXJndW1lbnRzIG9iamVjdCBub2RlLAorICAgICAgICB3
aGljaCBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5m
by5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3NpdGlv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3MpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdHJ5R2V0QnlJ
ZCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0FyZ3VtZW50c0NoaWxkKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcmd1bWVudHNDaGls
ZCk6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlRm9yd2FyZFZhcmFyZ3MpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAqIGRmZy9ERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNv
bnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlRm9yd2FyZFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OnNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKToKKyAgICAgICAgKEpTQzo6c2V0
dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnZhcmFyZ3NTZXR1cCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHB1dEZ1bmNUb1ByaXZhdGVOYW1lLmNyZWF0ZUJ1
aWx0aW4pOgorICAgICAgICAocHV0RnVuY1RvUHJpdmF0ZU5hbWUpOgorICAgICAgICAoY3JlYXRl
VGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKGJh
ejIpOgorICAgICAgICAoYmF6Myk6CisgICAgICAgIChsZXQuYm9keVRleHQpOgorICAgICAgICAo
YmF6NCk6CisgICAgICAgIChiYXo1KToKKyAgICAgICAgKGFycmF5RXEpOgorCiAyMDE2LTA2LTA4
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIHNo
b3VsZCBiZSBhYmxlIHRvIGxvb2t1cCBzeW1ib2xzIGJ5IGlkZW50aWZpZXIgaW4gYnVpbHRpbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDJjMzk5MzVmYjc4NWQ3ODUyNDA0ZDVhZjFiOWEzOTkx
M2I0ZDU4MDIuLjA3YjU5NTg3OTgzMGQwNzQ4ZjFiYjEyMjM0ZWFhOWY4NWU1MmJkMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJZGVudGlmaWVyOwogICAg
IG1hY3JvKGFyZ3VtZW50Q291bnQpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKICAgICBtYWNybyhp
c09iamVjdCkgXAorICAgIG1hY3JvKHRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1h
Y3JvKHRyeUdldEJ5SWQpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3Jv
KHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCmluZGV4IDhlOTgwNWE2NzUzZWViNmVjMDAwMTdhNzUwMjVhODk3MTgxM2YzOTIu
LjQ3NTMyNzk0NzgzOTI1MDE0ZWYwZTE5MWUzMzNlYmJlYTY5MThjYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwOCw2ICsx
MDgsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0aCIg
OiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVuZ3Ro
IiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbF92YXJhcmdzIiwg
Imxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3JldCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY29u
c3RydWN0IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25z
dHJ1Y3RfdmFyYXJncyIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBjMzdhNzljNGE0ZmJiZWViNDQ4MGZj
N2U0NDhjNDM5MzQxYjM1YmFlLi5jN2ZiZDZkNjRmYTA2OWVmNGU1MDZjNzYxYjA2M2RmYjBiYjZi
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtMjIzLDcgKzIyMyw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCgKICAgICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKLSAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKKyAg
ICBjYXNlIG9wX2RlbF9ieV92YWw6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHM6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0zOTAsNiArMzkxLDcg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxf
dmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAg
ICAgY2FzZSBvcF9jYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCmluZGV4IGJlZWVhYTEyYzNkMjgwYmIxYjc5OTIzZWMxYjMzMjcyYzZlNjA5MTIu
LmY3ZTZlNzM4ZmY4YzhmZjMxMzg5ZTgxNjQyNTBhYzJjNWNhYTQ0NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7CiAgICAgICAgIGlm
IChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGFpbENhbGw7
Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyk7CisgICAg
ICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCA1N2YzMTVmYmNjYjNiYzc1YWYzMmQxY2Y2YTM1OTgwYmI5YzI2M2QxLi4yMzBjODIzMDNl
ODhjNThiNzU5YzgzNDliMjIxOGI3MDNhZTE5ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Niw3ICsxNDY2LDggQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NvbnN0
cnVjdF92YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKLSAgICAgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfdmFyYXJnczogeworICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJh
cmdzOgorICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czogewogICAg
ICAgICAgICAgaW50IHJlc3VsdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGNhbGxlZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHRoaXNWYWx1ZSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTQ3NCw3ICsxNDc1LDE5IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCB2YXJBcmdPZmZzZXQgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wY29kZSA9PSBvcF9jYWxsX3ZhcmFyZ3MgPyAi
Y2FsbF92YXJhcmdzIiA6IG9wY29kZSA9PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyA/ICJjb25zdHJ1
Y3RfdmFyYXJncyIgOiAidGFpbF9jYWxsX3ZhcmFyZ3MiKTsKKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIG9wTmFtZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2FsbF92YXJhcmdzKQor
ICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOworICAgICAgICAgICAgZWxz
ZSBpZiAob3Bjb2RlID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQorICAgICAgICAgICAgICAgIG9w
TmFtZSA9ICJjb25zdHJ1Y3RfdmFyYXJncyI7CisgICAgICAgICAgICBlbHNlIGlmIChvcGNvZGUg
PT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxf
Y2FsbF92YXJhcmdzIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9wY29kZSA9PSBvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcE5hbWUpOwogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVkLCAlZCIsIHJlZ2lzdGVyTmFtZShyZXN1bHQpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUodGhpc1ZhbHVl
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0
ZXIsIHZhckFyZ09mZnNldCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBp
dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwNTUsNiAr
MjA2OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6Cisg
ICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgogICAgICAgICBjYXNl
IG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsKICAg
ICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2NmJlMGE2MDY1MWMxMTI4NTc0OGVhMzAyYzA5NzRm
OThlNzhiZDE2Li4zOTljMmU4NTRiMzRlODhhMjhkODJkMzI1MTc1N2QxYTdjNGU4ZGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMzExNSw2ICszMTE1LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJncyhvcF9jb25zdHJ1Y3RfdmFyYXJncywg
ZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZp
cnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQorCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxGb3J3YXJkQXJndW1lbnRzSW5UYWls
UG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0
aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7Cisg
ICAgQVNTRVJUKG1faW5UYWlsUG9zaXRpb24pOworICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mo
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3Rlciwg
bnVsbHB0ciwgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOworfQogICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1
bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CkBAIC0zMTMw
LDcgKzMxMzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJh
cmdzKE9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCogZHN0LAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1JlZ2lzdGVyID8gdGhpc1Jl
Z2lzdGVyLT5pbmRleCgpIDogMCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50
cy0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50cyA/IGFyZ3Vt
ZW50cy0+aW5kZXgoKSA6IDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmaXJzdEZyZWVS
ZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0VmFyQXJn
T2Zmc2V0KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAxNmIxZjUzOTEwYzg2N2I3NjZjNGU1MWQ4ZWIzM2U3NTg0ZGViOWFjLi5mN2I2
NTY1N2IxMDI4ZDMzOWYxNjlkYzU2MmNlYWFjMzhmNDA5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01
NzcsNiArNTc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
YWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMm
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBS
ZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJ
RCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
YWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lz
dGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJblRhaWxQb3NpdGlvbihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogZmly
c3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0
b3JPcHRpb24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IGRmYjQxNjdmMThiM2UxNDc1YTIzZTIwZTFmMTRjNTVjYTgwNDAzYmQuLjhhYmI0NThlMTI3
MmQxOGZjYzE3NWU5OWM1MWMyYmQ0ZDZkZjcxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg4OCw2ICs4ODgsMTgg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRC
eVZhbERpcmVjdChCeXRlY29kZUdlbmVyYXQKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50
cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAg
QXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9k
ZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbEZvcndhcmRBcmd1bWVudHNJ
blRhaWxQb3NpdGlvbihmaW5hbERzdC5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rl
ci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX3RyeUdldEJ5SWQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7CkBAIC04OTksOCArOTExLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190cnlHZXRCeUlkKEJ5dGVjb2RlR2VuZXJhdG9yJgog
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5v
ZGUtPm1fZXhwciktPnZhbHVlKCk7CiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0gICAg
UmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRUcnlHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQo
KSwgaWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERlc3QgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRyeUdldEJ5
SWQoZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiB9CiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
aW5kZXggOTE5MmNmOTA0ODliODEzZDUzODY0MTg2Mzc2NGIyYjM3MTNmODkwYy4uZmIzYTBiMjg1
NzVlODU1NTEwMzRkMGRkMmQ1Y2Q3ODlmY2Q3YmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxs
VmFyYXJnczoKICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxs
ZXI6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKSwgbm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKSwgbm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKQEAgLTYxMiw3ICs2
MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoK
ICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgICAgICBj
YXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6IHsKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSogY2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDMoKS5ub2RlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9jYW5kaWRhdGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBAIC02MzMsNyAr
NjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIGFyZ3VtZW50IDogYXJndW1l
bnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoRWRnZShhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5vcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGJiM2JlMTc4YjFiZDZjYzFlZTY2NjE0Y2YzOTFiM2EwMTEyMjFm
Y2IuLmQ0ZGYwOTM1MWI3OTYxMWZkN2YyY2E1ODc4ODdjYmMzNzI5MmRkMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC04MjgsNyAr
ODI4LDggQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKLSAgICAgICAgICAgICAgICBjYXNl
IG9wX3RhaWxfY2FsbF92YXJhcmdzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczoKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gU3BlY0Z1bGxUb3A7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMjksNyArMTIzMCw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAg
Tm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICBy
ZXR1cm4gVGVybWluYWw7Ci0gICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MpOworICAgICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJh
cmdzICYmIGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgICAg
ICByZXR1cm4gTm9uVGVybWluYWw7CiAgICAgfQogICAgIApAQCAtMTI0Niw3ICsxMjQ3LDcgQEAg
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAog
ICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBjYWxsT3BJbmZvLCBjYWxs
VGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRp
Y3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgcmV0
dXJuIFRlcm1pbmFsOwotICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFy
Z3MpOworICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2Fs
bE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgcmV0dXJuIE5vblRl
cm1pbmFsOwogfQogCkBAIC0xMjU0LDcgKzEyNTUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywg
TgogewogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPT0gT1BDT0RF
X0xFTkdUSChvcF9jb25zdHJ1Y3RfdmFyYXJncykpOwogICAgIEFTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGxfdmFyYXJncykgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGxfdmFyYXJncykp
OwotICAgIAorCiAgICAgaW50IHJlc3VsdCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgY2Fs
bGVlID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGludCB0aGlzUmVnID0gcGNbM10udS5vcGVyYW5k
OwpAQCAtMTI4NSwxNiArMTI4NiwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTgogICAgIGRh
dGEtPmZpcnN0VmFyQXJnT2Zmc2V0ID0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgCiAgICAgTm9k
ZSogdGhpc0NoaWxkID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSk7CisgICAgTm9kZSog
YXJndW1lbnRzQ2hpbGQgPSBudWxscHRyOworICAgIGlmIChvcCAhPSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzKQorICAgICAgICBhcmd1bWVudHNDaGlsZCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYXJn
dW1lbnRzKSk7CiAKLSAgICBpZiAob3AgPT0gVGFpbENhbGxWYXJhcmdzKSB7CisgICAgaWYgKG9w
ID09IFRhaWxDYWxsVmFyYXJncyB8fCBvcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKSB7CiAg
ICAgICAgIGlmIChhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkgewotICAgICAgICAgICAg
YWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEpLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgZ2V0KFZp
cnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKSwgdGhpc0NoaWxkKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIHRoaXNDaGlsZCwg
YXJndW1lbnRzQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgICAgICB9
Ci0gICAgICAgIG9wID0gVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjsKKyAgICAgICAgb3Ag
PSBvcCA9PSBUYWlsQ2FsbFZhcmFyZ3MgPyBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVyIDog
VGFpbENhbGxGb3J3YXJkVmFyYXJnc0lubGluZWRDYWxsZXI7CiAgICAgfQogCi0gICAgTm9kZSog
Y2FsbCA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBj
YWxsVGFyZ2V0LCBnZXQoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpLCB0aGlzQ2hpbGQpOwor
ICAgIE5vZGUqIGNhbGwgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgY2FsbFRhcmdldCwgdGhpc0NoaWxkLCBhcmd1bWVudHNDaGlsZCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgIGlmIChyZXN1bHRSZWcuaXNWYWxp
ZCgpKQogICAgICAgICBzZXQocmVzdWx0UmVnLCBjYWxsKTsKQEAgLTE3NjcsOCArMTc3MSwxMSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgICAgICAg
ICAgZGF0YS0+b2Zmc2V0ID0gYXJndW1lbnRzT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBk
YXRhLT5saW1pdCA9IG1heE51bUFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+
bWFuZGF0b3J5TWluaW11bSA9IG1hbmRhdG9yeU1pbmltdW07Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChMb2FkVmFyYXJncywgT3BJbmZvKGRhdGEpLCBnZXQo
YXJndW1lbnRzQXJndW1lbnQpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbE9wID09
IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEZvcndhcmRWYXJhcmdzLCBPcEluZm8oZGF0YSkpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKExvYWRWYXJhcmdzLCBPcElu
Zm8oZGF0YSksIGdldChhcmd1bWVudHNBcmd1bWVudCkpOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIExvYWRWYXJhcmdzIG1heSBPU1IgZXhpdC4gSGVuY2UsIHdlIG5lZWQgdG8ga2VlcCBhbGl2
ZSBjYWxsVGFyZ2V0Tm9kZSwgdGhpc0FyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgIC8vIGFu
ZCBhcmd1bWVudHNBcmd1bWVudCBmb3IgdGhlIGJhc2VsaW5lIEpJVC4gSG93ZXZlciwgd2Ugb25s
eSBuZWVkIGEgUGhhbnRvbSBmb3IKQEAgLTE5NjIsNyArMTk2OSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAg
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgZm9y
IGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxpbmVkIGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0
eSBxdWV1ZS4KICAgICAgICAgaWYgKE5vZGUqIHRlcm1pbmFsID0gbV9jdXJyZW50QmxvY2stPnRl
cm1pbmFsKCkpCi0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+
b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MpOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0ZXJtaW5hbCwgdGVybWluYWwtPm9wKCkgPT0gVGFp
bENhbGwgfHwgdGVybWluYWwtPm9wKCkgPT0gVGFpbENhbGxWYXJhcmdzIHx8IHRlcm1pbmFsLT5v
cCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CkBAIC0yMDAzLDcgKzIwMTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZygKICAgICBtX2V4aXRPSyA9IHRydWU7IC8vIE9yaWdpbiBjaGFuZ2Vk
LCBzbyBpdCdzIGZpbmUgdG8gZXhpdCBhZ2Fpbi4KICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OwogICAgIGlmIChOb2RlKiB0ZXJtaW5hbCA9IG1fY3VycmVudEJsb2NrLT50ZXJtaW5hbCgpKQot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2Fs
bCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHRlcm1pbmFsLCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+
b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3MgfHwgdGVybWluYWwtPm9wKCkgPT0gVGFpbENhbGxGb3J3
YXJkVmFyYXJncyk7CiAgICAgZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAg
ICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKQEAgLTQ0MzcsMTcgKzQ0
NDQsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVD
YWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwotICAgICAg
ICAgICAgLy8gVmVyaWZ5IHRoYXQgaGFuZGxlQ2FsbCgpLCB3aGljaCBjb3VsZCBoYXZlIGlubGlu
ZWQgdGhlIGNhbGxlZSwgZGlkbid0IHRyYXNoIG1fY3VycmVudEluc3RydWN0aW9uLgotICAgICAg
ICAgICAgQVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7
CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09
IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQg
dGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2FsbCk7CiAKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6IHsKICAg
ICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJt
aW5hbGl0eSA9IGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbCwgQ2FsbE1v
ZGU6OlRhaWwpOwotICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgaGFuZGxlQ2FsbCgpLCB3aGlj
aCBjb3VsZCBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgZGlkbid0IHRyYXNoIG1fY3VycmVudElu
c3RydWN0aW9uLgotICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1
cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3Vy
cmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZUNhbGwsIHdoaWNo
IG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlv
biIpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91
bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBl
eGl0IHRoZSBmdW5jdGlvbi4KLSAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJt
aW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1w
dCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNsZWFuCisgICAgICAgICAgICAvLyBJZiB0aGUgY2Fs
bCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4gd2Ugd2FudCB0aGUgc3Vic2VxdWVudCBv
cF9yZXQvb3BfanVtcCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNsZWFuCiAgICAgICAgICAgICAv
LyB0aGluZ3MgdXAuCiAgICAgICAgICAgICBpZiAodGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwp
IHsKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90YWlsX2NhbGwpOwpAQCAtNDQ1OCwx
OCArNDQ2MywyMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogCiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgICAgICAgICAgaGFuZGxlQ2Fs
bChjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdCwgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7Cisg
ICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1
cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhl
IGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2Nh
bGxfdmFyYXJnczogewogICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3Ry
dWN0aW9uLCBDYWxsVmFyYXJncywgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rp
b24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVl
LCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jYWxsX3ZhcmFyZ3MpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczogewogICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAgICAg
IFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3Ry
dWN0aW9uLCBUYWlsQ2FsbFZhcmFyZ3MsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0
aW9uLCAiaGFuZGxlVmFyYXJnc0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxl
ZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAgICAgLy8gSWYgdGhl
IGNhbGwgaXMgdGVybWluYWwgdGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5
dGVjb2RlcyBhcyB0aGUgVGFpbENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KLSAgICAgICAg
ICAgIC8vIElmIHRoZSBjYWxsIGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50
IHRoZSBzdWJzZXF1ZW50IG9wX3JldC9vcF9qdW1wdCB0byB1cGRhdGUgbWV0YWRhdGEgYW5kIGNs
ZWFuCisgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIs
IHRoZW4gd2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3BfanVtcCB0byB1cGRhdGUgbWV0
YWRhdGEgYW5kIGNsZWFuCiAgICAgICAgICAgICAvLyB0aGluZ3MgdXAuCiAgICAgICAgICAgICBp
ZiAodGVybWluYWxpdHkgPT0gTm9uVGVybWluYWwpIHsKICAgICAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF90YWlsX2NhbGxfdmFyYXJncyk7CkBAIC00NDc3LDkgKzQ0ODUsMjcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF90YWlsX2NhbGxfdmFyYXJncyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KKworICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czogewor
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCB1bmJveCBv
dXIgYXJndW1lbnRzIGhlcmUgc2luY2UgdGhhdCB3b24ndCBiZQorICAgICAgICAgICAgLy8gZG9u
ZSBieSB0aGUgYXJndW1lbnRzIG9iamVjdCBjcmVhdGlvbiBub2RlIGFzIHRoYXQgbm9kZSBtYXkg
bm90IGV4aXN0LgorICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7CisgICAgICAgICAg
ICBmbHVzaEZvclJldHVybigpOworICAgICAgICAgICAgVGVybWluYWxpdHkgdGVybWluYWxpdHkg
PSBoYW5kbGVWYXJhcmdzQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsRm9yd2FyZFZh
cmFyZ3MsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
bV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlVmFyYXJn
c0NhbGwsIHdoaWNoIG1heSBoYXZlIGlubGluZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJl
bnRJbnN0cnVjdGlvbiIpOworICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGwgaXMgdGVybWluYWwg
dGhlbiB3ZSBzaG91bGQgbm90IHBhcnNlIGFueSBmdXJ0aGVyIGJ5dGVjb2RlcyBhcyB0aGUgVGFp
bENhbGwgd2lsbCBleGl0IHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgIC8vIElmIHRoZSBjYWxs
IGlzIG5vdCB0ZXJtaW5hbCwgaG93ZXZlciwgdGhlbiB3ZSB3YW50IHRoZSBzdWJzZXF1ZW50IG9w
X3JldC9vcF9qdW1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQgY2xlYW4KKyAgICAgICAgICAgIC8v
IHRoaW5ncyB1cC4KKyAgICAgICAgICAgIGlmICh0ZXJtaW5hbGl0eSA9PSBOb25UZXJtaW5hbCkg
eworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3RhaWxfY2FsbCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2Nv
bnN0cnVjdF92YXJhcmdzOiB7CiAgICAgICAgICAgICBoYW5kbGVWYXJhcmdzQ2FsbChjdXJyZW50
SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdFZhcmFyZ3MsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOworICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJy
ZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5l
ZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IDIyNjdjM2U4ZDhiY2M1NzEyNDE4MjgwNmI0ZjYyNTJlMzAxMzM5ZmMuLjI1MTI4NDJjMTc1
NzI3MzBhZjUwMjI1YmRjZjY2ZTE0Nzc0MWM1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTIwMCw2ICsyMDAsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfY2FsbF92
YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAgY2FzZSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Njb3BlZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCBhMzZjM2E0YTllZWNjNWVlZGI5NjliOTRiM2QxOGQ5NWJhMjc5ODMwLi44
ZjdhYTE1ZjdkNDUyNTQ1YWJlNzI3NDQ2YjUzZGNiMWIxZTVhMDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEzMjEsNyArMTMyMSw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNh
c2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzOgotICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5k
czoKICAgICAgICAgY2FzZSBQdXRIaW50OgpAQCAtMTUyOSw2ICsxNTI4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdz
OgorICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250
cm9sRmxvdzoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGZkZWZiYWE1MzJkOTgx
N2QzNmFjMmFkMWY1YWU5Yzk3MDcwMTljNDcuLmQ2ZTZkMzNiODVkMTFjMjIzOTkxY2E1NGM3YTlh
ZTQ5ZmM0YzJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03NDksNyAr
NzQ5LDUxIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNTRVJUKG9wKCkgPT0gQ3JlYXRlQWN0
aXZhdGlvbik7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnJvemVuVmFsdWUqPihtX29w
SW5mbzIpLT52YWx1ZSgpOwogICAgIH0KLSAgICAgCisKKyAgICBib29sIGhhc0FyZ3VtZW50c0No
aWxkKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbDoKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5k
czoKKyAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKKyAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJn
czoKKyAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBDYWxsRm9yd2FyZFZh
cmFyZ3M6CisgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgY2FzZSBDb25z
dHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAg
ICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3NJbmxpbmVkQ2FsbGVyOgorICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3NJ
bmxpbmVkQ2FsbGVyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFZGdl
JiBhcmd1bWVudHNDaGlsZCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAg
ICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsT3V0T2ZCb3VuZHM6CisgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CisgICAgICAgIGNhc2Ug
Rm9yd2FyZFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gY2hpbGQxKCk7CisgICAgICAgIGNh
c2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAg
ICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZh
cmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgICAgICBjYXNlIFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENh
bGxlcjoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzSW5saW5lZENhbGxlcjoK
KyAgICAgICAgICAgIHJldHVybiBjaGlsZDMoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gY2hp
bGQxKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGNvbnRhaW5zTW92SGludCgpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggM2U1YTgzMzJjMTFh
ZjFkMTllNGFlNGQ0YTUxZGY5NjQ5YWRmMGFkMC4uOGQxYTc5ZGQ3MjcwZDNkMzdjNjBmNjcwMWE0
ZjlmMzM1ZDlmOGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAgLTExNSw3ICsxMTUsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWls
Q2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3NJ
bmxpbmVkQ2FsbGVyOiB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IG1fbm9kZS0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7
CisKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+YXJndW1lbnRzQ2hpbGQoKSkKKyAgICAgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUgPSBtX25vZGUtPmFyZ3VtZW50c0NoaWxkKCktPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAg
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAvLyBSZWFk
IHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzIGFuZCBhcmd1bWVudCBjb3VudC4KICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCk7IGktLSA+IDE7KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAzMGMzZjgzMzBkNjVjZDU4
MTQ0MTU0NzcwNTA2ZmQxMDVhOWQxN2FhLi4yZDU4YjE2YTEyMmJhNDU2NWFiYTcyZWZmYWMyNDQ3
MDNjYmMzZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTcyLDcgKzk3Miw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0
T2ZCb3VuZHM6Ci0gICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgUHV0
SGludDoKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAgLTEwNTUsNiArMTA1NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNh
c2UgTG9hZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNh
c2UgQ29weVJlc3Q6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCAwNTgxYWNkMjM4MDE5MmI0ZGE2ZDg2MDU2OGFkNzFjZjVlNDZkMmIzLi5lYzA5MzUw
YTI5ZWU1MGQ0OWVkNDk3OTdlNWQ2MjA3ZWYzMGVhM2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNTk0Niw4ICs1OTQ2LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSogbm9kZSkK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKiBub2RlKQog
ewogICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmxvYWRWYXJhcmdzRGF0YSgpOwot
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQxKCktPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgIAorICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lOworICAgIGlmIChub2RlLT5jaGlsZDEoKSkKKyAgICAgICAg
aW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQxKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CisgICAgZWxzZQorICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworCiAgICAgR1BSVGVtcG9yYXJ5IGxlbmd0aCh0
aGlzKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyBs
ZW5ndGhHUFIgPSBsZW5ndGguZ3ByKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2YjM4NjJhOWQyZDM1YjViMmI0
NzcwNzgzZjA1MjY3MGVlYjU2NjI2Li40NTJiNDJjZWJiOTgxNWZmMGViNDQ3MTdlZTgzZGUxMjk4
ZGZmZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTcyOSw3ICs3MjksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKGlzRm9yd2FyZFZh
cmFyZ3MpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICB1c2Uo
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAg
ICAgICAgICAgIHVzZShub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSMTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMjsKQEAg
LTc0MSw3ICs3NDIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobnVt
VXNlZFN0YWNrU2xvdHMpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2U7Ci0gICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0
Q2FzZShtX2ppdCwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRj
aEdQUjMsIG5vZGUtPmNoaWxkMigpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLCBk
YXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2UpOworICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkp
CisgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+Y2hpbGQzKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZTsKKyAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKG1faml0LCBz
Y3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgaW5saW5l
Q2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2UpOwogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNs
b3dDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7CkBAIC03NTksNyArNzY1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGF1dG8gbG9h
ZEFyZ3VtZW50c0dQUiA9IFsmXSAoR1BSUmVnIHJlc2VydmVkR1BSKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlc2VydmVkR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICAgICAgICAg
IGxvY2socmVzZXJ2ZWRHUFIpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3Vt
ZW50cyh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYXJndW1lbnRzKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBhcmd1
bWVudHNUYWdHUFIgPSBhcmd1bWVudHMudGFnR1BSKCk7CiAgICAgICAgICAgICAgICAgYXJndW1l
bnRzUGF5bG9hZEdQUiA9IGFyZ3VtZW50cy5wYXlsb2FkR1BSKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc2VydmVkR1BSICE9IEludmFsaWRHUFJSZWcpCkBAIC03OTgsNyArODA0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdGhlIGFyZ3VtZW50cyBhcnJheSBhbnltb3JlLgogICAgICAgICBp
ZiAoaXNWYXJhcmdzKQotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHVzZShub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgLy8gTm93IHNldCB1cCB0aGUgInRo
aXMiIGFyZ3VtZW50LgogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzQXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzQ0MTM5YmUxZjdiNzRlZGFmYWMwMjM0MWZkNGRhODg3
MjEwNDczMS4uMTdhZDQ4NDQwNTFhZTkxYzNlOWUyZjIwNWQ3NjM4MzQ1MjQ0MmU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC03MDEsNyArNzAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgCiAgICAgICAgIGlmIChpc0ZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICB1c2Uobm9kZS0+
Y2hpbGQzKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjE7
CiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjI7CkBAIC03MTMsNyArNzE0LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG51bVVzZWRTdGFja1Nsb3RzKSwgc2Ny
YXRjaEdQUjIpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlOwot
ICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UobV9qaXQsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2RlLT5jaGlsZDIo
KS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZz
ZXQsIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZSA9IG5vZGUtPmNoaWxkMygpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICBl
bWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShtX2ppdCwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hH
UFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmly
c3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7
CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Zv
clZhcmFyZ3MpOwpAQCAtNzMwLDcgKzczNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhdXRvIGxvYWRBcmd1bWVudHNHUFIgPSBbJl0g
KEdQUlJlZyByZXNlcnZlZEdQUikgewogICAgICAgICAgICAgICAgIGlmIChyZXNlcnZlZEdQUiAh
PSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAgICAgICAgICBsb2NrKHJlc2VydmVkR1BSKTsK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHModGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50cyh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzR1BSID0gYXJndW1lbnRz
LmdwcigpOwogICAgICAgICAgICAgICAgIGlmIChyZXNlcnZlZEdQUiAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICAgICAgICAgICAgICB1bmxvY2socmVzZXJ2ZWRHUFIpOwpAQCAtNzY3LDEwICs3
NzMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIGFyZ3VtZW50cyBhcnJheSBhbnltb3Jl
LgogICAgICAgICBpZiAoaXNWYXJhcmdzKQotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgLy8gTm93IHNl
dCB1cCB0aGUgInRoaXMiIGFyZ3VtZW50LgotICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzQXJn
dW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
QXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJSZWcgdGhpc0FyZ3Vt
ZW50R1BSID0gdGhpc0FyZ3VtZW50LmdwcigpOwogICAgICAgICB0aGlzQXJndW1lbnQudXNlKCk7
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKaW5kZXggNTM1ZTc5ZjMyYTc2YWI2MzFiOWY0MTEwZTc5
N2I1Njg4YWRiMDE0OC4uZTNjNTJhY2E5ZGExM2ZjZDgzYzE4ZTAxYjg1NmY4YTQ4MDk4OWU5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdz
OgogICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjYW5kaWRhdGUgfHwgbm9kZS0+Y2hpbGQz
KCkgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09
IGNhbmRpZGF0ZSB8fCBub2RlLT5jaGlsZDIoKSA9PSBjYW5kaWRhdGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0yNzQsMjUgKzI3NCwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDMoKSAhPSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENhbGxGb3J3
YXJkVmFyYXJncyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpICE9IGNhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQzKCkgIT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb25zdHJ1Y3RGb3J3YXJkVmFyYXJn
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxW
YXJhcmdzOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKSAhPSBjYW5kaWRhdGUp
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpICE9IGNhbmRpZGF0ZSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDMoKSAhPSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3NJbmxpbmVkQ2FsbGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBl
YWNmMjRhNjBjMzI5NjQ1MTgxYjg0ZTQ2ZGMzNTA5ZThmZWJmOWNlLi40MDM4MGY0ZmY4MzZkNGUw
ZjAwYjM2NDRjOTgzZjVmZjI1ZTA2MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01MTk0LDcgKzUxOTQsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgTFZhbHVlIGpzQ2FsbGVl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHRoaXNBcmcg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBMVmFsdWUgdGhpc0FyZyA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUg
anNBcmd1bWVudHMgPSBudWxscHRyOwogICAgICAgICBib29sIGZvcndhcmRpbmcgPSBmYWxzZTsK
QEAgLTUyMDQsNyArNTIwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJh
cmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAgICAg
IGNhc2UgQ29uc3RydWN0VmFyYXJnczoKLSAgICAgICAgICAgIGpzQXJndW1lbnRzID0gbG93SlNW
YWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2Fs
bEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CkBA
IC01MzU3LDcgKzUzNTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOwotICAg
ICAgICAgICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShqaXQsIHNjcmF0
Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2RlLT5jaGls
ZDIoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQsIHNsb3dDYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmNoaWxkMygp
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICBlbWl0U2V0
dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShqaXQsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJn
T2Zmc2V0LCBzbG93Q2FzZSk7CiAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZS5saW5r
KCZqaXQpOwpAQCAtNTUwMSw3ICs1NTA2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
Rm9yd2FyZFZhcmFyZ3MoKQogICAgIHsKICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0g
bV9ub2RlLT5sb2FkVmFyYXJnc0RhdGEoKTsKLSAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBtX25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lOworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKKyAgICAg
ICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkpCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBt
X25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0g
Z2V0QXJndW1lbnRzTGVuZ3RoKGlubGluZUNhbGxGcmFtZSkudmFsdWU7CiAgICAgICAgIExWYWx1
ZSBsZW5ndGhJbmNsdWRpbmdUaGlzID0gbV9vdXQuYWRkKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQz
MigxIC0gZGF0YS0+b2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAwNDc0MGNjMDZhMTA5OGNiODRiZjZiOTQ4ZmY1
ZmY5OGNkZTYyNWRlLi4yMDZlYzZiNDI1YTY5NWE0Y2FiMjllZDE2NzAyNzQwNzQwNjk5YzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKQEAgLTI0MCw2ICsyNDAsMTYgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICByZXR1
cm4gbGVuZ3RoOwogfQogCit1bnNpZ25lZCBzaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgdW5zaWduZWQgbnVtVXNlZFN0YWNr
U2xvdHMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhj
YWxsRnJhbWUsIG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKKyAgICBpZiAoIXN0YWNr
LT5lbnN1cmVDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKQorICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIGxlbmd0aDsK
K30KKwogdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNTdGFjayogc3RhY2ssIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tT
bG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc2l6ZU9mVmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQp
OwpAQCAtMzAwLDYgKzMxMCwyMiBAQCB2b2lkIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsCiAgICAgbmV3Q2Fs
bEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKIH0KIAordm9pZCBzZXR1cEZvcndhcmRB
cmd1bWVudHNGcmFtZShDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxl
ZSwgdWludDMyX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPT0gZXhlY0NhbGxlci0+
YXJndW1lbnRDb3VudCgpKTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBleGVjQ2FsbGVyLT5hcmd1
bWVudE9mZnNldCgwKSAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgbWVtY3B5KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGV4ZWNDYWxsZWUpICsgb2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNoYXIq
PihleGVjQ2FsbGVyKSArIG9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobGVuZ3RoICsgMSk7Cit9
CisKK3ZvaWQgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSog
ZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWlu
dDMyX3QgbGVuZ3RoKQoreworICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKGV4ZWNDYWxs
ZXIsIGV4ZWNDYWxsZWUsIGxlbmd0aCk7CisgICAgZXhlY0NhbGxlZS0+c2V0VGhpc1ZhbHVlKHRo
aXNWYWx1ZSk7Cit9CisKKyAgICAKKwogSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZNJiB2bSkK
ICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3N0YWNrKHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBkNzkwNjlhOTY4NjRhNTYwMmEx
ZmQ5MTc3Yzc3YWMyYTZhMTQ4MzBjLi5mYjhhMGQ3NmYyZjEyZjlkZTA4Zjk1Yjg3N2M4N2JiZGZk
NjkyYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaApAQCAtMjgyLDkgKzI4MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB1bnNpZ25l
ZCBzaXplT2ZWYXJhcmdzKENhbGxGcmFtZSogZXhlYywgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QXJn
dW1lbnRzID0gMHgxMDAwMDsKICAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxG
cmFtZSogZXhlYywgSlNTdGFjayosIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2Vk
U3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIHVuc2lnbmVkIHNp
emVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoQ2FsbEZyYW1lKiBleGVjLCBKU1N0YWNrKiwgdW5z
aWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpOwogICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1l
KiBleGVjQ2FsbGVyLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgSlNWYWx1ZSBz
b3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKICAgICB2b2lkIHNldHVw
VmFyYXJnc0ZyYW1lKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVl
LCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90
IGxlbmd0aCk7CiAgICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1l
KiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxl
bmd0aCk7CisgICAgdm9pZCBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShDYWxsRnJhbWUqIGV4
ZWNDYWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgdWludDMyX3QgbGVuZ3RoKTsKKyAgICB2
b2lkIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGV4ZWND
YWxsZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVpbnQzMl90
IGxlbmd0aCk7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDk1YjFhYzEwZTcwYTM2MGU3ZWM2NDBjODFkYmQ5YWU1ZmUyZjJmY2QuLjNk
ZTJlNDVmNzc1ZWMzZWVmM2RmZmFjNTQyMGU2ZjQxNjZkNTBhZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTIxNSw2ICsyMTUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jYWxsX2V2YWwpCiAgICAgICAgIERFRklO
RV9PUChvcF9jYWxsX3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfdmFy
YXJncykKKyAgICAgICAgREVGSU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykK
ICAgICAgICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVf
T1Aob3BfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCkBAIC00MTUsNiAr
NDE2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2NhbGxfZXZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2NhbGxfdmFyYXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RhaWxfY2Fs
bF92YXJhcmdzKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0X3Zh
cmFyZ3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF90b190aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggODJlODMxZTQ0ZDBhYzk5YTkzNThmZmQ0OGRiODc1N2ZhNzEyY2M0MC4uZjU0NjU4NTczZWUz
NWMwNTNhMWJkN2VkZmY0MzdiZmFjZWFlNjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC0zMTcsNyArMzE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxl
T3BDYWxsKE9wY29kZUlELCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4
KTsKICAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQsIEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGNhbGxMaW5r
SW5mb0luZGV4KTsKLSAgICAgICAgdm9pZCBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoSW5zdHJ1
Y3Rpb24qLCBDYWxsTGlua0luZm8qKTsKKyAgICAgICAgdm9pZCBjb21waWxlU2V0dXBWYXJhcmdz
RnJhbWUoT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgQ2FsbExpbmtJbmZvKik7CiAgICAgICAgIHZv
aWQgY29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgY29tcGlsZUNh
bGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTQ4Myw2ICs0ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2Nh
bGxfZXZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdz
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFy
YXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwpAQCAt
NjE0LDYgKzYxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NhbGxfZXZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKaW5kZXggNTk5Zjg2YzhkNmViNDg5YmM3MjJkNDY0ODhjN2IwMDBlZDliMjg3
OS4uN2VkZmNjMDhiODI5N2ZkZmM0NmI1ZjkxM2JiNjllYmJhMTMwY2Y3YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0
UHV0Q2FsbFJlc3VsdChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZvKQordm9pZCBKSVQ6
OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShPcGNvZGVJRCBvcGNvZGUsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZvKQogewogICAgIGludCB0aGlzVmFsdWUgPSBp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ3VtZW50cyA9IGluc3RydWN0aW9u
WzRdLnUub3BlcmFuZDsKQEAgLTYxLDEyICs2MSwyMiBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVw
VmFyYXJnc0ZyYW1lKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZv
KQogICAgIGludCBmaXJzdFZhckFyZ09mZnNldCA9IGluc3RydWN0aW9uWzZdLnUub3BlcmFuZDsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgLWZpcnN0RnJl
ZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgWl9KSVRPcGVyYXRpb25fRUpaWiBz
aXplT3BlcmF0aW9uOworICAgIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKQorICAgICAgICBzaXplT3BlcmF0aW9uID0gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9y
d2FyZEFyZ3VtZW50czsKKyAgICBlbHNlCisgICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzOworICAgIGNhbGxPcGVyYXRpb24oc2l6ZU9wZXJhdGlvbiwg
cmVnVDEsIC1maXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKC1maXJzdEZyZWVSZWdpc3RlciksIHJlZ1QxKTsKICAgICBlbWl0U2V0VmFy
YXJnc0ZyYW1lKCp0aGlzLCByZXR1cm5WYWx1ZUdQUiwgZmFsc2UsIHJlZ1QxLCByZWdUMSk7CiAg
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2Yodm9p
ZCopKSkpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
ZXR1cFZhcmFyZ3NGcmFtZSwgcmVnVDEsIHJlZ1QyLCBmaXJzdFZhckFyZ09mZnNldCwgcmVnVDAp
OworICAgIEZfSklUT3BlcmF0aW9uX0VGSlpaIHNldHVwT3BlcmF0aW9uOworICAgIGlmIChvcGNv
ZGUgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAgICAgICBzZXR1cE9wZXJh
dGlvbiA9IG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lOworICAgIGVsc2UKKyAg
ICAgICAgc2V0dXBPcGVyYXRpb24gPSBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZTsKKyAgICBj
YWxsT3BlcmF0aW9uKHNldHVwT3BlcmF0aW9uLCByZWdUMSwgcmVnVDIsIGZpcnN0VmFyQXJnT2Zm
c2V0LCByZWdUMCk7CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgLy8g
UHJvZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCkBAIC0xNDcsMTEgKzE1NywxMyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCB1bnNpZ25lZCBjYQogICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2Fs
bCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jb25zdHJ1Y3RfdmFyYXJncyksIGNhbGxfYW5kX2NvbnN0
cnVjdF92YXJhcmdzX29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CiAgICAgQ09NUElMRV9B
U1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2Fs
bCksIGNhbGxfYW5kX3RhaWxfY2FsbF9vcGNvZGVzX211c3RfYmVfc2FtZV9sZW5ndGgpOwogICAg
IENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChv
cF90YWlsX2NhbGxfdmFyYXJncyksIGNhbGxfYW5kX3RhaWxfY2FsbF92YXJhcmdzX29wY29kZXNf
bXVzdF9iZV9zYW1lX2xlbmd0aCk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChv
cF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyks
IGNhbGxfYW5kX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19vcGNvZGVzX211c3RfYmVfc2Ft
ZV9sZW5ndGgpOworCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvOwogICAgIGlmIChvcGNvZGVJRCAh
PSBvcF9jYWxsX2V2YWwpCiAgICAgICAgIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJ
bmZvKCk7Ci0gICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9
PSBvcF9jb25zdHJ1Y3RfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJn
cykKLSAgICAgICAgY29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKGluc3RydWN0aW9uLCBpbmZvKTsK
KyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2Nv
bnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgY29tcGls
ZVNldHVwVmFyYXJnc0ZyYW1lKG9wY29kZUlELCBpbnN0cnVjdGlvbiwgaW5mbyk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKQEAg
LTE3MSw4ICsxODMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb24gLSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KS5iaXRzKCk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRz
KSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBob2xkcyBjYWxsZWUu
CiAKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdUMCBo
b2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9w
X2NhbGxfZXZhbCkgewpAQCAtMjExLDcgKzIyMyw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNh
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsX3ZhcmFyZ3MpIHsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mg
fHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7CiAgICAgICAg
IGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xv
dygpOwogICAgICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhv
dFBhdGhPdGhlciA9IGVtaXROYWtlZFRhaWxDYWxsKCk7CkBAIC0yMzcsNyArMjQ5LDcgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBWZWMKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgIGlm
IChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3Zh
cmFyZ3MpCisgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNh
bGxMaW5rSW5mbyksIHJlZ1QyKTsKQEAgLTI4Miw2ICsyOTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBjb21waWxlT3BDYWxsKG9wX3RhaWxfY2FsbF92YXJhcmdzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGNvbXBpbGVPcENhbGwob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgY29tcGlsZU9wQ2FsbChvcF9jb25zdHJ1Y3RfdmFyYXJncywgY3VycmVudEluc3RydWN0
aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAtMzE2LDYgKzMzMywxMSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPAogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF90YWlsX2Nh
bGxfdmFyYXJncywgY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwogfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKG9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOworfQogICAgIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVj
dF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAKaW5kZXggOGU5YjIzOWVlZTE0MDljYzdlNDkwOTk3NWI3ZDE2ZjlhYTQz
NmE1NC4uYmJhMzA2YTQyN2M1ODY4NTE2ZjZhNmQzMWUyMjhkY2E3NTNmNjEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtODcsNiArODcsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjwKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2Uob3Bf
dGFpbF9jYWxsX3ZhcmFyZ3MsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0lu
Zm9JbmRleCsrKTsKIH0KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShv
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwg
bV9jYWxsTGlua0luZm9JbmRleCsrKTsKK30KICAgICAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9j
b25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewpAQCAtMTIyLDYgKzEyNywxMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGNvbXBpbGVPcENhbGwob3BfdGFpbF9jYWxsX3ZhcmFyZ3MsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KKwordm9pZCBKSVQ6
OmVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgY29tcGlsZU9wQ2FsbChvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKK30K
ICAgICAKIHZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMzMsNyArMTQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY29uc3RydWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY29tcGls
ZU9wQ2FsbChvcF9jb25zdHJ1Y3QsIGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9J
bmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIENhbGxMaW5rSW5mbyogaW5mbykKK3ZvaWQgSklUOjpjb21waWxl
U2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2RlSUQgb3Bjb2RlLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIENhbGxMaW5rSW5mbyogaW5mbykKIHsKICAgICBpbnQgdGhpc1ZhbHVlID0gaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHMgPSBpbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQ7CkBAIC0xNDEsMTIgKzE1MSwyMiBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJn
c0ZyYW1lKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAg
IGludCBmaXJzdFZhckFyZ09mZnNldCA9IGluc3RydWN0aW9uWzZdLnUub3BlcmFuZDsKIAogICAg
IGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIHJlZ1QxLCByZWdUMCwgLWZpcnN0RnJlZVJlZ2lz
dGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgWl9KSVRPcGVyYXRpb25fRUpaWiBzaXplT3Bl
cmF0aW9uOworICAgIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KQorICAgICAgICBzaXplT3BlcmF0aW9uID0gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFy
Z3VtZW50czsKKyAgICBlbHNlCisgICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRpb25TaXpl
RnJhbWVGb3JWYXJhcmdzOworICAgIGNhbGxPcGVyYXRpb24oc2l6ZU9wZXJhdGlvbiwgcmVnVDEs
IHJlZ1QwLCAtZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMigtZmlyc3RGcmVlUmVnaXN0ZXIpLCByZWdUMSk7CiAgICAgZW1pdFNldFZh
cmFyZ3NGcmFtZSgqdGhpcywgcmV0dXJuVmFsdWVHUFIsIGZhbHNlLCByZWdUMSwgcmVnVDEpOwog
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9mKHZv
aWQqKSkpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBlbWl0TG9hZChhcmd1
bWVudHMsIHJlZ1QyLCByZWdUNCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZh
cmFyZ3NGcmFtZSwgcmVnVDEsIHJlZ1QyLCByZWdUNCwgZmlyc3RWYXJBcmdPZmZzZXQsIHJlZ1Qw
KTsKKyAgICBGX0pJVE9wZXJhdGlvbl9FRkpaWiBzZXR1cE9wZXJhdGlvbjsKKyAgICBpZiAob3Bj
b2RlID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgc2V0dXBPcGVy
YXRpb24gPSBvcGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZTsKKyAgICBlbHNlCisg
ICAgICAgIHNldHVwT3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWU7CisgICAg
Y2FsbE9wZXJhdGlvbihzZXR1cE9wZXJhdGlvbiwgcmVnVDEsIHJlZ1QyLCByZWdUNCwgZmlyc3RW
YXJBcmdPZmZzZXQsIHJlZ1QwKTsKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAK
ICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3VudC4KQEAgLTIyOSw4ICsyNDksOCBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG51bGxwdHI7
CiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhbGxfZXZhbCkKICAgICAgICAgaW5mbyA9IG1fY29k
ZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF92
YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzIHx8IG9wY29kZUlEID09
IG9wX3RhaWxfY2FsbF92YXJhcmdzKQotICAgICAgICBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUo
aW5zdHJ1Y3Rpb24sIGluZm8pOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3Mg
fHwgb3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFp
bF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKQorICAgICAgICBjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUob3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBpbmZvKTsKICAgICBlbHNlIHsKICAgICAgICAgaW50IGFyZ0NvdW50ID0gaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtaW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kOwpAQCAtMjc3LDcgKzI5Nyw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVk
IGNhCiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsTGlu
a0luZm8gPSBpbmZvOwogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKLSAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92
YXJhcmdzKSB7CisgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9
PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMpIHsKICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9
IGVtaXROYWtlZFRhaWxDYWxsKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDE3NDVkNmUyMzdjYzAwOTJkMzY2ZDNm
MTdiMGU4NWM2NDE2ZmViYTEuLjdhOTk0OGE2NjlkN2ZkNjA2YjBkNGQ2MTJhYWU2NmY1M2E2ZTgy
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
MTkxNyw2ICsxOTE3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SW5zdGFuY2VPZihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKK2ludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisgICAgSlNTdGFjayogc3RhY2sgPSAmZXhlYy0+aW50ZXJwcmV0ZXIo
KS0+c3RhY2soKTsKKyAgICByZXR1cm4gc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhleGVj
LCBzdGFjaywgbnVtVXNlZFN0YWNrU2xvdHMpOworfQorCiBpbnQzMl90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE5MjYs
NiArMTkzNCwxNCBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9y
VmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbAogICAgIHJldHVybiBzaXplRnJh
bWVGb3JWYXJhcmdzKGV4ZWMsIHN0YWNrLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Nsb3RzLCBm
aXJzdFZhckFyZ09mZnNldCk7CiB9CiAKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisgICAgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoZXhlYywgbmV3
Q2FsbEZyYW1lLCBsZW5ndGgpOworICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Cit9CisKIENhbGxG
cmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUq
IGV4ZWMsIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJn
dW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBpbnQzMl90IGxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAppbmRleCBhOTcyNmViZDZiNjgxOWRlYWQ2ZGNjNGUzYTUwMGJkOTkxZWQwMDI0Li4x
NGZhMDM4OGRkNWNhZmI4ZjMyZjA4MmIxMmM5MjI3YmZkY2JkM2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgwLDcgKzM4MCw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQp
IFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMo
RXhlY1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIHByb3RvKSBXVEZfSU5URVJOQUw7CitpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQpIFdURl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGFy
Z3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCkgV1RGX0lOVEVSTkFMOworQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNl
dHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIEVuY29kZWRK
U1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMOwogQ2FsbEZyYW1l
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKEV4ZWNTdGF0ZSosIENh
bGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9PYmplY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggNDBmNTFhMWFiNmVhNmQ2ZjBmOGJjNDZlOWFlZjY3ZWUwNTY3MTE0ZC4u
YzM5YjQxZjU5NDk5ZDk1YzJhN2Y5MzkyNTUwNzcwZDgzMDY5NjcwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMzYzLDQ3ICsxMzYz
LDY5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJh
cmdzKQogICAgIExMSU5UX1JFVFVSTl9DQUxMRUVfRlJBTUUoZXhlY0NhbGxlZSk7CiB9CiAKLUxM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfZm9yd2FyZF9hcmd1bWVudHMpCiB7Ci0g
ICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAgTExJTlRfQkVHSU4oKTsKICAgICAvLyBU
aGlzIG5lZWRzIHRvOgotICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBp
bGUgaXQgaWYgbmVjZXNzYXJ5LgotICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBj
b2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgotICAgIAotICAgIEpT
VmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAgIAotICAg
IEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlOworICAg
IC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUg
Y3VycmVudCBmcmFtZS4KKworICAgIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzID0gLXBjWzVd
LnUub3BlcmFuZDsKIAotICAgIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBleGVj
Q2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCks
IHBjWzZdLnUub3BlcmFuZCwgdm0udmFyYXJnc0xlbmd0aCk7CisgICAgdW5zaWduZWQgYXJndW1l
bnRzID0gc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhleGVjLCAmdm0uaW50ZXJwcmV0ZXIt
PnN0YWNrKCksIG51bVVzZWRTdGFja1Nsb3RzKTsKICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQ
VElPTihleGVjLCBleGVjKTsKLSAgICAKLSAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3Rh
Y2s6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZy
YW1lKGV4ZWMpOwotICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMpOwotICAgIAotICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsK
KworICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhleGVj
LCBudW1Vc2VkU3RhY2tTbG90cywgYXJndW1lbnRzICsgMSk7CisKKyAgICB2bS52YXJhcmdzTGVu
Z3RoID0gYXJndW1lbnRzOworICAgIHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlID0gZXhlY0Nh
bGxlZTsKKworICAgIExMSU5UX1JFVFVSTl9DQUxMRUVfRlJBTUUoZXhlY0NhbGxlZSk7CiB9Ci0g
ICAgCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpCisK
K2VudW0gY2xhc3MgU2V0QXJndW1lbnRzV2l0aCB7CisgICAgT2JqZWN0LAorICAgIEN1cnJlbnRB
cmd1bWVudHMKK307CisKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIFNldEFyZ3VtZW50c1dpdGggc2V0KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygp
OwogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2Fs
bCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBv
ZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCi0g
ICAgCisKICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KTsKLSAgICAKKwogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJl
dHVyblZhbHVlOwotICAgIAotICAgIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBl
eGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCksIHBjWzZdLnUub3BlcmFuZCwgdm0udmFyYXJnc0xlbmd0aCk7Ci0gICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7Ci0gICAgCi0gICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKworICAgIGlmIChzZXQgPT0g
U2V0QXJndW1lbnRzV2l0aDo6T2JqZWN0KSB7CisgICAgICAgIHNldHVwVmFyYXJnc0ZyYW1lQW5k
U2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCwgdm0udmFyYXJnc0xlbmd0aCk7Cisg
ICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIGV4ZWMpOworICAgIH0gZWxz
ZQorICAgICAgICBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhl
Y0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHZtLnZhcmFyZ3NMZW5ndGgpOworCiAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5j
aGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVjLT5zZXRD
dXJyZW50VlBDKHBjKTsKLSAgICAKLSAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBDb2RlRm9yQ29uc3RydWN0LCBjYWxsZWVBc1ZhbHVlKTsKKworICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUpOwogfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKQoreworICAgIHJldHVybiB2YXJhcmdz
U2V0dXAoZXhlYywgcGMsIENvZGVGb3JDYWxsLCBTZXRBcmd1bWVudHNXaXRoOjpPYmplY3QpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKQoreworICAgIHJldHVybiB2YXJhcmdzU2V0dXAoZXhlYywgcGMsIENvZGVGb3JDYWxs
LCBTZXRBcmd1bWVudHNXaXRoOjpDdXJyZW50QXJndW1lbnRzKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzKQoreworICAgIHJldHVybiB2YXJh
cmdzU2V0dXAoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50c1dpdGg6Ok9i
amVjdCk7Cit9CisKICAgICAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2
YWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmlu
ZGV4IGJhZmIxYzk5NjAyMWVmZmZjYTBmNzRjY2I0MzAyYzY5MjhiY2FlZTEuLjU5MDVmNDc3YmIw
NTYzNDVkOWM2MjNmODlkZTUyZDZkNWM4Y2U5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC0xMDYsNyArMTA2LDkgQEAgTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfZm9yd2FyZF9hcmd1bWVudHMpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpOworTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfdmFy
YXJncyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggNGIyYzQ5NmNiOWUyM2VkMTczMTQ1ZTY4OTAyMjY2M2YzZWRhYjcxMS4u
MmUyOTM5MjZjODY2Y2Y3Y2ZlN2ZhZTJjM2Y3MGIyOTQ2MmY5MWFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTUy
Niw4ICsxNTI2LDggQEAgX2xsaW50X29wX2NvbnN0cnVjdDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY29uc3RydWN0LCBwcmVwYXJlRm9yUmVndWxh
ckNhbGwpCiAKLW1hY3JvIGRvQ2FsbFZhcmFyZ3Moc2xvd1BhdGgsIHByZXBhcmVDYWxsKQotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCitt
YWNybyBkb0NhbGxWYXJhcmdzKGZyYW1lU2xvd1BhdGgsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
KyAgICBjYWxsU2xvd1BhdGgoZnJhbWVTbG93UGF0aCkKICAgICBicmFuY2hJZkV4Y2VwdGlvbihf
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKICAgICAjIGNhbGxlZUZyYW1l
IGluIHIxCiAgICAgaWYgSlNWQUxVRTY0CkBAIC0xNTQ2LDE4ICsxNTQ2LDI3IEBAIGVuZAogCiBf
bGxpbnRfb3BfY2FsbF92YXJhcmdzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBkb0NhbGxW
YXJhcmdzKF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNh
bGwpCisgICAgZG9DYWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3Zh
cmFyZ3MsIF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNh
bGwpCiAKIF9sbGludF9vcF90YWlsX2NhbGxfdmFyYXJnczoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKICAgICAjIFdlIGxpZSBhbmQgcGVy
Zm9ybSB0aGUgdGFpbCBjYWxsIGluc3RlYWQgb2YgcHJlcGFyaW5nIGl0IHNpbmNlIHdlIGNhbid0
CiAgICAgIyBwcmVwYXJlIHRoZSBmcmFtZSBmb3IgYSBjYWxsIG9wY29kZQotICAgIGRvQ2FsbFZh
cmFyZ3MoX2xsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MsIHByZXBhcmVGb3JUYWlsQ2FsbCkK
KyAgICBkb0NhbGxWYXJhcmdzKF9sbGludF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJn
cywgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MsIHByZXBhcmVGb3JUYWlsQ2FsbCkKKwor
CitfbGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgICMgV2UgbGllIGFu
ZCBwZXJmb3JtIHRoZSB0YWlsIGNhbGwgaW5zdGVhZCBvZiBwcmVwYXJpbmcgaXQgc2luY2Ugd2Ug
Y2FuJ3QKKyAgICAjIHByZXBhcmUgdGhlIGZyYW1lIGZvciBhIGNhbGwgb3Bjb2RlCisgICAgZG9D
YWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX2ZvcndhcmRfYXJndW1l
bnRzLCBfbGxpbnRfc2xvd19wYXRoX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgcHJlcGFy
ZUZvclRhaWxDYWxsKQorCiAKIF9sbGludF9vcF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgZG9DYWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVj
dF92YXJhcmdzLCBwcmVwYXJlRm9yUmVndWxhckNhbGwpCisgICAgZG9DYWxsVmFyYXJncyhfbGxp
bnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MsIF9sbGludF9zbG93X3BhdGhfY29u
c3RydWN0X3ZhcmFyZ3MsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKIAogCiBfbGxpbnRfb3BfY2Fs
bF9ldmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWNlOWQ2MDE1
OGY5NDZkMzkxNzBkODZkMzQ2MTEwN2E0NWM0MmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMuanMK
QEAgLTAsMCArMSwxNjEgQEAKKy8vIFRoaXMgaXMgcHJldHR5IGJhZCBidXQgSSBuZWVkIGEgcHJp
dmF0ZSBuYW1lLgordmFyIHB1dEZ1bmNUb1ByaXZhdGVOYW1lID0gY3JlYXRlQnVpbHRpbihgKGZ1
bmN0aW9uKGZ1bmMpIHsgQGFycmF5SXRlcmF0b3JJc0RvbmUgPSBmdW5jIH0pYCkKK3B1dEZ1bmNU
b1ByaXZhdGVOYW1lKGZ1bmN0aW9uIChhLGIpIHsgcmV0dXJuIGI7IH0pCisKK2Z1bmN0aW9uIGNy
ZWF0ZVRhaWxDYWxsRm9yd2FyZGluZ0Z1bmNXaXRoKGJvZHksIHRoaXNWYWx1ZSkgeworICAgIHJl
dHVybiBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKGEpIHsKKyAgICAgICAgInVzZSBzdHJpY3Qi
OworCisgICAgICAgICR7Ym9keX0KKworICAgICAgICByZXR1cm4gQHRhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cyhAYXJyYXlJdGVyYXRvcklzRG9uZSwgJHt0aGlzVmFsdWV9KTsKKyAgICB9KWApOwor
fQorCit2YXIgZm9vID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIsICJAdW5k
ZWZpbmVkIik7CisKK2Z1bmN0aW9uIGJheigpIHsKKyAgICByZXR1cm4gZm9vLmNhbGwodHJ1ZSwg
Nyk7Cit9Citub0lubGluZShiYXopOworCisKKwordmFyIGZvb05vSW5saW5lID0gY3JlYXRlVGFp
bENhbGxGb3J3YXJkaW5nRnVuY1dpdGgoIiIsICJAdW5kZWZpbmVkIik7Citub0lubGluZShmb28p
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYgKGJhei5jYWxs
KCkgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIGlmIChm
b29Ob0lubGluZS5jYWxsKHVuZGVmaW5lZCwgMykgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworfQorCitwdXRGdW5jVG9Qcml2YXRlTmFtZShmdW5jdGlvbiAoKSB7
ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHsgdGhpc1ZhbHVlOiB0aGlzLCBhcmd1bWVudHNWYWx1ZTog
YXJndW1lbnRzfTsgIH0pOwordmFyIGZvbzIgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5j
V2l0aCgiIiwgInRoaXMiKTsKK3ZhciBmb29OSTIgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdG
dW5jV2l0aCgiIiwgInRoaXMiKTsKK25vSW5saW5lKGZvb05JMik7CisKK2Z1bmN0aW9uIGJhejIo
KSB7CisgICAgcmV0dXJuIGZvbzIuY2FsbCh0cnVlLCA3KTsKK30KK25vSW5saW5lKGJhejIpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgbGV0IHJlc3VsdCA9IGZv
bzIuY2FsbCh0cnVlLCA3KTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1ZSB8fCBy
ZXN1bHQuYXJndW1lbnRzVmFsdWUubGVuZ3RoICE9PSAxIHx8IHJlc3VsdC5hcmd1bWVudHNWYWx1
ZVswXSAhPT0gNykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGJh
ejIuY2FsbCgpOworICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5h
cmd1bWVudHNWYWx1ZS5sZW5ndGggIT09IDEgfHwgcmVzdWx0LmFyZ3VtZW50c1ZhbHVlWzBdICE9
PSA3KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0gZm9vTkkyLmNh
bGwodHJ1ZSwgNyk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0
LmFyZ3VtZW50c1ZhbHVlLmxlbmd0aCAhPT0gMSB8fCByZXN1bHQuYXJndW1lbnRzVmFsdWVbMF0g
IT09IDcpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKK30KKworcHV0RnVuY1RvUHJpdmF0
ZU5hbWUoZnVuY3Rpb24gKCkgeyAidXNlIHN0cmljdCI7IHJldHVybiB0aGlzOyAgfSk7Cit2YXIg
Zm9vMyA9IGNyZWF0ZVRhaWxDYWxsRm9yd2FyZGluZ0Z1bmNXaXRoKCIiLCAieyB0aGlzVmFsdWU6
IHRoaXMsIG90aGVyVmFsdWU6ICdoZWxsbyd9ICIpOwordmFyIGZvb05JMyA9IGNyZWF0ZVRhaWxD
YWxsRm9yd2FyZGluZ0Z1bmNXaXRoKCIiLCAieyB0aGlzVmFsdWU6IHRoaXMsIG90aGVyVmFsdWU6
ICdoZWxsbyd9ICIpOworbm9JbmxpbmUoZm9vTkkzKTsKK2Z1bmN0aW9uIGJhejMoKSB7CisgICAg
cmV0dXJuIGZvbzMuY2FsbCh0cnVlLCA3KTsKK30KK25vSW5saW5lKGJhejMpOworCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgbGV0IHJlc3VsdCA9IGZvbzMuY2FsbCh0
cnVlLCA3KTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1ZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGJhejMuY2FsbCgpOworICAgIGlmIChyZXN1
bHQudGhpc1ZhbHVlICE9PSB0cnVlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAg
cmVzdWx0ID0gZm9vTkkzLmNhbGwodHJ1ZSwgNyk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUg
IT09IHRydWUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKK30KKworCitwdXRGdW5jVG9Q
cml2YXRlTmFtZShmdW5jdGlvbiAoKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7ICB9KTsK
K2xldCBib2R5VGV4dCA9IGAKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICBp
ZiAoYSArIGkgPT09IDEwMCkKKyAgICAgICAgcmV0dXJuIGE7Cit9CitgOwordmFyIGZvbzQgPSBj
cmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5jV2l0aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0
aGlzLCBvdGhlclZhbHVlOiAnaGVsbG8nfSAiKTsKK3ZhciBmb29OSTQgPSBjcmVhdGVUYWlsQ2Fs
bEZvcndhcmRpbmdGdW5jV2l0aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhlclZh
bHVlOiAnaGVsbG8nfSAiKTsKK25vSW5saW5lKGZvb05JNCk7CitmdW5jdGlvbiBiYXo0KCkgewor
ICAgIHJldHVybiBmb280LmNhbGwodHJ1ZSwgMCk7Cit9Citub0lubGluZShiYXo0KTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgIGxldCByZXN1bHQgPSBmb280LmNh
bGwodHJ1ZSwgMCk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0
Lm90aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAg
ICByZXN1bHQgPSBiYXo0LmNhbGwoKTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAhPT0gdHJ1
ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGkpOworICAgIHJlc3VsdCA9IGZvb05JNC5jYWxsKHRydWUsIDApOworICAgIGlmIChyZXN1
bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5vdGhlclZhbHVlICE9PSAiaGVsbG8iKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0gZm9vTkk0LmNhbGwodHJ1
ZSwgMSk7CisgICAgaWYgKHJlc3VsdCAhPT0gMSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkp
OworICAgIHJlc3VsdCA9IGZvb05JNC5jYWxsKHRydWUsICIiKTsKKyAgICBpZiAocmVzdWx0LnRo
aXNWYWx1ZSAhPT0gdHJ1ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGkpOworfQorCit2YXIgdGVzdEZ1bmMgPSBmdW5jdGlvbiAoKSB7
ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7ICB9Citub0lubGluZSh0ZXN0RnVuYyk7CitwdXRG
dW5jVG9Qcml2YXRlTmFtZSh0ZXN0RnVuYyk7CisKK3ZhciBmb281ID0gY3JlYXRlVGFpbENhbGxG
b3J3YXJkaW5nRnVuY1dpdGgoYm9keVRleHQsICJ7IHRoaXNWYWx1ZTogdGhpcywgb3RoZXJWYWx1
ZTogJ2hlbGxvJ30gIik7Cit2YXIgZm9vTkk1ID0gY3JlYXRlVGFpbENhbGxGb3J3YXJkaW5nRnVu
Y1dpdGgoYm9keVRleHQsICJ7IHRoaXNWYWx1ZTogdGhpcywgb3RoZXJWYWx1ZTogJ2hlbGxvJ30g
Iik7Citub0lubGluZShmb29OSTUpOworZnVuY3Rpb24gYmF6NSgpIHsKKyAgICByZXR1cm4gZm9v
NS5jYWxsKHRydWUsIDApOworfQorbm9JbmxpbmUoYmF6NSk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDAwOyBpKyspIHsKKyAgICBsZXQgcmVzdWx0ID0gZm9vNS5jYWxsKHRydWUsIDApOwor
ICAgIGlmIChyZXN1bHQudGhpc1ZhbHVlICE9PSB0cnVlIHx8IHJlc3VsdC5vdGhlclZhbHVlICE9
PSAiaGVsbG8iKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaSk7CisgICAgcmVzdWx0ID0gYmF6
NS5jYWxsKCk7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRydWUgfHwgcmVzdWx0Lm90
aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICBy
ZXN1bHQgPSBmb29OSTUuY2FsbCh0cnVlLCAwKTsKKyAgICBpZiAocmVzdWx0LnRoaXNWYWx1ZSAh
PT0gdHJ1ZSB8fCByZXN1bHQub3RoZXJWYWx1ZSAhPT0gImhlbGxvIikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGkpOworICAgIHJlc3VsdCA9IGZvb05JNS5jYWxsKHRydWUsIDEpOworICAgIGlm
IChyZXN1bHQgIT09IDEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihpKTsKKyAgICByZXN1bHQg
PSBmb29OSTUuY2FsbCh0cnVlLCAiIik7CisgICAgaWYgKHJlc3VsdC50aGlzVmFsdWUgIT09IHRy
dWUgfHwgcmVzdWx0Lm90aGVyVmFsdWUgIT09ICJoZWxsbyIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihpKTsKK30KKworcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24oKSB7IHJldHVybiBh
cmd1bWVudHM7IH0pOwordmFyIGZvbzYgPSBjcmVhdGVUYWlsQ2FsbEZvcndhcmRpbmdGdW5jV2l0
aChib2R5VGV4dCwgInsgdGhpc1ZhbHVlOiB0aGlzLCBvdGhlclZhbHVlOiAnaGVsbG8nfSAiKTsK
K2Z1bmN0aW9uIGJhejYoKSB7CisgICAgInVzZSBzdHJpY3QiCisgICAgcmV0dXJuIGZvbzYuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKK30KK25vSW5saW5lKGJhejYpOworCitmdW5jdGlvbiBhcnJh
eUVxKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
KTsKKyAgICB9Cit9CitsZXQgYXJncyA9IFsiYSIsIHt9LCBbXSwgU3ltYm9sKCksIDEsIDEuMjM0
LCB1bmRlZmluZWQsIG51bGxdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewor
ICAgIGxldCByZXN1bHQgPSBiYXo2LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgYXJyYXlF
cShyZXN1bHQsIGFyZ3MpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>