<?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>148581</bug_id>
          
          <creation_ts>2015-08-28 11:24:24 -0700</creation_ts>
          <short_desc>[ES6] Introduce ModuleProgramExecutable families and compile Module code to bytecode</short_desc>
          <delta_ts>2015-08-31 19:05:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121765</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 11:24:24 -0700</bug_when>
    <thetext>Introduce ModuleProgramExecutable families (ModuleProgramExecutable, UnlinkedModuleProgramCodeBlock, ModuleProgramCodeBlock, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121821</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 13:49:32 -0700</bug_when>
    <thetext>CodeBlock linking will not be included in this patch yet, because it involves JSModuleEnvironment instantiation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121859</commentid>
    <comment_count>2</comment_count>
      <attachid>260186</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 15:50:05 -0700</bug_when>
    <thetext>Created attachment 260186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121900</commentid>
    <comment_count>3</comment_count>
      <attachid>260197</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 17:19:56 -0700</bug_when>
    <thetext>Created attachment 260197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121901</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 17:20:14 -0700</bug_when>
    <thetext>Build fix for Internals.cpp in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121902</commentid>
    <comment_count>5</comment_count>
      <attachid>260198</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 17:27:10 -0700</bug_when>
    <thetext>Created attachment 260198
Patch

slightly update the code comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121967</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 22:59:19 -0700</bug_when>
    <thetext>I&apos;ll just modify one thing, calling makeFunction after putting the correct variable environment to the TDZ stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121968</commentid>
    <comment_count>7</comment_count>
      <attachid>260219</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 23:04:29 -0700</bug_when>
    <thetext>Created attachment 260219
Patch

Fix the makeFunction timing. It should be called after the TDZ stack is set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122269</commentid>
    <comment_count>8</comment_count>
      <attachid>260219</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-31 13:27:53 -0700</bug_when>
    <thetext>Comment on attachment 260219
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:-415
&gt; -    WriteBarrier&lt;SymbolTable&gt; m_symbolTable;

This was unused before?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:544
&gt; +    // The unlinked module program code block only holds the symbol table. Not holds the module environment. So while

&quot;Not holds the module environment&quot; =&gt; &quot;It does not hold the module environment.&quot;

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:566
&gt; +    WriteBarrier&lt;SymbolTable&gt; m_symbolTable;

Nit: Since a CodeBlock may own many SymbolTables in its constant pool, maybe we can give this a more descriptive name?
Maybe something like &quot;moduleEnvironmentSymbolTable&quot;

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:582
&gt; +    {

It seems like this code has a lot in common with pushLexicalScope. I wonder if we can find a way to abstract it nicely.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:617
&gt; +    m_symbolTableStack.append(SymbolTableStackEntry { Strong&lt;SymbolTable&gt;(*m_vm, symbolTable), m_scopeRegister, false, constantSymbolTable-&gt;index() });

I think this may be wrong. We really want a dedicated scope register for this environment.
m_scopeRegister won&apos;t always refer to the &quot;module scope&quot; because as we push
other lexical scopes on top of this, m_scopeRegister will take on those values.
Maybe one solution is to do this:
RegisterID* moduleScope = addVar();
emitMove(moduleScope, m_scopeRegister);
and then pass this value into m_symbolTableStack.append(.)

Another approach is to use m_topMostScope (which basically does that I stated above).

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:621
&gt; +    for (auto&amp; entry : lexicalVariables) {

Same here. We can probably abstract this somehow. Maybe we can create a function that acccepts a filter function which causes some entries to be accepter/ignored?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:679
&gt; +            // Module EntryPoint (executed last):

I like these comments. I&apos;d also add link order as well as execution order,
so maybe here:
&quot;(executed last, linked first)&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2898
&gt; +void ModuleProgramNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID*)

Nit: This looks identical to ProgramNode::emitBytecode.
Maybe we can abstract them into both calling a static function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122322</commentid>
    <comment_count>9</comment_count>
      <attachid>260219</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-31 15:48:59 -0700</bug_when>
    <thetext>Comment on attachment 260219
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:-415
&gt;&gt; -    WriteBarrier&lt;SymbolTable&gt; m_symbolTable;
&gt; 
&gt; This was unused before?

Yup! It was the dead code.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:544
&gt;&gt; +    // The unlinked module program code block only holds the symbol table. Not holds the module environment. So while
&gt; 
&gt; &quot;Not holds the module environment&quot; =&gt; &quot;It does not hold the module environment.&quot;

Oops. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:566
&gt;&gt; +    WriteBarrier&lt;SymbolTable&gt; m_symbolTable;
&gt; 
&gt; Nit: Since a CodeBlock may own many SymbolTables in its constant pool, maybe we can give this a more descriptive name?
&gt; Maybe something like &quot;moduleEnvironmentSymbolTable&quot;

Sounds very nice. Descriptive name is always fine. I&apos;ve changed it.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:582
&gt;&gt; +    {
&gt; 
&gt; It seems like this code has a lot in common with pushLexicalScope. I wonder if we can find a way to abstract it nicely.

Yup. These 2 parts are similar to pushLexicalScopeInternal.
The difference between this function and pushLexicalScopeInternal are,
1. pushLexicalScopeInternal creates the SymbolTable
2. pushLexicalScopeInternal emit the byte code to create the scope
and the same part is,
1. add entries to SymbolTable
2. append symbol table to the symbol table stack
3. append TDZ stack and fill the TDZ stack values

So I&apos;ll extract 1, 2, 3 functions from the pushLexicalScopeInternal and use it in pushLexicalScopeInternal and module symbol table instantiation phase.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:617
&gt;&gt; +    m_symbolTableStack.append(SymbolTableStackEntry { Strong&lt;SymbolTable&gt;(*m_vm, symbolTable), m_scopeRegister, false, constantSymbolTable-&gt;index() });
&gt; 
&gt; I think this may be wrong. We really want a dedicated scope register for this environment.
&gt; m_scopeRegister won&apos;t always refer to the &quot;module scope&quot; because as we push
&gt; other lexical scopes on top of this, m_scopeRegister will take on those values.
&gt; Maybe one solution is to do this:
&gt; RegisterID* moduleScope = addVar();
&gt; emitMove(moduleScope, m_scopeRegister);
&gt; and then pass this value into m_symbolTableStack.append(.)
&gt; 
&gt; Another approach is to use m_topMostScope (which basically does that I stated above).

Using m_topMostScope is nice because the module environment is always the top most scope under the module.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:621
&gt;&gt; +    for (auto&amp; entry : lexicalVariables) {
&gt; 
&gt; Same here. We can probably abstract this somehow. Maybe we can create a function that acccepts a filter function which causes some entries to be accepter/ignored?

Yeah, extracted function will take a filter function.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:679
&gt;&gt; +            // Module EntryPoint (executed last):
&gt; 
&gt; I like these comments. I&apos;d also add link order as well as execution order,
&gt; so maybe here:
&gt; &quot;(executed last, linked first)&quot;

Nice. I&apos;ve added it.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2898
&gt;&gt; +void ModuleProgramNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID*)
&gt; 
&gt; Nit: This looks identical to ProgramNode::emitBytecode.
&gt; Maybe we can abstract them into both calling a static function.

Looks nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122434</commentid>
    <comment_count>10</comment_count>
      <attachid>260219</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-31 18:23:23 -0700</bug_when>
    <thetext>Comment on attachment 260219
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:582
&gt;&gt;&gt; +    {
&gt;&gt; 
&gt;&gt; It seems like this code has a lot in common with pushLexicalScope. I wonder if we can find a way to abstract it nicely.
&gt; 
&gt; Yup. These 2 parts are similar to pushLexicalScopeInternal.
&gt; The difference between this function and pushLexicalScopeInternal are,
&gt; 1. pushLexicalScopeInternal creates the SymbolTable
&gt; 2. pushLexicalScopeInternal emit the byte code to create the scope
&gt; and the same part is,
&gt; 1. add entries to SymbolTable
&gt; 2. append symbol table to the symbol table stack
&gt; 3. append TDZ stack and fill the TDZ stack values
&gt; 
&gt; So I&apos;ll extract 1, 2, 3 functions from the pushLexicalScopeInternal and use it in pushLexicalScopeInternal and module symbol table instantiation phase.

At least, extracting (3) was nice. So, in the meantime, I just extracted the (3).

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:679
&gt;&gt;&gt; +            // Module EntryPoint (executed last):
&gt;&gt; 
&gt;&gt; I like these comments. I&apos;d also add link order as well as execution order,
&gt;&gt; so maybe here:
&gt;&gt; &quot;(executed last, linked first)&quot;
&gt; 
&gt; Nice. I&apos;ve added it.

Technically, &quot;Link&quot; order is the same to the execution order.
But, the &quot;link&quot; order is not so important because when linking we already instantiated the all module environment. And when executing, we already linked the all modules.

The interesting point is this. When the execution starts, the all linking is already finished.
So function bindings are already instantiated. This causes the above crazy behavior :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122439</commentid>
    <comment_count>11</comment_count>
      <attachid>260219</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-31 18:56:50 -0700</bug_when>
    <thetext>Comment on attachment 260219
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:582
&gt;&gt;&gt;&gt; +    {
&gt;&gt;&gt; 
&gt;&gt;&gt; It seems like this code has a lot in common with pushLexicalScope. I wonder if we can find a way to abstract it nicely.
&gt;&gt; 
&gt;&gt; Yup. These 2 parts are similar to pushLexicalScopeInternal.
&gt;&gt; The difference between this function and pushLexicalScopeInternal are,
&gt;&gt; 1. pushLexicalScopeInternal creates the SymbolTable
&gt;&gt; 2. pushLexicalScopeInternal emit the byte code to create the scope
&gt;&gt; and the same part is,
&gt;&gt; 1. add entries to SymbolTable
&gt;&gt; 2. append symbol table to the symbol table stack
&gt;&gt; 3. append TDZ stack and fill the TDZ stack values
&gt;&gt; 
&gt;&gt; So I&apos;ll extract 1, 2, 3 functions from the pushLexicalScopeInternal and use it in pushLexicalScopeInternal and module symbol table instantiation phase.
&gt; 
&gt; At least, extracting (3) was nice. So, in the meantime, I just extracted the (3).

After considering about this, I also extracted (1). But extracting (2) is not so good (because its so small). So I&apos;ve just extracted (1) &amp; (3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122446</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-31 19:05:50 -0700</bug_when>
    <thetext>Committed r189201: &lt;http://trac.webkit.org/changeset/189201&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260186</attachid>
            <date>2015-08-28 15:50:05 -0700</date>
            <delta_ts>2015-08-28 17:19:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148581-20150828154952.patch</filename>
            <type>text/plain</type>
            <size>77981</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2NkMTcwZGRjZGIzNmU0NmE3MjQ4YWVhZTc5MDAwZjBhYWJhODIyLi41NmE4MWIwYmRiMzc3MGIx
Mzc4OGM1MjY1ZTM2ZDA1NjhjNDI4ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW50cm9kdWNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IGZhbWlsaWVzIGFuZCBjb21waWxlIE1vZHVsZSBjb2RlIHRvIGJ5dGVjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIHRoYXQgaXMgbmV3IGV4ZWN1dGFibGUgdHlwZSBm
b3IgdGhlIEVTNiBtb2R1bGVzLgorICAgICAgICBBbmQgcmVsYXRlZCBjb2RlIGJsb2NrIHR5cGVz
LCBVbmlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBhbmQgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayBhcmUgYWxzbworICAgICAgICBpbnRyb2R1Y2VkLiBCeXRlY29kZUdlbmVyYXRvciBub3cgcmVj
b2duaXplcyB0aGVzZSB0eXBlcyBhbmQgZW1pdHMgdGhlIGJ5dGVjb2RlIGFuZCBjb25zdHJ1Y3Rz
CisgICAgICAgIHRoZSBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFdo
aWxlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgYnl0ZWNvZGUgZ2VuZXJhdGlvbgorICAgICAg
ICBmb3IgdGhlIEVTNiBtb2R1bGVzLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRp
b24gaW5pdGlhbGl6YXRpb24gYW5kIGltcG9ydGVkIGJpbmRpbmcKKyAgICAgICAgcmVzb2x1dGlv
biBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2guIFRoZXkgd2lsbCBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgaW50ZXJlc3RpbmcgcGFy
dCBpcyB0aGUgc3ltYm9sIHRhYmxlIGNvbnN0cnVjdGlvbiBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudC4KKyAgICAgICAgU2luY2UgdGhlIG1vZHVsZSBjb2RlIHdpbGwgYmUgb25seSBleGVjdXRl
ZCBvbmNlLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IG5lZWQgbm90IHRvIGJlIGFsbG9jYXRlZAor
ICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgbW9kdWxlIGNvZGU7IEluIHRoZSBj
YXNlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLCB0aGUgZnVuY3Rpb24gY29kZSBuZWVkCisgICAgICAg
IHRvIGFsbG9jYXRlIHRoZSBlbnZpcm9ubWVudCBpbnNpZGUgdGhlIHByb2xvZ3VlIG9mIGl0IGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGNvZGUgY2FuIGJlIGV4ZWN1dGVkCisgICAgICAgIG1vcmUgdGhh
biBvbmNlIGFuZCB0aGUgZnVuY3Rpb24gZW52aXJvbm1lbnRzIGFyZSBkaWZmZXJlbnQgaW4gZWFj
aCB0aW1lIG9mIHRoZSBleGVjdXRpb25zLgorICAgICAgICBUaGUgbW9kdWxlIGVudmlyb25tZW50
IHdpbGwgYmUgaW5zdGFudGlhdGVkIG91dHNpZGUgdGhlIG1vZHVsZSBjb2RlIGJlZm9yZSBleGVj
dXRpbmcgdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
d2UgbmVlZCB0byBsaW5rIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIHRvIGltcG9ydCB0aGUgYmlu
ZGluZ3MgYmVmb3JlCisgICAgICAgIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBjb2RlIGluIHRo
ZSBkZXBlbmRlbmN5IGdyYXBoLiBBbmQgdGhpcyBpcyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpbnNp
ZGUgdGhlCisgICAgICAgIG1vZHVsZSBtYXkgYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBtb2R1bGUg
dG9wLWxldmVsIGJvZHkgaXMgZXhlY3V0ZWQuIChTZWUgdGhlIGNvZGUgY29tbWVudCBmb3IgbW9y
ZQorICAgICAgICBkZXRhaWxlZCBzaXR1YXRpb25zKQorCisgICAgICAgIFRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgd2lsbCBob2xkIHRoZSB0b3AtbW9zdCBoZWFwIGFsbG9jYXRlZCB2YXJpYWJsZXMg
aW4gdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGJlbmVm
aXRzLgorICAgICAgICAxKSBUaGlzIGVuYWJsZXMgSlNDIHRvIHBlcmZvcm0gdGhlIHVzdWFsIExv
Y2FsQ2xvc3VyZVZhciBvcGVyYXRpb25zIG9udG8gaXQuCisgICAgICAgIDIpIEl0IGFsc28gbWFr
ZXMgdGhlIGV4cG9ydGVkIGxleGljYWwgdmFyaWFibGVzIGp1c3QgdGhlIGhlYXAgYWxsb2NhdGVk
IGxleGljYWwgdmFyaWFibGVzLgorICAgICAgICAzKSBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRp
YWxpemUgdGhlIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWZvcmUgZXhl
Y3V0aW5nIHRoZSBtb2R1bGUKKyAgICAgICAgICAgY29kZS4gSXQgaXMgcmVxdWlyZWQgdW5kZXIg
dGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKHNlZSB0aGUgY29kZSBjb21tZW50IGZvciBtb3JlIGRl
dGFpbHMpLgorCisgICAgICAgIFRvIGRvIHNvLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IHdpbGwg
YmUgY29uc3RydWN0ZWQgd2l0aCB0aGUgc3ltYm9sIHRhYmxlIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5
IHRoZQorICAgICAgICBieXRlY29kZSBnZW5lcmF0b3IuIEFuZCB0aGUgc3ltYm9sIHRhYmxlIGlz
IGhlbGQgYnkgdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoYXQgbWVhbnMsIG9uY2UgdGhlIG1v
ZHVsZQorICAgICAgICBlbnZpcm9ubWVudCBpcyBpbnN0YW50aWF0ZWQsIHdlIGNhbm5vdCBjbGVh
ciB0aGUgdW5saW5rZWQgY29kZSBibG9jayBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgc2lu
Y2UKKyAgICAgICAgdGhlIGxheW91dCBvZiB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjb3VwbGVkIHdpdGggdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoaXMgaXMgT0sK
KyAgICAgICAgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgY2FuIGJlIGNsZWFyZWQgb25jZSB3ZSBl
eGVjdXRlZCB0aGUgbW9kdWxlIGNvZGUuIElmIHdlIGZhaWxlZCB0byBleGVjdXRlIHRoZQorICAg
ICAgICBtb2R1bGUgKHNvbWUgZXJyb3JzIG9jY3VyKSwgd2UgY2FuIHRocm93IGF3YXkgdGhlIGJv
dGgsIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYW5kIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLgor
CisgICAgICAgIFRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGhvbGRzIHRo
ZSBzeW1ib2wgdGFibGUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQuCisgICAgICAgIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNh
biBiZSBjYWNoZWQuIFdoaWxlIHVubGlua2VkIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZCwgdGhl
IGxpbmtlZAorICAgICAgICBjb2RlIGJsb2NrIGNhbm5vdCBiZSBjYWNoZWQgYmVjYXVzZSBpdCBp
cyBhbHJlYWR5IGxpbmtlZCB0byB0aGUgc3BlY2lmaWMgc2V0IG9mIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5mZXJyZWROYW1lKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9j
azo6RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoK
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5
cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5k
bHlTb3VyY2VVUkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9u
TmFtZSk6CisgICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6
CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6
OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNh
bFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWROYW1lc3BhY2Up
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpmaW5kKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1l
bnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFy
Q29kZVZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
Ojptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBj
aGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2MTNiYzY2ZDFhN2JlMTA3NWU0YTRjZjQwMTUxYTc5NzIy
N2U1ZC4uYmNlYTg4ZDhlZjk5NDRjYjUxOGQzM2VjOGEzYmVlZjRmN2ZkZTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEludHJvZHVjZSBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmYW1pbGllcyBhbmQgY29tcGlsZSBNb2R1bGUgY29kZSB0byBieXRlY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSBjYXNlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisKKzIw
MTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBpbnRvIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBhbGxvY2F0ZWQgc3RkOjpmdW5j
dGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MjYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTNjNGFlYzNkMzFlNDMyMDdm
MjZhNWM4NGRlNDM3NThkYWE4YjUxZi4uNmYzYWQxYmRhNTRhNWQ5MGNkMTRiZTkwMjc3N2Q0MTc2
ZDgxMTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDAsNiArMTcwMCw3
IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1
ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07
CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9
OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
M0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovOyB9OwpAQCAtMzU1Nyw2ICszNTU4LDcgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxv
YWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3
QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc5OSw2ICs1ODAxLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FC
NDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJ
CUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBl
LmpzICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVj
dG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlBy
b21pc2UuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJv
dG90eXBlLmpzICovLApAQCAtNzA0NSw2ICs3MDQ4LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNl
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1l
d29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMy
OWNlODJhYS4uMDIwZWMyNDg5ZWZlM2EzMzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTU3LDYgKzE1Nyw3IEBACiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAi
bmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogImxsaW50X2V2YWxfcHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmOGEwZjRi
ZmM4Njk0ZmVhZDI4YTZhYjU3YzdjMjM1ZmYxM2QxMThmLi5jNGM2NmQzYjc5NzZmOTc3NWJkMTM0
ZDFlYTk4OWMxNGE0NWRhYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtODcsNiArODcsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJy
ZWROYW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29k
ZToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMzA2Miw2ICszMDY0LDEx
IEBAIENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVy
biBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KCkKK3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDc3LDYgKzMwODQsMTEgQEAgREZH
OjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwoKQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVs
KHRoaXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZl
bCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBjYjllYmQ2MWI1ZGRmZTBjYjNmNjdmMzEwZGY4ODE3N2RkNjM1NDliLi5iZGRkMDM2N2YzYmUz
NzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMTAyLDEwICsxMTAyLDI5IEBAIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNlbmRpZgogfTsKIAorY2xhc3Mg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgeworcHVibGlj
OgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIG92
ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2Jh
bENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
aywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0xMTMwLDcgKzExNDksNyBAQCBj
bGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVibGljOgogICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQot
ICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXggOGIyY2FkNTZhYjY4YWYxMmIz
MmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZlOWY5NDZhZGQ5MTc5M2ZlNjI1
N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
CkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpGdW5jdGlvbkNvZGU6CiAgICAg
ICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVsZSIpOworICAgICAgICByZXR1
cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAppbmRleCBiOGUxMDdkY2Y2YjY3
MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNkZDBjNWZmZTMwZjFhODg0ZjNi
YTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUu
aApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDb2RlVHlwZSB7
IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKK2VudW0gQ29kZVR5cGUgeyBH
bG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1bGVDb2RlIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFi
N2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0MDAyNzUyZGQ5YWViNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0lu
Zm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spIH07Citj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAgIGZvciAoRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
YmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmVuZCgpOyBwdHIgIT0g
ZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICBmb3IgKEZ1bmN0
aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBAIHZvaWQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOworfQor
CiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKIHsKIH0KQEAgLTMwMSw2
ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5V
bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2MTk5Zjc5N2MxMDM4MWRkNDU4
OTNiZDUzNTNmZjFiNmI0Ni4uODJjZThiMzU2M2MyZWFlNmY4ZWQ0OGJkNTQ0YTBiZTIxMmYxN2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAoY29kZVR5cGUoKSA9
PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N5bWJvbFRhYmxl
LnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAg
ICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKIAotICAgIFdyaXRl
QmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lmIEVOQUJMRShCWVRFQ09ERV9D
T01NRU5UUykKQEAgLTUxNCw2ICs1MDksNzEgQEAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICBERUNMQVJF
X0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwg
OiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgIHsKKyAg
ICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhl
YXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT51bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8pOworICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0K
KworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgLy8gVGhpcyBzeW1ib2wgdGFibGUgcmVwcmVzZW50cyB0aGUgbGF5b3V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIHdpbGwgYmUgbW9k
aWZpZWQgYnkgdGhlIGJ5dGUKKyAgICAvLyBjb2RlIGdlbmVyYXRvciBzaW5jZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlh
YmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCwgb25j
ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZy
b20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseQorICAgIC8vIGNvdXBsZWQgd2l0aCB0
aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBhbmQgdGhlIHN5
bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlCisgICAgLy8gY29kZSwg
d2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9j
ayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMgbWV0CisgICAg
Ly8gYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMgdW5saW5rZWQgY29k
ZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBleGVjdXRhYmxl
cy4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoZSBmdW5jdGlvbiBjb2RlIG1heSBiZSBleGVjdXRl
ZCByZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBmdW5jdGlvbiBleGVjdXRp
b24gaXMgZGlmZmVyZW50LAorICAgIC8vIHRoZSBmdW5jdGlvbiBjb2RlIG5lZWQgdG8gYWxsb2Nh
dGUgYW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVudCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhl
IGZ1bmN0aW9uIGNvZGUuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29k
ZSBpcyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQorICAgIC8vIGNvZGUuIEF0IHRoYXQgdGlt
ZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1i
b2wgdGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuCisgICAgLy8gSW5zdGFu
dGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVs
ZSBjb2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzCisgICAgLy8g
YmV0d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLworICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1bGUg
cHJvZ3JhbSBjb2RlIGJsb2NrIG9ubHkgaG9sZHMgdGhlIHN5bWJvbCB0YWJsZS4gTm90IGhvbGRz
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29k
ZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCisgICAgLy8gY2FuIGJlIHVz
ZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxp
bmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgorICAgIC8vIHRo
ZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMu
IFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQu
CisgICAgLy8KKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxpbmtlZCBjb2RlIGJsb2Nr
IGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSByZXNvbHZlZCByZWZlcmVu
Y2VzIHRvIHRoZSBpbXBvcnRlZAorICAgIC8vIGJpbmRpbmdzLiBUaGUgaW1wb3J0ZWQgYmluZGlu
ZyByZWZlcmVuY2VzIHRoZSBvdGhlciBtb2R1bGUgZW52aXJvbm1lbnQsIHNvIHRoZSBsaW5rZWQg
Y29kZSBibG9jayBpcyB0aXRseSBjb3VwbGVkCisgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWMgc2V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sg
c2hvdWxkIG5vdCBiZSBjYWNoZWQuCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE1vZHVs
ZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBt
X3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAg
IH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKKworcHVi
bGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZv
KFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi5jZTk2ZWRkMjg0OWQ2OGVi
NzgyOTg3ZDU5NTI4MDZlZmRjNjFlNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAsNyArNzAs
OSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlmICht
X25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJpYWJsZSh2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdpc3Rlcik7
CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAvLyBGb3Ig
TW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50IGZvciB0
aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxlQ29kZSkK
KyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBAIC01MDQs
NiArNTA2LDE4MSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIH0K
IAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNlRGVidWdn
ZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKKyAg
ICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVyQnl0ZWNv
ZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAgLCBtX3Nj
b3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxv
Y2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKworICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
cykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwor
CisgICAgLy8gVXNlIHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGlzIHN5bWJvbCB0YWJsZQorICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxv
Y2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5
bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNj
b3BlKTsKKworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAg
ICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZU
aGVUaGluZ3MpCisgICAgICAgIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5t
YXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2Fw
dHVyZVNvbWVPZlRoZVRoaW5ncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIG1vZHVsZVByb2dyYW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0
byBsb29rVXBWYXJLaW5kID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgLy8gQWxs
b2NhdGUgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcyBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50Lgor
ICAgICAgICBpZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktp
bmQ6OlNjb3BlOworCisgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBuYW1lc3BhY2UgdmFyaWFibGVz
IGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgdG8gaW5zdGFudGlhdGUKKyAgICAgICAgLy8gaXQg
ZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGNvZGUuCisgICAgICAgIGlmIChlbnRyeS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7
CisKKyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBW
YXJLaW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpT
Y29wZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKKworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgZm9yIChGdW5j
dGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25T
dGFjaygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5v
ZGUtPnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRl
Y2xhcmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52
YWx1ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZh
cktpbmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWYg
KHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KKyAgICAgICAgICAgIC8vIFNlY3Rpb24gMTUuMi4xLjE2LjQsIHN0ZXAg
MTYtYS1pdi0xLgorICAgICAgICAgICAgLy8gQWxsIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudAorICAgICAgICAgICAgLy8gaXMgY3JlYXRlZC4gVGhleSBpbmNsdWRlIHRoZSBleHBvcnRl
ZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIG5vdC1leHBvcnRlZC1idXQtaGVhcC1hbGxvY2F0
ZWQKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBiZWNhdXNl
IGV4cG9ydGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGV4ZWN1dGlu
ZworICAgICAgICAgICAgLy8gdGhlIGFueSBtb2R1bGUgaW5zaWRlIHRoZSBkZXBlbmRlbmN5IGdy
YXBoLiBBbGwgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGV4ZWN1
dGluZworICAgICAgICAgICAgLy8gdGhlIGFjdHVhbCBtb2R1bGUgY29kZSBleGVjdXRpb24uIFRo
aXMgZW5hYmxlcyB0aGUgbW9kdWxlcyBsaW5rIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMuCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gTW9kdWxlIEEgKGV4ZWN1dGVkIDFzdCk6CisgICAg
ICAgICAgICAvLyAgICBpbXBvcnQgeyBiIH0gZnJvbSAiQiI7CisgICAgICAgICAgICAvLyAgICAv
LyBIZXJlLCB0aGUgbW9kdWxlICJCIiBpcyBub3QgZXhlY3V0ZWQgeWV0LCBidXQgdGhlIGZ1bmN0
aW9uIGRlY2xhcmF0aW9uIGlzIGFscmVhZHkgaW5zdGFudGlhdGVkLgorICAgICAgICAgICAgLy8g
ICAgLy8gU28gd2UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gIkIiLgorICAg
ICAgICAgICAgLy8gICAgYigpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgIGV4
cG9ydCBmdW5jdGlvbiBhKCkgeworICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIC8vIE1vZHVsZSBCIChleGVjdXRlZCAybmQpOgorICAgICAgICAgICAgLy8g
ICAgaW1wb3J0IHsgYSB9IGZyb20gIkEiOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
ICAgIGV4cG9ydCBmdW5jdGlvbiBiKCkgeworICAgICAgICAgICAgLy8gICAgICAgIGMoKTsKKyAg
ICAgICAgICAgIC8vICAgIH0KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICAvLyBj
IGlzIG5vdCBleHBvcnRlZCwgYnV0IHNpbmNlIGl0IGlzIHJlZmVyZW5jZWQgZnJvbSB0aGUgYiwg
d2Ugc2hvdWxkIGluc3RhbnRpYXRlIGl0IGJlZm9yZQorICAgICAgICAgICAgLy8gICAgLy8gZXhl
Y3V0aW5nIHRoZSAiQiIgbW9kdWxlIGNvZGUuCisgICAgICAgICAgICAvLyAgICBmdW5jdGlvbiBj
KCkgeworICAgICAgICAgICAgLy8gICAgICAgIGEoKTsKKyAgICAgICAgICAgIC8vICAgIH0KKyAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBNb2R1bGUgRW50cnlQb2ludCAoZXhlY3V0ZWQg
bGFzdCk6CisgICAgICAgICAgICAvLyAgICBpbXBvcnQgIkIiOworICAgICAgICAgICAgLy8gICAg
aW1wb3J0ICJBIjsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gU3RhY2sgYWxsb2NhdGVkIGZ1bmN0aW9ucyBjYW4gYmUgYWxsb2NhdGVk
IHdoZW4gZXhlY3V0aW5nIHRoZSBtb2R1bGUncyBib2R5LgorICAgICAgICAgICAgbV9mdW5jdGlv
bnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3JtYWxGdW5j
dGlvblZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3cgZGVjbGFyZSBh
bGwgdmFyaWFibGVzLgorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSkgeworICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzTGV0
KCkgJiYgIWVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7CisgICAgICAgIGlmICghZW50cnkudmFsdWUu
aXNWYXIoKSkgLy8gVGhpcyBpcyBlaXRoZXIgYSBwYXJhbWV0ZXIgb3IgY2FsbGVlLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBub3QgYWxs
b2NhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYXMgdXN1YWwgdmFyaWFibGVzJyB3YXku
CisgICAgICAgIC8vIFRoZXNlIHJlZmVyZW5jZXMgcmVtYWluIHRoZSAiRHluYW1pYyIgaW4gdGhl
IHVubGlua2VkIGNvZGUgYmxvY2suIExhdGVyLCB3aGVuIGxpbmtpbmcKKyAgICAgICAgLy8gdGhl
IGNvZGUgYmxvY2ssIHdlIHJlc29sdmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgIk1vZHVsZVZhciIu
CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjcmVh
dGVWYXJpYWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVudHJ5LmtleS5nZXQoKSksIGxv
b2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSksIHN5bWJvbFRhYmxlLCBJ
Z25vcmVFeGlzdGluZyk7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcyA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCk7CisKKyAg
ICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xv
Y2spOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGV4aWNhbFZhcmlhYmxlcykgeworICAg
ICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzTGV0KCkgfHwgZW50cnkudmFsdWUuaXNDb25z
dCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZW50cnkudmFsdWUuaXNWYXIoKSk7CisgICAgICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0
KGxvY2tlciwgZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUYWJs
ZUVudHJ5LmlzTnVsbCgpKTsKKworICAgICAgICAgICAgLy8gSW1wb3J0ZWQgYmluZGluZ3MgYXJl
IG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBhcyB1c3VhbCB2YXJpYWJs
ZXMnIHdheS4KKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVu
dHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgVmFyS2luZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChlbnRyeS5r
ZXkuZ2V0KCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQ7
CisgICAgICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkKKyAgICAgICAgICAg
ICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZz
ZXQobG9ja2VyKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dmFyS2luZCA9PSBWYXJLaW5kOjpTdGFjayk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCog
bG9jYWwgPSBuZXdCbG9ja1Njb3BlVmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICBsb2NhbC0+
cmVmKCk7CisgICAgICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KGxvY2FsLT52aXJ0
dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBSZWFkT25s
eSA6IDApOworICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGVudHJ5LmtleS5n
ZXQoKSwgbmV3RW50cnkpOworICAgICAgICB9CisgICAgfQorCisgICAgUmVnaXN0ZXJJRCogY29u
c3RhbnRTeW1ib2xUYWJsZSA9IG51bGxwdHI7CisgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQor
ICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJs
ZSk7CisgICAgZWxzZQorICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRW
YWx1ZShzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQoKm1fdm0pKTsKKworICAgIG1fVERaU3Rh
Y2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxleGljYWxWYXJpYWJsZXMsIHRydWUpKTsKKyAgICBt
X3N5bWJvbFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxlU3RhY2tFbnRyeSB7IFN0cm9uZzxT
eW1ib2xUYWJsZT4oKm1fdm0sIHN5bWJvbFRhYmxlKSwgbV9zY29wZVJlZ2lzdGVyLCBmYWxzZSwg
Y29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKSB9KTsKKworICAgIC8vIFByZWZpbGwgc3RhY2sg
dmFyaWFibGVzIHdpdGggdGhlIFREWiBlbXB0eSB2YWx1ZS4KKyAgICAvLyBTY29wZSB2YXJpYWJs
ZXMgd2lsbCBiZSBpbml0aWFsaXplZCB0byB0aGUgVERaIGVtcHR5IHZhbHVlIHdoZW4gSlNMZXhp
Y2FsRW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkLgorICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhp
Y2FsVmFyaWFibGVzKSB7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBub3QgYWxs
b2NhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYXMgdXN1YWwgdmFyaWFibGVzJyB3YXku
CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQoZW50cnku
a2V5LmdldCgpKTsKKyAgICAgICAgQVNTRVJUKCFzeW1ib2xUYWJsZUVudHJ5LmlzTnVsbCgpKTsK
KyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IHN5bWJvbFRhYmxlRW50cnkudmFyT2Zmc2V0KCk7
CisgICAgICAgIGlmIChvZmZzZXQuaXNTY29wZSgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIEFTU0VSVChvZmZzZXQuaXNTdGFjaygpKTsKKyAgICAgICAgZW1pdE1vdmVFbXB0eVZh
bHVlKCZyZWdpc3RlckZvcihvZmZzZXQuc3RhY2tPZmZzZXQoKSkpOworICAgIH0KK30KKwogQnl0
ZWNvZGVHZW5lcmF0b3I6On5CeXRlY29kZUdlbmVyYXRvcigpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggODljZGVhZDEzNTQ0ODFjNzQ2NjcwZTM1Zjk2MDA1OTM3ZmI5NWJhNy4uMTZiYmMwZGRjMGFk
ZjQwOTFkOGExMzk0NDRhYmIzOTM0MGY1MDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjY5LDYgKzI2
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFBy
b2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsK
ICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENv
ZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5v
ZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIH5CeXRlY29k
ZUdlbmVyYXRvcigpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1Yjgy
NDIyOGFiNjUyMThmZTBlMTdlLi5kNGIzNTA0ZjkyMDZhNTIzNTA3ODM2MTU1Mzk2NmYwMDBjNTE5
ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC0yODk1LDggKzI4OTUsMTcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9kdWxlUHJvZ3JhbU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotdm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExp
bmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKKworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVk
KCkpOworICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZz
ZXQoKSk7CisgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVy
LmdldCgpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFt
LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTMwNTcsMzAgKzMwNjYsMzcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogdm9pZCBJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKQogeworICAgIC8vIERvIG5vdGhpbmcgYXQgcnVudGltZS4KIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90
aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
CisgICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAg
ICBBU1NFUlQobV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9k
ZWNsYXJhdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnRO
YW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAppbmRleCA2NmZhOGVjZjU0MDYzNTg2Y2Q0YWFhOGZiODQ5N2JjNjE1
MWViMDM3Li5mYTYyZWE2ZjM3NmQ4OGNlZmY0ZTk4Mjc1NDMyNjZlMGQ5M2E0NDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAg
LTk3LDYgKzk3LDcgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZyaWVuZGx5U291cmNlVVJMKCkgY29u
c3QKICAgICAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CiAgICAgY2FzZSBTdGFja0ZyYW1lRXZh
bENvZGU6CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKICAgICBjYXNlIFN0YWNrRnJh
bWVGdW5jdGlvbkNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lR2xvYmFsQ29kZToKICAgICAgICAg
aWYgKCFzb3VyY2VVUkwuaXNFbXB0eSgpKQpAQCAtMTE4LDYgKzExOSw5IEBAIFN0cmluZyBTdGFj
a0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QK
ICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKICAgICAgICAgdHJhY2VMaW5lID0gImV2YWwg
Y29kZSI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6Cisg
ICAgICAgIHRyYWNlTGluZSA9ICJtb2R1bGUgY29kZSI7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3RhY2tGcmFtZU5hdGl2ZUNvZGU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAgICAgICAgICAg
ICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lQ2FsbGVlKS5pbXBsKCk7CkBAIC00NTEsNiArNDU1LDggQEAgc3RhdGljIFN0YWNrRnJhbWVD
b2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHN3aXRjaCAodmlzaXRvci0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpG
cmFtZTo6RXZhbDoKICAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBjYXNl
IFN0YWNrVmlzaXRvcjo6RnJhbWU6Ok1vZHVsZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVN
b2R1bGVDb2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6RnVuY3Rpb246CiAgICAg
ICAgIHJldHVybiBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6R2xvYmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAppbmRleCAxMzJjOTVkMTdmNGUxMDliYTM3YmJjYjAxODcyNzMyYjJmOTUx
MTZmLi4wMzhiY2E1Y2ZjNzViOWIyNDU3NjJkNmU2NGY2OGYyZTc4ZWM2MjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQsOCAr
NTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAg
IGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlOworICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2Ft
cGxpbmdUb29sOwpAQCAtNzYsNiArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIFN0
YWNrRnJhbWVDb2RlVHlwZSB7CiAgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAogICAgICAg
ICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAogICAg
ICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAogICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29k
ZQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCmluZGV4IDNmMmI5MTQwNDUxZDQ4ODM0YTlmNzEwMzM0NjRhMjE0N2QxYmRi
NzAuLjc1ZjE3NzIzYjE0YTQ3NTg2ZDllY2Q2NjM2ZWRmYTQ2OTgxN2IwMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0x
ODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAoY29kZUJsb2NrKCktPmNvZGVU
eXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkV2
YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gQ29kZVR5cGU6Ok1vZHVs
ZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpGdW5j
dGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiArMjAxLDkgQEAgU3RyaW5nIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgY2FzZSBDb2RlVHlwZTo6RXZh
bDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNvZGUiKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgorICAgICAgICB0cmFjZUxpbmUg
PSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAgIHRyYWNl
TGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwgY2FsbGVlKS5pbXBs
KCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJj
ZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAgICBjYXNlIENvZGVUeXBlOjpF
dmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENvZGVUeXBlOjpGdW5j
dGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgK
aW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0NjczNC4uNDFiZmM3MDg4
MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFz
cyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICAgRXZhbCwK
ICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAogICAgICAgICAgICAg
TmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiYmM4
NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1NDBmM2NiYWExYWVj
YzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00
ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoIChtX2NvZGVCbG9jay0+
Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA3MzEzZmNlMjQyMDBjYzkxNjE2OWU4MTRhMGEwNTkz
MGFhYmFhNTNkLi43NzdjZmRlMDkzYTJkMTNkZjVmZTVjMzY2Yzk4MjJmNGFlMDg0ZmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTMyLDggKzEzMiw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA2NCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA2KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOSk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAyMCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMjEpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjIpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkBAIC0x
NDEsNiArMTQxLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAg
QVNTRVJUKEdsb2JhbENvZGUgPT0gMCk7CiAgICAgQVNTRVJUKEV2YWxDb2RlID09IDEpOwogICAg
IEFTU0VSVChGdW5jdGlvbkNvZGUgPT0gMik7CisgICAgQVNTRVJUKE1vZHVsZUNvZGUgPT0gMyk7
CiAKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5ID09IDAsICJMTEludCBhc3N1bWVz
IEdsb2JhbFByb3BlcnR5IFJlc3VsdFR5cGUgaXMgPT0gMCIpOwogICAgIHN0YXRpY19hc3NlcnQo
R2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlzID09
IDEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5j
cHAKaW5kZXggOWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZjM2Qy
N2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBAQCBz
dGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKK3N0
YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyAg
ICBVTlVTRURfUEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVM
TEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBzZXRF
bnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNoIChj
b2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAgIHNl
dFByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBNb2R1bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2bSwg
Y29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAg
IHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IGEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEuLjllM2Y0
NDg3YjA4NTIwMTM3MmIyZDdiMjdiNzhjZTU5MWFiZDk3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3Jk
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAppbmRleCA4YWI5NmIzMDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5hZjY4
ODRlNWVkZTdiZWJlMDRmMzdiM2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRy
KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRmNzk0
ODdjZTkwNjY4MjY0Njg1MTg4YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5YjkzZWZl
MzcwNWM4MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApA
QCAtNDYsNiArNDYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMzZjOTE2NjFmMjJkMmQ4MDkzYzE5OGM5
YzViZDY2NDQzOGY1NDk2Li43NWM5MWY4Njg2ZTRhNWUwODUwMTNiYjExOTIyNWVkYzk3YTQ0NWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xNjEsOCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlID0gMzAKIAogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1jb25z
dCBPYmplY3RUeXBlID0gMTkKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIwCitjb25zdCBPYmpl
Y3RUeXBlID0gMjEKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIyCiAKICMgVHlwZSBmbGFncyBj
b25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYgKzE3
Niw3IEBAIGNvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAogY29u
c3QgR2xvYmFsQ29kZSA9IDAKIGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25Db2Rl
ID0gMgorY29uc3QgTW9kdWxlQ29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRo
ZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBDID0g
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldApAQCAtODg0LDYgKzg4NSwxMSBAQCBfbGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZToKICAgICBkaXNwYXRjaCgwKQogCiAKK19sbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90
RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9w
cm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKIF9sbGludF9ldmFsX3Byb2xvZ3VlOgogICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRp
c3BhdGNoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVs
ZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwCmluZGV4IDJmYTgxYWFjZmMxZjhmMmJkNzY0MmYzODM5YjNiMTI2MDU4N2YyZjIuLmY2
MjM4ZmI5NjgwMmJlNTM3ZTkxYWRjMjZiODJkODkwYjk1NDAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRF
bnRyeSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwotICAg
IGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSgpKSkgeworICAgIGlmICh2YXJpYWJsZS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJp
bmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAg
ICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKaW5kZXggOGE5MzYxNTdiM2Y2OTYwYjYzYmE4MWViNDc3Njg4NmZhMDM0NTk4YS4u
N2YwNTAxYzY1MzEyZGI0ZDRmZjg1ZGM0ZGIxM2FmMjYzMWRkZWM2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjMxOSw3ICsyMzE5LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVy
IFBhcnNlcjxMZXhlclQKICAgICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1l
VG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBp
bXBvcnRlZCBiaW5kaW5nIG5hbWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
YXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6
OkNvbnN0RGVjbGFyYXRpb24sIERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOworICAg
IERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJs
ZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgKHNwZWNpZmll
clR5cGUgPT0gSW1wb3J0U3BlY2lmaWVyVHlwZTo6TmFtZXNwYWNlSW1wb3J0KSA/IERlY2xhcmF0
aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWROYW1lc3BhY2UgOiBEZWNsYXJhdGlvbkltcG9ydFR5cGU6
OkltcG9ydGVkKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1
bHQ6OlZhbGlkKSB7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJhdGlvblJlc3Vs
dCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIkNhbm5vdCBkZWNsYXJl
IGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZWQgIiwgbG9jYWxOYW1lLT5pbXBsKCksICIgaW4gc3Ry
aWN0IG1vZGUiKTsKICAgICAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKQEAgLTI1NjAsMTAgKzI1NjAsOCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBl
ZmZlY3Qgb24gdGhlIGN1cnJlbnQgbW9kdWxlJ3Mgc2NvcGUuIEJ1dCwKICAgICAgICAgICAgIC8v
ICAgZXhwb3J0IHsgQSwgQiwgQyBhcyBEIH0KICAgICAgICAgICAgIC8vIHdpbGwgcmVmZXJlbmNl
IHRoZSBjdXJyZW50IG1vZHVsZSdzIGJpbmRpbmdzLgotICAgICAgICAgICAgZm9yIChjb25zdCBJ
ZGVudGlmaWVyKiBsb2NhbE5hbWUgOiBtYXliZUxvY2FsTmFtZXMpIHsKLSAgICAgICAgICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUobG9jYWxOYW1lLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5ldmFsID09ICpsb2NhbE5hbWUpOworICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlm
aWVyKiBsb2NhbE5hbWUgOiBtYXliZUxvY2FsTmFtZXMpCiAgICAgICAgICAgICAgICAgY3VycmVu
dFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVF
eHBvcnROYW1lZERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1
bGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyZTZhNjUw
NDA4OTkxNWRjMjgwNTdmZmUwMWYwNGVlYWRlMDFmMTQuLmY2OTdiZTMzNmJiODBjNTI1MDQyODU2
YjhjMDg3NTUzNzMzYTEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTAwLDYgKzEwMCw3IEBAIGVudW0gY2xhc3MgRGVjbGFyYXRpb25UeXBlIHsKIAogZW51bSBj
bGFzcyBEZWNsYXJhdGlvbkltcG9ydFR5cGUgewogICAgIEltcG9ydGVkLAorICAgIEltcG9ydGVk
TmFtZXNwYWNlLAogICAgIE5vdEltcG9ydGVkCiB9OwogCkBAIC0zMzUsNiArMzM2LDEwIEBAIHN0
cnVjdCBTY29wZSB7CiAKICAgICAgICAgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBv
cnRUeXBlOjpJbXBvcnRlZCkKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0SXNJbXBvcnRlZCgpOworICAgICAgICBlbHNlIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0
aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWROYW1lc3BhY2UpIHsKKyAgICAgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZCgpOworICAgICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCk7CisgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4
IDVlZDJhNmJkYTkyODM4ZTI5NjQ4MmY2NmMwNzg1YTM2MTFhZTYxNWMuLjc2YzcwOTZlOWU2NDQ3
ZWJiYmRiMGQ5NjVhM2VhNGEyNGE1MTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVj
dCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTGV0OyB9CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzRXhwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4cG9ydGVkOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc0ltcG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWROYW1lc3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVy
ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElz
Q29uc3Q7IH0KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzTGV0KCkgeyBtX2JpdHMgfD0gSXNMZXQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNFeHBvcnRlZCgpIHsgbV9iaXRzIHw9IElz
RXhwb3J0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZCgpIHsgbV9i
aXRzIHw9IElzSW1wb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRl
ZE5hbWVzcGFjZSgpIHsgbV9iaXRzIHw9IElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAg
LTU3LDcgKzU5LDggQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgICAg
IElzVmFyID0gMSA8PCAyLAogICAgICAgICBJc0xldCA9IDEgPDwgMywKICAgICAgICAgSXNFeHBv
cnRlZCA9IDEgPDwgNCwKLSAgICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNQorICAgICAgICBJc0lt
cG9ydGVkID0gMSA8PCA1LAorICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2CiAg
ICAgfTsKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CkBAIC03OSw2ICs4Miw4IEBAIGNs
YXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBj
b25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCByZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikgeyByZXR1cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lO
TElORSBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmll
cik7IH0KICAgICB2b2lkIHN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogICAgIHZv
aWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBhYjcwZWFiYjllM2EyYTA0
NTBjNjI5ZTcwNTY2NmY0ZGNjYTAxZTI4Li5mMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNk
YzdjYmVkZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKQEAgLTY3LDExICs2NywxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENhY2hl
VHlwZXMgeyB9OwogdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrPiB7CiAgICAgdHlwZWRlZiBKU0M6OlByb2dyYW1Ob2RlIFJvb3ROb2RlOwogICAg
IHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNv
ZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZTsKIH07CiAKIHRlbXBsYXRlIDw+
IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXZhbENvZGVCbG9jaz4gewogICAgIHR5cGVkZWYg
SlNDOjpFdmFsTm9kZSBSb290Tm9kZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6
Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZTsKKyAgICBzdGF0aWMg
Y29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGU7Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s+IHsKKyAgICB0eXBlZGVmIEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGUg
Um9vdE5vZGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVU
eXBlID0gU291cmNlQ29kZUtleTo6TW9kdWxlVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2Rl
OwogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhl
Y3V0YWJsZVR5cGU+CkBAIC05NSw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQog
ICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpS
b290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2Rl
ID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUp
OworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAg
IGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzIsNiArMTQw
LDEyIEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2Nr
KFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1CiAgICAgcmV0dXJuIGdldEdsb2JhbENvZGVC
bG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCB2YXJpYWJsZXNVbmRlclREWik7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQor
eworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRURFpWYXJpYWJsZXM7CisgICAg
cmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+
KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKK30KKwogLy8gRklYTUU6
IFRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhl
cmUuIEl0J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNvZGUuCiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShW
TSYgdm0sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAppbmRleCBhZjdkYWM3ZTQ4NzA0MTMxOWM2M2ZlYzk3NTVlMjM5MzE4ODM0Y2I2Li43
MTc1ZmUzOTUxMmM5MzY2ZTYxNjM5ODEzY2I2YzRmODIyNTk4ZGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgSWRl
bnRpZmllcjsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKK2NsYXNzIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jazsKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgU291cmNlUHJvdmlkZXI7CiAK
IGNsYXNzIFNvdXJjZUNvZGVLZXkgewogcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFs
VHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSB9OworICAgIGVudW0gQ29kZVR5cGUgeyBF
dmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwogCiAgICAg
U291cmNlQ29kZUtleSgpCiAgICAgewpAQCAtMjU3LDYgKzI1OSw3IEBAIGNsYXNzIENvZGVDYWNo
ZSB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2so
Vk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9j
ayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGdldE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soVk0mLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3Im
KTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYs
IFBhcnNlckVycm9yJik7CiAKICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggZTQ4NTQ3OTc1NjdkZThjZGJlOTY2MTU3
MDJmYjZlNzUxYjYzYzVmZC4uYjFkMDA1NWVjZjAyNDM0MjlmYWYxOWVkYWZmOGZlMDY1MzliNmQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAg
LTE2MSw3ICsxNjEsMTggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2Rl
QmxvY2sqIGdlbmVyaWNDb2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNv
ZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwor
ICAgIGNhc2UgTW9kdWxlQ29kZTogeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAg
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisKKyAgICAgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNhbGwpOworCisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEV2YWxDb2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2Nr
KTsKQEAgLTIyOCw3ICsyMzksMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJs
ZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAogICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRD
b2x1bW4oKSkpOwogICAgIH0KLSAgICAKKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAor
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+
c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOworICAgIH0KKwogICAgIFJFTEVBU0VfQVNTRVJUKGNs
YXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChmdW5jdGlvbik7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwpAQCAtMjg1LDYgKzMwNiwxNyBAQCBQYXNz
UmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxv
Y2tGb3IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaWYgKGNsYXNzSW5m
bygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhp
cyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nh
c3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9t
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisgICAgICAgIFJlZlB0
cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaygKKyAgICAgICAgICAgIENvZGVCbG9jazo6Q29weVBhcnNlZEJsb2NrLCAq
YmFzZWxpbmUpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShiYXNlbGluZSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAg
ICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVC
bG9jayo+KApAQCAtMzg1LDYgKzQxNywzNiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNl
bGwpLT5Qcm9ncmFtRXhlY3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxlKCk7CiB9CiAKK2NvbnN0
IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwg
ZmFsc2UpCit7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOworICAgIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CisgICAgaWYgKGV4ZWMt
PnZtKCkudHlwZVByb2ZpbGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkp
CisgICAgICAgIGV4ZWMtPnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVu
ZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291
cmNlKTsKKyAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKworICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhleGVjLCBleGVj
dXRhYmxlKTsKKyAgICBpZiAoIXVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlKTsKKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6fk1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRh
YmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9
OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCkBAIC01MTcsNiArNTc5LDIzIEBAIHZvaWQgUHJvZ3JhbUV4
ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK3ZvaWQg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBTY3JpcHRFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhp
c09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAg
ICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisK
IEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0OwpAQCAtNjQ3LDYgKzcyNiwxNSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1F
eGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7Cisg
ICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRoaXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmlu
dCgqY29kZUJsb2NrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29k
ZUJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5k
ZXggYTljNDFjNDUyMTYwM2Q3MDIzM2RjMjAyYzk3M2RkZDY1ZTBkOWEzNy4uY2RjZWIzMDQyNjVm
OTc2ZDAwNzdhZWZkNjU3YjViN2JhYmJmMmExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTQsOCArNTQsMTAgQEAgY2xhc3MgSlNTY29wZTsKIGNs
YXNzIEpTV0FTTU1vZHVsZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNT
Y29wZTsKIGNsYXNzIFdlYkFzc2VtYmx5Q29kZUJsb2NrOwotICAgIAorCiBlbnVtIENvbXBpbGF0
aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiBp
bmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA2LDYg
KzEwOCwxMSBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQor
ICAgIGJvb2wgaXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdHlwZSgpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTsKKyAgICB9CisKIAogICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgIHsKQEAgLTU1MCw2ICs1NTcsNDkgQEAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgUmVmUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKIH07CiAK
K2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOworCisgICAgc3RhdGljIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOworICAg
IH0KKworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGNsZWFyQ29kZSgpOworCisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jazsKKyAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOworfTsKKwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTc0Miw2ICs3OTIsOCBAQCBpbmxpbmUg
dm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSkKICAgICBjYXNlIFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29k
ZSgpOwogI2VuZGlmCisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAg
ICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+
Y2xlYXJDb2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxOYXRpdmVF
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ODY2M2Rm
Y2IwODJjN2FhYjA3YTY5NWI5MDkzYzdkYzQ1OWQxYzIyLi40MzJkMDdiOTdkOGMxNjlmNzNkY2Uy
NzNmYjRlOGViOWQ4M2RiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC05MzMsNiArOTMzLDI1IEBAIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsCiAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSkKK3sKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlID0gaGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsK
KyAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVy
T24gOiBQcm9maWxlck9mZjsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaygKKyAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvcik7CisKKyAgICBpZiAoaGFzRGVidWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+
c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwg
ZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0
KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2Jh
bE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxYTUyNTBjNjdjZDE0NmVmYmNmZDExMjdjNTcwNjM4
YWE0MTNiMTk2Li4xY2EzMWI3YjEyNmZiMmVmZDNiNzE5MGVhZjc2NGY1Y2RhMDk5MWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4
LDYgKzc4LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE1vZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNz
IE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2
LDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsK
IGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFz
cyBOdWxsU2V0dGVyRnVuY3Rpb247CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtNjQzLDYg
KzY0NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNl
cHRpb24pOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhD
YWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50Kik7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Kik7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCA1
ZDE1ZWJjMzZjODQyMGVmNmVjZDU0ZWUwNTNkOWEzMzE1ZjZhYjhiLi43YjYwNjM3NGE2MDYwYjc3
MDIwYzRlZjQ1MTJlOTI0NWUwM2YzZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCkBAIC01OCw2ICs2MCw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU01vZHVsZVJl
Y29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKQEAgLTkwLDggKzkz
LDE0IEBAIEpTTW9kdWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRl
ZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVs
ZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZh
bHVlIikpKTsKIH0KIAotdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqKQordm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CisgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlY3V0YWJsZSk7
CiB9CiAKIEpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDkzNjI2
M2NjZjMxMjlkYTk1ZTMxZTkxYTIxOTQwZGQwYTk1NTI2NDUuLjgxZGEzOTY2ZThjNWE4ZGE5MzA0
ZDI4MmY0ZmJjYTk0ZjI0ZWFlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMTE3LDYgKzExNyw4IEBAIGNsYXNzIEpTTW9kdWxlUmVj
b3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB2b2lkIGxpbmsoRXhlY1N0
YXRlKik7CiAgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOwogCisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIEpTTW9k
dWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTU0
LDYgKzE1Niw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1f
cmVxdWVzdGVkTW9kdWxlczsKIAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+
IG1fZGVwZW5kZW5jaWVzTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaAppbmRleCAxNTk2ZTY1ODRjOGFlYjhiN2MwY2NiNGRhMzAzMDIwMDk4ZTY5NWZmLi4xMTBm
OGI1YWM5ZGI3MWQzMzE2N2Q4NTliMmQ0NjlmM2U3YTVmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaApAQCAtNDEsMTEgKzQxLDEzIEBAIGVudW0gSlNUeXBlIDogdWlu
dDhfdCB7CiAKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGVU
eXBlLAorICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlLAogICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlw
ZSwKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlua2Vk
RXZhbENvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUsCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwCmluZGV4IGU2N2ZhMzg1YmZmNzcxYzRlM2Q4YTJkNzkxMTdiMTNhNTcyMzhlYTEuLjI4
ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2Y2RiNzNlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMjc0
LDYgKzI3NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2Jq
ZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4CiAgICAgICAgIGRhdGFMb2coIkxv
YWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CiAKICAgICBt
b2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDk2MmRjNTJkZGQ2N2VjNjk5ZTEwYWM2OTJkYTA1OTQxMjcx
ZjMyYzMuLjgyN2JiMzY4YWQ4MWUzNWY1NDdjYTFiMTc3NzM0Y2FiNTgzZDMzYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTIyNSw2ICsyMjUsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIHdlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogI2VuZGlm
CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJv
bDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKQEAgLTIzNiw2ICsyMzcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5zZXQo
KnRoaXMsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9wZXJ0eVRhYmxlU3RydWN0dXJlLnNl
dCgqdGhpcywgUHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHdlYWtNYXBEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgV2Vha01hcERhdGE6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFZhbHVlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRWYWx1ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYzRlODAzNzll
OGMyMzkyMmJmYjY4MzgzMWZlYzEzYjRjM2E2ODdhYS4uODRhNTM1YWI3ZDFkZGI0Y2JkNjZiM2Rk
NTk4OGFlNjI5ZjdmOWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDMs
NiArMTAzLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsKIGNsYXNzIFdh
dGNoZG9nOwpAQCAtMjgyLDYgKzI4Myw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHdlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZTsKICNlbmRpZgorICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1i
b2xTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7
CkBAIC0yOTMsNiArMjk1LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
dHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb3BlcnR5VGFibGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2Vha01hcERhdGFTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRWYWx1ZVN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ZjJhYzA5NTBlNmE5YmFiMTkzYWQwZThkMjYzMDlmMWM0
ZDNlNjEwLi5mZTk1YzU3ZTNhMmE3MjVhNjY3NTI3YmJiNDk4YjY0NDI5OWFhYzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDgzLDYgKzE0ODMsOCBAQCBTdHJpbmcg
SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZ1bmN0aW9uIFwiIik7CiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoaW5mZXJyZWROYW1lKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicpOwor
ICAgIH0gZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibW9kdWxlIik7CiAgICAgfSBlbHNlIGlmIChl
eGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxlKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJldmFsIik7CiAgICAgZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhlY3V0YWJs
ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260197</attachid>
            <date>2015-08-28 17:19:56 -0700</date>
            <delta_ts>2015-08-28 17:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148581-20150828171944.patch</filename>
            <type>text/plain</type>
            <size>77962</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2NkMTcwZGRjZGIzNmU0NmE3MjQ4YWVhZTc5MDAwZjBhYWJhODIyLi41NmE4MWIwYmRiMzc3MGIx
Mzc4OGM1MjY1ZTM2ZDA1NjhjNDI4ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW50cm9kdWNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IGZhbWlsaWVzIGFuZCBjb21waWxlIE1vZHVsZSBjb2RlIHRvIGJ5dGVjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIHRoYXQgaXMgbmV3IGV4ZWN1dGFibGUgdHlwZSBm
b3IgdGhlIEVTNiBtb2R1bGVzLgorICAgICAgICBBbmQgcmVsYXRlZCBjb2RlIGJsb2NrIHR5cGVz
LCBVbmlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBhbmQgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayBhcmUgYWxzbworICAgICAgICBpbnRyb2R1Y2VkLiBCeXRlY29kZUdlbmVyYXRvciBub3cgcmVj
b2duaXplcyB0aGVzZSB0eXBlcyBhbmQgZW1pdHMgdGhlIGJ5dGVjb2RlIGFuZCBjb25zdHJ1Y3Rz
CisgICAgICAgIHRoZSBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFdo
aWxlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgYnl0ZWNvZGUgZ2VuZXJhdGlvbgorICAgICAg
ICBmb3IgdGhlIEVTNiBtb2R1bGVzLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRp
b24gaW5pdGlhbGl6YXRpb24gYW5kIGltcG9ydGVkIGJpbmRpbmcKKyAgICAgICAgcmVzb2x1dGlv
biBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2guIFRoZXkgd2lsbCBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgaW50ZXJlc3RpbmcgcGFy
dCBpcyB0aGUgc3ltYm9sIHRhYmxlIGNvbnN0cnVjdGlvbiBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudC4KKyAgICAgICAgU2luY2UgdGhlIG1vZHVsZSBjb2RlIHdpbGwgYmUgb25seSBleGVjdXRl
ZCBvbmNlLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IG5lZWQgbm90IHRvIGJlIGFsbG9jYXRlZAor
ICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgbW9kdWxlIGNvZGU7IEluIHRoZSBj
YXNlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLCB0aGUgZnVuY3Rpb24gY29kZSBuZWVkCisgICAgICAg
IHRvIGFsbG9jYXRlIHRoZSBlbnZpcm9ubWVudCBpbnNpZGUgdGhlIHByb2xvZ3VlIG9mIGl0IGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGNvZGUgY2FuIGJlIGV4ZWN1dGVkCisgICAgICAgIG1vcmUgdGhh
biBvbmNlIGFuZCB0aGUgZnVuY3Rpb24gZW52aXJvbm1lbnRzIGFyZSBkaWZmZXJlbnQgaW4gZWFj
aCB0aW1lIG9mIHRoZSBleGVjdXRpb25zLgorICAgICAgICBUaGUgbW9kdWxlIGVudmlyb25tZW50
IHdpbGwgYmUgaW5zdGFudGlhdGVkIG91dHNpZGUgdGhlIG1vZHVsZSBjb2RlIGJlZm9yZSBleGVj
dXRpbmcgdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
d2UgbmVlZCB0byBsaW5rIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIHRvIGltcG9ydCB0aGUgYmlu
ZGluZ3MgYmVmb3JlCisgICAgICAgIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBjb2RlIGluIHRo
ZSBkZXBlbmRlbmN5IGdyYXBoLiBBbmQgdGhpcyBpcyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpbnNp
ZGUgdGhlCisgICAgICAgIG1vZHVsZSBtYXkgYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBtb2R1bGUg
dG9wLWxldmVsIGJvZHkgaXMgZXhlY3V0ZWQuIChTZWUgdGhlIGNvZGUgY29tbWVudCBmb3IgbW9y
ZQorICAgICAgICBkZXRhaWxlZCBzaXR1YXRpb25zKQorCisgICAgICAgIFRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgd2lsbCBob2xkIHRoZSB0b3AtbW9zdCBoZWFwIGFsbG9jYXRlZCB2YXJpYWJsZXMg
aW4gdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGJlbmVm
aXRzLgorICAgICAgICAxKSBUaGlzIGVuYWJsZXMgSlNDIHRvIHBlcmZvcm0gdGhlIHVzdWFsIExv
Y2FsQ2xvc3VyZVZhciBvcGVyYXRpb25zIG9udG8gaXQuCisgICAgICAgIDIpIEl0IGFsc28gbWFr
ZXMgdGhlIGV4cG9ydGVkIGxleGljYWwgdmFyaWFibGVzIGp1c3QgdGhlIGhlYXAgYWxsb2NhdGVk
IGxleGljYWwgdmFyaWFibGVzLgorICAgICAgICAzKSBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRp
YWxpemUgdGhlIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWZvcmUgZXhl
Y3V0aW5nIHRoZSBtb2R1bGUKKyAgICAgICAgICAgY29kZS4gSXQgaXMgcmVxdWlyZWQgdW5kZXIg
dGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKHNlZSB0aGUgY29kZSBjb21tZW50IGZvciBtb3JlIGRl
dGFpbHMpLgorCisgICAgICAgIFRvIGRvIHNvLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IHdpbGwg
YmUgY29uc3RydWN0ZWQgd2l0aCB0aGUgc3ltYm9sIHRhYmxlIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5
IHRoZQorICAgICAgICBieXRlY29kZSBnZW5lcmF0b3IuIEFuZCB0aGUgc3ltYm9sIHRhYmxlIGlz
IGhlbGQgYnkgdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoYXQgbWVhbnMsIG9uY2UgdGhlIG1v
ZHVsZQorICAgICAgICBlbnZpcm9ubWVudCBpcyBpbnN0YW50aWF0ZWQsIHdlIGNhbm5vdCBjbGVh
ciB0aGUgdW5saW5rZWQgY29kZSBibG9jayBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgc2lu
Y2UKKyAgICAgICAgdGhlIGxheW91dCBvZiB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjb3VwbGVkIHdpdGggdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoaXMgaXMgT0sK
KyAgICAgICAgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgY2FuIGJlIGNsZWFyZWQgb25jZSB3ZSBl
eGVjdXRlZCB0aGUgbW9kdWxlIGNvZGUuIElmIHdlIGZhaWxlZCB0byBleGVjdXRlIHRoZQorICAg
ICAgICBtb2R1bGUgKHNvbWUgZXJyb3JzIG9jY3VyKSwgd2UgY2FuIHRocm93IGF3YXkgdGhlIGJv
dGgsIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYW5kIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLgor
CisgICAgICAgIFRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGhvbGRzIHRo
ZSBzeW1ib2wgdGFibGUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQuCisgICAgICAgIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNh
biBiZSBjYWNoZWQuIFdoaWxlIHVubGlua2VkIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZCwgdGhl
IGxpbmtlZAorICAgICAgICBjb2RlIGJsb2NrIGNhbm5vdCBiZSBjYWNoZWQgYmVjYXVzZSBpdCBp
cyBhbHJlYWR5IGxpbmtlZCB0byB0aGUgc3BlY2lmaWMgc2V0IG9mIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5mZXJyZWROYW1lKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9j
azo6RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoK
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5
cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5k
bHlTb3VyY2VVUkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9u
TmFtZSk6CisgICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6
CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6
OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNh
bFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWROYW1lc3BhY2Up
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpmaW5kKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1l
bnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFy
Q29kZVZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
Ojptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBj
aGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2MTNiYzY2ZDFhN2JlMTA3NWU0YTRjZjQwMTUxYTc5NzIy
N2U1ZC4uYmNlYTg4ZDhlZjk5NDRjYjUxOGQzM2VjOGEzYmVlZjRmN2ZkZTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEludHJvZHVjZSBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmYW1pbGllcyBhbmQgY29tcGlsZSBNb2R1bGUgY29kZSB0byBieXRlY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSBjYXNlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisKKzIw
MTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBpbnRvIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBhbGxvY2F0ZWQgc3RkOjpmdW5j
dGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MjYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTNjNGFlYzNkMzFlNDMyMDdm
MjZhNWM4NGRlNDM3NThkYWE4YjUxZi4uNmYzYWQxYmRhNTRhNWQ5MGNkMTRiZTkwMjc3N2Q0MTc2
ZDgxMTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDAsNiArMTcwMCw3
IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1
ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07
CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9
OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
M0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovOyB9OwpAQCAtMzU1Nyw2ICszNTU4LDcgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxv
YWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3
QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc5OSw2ICs1ODAxLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FC
NDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJ
CUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBl
LmpzICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVj
dG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlBy
b21pc2UuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJv
dG90eXBlLmpzICovLApAQCAtNzA0NSw2ICs3MDQ4LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNl
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1l
d29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMy
OWNlODJhYS4uMDIwZWMyNDg5ZWZlM2EzMzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTU3LDYgKzE1Nyw3IEBACiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAi
bmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogImxsaW50X2V2YWxfcHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmOGEwZjRi
ZmM4Njk0ZmVhZDI4YTZhYjU3YzdjMjM1ZmYxM2QxMThmLi5jNGM2NmQzYjc5NzZmOTc3NWJkMTM0
ZDFlYTk4OWMxNGE0NWRhYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtODcsNiArODcsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJy
ZWROYW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29k
ZToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMzA2Miw2ICszMDY0LDEx
IEBAIENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVy
biBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KCkKK3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDc3LDYgKzMwODQsMTEgQEAgREZH
OjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwoKQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVs
KHRoaXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZl
bCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBjYjllYmQ2MWI1ZGRmZTBjYjNmNjdmMzEwZGY4ODE3N2RkNjM1NDliLi5iZGRkMDM2N2YzYmUz
NzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMTAyLDEwICsxMTAyLDI5IEBAIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNlbmRpZgogfTsKIAorY2xhc3Mg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgeworcHVibGlj
OgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIG92
ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2Jh
bENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
aywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0xMTMwLDcgKzExNDksNyBAQCBj
bGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVibGljOgogICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQot
ICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXggOGIyY2FkNTZhYjY4YWYxMmIz
MmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZlOWY5NDZhZGQ5MTc5M2ZlNjI1
N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
CkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpGdW5jdGlvbkNvZGU6CiAgICAg
ICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVsZSIpOworICAgICAgICByZXR1
cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAppbmRleCBiOGUxMDdkY2Y2YjY3
MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNkZDBjNWZmZTMwZjFhODg0ZjNi
YTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUu
aApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDb2RlVHlwZSB7
IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKK2VudW0gQ29kZVR5cGUgeyBH
bG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1bGVDb2RlIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFi
N2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0MDAyNzUyZGQ5YWViNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0lu
Zm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spIH07Citj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAgIGZvciAoRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
YmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmVuZCgpOyBwdHIgIT0g
ZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICBmb3IgKEZ1bmN0
aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBAIHZvaWQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOworfQor
CiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKIHsKIH0KQEAgLTMwMSw2
ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5V
bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2MTk5Zjc5N2MxMDM4MWRkNDU4
OTNiZDUzNTNmZjFiNmI0Ni4uODJjZThiMzU2M2MyZWFlNmY4ZWQ0OGJkNTQ0YTBiZTIxMmYxN2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAoY29kZVR5cGUoKSA9
PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N5bWJvbFRhYmxl
LnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAg
ICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKIAotICAgIFdyaXRl
QmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lmIEVOQUJMRShCWVRFQ09ERV9D
T01NRU5UUykKQEAgLTUxNCw2ICs1MDksNzEgQEAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICBERUNMQVJF
X0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwg
OiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgIHsKKyAg
ICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhl
YXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT51bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8pOworICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0K
KworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgLy8gVGhpcyBzeW1ib2wgdGFibGUgcmVwcmVzZW50cyB0aGUgbGF5b3V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIHdpbGwgYmUgbW9k
aWZpZWQgYnkgdGhlIGJ5dGUKKyAgICAvLyBjb2RlIGdlbmVyYXRvciBzaW5jZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlh
YmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCwgb25j
ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZy
b20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseQorICAgIC8vIGNvdXBsZWQgd2l0aCB0
aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBhbmQgdGhlIHN5
bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlCisgICAgLy8gY29kZSwg
d2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9j
ayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMgbWV0CisgICAg
Ly8gYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMgdW5saW5rZWQgY29k
ZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBleGVjdXRhYmxl
cy4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoZSBmdW5jdGlvbiBjb2RlIG1heSBiZSBleGVjdXRl
ZCByZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBmdW5jdGlvbiBleGVjdXRp
b24gaXMgZGlmZmVyZW50LAorICAgIC8vIHRoZSBmdW5jdGlvbiBjb2RlIG5lZWQgdG8gYWxsb2Nh
dGUgYW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVudCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhl
IGZ1bmN0aW9uIGNvZGUuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29k
ZSBpcyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQorICAgIC8vIGNvZGUuIEF0IHRoYXQgdGlt
ZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1i
b2wgdGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuCisgICAgLy8gSW5zdGFu
dGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVs
ZSBjb2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzCisgICAgLy8g
YmV0d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLworICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1bGUg
cHJvZ3JhbSBjb2RlIGJsb2NrIG9ubHkgaG9sZHMgdGhlIHN5bWJvbCB0YWJsZS4gTm90IGhvbGRz
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29k
ZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCisgICAgLy8gY2FuIGJlIHVz
ZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxp
bmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgorICAgIC8vIHRo
ZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMu
IFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQu
CisgICAgLy8KKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxpbmtlZCBjb2RlIGJsb2Nr
IGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSByZXNvbHZlZCByZWZlcmVu
Y2VzIHRvIHRoZSBpbXBvcnRlZAorICAgIC8vIGJpbmRpbmdzLiBUaGUgaW1wb3J0ZWQgYmluZGlu
ZyByZWZlcmVuY2VzIHRoZSBvdGhlciBtb2R1bGUgZW52aXJvbm1lbnQsIHNvIHRoZSBsaW5rZWQg
Y29kZSBibG9jayBpcyB0aXRseSBjb3VwbGVkCisgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWMgc2V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sg
c2hvdWxkIG5vdCBiZSBjYWNoZWQuCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE1vZHVs
ZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBt
X3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAg
IH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKKworcHVi
bGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZv
KFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi5jZTk2ZWRkMjg0OWQ2OGVi
NzgyOTg3ZDU5NTI4MDZlZmRjNjFlNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAsNyArNzAs
OSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlmICht
X25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJpYWJsZSh2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdpc3Rlcik7
CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAvLyBGb3Ig
TW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50IGZvciB0
aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxlQ29kZSkK
KyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBAIC01MDQs
NiArNTA2LDE4MSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIH0K
IAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNlRGVidWdn
ZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKKyAg
ICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVyQnl0ZWNv
ZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAgLCBtX3Nj
b3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxv
Y2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKworICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
cykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwor
CisgICAgLy8gVXNlIHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGlzIHN5bWJvbCB0YWJsZQorICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxv
Y2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5
bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNj
b3BlKTsKKworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAg
ICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZU
aGVUaGluZ3MpCisgICAgICAgIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5t
YXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2Fw
dHVyZVNvbWVPZlRoZVRoaW5ncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIG1vZHVsZVByb2dyYW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0
byBsb29rVXBWYXJLaW5kID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgLy8gQWxs
b2NhdGUgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcyBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50Lgor
ICAgICAgICBpZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktp
bmQ6OlNjb3BlOworCisgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBuYW1lc3BhY2UgdmFyaWFibGVz
IGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgdG8gaW5zdGFudGlhdGUKKyAgICAgICAgLy8gaXQg
ZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGNvZGUuCisgICAgICAgIGlmIChlbnRyeS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7
CisKKyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBW
YXJLaW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpT
Y29wZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKKworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgZm9yIChGdW5j
dGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25T
dGFjaygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5v
ZGUtPnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRl
Y2xhcmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52
YWx1ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZh
cktpbmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWYg
KHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KKyAgICAgICAgICAgIC8vIFNlY3Rpb24gMTUuMi4xLjE2LjQsIHN0ZXAg
MTYtYS1pdi0xLgorICAgICAgICAgICAgLy8gQWxsIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudAorICAgICAgICAgICAgLy8gaXMgY3JlYXRlZC4gVGhleSBpbmNsdWRlIHRoZSBleHBvcnRl
ZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIG5vdC1leHBvcnRlZC1idXQtaGVhcC1hbGxvY2F0
ZWQKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBiZWNhdXNl
IGV4cG9ydGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGV4ZWN1dGlu
ZworICAgICAgICAgICAgLy8gdGhlIGFueSBtb2R1bGUgaW5zaWRlIHRoZSBkZXBlbmRlbmN5IGdy
YXBoLiBBbGwgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGV4ZWN1
dGluZworICAgICAgICAgICAgLy8gdGhlIGFjdHVhbCBtb2R1bGUgY29kZSBleGVjdXRpb24uIFRo
aXMgZW5hYmxlcyB0aGUgbW9kdWxlcyBsaW5rIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMuCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gTW9kdWxlIEEgKGV4ZWN1dGVkIDFzdCk6CisgICAg
ICAgICAgICAvLyAgICBpbXBvcnQgeyBiIH0gZnJvbSAiQiI7CisgICAgICAgICAgICAvLyAgICAv
LyBIZXJlLCB0aGUgbW9kdWxlICJCIiBpcyBub3QgZXhlY3V0ZWQgeWV0LCBidXQgdGhlIGZ1bmN0
aW9uIGRlY2xhcmF0aW9uIGlzIGFscmVhZHkgaW5zdGFudGlhdGVkLgorICAgICAgICAgICAgLy8g
ICAgLy8gU28gd2UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gIkIiLgorICAg
ICAgICAgICAgLy8gICAgYigpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgIGV4
cG9ydCBmdW5jdGlvbiBhKCkgeworICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIC8vIE1vZHVsZSBCIChleGVjdXRlZCAybmQpOgorICAgICAgICAgICAgLy8g
ICAgaW1wb3J0IHsgYSB9IGZyb20gIkEiOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
ICAgIGV4cG9ydCBmdW5jdGlvbiBiKCkgeworICAgICAgICAgICAgLy8gICAgICAgIGMoKTsKKyAg
ICAgICAgICAgIC8vICAgIH0KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICAvLyBj
IGlzIG5vdCBleHBvcnRlZCwgYnV0IHNpbmNlIGl0IGlzIHJlZmVyZW5jZWQgZnJvbSB0aGUgYiwg
d2Ugc2hvdWxkIGluc3RhbnRpYXRlIGl0IGJlZm9yZQorICAgICAgICAgICAgLy8gICAgLy8gZXhl
Y3V0aW5nIHRoZSAiQiIgbW9kdWxlIGNvZGUuCisgICAgICAgICAgICAvLyAgICBmdW5jdGlvbiBj
KCkgeworICAgICAgICAgICAgLy8gICAgICAgIGEoKTsKKyAgICAgICAgICAgIC8vICAgIH0KKyAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBNb2R1bGUgRW50cnlQb2ludCAoZXhlY3V0ZWQg
bGFzdCk6CisgICAgICAgICAgICAvLyAgICBpbXBvcnQgIkIiOworICAgICAgICAgICAgLy8gICAg
aW1wb3J0ICJBIjsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gU3RhY2sgYWxsb2NhdGVkIGZ1bmN0aW9ucyBjYW4gYmUgYWxsb2NhdGVk
IHdoZW4gZXhlY3V0aW5nIHRoZSBtb2R1bGUncyBib2R5LgorICAgICAgICAgICAgbV9mdW5jdGlv
bnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3JtYWxGdW5j
dGlvblZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3cgZGVjbGFyZSBh
bGwgdmFyaWFibGVzLgorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSkgeworICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzTGV0
KCkgJiYgIWVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7CisgICAgICAgIGlmICghZW50cnkudmFsdWUu
aXNWYXIoKSkgLy8gVGhpcyBpcyBlaXRoZXIgYSBwYXJhbWV0ZXIgb3IgY2FsbGVlLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBub3QgYWxs
b2NhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYXMgdXN1YWwgdmFyaWFibGVzJyB3YXku
CisgICAgICAgIC8vIFRoZXNlIHJlZmVyZW5jZXMgcmVtYWluIHRoZSAiRHluYW1pYyIgaW4gdGhl
IHVubGlua2VkIGNvZGUgYmxvY2suIExhdGVyLCB3aGVuIGxpbmtpbmcKKyAgICAgICAgLy8gdGhl
IGNvZGUgYmxvY2ssIHdlIHJlc29sdmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgIk1vZHVsZVZhciIu
CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjcmVh
dGVWYXJpYWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVudHJ5LmtleS5nZXQoKSksIGxv
b2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSksIHN5bWJvbFRhYmxlLCBJ
Z25vcmVFeGlzdGluZyk7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcyA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCk7CisKKyAg
ICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xv
Y2spOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGV4aWNhbFZhcmlhYmxlcykgeworICAg
ICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzTGV0KCkgfHwgZW50cnkudmFsdWUuaXNDb25z
dCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZW50cnkudmFsdWUuaXNWYXIoKSk7CisgICAgICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0
KGxvY2tlciwgZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUYWJs
ZUVudHJ5LmlzTnVsbCgpKTsKKworICAgICAgICAgICAgLy8gSW1wb3J0ZWQgYmluZGluZ3MgYXJl
IG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBhcyB1c3VhbCB2YXJpYWJs
ZXMnIHdheS4KKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVu
dHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgVmFyS2luZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChlbnRyeS5r
ZXkuZ2V0KCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQ7
CisgICAgICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkKKyAgICAgICAgICAg
ICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZz
ZXQobG9ja2VyKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dmFyS2luZCA9PSBWYXJLaW5kOjpTdGFjayk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCog
bG9jYWwgPSBuZXdCbG9ja1Njb3BlVmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICBsb2NhbC0+
cmVmKCk7CisgICAgICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KGxvY2FsLT52aXJ0
dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBSZWFkT25s
eSA6IDApOworICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGVudHJ5LmtleS5n
ZXQoKSwgbmV3RW50cnkpOworICAgICAgICB9CisgICAgfQorCisgICAgUmVnaXN0ZXJJRCogY29u
c3RhbnRTeW1ib2xUYWJsZSA9IG51bGxwdHI7CisgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQor
ICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJs
ZSk7CisgICAgZWxzZQorICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRW
YWx1ZShzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQoKm1fdm0pKTsKKworICAgIG1fVERaU3Rh
Y2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxleGljYWxWYXJpYWJsZXMsIHRydWUpKTsKKyAgICBt
X3N5bWJvbFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxlU3RhY2tFbnRyeSB7IFN0cm9uZzxT
eW1ib2xUYWJsZT4oKm1fdm0sIHN5bWJvbFRhYmxlKSwgbV9zY29wZVJlZ2lzdGVyLCBmYWxzZSwg
Y29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKSB9KTsKKworICAgIC8vIFByZWZpbGwgc3RhY2sg
dmFyaWFibGVzIHdpdGggdGhlIFREWiBlbXB0eSB2YWx1ZS4KKyAgICAvLyBTY29wZSB2YXJpYWJs
ZXMgd2lsbCBiZSBpbml0aWFsaXplZCB0byB0aGUgVERaIGVtcHR5IHZhbHVlIHdoZW4gSlNMZXhp
Y2FsRW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkLgorICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhp
Y2FsVmFyaWFibGVzKSB7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBub3QgYWxs
b2NhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYXMgdXN1YWwgdmFyaWFibGVzJyB3YXku
CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQoZW50cnku
a2V5LmdldCgpKTsKKyAgICAgICAgQVNTRVJUKCFzeW1ib2xUYWJsZUVudHJ5LmlzTnVsbCgpKTsK
KyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IHN5bWJvbFRhYmxlRW50cnkudmFyT2Zmc2V0KCk7
CisgICAgICAgIGlmIChvZmZzZXQuaXNTY29wZSgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIEFTU0VSVChvZmZzZXQuaXNTdGFjaygpKTsKKyAgICAgICAgZW1pdE1vdmVFbXB0eVZh
bHVlKCZyZWdpc3RlckZvcihvZmZzZXQuc3RhY2tPZmZzZXQoKSkpOworICAgIH0KK30KKwogQnl0
ZWNvZGVHZW5lcmF0b3I6On5CeXRlY29kZUdlbmVyYXRvcigpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggODljZGVhZDEzNTQ0ODFjNzQ2NjcwZTM1Zjk2MDA1OTM3ZmI5NWJhNy4uMTZiYmMwZGRjMGFk
ZjQwOTFkOGExMzk0NDRhYmIzOTM0MGY1MDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjY5LDYgKzI2
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFBy
b2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsK
ICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENv
ZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5v
ZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIH5CeXRlY29k
ZUdlbmVyYXRvcigpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1Yjgy
NDIyOGFiNjUyMThmZTBlMTdlLi5kNGIzNTA0ZjkyMDZhNTIzNTA3ODM2MTU1Mzk2NmYwMDBjNTE5
ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC0yODk1LDggKzI4OTUsMTcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9kdWxlUHJvZ3JhbU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotdm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExp
bmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKKworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVk
KCkpOworICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZz
ZXQoKSk7CisgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVy
LmdldCgpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFt
LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTMwNTcsMzAgKzMwNjYsMzcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogdm9pZCBJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKQogeworICAgIC8vIERvIG5vdGhpbmcgYXQgcnVudGltZS4KIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90
aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
CisgICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAg
ICBBU1NFUlQobV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9k
ZWNsYXJhdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnRO
YW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAppbmRleCA2NmZhOGVjZjU0MDYzNTg2Y2Q0YWFhOGZiODQ5N2JjNjE1
MWViMDM3Li5mYTYyZWE2ZjM3NmQ4OGNlZmY0ZTk4Mjc1NDMyNjZlMGQ5M2E0NDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAg
LTk3LDYgKzk3LDcgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZyaWVuZGx5U291cmNlVVJMKCkgY29u
c3QKICAgICAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CiAgICAgY2FzZSBTdGFja0ZyYW1lRXZh
bENvZGU6CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKICAgICBjYXNlIFN0YWNrRnJh
bWVGdW5jdGlvbkNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lR2xvYmFsQ29kZToKICAgICAgICAg
aWYgKCFzb3VyY2VVUkwuaXNFbXB0eSgpKQpAQCAtMTE4LDYgKzExOSw5IEBAIFN0cmluZyBTdGFj
a0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QK
ICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKICAgICAgICAgdHJhY2VMaW5lID0gImV2YWwg
Y29kZSI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6Cisg
ICAgICAgIHRyYWNlTGluZSA9ICJtb2R1bGUgY29kZSI7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3RhY2tGcmFtZU5hdGl2ZUNvZGU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAgICAgICAgICAg
ICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lQ2FsbGVlKS5pbXBsKCk7CkBAIC00NTEsNiArNDU1LDggQEAgc3RhdGljIFN0YWNrRnJhbWVD
b2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHN3aXRjaCAodmlzaXRvci0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpG
cmFtZTo6RXZhbDoKICAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBjYXNl
IFN0YWNrVmlzaXRvcjo6RnJhbWU6Ok1vZHVsZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVN
b2R1bGVDb2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6RnVuY3Rpb246CiAgICAg
ICAgIHJldHVybiBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6R2xvYmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAppbmRleCAxMzJjOTVkMTdmNGUxMDliYTM3YmJjYjAxODcyNzMyYjJmOTUx
MTZmLi4wMzhiY2E1Y2ZjNzViOWIyNDU3NjJkNmU2NGY2OGYyZTc4ZWM2MjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQsOCAr
NTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAg
IGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlOworICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2Ft
cGxpbmdUb29sOwpAQCAtNzYsNiArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIFN0
YWNrRnJhbWVDb2RlVHlwZSB7CiAgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAogICAgICAg
ICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAogICAg
ICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAogICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29k
ZQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCmluZGV4IDNmMmI5MTQwNDUxZDQ4ODM0YTlmNzEwMzM0NjRhMjE0N2QxYmRi
NzAuLjc1ZjE3NzIzYjE0YTQ3NTg2ZDllY2Q2NjM2ZWRmYTQ2OTgxN2IwMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0x
ODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAoY29kZUJsb2NrKCktPmNvZGVU
eXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkV2
YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gQ29kZVR5cGU6Ok1vZHVs
ZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpGdW5j
dGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiArMjAxLDkgQEAgU3RyaW5nIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgY2FzZSBDb2RlVHlwZTo6RXZh
bDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNvZGUiKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgorICAgICAgICB0cmFjZUxpbmUg
PSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAgIHRyYWNl
TGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwgY2FsbGVlKS5pbXBs
KCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJj
ZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAgICBjYXNlIENvZGVUeXBlOjpF
dmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENvZGVUeXBlOjpGdW5j
dGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgK
aW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0NjczNC4uNDFiZmM3MDg4
MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFz
cyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICAgRXZhbCwK
ICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAogICAgICAgICAgICAg
TmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiYmM4
NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1NDBmM2NiYWExYWVj
YzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00
ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoIChtX2NvZGVCbG9jay0+
Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA3MzEzZmNlMjQyMDBjYzkxNjE2OWU4MTRhMGEwNTkz
MGFhYmFhNTNkLi43NzdjZmRlMDkzYTJkMTNkZjVmZTVjMzY2Yzk4MjJmNGFlMDg0ZmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTMyLDggKzEzMiw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA2NCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA2KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOSk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAyMCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMjEpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjIpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkBAIC0x
NDEsNiArMTQxLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAg
QVNTRVJUKEdsb2JhbENvZGUgPT0gMCk7CiAgICAgQVNTRVJUKEV2YWxDb2RlID09IDEpOwogICAg
IEFTU0VSVChGdW5jdGlvbkNvZGUgPT0gMik7CisgICAgQVNTRVJUKE1vZHVsZUNvZGUgPT0gMyk7
CiAKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5ID09IDAsICJMTEludCBhc3N1bWVz
IEdsb2JhbFByb3BlcnR5IFJlc3VsdFR5cGUgaXMgPT0gMCIpOwogICAgIHN0YXRpY19hc3NlcnQo
R2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlzID09
IDEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5j
cHAKaW5kZXggOWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZjM2Qy
N2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBAQCBz
dGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKK3N0
YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyAg
ICBVTlVTRURfUEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVM
TEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBzZXRF
bnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNoIChj
b2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAgIHNl
dFByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBNb2R1bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2bSwg
Y29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAg
IHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IGEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEuLjllM2Y0
NDg3YjA4NTIwMTM3MmIyZDdiMjdiNzhjZTU5MWFiZDk3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3Jk
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAppbmRleCA4YWI5NmIzMDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5hZjY4
ODRlNWVkZTdiZWJlMDRmMzdiM2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRy
KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRmNzk0
ODdjZTkwNjY4MjY0Njg1MTg4YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5YjkzZWZl
MzcwNWM4MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApA
QCAtNDYsNiArNDYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMzZjOTE2NjFmMjJkMmQ4MDkzYzE5OGM5
YzViZDY2NDQzOGY1NDk2Li43NWM5MWY4Njg2ZTRhNWUwODUwMTNiYjExOTIyNWVkYzk3YTQ0NWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xNjEsOCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlID0gMzAKIAogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1jb25z
dCBPYmplY3RUeXBlID0gMTkKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIwCitjb25zdCBPYmpl
Y3RUeXBlID0gMjEKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIyCiAKICMgVHlwZSBmbGFncyBj
b25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYgKzE3
Niw3IEBAIGNvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAogY29u
c3QgR2xvYmFsQ29kZSA9IDAKIGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25Db2Rl
ID0gMgorY29uc3QgTW9kdWxlQ29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRo
ZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBDID0g
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldApAQCAtODg0LDYgKzg4NSwxMSBAQCBfbGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZToKICAgICBkaXNwYXRjaCgwKQogCiAKK19sbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90
RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9w
cm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKIF9sbGludF9ldmFsX3Byb2xvZ3VlOgogICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRp
c3BhdGNoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVs
ZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwCmluZGV4IDJmYTgxYWFjZmMxZjhmMmJkNzY0MmYzODM5YjNiMTI2MDU4N2YyZjIuLmY2
MjM4ZmI5NjgwMmJlNTM3ZTkxYWRjMjZiODJkODkwYjk1NDAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRF
bnRyeSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwotICAg
IGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSgpKSkgeworICAgIGlmICh2YXJpYWJsZS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJp
bmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAg
ICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKaW5kZXggOGE5MzYxNTdiM2Y2OTYwYjYzYmE4MWViNDc3Njg4NmZhMDM0NTk4YS4u
N2YwNTAxYzY1MzEyZGI0ZDRmZjg1ZGM0ZGIxM2FmMjYzMWRkZWM2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjMxOSw3ICsyMzE5LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVy
IFBhcnNlcjxMZXhlclQKICAgICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1l
VG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBp
bXBvcnRlZCBiaW5kaW5nIG5hbWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
YXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6
OkNvbnN0RGVjbGFyYXRpb24sIERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOworICAg
IERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJs
ZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgKHNwZWNpZmll
clR5cGUgPT0gSW1wb3J0U3BlY2lmaWVyVHlwZTo6TmFtZXNwYWNlSW1wb3J0KSA/IERlY2xhcmF0
aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWROYW1lc3BhY2UgOiBEZWNsYXJhdGlvbkltcG9ydFR5cGU6
OkltcG9ydGVkKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1
bHQ6OlZhbGlkKSB7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJhdGlvblJlc3Vs
dCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIkNhbm5vdCBkZWNsYXJl
IGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZWQgIiwgbG9jYWxOYW1lLT5pbXBsKCksICIgaW4gc3Ry
aWN0IG1vZGUiKTsKICAgICAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKQEAgLTI1NjAsMTAgKzI1NjAsOCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBl
ZmZlY3Qgb24gdGhlIGN1cnJlbnQgbW9kdWxlJ3Mgc2NvcGUuIEJ1dCwKICAgICAgICAgICAgIC8v
ICAgZXhwb3J0IHsgQSwgQiwgQyBhcyBEIH0KICAgICAgICAgICAgIC8vIHdpbGwgcmVmZXJlbmNl
IHRoZSBjdXJyZW50IG1vZHVsZSdzIGJpbmRpbmdzLgotICAgICAgICAgICAgZm9yIChjb25zdCBJ
ZGVudGlmaWVyKiBsb2NhbE5hbWUgOiBtYXliZUxvY2FsTmFtZXMpIHsKLSAgICAgICAgICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUobG9jYWxOYW1lLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5ldmFsID09ICpsb2NhbE5hbWUpOworICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlm
aWVyKiBsb2NhbE5hbWUgOiBtYXliZUxvY2FsTmFtZXMpCiAgICAgICAgICAgICAgICAgY3VycmVu
dFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVF
eHBvcnROYW1lZERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1
bGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyZTZhNjUw
NDA4OTkxNWRjMjgwNTdmZmUwMWYwNGVlYWRlMDFmMTQuLmY2OTdiZTMzNmJiODBjNTI1MDQyODU2
YjhjMDg3NTUzNzMzYTEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTAwLDYgKzEwMCw3IEBAIGVudW0gY2xhc3MgRGVjbGFyYXRpb25UeXBlIHsKIAogZW51bSBj
bGFzcyBEZWNsYXJhdGlvbkltcG9ydFR5cGUgewogICAgIEltcG9ydGVkLAorICAgIEltcG9ydGVk
TmFtZXNwYWNlLAogICAgIE5vdEltcG9ydGVkCiB9OwogCkBAIC0zMzUsNiArMzM2LDEwIEBAIHN0
cnVjdCBTY29wZSB7CiAKICAgICAgICAgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBv
cnRUeXBlOjpJbXBvcnRlZCkKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0SXNJbXBvcnRlZCgpOworICAgICAgICBlbHNlIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0
aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWROYW1lc3BhY2UpIHsKKyAgICAgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZCgpOworICAgICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCk7CisgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4
IDVlZDJhNmJkYTkyODM4ZTI5NjQ4MmY2NmMwNzg1YTM2MTFhZTYxNWMuLjc2YzcwOTZlOWU2NDQ3
ZWJiYmRiMGQ5NjVhM2VhNGEyNGE1MTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVj
dCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTGV0OyB9CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzRXhwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4cG9ydGVkOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc0ltcG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWROYW1lc3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVy
ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElz
Q29uc3Q7IH0KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzTGV0KCkgeyBtX2JpdHMgfD0gSXNMZXQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNFeHBvcnRlZCgpIHsgbV9iaXRzIHw9IElz
RXhwb3J0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZCgpIHsgbV9i
aXRzIHw9IElzSW1wb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRl
ZE5hbWVzcGFjZSgpIHsgbV9iaXRzIHw9IElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAg
LTU3LDcgKzU5LDggQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgICAg
IElzVmFyID0gMSA8PCAyLAogICAgICAgICBJc0xldCA9IDEgPDwgMywKICAgICAgICAgSXNFeHBv
cnRlZCA9IDEgPDwgNCwKLSAgICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNQorICAgICAgICBJc0lt
cG9ydGVkID0gMSA8PCA1LAorICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2CiAg
ICAgfTsKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CkBAIC03OSw2ICs4Miw4IEBAIGNs
YXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBj
b25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCByZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikgeyByZXR1cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lO
TElORSBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmll
cik7IH0KICAgICB2b2lkIHN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogICAgIHZv
aWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBhYjcwZWFiYjllM2EyYTA0
NTBjNjI5ZTcwNTY2NmY0ZGNjYTAxZTI4Li5mMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNk
YzdjYmVkZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKQEAgLTY3LDExICs2NywxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENhY2hl
VHlwZXMgeyB9OwogdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrPiB7CiAgICAgdHlwZWRlZiBKU0M6OlByb2dyYW1Ob2RlIFJvb3ROb2RlOwogICAg
IHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNv
ZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZTsKIH07CiAKIHRlbXBsYXRlIDw+
IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXZhbENvZGVCbG9jaz4gewogICAgIHR5cGVkZWYg
SlNDOjpFdmFsTm9kZSBSb290Tm9kZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6
Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZTsKKyAgICBzdGF0aWMg
Y29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGU7Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s+IHsKKyAgICB0eXBlZGVmIEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGUg
Um9vdE5vZGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVU
eXBlID0gU291cmNlQ29kZUtleTo6TW9kdWxlVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2Rl
OwogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhl
Y3V0YWJsZVR5cGU+CkBAIC05NSw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQog
ICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpS
b290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2Rl
ID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUp
OworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAg
IGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzIsNiArMTQw
LDEyIEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2Nr
KFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1CiAgICAgcmV0dXJuIGdldEdsb2JhbENvZGVC
bG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCB2YXJpYWJsZXNVbmRlclREWik7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQor
eworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRURFpWYXJpYWJsZXM7CisgICAg
cmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+
KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKK30KKwogLy8gRklYTUU6
IFRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhl
cmUuIEl0J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNvZGUuCiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShW
TSYgdm0sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAppbmRleCBhZjdkYWM3ZTQ4NzA0MTMxOWM2M2ZlYzk3NTVlMjM5MzE4ODM0Y2I2Li43
MTc1ZmUzOTUxMmM5MzY2ZTYxNjM5ODEzY2I2YzRmODIyNTk4ZGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgSWRl
bnRpZmllcjsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKK2NsYXNzIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jazsKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgU291cmNlUHJvdmlkZXI7CiAK
IGNsYXNzIFNvdXJjZUNvZGVLZXkgewogcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFs
VHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSB9OworICAgIGVudW0gQ29kZVR5cGUgeyBF
dmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwogCiAgICAg
U291cmNlQ29kZUtleSgpCiAgICAgewpAQCAtMjU3LDYgKzI1OSw3IEBAIGNsYXNzIENvZGVDYWNo
ZSB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2so
Vk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9j
ayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGdldE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soVk0mLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3Im
KTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYs
IFBhcnNlckVycm9yJik7CiAKICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggZTQ4NTQ3OTc1NjdkZThjZGJlOTY2MTU3
MDJmYjZlNzUxYjYzYzVmZC4uYjFkMDA1NWVjZjAyNDM0MjlmYWYxOWVkYWZmOGZlMDY1MzliNmQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAg
LTE2MSw3ICsxNjEsMTggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2Rl
QmxvY2sqIGdlbmVyaWNDb2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNv
ZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwor
ICAgIGNhc2UgTW9kdWxlQ29kZTogeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAg
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisKKyAgICAgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNhbGwpOworCisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEV2YWxDb2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2Nr
KTsKQEAgLTIyOCw3ICsyMzksMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJs
ZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAogICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRD
b2x1bW4oKSkpOwogICAgIH0KLSAgICAKKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAor
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+
c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOworICAgIH0KKwogICAgIFJFTEVBU0VfQVNTRVJUKGNs
YXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChmdW5jdGlvbik7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwpAQCAtMjg1LDYgKzMwNiwxNyBAQCBQYXNz
UmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxv
Y2tGb3IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaWYgKGNsYXNzSW5m
bygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhp
cyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nh
c3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9t
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisgICAgICAgIFJlZlB0
cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaygKKyAgICAgICAgICAgIENvZGVCbG9jazo6Q29weVBhcnNlZEJsb2NrLCAq
YmFzZWxpbmUpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShiYXNlbGluZSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAg
ICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVC
bG9jayo+KApAQCAtMzg1LDYgKzQxNywzNiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNl
bGwpLT5Qcm9ncmFtRXhlY3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxlKCk7CiB9CiAKK2NvbnN0
IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwg
ZmFsc2UpCit7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOworICAgIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CisgICAgaWYgKGV4ZWMt
PnZtKCkudHlwZVByb2ZpbGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkp
CisgICAgICAgIGV4ZWMtPnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVu
ZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291
cmNlKTsKKyAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKworICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhleGVjLCBleGVj
dXRhYmxlKTsKKyAgICBpZiAoIXVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlKTsKKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6fk1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRh
YmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9
OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCkBAIC01MTcsNiArNTc5LDIzIEBAIHZvaWQgUHJvZ3JhbUV4
ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK3ZvaWQg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBTY3JpcHRFeGVj
dXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhp
c09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAg
ICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisK
IEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0OwpAQCAtNjQ3LDYgKzcyNiwxNSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1F
eGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7Cisg
ICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRoaXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmlu
dCgqY29kZUJsb2NrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29k
ZUJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5k
ZXggYTljNDFjNDUyMTYwM2Q3MDIzM2RjMjAyYzk3M2RkZDY1ZTBkOWEzNy4uY2RjZWIzMDQyNjVm
OTc2ZDAwNzdhZWZkNjU3YjViN2JhYmJmMmExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTQsOCArNTQsMTAgQEAgY2xhc3MgSlNTY29wZTsKIGNs
YXNzIEpTV0FTTU1vZHVsZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNT
Y29wZTsKIGNsYXNzIFdlYkFzc2VtYmx5Q29kZUJsb2NrOwotICAgIAorCiBlbnVtIENvbXBpbGF0
aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiBp
bmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA2LDYg
KzEwOCwxMSBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQor
ICAgIGJvb2wgaXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdHlwZSgpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTsKKyAgICB9CisKIAogICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgIHsKQEAgLTU1MCw2ICs1NTcsNDkgQEAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgUmVmUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKIH07CiAK
K2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOworCisgICAgc3RhdGljIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOworICAg
IH0KKworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGNsZWFyQ29kZSgpOworCisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jazsKKyAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOworfTsKKwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTc0Miw2ICs3OTIsOCBAQCBpbmxpbmUg
dm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSkKICAgICBjYXNlIFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29k
ZSgpOwogI2VuZGlmCisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAg
ICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+
Y2xlYXJDb2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxOYXRpdmVF
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ODY2M2Rm
Y2IwODJjN2FhYjA3YTY5NWI5MDkzYzdkYzQ1OWQxYzIyLi40MzJkMDdiOTdkOGMxNjlmNzNkY2Uy
NzNmYjRlOGViOWQ4M2RiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC05MzMsNiArOTMzLDI1IEBAIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsCiAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSkKK3sKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlID0gaGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsK
KyAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVy
T24gOiBQcm9maWxlck9mZjsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaygKKyAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvcik7CisKKyAgICBpZiAoaGFzRGVidWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+
c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwg
ZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0
KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2Jh
bE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxYTUyNTBjNjdjZDE0NmVmYmNmZDExMjdjNTcwNjM4
YWE0MTNiMTk2Li4xY2EzMWI3YjEyNmZiMmVmZDNiNzE5MGVhZjc2NGY1Y2RhMDk5MWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4
LDYgKzc4LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE1vZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNz
IE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2
LDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsK
IGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFz
cyBOdWxsU2V0dGVyRnVuY3Rpb247CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtNjQzLDYg
KzY0NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNl
cHRpb24pOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhD
YWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50Kik7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Kik7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCA1
ZDE1ZWJjMzZjODQyMGVmNmVjZDU0ZWUwNTNkOWEzMzE1ZjZhYjhiLi43YjYwNjM3NGE2MDYwYjc3
MDIwYzRlZjQ1MTJlOTI0NWUwM2YzZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCkBAIC01OCw2ICs2MCw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU01vZHVsZVJl
Y29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKQEAgLTkwLDggKzkz
LDE0IEBAIEpTTW9kdWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRl
ZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVs
ZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZh
bHVlIikpKTsKIH0KIAotdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqKQordm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CisgICAgaWYgKCFleGVjdXRhYmxlKSB7CisgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlY3V0YWJsZSk7
CiB9CiAKIEpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDkzNjI2
M2NjZjMxMjlkYTk1ZTMxZTkxYTIxOTQwZGQwYTk1NTI2NDUuLjgxZGEzOTY2ZThjNWE4ZGE5MzA0
ZDI4MmY0ZmJjYTk0ZjI0ZWFlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMTE3LDYgKzExNyw4IEBAIGNsYXNzIEpTTW9kdWxlUmVj
b3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB2b2lkIGxpbmsoRXhlY1N0
YXRlKik7CiAgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOwogCisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIEpTTW9k
dWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTU0
LDYgKzE1Niw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1f
cmVxdWVzdGVkTW9kdWxlczsKIAorICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+
IG1fZGVwZW5kZW5jaWVzTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaAppbmRleCAxNTk2ZTY1ODRjOGFlYjhiN2MwY2NiNGRhMzAzMDIwMDk4ZTY5NWZmLi4xMTBm
OGI1YWM5ZGI3MWQzMzE2N2Q4NTliMmQ0NjlmM2U3YTVmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaApAQCAtNDEsMTEgKzQxLDEzIEBAIGVudW0gSlNUeXBlIDogdWlu
dDhfdCB7CiAKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGVU
eXBlLAorICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlLAogICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlw
ZSwKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlua2Vk
RXZhbENvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUsCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwCmluZGV4IGU2N2ZhMzg1YmZmNzcxYzRlM2Q4YTJkNzkxMTdiMTNhNTcyMzhlYTEuLjI4
ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2Y2RiNzNlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMjc0
LDYgKzI3NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2Jq
ZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4CiAgICAgICAgIGRhdGFMb2coIkxv
YWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CiAKICAgICBt
b2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDk2MmRjNTJkZGQ2N2VjNjk5ZTEwYWM2OTJkYTA1OTQxMjcx
ZjMyYzMuLjgyN2JiMzY4YWQ4MWUzNWY1NDdjYTFiMTc3NzM0Y2FiNTgzZDMzYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTIyNSw2ICsyMjUsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIHdlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogI2VuZGlm
CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJv
bDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKQEAgLTIzNiw2ICsyMzcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5zZXQo
KnRoaXMsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9wZXJ0eVRhYmxlU3RydWN0dXJlLnNl
dCgqdGhpcywgUHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHdlYWtNYXBEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgV2Vha01hcERhdGE6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFZhbHVlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRWYWx1ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYzRlODAzNzll
OGMyMzkyMmJmYjY4MzgzMWZlYzEzYjRjM2E2ODdhYS4uODRhNTM1YWI3ZDFkZGI0Y2JkNjZiM2Rk
NTk4OGFlNjI5ZjdmOWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDMs
NiArMTAzLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsKIGNsYXNzIFdh
dGNoZG9nOwpAQCAtMjgyLDYgKzI4Myw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHdlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZTsKICNlbmRpZgorICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1i
b2xTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7
CkBAIC0yOTMsNiArMjk1LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
dHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb3BlcnR5VGFibGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2Vha01hcERhdGFTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRWYWx1ZVN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ZjJhYzA5NTBlNmE5YmFiMTkzYWQwZThkMjYzMDlmMWM0
ZDNlNjEwLi4zODc4NTBkNWE2Y2E2ZjRhOGQxODg2ZDYzODVhNzUxMmE1YjI4MzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDg1LDYgKzE0ODUsOCBAQCBTdHJpbmcg
SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicpOwogICAgIH0gZWxzZSBpZiAoZXhlY3V0YWJsZS0+
aXNFdmFsRXhlY3V0YWJsZSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZXZhbCIp
OworICAgIGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIm1vZHVsZSIpOwogICAgIGVsc2UgaWYgKGV4
ZWN1dGFibGUtPmlzUHJvZ3JhbUV4ZWN1dGFibGUoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoInByb2dyYW0iKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260198</attachid>
            <date>2015-08-28 17:27:10 -0700</date>
            <delta_ts>2015-08-28 23:04:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148581-20150828172657.patch</filename>
            <type>text/plain</type>
            <size>78228</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2NkMTcwZGRjZGIzNmU0NmE3MjQ4YWVhZTc5MDAwZjBhYWJhODIyLi41NmE4MWIwYmRiMzc3MGIx
Mzc4OGM1MjY1ZTM2ZDA1NjhjNDI4ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW50cm9kdWNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IGZhbWlsaWVzIGFuZCBjb21waWxlIE1vZHVsZSBjb2RlIHRvIGJ5dGVjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIHRoYXQgaXMgbmV3IGV4ZWN1dGFibGUgdHlwZSBm
b3IgdGhlIEVTNiBtb2R1bGVzLgorICAgICAgICBBbmQgcmVsYXRlZCBjb2RlIGJsb2NrIHR5cGVz
LCBVbmlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBhbmQgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayBhcmUgYWxzbworICAgICAgICBpbnRyb2R1Y2VkLiBCeXRlY29kZUdlbmVyYXRvciBub3cgcmVj
b2duaXplcyB0aGVzZSB0eXBlcyBhbmQgZW1pdHMgdGhlIGJ5dGVjb2RlIGFuZCBjb25zdHJ1Y3Rz
CisgICAgICAgIHRoZSBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFdo
aWxlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgYnl0ZWNvZGUgZ2VuZXJhdGlvbgorICAgICAg
ICBmb3IgdGhlIEVTNiBtb2R1bGVzLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRp
b24gaW5pdGlhbGl6YXRpb24gYW5kIGltcG9ydGVkIGJpbmRpbmcKKyAgICAgICAgcmVzb2x1dGlv
biBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2guIFRoZXkgd2lsbCBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgaW50ZXJlc3RpbmcgcGFy
dCBpcyB0aGUgc3ltYm9sIHRhYmxlIGNvbnN0cnVjdGlvbiBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudC4KKyAgICAgICAgU2luY2UgdGhlIG1vZHVsZSBjb2RlIHdpbGwgYmUgb25seSBleGVjdXRl
ZCBvbmNlLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IG5lZWQgbm90IHRvIGJlIGFsbG9jYXRlZAor
ICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgbW9kdWxlIGNvZGU7IEluIHRoZSBj
YXNlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLCB0aGUgZnVuY3Rpb24gY29kZSBuZWVkCisgICAgICAg
IHRvIGFsbG9jYXRlIHRoZSBlbnZpcm9ubWVudCBpbnNpZGUgdGhlIHByb2xvZ3VlIG9mIGl0IGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGNvZGUgY2FuIGJlIGV4ZWN1dGVkCisgICAgICAgIG1vcmUgdGhh
biBvbmNlIGFuZCB0aGUgZnVuY3Rpb24gZW52aXJvbm1lbnRzIGFyZSBkaWZmZXJlbnQgaW4gZWFj
aCB0aW1lIG9mIHRoZSBleGVjdXRpb25zLgorICAgICAgICBUaGUgbW9kdWxlIGVudmlyb25tZW50
IHdpbGwgYmUgaW5zdGFudGlhdGVkIG91dHNpZGUgdGhlIG1vZHVsZSBjb2RlIGJlZm9yZSBleGVj
dXRpbmcgdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
d2UgbmVlZCB0byBsaW5rIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIHRvIGltcG9ydCB0aGUgYmlu
ZGluZ3MgYmVmb3JlCisgICAgICAgIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBjb2RlIGluIHRo
ZSBkZXBlbmRlbmN5IGdyYXBoLiBBbmQgdGhpcyBpcyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpbnNp
ZGUgdGhlCisgICAgICAgIG1vZHVsZSBtYXkgYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBtb2R1bGUg
dG9wLWxldmVsIGJvZHkgaXMgZXhlY3V0ZWQuIChTZWUgdGhlIGNvZGUgY29tbWVudCBmb3IgbW9y
ZQorICAgICAgICBkZXRhaWxlZCBzaXR1YXRpb25zKQorCisgICAgICAgIFRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgd2lsbCBob2xkIHRoZSB0b3AtbW9zdCBoZWFwIGFsbG9jYXRlZCB2YXJpYWJsZXMg
aW4gdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGJlbmVm
aXRzLgorICAgICAgICAxKSBUaGlzIGVuYWJsZXMgSlNDIHRvIHBlcmZvcm0gdGhlIHVzdWFsIExv
Y2FsQ2xvc3VyZVZhciBvcGVyYXRpb25zIG9udG8gaXQuCisgICAgICAgIDIpIEl0IGFsc28gbWFr
ZXMgdGhlIGV4cG9ydGVkIGxleGljYWwgdmFyaWFibGVzIGp1c3QgdGhlIGhlYXAgYWxsb2NhdGVk
IGxleGljYWwgdmFyaWFibGVzLgorICAgICAgICAzKSBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRp
YWxpemUgdGhlIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWZvcmUgZXhl
Y3V0aW5nIHRoZSBtb2R1bGUKKyAgICAgICAgICAgY29kZS4gSXQgaXMgcmVxdWlyZWQgdW5kZXIg
dGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKHNlZSB0aGUgY29kZSBjb21tZW50IGZvciBtb3JlIGRl
dGFpbHMpLgorCisgICAgICAgIFRvIGRvIHNvLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IHdpbGwg
YmUgY29uc3RydWN0ZWQgd2l0aCB0aGUgc3ltYm9sIHRhYmxlIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5
IHRoZQorICAgICAgICBieXRlY29kZSBnZW5lcmF0b3IuIEFuZCB0aGUgc3ltYm9sIHRhYmxlIGlz
IGhlbGQgYnkgdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoYXQgbWVhbnMsIG9uY2UgdGhlIG1v
ZHVsZQorICAgICAgICBlbnZpcm9ubWVudCBpcyBpbnN0YW50aWF0ZWQsIHdlIGNhbm5vdCBjbGVh
ciB0aGUgdW5saW5rZWQgY29kZSBibG9jayBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgc2lu
Y2UKKyAgICAgICAgdGhlIGxheW91dCBvZiB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjb3VwbGVkIHdpdGggdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoaXMgaXMgT0sK
KyAgICAgICAgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgY2FuIGJlIGNsZWFyZWQgb25jZSB3ZSBl
eGVjdXRlZCB0aGUgbW9kdWxlIGNvZGUuIElmIHdlIGZhaWxlZCB0byBleGVjdXRlIHRoZQorICAg
ICAgICBtb2R1bGUgKHNvbWUgZXJyb3JzIG9jY3VyKSwgd2UgY2FuIHRocm93IGF3YXkgdGhlIGJv
dGgsIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYW5kIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLgor
CisgICAgICAgIFRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGhvbGRzIHRo
ZSBzeW1ib2wgdGFibGUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQuCisgICAgICAgIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNh
biBiZSBjYWNoZWQuIFdoaWxlIHVubGlua2VkIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZCwgdGhl
IGxpbmtlZAorICAgICAgICBjb2RlIGJsb2NrIGNhbm5vdCBiZSBjYWNoZWQgYmVjYXVzZSBpdCBp
cyBhbHJlYWR5IGxpbmtlZCB0byB0aGUgc3BlY2lmaWMgc2V0IG9mIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5mZXJyZWROYW1lKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9j
azo6RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoK
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5
cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5k
bHlTb3VyY2VVUkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9u
TmFtZSk6CisgICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6
CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6
OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNh
bFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWROYW1lc3BhY2Up
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpmaW5kKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1l
bnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFy
Q29kZVZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
Ojptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBj
aGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2MTNiYzY2ZDFhN2JlMTA3NWU0YTRjZjQwMTUxYTc5NzIy
N2U1ZC4uYmNlYTg4ZDhlZjk5NDRjYjUxOGQzM2VjOGEzYmVlZjRmN2ZkZTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEludHJvZHVjZSBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmYW1pbGllcyBhbmQgY29tcGlsZSBNb2R1bGUgY29kZSB0byBieXRlY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSBjYXNlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisKKzIw
MTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBpbnRvIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBhbGxvY2F0ZWQgc3RkOjpmdW5j
dGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MjYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTNjNGFlYzNkMzFlNDMyMDdm
MjZhNWM4NGRlNDM3NThkYWE4YjUxZi4uNmYzYWQxYmRhNTRhNWQ5MGNkMTRiZTkwMjc3N2Q0MTc2
ZDgxMTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDAsNiArMTcwMCw3
IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1
ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07
CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9
OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
M0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovOyB9OwpAQCAtMzU1Nyw2ICszNTU4LDcgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxv
YWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3
QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc5OSw2ICs1ODAxLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FC
NDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJ
CUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBl
LmpzICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVj
dG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlBy
b21pc2UuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJv
dG90eXBlLmpzICovLApAQCAtNzA0NSw2ICs3MDQ4LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNl
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1l
d29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMy
OWNlODJhYS4uMDIwZWMyNDg5ZWZlM2EzMzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTU3LDYgKzE1Nyw3IEBACiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAi
bmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogImxsaW50X2V2YWxfcHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmOGEwZjRi
ZmM4Njk0ZmVhZDI4YTZhYjU3YzdjMjM1ZmYxM2QxMThmLi5jNGM2NmQzYjc5NzZmOTc3NWJkMTM0
ZDFlYTk4OWMxNGE0NWRhYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtODcsNiArODcsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJy
ZWROYW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29k
ZToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMzA2Miw2ICszMDY0LDEx
IEBAIENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVy
biBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KCkKK3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDc3LDYgKzMwODQsMTEgQEAgREZH
OjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwoKQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVs
KHRoaXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZl
bCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBjYjllYmQ2MWI1ZGRmZTBjYjNmNjdmMzEwZGY4ODE3N2RkNjM1NDliLi5iZGRkMDM2N2YzYmUz
NzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMTAyLDEwICsxMTAyLDI5IEBAIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNlbmRpZgogfTsKIAorY2xhc3Mg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgeworcHVibGlj
OgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIG92
ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2Jh
bENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
aywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0xMTMwLDcgKzExNDksNyBAQCBj
bGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVibGljOgogICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQot
ICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXggOGIyY2FkNTZhYjY4YWYxMmIz
MmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZlOWY5NDZhZGQ5MTc5M2ZlNjI1
N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
CkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpGdW5jdGlvbkNvZGU6CiAgICAg
ICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVsZSIpOworICAgICAgICByZXR1
cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAppbmRleCBiOGUxMDdkY2Y2YjY3
MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNkZDBjNWZmZTMwZjFhODg0ZjNi
YTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUu
aApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDb2RlVHlwZSB7
IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKK2VudW0gQ29kZVR5cGUgeyBH
bG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1bGVDb2RlIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFi
N2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0MDAyNzUyZGQ5YWViNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0lu
Zm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spIH07Citj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAgIGZvciAoRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
YmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmVuZCgpOyBwdHIgIT0g
ZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICBmb3IgKEZ1bmN0
aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBAIHZvaWQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOworfQor
CiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKIHsKIH0KQEAgLTMwMSw2
ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5V
bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2MTk5Zjc5N2MxMDM4MWRkNDU4
OTNiZDUzNTNmZjFiNmI0Ni4uODJjZThiMzU2M2MyZWFlNmY4ZWQ0OGJkNTQ0YTBiZTIxMmYxN2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAoY29kZVR5cGUoKSA9
PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N5bWJvbFRhYmxl
LnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAg
ICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKIAotICAgIFdyaXRl
QmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lmIEVOQUJMRShCWVRFQ09ERV9D
T01NRU5UUykKQEAgLTUxNCw2ICs1MDksNzEgQEAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICBERUNMQVJF
X0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwg
OiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgIHsKKyAg
ICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhl
YXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT51bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8pOworICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0K
KworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgLy8gVGhpcyBzeW1ib2wgdGFibGUgcmVwcmVzZW50cyB0aGUgbGF5b3V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIHdpbGwgYmUgbW9k
aWZpZWQgYnkgdGhlIGJ5dGUKKyAgICAvLyBjb2RlIGdlbmVyYXRvciBzaW5jZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlh
YmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCwgb25j
ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZy
b20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseQorICAgIC8vIGNvdXBsZWQgd2l0aCB0
aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBhbmQgdGhlIHN5
bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlCisgICAgLy8gY29kZSwg
d2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9j
ayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMgbWV0CisgICAg
Ly8gYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMgdW5saW5rZWQgY29k
ZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBleGVjdXRhYmxl
cy4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoZSBmdW5jdGlvbiBjb2RlIG1heSBiZSBleGVjdXRl
ZCByZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBmdW5jdGlvbiBleGVjdXRp
b24gaXMgZGlmZmVyZW50LAorICAgIC8vIHRoZSBmdW5jdGlvbiBjb2RlIG5lZWQgdG8gYWxsb2Nh
dGUgYW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVudCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhl
IGZ1bmN0aW9uIGNvZGUuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29k
ZSBpcyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQorICAgIC8vIGNvZGUuIEF0IHRoYXQgdGlt
ZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1i
b2wgdGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuCisgICAgLy8gSW5zdGFu
dGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVs
ZSBjb2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzCisgICAgLy8g
YmV0d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLworICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1bGUg
cHJvZ3JhbSBjb2RlIGJsb2NrIG9ubHkgaG9sZHMgdGhlIHN5bWJvbCB0YWJsZS4gTm90IGhvbGRz
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29k
ZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCisgICAgLy8gY2FuIGJlIHVz
ZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxp
bmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgorICAgIC8vIHRo
ZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMu
IFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQu
CisgICAgLy8KKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxpbmtlZCBjb2RlIGJsb2Nr
IGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSByZXNvbHZlZCByZWZlcmVu
Y2VzIHRvIHRoZSBpbXBvcnRlZAorICAgIC8vIGJpbmRpbmdzLiBUaGUgaW1wb3J0ZWQgYmluZGlu
ZyByZWZlcmVuY2VzIHRoZSBvdGhlciBtb2R1bGUgZW52aXJvbm1lbnQsIHNvIHRoZSBsaW5rZWQg
Y29kZSBibG9jayBpcyB0aXRseSBjb3VwbGVkCisgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWMgc2V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sg
c2hvdWxkIG5vdCBiZSBjYWNoZWQuCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE1vZHVs
ZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBt
X3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAg
IH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKKworcHVi
bGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZv
KFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi5iN2JkNTA0OGM3OWVlMzIw
OGQzYmJlNWUwYWIxNjc5YTgzM2Q2N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAsNyArNzAs
OSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlmICht
X25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJpYWJsZSh2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdpc3Rlcik7
CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAvLyBGb3Ig
TW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50IGZvciB0
aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxlQ29kZSkK
KyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBAIC01MDQs
NiArNTA2LDE4NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIH0K
IAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNlRGVidWdn
ZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKKyAg
ICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVyQnl0ZWNv
ZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAgLCBtX3Nj
b3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxv
Y2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKworICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
cykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwor
CisgICAgLy8gVXNlIHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGlzIHN5bWJvbCB0YWJsZQorICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxv
Y2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5
bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNj
b3BlKTsKKworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAg
ICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZU
aGVUaGluZ3MpCisgICAgICAgIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5t
YXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2Fw
dHVyZVNvbWVPZlRoZVRoaW5ncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIG1vZHVsZVByb2dyYW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0
byBsb29rVXBWYXJLaW5kID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgLy8gQWxs
b2NhdGUgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcyBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50Lgor
ICAgICAgICBpZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktp
bmQ6OlNjb3BlOworCisgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBuYW1lc3BhY2UgdmFyaWFibGVz
IGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgdG8gaW5zdGFudGlhdGUKKyAgICAgICAgLy8gaXQg
ZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGNvZGUuCisgICAgICAgIGlmIChlbnRyeS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7
CisKKyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBW
YXJLaW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpT
Y29wZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKKworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgZm9yIChGdW5j
dGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25T
dGFjaygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5v
ZGUtPnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRl
Y2xhcmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52
YWx1ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZh
cktpbmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWYg
KHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KKyAgICAgICAgICAgIC8vIFNlY3Rpb24gMTUuMi4xLjE2LjQsIHN0ZXAg
MTYtYS1pdi0xLgorICAgICAgICAgICAgLy8gQWxsIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRl
Y2xhcmF0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudAorICAgICAgICAgICAgLy8gaXMgY3JlYXRlZC4gVGhleSBpbmNsdWRlIHRoZSBleHBvcnRl
ZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIG5vdC1leHBvcnRlZC1idXQtaGVhcC1hbGxvY2F0
ZWQKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyByZXF1aXJl
ZCBiZWNhdXNlIGV4cG9ydGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgYmVmb3Jl
CisgICAgICAgICAgICAvLyBleGVjdXRpbmcgdGhlIGFueSBtb2R1bGUgaW4gdGhlIGRlcGVuZGVu
Y3kgZ3JhcGguIFRoaXMgZW5hYmxlcyB0aGUgbW9kdWxlcyB0byBsaW5rIHRoZSBpbXBvcnRlZAor
ICAgICAgICAgICAgLy8gYmluZGluZ3MgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBj
b2RlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuZCBzaW5jZSBmdW5jdGlvbiBk
ZWNsYXJhdGlvbnMgYXJlIGluc3RhbnRpYXRlZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUg
Ym9keSBjb2RlLCB0aGUgc3BlYworICAgICAgICAgICAgLy8gYWxsb3dzIHRoZSBmdW5jdGlvbnMg
aW5zaWRlIHRoZSBtb2R1bGUgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIGl0cyBtb2R1bGUgYm9keSBp
cyBleGVjdXRlZCB1bmRlcgorICAgICAgICAgICAgLy8gdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2ll
cy4gVGhlIGZvbGxvd2luZyBpcyB0aGUgZXhhbXBsZS4KKyAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAvLyBNb2R1bGUgQSAoZXhlY3V0ZWQgMXN0KToKKyAgICAgICAgICAgIC8vICAgIGltcG9y
dCB7IGIgfSBmcm9tICJCIjsKKyAgICAgICAgICAgIC8vICAgIC8vIEhlcmUsIHRoZSBtb2R1bGUg
IkIiIGlzIG5vdCBleGVjdXRlZCB5ZXQsIGJ1dCB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gaXMg
YWxyZWFkeSBpbnN0YW50aWF0ZWQuCisgICAgICAgICAgICAvLyAgICAvLyBTbyB3ZSBjYW4gY2Fs
bCB0aGUgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSAiQiIuCisgICAgICAgICAgICAvLyAgICBiKCk7
CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgZXhwb3J0IGZ1bmN0aW9uIGEoKSB7
CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTW9k
dWxlIEIgKGV4ZWN1dGVkIDJuZCk6CisgICAgICAgICAgICAvLyAgICBpbXBvcnQgeyBhIH0gZnJv
bSAiQSI7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgZXhwb3J0IGZ1bmN0aW9u
IGIoKSB7CisgICAgICAgICAgICAvLyAgICAgICAgYygpOworICAgICAgICAgICAgLy8gICAgfQor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgIC8vIGMgaXMgbm90IGV4cG9ydGVkLCBi
dXQgc2luY2UgaXQgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBiLCB3ZSBzaG91bGQgaW5zdGFudGlh
dGUgaXQgYmVmb3JlCisgICAgICAgICAgICAvLyAgICAvLyBleGVjdXRpbmcgdGhlICJCIiBtb2R1
bGUgY29kZS4KKyAgICAgICAgICAgIC8vICAgIGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgICAv
LyAgICAgICAgYSgpOworICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIE1vZHVsZSBFbnRyeVBvaW50IChleGVjdXRlZCBsYXN0KToKKyAgICAgICAgICAg
IC8vICAgIGltcG9ydCAiQiI7CisgICAgICAgICAgICAvLyAgICBpbXBvcnQgIkEiOworICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1
bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTdGFj
ayBhbGxvY2F0ZWQgZnVuY3Rpb25zIGNhbiBiZSBhbGxvY2F0ZWQgd2hlbiBleGVjdXRpbmcgdGhl
IG1vZHVsZSdzIGJvZHkuCisgICAgICAgICAgICBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCisKKyAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygp
KSB7CisgICAgICAgIEFTU0VSVCghZW50cnkudmFsdWUuaXNMZXQoKSAmJiAhZW50cnkudmFsdWUu
aXNDb25zdCgpKTsKKyAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS5pc1ZhcigpKSAvLyBUaGlzIGlz
IGVpdGhlciBhIHBhcmFtZXRlciBvciBjYWxsZWUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgLy8gSW1wb3J0ZWQgYmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudCBhcyB1c3VhbCB2YXJpYWJsZXMnIHdheS4KKyAgICAgICAgLy8gVGhlc2Ug
cmVmZXJlbmNlcyByZW1haW4gdGhlICJEeW5hbWljIiBpbiB0aGUgdW5saW5rZWQgY29kZSBibG9j
ay4gTGF0ZXIsIHdoZW4gbGlua2luZworICAgICAgICAvLyB0aGUgY29kZSBibG9jaywgd2UgcmVz
b2x2ZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSAiTW9kdWxlVmFyIi4KKyAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNyZWF0ZVZhcmlhYmxlKElkZW50aWZp
ZXI6OmZyb21VaWQobV92bSwgZW50cnkua2V5LmdldCgpKSwgbG9va1VwVmFyS2luZChlbnRyeS5r
ZXkuZ2V0KCksIGVudHJ5LnZhbHVlKSwgc3ltYm9sVGFibGUsIElnbm9yZUV4aXN0aW5nKTsKKyAg
ICB9CisKKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzID0gbW9kdWxl
UHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKKworICAgIHsKKyAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBsZXhpY2FsVmFyaWFibGVzKSB7CisgICAgICAgICAgICBBU1NFUlQoZW50
cnkudmFsdWUuaXNMZXQoKSB8fCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICAgICAg
QVNTRVJUKCFlbnRyeS52YWx1ZS5pc1ZhcigpKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkgc3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXku
Z2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOwor
CisgICAgICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5ncyBhcmUgbm90IGFsbG9jYXRlZCBpbiB0
aGUgbW9kdWxlIGVudmlyb25tZW50IGFzIHVzdWFsIHZhcmlhYmxlcycgd2F5LgorICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRl
ZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBW
YXJLaW5kIHZhcktpbmQgPSBsb29rVXBWYXJLaW5kKGVudHJ5LmtleS5nZXQoKSwgZW50cnkudmFs
dWUpOworICAgICAgICAgICAgVmFyT2Zmc2V0IHZhck9mZnNldDsKKyAgICAgICAgICAgIGlmICh2
YXJLaW5kID09IFZhcktpbmQ6OlNjb3BlKQorICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZh
ck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJLaW5kID09IFZhcktpbmQ6
OlN0YWNrKTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEKiBsb2NhbCA9IG5ld0Jsb2NrU2Nv
cGVWYXJpYWJsZSgpOworICAgICAgICAgICAgICAgIGxvY2FsLT5yZWYoKTsKKyAgICAgICAgICAg
ICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQobG9jYWwtPnZpcnR1YWxSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJP
ZmZzZXQsIGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFJlYWRPbmx5IDogMCk7CisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0g
bnVsbHB0cjsKKyAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCisgICAgICAgIGNvbnN0YW50U3lt
Ym9sVGFibGUgPSBhZGRDb25zdGFudFZhbHVlKHN5bWJvbFRhYmxlKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25zdGFudFZhbHVlKHN5bWJvbFRhYmxlLT5j
bG9uZVNjb3BlUGFydCgqbV92bSkpOworCisgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtl
X3BhaXIobGV4aWNhbFZhcmlhYmxlcywgdHJ1ZSkpOworICAgIG1fc3ltYm9sVGFibGVTdGFjay5h
cHBlbmQoU3ltYm9sVGFibGVTdGFja0VudHJ5IHsgU3Ryb25nPFN5bWJvbFRhYmxlPigqbV92bSwg
c3ltYm9sVGFibGUpLCBtX3Njb3BlUmVnaXN0ZXIsIGZhbHNlLCBjb25zdGFudFN5bWJvbFRhYmxl
LT5pbmRleCgpIH0pOworCisgICAgLy8gUHJlZmlsbCBzdGFjayB2YXJpYWJsZXMgd2l0aCB0aGUg
VERaIGVtcHR5IHZhbHVlLgorICAgIC8vIFNjb3BlIHZhcmlhYmxlcyB3aWxsIGJlIGluaXRpYWxp
emVkIHRvIHRoZSBURFogZW1wdHkgdmFsdWUgd2hlbiBKU0xleGljYWxFbnZpcm9ubWVudCBpcyBh
bGxvY2F0ZWQuCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxWYXJpYWJsZXMpIHsKKyAg
ICAgICAgLy8gSW1wb3J0ZWQgYmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudCBhcyB1c3VhbCB2YXJpYWJsZXMnIHdheS4KKyAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1i
b2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAg
ICBBU1NFUlQoIXN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOworICAgICAgICBWYXJPZmZzZXQg
b2Zmc2V0ID0gc3ltYm9sVGFibGVFbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKG9mZnNl
dC5pc1Njb3BlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG9mZnNl
dC5pc1N0YWNrKCkpOworICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJnJlZ2lzdGVyRm9yKG9m
ZnNldC5zdGFja09mZnNldCgpKSk7CisgICAgfQorfQorCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5
dGVjb2RlR2VuZXJhdG9yKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA4OWNkZWFkMTM1NDQ4MWM3
NDY2NzBlMzVmOTYwMDU5MzdmYjk1YmE3Li4xNmJiYzBkZGMwYWRmNDA5MWQ4YTEzOTQ0NGFiYjM5
MzQwZjUwODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0yNjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0
aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDljNmU3NmYyZjQyYmRkY2U5NjViODI0MjI4YWI2NTIxOGZlMGUxN2Uu
LmQ0YjM1MDRmOTIwNmE1MjM1MDc4MzYxNTUzOTY2ZjAwMGM1MTk4N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI4
OTUsOCArMjg5NSwxNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12
b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKikKK3ZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKKyAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zm
c2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5l
bWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKKyAgICBlbWl0U3Rh
dGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RS
ZWdpc3Rlci5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
dmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA1NywzMCArMzA2Niwz
NyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAg
Ly8gRG8gbm90aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHJ1bnRpbWUuCiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnREZWZhdWx0RGVjbGFy
YXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3Zv
aWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBBU1NFUlQobV9kZWNs
YXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNsYXJhdGlvbik7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRMb2NhbERlY2xhcmF0
aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lk
IEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEFTU0VSVChtX2RlY2xhcmF0
aW9uKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2RlY2xhcmF0aW9uKTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25O
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAv
LyBEbyBub3RoaW5nIGF0IHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IDY2ZmE4ZWNmNTQwNjM1ODZjZDRhYWE4ZmI4NDk3YmM2MTUxZWIwMzcuLmZhNjJlYTZmMzc2
ZDg4Y2VmZjRlOTgyNzU0MzI2NmUwZDkzYTQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtOTcsNiArOTcsNyBAQCBTdHJp
bmcgU3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwoKSBjb25zdAogICAgIAogICAgIHN3aXRj
aCAoY29kZVR5cGUpIHsKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICBjYXNlIFN0
YWNrRnJhbWVNb2R1bGVDb2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZToKICAg
ICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgogICAgICAgICBpZiAoIXNvdXJjZVVSTC5pc0Vt
cHR5KCkpCkBAIC0xMTgsNiArMTE5LDkgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZyaWVuZGx5RnVu
Y3Rpb25OYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAogICAgIGNhc2UgU3RhY2tGcmFt
ZUV2YWxDb2RlOgogICAgICAgICB0cmFjZUxpbmUgPSAiZXZhbCBjb2RlIjsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKKyAgICAgICAgdHJhY2VMaW5lID0g
Im1vZHVsZSBjb2RlIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZl
Q29kZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAgIHRyYWNlTGluZSA9IGdldENh
bGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0YWNrRnJhbWVDYWxsZWUpLmltcGwoKTsK
QEAgLTQ1MSw2ICs0NTUsOCBAQCBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJh
bWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCiAgICAgc3dpdGNoICh2aXNpdG9yLT5j
b2RlVHlwZSgpKSB7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpFdmFsOgogICAgICAg
ICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFt
ZTo6TW9kdWxlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU1vZHVsZUNvZGU7CiAgICAgY2Fz
ZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpGdW5jdGlvbjoKICAgICAgICAgcmV0dXJuIFN0YWNrRnJh
bWVGdW5jdGlvbkNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpHbG9iYWw6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4
IDEzMmM5NWQxN2Y0ZTEwOWJhMzdiYmNiMDE4NzI3MzJiMmY5NTExNmYuLjAzOGJjYTVjZmM3NWI5
YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw4ICs1NCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsK
ICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CisgICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTYW1wbGluZ1Rvb2w7CkBAIC03Niw2
ICs3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsK
ICAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVFdmFsQ29k
ZSwKKyAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVGdW5j
dGlvbkNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXgg
M2YyYjkxNDA0NTFkNDg4MzRhOWY3MTAzMzQ2NGEyMTQ3ZDFiZGI3MC4uNzVmMTc3MjNiMTRhNDc1
ODZkOWVjZDY2MzZlZGZhNDY5ODE3YjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFj
a1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgp
IGNvbnN0CiAgICAgc3dpdGNoIChjb2RlQmxvY2soKS0+Y29kZVR5cGUoKSkgewogICAgIGNhc2Ug
RXZhbENvZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6RXZhbDsKKyAgICBjYXNlIE1vZHVs
ZUNvZGU6CisgICAgICAgIHJldHVybiBDb2RlVHlwZTo6TW9kdWxlOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkZ1bmN0aW9uOwogICAgIGNhc2UgR2xv
YmFsQ29kZToKQEAgLTE5OSw2ICsyMDEsOSBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6
ZnVuY3Rpb25OYW1lKCkKICAgICBjYXNlIENvZGVUeXBlOjpFdmFsOgogICAgICAgICB0cmFjZUxp
bmUgPSBBU0NJSUxpdGVyYWwoImV2YWwgY29kZSIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IENvZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgibW9k
dWxlIGNvZGUiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TmF0aXZlOgog
ICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxsZWUpLmltcGwoKTsKQEAgLTIxOSw2ICsyMjQs
NyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkKIAogICAgIHN3aXRj
aCAoY29kZVR5cGUoKSkgewogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CisgICAgY2FzZSBDb2Rl
VHlwZTo6TW9kdWxlOgogICAgIGNhc2UgQ29kZVR5cGU6OkZ1bmN0aW9uOgogICAgIGNhc2UgQ29k
ZVR5cGU6Okdsb2JhbDogewogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gY29kZUJsb2NrKCkt
Pm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCAwMDM2YTc4OWM1OGUx
OWFlMTNiMGQ0YWJmYjc1NTgzZTliYjQ2NzM0Li40MWJmYzcwODgyMGVjY2ZjYWM3MzViMzliNDIy
NDcxM2ViZTUyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1N0YWNrVmlzaXRvci5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7CiAg
ICAgICAgICAgICBHbG9iYWwsCiAgICAgICAgICAgICBFdmFsLAogICAgICAgICAgICAgRnVuY3Rp
b24sCisgICAgICAgICAgICBNb2R1bGUsCiAgICAgICAgICAgICBOYXRpdmUKICAgICAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJiYzg1MjNmNWJiMjNhMzkzMGMwOTRl
ZDQ4NjIxNzQ2NGQ4NmM1NTEuLjg0ZjM2ZDU0MGYzY2JhYTFhZWNjNTUzYWRmOGM0NjE0YjdiZGU4
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQ4Niw2ICs0ODYsNyBAQCBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVm
Zm9ydCkKICAgICAKICAgICBzd2l0Y2ggKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAg
Y2FzZSBHbG9iYWxDb2RlOgorICAgIGNhc2UgTW9kdWxlQ29kZToKICAgICBjYXNlIEV2YWxDb2Rl
OgogICAgICAgICBtX2NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CmluZGV4IDczMTNmY2UyNDIwMGNjOTE2MTY5ZTgxNGEwYTA1OTMwYWFiYWE1M2QuLjc3N2NmZGUw
OTNhMmQxM2RmNWZlNWMzNjZjOTgyMmY0YWUwODRmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBEYXRhOjpwZXJm
b3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsID09IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDYpOwotICAg
IEFTU0VSVChPYmplY3RUeXBlID09IDE5KTsKLSAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09
IDIwKTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMSk7CisgICAgQVNTRVJUKEZpbmFsT2Jq
ZWN0VHlwZSA9PSAyMik7CiAgICAgQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7
CiAgICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAgLTE0MSw2ICsxNDEsNyBAQCB2b2lk
IERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9
PSAwKTsKICAgICBBU1NFUlQoRXZhbENvZGUgPT0gMSk7CiAgICAgQVNTRVJUKEZ1bmN0aW9uQ29k
ZSA9PSAyKTsKKyAgICBBU1NFUlQoTW9kdWxlQ29kZSA9PSAzKTsKIAogICAgIHN0YXRpY19hc3Nl
cnQoR2xvYmFsUHJvcGVydHkgPT0gMCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHkgUmVz
dWx0VHlwZSBpcyA9PSAwIik7CiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXIgPT0gMSwgIkxM
SW50IGFzc3VtZXMgR2xvYmFsVmFyIFJlc3VsdFR5cGUgaXMgPT0gMSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA5ZDAwMTA2Yjlh
ODI3NmY0ODQyMGY2YjU0NmMzMmQ1OTMwYTM2YjY4Li5hNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4
MmNmZTJhNTVhYjc4MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcApAQCAtOTcsMTIgKzk3LDMwIEBAIHN0YXRpYyB2b2lkIHNldFByb2dy
YW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRD
b2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0TW9kdWxl
UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyNpZiBF
TkFCTEUoSklUKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5n
ZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIFVOVVNFRF9QQVJBTSh2bSk7
CisgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9t
b2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSkpOworfQorCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBzd2l0Y2ggKGNvZGVCbG9jay0+Y29kZVR5cGUo
KSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKICAgICAgICAgc2V0UHJvZ3JhbUVudHJ5cG9pbnQo
dm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZHVsZUNvZGU6Cisg
ICAgICAgIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgc2V0RXZhbEVudHJ5cG9pbnQo
dm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTJhNmIyYjEx
YzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYS4uOWUzZjQ0ODdiMDg1MjAxMzcyYjJkN2Iy
N2I3OGNlNTkxYWJkOTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJWTS5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDhhYjk2YjMw
NDc1ZmQ1NTRkZWY4YjMyNjYyNDk2NjMyZWFmOTZkOWEuLmFmNjg4NGU1ZWRlN2JlYmUwNGYzN2Iz
ZjAwMDkxZWUxNmY5NTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcApAQCAtODgsNiArODgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSksICJwcm9ncmFtIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X21vZHVsZV9w
cm9ncmFtX3Byb2xvZ3VlKSwgIm1vZHVsZV9wcm9ncmFtIik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IExMSW50CiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCmluZGV4IDBkMWJlNmJkYWVhZGY3OTQ4N2NlOTA2NjgyNjQ2ODUxODhh
OGJkMTIuLjk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBAIC00Niw2ICs0Niw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRy
eVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5
VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IDEzNmM5MTY2MWYyMmQyZDgwOTNjMTk4YzljNWJkNjY0NDM4ZjU0OTYuLjc1
YzkxZjg2ODZlNGE1ZTA4NTAxM2JiMTE5MjI1ZWRjOTdhNDQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2MSw4
ICsxNjEsOCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUg
Y29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKLWNvbnN0IE9iamVjdFR5cGUgPSAxOQot
Y29uc3QgRmluYWxPYmplY3RUeXBlID0gMjAKK2NvbnN0IE9iamVjdFR5cGUgPSAyMQorY29uc3Qg
RmluYWxPYmplY3RUeXBlID0gMjIKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkBAIC0xNzYsNiArMTc2LDcgQEAgY29uc3QgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCiBjb25zdCBHbG9iYWxDb2RlID0gMAog
Y29uc3QgRXZhbENvZGUgPSAxCiBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCitjb25zdCBNb2R1bGVD
b2RlID0gMwogCiAjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBh
cmd1bWVudCBjb3VudC4KIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0CkBAIC04ODQsNiArODg1LDExIEBAIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAg
IGRpc3BhdGNoKDApCiAKIAorX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHBy
b2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1Nl
dHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3Bh
dGNoKDApCisKKwogX2xsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUobm90RnVuY3Rp
b25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggMmZhODFh
YWNmYzFmOGYyYmQ3NjQyZjM4MzliM2IxMjYwNTg3ZjJmMi4uZjYyMzhmYjk2ODAyYmU1MzdlOTFh
ZGMyNmI4MmQ4OTBiOTU0MDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBNb2R1bGVBbmFseXpl
cjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxO
YW1lLAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3Jk
KCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7Ci0gICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKHZtKCkpKSB7CisgICAgaWYgKHZhcmlhYmxlLmlzSW1wb3J0ZWROYW1lc3BhY2Uo
KSkgewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmluZGluZy4KICAgICAgICAgLy8g
aW1wb3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKICAgICAgICAgLy8gZXhwb3J0IHsgbmFt
ZXNwYWNlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA4YTkz
NjE1N2IzZjY5NjBiNjNiYTgxZWI0Nzc2ODg2ZmEwMzQ1OThhLi43ZjA1MDFjNjUzMTJkYjRkNGZm
ODVkYzRkYjEzYWYyNjMxZGRlYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0yMzE5LDcgKzIzMTksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAg
IH0KIAogICAgIHNlbWFudGljRmFpbElmVHJ1ZShsb2NhbE5hbWVUb2tlbi5tX3R5cGUgJiBLZXl3
b3JkVG9rZW5GbGFnLCAiQ2Fubm90IHVzZSBrZXl3b3JkIGFzIGltcG9ydGVkIGJpbmRpbmcgbmFt
ZSIpOwotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xh
cmVWYXJpYWJsZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwg
RGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CisgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFy
YXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uLCAoc3BlY2lmaWVyVHlwZSA9PSBJbXBvcnRTcGVj
aWZpZXJUeXBlOjpOYW1lc3BhY2VJbXBvcnQpID8gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBv
cnRlZE5hbWVzcGFjZSA6IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOwogICAgIGlm
IChkZWNsYXJhdGlvblJlc3VsdCAhPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpIHsKICAgICAg
ICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWRTdHJpY3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYW4gaW1wb3J0ZWQgYmluZGlu
ZyBuYW1lZCAiLCBsb2NhbE5hbWUtPmltcGwoKSwgIiBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAg
ICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uKQpAQCAtMjU2MCwxMCArMjU2MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRE
ZWNsYXJhCiAgICAgICAgICAgICAvLyBkb2VzIG5vdCBoYXZlIGVmZmVjdCBvbiB0aGUgY3VycmVu
dCBtb2R1bGUncyBzY29wZS4gQnV0LAogICAgICAgICAgICAgLy8gICBleHBvcnQgeyBBLCBCLCBD
IGFzIEQgfQogICAgICAgICAgICAgLy8gd2lsbCByZWZlcmVuY2UgdGhlIGN1cnJlbnQgbW9kdWxl
J3MgYmluZGluZ3MuCi0gICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFt
ZSA6IG1heWJlTG9jYWxOYW1lcykgewotICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51
c2VWYXJpYWJsZShsb2NhbE5hbWUsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmxvY2Fs
TmFtZSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA6IG1h
eWJlTG9jYWxOYW1lcykKICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2Nv
cGVEYXRhKCkuZXhwb3J0QmluZGluZygqbG9jYWxOYW1lKTsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRp
b24oZXhwb3J0TG9jYXRpb24sIHNwZWNpZmllckxpc3QsIG1vZHVsZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYzJlNmE2NTA0MDg5OTE1ZGMyODA1N2ZmZTAx
ZjA0ZWVhZGUwMWYxNC4uZjY5N2JlMzM2YmI4MGM1MjUwNDI4NTZiOGMwODc1NTM3MzNhMTIxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMDAsNiArMTAwLDcgQEAg
ZW51bSBjbGFzcyBEZWNsYXJhdGlvblR5cGUgewogCiBlbnVtIGNsYXNzIERlY2xhcmF0aW9uSW1w
b3J0VHlwZSB7CiAgICAgSW1wb3J0ZWQsCisgICAgSW1wb3J0ZWROYW1lc3BhY2UsCiAgICAgTm90
SW1wb3J0ZWQKIH07CiAKQEAgLTMzNSw2ICszMzYsMTAgQEAgc3RydWN0IFNjb3BlIHsKIAogICAg
ICAgICBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKQog
ICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7Cisg
ICAgICAgIGVsc2UgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBv
cnRlZE5hbWVzcGFjZSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5z
ZXRJc0ltcG9ydGVkKCk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNl
dElzSW1wb3J0ZWROYW1lc3BhY2UoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNWVkMmE2YmRhOTI4MzhlMjk2
NDgyZjY2YzA3ODVhMzYxMWFlNjE1Yy4uNzZjNzA5NmU5ZTY0NDdlYmJiZGIwZDk2NWEzZWE0YTI0
YTUxNzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTGV0KCkgY29uc3QgeyByZXR1cm4g
bV9iaXRzICYgSXNMZXQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHBvcnRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRXhwb3J0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNJbXBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzSW1wb3J0ZWQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbXBvcnRlZE5hbWVzcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNDcsNiAr
NDgsNyBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNMZXQoKSB7IG1fYml0cyB8PSBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0V4cG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNFeHBvcnRlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZDsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCkgeyBtX2Jp
dHMgfD0gSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNs
ZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNTcsNyArNTksOCBAQCBzdHJ1
Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICAgICAgSXNWYXIgPSAxIDw8IDIsCiAg
ICAgICAgIElzTGV0ID0gMSA8PCAzLAogICAgICAgICBJc0V4cG9ydGVkID0gMSA8PCA0LAotICAg
ICAgICBJc0ltcG9ydGVkID0gMSA8PCA1CisgICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUsCisg
ICAgICAgIElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYKICAgICB9OwogICAgIHVpbnQ4X3Qg
bV9iaXRzIHsgMCB9OwogfTsKQEAgLTc5LDYgKzgyLDggQEAgY2xhc3MgVmFyaWFibGVFbnZpcm9u
bWVudCB7CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21h
cC5yZW1vdmUoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3Ig
ZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVy
biBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0
X2l0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikgY29uc3QgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQogICAgIHZvaWQgc3dh
cChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAgICAgdm9pZCBtYXJrVmFyaWFibGVBc0Nh
cHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpOwogICAgIHZvaWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGFiNzBlYWJiOWUzYTJhMDQ1MGM2MjllNzA1NjY2ZjRkY2Nh
MDFlMjguLmYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5Y2RjN2NiZWRmMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNjcsMTEgKzY3LDE5
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ2FjaGVUeXBlcyB7IH07CiB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IHsKICAgICB0
eXBlZGVmIEpTQzo6UHJvZ3JhbU5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJj
ZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6UHJvZ3JhbVR5cGU7
CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlOwogfTsKIAogdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8
VW5saW5rZWRFdmFsQ29kZUJsb2NrPiB7CiAgICAgdHlwZWRlZiBKU0M6OkV2YWxOb2RlIFJvb3RO
b2RlOwogICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9
IFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZTsKK307CisKK3RlbXBs
YXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4g
eworICAgIHR5cGVkZWYgSlNDOjpNb2R1bGVQcm9ncmFtTm9kZSBSb290Tm9kZTsKKyAgICBzdGF0
aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5
OjpNb2R1bGVUeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
ID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KQEAgLTk1
LDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxD
b2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4o
CiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwgbnVsbHB0
ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgIENhY2hlVHlw
ZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIgQEAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0
YWJsZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENv
ZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxl
c1VuZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2Fj
aGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7CisgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICByZXR1cm4gZ2V0R2xvYmFsQ29k
ZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNv
dXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBUaGlzVERaTW9k
ZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAmZW1w
dHlQYXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTogVGhlcmUncyBubyBuZWVkIHRv
IGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4gSXQncyBhbHJlYWR5IGlu
IHRoZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3Ip
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGFmN2Rh
YzdlNDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVmZTM5NTEyYzkzNjZlNjE2
Mzk4MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNT
Y29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFz
cyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xh
c3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwpAQCAt
NTYsNyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAogY2xhc3MgU291cmNlQ29kZUtl
eSB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwg
RnVuY3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlw
ZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBTb3VyY2VDb2RlS2V5KCkKICAg
ICB7CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsKIAogICAgIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1FeGVjdXRh
YmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFi
bGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJp
Y3RNb2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYsIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIERl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAog
ICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAppbmRleCBlNDg1NDc5NzU2N2RlOGNkYmU5NjYxNTcwMmZiNmU3NTFiNjNjNWZkLi5i
MWQwMDU1ZWNmMDI0MzQyOWZhZjE5ZWRhZmY4ZmUwNjUzOWI2ZDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMTYxLDcgKzE2MSwxOCBAQCB2
b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVC
bG9jaykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2Nr
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBNb2R1bGVDb2Rl
OiB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0
PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
PihnZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2Fs
bCk7CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sg
PSBjb2RlQmxvY2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRXZhbENvZGU6
IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1
dGFibGUqPih0aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGlj
X2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpAQCAtMjI4LDcgKzIzOSwx
NyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3Io
CiAgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5w
cm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CiAgICAgfQot
ICAgIAorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpp
bmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
dXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghZnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1D
b2RlQmxvY2soCisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAgICAgICAgICBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVt
bigpKSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rp
b25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uKTsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4odGhpcyk7CkBAIC0yODUsNiArMzA2LDE3IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENv
ZGVGb3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4oCisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAg
ICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSkpOworICAgICAg
ICByZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4
ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oCkBAIC0zODUsNiAr
NDE3LDM2IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQog
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRh
YmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZT
Y3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkK
KyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSkKK3sKKyAgICBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIo
KSB8fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0o
KS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJj
ZUlEKCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZz
ZXQpOworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworCisgICAgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlID0gZ2xvYmFsT2JqZWN0LT5j
cmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUpOworICAgIGlmICgh
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0KGV4ZWMtPnZt
KCksIGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworCisgICAgcmV0dXJu
IGV4ZWN1dGFibGU7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Kj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCAKQEAgLTUxNyw2ICs1NzksMjMgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2Rl
KCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICBpZiAodGhpc09iamVjdC0+
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQoreworICAgIG1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayA9IG51bGxwdHI7CisgICAgbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2su
Y2xlYXIoKTsKKyAgICBCYXNlOjpjbGVhckNvZGUoKTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQ7CkBAIC02NDcs
NiArNzI2LDE1IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJvZ3JhbUV4ZWN1dGFibGUgdy9vIENvZGVC
bG9jayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGNsYXNzSW5mbygpID09
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
PihyZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0LnByaW50KCpjb2RlQmxvY2spOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IHcvbyBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHJl
YWxUaGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRoZXJDb2RlQmxvY2soKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBhOWM0MWM0NTIxNjAzZDcw
MjMzZGMyMDJjOTczZGRkNjVlMGQ5YTM3Li5jZGNlYjMwNDI2NWY5NzZkMDA3N2FlZmQ2NTdiNWI3
YmFiYmYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CkBAIC01NCw4ICs1NCwxMCBAQCBjbGFzcyBKU1Njb3BlOwogY2xhc3MgSlNXQVNNTW9kdWxlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKK2Ns
YXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNz
ZW1ibHlDb2RlQmxvY2s7Ci0gICAgCisKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21w
aWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKIGlubGluZSBib29sIGlzQ2FsbChD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMDYsNiArMTA4LDExIEBAIGNsYXNzIEV4
ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5jdGlv
bigpIGNvbnN0CiAgICAgewpAQCAtNTUwLDYgKzU1Nyw0OSBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJvZ3Jh
bUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBz
dGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0
cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHZvaWQgY2xlYXJDb2RlKCk7CisKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIGZhbHNlKTsgfQorICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0
RXhlY3V0YWJsZTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNv
bnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgIFJlZlB0
cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7Cit9Owor
CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwpAQCAtNzQyLDYgKzc5Miw4IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNl
OjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogICAgIGNhc2Ug
V2ViQXNzZW1ibHlFeGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxXZWJBc3Nl
bWJseUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAjZW5kaWYKKyAgICBj
YXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk4NjYzZGZjYjA4MmM3YWFiMDdhNjk1Yjkw
OTNjN2RjNDU5ZDFjMjIuLjQzMmQwN2I5N2Q4YzE2OWY3M2RjZTI3M2ZiNGU4ZWI5ZDgzZGI2MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTkzMyw2ICs5MzMsMjUgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1
cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAg
IFBhcnNlckVycm9yIGVycm9yOworICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNE
ZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOworICAgIFByb2ZpbGVyTW9kZSBw
cm9maWxlck1vZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwor
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2
bSgpLmNvZGVDYWNoZSgpLT5nZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgp
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKworICAgIGlm
IChoYXNEZWJ1Z2dlcigpKQorICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9y
Lm1lc3NhZ2UoKSk7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93
Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+
c291cmNlKCkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IHVubGlua2VkQ29kZUJsb2NrOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IDFhNTI1MGM2N2NkMTQ2ZWZiY2ZkMTEyN2M1NzA2MzhhYTQxM2IxOTYuLjFjYTMxYjdi
MTI2ZmIyZWZkM2I3MTkwZWFmNzY0ZjVjZGEwOTkxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBK
U1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwog
Y2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0OworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7
CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7
CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90
eXBlOwogY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jazsKIGNsYXNzIE51bGxHZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlv
bjsKIGVudW0gY2xhc3MgVGhpc1REWk1vZGU7CkBAIC02NDMsNiArNjQ1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1l
KiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVj
dXRhYmxlKiwgVGhpc1REWk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soQ2FsbEZyYW1lKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqKTsKIAogcHJvdGVjdGVkOgog
ICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDVkMTVlYmMzNmM4NDIwZWY2ZWNk
NTRlZTA1M2Q5YTMzMTVmNmFiOGIuLjdiNjA2Mzc0YTYwNjBiNzcwMjBjNGVmNDUxMmU5MjQ1ZTAz
ZjNmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgogCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKQEAgLTU4LDYgKzYw
LDcgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIApAQCAtOTAsOCArOTMsMTQgQEAgSlNNb2R1bGVSZWNv
cmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOwogfQogCi12b2lk
IEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSopCit2b2lkIEpTTW9kdWxlUmVjb3JkOjps
aW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29k
ZSgpKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKIH0KIAogSlNWYWx1ZSBKU01v
ZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggOTM2MjYzY2NmMzEyOWRhOTVlMzFlOTFh
MjE5NDBkZDBhOTU1MjY0NS4uODFkYTM5NjZlOGM1YThkYTkzMDRkMjgyZjRmYmNhOTRmMjRlYWU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5o
CkBAIC0xMTcsNiArMTE3LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKICAgICBKU1ZhbHVl
IGV4ZWN1dGUoRXhlY1N0YXRlKik7CiAKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJl
ZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykK
ICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xNTQsNiArMTU2LDcgQEAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVl
dmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwog
CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDE1OTZlNjU4
NGM4YWViOGI3YzBjY2I0ZGEzMDMwMjAwOThlNjk1ZmYuLjExMGY4YjVhYzlkYjcxZDMzMTY3ZDg1
OWIyZDQ2OWYzZTdhNWZhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CkBAIC00MSwxMSArNDEsMTMgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxF
eGVjdXRhYmxlVHlwZSwKICAgICBQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVUeXBlLAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgV2Vi
QXNzZW1ibHlFeGVjdXRhYmxlVHlwZSwKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
VHlwZSwKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlLAorICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrVHlwZSwK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggZTY3ZmEz
ODViZmY3NzFjNGUzZDhhMmQ3OTExN2IxM2E1NzIzOGVhMS4uMjhlMGJhZGFhNzJhZjMwY2M3NzE5
MTk2MDRhNjEyZDZjZGI3M2UwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0yNzQsNiArMjc0LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlv
bkluc3RhbnRpYXRpb24oRXgKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1
bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKIAogICAgIG1vZHVsZVJlY29yZC0+bGluayhl
eGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggOTYyZGM1MmRkZDY3ZWM2OTllMTBhYzY5MmRhMDU5NDEyNzFmMzJjMy4uODI3YmIzNjhhZDgx
ZTM1ZjU0N2NhMWIxNzc3MzRjYWI1ODNkMzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtMjI1LDYgKzIyNSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgd2ViQXNzZW1ibHlFeGVj
dXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlFeGVjdXRhYmxlOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAjZW5kaWYKKyAgICBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJl
LnNldCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgc3ltYm9sU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAt
MjM2LDYgKzIzNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2
YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAg
IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERh
dGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJ
bmZlcnJlZFZhbHVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjNGU4MDM3OWU4YzIzOTIyYmZiNjgzODMxZmVj
MTNiNGMzYTY4N2FhLi44NGE1MzVhYjdkMWRkYjRjYmQ2NmIzZGQ1OTg4YWU2MjlmN2Y5YTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJl
Z2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yODIsNiAr
MjgzLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlF
eGVjdXRhYmxlU3RydWN0dXJlOwogI2VuZGlmCisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhw
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5Myw2ICsyOTUsNyBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJv
bmc8U3RydWN0dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFZhbHVlU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDhmMmFjMDk1MGU2YTliYWIxOTNhZDBlOGQyNjMwOWYxYzRkM2U2MTAuLjM4Nzg1MGQ1YTZj
YTZmNGE4ZDE4ODZkNjM4NWE3NTEyYTViMjgzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE0ODUsNiArMTQ4NSw4IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1l
dGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCciJyk7CiAgICAgfSBlbHNlIGlmIChleGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxlKCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJldmFsIik7CisgICAgZWxzZSBpZiAoZXhl
Y3V0YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpKQorICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgibW9kdWxlIik7CiAgICAgZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFt
RXhlY3V0YWJsZSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicHJvZ3JhbSIpOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260219</attachid>
            <date>2015-08-28 23:04:29 -0700</date>
            <delta_ts>2015-08-31 13:27:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148581-20150828230416.patch</filename>
            <type>text/plain</type>
            <size>78396</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2NkMTcwZGRjZGIzNmU0NmE3MjQ4YWVhZTc5MDAwZjBhYWJhODIyLi41NmE4MWIwYmRiMzc3MGIx
Mzc4OGM1MjY1ZTM2ZDA1NjhjNDI4ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW50cm9kdWNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IGZhbWlsaWVzIGFuZCBjb21waWxlIE1vZHVsZSBjb2RlIHRvIGJ5dGVjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIHRoYXQgaXMgbmV3IGV4ZWN1dGFibGUgdHlwZSBm
b3IgdGhlIEVTNiBtb2R1bGVzLgorICAgICAgICBBbmQgcmVsYXRlZCBjb2RlIGJsb2NrIHR5cGVz
LCBVbmlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBhbmQgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayBhcmUgYWxzbworICAgICAgICBpbnRyb2R1Y2VkLiBCeXRlY29kZUdlbmVyYXRvciBub3cgcmVj
b2duaXplcyB0aGVzZSB0eXBlcyBhbmQgZW1pdHMgdGhlIGJ5dGVjb2RlIGFuZCBjb25zdHJ1Y3Rz
CisgICAgICAgIHRoZSBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFdo
aWxlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgYnl0ZWNvZGUgZ2VuZXJhdGlvbgorICAgICAg
ICBmb3IgdGhlIEVTNiBtb2R1bGVzLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRp
b24gaW5pdGlhbGl6YXRpb24gYW5kIGltcG9ydGVkIGJpbmRpbmcKKyAgICAgICAgcmVzb2x1dGlv
biBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2guIFRoZXkgd2lsbCBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgaW50ZXJlc3RpbmcgcGFy
dCBpcyB0aGUgc3ltYm9sIHRhYmxlIGNvbnN0cnVjdGlvbiBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudC4KKyAgICAgICAgU2luY2UgdGhlIG1vZHVsZSBjb2RlIHdpbGwgYmUgb25seSBleGVjdXRl
ZCBvbmNlLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IG5lZWQgbm90IHRvIGJlIGFsbG9jYXRlZAor
ICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluc2lkZSB0aGUgbW9kdWxlIGNvZGU7IEluIHRoZSBj
YXNlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLCB0aGUgZnVuY3Rpb24gY29kZSBuZWVkCisgICAgICAg
IHRvIGFsbG9jYXRlIHRoZSBlbnZpcm9ubWVudCBpbnNpZGUgdGhlIHByb2xvZ3VlIG9mIGl0IGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGNvZGUgY2FuIGJlIGV4ZWN1dGVkCisgICAgICAgIG1vcmUgdGhh
biBvbmNlIGFuZCB0aGUgZnVuY3Rpb24gZW52aXJvbm1lbnRzIGFyZSBkaWZmZXJlbnQgaW4gZWFj
aCB0aW1lIG9mIHRoZSBleGVjdXRpb25zLgorICAgICAgICBUaGUgbW9kdWxlIGVudmlyb25tZW50
IHdpbGwgYmUgaW5zdGFudGlhdGVkIG91dHNpZGUgdGhlIG1vZHVsZSBjb2RlIGJlZm9yZSBleGVj
dXRpbmcgdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
d2UgbmVlZCB0byBsaW5rIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIHRvIGltcG9ydCB0aGUgYmlu
ZGluZ3MgYmVmb3JlCisgICAgICAgIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBjb2RlIGluIHRo
ZSBkZXBlbmRlbmN5IGdyYXBoLiBBbmQgdGhpcyBpcyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpbnNp
ZGUgdGhlCisgICAgICAgIG1vZHVsZSBtYXkgYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBtb2R1bGUg
dG9wLWxldmVsIGJvZHkgaXMgZXhlY3V0ZWQuIChTZWUgdGhlIGNvZGUgY29tbWVudCBmb3IgbW9y
ZQorICAgICAgICBkZXRhaWxlZCBzaXR1YXRpb25zKQorCisgICAgICAgIFRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgd2lsbCBob2xkIHRoZSB0b3AtbW9zdCBoZWFwIGFsbG9jYXRlZCB2YXJpYWJsZXMg
aW4gdGhlIG1vZHVsZSBjb2RlLgorICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGJlbmVm
aXRzLgorICAgICAgICAxKSBUaGlzIGVuYWJsZXMgSlNDIHRvIHBlcmZvcm0gdGhlIHVzdWFsIExv
Y2FsQ2xvc3VyZVZhciBvcGVyYXRpb25zIG9udG8gaXQuCisgICAgICAgIDIpIEl0IGFsc28gbWFr
ZXMgdGhlIGV4cG9ydGVkIGxleGljYWwgdmFyaWFibGVzIGp1c3QgdGhlIGhlYXAgYWxsb2NhdGVk
IGxleGljYWwgdmFyaWFibGVzLgorICAgICAgICAzKSBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRp
YWxpemUgdGhlIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWZvcmUgZXhl
Y3V0aW5nIHRoZSBtb2R1bGUKKyAgICAgICAgICAgY29kZS4gSXQgaXMgcmVxdWlyZWQgdW5kZXIg
dGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKHNlZSB0aGUgY29kZSBjb21tZW50IGZvciBtb3JlIGRl
dGFpbHMpLgorCisgICAgICAgIFRvIGRvIHNvLCB0aGUgbW9kdWxlIGVudmlyb25tZW50IHdpbGwg
YmUgY29uc3RydWN0ZWQgd2l0aCB0aGUgc3ltYm9sIHRhYmxlIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5
IHRoZQorICAgICAgICBieXRlY29kZSBnZW5lcmF0b3IuIEFuZCB0aGUgc3ltYm9sIHRhYmxlIGlz
IGhlbGQgYnkgdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoYXQgbWVhbnMsIG9uY2UgdGhlIG1v
ZHVsZQorICAgICAgICBlbnZpcm9ubWVudCBpcyBpbnN0YW50aWF0ZWQsIHdlIGNhbm5vdCBjbGVh
ciB0aGUgdW5saW5rZWQgY29kZSBibG9jayBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgc2lu
Y2UKKyAgICAgICAgdGhlIGxheW91dCBvZiB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjb3VwbGVkIHdpdGggdGhlIHVubGlua2VkIGNvZGUgYmxvY2suIFRoaXMgaXMgT0sK
KyAgICAgICAgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgY2FuIGJlIGNsZWFyZWQgb25jZSB3ZSBl
eGVjdXRlZCB0aGUgbW9kdWxlIGNvZGUuIElmIHdlIGZhaWxlZCB0byBleGVjdXRlIHRoZQorICAg
ICAgICBtb2R1bGUgKHNvbWUgZXJyb3JzIG9jY3VyKSwgd2UgY2FuIHRocm93IGF3YXkgdGhlIGJv
dGgsIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYW5kIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLgor
CisgICAgICAgIFRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGhvbGRzIHRo
ZSBzeW1ib2wgdGFibGUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQuCisgICAgICAgIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNh
biBiZSBjYWNoZWQuIFdoaWxlIHVubGlua2VkIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZCwgdGhl
IGxpbmtlZAorICAgICAgICBjb2RlIGJsb2NrIGNhbm5vdCBiZSBjYWNoZWQgYmVjYXVzZSBpdCBp
cyBhbHJlYWR5IGxpbmtlZCB0byB0aGUgc3BlY2lmaWMgc2V0IG9mIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5mZXJyZWROYW1lKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9j
azo6RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoK
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5
cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5k
bHlTb3VyY2VVUkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9u
TmFtZSk6CisgICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6
CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6
OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNh
bFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWROYW1lc3BhY2Up
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpmaW5kKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1l
bnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFy
Q29kZVZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
Ojptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBj
aGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2MTNiYzY2ZDFhN2JlMTA3NWU0YTRjZjQwMTUxYTc5NzIy
N2U1ZC4uYmNlYTg4ZDhlZjk5NDRjYjUxOGQzM2VjOGEzYmVlZjRmN2ZkZTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIEludHJvZHVjZSBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmYW1pbGllcyBhbmQgY29tcGlsZSBNb2R1bGUgY29kZSB0byBieXRlY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSBjYXNlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisKKzIw
MTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBpbnRvIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBhbGxvY2F0ZWQgc3RkOjpmdW5j
dGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MjYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTNjNGFlYzNkMzFlNDMyMDdm
MjZhNWM4NGRlNDM3NThkYWE4YjUxZi4uNmYzYWQxYmRhNTRhNWQ5MGNkMTRiZTkwMjc3N2Q0MTc2
ZDgxMTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDAsNiArMTcwMCw3
IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1
ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07
CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9
OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
M0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovOyB9OwpAQCAtMzU1Nyw2ICszNTU4LDcgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxv
YWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3
QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc5OSw2ICs1ODAxLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FC
NDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJ
CUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBl
LmpzICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVj
dG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlBy
b21pc2UuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJv
dG90eXBlLmpzICovLApAQCAtNzA0NSw2ICs3MDQ4LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNl
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1l
d29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMy
OWNlODJhYS4uMDIwZWMyNDg5ZWZlM2EzMzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTU3LDYgKzE1Nyw3IEBACiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAi
bmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogImxsaW50X2V2YWxfcHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmOGEwZjRi
ZmM4Njk0ZmVhZDI4YTZhYjU3YzdjMjM1ZmYxM2QxMThmLi5jNGM2NmQzYjc5NzZmOTc3NWJkMTM0
ZDFlYTk4OWMxNGE0NWRhYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtODcsNiArODcsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJy
ZWROYW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29k
ZToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMzA2Miw2ICszMDY0LDEx
IEBAIENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVy
biBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KCkKK3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDc3LDYgKzMwODQsMTEgQEAgREZH
OjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwoKQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVs
KHRoaXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZl
bCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBjYjllYmQ2MWI1ZGRmZTBjYjNmNjdmMzEwZGY4ODE3N2RkNjM1NDliLi5iZGRkMDM2N2YzYmUz
NzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMTAyLDEwICsxMTAyLDI5IEBAIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNlbmRpZgogfTsKIAorY2xhc3Mg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgeworcHVibGlj
OgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIG92
ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2Jh
bENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
aywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0xMTMwLDcgKzExNDksNyBAQCBj
bGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVibGljOgogICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQot
ICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXggOGIyY2FkNTZhYjY4YWYxMmIz
MmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZlOWY5NDZhZGQ5MTc5M2ZlNjI1
N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
CkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpGdW5jdGlvbkNvZGU6CiAgICAg
ICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVsZSIpOworICAgICAgICByZXR1
cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAppbmRleCBiOGUxMDdkY2Y2YjY3
MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNkZDBjNWZmZTMwZjFhODg0ZjNi
YTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUu
aApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDb2RlVHlwZSB7
IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKK2VudW0gQ29kZVR5cGUgeyBH
bG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1bGVDb2RlIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFi
N2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0MDAyNzUyZGQ5YWViNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0lu
Zm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spIH07Citj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAgIGZvciAoRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
YmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmVuZCgpOyBwdHIgIT0g
ZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICBmb3IgKEZ1bmN0
aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBAIHZvaWQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOworfQor
CiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKIHsKIH0KQEAgLTMwMSw2
ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5V
bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2MTk5Zjc5N2MxMDM4MWRkNDU4
OTNiZDUzNTNmZjFiNmI0Ni4uODJjZThiMzU2M2MyZWFlNmY4ZWQ0OGJkNTQ0YTBiZTIxMmYxN2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAoY29kZVR5cGUoKSA9
PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N5bWJvbFRhYmxl
LnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAg
ICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKIAotICAgIFdyaXRl
QmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lmIEVOQUJMRShCWVRFQ09ERV9D
T01NRU5UUykKQEAgLTUxNCw2ICs1MDksNzEgQEAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICBERUNMQVJF
X0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwg
OiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgIHsKKyAg
ICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhl
YXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT51bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8pOworICAgICAgICBpbnN0YW5j
ZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0K
KworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgLy8gVGhpcyBzeW1ib2wgdGFibGUgcmVwcmVzZW50cyB0aGUgbGF5b3V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIHdpbGwgYmUgbW9k
aWZpZWQgYnkgdGhlIGJ5dGUKKyAgICAvLyBjb2RlIGdlbmVyYXRvciBzaW5jZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlh
YmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCwgb25j
ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZy
b20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseQorICAgIC8vIGNvdXBsZWQgd2l0aCB0
aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBhbmQgdGhlIHN5
bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlCisgICAgLy8gY29kZSwg
d2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9j
ayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMgbWV0CisgICAg
Ly8gYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMgdW5saW5rZWQgY29k
ZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBleGVjdXRhYmxl
cy4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoZSBmdW5jdGlvbiBjb2RlIG1heSBiZSBleGVjdXRl
ZCByZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBmdW5jdGlvbiBleGVjdXRp
b24gaXMgZGlmZmVyZW50LAorICAgIC8vIHRoZSBmdW5jdGlvbiBjb2RlIG5lZWQgdG8gYWxsb2Nh
dGUgYW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVudCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhl
IGZ1bmN0aW9uIGNvZGUuIE9uIHRoZQorICAgIC8vIG90aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29k
ZSBpcyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQorICAgIC8vIGNvZGUuIEF0IHRoYXQgdGlt
ZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1i
b2wgdGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuCisgICAgLy8gSW5zdGFu
dGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVs
ZSBjb2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzCisgICAgLy8g
YmV0d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLworICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1bGUg
cHJvZ3JhbSBjb2RlIGJsb2NrIG9ubHkgaG9sZHMgdGhlIHN5bWJvbCB0YWJsZS4gTm90IGhvbGRz
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29k
ZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCisgICAgLy8gY2FuIGJlIHVz
ZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxp
bmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgorICAgIC8vIHRo
ZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMu
IFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQu
CisgICAgLy8KKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxpbmtlZCBjb2RlIGJsb2Nr
IGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSByZXNvbHZlZCByZWZlcmVu
Y2VzIHRvIHRoZSBpbXBvcnRlZAorICAgIC8vIGJpbmRpbmdzLiBUaGUgaW1wb3J0ZWQgYmluZGlu
ZyByZWZlcmVuY2VzIHRoZSBvdGhlciBtb2R1bGUgZW52aXJvbm1lbnQsIHNvIHRoZSBsaW5rZWQg
Y29kZSBibG9jayBpcyB0aXRseSBjb3VwbGVkCisgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWMgc2V0
IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sg
c2hvdWxkIG5vdCBiZSBjYWNoZWQuCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE1vZHVs
ZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBt
X3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAg
IH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKKworcHVi
bGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZv
KFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi5lYzI5ZDU1MmE4NDI2NDQ0
NjEwNDYyN2Q1MDU1MGFkYmM5MzA4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAsNyArNzAs
OSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlmICht
X25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJpYWJsZSh2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdpc3Rlcik7
CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAvLyBGb3Ig
TW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50IGZvciB0
aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxlQ29kZSkK
KyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBAIC01MDQs
NiArNTA2LDE4OCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIH0K
IAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNlRGVidWdn
ZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKKyAg
ICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVyQnl0ZWNv
ZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAgLCBtX3Nj
b3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxv
Y2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKworICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
cykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwor
CisgICAgLy8gVXNlIHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGlzIHN5bWJvbCB0YWJsZQorICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxv
Y2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5
bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNj
b3BlKTsKKworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAg
ICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZU
aGVUaGluZ3MpCisgICAgICAgIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5t
YXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2Fw
dHVyZVNvbWVPZlRoZVRoaW5ncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIG1vZHVsZVByb2dyYW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0
byBsb29rVXBWYXJLaW5kID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgLy8gQWxs
b2NhdGUgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcyBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50Lgor
ICAgICAgICBpZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktp
bmQ6OlNjb3BlOworCisgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBuYW1lc3BhY2UgdmFyaWFibGVz
IGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgdG8gaW5zdGFudGlhdGUKKyAgICAgICAgLy8gaXQg
ZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGNvZGUuCisgICAgICAgIGlmIChlbnRyeS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7
CisKKyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBW
YXJLaW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpT
Y29wZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKKworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgLy8gTm93IGRl
Y2xhcmUgYWxsIHZhcmlhYmxlcy4KKworICAgIGZvciAoYXV0byYgZW50cnkgOiBtb2R1bGVQcm9n
cmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkpIHsKKyAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1
ZS5pc0xldCgpICYmICFlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICBpZiAoIWVudHJ5
LnZhbHVlLmlzVmFyKCkpIC8vIFRoaXMgaXMgZWl0aGVyIGEgcGFyYW1ldGVyIG9yIGNhbGxlZS4K
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5ncyBhcmUg
bm90IGFsbG9jYXRlZCBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50IGFzIHVzdWFsIHZhcmlhYmxl
cycgd2F5LgorICAgICAgICAvLyBUaGVzZSByZWZlcmVuY2VzIHJlbWFpbiB0aGUgIkR5bmFtaWMi
IGluIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLiBMYXRlciwgd2hlbiBsaW5raW5nCisgICAgICAg
IC8vIHRoZSBjb2RlIGJsb2NrLCB3ZSByZXNvbHZlIHRoZSByZWZlcmVuY2UgdG8gdGhlICJNb2R1
bGVWYXIiLgorICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52
YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgY3JlYXRlVmFyaWFibGUoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBlbnRyeS5rZXkuZ2V0
KCkpLCBsb29rVXBWYXJLaW5kKGVudHJ5LmtleS5nZXQoKSwgZW50cnkudmFsdWUpLCBzeW1ib2xU
YWJsZSwgSWdub3JlRXhpc3RpbmcpOworICAgIH0KKworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMgPSBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygp
OworCisgICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS0+bV9sb2NrKTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxWYXJpYWJsZXMp
IHsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0xldCgpIHx8IGVudHJ5LnZhbHVl
LmlzQ29uc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzVmFyKCkpOwor
ICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFi
bGUtPmdldChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3lt
Ym9sVGFibGVFbnRyeS5pc051bGwoKSk7CisKKyAgICAgICAgICAgIC8vIEltcG9ydGVkIGJpbmRp
bmdzIGFyZSBub3QgYWxsb2NhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYXMgdXN1YWwg
dmFyaWFibGVzJyB3YXkuCisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgp
ICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktpbmQo
ZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBWYXJPZmZzZXQgdmFy
T2Zmc2V0OworICAgICAgICAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpCisgICAg
ICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNj
b3BlT2Zmc2V0KGxvY2tlcikpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOworICAgICAgICAgICAgICAgIFJlZ2lz
dGVySUQqIGxvY2FsID0gbmV3QmxvY2tTY29wZVZhcmlhYmxlKCk7CisgICAgICAgICAgICAgICAg
bG9jYWwtPnJlZigpOworICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChsb2Nh
bC0+dmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTeW1i
b2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgZW50cnkudmFsdWUuaXNDb25zdCgpID8g
UmVhZE9ubHkgOiAwKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBlbnRy
eS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJlZ2lzdGVy
SUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRyOworICAgIGlmICh2bS50eXBlUHJvZmls
ZXIoKSkKKyAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3lt
Ym9sVGFibGUpOworICAgIGVsc2UKKyAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENv
bnN0YW50VmFsdWUoc3ltYm9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3ZtKSk7CisKKyAgICBt
X1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihsZXhpY2FsVmFyaWFibGVzLCB0cnVlKSk7
CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnkgeyBT
dHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBzeW1ib2xUYWJsZSksIG1fc2NvcGVSZWdpc3Rlciwg
ZmFsc2UsIGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCkgfSk7CisKKyAgICAvLyBQcmVmaWxs
IHN0YWNrIHZhcmlhYmxlcyB3aXRoIHRoZSBURFogZW1wdHkgdmFsdWUuCisgICAgLy8gU2NvcGUg
dmFyaWFibGVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgdG8gdGhlIFREWiBlbXB0eSB2YWx1ZSB3aGVu
IEpTTGV4aWNhbEVudmlyb25tZW50IGlzIGFsbG9jYXRlZC4KKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogbGV4aWNhbFZhcmlhYmxlcykgeworICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5ncyBhcmUg
bm90IGFsbG9jYXRlZCBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50IGFzIHVzdWFsIHZhcmlhYmxl
cycgd2F5LgorICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52
YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0
KGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgIEFTU0VSVCghc3ltYm9sVGFibGVFbnRyeS5pc051
bGwoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBzeW1ib2xUYWJsZUVudHJ5LnZhck9m
ZnNldCgpOworICAgICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBBU1NFUlQob2Zmc2V0LmlzU3RhY2soKSk7CisgICAgICAgIGVtaXRNb3Zl
RW1wdHlWYWx1ZSgmcmVnaXN0ZXJGb3Iob2Zmc2V0LnN0YWNrT2Zmc2V0KCkpKTsKKyAgICB9CisK
KyAgICAvLyBtYWtlRnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZXJlJ3MgY29ycmVjdCBURFogc3Rh
Y2sgZW50cmllcy4KKyAgICAvLyBTbyBpdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHB1dHRpbmcg
b3VyIGxleGljYWwgZW52aXJvbm1lbnQgdG8gdGhlIFREWiBzdGFjayBjb3JyZWN0bHkuCisKKyAg
ICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbiA6IG1vZHVsZVByb2dyYW1Ob2Rl
LT5mdW5jdGlvblN0YWNrKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlcmF0b3IgPSBtb2R1
bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZmluZChmdW5jdGlvbi0+aWRlbnQoKS5p
bXBsKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAhPSBtb2R1bGVQcm9ncmFt
Tm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZW5kKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
aXRlcmF0b3ItPnZhbHVlLmlzSW1wb3J0ZWQoKSk7CisKKyAgICAgICAgVmFyS2luZCB2YXJLaW5k
ID0gbG9va1VwVmFyS2luZChpdGVyYXRvci0+a2V5LmdldCgpLCBpdGVyYXRvci0+dmFsdWUpOwor
ICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkgeworICAgICAgICAgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgICAgICAgICAgLy8gU2VjdGlvbiAxNS4yLjEu
MTYuNCwgc3RlcCAxNi1hLWl2LTEuCisgICAgICAgICAgICAvLyBBbGwgaGVhcCBhbGxvY2F0ZWQg
ZnVuY3Rpb24gZGVjbGFyYXRpb25zIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgbW9k
dWxlIGVudmlyb25tZW50CisgICAgICAgICAgICAvLyBpcyBjcmVhdGVkLiBUaGV5IGluY2x1ZGUg
dGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgbm90LWV4cG9ydGVkLWJ1dC1o
ZWFwLWFsbG9jYXRlZAorICAgICAgICAgICAgLy8gZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBUaGlz
IGlzIHJlcXVpcmVkIGJlY2F1c2UgZXhwb3J0ZWQgZnVuY3Rpb24gc2hvdWxkIGJlIGluc3RhbnRp
YXRlZCBiZWZvcmUKKyAgICAgICAgICAgIC8vIGV4ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBpbiB0
aGUgZGVwZW5kZW5jeSBncmFwaC4gVGhpcyBlbmFibGVzIHRoZSBtb2R1bGVzIHRvIGxpbmsgdGhl
IGltcG9ydGVkCisgICAgICAgICAgICAvLyBiaW5kaW5ncyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBh
bnkgbW9kdWxlIGNvZGUuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIHNpbmNl
IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhcmUgaW5zdGFudGlhdGVkIGJlZm9yZSBleGVjdXRpbmcg
dGhlIG1vZHVsZSBib2R5IGNvZGUsIHRoZSBzcGVjCisgICAgICAgICAgICAvLyBhbGxvd3MgdGhl
IGZ1bmN0aW9ucyBpbnNpZGUgdGhlIG1vZHVsZSB0byBiZSBleGVjdXRlZCBiZWZvcmUgaXRzIG1v
ZHVsZSBib2R5IGlzIGV4ZWN1dGVkIHVuZGVyCisgICAgICAgICAgICAvLyB0aGUgY2lyY3VsYXIg
ZGVwZW5kZW5jaWVzLiBUaGUgZm9sbG93aW5nIGlzIHRoZSBleGFtcGxlLgorICAgICAgICAgICAg
Ly8KKyAgICAgICAgICAgIC8vIE1vZHVsZSBBIChleGVjdXRlZCAxc3QpOgorICAgICAgICAgICAg
Ly8gICAgaW1wb3J0IHsgYiB9IGZyb20gIkIiOworICAgICAgICAgICAgLy8gICAgLy8gSGVyZSwg
dGhlIG1vZHVsZSAiQiIgaXMgbm90IGV4ZWN1dGVkIHlldCwgYnV0IHRoZSBmdW5jdGlvbiBkZWNs
YXJhdGlvbiBpcyBhbHJlYWR5IGluc3RhbnRpYXRlZC4KKyAgICAgICAgICAgIC8vICAgIC8vIFNv
IHdlIGNhbiBjYWxsIHRoZSBmdW5jdGlvbiBleHBvcnRlZCBmcm9tICJCIi4KKyAgICAgICAgICAg
IC8vICAgIGIoKTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICBleHBvcnQgZnVu
Y3Rpb24gYSgpIHsKKyAgICAgICAgICAgIC8vICAgIH0KKyAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAvLyBNb2R1bGUgQiAoZXhlY3V0ZWQgMm5kKToKKyAgICAgICAgICAgIC8vICAgIGltcG9y
dCB7IGEgfSBmcm9tICJBIjsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICBleHBv
cnQgZnVuY3Rpb24gYigpIHsKKyAgICAgICAgICAgIC8vICAgICAgICBjKCk7CisgICAgICAgICAg
ICAvLyAgICB9CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgLy8gYyBpcyBub3Qg
ZXhwb3J0ZWQsIGJ1dCBzaW5jZSBpdCBpcyByZWZlcmVuY2VkIGZyb20gdGhlIGIsIHdlIHNob3Vs
ZCBpbnN0YW50aWF0ZSBpdCBiZWZvcmUKKyAgICAgICAgICAgIC8vICAgIC8vIGV4ZWN1dGluZyB0
aGUgIkIiIG1vZHVsZSBjb2RlLgorICAgICAgICAgICAgLy8gICAgZnVuY3Rpb24gYygpIHsKKyAg
ICAgICAgICAgIC8vICAgICAgICBhKCk7CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gTW9kdWxlIEVudHJ5UG9pbnQgKGV4ZWN1dGVkIGxhc3QpOgor
ICAgICAgICAgICAgLy8gICAgaW1wb3J0ICJCIjsKKyAgICAgICAgICAgIC8vICAgIGltcG9ydCAi
QSI7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9u
RGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIFN0YWNrIGFsbG9jYXRlZCBmdW5jdGlvbnMgY2FuIGJlIGFsbG9jYXRlZCB3aGVuIGV4
ZWN1dGluZyB0aGUgbW9kdWxlJ3MgYm9keS4KKyAgICAgICAgICAgIG1fZnVuY3Rpb25zVG9Jbml0
aWFsaXplLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmdW5jdGlvbiwgTm9ybWFsRnVuY3Rpb25WYXJp
YWJsZSkpOworICAgICAgICB9CisgICAgfQorfQorCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVj
b2RlR2VuZXJhdG9yKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA4OWNkZWFkMTM1NDQ4MWM3NDY2
NzBlMzVmOTYwMDU5MzdmYjk1YmE3Li4xNmJiYzBkZGMwYWRmNDA5MWQ4YTEzOTQ0NGFiYjM5MzQw
ZjUwODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0yNjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9u
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVy
YXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0
ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCmluZGV4IDljNmU3NmYyZjQyYmRkY2U5NjViODI0MjI4YWI2NTIxOGZlMGUxN2UuLmQ0
YjM1MDRmOTIwNmE1MjM1MDc4MzYxNTUzOTY2ZjAwMGM1MTk4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI4OTUs
OCArMjg5NSwxNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lk
IE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKikKK3ZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0
KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRz
dFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0
TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKKyAgICBlbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdp
c3Rlci5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFs
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA1NywzMCArMzA2NiwzNyBA
QCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8g
RG8gbm90aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZv
aWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHJ1bnRpbWUuCiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnREZWZhdWx0RGVjbGFyYXRp
b25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQg
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBBU1NFUlQobV9kZWNsYXJh
dGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNsYXJhdGlvbik7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRMb2NhbERlY2xhcmF0aW9u
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEV4
cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEFTU0VSVChtX2RlY2xhcmF0aW9u
KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2RlY2xhcmF0aW9uKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBE
byBub3RoaW5nIGF0IHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDY2ZmE4ZWNmNTQwNjM1ODZjZDRhYWE4ZmI4NDk3YmM2MTUxZWIwMzcuLmZhNjJlYTZmMzc2ZDg4
Y2VmZjRlOTgyNzU0MzI2NmUwZDkzYTQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtOTcsNiArOTcsNyBAQCBTdHJpbmcg
U3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwoKSBjb25zdAogICAgIAogICAgIHN3aXRjaCAo
Y29kZVR5cGUpIHsKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICBjYXNlIFN0YWNr
RnJhbWVNb2R1bGVDb2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZToKICAgICBj
YXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgogICAgICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5
KCkpCkBAIC0xMTgsNiArMTE5LDkgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZyaWVuZGx5RnVuY3Rp
b25OYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAogICAgIGNhc2UgU3RhY2tGcmFtZUV2
YWxDb2RlOgogICAgICAgICB0cmFjZUxpbmUgPSAiZXZhbCBjb2RlIjsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKKyAgICAgICAgdHJhY2VMaW5lID0gIm1v
ZHVsZSBjb2RlIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29k
ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAgIHRyYWNlTGluZSA9IGdldENhbGN1
bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0YWNrRnJhbWVDYWxsZWUpLmltcGwoKTsKQEAg
LTQ1MSw2ICs0NTUsOCBAQCBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVD
b2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCiAgICAgc3dpdGNoICh2aXNpdG9yLT5jb2Rl
VHlwZSgpKSB7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpFdmFsOgogICAgICAgICBy
ZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6
TW9kdWxlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU1vZHVsZUNvZGU7CiAgICAgY2FzZSBT
dGFja1Zpc2l0b3I6OkZyYW1lOjpGdW5jdGlvbjoKICAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVG
dW5jdGlvbkNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpHbG9iYWw6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDEz
MmM5NWQxN2Y0ZTEwOWJhMzdiYmNiMDE4NzI3MzJiMmY5NTExNmYuLjAzOGJjYTVjZmM3NWI5YjI0
NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw4ICs1NCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7
CisgICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7
CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTYW1wbGluZ1Rvb2w7CkBAIC03Niw2ICs3
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKICAg
ICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwK
KyAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVGdW5jdGlv
bkNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggM2Yy
YjkxNDA0NTFkNDg4MzRhOWY3MTAzMzQ2NGEyMTQ3ZDFiZGI3MC4uNzVmMTc3MjNiMTRhNDc1ODZk
OWVjZDY2MzZlZGZhNDY5ODE3YjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNv
bnN0CiAgICAgc3dpdGNoIChjb2RlQmxvY2soKS0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgRXZh
bENvZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6RXZhbDsKKyAgICBjYXNlIE1vZHVsZUNv
ZGU6CisgICAgICAgIHJldHVybiBDb2RlVHlwZTo6TW9kdWxlOwogICAgIGNhc2UgRnVuY3Rpb25D
b2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkZ1bmN0aW9uOwogICAgIGNhc2UgR2xvYmFs
Q29kZToKQEAgLTE5OSw2ICsyMDEsOSBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVu
Y3Rpb25OYW1lKCkKICAgICBjYXNlIENvZGVUeXBlOjpFdmFsOgogICAgICAgICB0cmFjZUxpbmUg
PSBBU0NJSUxpdGVyYWwoImV2YWwgY29kZSIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
ZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgibW9kdWxl
IGNvZGUiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TmF0aXZlOgogICAg
ICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERp
c3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxsZWUpLmltcGwoKTsKQEAgLTIxOSw2ICsyMjQsNyBA
QCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkKIAogICAgIHN3aXRjaCAo
Y29kZVR5cGUoKSkgewogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CisgICAgY2FzZSBDb2RlVHlw
ZTo6TW9kdWxlOgogICAgIGNhc2UgQ29kZVR5cGU6OkZ1bmN0aW9uOgogICAgIGNhc2UgQ29kZVR5
cGU6Okdsb2JhbDogewogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gY29kZUJsb2NrKCktPm93
bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCAwMDM2YTc4OWM1OGUxOWFl
MTNiMGQ0YWJmYjc1NTgzZTliYjQ2NzM0Li40MWJmYzcwODgyMGVjY2ZjYWM3MzViMzliNDIyNDcx
M2ViZTUyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7CiAgICAg
ICAgICAgICBHbG9iYWwsCiAgICAgICAgICAgICBFdmFsLAogICAgICAgICAgICAgRnVuY3Rpb24s
CisgICAgICAgICAgICBNb2R1bGUsCiAgICAgICAgICAgICBOYXRpdmUKICAgICAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJiYzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4
NjIxNzQ2NGQ4NmM1NTEuLjg0ZjM2ZDU0MGYzY2JhYTFhZWNjNTUzYWRmOGM0NjE0YjdiZGU4NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQ4Niw2ICs0ODYsNyBAQCBDb21waWxh
dGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICAKICAgICBzd2l0Y2ggKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2Fz
ZSBHbG9iYWxDb2RlOgorICAgIGNhc2UgTW9kdWxlQ29kZToKICAgICBjYXNlIEV2YWxDb2RlOgog
ICAgICAgICBtX2NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmlu
ZGV4IDczMTNmY2UyNDIwMGNjOTE2MTY5ZTgxNGEwYTA1OTMwYWFiYWE1M2QuLjc3N2NmZGUwOTNh
MmQxM2RmNWZlNWMzNjZjOTgyMmY0YWUwODRmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsID09IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDYpOwotICAgIEFT
U0VSVChPYmplY3RUeXBlID09IDE5KTsKLSAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDIw
KTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMSk7CisgICAgQVNTRVJUKEZpbmFsT2JqZWN0
VHlwZSA9PSAyMik7CiAgICAgQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAg
ICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAgLTE0MSw2ICsxNDEsNyBAQCB2b2lkIERh
dGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAw
KTsKICAgICBBU1NFUlQoRXZhbENvZGUgPT0gMSk7CiAgICAgQVNTRVJUKEZ1bmN0aW9uQ29kZSA9
PSAyKTsKKyAgICBBU1NFUlQoTW9kdWxlQ29kZSA9PSAzKTsKIAogICAgIHN0YXRpY19hc3NlcnQo
R2xvYmFsUHJvcGVydHkgPT0gMCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHkgUmVzdWx0
VHlwZSBpcyA9PSAwIik7CiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXIgPT0gMSwgIkxMSW50
IGFzc3VtZXMgR2xvYmFsVmFyIFJlc3VsdFR5cGUgaXMgPT0gMSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA5ZDAwMTA2YjlhODI3
NmY0ODQyMGY2YjU0NmMzMmQ1OTMwYTM2YjY4Li5hNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4MmNm
ZTJhNTVhYjc4MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50LmNwcApAQCAtOTcsMTIgKzk3LDMwIEBAIHN0YXRpYyB2b2lkIHNldFByb2dyYW1F
bnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJv
Z3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyNpZiBFTkFC
TEUoSklUKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRD
VElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIFVOVVNFRF9QQVJBTSh2bSk7Cisg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklU
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1
bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSkpOworfQorCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBzd2l0Y2ggKGNvZGVCbG9jay0+Y29kZVR5cGUoKSkg
ewogICAgIGNhc2UgR2xvYmFsQ29kZToKICAgICAgICAgc2V0UHJvZ3JhbUVudHJ5cG9pbnQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAg
ICAgIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgc2V0RXZhbEVudHJ5cG9pbnQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTJhNmIyYjExYzU2
ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYS4uOWUzZjQ0ODdiMDg1MjAxMzcyYjJkN2IyN2I3
OGNlNTkxYWJkOTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDhhYjk2YjMwNDc1
ZmQ1NTRkZWY4YjMyNjYyNDk2NjMyZWFmOTZkOWEuLmFmNjg4NGU1ZWRlN2JlYmUwNGYzN2IzZjAw
MDkxZWUxNmY5NTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcApAQCAtODgsNiArODgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSksICJwcm9ncmFtIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X21vZHVsZV9wcm9n
cmFtX3Byb2xvZ3VlKSwgIm1vZHVsZV9wcm9ncmFtIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIExM
SW50CiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCmluZGV4IDBkMWJlNmJkYWVhZGY3OTQ4N2NlOTA2NjgyNjQ2ODUxODhhOGJk
MTIuLjk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBAIC00Niw2ICs0Niw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50
cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IDEzNmM5MTY2MWYyMmQyZDgwOTNjMTk4YzljNWJkNjY0NDM4ZjU0OTYuLjc1Yzkx
Zjg2ODZlNGE1ZTA4NTAxM2JiMTE5MjI1ZWRjOTdhNDQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2MSw4ICsx
NjEsOCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29u
c3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKLWNvbnN0IE9iamVjdFR5cGUgPSAxOQotY29u
c3QgRmluYWxPYmplY3RUeXBlID0gMjAKK2NvbnN0IE9iamVjdFR5cGUgPSAyMQorY29uc3QgRmlu
YWxPYmplY3RUeXBlID0gMjIKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkBAIC0xNzYsNiArMTc2LDcgQEAgY29uc3QgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCiBjb25zdCBHbG9iYWxDb2RlID0gMAogY29u
c3QgRXZhbENvZGUgPSAxCiBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCitjb25zdCBNb2R1bGVDb2Rl
ID0gMwogCiAjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1
bWVudCBjb3VudC4KIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0CkBAIC04ODQsNiArODg1LDExIEBAIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGRp
c3BhdGNoKDApCiAKIAorX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xv
Z3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNo
KDApCisKKwogX2xsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggMmZhODFhYWNm
YzFmOGYyYmQ3NjQyZjM4MzliM2IxMjYwNTg3ZjJmMi4uZjYyMzhmYjk2ODAyYmU1MzdlOTFhZGMy
NmI4MmQ4OTBiOTU0MDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9N
b2R1bGVBbmFseXplci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6
ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1l
LAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCkt
Pmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7Ci0gICAgaWYgKGltcG9ydEVudHJ5LmlzTmFt
ZXNwYWNlKHZtKCkpKSB7CisgICAgaWYgKHZhcmlhYmxlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkg
ewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmluZGluZy4KICAgICAgICAgLy8gaW1w
b3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKICAgICAgICAgLy8gZXhwb3J0IHsgbmFtZXNw
YWNlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA4YTkzNjE1
N2IzZjY5NjBiNjNiYTgxZWI0Nzc2ODg2ZmEwMzQ1OThhLi43ZjA1MDFjNjUzMTJkYjRkNGZmODVk
YzRkYjEzYWYyNjMxZGRlYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yMzE5LDcgKzIzMTksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgIH0K
IAogICAgIHNlbWFudGljRmFpbElmVHJ1ZShsb2NhbE5hbWVUb2tlbi5tX3R5cGUgJiBLZXl3b3Jk
VG9rZW5GbGFnLCAiQ2Fubm90IHVzZSBrZXl3b3JkIGFzIGltcG9ydGVkIGJpbmRpbmcgbmFtZSIp
OwotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVW
YXJpYWJsZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgRGVj
bGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNr
IGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFyYXRp
b25UeXBlOjpDb25zdERlY2xhcmF0aW9uLCAoc3BlY2lmaWVyVHlwZSA9PSBJbXBvcnRTcGVjaWZp
ZXJUeXBlOjpOYW1lc3BhY2VJbXBvcnQpID8gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRl
ZE5hbWVzcGFjZSA6IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOwogICAgIGlmIChk
ZWNsYXJhdGlvblJlc3VsdCAhPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpIHsKICAgICAgICAg
ZmFpbElmVHJ1ZUlmU3RyaWN0KGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWRTdHJpY3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYW4gaW1wb3J0ZWQgYmluZGluZyBu
YW1lZCAiLCBsb2NhbE5hbWUtPmltcGwoKSwgIiBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBp
ZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0
ZURlY2xhcmF0aW9uKQpAQCAtMjU2MCwxMCArMjU2MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNs
YXJhCiAgICAgICAgICAgICAvLyBkb2VzIG5vdCBoYXZlIGVmZmVjdCBvbiB0aGUgY3VycmVudCBt
b2R1bGUncyBzY29wZS4gQnV0LAogICAgICAgICAgICAgLy8gICBleHBvcnQgeyBBLCBCLCBDIGFz
IEQgfQogICAgICAgICAgICAgLy8gd2lsbCByZWZlcmVuY2UgdGhlIGN1cnJlbnQgbW9kdWxlJ3Mg
YmluZGluZ3MuCi0gICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA6
IG1heWJlTG9jYWxOYW1lcykgewotICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VW
YXJpYWJsZShsb2NhbE5hbWUsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmxvY2FsTmFt
ZSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA6IG1heWJl
TG9jYWxOYW1lcykKICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVE
YXRhKCkuZXhwb3J0QmluZGluZygqbG9jYWxOYW1lKTsKLSAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24o
ZXhwb3J0TG9jYXRpb24sIHNwZWNpZmllckxpc3QsIG1vZHVsZU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYzJlNmE2NTA0MDg5OTE1ZGMyODA1N2ZmZTAxZjA0
ZWVhZGUwMWYxNC4uZjY5N2JlMzM2YmI4MGM1MjUwNDI4NTZiOGMwODc1NTM3MzNhMTIxNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMDAsNiArMTAwLDcgQEAgZW51
bSBjbGFzcyBEZWNsYXJhdGlvblR5cGUgewogCiBlbnVtIGNsYXNzIERlY2xhcmF0aW9uSW1wb3J0
VHlwZSB7CiAgICAgSW1wb3J0ZWQsCisgICAgSW1wb3J0ZWROYW1lc3BhY2UsCiAgICAgTm90SW1w
b3J0ZWQKIH07CiAKQEAgLTMzNSw2ICszMzYsMTAgQEAgc3RydWN0IFNjb3BlIHsKIAogICAgICAg
ICBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKQogICAg
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7CisgICAg
ICAgIGVsc2UgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRl
ZE5hbWVzcGFjZSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJ
c0ltcG9ydGVkKCk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElz
SW1wb3J0ZWROYW1lc3BhY2UoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNWVkMmE2YmRhOTI4MzhlMjk2NDgy
ZjY2YzA3ODVhMzYxMWFlNjE1Yy4uNzZjNzA5NmU5ZTY0NDdlYmJiZGIwZDk2NWEzZWE0YTI0YTUx
NzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeSB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTGV0KCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNMZXQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHBvcnRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIElzRXhwb3J0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNJbXBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzSW1wb3J0ZWQ7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNJbXBvcnRlZE5hbWVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNDcsNiArNDgs
NyBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNMZXQoKSB7IG1fYml0cyB8PSBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc0V4cG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNFeHBvcnRlZDsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZDsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCkgeyBtX2JpdHMg
fD0gSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFy
SXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNTcsNyArNTksOCBAQCBzdHJ1Y3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICAgICAgSXNWYXIgPSAxIDw8IDIsCiAgICAg
ICAgIElzTGV0ID0gMSA8PCAzLAogICAgICAgICBJc0V4cG9ydGVkID0gMSA8PCA0LAotICAgICAg
ICBJc0ltcG9ydGVkID0gMSA8PCA1CisgICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUsCisgICAg
ICAgIElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYKICAgICB9OwogICAgIHVpbnQ4X3QgbV9i
aXRzIHsgMCB9OwogfTsKQEAgLTc5LDYgKzgyLDggQEAgY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVu
dCB7CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNv
bnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5y
ZW1vdmUoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmlu
ZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBt
X21hcC5maW5kKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikg
Y29uc3QgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQogICAgIHZvaWQgc3dhcChW
YXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAgICAgdm9pZCBtYXJrVmFyaWFibGVBc0NhcHR1
cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
OwogICAgIHZvaWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCmluZGV4IGFiNzBlYWJiOWUzYTJhMDQ1MGM2MjllNzA1NjY2ZjRkY2NhMDFl
MjguLmYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5Y2RjN2NiZWRmMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNjcsMTEgKzY3LDE5IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ2FjaGVUeXBlcyB7IH07CiB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IHsKICAgICB0eXBl
ZGVmIEpTQzo6UHJvZ3JhbU5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNv
ZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6UHJvZ3JhbVR5cGU7Cisg
ICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlOwogfTsKIAogdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5s
aW5rZWRFdmFsQ29kZUJsb2NrPiB7CiAgICAgdHlwZWRlZiBKU0M6OkV2YWxOb2RlIFJvb3ROb2Rl
OwogICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNv
dXJjZUNvZGVLZXk6OkV2YWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZTsKK307CisKK3RlbXBsYXRl
IDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gewor
ICAgIHR5cGVkZWYgSlNDOjpNb2R1bGVQcm9ncmFtTm9kZSBSb290Tm9kZTsKKyAgICBzdGF0aWMg
Y29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpN
b2R1bGVUeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xh
c3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KQEAgLTk1LDcg
KzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2Rl
QmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAg
ICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwgbnVsbHB0ciwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgIENhY2hlVHlwZXM8
VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIgQEAgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0YWJs
ZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVC
bG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHRo
aXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6
OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7CisgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJs
b2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBUaGlzVERaTW9kZTo6
Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAmZW1wdHlQ
YXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTogVGhlcmUncyBubyBuZWVkIHRvIGFk
ZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4gSXQncyBhbHJlYWR5IGluIHRo
ZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6Omdl
dEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGFmN2RhYzdl
NDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVmZTM5NTEyYzkzNjZlNjE2Mzk4
MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNTY29w
ZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3Mg
VW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwpAQCAtNTYs
NyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAogY2xhc3MgU291cmNlQ29kZUtleSB7
CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVu
Y3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwg
RnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBTb3VyY2VDb2RlS2V5KCkKICAgICB7
CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsKIAogICAgIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1FeGVjdXRhYmxl
KiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0
TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFibGUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9y
JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYsIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIERlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAogICAg
IHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAppbmRleCBlNDg1NDc5NzU2N2RlOGNkYmU5NjYxNTcwMmZiNmU3NTFiNjNjNWZkLi5iMWQw
MDU1ZWNmMDI0MzQyOWZhZjE5ZWRhZmY4ZmUwNjUzOWI2ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMTYxLDcgKzE2MSwxOCBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9j
aykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBNb2R1bGVDb2RlOiB7
CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihn
ZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7
CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBj
b2RlQmxvY2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRXZhbENvZGU6IHsK
ICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFi
bGUqPih0aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nh
c3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpAQCAtMjI4LDcgKzIzOSwxNyBA
QCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAg
ICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVC
bG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92
aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CiAgICAgfQotICAg
IAorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZv
KCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nh
c3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRh
YmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2soCisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAgICAgICAgICBleGVjdXRhYmxl
LT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigp
KSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4odGhpcyk7CkBAIC0yODUsNiArMzA2LDE3IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3Jp
cHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVG
b3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4oCisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2st
PmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAg
ICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSkpOworICAgICAgICBy
ZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1
dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBi
YXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oCkBAIC0zODUsNiArNDE3
LDM2IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAg
IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxl
Ojp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3Jp
cHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAg
ICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0
cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSkKK3sKKyAgICBtX3R5cGVQ
cm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0g
c291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSB8
fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0oKS5m
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJjZUlE
KCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQp
OworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkp
KSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFibGUt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVh
dGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUpOworICAgIGlmICghdW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0KGV4ZWMtPnZtKCks
IGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworCisgICAgcmV0dXJuIGV4
ZWN1dGFibGU7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4o
Y2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUo
KTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAi
RnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCAK
QEAgLTUxNyw2ICs1NzksMjMgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkK
ICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9t
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dy
YW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQoreworICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayA9IG51bGxwdHI7CisgICAgbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xl
YXIoKTsKKyAgICBCYXNlOjpjbGVhckNvZGUoKTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQ7CkBAIC02NDcsNiAr
NzI2LDE1IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJvZ3JhbUV4ZWN1dGFibGUgdy9vIENvZGVCbG9j
ayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihy
ZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUt
PmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0LnByaW50KCpjb2RlQmxvY2spOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIHcv
byBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHJlYWxU
aGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRoZXJDb2RlQmxvY2soKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBhOWM0MWM0NTIxNjAzZDcwMjMz
ZGMyMDJjOTczZGRkNjVlMGQ5YTM3Li5jZGNlYjMwNDI2NWY5NzZkMDA3N2FlZmQ2NTdiNWI3YmFi
YmYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBA
IC01NCw4ICs1NCwxMCBAQCBjbGFzcyBKU1Njb3BlOwogY2xhc3MgSlNXQVNNTW9kdWxlOwogY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNz
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNzZW1i
bHlDb2RlQmxvY2s7Ci0gICAgCisKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxh
dGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKIGlubGluZSBib29sIGlzQ2FsbChDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMDYsNiArMTA4LDExIEBAIGNsYXNzIEV4ZWN1
dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gdHlwZSgp
ID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigp
IGNvbnN0CiAgICAgewpAQCAtNTUwLDYgKzU1Nyw0OSBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJvZ3JhbUNv
ZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNjcmlwdEV4
ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0
aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxK
SVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0
ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHZvaWQgY2xlYXJDb2RlKCk7CisKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IGZhbHNlKTsgfQorICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2suZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgIFJlZlB0cjxN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7Cit9OworCiBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwpAQCAtNzQyLDYgKzc5Miw4IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogICAgIGNhc2UgV2Vi
QXNzZW1ibHlFeGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxXZWJBc3NlbWJs
eUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAjZW5kaWYKKyAgICBjYXNl
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk4NjYzZGZjYjA4MmM3YWFiMDdhNjk1YjkwOTNj
N2RjNDU5ZDFjMjIuLjQzMmQwN2I5N2Q4YzE2OWY3M2RjZTI3M2ZiNGU4ZWI5ZDgzZGI2MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTkzMyw2ICs5MzMsMjUgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVj
dDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4g
dW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAgIFBh
cnNlckVycm9yIGVycm9yOworICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1
Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOworICAgIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOworICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgp
LmNvZGVDYWNoZSgpLT5nZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgpLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKworICAgIGlmICho
YXNEZWJ1Z2dlcigpKQorICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1l
LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1l
c3NhZ2UoKSk7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291
cmNlKCkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHVu
bGlua2VkQ29kZUJsb2NrOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDFhNTI1MGM2N2NkMTQ2ZWZiY2ZkMTEyN2M1NzA2MzhhYTQxM2IxOTYuLjFjYTMxYjdiMTI2
ZmIyZWZkM2I3MTkwZWFmNzY0ZjVjZGEwOTkxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBKU1N0
YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xh
c3MgTW9kdWxlTG9hZGVyT2JqZWN0OworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBj
bGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90eXBl
OwogY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azsKIGNsYXNzIE51bGxHZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsK
IGVudW0gY2xhc3MgVGhpc1REWk1vZGU7CkBAIC02NDMsNiArNjQ1LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwg
UHJvZ3JhbUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRh
YmxlKiwgVGhpc1REWk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2so
Q2FsbEZyYW1lKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqKTsKIAogcHJvdGVjdGVkOgogICAg
IHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDVkMTVlYmMzNmM4NDIwZWY2ZWNkNTRl
ZTA1M2Q5YTMzMTVmNmFiOGIuLjdiNjA2Mzc0YTYwNjBiNzcwMjBjNGVmNDUxMmU5MjQ1ZTAzZjNm
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U01vZHVsZVJlY29yZC5oIgogCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKQEAgLTU4LDYgKzYwLDcg
QEAgdm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGVwZW5kZW5jaWVzTWFwKTsKIH0KIApAQCAtOTAsOCArOTMsMTQgQEAgSlNNb2R1bGVSZWNvcmQq
IEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOwogfQogCi12b2lkIEpT
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSopCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5r
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgp
KTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKIH0KIAogSlNWYWx1ZSBKU01vZHVs
ZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggOTM2MjYzY2NmMzEyOWRhOTVlMzFlOTFhMjE5
NDBkZDBhOTU1MjY0NS4uODFkYTM5NjZlOGM1YThkYTkzMDRkMjgyZjRmYmNhOTRmMjRlYWU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBA
IC0xMTcsNiArMTE3LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgewogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKICAgICBKU1ZhbHVlIGV4
ZWN1dGUoRXhlY1N0YXRlKik7CiAKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xNTQsNiArMTU2LDcgQEAgY2xhc3MgSlNN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFs
dWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwogCisg
ICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDE1OTZlNjU4NGM4
YWViOGI3YzBjY2I0ZGEzMDMwMjAwOThlNjk1ZmYuLjExMGY4YjVhYzlkYjcxZDMzMTY3ZDg1OWIy
ZDQ2OWYzZTdhNWZhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBA
IC00MSwxMSArNDEsMTMgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVj
dXRhYmxlVHlwZSwKICAgICBQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlLAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlVHlwZSwKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSwKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlLAorICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrVHlwZSwKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggZTY3ZmEzODVi
ZmY3NzFjNGUzZDhhMmQ3OTExN2IxM2E1NzIzOGVhMS4uMjhlMGJhZGFhNzJhZjMwY2M3NzE5MTk2
MDRhNjEyZDZjZGI3M2UwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0yNzQsNiArMjc0LDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbklu
c3RhbnRpYXRpb24oRXgKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVS
ZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKIAogICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVj
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
OTYyZGM1MmRkZDY3ZWM2OTllMTBhYzY5MmRhMDU5NDEyNzFmMzJjMy4uODI3YmIzNjhhZDgxZTM1
ZjU0N2NhMWIxNzc3MzRjYWI1ODNkMzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtMjI1LDYgKzIyNSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgd2ViQXNzZW1ibHlFeGVjdXRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAjZW5kaWYKKyAgICBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNl
dCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgc3ltYm9sU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjM2
LDYgKzIzNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERhdGFT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZl
cnJlZFZhbHVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjNGU4MDM3OWU4YzIzOTIyYmZiNjgzODMxZmVjMTNi
NGMzYTY4N2FhLi44NGE1MzVhYjdkMWRkYjRjYmQ2NmIzZGQ1OTg4YWU2MjlmN2Y5YTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwor
Y2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJlZ2lz
dGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yODIsNiArMjgz
LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlFeGVj
dXRhYmxlU3RydWN0dXJlOwogI2VuZGlmCisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5Myw2ICsyOTUsNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8
U3RydWN0dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZl
cnJlZFZhbHVlU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDhmMmFjMDk1MGU2YTliYWIxOTNhZDBlOGQyNjMwOWYxYzRkM2U2MTAuLjM4Nzg1MGQ1YTZjYTZm
NGE4ZDE4ODZkNjM4NWE3NTEyYTViMjgzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTE0ODUsNiArMTQ4NSw4IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFE
YXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCciJyk7CiAgICAgfSBlbHNlIGlmIChleGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxlKCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJldmFsIik7CisgICAgZWxzZSBpZiAoZXhlY3V0
YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpKQorICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgibW9kdWxlIik7CiAgICAgZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhl
Y3V0YWJsZSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicHJvZ3JhbSIpOwogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkK
</data>
<flag name="review"
          id="285418"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>