<?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>212248</bug_id>
          
          <creation_ts>2020-05-21 19:31:09 -0700</creation_ts>
          <short_desc>hasOwnProperty inside structure property for-in loop should use an opcode like has_structure_property but for hasOwnProperty</short_desc>
          <delta_ts>2020-07-15 00:36:47 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214325</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655198</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-21 19:31:09 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656151</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-26 13:31:39 -0700</bug_when>
    <thetext>patch forthcoming

Appears to speedup React in Speedo2 by ~5%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656292</commentid>
    <comment_count>2</comment_count>
      <attachid>400310</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-26 21:56:09 -0700</bug_when>
    <thetext>Created attachment 400310
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656426</commentid>
    <comment_count>3</comment_count>
      <attachid>400349</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-27 10:31:46 -0700</bug_when>
    <thetext>Created attachment 400349
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656505</commentid>
    <comment_count>4</comment_count>
      <attachid>400364</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-27 12:03:03 -0700</bug_when>
    <thetext>Created attachment 400364
patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656657</commentid>
    <comment_count>5</comment_count>
      <attachid>400364</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-05-27 16:04:04 -0700</bug_when>
    <thetext>Comment on attachment 400364
patch

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

r=me with comments.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1108
&gt; +op :has_self_structure_property,

Wouldn&apos;t this normally be own? I guess we use the terms interchangeably though.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5247
&gt; +        unsigned newTarget = std::get&lt;1&gt;(hasOwnPropertyTuple);

Like new.target? :P

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5257
&gt; +        // disable peephole optimizations
&gt; +        generator.m_lastOpcodeID = op_end;

Nit: Can we make this a function on BytecodeGenerator?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5259
&gt; +        OpJmp::emit&lt;OpcodeSize::Wide32&gt;(&amp;generator, BoundLabel(static_cast&lt;int&gt;(newTarget) - static_cast&lt;int&gt;(branchInstIndex)));

Why does this have to be Wide32 if we are gonna Nop fill anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656691</commentid>
    <comment_count>6</comment_count>
      <attachid>400364</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-27 17:23:32 -0700</bug_when>
    <thetext>Comment on attachment 400364
patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1108
&gt;&gt; +op :has_self_structure_property,
&gt; 
&gt; Wouldn&apos;t this normally be own? I guess we use the terms interchangeably though.

I can switch to own, it&apos;s probably more consistent

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5247
&gt;&gt; +        unsigned newTarget = std::get&lt;1&gt;(hasOwnPropertyTuple);
&gt; 
&gt; Like new.target? :P

haha I thought this too when writing it, but kept it given context
I can switch to newBranchTarget

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5257
&gt;&gt; +        generator.m_lastOpcodeID = op_end;
&gt; 
&gt; Nit: Can we make this a function on BytecodeGenerator?

sure

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5259
&gt;&gt; +        OpJmp::emit&lt;OpcodeSize::Wide32&gt;(&amp;generator, BoundLabel(static_cast&lt;int&gt;(newTarget) - static_cast&lt;int&gt;(branchInstIndex)));
&gt; 
&gt; Why does this have to be Wide32 if we are gonna Nop fill anyway?

Good point, I don&apos;t think it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656703</commentid>
    <comment_count>7</comment_count>
      <attachid>400411</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-27 17:50:37 -0700</bug_when>
    <thetext>Created attachment 400411
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656742</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-27 19:43:30 -0700</bug_when>
    <thetext>Committed r262233: &lt;https://trac.webkit.org/changeset/262233&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400411.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656743</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-27 19:44:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/63701395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656827</commentid>
    <comment_count>10</comment_count>
      <attachid>400411</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-28 06:47:17 -0700</bug_when>
    <thetext>Comment on attachment 400411
patch for landing

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1053
&gt; +        JSValue hasOwnPropertyFunction = jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;get(this, vm.propertyNames-&gt;hasOwnProperty));

Is there a reason to not use `getDirect()` here? Anyway, if we want to keep using `get`, we need to add a `catchScope.assertNoException()` after this call. Right now this is breaking almost all tests on Debug builds https://build.webkit.org/builders/Apple-Catalina-Debug-JSC-Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656841</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-28 07:30:08 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #10)
&gt; we need to add a `catchScope.assertNoException()` after this

Landed r262239: &lt;http://trac.webkit.org/r262239&gt; to placate the exception checker and green the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656884</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-28 09:20:06 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #10)
&gt; Comment on attachment 400411 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400411&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1053
&gt; &gt; +        JSValue hasOwnPropertyFunction = jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;get(this, vm.propertyNames-&gt;hasOwnProperty));
&gt; 
&gt; Is there a reason to not use `getDirect()` here? Anyway, if we want to keep
&gt; using `get`, we need to add a `catchScope.assertNoException()` after this
&gt; call. Right now this is breaking almost all tests on Debug builds
&gt; https://build.webkit.org/builders/Apple-Catalina-Debug-JSC-Tests

The reason was just not relying on it being in Structure property storage.

But we could also just use getDirect, since this will likely lead to failures in testing if ObjectPrototype ever puts hasOwnProperty elsewhere that isn&apos;t in property storage</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400310</attachid>
            <date>2020-05-26 21:56:09 -0700</date>
            <delta_ts>2020-05-27 10:31:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>62141</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIxNzYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTI2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGhhc093blByb3BlcnR5IGluc2lkZSBzdHJ1Y3R1cmUgcHJvcGVydHkg
Zm9yLWluIGxvb3Agc2hvdWxkIHVzZSBhbiBvcGNvZGUgbGlrZSBoYXNfc3RydWN0dXJlX3Byb3Bl
cnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjI0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9y
LWluLWxvb3AuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNv
dW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3MvaGFzLW93bi1wcm9wZXJ0
eS1zdHJ1Y3R1cmUtZm9yLWluLWxvb3AtY29ycmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAg
ICAgKHRlc3QyLmNvdW50KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLmNvdW50
KToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3Q0LmNvdW50KToKKyAgICAgICAgKHRl
c3Q0KToKKyAgICAgICAgKHRlc3Q1LmNvdW50KToKKyAgICAgICAgKHRlc3Q1KToKKyAgICAgICAg
KHRlc3Q2LmNvdW50KToKKyAgICAgICAgKHRlc3Q2KToKKyAgICAgICAgKHRlc3Q3LmNvdW50KToK
KyAgICAgICAgKHRlc3Q3KToKKyAgICAgICAgKHRlc3Q4LmNvdW50KToKKyAgICAgICAgKHRlc3Q4
KToKKyAgICAgICAgKHRlc3Q5LmNvdW50KToKKyAgICAgICAgKHRlc3Q5KToKKyAgICAgICAgKHRl
c3QxMC50ZXN0KToKKyAgICAgICAgKHRlc3QxMCk6CisgICAgICAgICh0ZXN0MTEudGVzdCk6Cisg
ICAgICAgICh0ZXN0MTEpOgorCiAyMDIwLTA1LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBKU0Mgc3RyZXNzIHRlc3RzIHRoYXQgcmVxdWlyZSAtLXVzZUxMSW50
PTAgc2hvdWxkIGJlIHNraXBwZWQgb24gLS1uby1qaXQgdGVzdCBydW5zLgpJbmRleDogSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1s
b29wLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24t
cHJvcGVydHktZm9yLWluLWxvb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAg
ICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAg
aWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBs
ZXQgbyA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAg
ICAgICAgZDo1MAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1s
b29wLWNvcnJlY3RuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24t
cHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1sb29wLWNvcnJlY3RuZXNzLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1s
b29wLWNvcnJlY3RuZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOwor
fQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAg
IGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAo
by5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBv
ID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAg
ICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJh
IikKKyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKG8uaGFzT3du
UHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAg
ICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAor
ICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBh
c3NlcnQoY291bnQobykgPT09IDMpOworICAgIH0KK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRl
c3QzKCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAg
ICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiYSI7CisgICAgICAgICAg
ICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAg
IGxldCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAor
ICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDMoKTsK
KworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBs
ZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJm
IjsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUo
Y291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisg
ICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAwKTsKKyAgICB9
Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChv
KSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAg
ICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHAp
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAs
CisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisg
ICAgbGV0IHAgPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAs
CisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09
PSAwKTsKKyAgICB9Cit9Cit0ZXN0NSgpOworCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBmdW5j
dGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBp
biBvKSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093
blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7Cisg
ICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAK
KyAgICB9OworCisgICAgbGV0IHAgPSB7IH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDApOworICAgIH0KK30KK3Rlc3Q2KCk7CisKK2Z1bmN0aW9uIHRlc3Q3KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8sIG8yKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9y
IChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAobzIuaGFzT3duUHJvcGVydHkocCkpCisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0K
KyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgbyA9IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsK
KyAgICAgICAgICAgIGxldCBvayA9IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBjb3VudChvLCBudWxsKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAg
ICBvayA9IGUudG9TdHJpbmcoKS5pbmRleE9mKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKSA+PSAw
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KG9rKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGFzc2VydChjb3VudChvLCB7fSkgPT09IDApOworICAgICAgICB9Cisg
ICAgfQorfQordGVzdDcoKTsKKworZnVuY3Rpb24gdGVzdDgoKSB7CisgICAgZnVuY3Rpb24gY291
bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgewor
ICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytj
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3Vu
dCk7CisKKyAgICBsZXQgaGFzT3duUHJvcGVydHlDYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgcCA9
IG5ldyBQcm94eSh7YToyMH0sIHsKKyAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC4u
LmFyZ3MpIHsKKyAgICAgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciguLi5hcmdzKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KHApID09PSAxKTsKKyAgICAgICAgYXNzZXJ0KGhhc093
blByb3BlcnR5Q2FsbGVkID09PSB0cnVlKTsKKyAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQg
PSBmYWxzZTsKKyAgICB9Cit9Cit0ZXN0OCgpOworCitmdW5jdGlvbiB0ZXN0OSgpIHsKKyAgICBm
dW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQg
cCBpbiBvKSB7CisgICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5v
SW5saW5lKGNvdW50KTsKKworICAgIGxldCBoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9IGZhbHNlOwor
ICAgIGxldCBvID0geworICAgICAgICBoYXNPd25Qcm9wZXJ0eShwKSB7CisgICAgICAgICAgICBo
YXNPd25Qcm9wZXJ0eUNhbGxlZCA9IHAgPT09ICJhIiB8fCBwID09PSAiaGFzT3duUHJvcGVydHki
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGE6IDQyCisg
ICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFz
c2VydChjb3VudChvKSA9PT0gMik7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9wZXJ0eUNhbGxl
ZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFsc2U7CisgICAg
fQorfQordGVzdDkoKTsKKworZnVuY3Rpb24gdGVzdDEwKCkgeworICAgIGZ1bmN0aW9uIHRlc3Qo
bywgcCkgeworICAgICAgICByZXR1cm4gbz8uaGFzT3duUHJvcGVydHkocCkKKyAgICB9CisgICAg
bm9JbmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYTogNDIKKyAgICB9Owor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRl
c3QobnVsbCwgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0KHRlc3QobywgImEi
KSA9PT0gdHJ1ZSk7CisgICAgfQorfQordGVzdDEwKCk7CisKK2Z1bmN0aW9uIHRlc3QxMSgpIHsK
KyAgICBmdW5jdGlvbiB0ZXN0KG8sIHApIHsKKyAgICAgICAgcmV0dXJuIG8uaGFzT3duUHJvcGVy
dHk/LihwKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAg
ICAgICAgYTogNDIsCisgICAgICAgIGhhc093blByb3BlcnR5OiB1bmRlZmluZWQKKyAgICB9Owor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRl
c3QobywgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICB9Cit9Cit0ZXN0MTEoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBAQAorMjAyMC0w
NS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBoYXNPd25Q
cm9wZXJ0eSBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2Ug
YW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBidXQgZm9yIGhhc093blByb3Bl
cnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIy
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFwcGxpZXMgdGhlIHNhbWUgcHJpbmNpcGxlcyBmcm9tIHIyNjIwODMgYnV0IHRvIGhh
c093blByb3BlcnR5LgorICAgICAgICAKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UgaGF2ZSBh
IGZhc3QgcGF0aCBmb3IgdGhpcyBzeW50YWN0aWMgcGF0dGVybiB3aGVuCisgICAgICAgIGl0ZXJh
dGluZyBzdHJ1Y3R1cmUgcHJvcGVydGllczoKKyAgICAgICAgCisgICAgICAgIGZvciAobGV0IDxw
PiBpbiA8bz4pCisgICAgICAgICAgICBpZiAoPG8+Lmhhc093blByb3BlcnR5KDxwPikpCisgICAg
ICAgIAorICAgICAgICBXZSBsb29rIGZvciBib3RoIDxwPiBhbmQgPG8+IGFzIHJlc29sdmUgbm9k
ZXMsIGFuZCB3ZSBsb29rIGZvciB0aGVtIGJlaW5nIHRoZQorICAgICAgICBzYW1lIHZhbHVlcyBi
b3RoIGluIHRoZSBoZWFkZXIgYW5kIGluc2lkZSB0aGUgYm9keS4KKyAgICAgICAgCisgICAgICAg
IFVzaW5nIGEgc2ltcGxlIHN0YXRpYyBhbmFseXNpcywgd2hlbiB3ZSBkZXRlY3QgdGhpcyBwYXR0
ZXJuLCB3ZSBjb21wYXJlIHRoZQorICAgICAgICByZXN1bHQgb2YgYDxvPi5oYXNPd25Qcm9wZXJ0
eWAgdG8gdGhlIG9yaWdpbmFsIGhhc093blByb3BlcnR5IGZ1bmN0aW9uLiBJZgorICAgICAgICBp
dCdzIHRoZSBzYW1lLCB3ZSBleGVjdXRlIHRoZSBmYXN0IHBhdGggbmV3IGJ5dGVjb2RlIGhhc19z
ZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICAgICAgd2hpY2ggb24gdGhlIGZhc3QgcGF0aCBp
cyB0d28gbG9hZHMsIGEgY29tcGFyZSBhbmQgYnJhbmNoLCBhbmQgYSBtYXRlcmlhbGl6YXRpb24g
b2YKKyAgICAgICAgdGhlIGJvb2xlYW4gY29uc3RhbnQgdHJ1ZS4KKyAgICAgICAgCisgICAgICAg
IE9uIHRoZSBzbG93IHBhdGgsIGhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSBqdXN0IGV4ZWN1
dGVzIHRoZSBydW50aW1lIGNvZGUgCisgICAgICAgIGZvciBoYXNPd25Qcm9wZXJ0eS4KKyAgICAg
ICAgCisgICAgICAgIEluIG15IHRlc3RpbmcsIHRoaXMgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSAz
LTUlIGZhc3RlciBvbiBTcGVlZG9tZXRlciAyJ3MKKyAgICAgICAgcmVhY3Qgc3VidGVzdHMuIEkg
d2FzIGdldHRpbmcgc29tZSBub2lzZSB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGxvY2FsbHksCisg
ICAgICAgIHNvIEkgY2FuJ3Qgc2F5IGZvciBjZXJ0YWluIGl0J3MgYSBkZWZpbml0ZSBzcGVlZHVw
LiBCdXQgdGhlIGRhdGEgaW1wbGllcworICAgICAgICBpdCBoYXMgYSBnb29kIGNoYW5jZSBhdCBi
ZWluZyBhIHNwZWVkdXAuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVjb3JkSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5
SW5Gb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoU3RydWN0dXJlRm9ySW5TY29wZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29u
dGV4dDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFN0
cnVjdHVyZUZvckluQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6U3RydWN0dXJl
Rm9ySW5Db250ZXh0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjpiYXNl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjphZGRIYXNPd25Q
cm9wZXJ0eUp1bXApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9MYWJlbC5oOgorICAgICAgICAo
SlNDOjpHZW5lcmljQm91bmRMYWJlbDo6R2VuZXJpY0JvdW5kTGFiZWwpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvcklu
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1wbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5TdHJ1Y3R1
cmVQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3NlbGZf
c3RydWN0dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX3N0cnVj
dHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rp
b25DYWxsTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAg
ICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Om9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmg6CisKIDIwMjAtMDUtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBzb21lIG5ldyBlbWl0dGVycyB0byB0aGUgWDg2XzY0IGFuZCBBUk02NCBN
YWNyb0Fzc2VtYmxlcnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNz
ZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1h
Y3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CiAjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUyhuYW1lKSBleHRlcm4gSlNfRVhQT1JU
X1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNTeW1ib2w7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJl
dmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEwNSwxNCBAQCBvcCA6aGFzX3N0
cnVjdHVyZV9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAorb3AgOmhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVudW1lcmF0
b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDppbl9zdHJ1Y3R1cmVfcHJvcGVydHks
CiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2
aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDYgKzI0Niw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAgICBVU0VTKE9wR2V0QnlWYWxXaXRoVGhp
cywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZkN1c3Rv
bSwgdmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0b3IpCisgICAgVVNFUyhP
cEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0b3IpCiAg
ICAgVVNFUyhPcEluU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBlbnVtZXJhdG9y
KQogICAgIFVTRVMoT3BDb25zdHJ1Y3RWYXJhcmdzLCBjYWxsZWUsIHRoaXNWYWx1ZSwgYXJndW1l
bnRzKQogICAgIFVTRVMoT3BDYWxsVmFyYXJncywgY2FsbGVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50
cykKQEAgLTM3NSw2ICszNzYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleElt
cGwodW5zCiAgICAgREVGUyhPcEdldEVudW1lcmFibGVMZW5ndGgsIGRzdCkKICAgICBERUZTKE9w
SGFzSW5kZXhlZFByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5
LCBkc3QpCisgICAgREVGUyhPcEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgZHN0KQogICAgIERF
RlMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhhc0dlbmVyaWNQcm9w
ZXJ0eSwgZHN0KQogICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwgZHN0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCShyZXZp
c2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiAgICAgdihBcnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwg
bnVsbHB0cikgXAogICAgIHYoY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihoYXNPd25Q
cm9wZXJ0eUZ1bmN0aW9uLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU4LDYgKzE0NTgsMTkgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bgogICAgIE9wSm5lcVB0cjo6ZW1p
dCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCit1bnNpZ25lZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5
KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCit7CisgICAgT3BKbmVxUHRyOjplbWl0
PE9wY29kZVNpemU6OldpZGUzMj4odGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6aGFzT3duUHJvcGVydHlGdW5jdGlvbiksIHRhcmdldC5i
aW5kKHRoaXMpKTsKKyAgICByZXR1cm4gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlY29yZEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUlu
Rm9ySW5Mb29wKFN0cnVjdHVyZUZvckluQ29udGV4dCYgc3RydWN0dXJlQ29udGV4dCwgdW5zaWdu
ZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoZ2VuZXJpY1BhdGguaXNCb3VuZCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ2VuZXJpY1Bh
dGguaXNGb3J3YXJkKCkpOworICAgIHN0cnVjdHVyZUNvbnRleHQuYWRkSGFzT3duUHJvcGVydHlK
dW1wKGJyYW5jaE9mZnNldCwgZ2VuZXJpY1BhdGgubG9jYXRpb24oKSk7Cit9CisKIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25z
dAogewogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7CkBAIC00MzI4
LDYgKzQzNDEsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIYXNTdAog
ICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKQorewor
ICAgIE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHlOYW1lLCBlbnVtZXJhdG9yKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByb3BlcnR5RW51bWVyYXRvcihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCiB7CiAgICAgT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I6
OmVtaXQodGhpcywgZHN0LCBiYXNlKTsKQEAgLTQ1MTQsMTIgKzQ1MzMsMTIgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0FycgogICAgIH0KIH0KIAotdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdp
c3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdp
c3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBiYXNlUmVnaXN0ZXIp
CiB7CiAgICAgaWYgKCFsb2NhbFJlZ2lzdGVyKQogICAgICAgICByZXR1cm47CiAgICAgdW5zaWdu
ZWQgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAg
bV9mb3JJbkNvbnRleHRTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVGb3JJbkNv
bnRleHQobG9jYWxSZWdpc3RlciwgaW5kZXhSZWdpc3RlciwgcHJvcGVydHlSZWdpc3RlciwgZW51
bWVyYXRvclJlZ2lzdGVyLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkpKTsKKyAgICBtX2Zvcklu
Q29udGV4dFN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChs
b2NhbFJlZ2lzdGVyLCBpbmRleFJlZ2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9y
UmVnaXN0ZXIsIGJhc2VSZWdpc3RlciwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJ
RCogbG9jYWxSZWdpc3RlcikKQEAgLTUyMjIsNiArNTI0MSwyNyBAQCB2b2lkIFN0cnVjdHVyZUZv
ckluQ29udGV4dDo6ZmluYWxpemUoQnl0CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0VHVwbGUg
OiBtX2luSW5zdHMpCiAgICAgICAgIHJld3JpdGVPcDxPcEluU3RydWN0dXJlUHJvcGVydHk+KGdl
bmVyYXRvciwgaW5zdFR1cGxlKTsKIAorICAgIGZvciAoY29uc3QgYXV0byYgaGFzT3duUHJvcGVy
dHlUdXBsZSA6IG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHMpIHsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoT3BKbXApIDw9IHNpemVvZihPcEpuZXFQdHIpKTsKKyAgICAgICAgdW5zaWdu
ZWQgYnJhbmNoSW5zdEluZGV4ID0gc3RkOjpnZXQ8MD4oaGFzT3duUHJvcGVydHlUdXBsZSk7Cisg
ICAgICAgIHVuc2lnbmVkIG5ld1RhcmdldCA9IHN0ZDo6Z2V0PDE+KGhhc093blByb3BlcnR5VHVw
bGUpOworCisgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBnZW5lcmF0b3IubV93cml0ZXIucmVm
KGJyYW5jaEluc3RJbmRleCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluc3RydWN0aW9uLT5p
czxPcEpuZXFQdHI+KCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0cnVjdGlvbi0+aXNX
aWRlMzIoKSk7CisgICAgICAgIGF1dG8gZW5kID0gYnJhbmNoSW5zdEluZGV4ICsgaW5zdHJ1Y3Rp
b24tPnNpemUoKTsKKworICAgICAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhicmFuY2hJbnN0
SW5kZXgpOworCisgICAgICAgIC8vIGRpc2FibGUgcGVlcGhvbGUgb3B0aW1pemF0aW9ucworICAg
ICAgICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBvcF9lbmQ7CisKKyAgICAgICAgT3BKbXA6
OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBCb3VuZExhYmVsKHN0YXRpY19j
YXN0PGludD4obmV3VGFyZ2V0KSAtIHN0YXRpY19jYXN0PGludD4oYnJhbmNoSW5zdEluZGV4KSkp
OworCisgICAgICAgIHdoaWxlIChnZW5lcmF0b3IubV93cml0ZXIucG9zaXRpb24oKSA8IGVuZCkK
KyAgICAgICAgICAgIE9wTm9wOjplbWl0PE9wY29kZVNpemU6Ok5hcnJvdz4oJmdlbmVyYXRvcik7
CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLm1fd3JpdGVyLnNlZWsoZ2VuZXJhdG9yLm1fd3JpdGVy
LnNpemUoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5tX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGdlbmVyYXRvci5tX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZSgpICE9IGdlbmVyYXRvci5tX3dyaXRl
ci5zaXplKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gbGFzdE9wY29k
ZUlEOwpAQCAtNTI3MCw2ICs1MzEwLDIyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRU
b1RoaXMoKQogICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwg
ZWNtYU1vZGUoKSk7CiB9CiAKK1N0cnVjdHVyZUZvckluQ29udGV4dCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpOyBpLS07ICkgewor
ICAgICAgICBGb3JJbkNvbnRleHQmIGNvbnRleHQgPSBtX2ZvckluQ29udGV4dFN0YWNrW2ldLmdl
dCgpOworICAgICAgICBpZiAoY29udGV4dC5sb2NhbCgpICE9IHByb3BlcnR5KQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFjb250ZXh0LmlzU3RydWN0dXJlRm9ySW5Db250
ZXh0KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByZXR1cm4gJmNvbnRleHQuYXNT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksMTggKzIzOSwyMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIEdldEluc3QgPSBz
dGQ6OnR1cGxlPHVuc2lnbmVkLCBpbnQ+OwogICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0
OworICAgICAgICB1c2luZyBIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0ID0gc3RkOjp0dXBsZTx1bnNp
Z25lZCwgdW5zaWduZWQ+OwogCi0gICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3Rl
cklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIHVuc2ln
bmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQorICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkK
ICAgICAgICAgICAgIDogRm9ySW5Db250ZXh0KGxvY2FsUmVnaXN0ZXIsIFR5cGU6OlN0cnVjdHVy
ZUZvckluLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAgICAgICAgICAgICwgbV9pbmRleFJl
Z2lzdGVyKGluZGV4UmVnaXN0ZXIpCiAgICAgICAgICAgICAsIG1fcHJvcGVydHlSZWdpc3Rlcihw
cm9wZXJ0eVJlZ2lzdGVyKQogICAgICAgICAgICAgLCBtX2VudW1lcmF0b3JSZWdpc3RlcihlbnVt
ZXJhdG9yUmVnaXN0ZXIpCisgICAgICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXhSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9yUmVnaXN0ZXIuZ2V0
KCk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZS5n
ZXQoKTsgfQogCiAgICAgICAgIHZvaWQgYWRkR2V0SW5zdCh1bnNpZ25lZCBpbnN0SW5kZXgsIGlu
dCBwcm9wZXJ0eVJlZ0luZGV4KQogICAgICAgICB7CkBAIC0yNjIsMTQgKzI2NSwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1faW5JbnN0cy5hcHBlbmQoSW5JbnN0IHsgaW5zdElu
ZGV4LCBwcm9wZXJ0eVJlZ0luZGV4IH0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhZGRI
YXNPd25Qcm9wZXJ0eUp1bXAodW5zaWduZWQgYnJhbmNoSW5zdEluZGV4LCB1bnNpZ25lZCBnZW5l
cmljUGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYXNPd25Qcm9wZXJ0eUp1
bXBJbnN0cy5hcHBlbmQoSGFzT3duUHJvcGVydHlKdW1wSW5zdCB7IGJyYW5jaEluc3RJbmRleCwg
Z2VuZXJpY1BhdGhUYXJnZXQgfSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGZpbmFsaXpl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCB1bnNpZ25l
ZCBib2R5Qnl0ZWNvZGVFbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG1faW5kZXhSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IG1fcHJvcGVydHlSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fZW51bWVy
YXRvclJlZ2lzdGVyOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9iYXNlOwogICAgICAg
ICBWZWN0b3I8R2V0SW5zdD4gbV9nZXRJbnN0czsKICAgICAgICAgVmVjdG9yPEluSW5zdD4gbV9p
bkluc3RzOworICAgICAgICBWZWN0b3I8SGFzT3duUHJvcGVydHlKdW1wSW5zdD4gbV9oYXNPd25Q
cm9wZXJ0eUp1bXBJbnN0czsKICAgICB9OwogCiAgICAgY2xhc3MgSW5kZXhlZEZvckluQ29udGV4
dCA6IHB1YmxpYyBGb3JJbkNvbnRleHQgewpAQCAtNjY1LDYgKzY3NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgaG9pc3RTbG9wcHlNb2RlRnVuY3Rpb25JZk5lY2Vzc2FyeShj
b25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUpOwogCisgICAgICAgIFN0cnVjdHVyZUZvcklu
Q29udGV4dCogZmluZFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3RlcklEKiBwcm9wZXJ0eSk7
CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9u
SW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZERpdm90KTsKICAgICBwdWJsaWM6CkBAIC04NzAsNiArODgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5v
dEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CisgICAgICAg
IHVuc2lnbmVkIGVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3Rl
cklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCByZWNvcmRIYXNTZWxmU3Ry
dWN0dXJlUHJvcGVydHlJbkZvckluTG9vcChTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmLCB1bnNpZ25l
ZCBicmFuY2hPZmZzZXQsIExhYmVsJiBnZW5lcmljUGF0aCk7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQmluT3AsIHR5cGVuYW1lIEptcE9wPgogICAgICAgICBib29sIGZ1c2VDb21wYXJl
QW5kSnVtcChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0LCBib29sIHN3YXBPcGVyYW5k
cyA9IGZhbHNlKTsKQEAgLTg4Miw2ICs4OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SGFzSW5kZXhlZFByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEhhc1N0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSwg
UmVnaXN0ZXJJRCogZW51bWVyYXRvcik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRIYXNHZW5l
cmljUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlFbnVt
ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRFbnVtZXJhYmxlTGVuZ3RoKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSk7CkBAIC0xMDEwLDcgKzEwMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIHB1c2hJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJ
RCogaW5kZXgpOwogICAgICAgICB2b2lkIHBvcEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQq
IGxvY2FsKTsKLSAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklE
KiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yKTsKKyAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShS
ZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5
LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlKTsKICAgICAgICAgdm9p
ZCBwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsKTsKIAogICAgICAgICBM
YWJlbFNjb3BlKiBicmVha1RhcmdldChjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9MYWJlbC5oCShyZXZpc2lvbiAyNjIxNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDEwICs1MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV90
YXJnZXQoMCkKICAgICAgICAgeyB9CiAKLSAgICAgICAgZXhwbGljaXQgR2VuZXJpY0JvdW5kTGFi
ZWwoaW50IHRhcmdldCkKKyAgICAgICAgZXhwbGljaXQgR2VuZXJpY0JvdW5kTGFiZWwoaW50IG9m
ZnNldCkKICAgICAgICAgICAgIDogbV90eXBlKE9mZnNldCkKICAgICAgICAgICAgICwgbV9nZW5l
cmF0b3IobnVsbHB0cikKLSAgICAgICAgICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgICAgICAg
ICAgLCBtX3RhcmdldChvZmZzZXQpCiAgICAgICAgIHsgfQogCiAgICAgICAgIEdlbmVyaWNCb3Vu
ZExhYmVsKEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW5lcmF0b3IsIExhYmVsKiBsYWJlbCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyOCw2ICsxODI4LDU4
IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICByZXR1cm4g
cmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEhhc093blByb3BlcnR5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUg
PSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CisKKyAgICBpZiAobV9iYXNlLT5p
c09wdGlvbmFsQ2hhaW5CYXNlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0aW9uYWxDaGVj
ayhiYXNlLmdldCgpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhw
cmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkp
OworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSk7CisgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2Uo
KSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsK
KworICAgIFJFTEVBU0VfQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwciAmJiAhbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOyAgCisgICAgRXhw
cmVzc2lvbk5vZGUqIGFyZ3VtZW50ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHI7CisgICAg
UkVMRUFTRV9BU1NFUlQoYXJndW1lbnQtPmlzUmVzb2x2ZU5vZGUoKSk7CisgICAgU3RydWN0dXJl
Rm9ySW5Db250ZXh0KiBzdHJ1Y3R1cmVDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBWYXJpYWJsZSBh
cmd1bWVudFZhcmlhYmxlID0gZ2VuZXJhdG9yLnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oYXJndW1lbnQpLT5pZGVudGlmaWVyKCkpOworICAgIGlmIChhcmd1bWVudFZhcmlhYmxl
LmlzTG9jYWwoKSkgeworICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGFyZ3VtZW50VmFy
aWFibGUubG9jYWwoKTsKKyAgICAgICAgc3RydWN0dXJlQ29udGV4dCA9IGdlbmVyYXRvci5maW5k
U3RydWN0dXJlRm9ySW5Db250ZXh0KHByb3BlcnR5KTsKKyAgICB9CisKKyAgICBpZiAoc3RydWN0
dXJlQ29udGV4dCAmJiBzdHJ1Y3R1cmVDb250ZXh0LT5iYXNlKCkgPT0gYmFzZS5nZXQoKSkgewor
ICAgICAgICBSZWY8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAg
ICAgIFJlZjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisKKyAgICAgICAgdW5z
aWduZWQgYnJhbmNoSW5zbk9mZnNldCA9IGdlbmVyYXRvci5lbWl0V2lkZUp1bXBJZk5vdEZ1bmN0
aW9uSGFzT3duUHJvcGVydHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkocmV0dXJuVmFsdWUuZ2V0
KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbWl0Tm9kZShhcmd1bWVudCksIHN0cnVjdHVyZUNv
bnRleHQtPmVudW1lcmF0b3IoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAg
ICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJ
blRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKKworICAgICAgICBnZW5lcmF0b3IucmVjb3JkSGFzU2Vs
ZlN0cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoKnN0cnVjdHVyZUNvbnRleHQsIGJyYW5jaElu
c25PZmZzZXQsIHJlYWxDYWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICBnZW5lcmF0b3IubW92
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Olllcyk7CisgICAgfQorCisgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7Cit9CisKIHN0YXRp
YyBib29sIGFyZVRyaXZpYWxBcHBseUFyZ3VtZW50cyhBcmd1bWVudHNOb2RlKiBhcmdzKQogewog
ICAgIHJldHVybiAhYXJncy0+bV9saXN0Tm9kZSB8fCAhYXJncy0+bV9saXN0Tm9kZS0+bV9leHBy
IHx8ICFhcmdzLT5tX2xpc3ROb2RlLT5tX25leHQKQEAgLTM2OTUsMTEgKzM3NDcsMTAgQEAgdm9p
ZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgIGlmIChtX2xleHByLT5p
c0Fzc2lnblJlc29sdmVOb2RlKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2xleHByKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBs
ZW5ndGg7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVudW1lcmF0b3I7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoYmFzZS5nZXQoKSwgbV9leHByKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCkBAIC0zNzc3LDcgKzM4MjgsNyBAQCB2b2lk
IEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJTdGFydE9mZnNldCk7CiAKLSAgICAgICAg
Z2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpLCBlbnVtZXJhdG9y
SW5kZXguZ2V0KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgZW51bWVyYXRvci5nZXQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5wdXNoU3RydWN0dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVy
YXRvckluZGV4LmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGJh
c2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7
CiAgICAgICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTE1LDYgKzQxMTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEluU3RydWN0dXJl
UHJvcGVydHk6CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBI
YXNTdHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICBjbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
NjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgyNCw2ICs3ODI0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9oYXNfc2Vs
Zl9zdHJ1Y3R1cmVfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5PigpOworICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9iYXNlKSwKKyAgICAgICAgICAg
ICAgICBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSksCisgICAgICAgICAgICAgICAgZ2V0KGJ5dGVj
b2RlLm1fZW51bWVyYXRvcikpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19zZWxm
X3N0cnVjdHVyZV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2luX3N0
cnVjdHVyZV9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5PigpOwogICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluU3RydWN0dXJlUHJvcGVydHksCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6
CiAgICAgY2FzZSBvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eToKICAgICBjYXNlIG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHk6CisgICAgY2FzZSBvcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHk6
CiAgICAgY2FzZSBvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfaW5k
ZXhlZF9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2dldF9kaXJlY3RfcG5hbWU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjYyMTY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToK
ICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVy
ZVByb3BlcnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEdldFBy
b3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTcsNiArMjk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAg
Y2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eToKICAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBJbkJ5SWQ6CiAg
ICAgY2FzZSBJbkJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTc5LDkgKzIxNzksMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDMoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OiB7
CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEtub3duU3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlz
aW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDkwLDYgKzQ5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICAvKiBNdXN0IGdlbmVyYXRlIGJlY2F1c2Ugb2YgUHJveGllcyBvbiB0aGUg
cHJvdG90eXBlIGNoYWluICovIFwKICAgICBtYWNybyhIYXNJbmRleGVkUHJvcGVydHksIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oSGFzU3RydWN0dXJlUHJvcGVydHksIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFj
cm8oSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5LCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhJblN0cnVjdHVyZVByb3BlcnR5LCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhIYXNHZW5lcmljUHJvcGVydHks
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oR2V0RGlyZWN0UG5hbWUsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjIxNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjc0LDcgKzIyNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JblN0cnVj
dHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwg
SlNDZWxsKiBwcm9wZXJ0eSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SW5TdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjI4Myw2ICsyMjgzLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5KSkpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTU3RyaW5n
KiBwcm9wZXJ0eSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0
eShnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKK30KKwogc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlQ2VsbCwgaW50MzJfdCBzdWJzY3JpcHQsIGludDMy
X3QgaW50ZXJuYWxNZXRob2RUeXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZp
c2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBl
T2ZPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCopOwotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiwgSlNDZWxsKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTU3Ry
aW5nKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJl
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU1N0cmluZyopOwogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqLCBpbnQzMl90LCBpbnQzMl90KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJh
dG9yQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA2LDYg
KzEyMDYsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzR2VuZXJpY1By
b3BlcnR5OgogICAgICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgICAgICBjYXNl
IEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3Bl
cnR5OgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw2
ICs2MTgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3RoOgogICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5Ogog
ICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJl
UHJvcGVydHk6CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgR2V0RGly
ZWN0UG5hbWU6CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNTcsNiArNDA1NywxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVI
YXNTdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2UgSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVIYXNTZWxmU3Ry
dWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIElu
U3RydWN0dXJlUHJvcGVydHk6IHsKICAgICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHko
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTg4LDYgKzQ5ODgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eTog
eworICAgICAgICBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OiB7CiAgICAgICAg
IGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4MTgsMTUgKzEyODE4LDEzIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNTdHJ1Y3R1cmUKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZW51bWVyYXRvci5ncHIoKSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpj
YWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSkpOwogCiAgICAgbW92ZVRydWVUbyhyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKLQotICAgIGRvbmUubGluaygmbV9qaXQpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHdyb25nU3RydWN0dXJlLCB0aGlzLCBvcGVyYXRpb25IYXNHZW5lcmlj
UHJvcGVydHksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgcHJvcGVydHlHUFIpKTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJblN0
cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1w
bChOb2RlKiBub2RlLCBGdW5jdGlvbiBzbG93UGF0aCkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMjg0NSwxNCArMTI4NDMsMjEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0dXJlUAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yLmdwcigpLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7CiAKICAgICBtb3ZlVHJ1ZVRvKHJl
c3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOwotCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKLSAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwod3JvbmdTdHJ1Y3R1cmUsIHRoaXMsIG9wZXJhdGlvbklu
U3RydWN0dXJlUHJvcGVydHksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgc2xvd1BhdGgsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOwogICAgIGJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKiBu
b2RlKQoreworICAgIGNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHlJbXBsKG5vZGUsIG9w
ZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisgICAgY29tcGls
ZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwobm9kZSwgb3BlcmF0aW9uSW5TdHJ1Y3R1cmVQ
cm9wZXJ0eSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVu
dW1lcmF0b3IoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Nyw2ICsxNDQ3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSGFz
U3RydWN0dXJlUHJvcGVydHkoTm9kZSopOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlv
bj4KKyAgICB2b2lkIGNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHlJbXBsKE5vZGUqLCBG
dW5jdGlvbik7CisgICAgdm9pZCBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RQbmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0UHJvcGVy
dHlFbnVtZXJhdG9yKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDYg
KzI4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICBj
YXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVyZVByb3Bl
cnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEhhc0luZGV4ZWRQ
cm9wZXJ0eToKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDc3LDYgKzE0NzcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEhhc1N0cnVj
dHVyZVByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVy
dHk6CisgICAgICAgICAgICBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgICAg
ICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTIyODYsNiArMTIyODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGlsZUhhc1N0cnVj
dHVyZVByb3BlcnR5SW1wbChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25I
YXNHZW5lcmljUHJvcGVydHkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUhhc1NlbGZTdHJ1
Y3R1cmVQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVy
dHlJbXBsKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG9wZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1
cmVQcm9wZXJ0eSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0
eSgpCiAgICAgewogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSksIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjAsNiArNDYw
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X3RvX2FyZ3VtZW50cykKIAogICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX2hhc19zZWxmX3N0cnVjdHVyZV9w
cm9wZXJ0eSkKICAgICAgICAgREVGSU5FX09QKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2RpcmVjdF9wbmFtZSkKQEAgLTYxNyw2ICs2MTgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChu
c3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9kaXJlY3RfcG5h
bWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19zdHJ1Y3R1cmVfcHJvcGVy
dHkpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19zZWxmX3N0cnVjdHVyZV9w
cm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5fc3RydWN0dXJlX3By
b3BlcnR5KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChyZXNvbHZlX3Njb3BlKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgorICAgICAgICB2b2lkIGVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfaW5kZXhl
ZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X2RpcmVjdF9wbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMxLDkgKzExMzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNv
bnN0IEluc3RydQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordGVtcGxhdGUgPHR5cGVuYW1lIE9wQ29kZVR5cGU+Cit2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KCk7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDb2RlVHlwZT4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRl
Y29kZS5tX2VudW1lcmF0b3I7CkBAIC0xMTUwLDIzICsxMTUxLDE5IEBAIHZvaWQgSklUOjplbWl0
X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0dXJl
UHJvcGVydHk+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owot
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1YWxS
ZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotCi0gICAgZW1pdExv
YWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSk7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcEhhc1N0cnVj
dHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQogCi0gICAgZW1pdExvYWRQYXls
b2FkKGVudW1lcmF0b3IsIHJlZ1QxKTsKK3ZvaWQgSklUOjplbWl0X29wX2hhc19zZWxmX3N0cnVj
dHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTZWxmU3RydWN0dXJl
UHJvcGVydHk+KGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CiAKLSAgICBsb2FkMzIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgQWRkcmVzcyhyZWdUMSwgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSkpOwotICAgIAotICAgIG1v
dmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1Qw
KTsKK3ZvaWQgSklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eUltcGw8T3BJblN0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1NCw5ICsxMzU0LDExIEBAIHZvaWQgSklUOjpl
bWl0X29wX25ld19hcnJheV93aXRoX3NpemUoY28KIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi12
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgor
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ29kZVR5cGU+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0
ZWNvZGUubV9lbnVtZXJhdG9yOwpAQCAtMTM3MiwyMiArMTM3NCwxOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0
dXJlUHJvcGVydHk+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1
YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOworICAgIGVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4oY3Vy
cmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
cmVnVDApOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZW51bWVyYXRvciwgcmVnVDEpOwot
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Cit2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJ
bXBsPE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQog
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIEFkZHJl
c3MocmVnVDEsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZz
ZXQoKSkpKTsKLSAgICAKLSAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKSksIHJlZ1QwKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHlJbXBsPE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBh
cnJheU1vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTI4NjgsNiArMjg2OCwxMCBAQCBsbGludE9wV2l0aFJldHVybihvcF9oYXNfc3RydWN0
dXJlX3Byb3BlCiAgICAgaGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0
Y2gsICByZXR1cm4sIF9zbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKIAor
bGxpbnRPcFdpdGhSZXR1cm4ob3BfaGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5LCBPcEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
KyAgICBoYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgIHJldHVy
biwgX3Nsb3dfcGF0aF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQpCisKIGxsaW50
T3BXaXRoUmV0dXJuKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3Bl
cnR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGhhc1N0cnVjdHVy
ZVByb3BlcnR5SW1wbChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2lu
X3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI2MjE2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTc3Miw2ICsxNzcyLDcgQEAgc2xvd1BhdGhPcChoYXNfaW5kZXhl
ZF9wcm9wZXJ0eSkKIAogaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eSkKKyAgICBzbG93UGF0aE9wKGhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0
eSkKICAgICBzbG93UGF0aE9wKGluX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZAogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMjYyMTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NDQsNiArMTQ0NCwxOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAgICAgaWYgKCFkb3Qt
PmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90
LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQogICAgICAgICAgICAgbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICB9IGVsc2UgaWYgKCFwcmV2aW91
c0Jhc2VXYXNTdXBlciAKKyAgICAgICAgJiYgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9w
ZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eQorICAgICAgICAmJiBhcmdzLT5tX2xpc3ROb2RlCisg
ICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcgorICAgICAgICAmJiBhcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKQorICAgICAgICAmJiAhYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0CisgICAgICAgICYmIGRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkKKyAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZp
ZXIoKSAhPSAiUmVmbGVjdCIpIHsKKyAgICAgICAgLy8gV2UgbWF0Y2ggdGhlIEFTVCBwYXR0ZXJu
OgorICAgICAgICAvLyA8cmVzb2x2ZU5vZGU+Lmhhc093blByb3BlcnR5KDxyZXNvbHZlTm9kZT4p
CisgICAgICAgIC8vIGkuZToKKyAgICAgICAgLy8gby5oYXNPd25Qcm9wZXJ0eShwKQorICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICB9CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw2ICs0
NDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBIYXNP
d25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgUG9zdGZpeE5vZGU6OlBvc3RmaXhO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBPcGVyYXRvciBvcGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAg
ICAgICAgIDogUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgb3BlciwgZGl2b3QsIGRpdm90U3Rh
cnQsIGRpdm90RW5kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxMSw2ICsxMDExLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzaXplX3QgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHk7CiAgICAg
fTsKIAorICAgIGNsYXNzIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6
IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEhhc093
blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBmaW5hbDsKKyAgICB9OworCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA2Myw2ICsxMDYzLDI3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfc3RydWN0
dXJlX3AKICAgICBSRVRVUk4oanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KSkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3Nl
bGZfc3RydWN0dXJlX3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICBKU1ZhbHVlIGJh
c2UgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1Zh
bHVlKCkuYXNDZWxsKCkpOworICAgIGlmIChiYXNlLmlzQ2VsbCgpICYmIGJhc2UuYXNDZWxsKCkt
PnN0cnVjdHVyZSh2bSktPmlkKCkgPT0gZW51bWVyYXRvci0+Y2FjaGVkU3RydWN0dXJlSUQoKSkK
KyAgICAgICAgUkVUVVJOKGpzQm9vbGVhbih0cnVlKSk7CisjZW5kaWYKKworICAgIEpTVmFsdWUg
cHJvcGVydHkgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOworICAgIFJFTEVB
U0VfQVNTRVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBh
c1N0cmluZyhwcm9wZXJ0eSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRl
bnRpZmllcihnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisgICAgUkVU
VVJOKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3Qs
IGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
X3N0cnVjdHVyZV9wcm9wZXJ0eSkKIHsKICAgICBCRUdJTigpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2MjE2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTQsNiArMjU0LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90b19wcm9wZQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZW51
bWVyYWJsZV9sZW5ndGgpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfZ2Vu
ZXJpY19wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfc2Vs
Zl9zdHJ1Y3R1cmVfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9p
bl9zdHJ1Y3R1cmVfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9o
YXNfaW5kZXhlZF9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9kaXJlY3RfcG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQ5LDYgKzEwNDksMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKIAorICAg
IHsKKyAgICAgICAgSlNWYWx1ZSBoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihvYmplY3RQcm90b3R5cGUoKS0+Z2V0KHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmhh
c093blByb3BlcnR5KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhanNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIGhhc093blByb3BlcnR5RnVuY3Rpb24pKTsKKyAgICAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aGFz
T3duUHJvcGVydHlGdW5jdGlvbildLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPiho
YXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSk7CisgICAgfQorCiAjZGVmaW5lIElOSVRfUFJJVkFURV9H
TE9CQUwoZnVuY05hbWUsIGNvZGUpIFwKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpmdW5jTmFtZSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeyBcCiAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
cik7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMzMgKzg0
LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlT2JqKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK2Jvb2wgb2JqZWN0UHJvdG90eXBlSGFz
T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRo
aXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCi0gICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgSGFzT3duUHJv
cGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlDYWNoZSA9IHZtLmVuc3VyZUhhc093blByb3BlcnR5
Q2FjaGUoKTsKICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJvcGVydHlD
YWNoZS0+Z2V0KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBBU1NFUlQoKnJl
c3VsdCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSkpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbigqcmVzdWx0KSk7CisgICAgICAgIHJldHVybiAq
cmVzdWx0OwogICAgIH0KIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgYm9vbCBy
ZXN1bHQgPSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgaGFz
T3duUHJvcGVydHlDYWNoZS0+dHJ5QWRkKHZtLCBzbG90LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SlNWYWx1ZSBiYXNlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihv
YmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5
TmFtZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw1ICs1MSw2
IEBAIHByaXZhdGU6CiB9OwogCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Citib29sIG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400349</attachid>
            <date>2020-05-27 10:31:46 -0700</date>
            <delta_ts>2020-05-27 12:03:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>64549</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIxNzYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTI2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGhhc093blByb3BlcnR5IGluc2lkZSBzdHJ1Y3R1cmUgcHJvcGVydHkg
Zm9yLWluIGxvb3Agc2hvdWxkIHVzZSBhbiBvcGNvZGUgbGlrZSBoYXNfc3RydWN0dXJlX3Byb3Bl
cnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjI0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9y
LWluLWxvb3AuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNv
dW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3MvaGFzLW93bi1wcm9wZXJ0
eS1zdHJ1Y3R1cmUtZm9yLWluLWxvb3AtY29ycmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAg
ICAgKHRlc3QyLmNvdW50KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLmNvdW50
KToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3Q0LmNvdW50KToKKyAgICAgICAgKHRl
c3Q0KToKKyAgICAgICAgKHRlc3Q1LmNvdW50KToKKyAgICAgICAgKHRlc3Q1KToKKyAgICAgICAg
KHRlc3Q2LmNvdW50KToKKyAgICAgICAgKHRlc3Q2KToKKyAgICAgICAgKHRlc3Q3LmNvdW50KToK
KyAgICAgICAgKHRlc3Q3KToKKyAgICAgICAgKHRlc3Q4LmNvdW50KToKKyAgICAgICAgKHRlc3Q4
KToKKyAgICAgICAgKHRlc3Q5LmNvdW50KToKKyAgICAgICAgKHRlc3Q5KToKKyAgICAgICAgKHRl
c3QxMC50ZXN0KToKKyAgICAgICAgKHRlc3QxMCk6CisgICAgICAgICh0ZXN0MTEudGVzdCk6Cisg
ICAgICAgICh0ZXN0MTEpOgorCiAyMDIwLTA1LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBKU0Mgc3RyZXNzIHRlc3RzIHRoYXQgcmVxdWlyZSAtLXVzZUxMSW50
PTAgc2hvdWxkIGJlIHNraXBwZWQgb24gLS1uby1qaXQgdGVzdCBydW5zLgpJbmRleDogSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1s
b29wLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24t
cHJvcGVydHktZm9yLWluLWxvb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cjsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAg
ICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAg
aWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBs
ZXQgbyA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAg
ICAgICAgZDo1MAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1s
b29wLWNvcnJlY3RuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24t
cHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1sb29wLWNvcnJlY3RuZXNzLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1s
b29wLWNvcnJlY3RuZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOwor
fQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAg
IGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAo
by5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBv
ID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAg
ICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVu
Y3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJh
IikKKyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKG8uaGFzT3du
UHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAg
ICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAor
ICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBh
c3NlcnQoY291bnQobykgPT09IDMpOworICAgIH0KK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRl
c3QzKCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAg
ICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiYSI7CisgICAgICAgICAg
ICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAg
IGxldCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAor
ICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDMoKTsK
KworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBs
ZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJm
IjsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUo
Y291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisg
ICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAwKTsKKyAgICB9
Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChv
KSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAg
ICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHAp
KQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAg
ICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAs
CisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisg
ICAgbGV0IHAgPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAs
CisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09
PSAwKTsKKyAgICB9Cit9Cit0ZXN0NSgpOworCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBmdW5j
dGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBp
biBvKSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093
blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7Cisg
ICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAK
KyAgICB9OworCisgICAgbGV0IHAgPSB7IH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQo
bykgPT09IDApOworICAgIH0KK30KK3Rlc3Q2KCk7CisKK2Z1bmN0aW9uIHRlc3Q3KCkgeworICAg
IGZ1bmN0aW9uIGNvdW50KG8sIG8yKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9y
IChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAobzIuaGFzT3duUHJvcGVydHkocCkpCisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0K
KyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgbyA9IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsK
KyAgICAgICAgICAgIGxldCBvayA9IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBjb3VudChvLCBudWxsKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAg
ICBvayA9IGUudG9TdHJpbmcoKS5pbmRleE9mKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKSA+PSAw
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KG9rKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGFzc2VydChjb3VudChvLCB7fSkgPT09IDApOworICAgICAgICB9Cisg
ICAgfQorfQordGVzdDcoKTsKKworZnVuY3Rpb24gdGVzdDgoKSB7CisgICAgZnVuY3Rpb24gY291
bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgewor
ICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytj
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3Vu
dCk7CisKKyAgICBsZXQgaGFzT3duUHJvcGVydHlDYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgcCA9
IG5ldyBQcm94eSh7YToyMH0sIHsKKyAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC4u
LmFyZ3MpIHsKKyAgICAgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciguLi5hcmdzKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KHApID09PSAxKTsKKyAgICAgICAgYXNzZXJ0KGhhc093
blByb3BlcnR5Q2FsbGVkID09PSB0cnVlKTsKKyAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQg
PSBmYWxzZTsKKyAgICB9Cit9Cit0ZXN0OCgpOworCitmdW5jdGlvbiB0ZXN0OSgpIHsKKyAgICBm
dW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQg
cCBpbiBvKSB7CisgICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5v
SW5saW5lKGNvdW50KTsKKworICAgIGxldCBoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9IGZhbHNlOwor
ICAgIGxldCBvID0geworICAgICAgICBoYXNPd25Qcm9wZXJ0eShwKSB7CisgICAgICAgICAgICBo
YXNPd25Qcm9wZXJ0eUNhbGxlZCA9IHAgPT09ICJhIiB8fCBwID09PSAiaGFzT3duUHJvcGVydHki
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGE6IDQyCisg
ICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFz
c2VydChjb3VudChvKSA9PT0gMik7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9wZXJ0eUNhbGxl
ZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFsc2U7CisgICAg
fQorfQordGVzdDkoKTsKKworZnVuY3Rpb24gdGVzdDEwKCkgeworICAgIGZ1bmN0aW9uIHRlc3Qo
bywgcCkgeworICAgICAgICByZXR1cm4gbz8uaGFzT3duUHJvcGVydHkocCkKKyAgICB9CisgICAg
bm9JbmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYTogNDIKKyAgICB9Owor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRl
c3QobnVsbCwgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0KHRlc3QobywgImEi
KSA9PT0gdHJ1ZSk7CisgICAgfQorfQordGVzdDEwKCk7CisKK2Z1bmN0aW9uIHRlc3QxMSgpIHsK
KyAgICBmdW5jdGlvbiB0ZXN0KG8sIHApIHsKKyAgICAgICAgcmV0dXJuIG8uaGFzT3duUHJvcGVy
dHk/LihwKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAg
ICAgICAgYTogNDIsCisgICAgICAgIGhhc093blByb3BlcnR5OiB1bmRlZmluZWQKKyAgICB9Owor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRl
c3QobywgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICB9Cit9Cit0ZXN0MTEoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBAQAorMjAyMC0w
NS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBoYXNPd25Q
cm9wZXJ0eSBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2Ug
YW4gb3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBidXQgZm9yIGhhc093blByb3Bl
cnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIy
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFwcGxpZXMgdGhlIHNhbWUgcHJpbmNpcGxlcyBmcm9tIHIyNjIwODMgYnV0IHRvIGhh
c093blByb3BlcnR5LgorICAgICAgICAKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UgaGF2ZSBh
IGZhc3QgcGF0aCBmb3IgdGhpcyBzeW50YWN0aWMgcGF0dGVybiB3aGVuCisgICAgICAgIGl0ZXJh
dGluZyBzdHJ1Y3R1cmUgcHJvcGVydGllczoKKyAgICAgICAgCisgICAgICAgIGZvciAobGV0IDxw
PiBpbiA8bz4pCisgICAgICAgICAgICBpZiAoPG8+Lmhhc093blByb3BlcnR5KDxwPikpCisgICAg
ICAgIAorICAgICAgICBXZSBsb29rIGZvciBib3RoIDxwPiBhbmQgPG8+IGFzIHJlc29sdmUgbm9k
ZXMsIGFuZCB3ZSBsb29rIGZvciB0aGVtIGJlaW5nIHRoZQorICAgICAgICBzYW1lIHZhbHVlcyBi
b3RoIGluIHRoZSBoZWFkZXIgYW5kIGluc2lkZSB0aGUgYm9keS4KKyAgICAgICAgCisgICAgICAg
IFVzaW5nIGEgc2ltcGxlIHN0YXRpYyBhbmFseXNpcywgd2hlbiB3ZSBkZXRlY3QgdGhpcyBwYXR0
ZXJuLCB3ZSBjb21wYXJlIHRoZQorICAgICAgICByZXN1bHQgb2YgYDxvPi5oYXNPd25Qcm9wZXJ0
eWAgdG8gdGhlIG9yaWdpbmFsIGhhc093blByb3BlcnR5IGZ1bmN0aW9uLiBJZgorICAgICAgICBp
dCdzIHRoZSBzYW1lLCB3ZSBleGVjdXRlIHRoZSBmYXN0IHBhdGggbmV3IGJ5dGVjb2RlIGhhc19z
ZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICAgICAgd2hpY2ggb24gdGhlIGZhc3QgcGF0aCBp
cyB0d28gbG9hZHMsIGEgY29tcGFyZSBhbmQgYnJhbmNoLCBhbmQgYSBtYXRlcmlhbGl6YXRpb24g
b2YKKyAgICAgICAgdGhlIGJvb2xlYW4gY29uc3RhbnQgdHJ1ZS4KKyAgICAgICAgCisgICAgICAg
IE9uIHRoZSBzbG93IHBhdGgsIGhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSBqdXN0IGV4ZWN1
dGVzIHRoZSBydW50aW1lIGNvZGUgCisgICAgICAgIGZvciBoYXNPd25Qcm9wZXJ0eS4KKyAgICAg
ICAgCisgICAgICAgIEluIG15IHRlc3RpbmcsIHRoaXMgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSAz
LTUlIGZhc3RlciBvbiBTcGVlZG9tZXRlciAyJ3MKKyAgICAgICAgcmVhY3Qgc3VidGVzdHMuIEkg
d2FzIGdldHRpbmcgc29tZSBub2lzZSB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGxvY2FsbHksCisg
ICAgICAgIHNvIEkgY2FuJ3Qgc2F5IGZvciBjZXJ0YWluIGl0J3MgYSBkZWZpbml0ZSBzcGVlZHVw
LiBCdXQgdGhlIGRhdGEgaW1wbGllcworICAgICAgICBpdCBoYXMgYSBnb29kIGNoYW5jZSBhdCBi
ZWluZyBhIHNwZWVkdXAuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVjb3JkSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5
SW5Gb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoU3RydWN0dXJlRm9ySW5TY29wZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29u
dGV4dDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFN0
cnVjdHVyZUZvckluQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6U3RydWN0dXJl
Rm9ySW5Db250ZXh0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjpiYXNl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjphZGRIYXNPd25Q
cm9wZXJ0eUp1bXApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9MYWJlbC5oOgorICAgICAgICAo
SlNDOjpHZW5lcmljQm91bmRMYWJlbDo6R2VuZXJpY0JvdW5kTGFiZWwpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvcklu
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1wbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5TdHJ1Y3R1
cmVQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3NlbGZf
c3RydWN0dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX3N0cnVj
dHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rp
b25DYWxsTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAg
ICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Om9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmg6CisKIDIwMjAtMDUtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBzb21lIG5ldyBlbWl0dGVycyB0byB0aGUgWDg2XzY0IGFuZCBBUk02NCBN
YWNyb0Fzc2VtYmxlcnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNz
ZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1h
Y3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CiAjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUyhuYW1lKSBleHRlcm4gSlNfRVhQT1JU
X1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNTeW1ib2w7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJl
dmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEwNSwxNCBAQCBvcCA6aGFzX3N0
cnVjdHVyZV9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAorb3AgOmhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVudW1lcmF0
b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDppbl9zdHJ1Y3R1cmVfcHJvcGVydHks
CiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2
aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDYgKzI0Niw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAgICBVU0VTKE9wR2V0QnlWYWxXaXRoVGhp
cywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZkN1c3Rv
bSwgdmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0b3IpCisgICAgVVNFUyhP
cEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIGVudW1lcmF0b3IpCiAg
ICAgVVNFUyhPcEluU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBlbnVtZXJhdG9y
KQogICAgIFVTRVMoT3BDb25zdHJ1Y3RWYXJhcmdzLCBjYWxsZWUsIHRoaXNWYWx1ZSwgYXJndW1l
bnRzKQogICAgIFVTRVMoT3BDYWxsVmFyYXJncywgY2FsbGVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50
cykKQEAgLTM3NSw2ICszNzYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleElt
cGwodW5zCiAgICAgREVGUyhPcEdldEVudW1lcmFibGVMZW5ndGgsIGRzdCkKICAgICBERUZTKE9w
SGFzSW5kZXhlZFByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5
LCBkc3QpCisgICAgREVGUyhPcEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgZHN0KQogICAgIERF
RlMoT3BJblN0cnVjdHVyZVByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhhc0dlbmVyaWNQcm9w
ZXJ0eSwgZHN0KQogICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwgZHN0KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCShyZXZp
c2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiAgICAgdihBcnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwg
bnVsbHB0cikgXAogICAgIHYoY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihoYXNPd25Q
cm9wZXJ0eUZ1bmN0aW9uLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU4LDYgKzE0NTgsMTkgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bgogICAgIE9wSm5lcVB0cjo6ZW1p
dCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCit1bnNpZ25lZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5
KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCit7CisgICAgT3BKbmVxUHRyOjplbWl0
PE9wY29kZVNpemU6OldpZGUzMj4odGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6aGFzT3duUHJvcGVydHlGdW5jdGlvbiksIHRhcmdldC5i
aW5kKHRoaXMpKTsKKyAgICByZXR1cm4gbV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlY29yZEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUlu
Rm9ySW5Mb29wKFN0cnVjdHVyZUZvckluQ29udGV4dCYgc3RydWN0dXJlQ29udGV4dCwgdW5zaWdu
ZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoZ2VuZXJpY1BhdGguaXNCb3VuZCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ2VuZXJpY1Bh
dGguaXNGb3J3YXJkKCkpOworICAgIHN0cnVjdHVyZUNvbnRleHQuYWRkSGFzT3duUHJvcGVydHlK
dW1wKGJyYW5jaE9mZnNldCwgZ2VuZXJpY1BhdGgubG9jYXRpb24oKSk7Cit9CisKIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25z
dAogewogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7CkBAIC00MzI4
LDYgKzQzNDEsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIYXNTdAog
ICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKQorewor
ICAgIE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHlOYW1lLCBlbnVtZXJhdG9yKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByb3BlcnR5RW51bWVyYXRvcihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCiB7CiAgICAgT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I6
OmVtaXQodGhpcywgZHN0LCBiYXNlKTsKQEAgLTQ1MTQsMTIgKzQ1MzMsMTIgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0FycgogICAgIH0KIH0KIAotdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdp
c3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdp
c3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBiYXNlUmVnaXN0ZXIp
CiB7CiAgICAgaWYgKCFsb2NhbFJlZ2lzdGVyKQogICAgICAgICByZXR1cm47CiAgICAgdW5zaWdu
ZWQgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAg
bV9mb3JJbkNvbnRleHRTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVGb3JJbkNv
bnRleHQobG9jYWxSZWdpc3RlciwgaW5kZXhSZWdpc3RlciwgcHJvcGVydHlSZWdpc3RlciwgZW51
bWVyYXRvclJlZ2lzdGVyLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkpKTsKKyAgICBtX2Zvcklu
Q29udGV4dFN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChs
b2NhbFJlZ2lzdGVyLCBpbmRleFJlZ2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9y
UmVnaXN0ZXIsIGJhc2VSZWdpc3RlciwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJ
RCogbG9jYWxSZWdpc3RlcikKQEAgLTUyMjIsNiArNTI0MSwyNyBAQCB2b2lkIFN0cnVjdHVyZUZv
ckluQ29udGV4dDo6ZmluYWxpemUoQnl0CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0VHVwbGUg
OiBtX2luSW5zdHMpCiAgICAgICAgIHJld3JpdGVPcDxPcEluU3RydWN0dXJlUHJvcGVydHk+KGdl
bmVyYXRvciwgaW5zdFR1cGxlKTsKIAorICAgIGZvciAoY29uc3QgYXV0byYgaGFzT3duUHJvcGVy
dHlUdXBsZSA6IG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHMpIHsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoT3BKbXApIDw9IHNpemVvZihPcEpuZXFQdHIpKTsKKyAgICAgICAgdW5zaWdu
ZWQgYnJhbmNoSW5zdEluZGV4ID0gc3RkOjpnZXQ8MD4oaGFzT3duUHJvcGVydHlUdXBsZSk7Cisg
ICAgICAgIHVuc2lnbmVkIG5ld1RhcmdldCA9IHN0ZDo6Z2V0PDE+KGhhc093blByb3BlcnR5VHVw
bGUpOworCisgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBnZW5lcmF0b3IubV93cml0ZXIucmVm
KGJyYW5jaEluc3RJbmRleCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluc3RydWN0aW9uLT5p
czxPcEpuZXFQdHI+KCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0cnVjdGlvbi0+aXNX
aWRlMzIoKSk7CisgICAgICAgIGF1dG8gZW5kID0gYnJhbmNoSW5zdEluZGV4ICsgaW5zdHJ1Y3Rp
b24tPnNpemUoKTsKKworICAgICAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhicmFuY2hJbnN0
SW5kZXgpOworCisgICAgICAgIC8vIGRpc2FibGUgcGVlcGhvbGUgb3B0aW1pemF0aW9ucworICAg
ICAgICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBvcF9lbmQ7CisKKyAgICAgICAgT3BKbXA6
OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPigmZ2VuZXJhdG9yLCBCb3VuZExhYmVsKHN0YXRpY19j
YXN0PGludD4obmV3VGFyZ2V0KSAtIHN0YXRpY19jYXN0PGludD4oYnJhbmNoSW5zdEluZGV4KSkp
OworCisgICAgICAgIHdoaWxlIChnZW5lcmF0b3IubV93cml0ZXIucG9zaXRpb24oKSA8IGVuZCkK
KyAgICAgICAgICAgIE9wTm9wOjplbWl0PE9wY29kZVNpemU6Ok5hcnJvdz4oJmdlbmVyYXRvcik7
CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLm1fd3JpdGVyLnNlZWsoZ2VuZXJhdG9yLm1fd3JpdGVy
LnNpemUoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5tX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKSAr
IGdlbmVyYXRvci5tX2xhc3RJbnN0cnVjdGlvbi0+c2l6ZSgpICE9IGdlbmVyYXRvci5tX3dyaXRl
ci5zaXplKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gbGFzdE9wY29k
ZUlEOwpAQCAtNTI3MCw2ICs1MzEwLDIyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRU
b1RoaXMoKQogICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwg
ZWNtYU1vZGUoKSk7CiB9CiAKK1N0cnVjdHVyZUZvckluQ29udGV4dCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpOyBpLS07ICkgewor
ICAgICAgICBGb3JJbkNvbnRleHQmIGNvbnRleHQgPSBtX2ZvckluQ29udGV4dFN0YWNrW2ldLmdl
dCgpOworICAgICAgICBpZiAoY29udGV4dC5sb2NhbCgpICE9IHByb3BlcnR5KQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFjb250ZXh0LmlzU3RydWN0dXJlRm9ySW5Db250
ZXh0KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByZXR1cm4gJmNvbnRleHQuYXNT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksMTggKzIzOSwyMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIEdldEluc3QgPSBz
dGQ6OnR1cGxlPHVuc2lnbmVkLCBpbnQ+OwogICAgICAgICB1c2luZyBJbkluc3QgPSBHZXRJbnN0
OworICAgICAgICB1c2luZyBIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0ID0gc3RkOjp0dXBsZTx1bnNp
Z25lZCwgdW5zaWduZWQ+OwogCi0gICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3Rl
cklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIHVuc2ln
bmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQorICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkK
ICAgICAgICAgICAgIDogRm9ySW5Db250ZXh0KGxvY2FsUmVnaXN0ZXIsIFR5cGU6OlN0cnVjdHVy
ZUZvckluLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAgICAgICAgICAgICwgbV9pbmRleFJl
Z2lzdGVyKGluZGV4UmVnaXN0ZXIpCiAgICAgICAgICAgICAsIG1fcHJvcGVydHlSZWdpc3Rlcihw
cm9wZXJ0eVJlZ2lzdGVyKQogICAgICAgICAgICAgLCBtX2VudW1lcmF0b3JSZWdpc3RlcihlbnVt
ZXJhdG9yUmVnaXN0ZXIpCisgICAgICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXhSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9yUmVnaXN0ZXIuZ2V0
KCk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZS5n
ZXQoKTsgfQogCiAgICAgICAgIHZvaWQgYWRkR2V0SW5zdCh1bnNpZ25lZCBpbnN0SW5kZXgsIGlu
dCBwcm9wZXJ0eVJlZ0luZGV4KQogICAgICAgICB7CkBAIC0yNjIsMTQgKzI2NSwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1faW5JbnN0cy5hcHBlbmQoSW5JbnN0IHsgaW5zdElu
ZGV4LCBwcm9wZXJ0eVJlZ0luZGV4IH0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhZGRI
YXNPd25Qcm9wZXJ0eUp1bXAodW5zaWduZWQgYnJhbmNoSW5zdEluZGV4LCB1bnNpZ25lZCBnZW5l
cmljUGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYXNPd25Qcm9wZXJ0eUp1
bXBJbnN0cy5hcHBlbmQoSGFzT3duUHJvcGVydHlKdW1wSW5zdCB7IGJyYW5jaEluc3RJbmRleCwg
Z2VuZXJpY1BhdGhUYXJnZXQgfSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGZpbmFsaXpl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqLCB1bnNpZ25l
ZCBib2R5Qnl0ZWNvZGVFbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG1faW5kZXhSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IG1fcHJvcGVydHlSZWdpc3RlcjsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fZW51bWVy
YXRvclJlZ2lzdGVyOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9iYXNlOwogICAgICAg
ICBWZWN0b3I8R2V0SW5zdD4gbV9nZXRJbnN0czsKICAgICAgICAgVmVjdG9yPEluSW5zdD4gbV9p
bkluc3RzOworICAgICAgICBWZWN0b3I8SGFzT3duUHJvcGVydHlKdW1wSW5zdD4gbV9oYXNPd25Q
cm9wZXJ0eUp1bXBJbnN0czsKICAgICB9OwogCiAgICAgY2xhc3MgSW5kZXhlZEZvckluQ29udGV4
dCA6IHB1YmxpYyBGb3JJbkNvbnRleHQgewpAQCAtNjY1LDYgKzY3NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgaG9pc3RTbG9wcHlNb2RlRnVuY3Rpb25JZk5lY2Vzc2FyeShj
b25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUpOwogCisgICAgICAgIFN0cnVjdHVyZUZvcklu
Q29udGV4dCogZmluZFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3RlcklEKiBwcm9wZXJ0eSk7
CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9u
SW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZERpdm90KTsKICAgICBwdWJsaWM6CkBAIC04NzAsNiArODgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5v
dEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CisgICAgICAg
IHVuc2lnbmVkIGVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3Rl
cklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCByZWNvcmRIYXNTZWxmU3Ry
dWN0dXJlUHJvcGVydHlJbkZvckluTG9vcChTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmLCB1bnNpZ25l
ZCBicmFuY2hPZmZzZXQsIExhYmVsJiBnZW5lcmljUGF0aCk7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQmluT3AsIHR5cGVuYW1lIEptcE9wPgogICAgICAgICBib29sIGZ1c2VDb21wYXJl
QW5kSnVtcChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0LCBib29sIHN3YXBPcGVyYW5k
cyA9IGZhbHNlKTsKQEAgLTg4Miw2ICs4OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SGFzSW5kZXhlZFByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEhhc1N0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSwg
UmVnaXN0ZXJJRCogZW51bWVyYXRvcik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRIYXNHZW5l
cmljUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlFbnVt
ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRFbnVtZXJhYmxlTGVuZ3RoKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSk7CkBAIC0xMDEwLDcgKzEwMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIHB1c2hJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJ
RCogaW5kZXgpOwogICAgICAgICB2b2lkIHBvcEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQq
IGxvY2FsKTsKLSAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklE
KiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yKTsKKyAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9ySW5TY29wZShS
ZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5
LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlKTsKICAgICAgICAgdm9p
ZCBwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsKTsKIAogICAgICAgICBM
YWJlbFNjb3BlKiBicmVha1RhcmdldChjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9MYWJlbC5oCShyZXZpc2lvbiAyNjIxNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDEwICs1MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV90
YXJnZXQoMCkKICAgICAgICAgeyB9CiAKLSAgICAgICAgZXhwbGljaXQgR2VuZXJpY0JvdW5kTGFi
ZWwoaW50IHRhcmdldCkKKyAgICAgICAgZXhwbGljaXQgR2VuZXJpY0JvdW5kTGFiZWwoaW50IG9m
ZnNldCkKICAgICAgICAgICAgIDogbV90eXBlKE9mZnNldCkKICAgICAgICAgICAgICwgbV9nZW5l
cmF0b3IobnVsbHB0cikKLSAgICAgICAgICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgICAgICAg
ICAgLCBtX3RhcmdldChvZmZzZXQpCiAgICAgICAgIHsgfQogCiAgICAgICAgIEdlbmVyaWNCb3Vu
ZExhYmVsKEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW5lcmF0b3IsIExhYmVsKiBsYWJlbCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyOCw2ICsxODI4LDU4
IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWkKICAgICByZXR1cm4g
cmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEhhc093blByb3BlcnR5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUg
PSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CisKKyAgICBpZiAobV9iYXNlLT5p
c09wdGlvbmFsQ2hhaW5CYXNlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0aW9uYWxDaGVj
ayhiYXNlLmdldCgpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhw
cmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkp
OworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSk7CisgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2Uo
KSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsK
KworICAgIFJFTEVBU0VfQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwciAmJiAhbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOyAgCisgICAgRXhw
cmVzc2lvbk5vZGUqIGFyZ3VtZW50ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHI7CisgICAg
UkVMRUFTRV9BU1NFUlQoYXJndW1lbnQtPmlzUmVzb2x2ZU5vZGUoKSk7CisgICAgU3RydWN0dXJl
Rm9ySW5Db250ZXh0KiBzdHJ1Y3R1cmVDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBWYXJpYWJsZSBh
cmd1bWVudFZhcmlhYmxlID0gZ2VuZXJhdG9yLnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oYXJndW1lbnQpLT5pZGVudGlmaWVyKCkpOworICAgIGlmIChhcmd1bWVudFZhcmlhYmxl
LmlzTG9jYWwoKSkgeworICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGFyZ3VtZW50VmFy
aWFibGUubG9jYWwoKTsKKyAgICAgICAgc3RydWN0dXJlQ29udGV4dCA9IGdlbmVyYXRvci5maW5k
U3RydWN0dXJlRm9ySW5Db250ZXh0KHByb3BlcnR5KTsKKyAgICB9CisKKyAgICBpZiAoc3RydWN0
dXJlQ29udGV4dCAmJiBzdHJ1Y3R1cmVDb250ZXh0LT5iYXNlKCkgPT0gYmFzZS5nZXQoKSkgewor
ICAgICAgICBSZWY8TGFiZWw+IHJlYWxDYWxsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAg
ICAgIFJlZjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisKKyAgICAgICAgdW5z
aWduZWQgYnJhbmNoSW5zbk9mZnNldCA9IGdlbmVyYXRvci5lbWl0V2lkZUp1bXBJZk5vdEZ1bmN0
aW9uSGFzT3duUHJvcGVydHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkocmV0dXJuVmFsdWUuZ2V0
KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbWl0Tm9kZShhcmd1bWVudCksIHN0cnVjdHVyZUNv
bnRleHQtPmVudW1lcmF0b3IoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAg
ICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJ
blRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKKworICAgICAgICBnZW5lcmF0b3IucmVjb3JkSGFzU2Vs
ZlN0cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoKnN0cnVjdHVyZUNvbnRleHQsIGJyYW5jaElu
c25PZmZzZXQsIHJlYWxDYWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICBnZW5lcmF0b3IubW92
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSwgRGVidWdnYWJsZUNhbGw6Olllcyk7CisgICAgfQorCisgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7Cit9CisKIHN0YXRp
YyBib29sIGFyZVRyaXZpYWxBcHBseUFyZ3VtZW50cyhBcmd1bWVudHNOb2RlKiBhcmdzKQogewog
ICAgIHJldHVybiAhYXJncy0+bV9saXN0Tm9kZSB8fCAhYXJncy0+bV9saXN0Tm9kZS0+bV9leHBy
IHx8ICFhcmdzLT5tX2xpc3ROb2RlLT5tX25leHQKQEAgLTM2OTUsMTEgKzM3NDcsMTAgQEAgdm9p
ZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogICAgIGlmIChtX2xleHByLT5p
c0Fzc2lnblJlc29sdmVOb2RlKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2xleHByKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBs
ZW5ndGg7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVudW1lcmF0b3I7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoYmFzZS5nZXQoKSwgbV9leHByKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCkBAIC0zNzc3LDcgKzM4MjgsNyBAQCB2b2lk
IEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJTdGFydE9mZnNldCk7CiAKLSAgICAgICAg
Z2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpLCBlbnVtZXJhdG9y
SW5kZXguZ2V0KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgZW51bWVyYXRvci5nZXQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5wdXNoU3RydWN0dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVy
YXRvckluZGV4LmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGJh
c2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7
CiAgICAgICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2FsLmdldCgpKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTE1LDYgKzQxMTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEluU3RydWN0dXJl
UHJvcGVydHk6CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBI
YXNTdHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICBjbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
NjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgyNCw2ICs3ODI0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9oYXNfc2Vs
Zl9zdHJ1Y3R1cmVfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5PigpOworICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9iYXNlKSwKKyAgICAgICAgICAg
ICAgICBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSksCisgICAgICAgICAgICAgICAgZ2V0KGJ5dGVj
b2RlLm1fZW51bWVyYXRvcikpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19zZWxm
X3N0cnVjdHVyZV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2luX3N0
cnVjdHVyZV9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5PigpOwogICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluU3RydWN0dXJlUHJvcGVydHksCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6
CiAgICAgY2FzZSBvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eToKICAgICBjYXNlIG9wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHk6CisgICAgY2FzZSBvcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHk6
CiAgICAgY2FzZSBvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfaW5k
ZXhlZF9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2dldF9kaXJlY3RfcG5hbWU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjYyMTY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToK
ICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVy
ZVByb3BlcnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEdldFBy
b3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTcsNiArMjk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAg
Y2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eToKICAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBJbkJ5SWQ6CiAg
ICAgY2FzZSBJbkJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTc5LDkgKzIxNzksMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDMoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OiB7
CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEtub3duU3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlz
aW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDkwLDYgKzQ5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICAvKiBNdXN0IGdlbmVyYXRlIGJlY2F1c2Ugb2YgUHJveGllcyBvbiB0aGUg
cHJvdG90eXBlIGNoYWluICovIFwKICAgICBtYWNybyhIYXNJbmRleGVkUHJvcGVydHksIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oSGFzU3RydWN0dXJlUHJvcGVydHksIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFj
cm8oSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5LCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhJblN0cnVjdHVyZVByb3BlcnR5LCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhIYXNHZW5lcmljUHJvcGVydHks
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oR2V0RGlyZWN0UG5hbWUsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjIxNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjc0LDcgKzIyNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JblN0cnVj
dHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwg
SlNDZWxsKiBwcm9wZXJ0eSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SW5TdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjI4Myw2ICsyMjgzLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5KSkpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTU3RyaW5n
KiBwcm9wZXJ0eSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0
eShnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKK30KKwogc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlQ2VsbCwgaW50MzJfdCBzdWJzY3JpcHQsIGludDMy
X3QgaW50ZXJuYWxNZXRob2RUeXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZp
c2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBl
T2ZPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCopOwotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiwgSlNDZWxsKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTU3Ry
aW5nKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJl
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU1N0cmluZyopOwogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqLCBpbnQzMl90LCBpbnQzMl90KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJh
dG9yQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA2LDYg
KzEyMDYsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzR2VuZXJpY1By
b3BlcnR5OgogICAgICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgICAgICBjYXNl
IEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3Bl
cnR5OgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw2
ICs2MTgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3RoOgogICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5Ogog
ICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJl
UHJvcGVydHk6CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgR2V0RGly
ZWN0UG5hbWU6CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNTcsNiArNDA1NywxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVI
YXNTdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2UgSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVIYXNTZWxmU3Ry
dWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIElu
U3RydWN0dXJlUHJvcGVydHk6IHsKICAgICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHko
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTg4LDYgKzQ5ODgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eTog
eworICAgICAgICBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OiB7CiAgICAgICAg
IGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4MTgsMTUgKzEyODE4LDEzIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNTdHJ1Y3R1cmUKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZW51bWVyYXRvci5ncHIoKSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpj
YWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSkpOwogCiAgICAgbW92ZVRydWVUbyhyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKLQotICAgIGRvbmUubGluaygmbV9qaXQpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHdyb25nU3RydWN0dXJlLCB0aGlzLCBvcGVyYXRpb25IYXNHZW5lcmlj
UHJvcGVydHksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgcHJvcGVydHlHUFIpKTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJblN0
cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1w
bChOb2RlKiBub2RlLCBGdW5jdGlvbiBzbG93UGF0aCkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMjg0NSwxNCArMTI4NDMsMjEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0dXJlUAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yLmdwcigpLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7CiAKICAgICBtb3ZlVHJ1ZVRvKHJl
c3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOwotCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKLSAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwod3JvbmdTdHJ1Y3R1cmUsIHRoaXMsIG9wZXJhdGlvbklu
U3RydWN0dXJlUHJvcGVydHksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgc2xvd1BhdGgsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOwogICAgIGJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKiBu
b2RlKQoreworICAgIGNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHlJbXBsKG5vZGUsIG9w
ZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisgICAgY29tcGls
ZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwobm9kZSwgb3BlcmF0aW9uSW5TdHJ1Y3R1cmVQ
cm9wZXJ0eSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVu
dW1lcmF0b3IoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Nyw2ICsxNDQ3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSGFz
U3RydWN0dXJlUHJvcGVydHkoTm9kZSopOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlv
bj4KKyAgICB2b2lkIGNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHlJbXBsKE5vZGUqLCBG
dW5jdGlvbik7CisgICAgdm9pZCBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RQbmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0UHJvcGVy
dHlFbnVtZXJhdG9yKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDYg
KzI4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICBj
YXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVyZVByb3Bl
cnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEhhc0luZGV4ZWRQ
cm9wZXJ0eToKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDc3LDYgKzE0NzcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEhhc1N0cnVj
dHVyZVByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVy
dHk6CisgICAgICAgICAgICBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgICAg
ICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTIyODYsNiArMTIyODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGlsZUhhc1N0cnVj
dHVyZVByb3BlcnR5SW1wbChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25I
YXNHZW5lcmljUHJvcGVydHkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUhhc1NlbGZTdHJ1
Y3R1cmVQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVy
dHlJbXBsKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG9wZXJhdGlvbkhhc1NlbGZTdHJ1Y3R1
cmVQcm9wZXJ0eSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0
eSgpCiAgICAgewogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSksIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjAsNiArNDYw
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X3RvX2FyZ3VtZW50cykKIAogICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX2hhc19zZWxmX3N0cnVjdHVyZV9w
cm9wZXJ0eSkKICAgICAgICAgREVGSU5FX09QKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2RpcmVjdF9wbmFtZSkKQEAgLTYxNyw2ICs2MTgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChu
c3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9kaXJlY3RfcG5h
bWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19zdHJ1Y3R1cmVfcHJvcGVy
dHkpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19zZWxmX3N0cnVjdHVyZV9w
cm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoaW5fc3RydWN0dXJlX3By
b3BlcnR5KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChyZXNvbHZlX3Njb3BlKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgorICAgICAgICB2b2lkIGVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfaW5kZXhl
ZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X2RpcmVjdF9wbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMxLDkgKzExMzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNv
bnN0IEluc3RydQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordGVtcGxhdGUgPHR5cGVuYW1lIE9wQ29kZVR5cGU+Cit2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KCk7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDb2RlVHlwZT4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRl
Y29kZS5tX2VudW1lcmF0b3I7CkBAIC0xMTUwLDIzICsxMTUxLDE5IEBAIHZvaWQgSklUOjplbWl0
X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDAp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1
Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0dXJl
UHJvcGVydHk+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owot
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1YWxS
ZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotCi0gICAgZW1pdExv
YWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSk7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcEhhc1N0cnVj
dHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQogCi0gICAgZW1pdExvYWRQYXls
b2FkKGVudW1lcmF0b3IsIHJlZ1QxKTsKK3ZvaWQgSklUOjplbWl0X29wX2hhc19zZWxmX3N0cnVj
dHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTZWxmU3RydWN0dXJl
UHJvcGVydHk+KGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CiAKLSAgICBsb2FkMzIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgQWRkcmVzcyhyZWdUMSwgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSkpOwotICAgIAotICAgIG1v
dmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1Qw
KTsKK3ZvaWQgSklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eUltcGw8T3BJblN0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1NCw5ICsxMzU0LDExIEBAIHZvaWQgSklUOjpl
bWl0X29wX25ld19hcnJheV93aXRoX3NpemUoY28KIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi12
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgor
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ29kZVR5cGU+KCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0
ZWNvZGUubV9lbnVtZXJhdG9yOwpAQCAtMTM3MiwyMiArMTM3NCwxOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0
dXJlUHJvcGVydHk+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1
YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOworICAgIGVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4oY3Vy
cmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
cmVnVDApOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZW51bWVyYXRvciwgcmVnVDEpOwot
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Cit2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJ
bXBsPE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQog
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIEFkZHJl
c3MocmVnVDEsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZz
ZXQoKSkpKTsKLSAgICAKLSAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKSksIHJlZ1QwKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHlJbXBsPE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBh
cnJheU1vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTI4NjgsNiArMjg2OCwxMCBAQCBsbGludE9wV2l0aFJldHVybihvcF9oYXNfc3RydWN0
dXJlX3Byb3BlCiAgICAgaGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0
Y2gsICByZXR1cm4sIF9zbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKIAor
bGxpbnRPcFdpdGhSZXR1cm4ob3BfaGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5LCBPcEhhc1Nl
bGZTdHJ1Y3R1cmVQcm9wZXJ0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
KyAgICBoYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgIHJldHVy
biwgX3Nsb3dfcGF0aF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQpCisKIGxsaW50
T3BXaXRoUmV0dXJuKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3Bl
cnR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGhhc1N0cnVjdHVy
ZVByb3BlcnR5SW1wbChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2lu
X3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI2MjE2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTc3Miw2ICsxNzcyLDcgQEAgc2xvd1BhdGhPcChoYXNfaW5kZXhl
ZF9wcm9wZXJ0eSkKIAogaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eSkKKyAgICBzbG93UGF0aE9wKGhhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0
eSkKICAgICBzbG93UGF0aE9wKGluX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZAogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMjYyMTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NDQsNiArMTQ0NCwxOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAgICAgaWYgKCFkb3Qt
PmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90
LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQogICAgICAgICAgICAgbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICB9IGVsc2UgaWYgKCFwcmV2aW91
c0Jhc2VXYXNTdXBlciAKKyAgICAgICAgJiYgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9w
ZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eQorICAgICAgICAmJiBhcmdzLT5tX2xpc3ROb2RlCisg
ICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcgorICAgICAgICAmJiBhcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKQorICAgICAgICAmJiAhYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0CisgICAgICAgICYmIGRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkKKyAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZp
ZXIoKSAhPSAiUmVmbGVjdCIpIHsKKyAgICAgICAgLy8gV2UgbWF0Y2ggdGhlIEFTVCBwYXR0ZXJu
OgorICAgICAgICAvLyA8cmVzb2x2ZU5vZGU+Lmhhc093blByb3BlcnR5KDxyZXNvbHZlTm9kZT4p
CisgICAgICAgIC8vIGkuZToKKyAgICAgICAgLy8gby5oYXNPd25Qcm9wZXJ0eShwKQorICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICB9CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw2ICs0
NDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBIYXNP
d25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgUG9zdGZpeE5vZGU6OlBvc3RmaXhO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBPcGVyYXRvciBvcGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAg
ICAgICAgIDogUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgb3BlciwgZGl2b3QsIGRpdm90U3Rh
cnQsIGRpdm90RW5kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgJKHJldmlzaW9uIDI2MjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxMSw2ICsxMDExLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzaXplX3QgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHk7CiAgICAg
fTsKIAorICAgIGNsYXNzIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6
IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEhhc093
blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBmaW5hbDsKKyAgICB9OworCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyMiw3ICsxMDIyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9lbnVtZXJh
YmxlXwogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEVu
dW1lcmFibGVMZW5ndGg+KCk7Ci0gICAgSlNWYWx1ZSBlbnVtZXJhdG9yVmFsdWUgPSBHRVQoYnl0
ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBlbnVtZXJhdG9yVmFsdWUgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBpZiAoZW51bWVyYXRvclZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIFJFVFVSTihqc051bWJlcigwKSk7CiAKQEAg
LTEwMzYsNyArMTAzNiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfaW5kZXhlZF9w
cm8KICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNJbmRleGVk
UHJvcGVydHk+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwotICAgIEpTT2JqZWN0KiBiYXNlID0gR0VUKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1
ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBHRVRfQyhi
eXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENI
RUNLX0VYQ0VQVElPTigpOwogICAgIEpTVmFsdWUgcHJvcGVydHkgPSBHRVQoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkuanNWYWx1ZSgpOwogICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVT
dHJ1Y3R1cmUoYmFzZS0+c3RydWN0dXJlKHZtKSk7CkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wCiB7CiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KCk7Ci0gICAg
SlNPYmplY3QqIGJhc2UgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogYmFzZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5KS5qc1Zh
bHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7CkBAIC0xMDYz
LDExICsxMDYzLDMyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3AK
ICAgICBSRVRVUk4oanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KSkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3NlbGZfc3Ry
dWN0dXJlX3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFsdWUo
KS5hc0NlbGwoKSk7CisgICAgaWYgKGJhc2UuaXNDZWxsKCkgJiYgYmFzZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKS0+aWQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKQorICAg
ICAgICBSRVRVUk4oanNCb29sZWFuKHRydWUpKTsKKyNlbmRpZgorCisgICAgSlNWYWx1ZSBwcm9w
ZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgUkVMRUFTRV9B
U1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3Ry
aW5nKHByb3BlcnR5KTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlm
aWVyKGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBSRVRVUk4o
anNCb29sZWFuKG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFz
ZSwgcHJvcGVydHlOYW1lKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fc3Ry
dWN0dXJlX3Byb3BlcnR5KQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEluU3RydWN0dXJlUHJvcGVydHk+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlID0gR0VUKGJ5
dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZSA9IEdFVF9DKGJ5dGVj
b2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFsdWUoKS5hc0NlbGwoKSk7
CiAgICAgaWYgKGJhc2UuaXNDZWxsKCkgJiYgYmFzZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+
aWQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKQpAQCAtMTA4Miw3ICsxMTAz
LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19nZW5lcmljX3BybwogewogICAgIEJF
R0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc0dlbmVyaWNQcm9wZXJ0eT4o
KTsKLSAgICBKU09iamVjdCogYmFzZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBiYXNlID0gR0VUX0MoYnl0ZWNv
ZGUubV9iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19F
WENFUFRJT04oKTsKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gR0VUKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpLmpzVmFsdWUoKTsKICAgICBBU1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7CkBAIC0xMTA5
LDcgKzExMzAsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VuCiB7
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0UHJvcGVydHlF
bnVtZXJhdG9yPigpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9i
YXNlKS5qc1ZhbHVlKCk7CiAgICAgaWYgKGJhc2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICBSRVRVUk4odm0uZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
cmV2aXNpb24gMjYyMTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw2ICsyNTQsNyBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3Byb3BlCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9lbnVtZXJhYmxlX2xlbmd0aCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2hhc19nZW5lcmljX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2hhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2hhc19pbmRleGVkX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2RpcmVjdF9wbmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNDksNiArMTA0OSwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBjYWxs
RnVuY3Rpb24pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5RnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGFwcGx5RnVu
Y3Rpb24pOwogCisgICAgeworICAgICAgICBKU1ZhbHVlIGhhc093blByb3BlcnR5RnVuY3Rpb24g
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdFByb3RvdHlwZSgpLT5nZXQodGhpcywgdm0ucHJv
cGVydHlOYW1lcy0+aGFzT3duUHJvcGVydHkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgaGFzT3duUHJvcGVydHlGdW5jdGlvbikpOwor
ICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGhhc093blByb3BlcnR5RnVuY3Rpb24pKTsKKyAgICB9CisKICNkZWZpbmUg
SU5JVF9QUklWQVRFX0dMT0JBTChmdW5jTmFtZSwgY29kZSkgXAogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwKICAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjIxNjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NCwzMyArODQsNDIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWVPYmopOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorYm9vbCBvYmpl
Y3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGJhc2UudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkK
LSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsK
ICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBoYXNPd25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJl
SGFzT3duUHJvcGVydHlDYWNoZSgpOwogICAgIGlmIChPcHRpb25hbDxib29sPiByZXN1bHQgPSBo
YXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgIEFTU0VSVCgqcmVzdWx0ID09IHRoaXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCpyZXN1bHQpKTsKKyAg
ICAgICAgcmV0dXJuICpyZXN1bHQ7CiAgICAgfQogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KTsKICAgICBib29sIHJlc3VsdCA9IHRoaXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAKICAgICBoYXNPd25Qcm9wZXJ0eUNhY2hlLT50cnlBZGQodm0sIHNsb3QsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgcmVzdWx0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2UgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwg
YmFzZSwgcHJvcGVydHlOYW1lKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjYyMTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDUgKzUxLDYgQEAgcHJpdmF0ZToKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK2Jvb2wgb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHko
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400364</attachid>
            <date>2020-05-27 12:03:03 -0700</date>
            <delta_ts>2020-05-27 17:50:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>64185</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIyMDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM5IEBACisyMDIwLTA1LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGhhc093blByb3BlcnR5IGluc2lkZSBzdHJ1Y3R1cmUgcHJvcGVydHkg
Zm9yLWluIGxvb3Agc2hvdWxkIHVzZSBhbiBvcGNvZGUgbGlrZSBoYXNfc3RydWN0dXJlX3Byb3Bl
cnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjI0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9y
LWluLWxvb3AuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNv
dW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3MvaGFzLW93bi1wcm9wZXJ0
eS1zdHJ1Y3R1cmUtZm9yLWluLWxvb3AtY29ycmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKHRlc3QxLmNvdW50KToKKyAgICAgICAgKHRlc3QxKToKKyAgICAg
ICAgKHRlc3QyLmNvdW50KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLmNvdW50
KToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3Q0LmNvdW50KToKKyAgICAgICAgKHRl
c3Q0KToKKyAgICAgICAgKHRlc3Q1LmNvdW50KToKKyAgICAgICAgKHRlc3Q1KToKKyAgICAgICAg
KHRlc3Q2LmNvdW50KToKKyAgICAgICAgKHRlc3Q2KToKKyAgICAgICAgKHRlc3Q3LmNvdW50KToK
KyAgICAgICAgKHRlc3Q3KToKKyAgICAgICAgKHRlc3Q4LmNvdW50KToKKyAgICAgICAgKHRlc3Q4
KToKKyAgICAgICAgKHRlc3Q5LmNvdW50KToKKyAgICAgICAgKHRlc3Q5KToKKyAgICAgICAgKHRl
c3QxMC50ZXN0KToKKyAgICAgICAgKHRlc3QxMCk6CisgICAgICAgICh0ZXN0MTEudGVzdCk6Cisg
ICAgICAgICh0ZXN0MTEpOgorCiAyMDIwLTA1LTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGluX3N0cnVjdHVyZV9wcm9wZXJ0eSBuZWVkcyB0byBo
YW5kbGUgY29uc3RhbnRzIG9uIHRoZSBSSFMgb2YgdGhlICJpbiIKSW5kZXg6IEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2hhcy1vd24tcHJvcGVydHktZm9yLWluLWxvb3AuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3Bl
cnR5LWZvci1pbi1sb29wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0
aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9
CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAg
bGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGlmIChv
Lmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8g
PSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAg
IGQ6NTAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDAwMDA7ICsraSkgewor
ICAgICAgICBhc3NlcnQoY291bnQobykgPT09IDQpOworICAgIH0KK30KK3Rlc3QxKCk7CkluZGV4
OiBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXByb3BlcnR5LXN0cnVjdHVyZS1mb3ItaW4tbG9vcC1j
b3JyZWN0bmVzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXByb3Bl
cnR5LXN0cnVjdHVyZS1mb3ItaW4tbG9vcC1jb3JyZWN0bmVzcy5qcwkobm9uZXhpc3RlbnQpCisr
KyBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXByb3BlcnR5LXN0cnVjdHVyZS1mb3ItaW4tbG9vcC1j
b3JyZWN0bmVzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4NSBAQAorZnVuY3Rpb24g
YXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKwor
ZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQg
YyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKG8uaGFz
T3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsK
KyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1
MAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICBhc3NlcnQoY291bnQobykgPT09IDQpOworICAgIH0KK30KK3Rlc3QxKCk7CisKK2Z1bmN0aW9u
IHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOwor
ICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIGlmIChwID09PSAiYSIpCisg
ICAgICAgICAgICAgICAgZGVsZXRlIG8uYTsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3Bl
cnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAg
IGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9
OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0
KGNvdW50KG8pID09PSAzKTsKKyAgICB9Cit9Cit0ZXN0MigpOworCitmdW5jdGlvbiB0ZXN0Mygp
IHsKKyAgICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAg
Zm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBwID0gImEiOworICAgICAgICAgICAgaWYg
KG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQg
byA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAg
ICAgZDo1MAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgICAgICBhc3NlcnQoY291bnQobykgPT09IDQpOworICAgIH0KK30KK3Rlc3QzKCk7CisKK2Z1
bmN0aW9uIHRlc3Q0KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMg
PSAwOworICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiZiI7Cisg
ICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50
KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAg
ICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gMCk7CisgICAgfQorfQor
dGVzdDQoKTsKKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgewor
ICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAg
ICAgZGVsZXRlIG9bcF07CisgICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAg
ICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQor
ICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAgICBhOjIwLAorICAg
ICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAgfTsKKworICAgIGxl
dCBwID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAg
ICAgICBkOjUwCisgICAgfTsKKworICAgIG8uX19wcm90b19fID0gcDsKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gMCk7
CisgICAgfQorfQordGVzdDUoKTsKKworZnVuY3Rpb24gdGVzdDYoKSB7CisgICAgZnVuY3Rpb24g
Y291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykg
eworICAgICAgICAgICAgZGVsZXRlIG9bcF07CisgICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9w
ZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0geworICAgICAg
ICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBkOjUwCisgICAg
fTsKKworICAgIGxldCBwID0geyB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09
PSAwKTsKKyAgICB9Cit9Cit0ZXN0NigpOworCitmdW5jdGlvbiB0ZXN0NygpIHsKKyAgICBmdW5j
dGlvbiBjb3VudChvLCBvMikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0
IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKG8yLmhhc093blByb3BlcnR5KHApKQorICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAg
bm9JbmxpbmUoY291bnQpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IG8gPSB7YTogMjB9OworICAgICAgICBpZiAoISEoaSAlIDIpKSB7CisgICAg
ICAgICAgICBsZXQgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAg
ICAgY291bnQobywgbnVsbCk7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgICAgICAgICAgICAgb2sg
PSBlLnRvU3RyaW5nKCkuaW5kZXhPZigibnVsbCBpcyBub3QgYW4gb2JqZWN0IikgPj0gMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChvayk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBhc3NlcnQoY291bnQobywge30pID09PSAwKTsKKyAgICAgICAgfQorICAgIH0K
K30KK3Rlc3Q3KCk7CisKK2Z1bmN0aW9uIHRlc3Q4KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8p
IHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAg
ICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOwor
CisgICAgbGV0IGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHAgPSBuZXcg
UHJveHkoe2E6MjB9LCB7CisgICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvciguLi5hcmdz
KSB7CisgICAgICAgICAgICBoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9IHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoLi4uYXJncyk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChjb3VudChwKSA9PT0gMSk7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9w
ZXJ0eUNhbGxlZCA9PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFs
c2U7CisgICAgfQorfQordGVzdDgoKTsKKworZnVuY3Rpb24gdGVzdDkoKSB7CisgICAgZnVuY3Rp
b24gY291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4g
bykgeworICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAg
ICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGlu
ZShjb3VudCk7CisKKyAgICBsZXQgaGFzT3duUHJvcGVydHlDYWxsZWQgPSBmYWxzZTsKKyAgICBs
ZXQgbyA9IHsKKyAgICAgICAgaGFzT3duUHJvcGVydHkocCkgeworICAgICAgICAgICAgaGFzT3du
UHJvcGVydHlDYWxsZWQgPSBwID09PSAiYSIgfHwgcCA9PT0gImhhc093blByb3BlcnR5IjsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICBhOiA0MgorICAgIH07
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQo
Y291bnQobykgPT09IDIpOworICAgICAgICBhc3NlcnQoaGFzT3duUHJvcGVydHlDYWxsZWQgPT09
IHRydWUpOworICAgICAgICBoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9IGZhbHNlOworICAgIH0KK30K
K3Rlc3Q5KCk7CisKK2Z1bmN0aW9uIHRlc3QxMCgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KG8sIHAp
IHsKKyAgICAgICAgcmV0dXJuIG8/Lmhhc093blByb3BlcnR5KHApCisgICAgfQorICAgIG5vSW5s
aW5lKHRlc3QpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6IDQyCisgICAgfTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydCh0ZXN0KG51
bGwsICJhIikgPT09IHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydCh0ZXN0KG8sICJhIikgPT09
IHRydWUpOworICAgIH0KK30KK3Rlc3QxMCgpOworCitmdW5jdGlvbiB0ZXN0MTEoKSB7CisgICAg
ZnVuY3Rpb24gdGVzdChvLCBwKSB7CisgICAgICAgIHJldHVybiBvLmhhc093blByb3BlcnR5Py4o
cCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgbGV0IG8gPSB7CisgICAgICAg
IGE6IDQyLAorICAgICAgICBoYXNPd25Qcm9wZXJ0eTogdW5kZWZpbmVkCisgICAgfTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydCh0ZXN0KG8s
ICJhIikgPT09IHVuZGVmaW5lZCk7CisgICAgfQorfQordGVzdDExKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMjEgQEAKKzIwMjAtMDUtMjcg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgaGFzT3duUHJvcGVy
dHkgaW5zaWRlIHN0cnVjdHVyZSBwcm9wZXJ0eSBmb3ItaW4gbG9vcCBzaG91bGQgdXNlIGFuIG9w
Y29kZSBsaWtlIGhhc19zdHJ1Y3R1cmVfcHJvcGVydHkgYnV0IGZvciBoYXNPd25Qcm9wZXJ0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMjQ4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhcHBsaWVzIHRoZSBzYW1lIHByaW5jaXBsZXMgZnJvbSByMjYyMDgzIGJ1dCB0byBoYXNPd25Q
cm9wZXJ0eS4KKyAgICAgICAgCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGhhdmUgYSBmYXN0
IHBhdGggZm9yIHRoaXMgc3ludGFjdGljIHBhdHRlcm4gd2hlbgorICAgICAgICBpdGVyYXRpbmcg
c3RydWN0dXJlIHByb3BlcnRpZXM6CisgICAgICAgIAorICAgICAgICBmb3IgKGxldCA8cD4gaW4g
PG8+KQorICAgICAgICAgICAgaWYgKDxvPi5oYXNPd25Qcm9wZXJ0eSg8cD4pKQorICAgICAgICAK
KyAgICAgICAgV2UgbG9vayBmb3IgYm90aCA8cD4gYW5kIDxvPiBhcyByZXNvbHZlIG5vZGVzLCBh
bmQgd2UgbG9vayBmb3IgdGhlbSBiZWluZyB0aGUKKyAgICAgICAgc2FtZSB2YWx1ZXMgYm90aCBp
biB0aGUgaGVhZGVyIGFuZCBpbnNpZGUgdGhlIGJvZHkuCisgICAgICAgIAorICAgICAgICBVc2lu
ZyBhIHNpbXBsZSBzdGF0aWMgYW5hbHlzaXMsIHdoZW4gd2UgZGV0ZWN0IHRoaXMgcGF0dGVybiwg
d2UgY29tcGFyZSB0aGUKKyAgICAgICAgcmVzdWx0IG9mIGA8bz4uaGFzT3duUHJvcGVydHlgIHRv
IHRoZSBvcmlnaW5hbCBoYXNPd25Qcm9wZXJ0eSBmdW5jdGlvbi4gSWYKKyAgICAgICAgaXQncyB0
aGUgc2FtZSwgd2UgZXhlY3V0ZSB0aGUgZmFzdCBwYXRoIG5ldyBieXRlY29kZSBoYXNfc2VsZl9z
dHJ1Y3R1cmVfcHJvcGVydHksCisgICAgICAgIHdoaWNoIG9uIHRoZSBmYXN0IHBhdGggaXMgdHdv
IGxvYWRzLCBhIGNvbXBhcmUgYW5kIGJyYW5jaCwgYW5kIGEgbWF0ZXJpYWxpemF0aW9uIG9mCisg
ICAgICAgIHRoZSBib29sZWFuIGNvbnN0YW50IHRydWUuCisgICAgICAgIAorICAgICAgICBPbiB0
aGUgc2xvdyBwYXRoLCBoYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkganVzdCBleGVjdXRlcyB0
aGUgcnVudGltZSBjb2RlIAorICAgICAgICBmb3IgaGFzT3duUHJvcGVydHkuCisgICAgICAgIAor
ICAgICAgICBJbiBteSB0ZXN0aW5nLCB0aGlzIHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgMy01JSBm
YXN0ZXIgb24gU3BlZWRvbWV0ZXIgMidzCisgICAgICAgIHJlYWN0IHN1YnRlc3RzLiBJIHdhcyBn
ZXR0aW5nIHNvbWUgbm9pc2Ugd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBsb2NhbGx5LAorICAgICAg
ICBzbyBJIGNhbid0IHNheSBmb3IgY2VydGFpbiBpdCdzIGEgZGVmaW5pdGUgc3BlZWR1cC4gQnV0
IHRoZSBkYXRhIGltcGxpZXMKKyAgICAgICAgaXQgaGFzIGEgZ29vZCBjaGFuY2UgYXQgYmVpbmcg
YSBzcGVlZHVwLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1w
bCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlY29yZEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUluRm9y
SW5Mb29wKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIYXNTZWxmU3Ry
dWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0
cnVjdHVyZUZvckluU2NvcGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6
OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTdHJ1Y3R1
cmVGb3JJbkNvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OlN0cnVjdHVyZUZvcklu
Q29udGV4dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6YmFzZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6YWRkSGFzT3duUHJvcGVy
dHlKdW1wKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTGFiZWwuaDoKKyAgICAgICAgKEpTQzo6
R2VuZXJpY0JvdW5kTGFiZWw6OkdlbmVyaWNCb3VuZExhYmVsKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0dXJlUHJv
cGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJbXBsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0
dXJlX3Byb3BlcnR5SW1wbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0
dXJlX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19zZWxmX3N0cnVj
dHVyZV9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVf
cHJvcGVydHkpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2Vy
L0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChK
U0M6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZTo6SGFzT3duUHJvcGVydHlGdW5j
dGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFBy
b3RvRnVuY0hhc093blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oOgorCiAyMDIwLTA1LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXBsYWNlIGBmZWF0dXJlR3VhcmRgIGFuZCBgYXZhaWxh
YmlsaXR5YCB3aXRoIGEgY29tYmluZWQgYGNvbmRpdGlvbmAgdGhhdCBhY2NlcHRzIGFueSBtYWNy
bwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAkocmV2aXNpb24gMjYyMjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8obWV0YSkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0
cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVh
bWluZ0ludGVybmFsKSBcCi0gICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSAKKyAg
ICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBtYWNybyhoYXNPd25Qcm9w
ZXJ0eUZ1bmN0aW9uKSAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJv
bEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyNjIyMDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTA1LDYgKzExMDUsMTQgQEAgb3AgOmhhc19zdHJ1Y3R1cmVfcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKK29wIDpo
YXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHksCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBw
cm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgfQorCiBvcCA6aW5fc3RydWN0dXJlX3Byb3BlcnR5LAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHJldmlzaW9uIDI2MjIwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleEltcGwoVmlyCiAgICAgVVNFUyhPcEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNW
YWx1ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluc3RhbmNlb2ZDdXN0b20sIHZhbHVlLCBjb25z
dHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSGFzU3RydWN0dXJlUHJvcGVy
dHksIGJhc2UsIHByb3BlcnR5LCBlbnVtZXJhdG9yKQorICAgIFVTRVMoT3BIYXNTZWxmU3RydWN0
dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBlbnVtZXJhdG9yKQogICAgIFVTRVMoT3BJblN0
cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9wZXJ0eSwgZW51bWVyYXRvcikKICAgICBVU0VTKE9w
Q29uc3RydWN0VmFyYXJncywgY2FsbGVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50cykKICAgICBVU0VT
KE9wQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpCkBAIC0zNzUsNiAr
Mzc2LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogICAgIERF
RlMoT3BHZXRFbnVtZXJhYmxlTGVuZ3RoLCBkc3QpCiAgICAgREVGUyhPcEhhc0luZGV4ZWRQcm9w
ZXJ0eSwgZHN0KQogICAgIERFRlMoT3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgZHN0KQorICAgIERF
RlMoT3BIYXNTZWxmU3RydWN0dXJlUHJvcGVydHksIGRzdCkKICAgICBERUZTKE9wSW5TdHJ1Y3R1
cmVQcm9wZXJ0eSwgZHN0KQogICAgIERFRlMoT3BIYXNHZW5lcmljUHJvcGVydHksIGRzdCkKICAg
ICBERUZTKE9wR2V0RGlyZWN0UG5hbWUsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkocmV2aXNpb24gMjYyMjA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IHYoQXJyYXksIG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAg
ICB2KGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzT3duUHJvcGVydHlGdW5jdGlv
biwgbnVsbHB0cikgXAogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFt
ZSwgY29kZSkgbmFtZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNjIyMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ1OCw2ICsxNDU4LDE5IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRKdW1wSWZOb3RGdW4KICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwg
bW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5j
dGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAordW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3RlcklEKiBj
b25kLCBMYWJlbCYgdGFyZ2V0KQoreworICAgIE9wSm5lcVB0cjo6ZW1pdDxPcGNvZGVTaXplOjpX
aWRlMzI+KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1l
Q29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7Cisg
ICAgcmV0dXJuIG1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpOworfQorCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpyZWNvcmRIYXNTZWxmU3RydWN0dXJlUHJvcGVydHlJbkZvckluTG9vcChTdHJ1
Y3R1cmVGb3JJbkNvbnRleHQmIHN0cnVjdHVyZUNvbnRleHQsIHVuc2lnbmVkIGJyYW5jaE9mZnNl
dCwgTGFiZWwmIGdlbmVyaWNQYXRoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdlbmVyaWNQYXRo
LmlzQm91bmQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdlbmVyaWNQYXRoLmlzRm9yd2FyZCgp
KTsKKyAgICBzdHJ1Y3R1cmVDb250ZXh0LmFkZEhhc093blByb3BlcnR5SnVtcChicmFuY2hPZmZz
ZXQsIGdlbmVyaWNQYXRoLmxvY2F0aW9uKCkpOworfQorCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjpoYXNDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogcmVwID0gaWRlbnQuaW1wbCgpOwpAQCAtNDMyOCw2ICs0MzQxLDEyIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SGFzU3QKICAgICByZXR1cm4gZHN0
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEhhc1NlbGZTdHJ1Y3R1
cmVQcm9wZXJ0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5TmFtZSwgUmVnaXN0ZXJJRCogZW51bWVyYXRvcikKK3sKKyAgICBPcEhhc1NlbGZT
dHJ1Y3R1cmVQcm9wZXJ0eTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5TmFtZSwgZW51
bWVyYXRvcik7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRQcm9wZXJ0eUVudW1lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlKQogewogICAgIE9wR2V0UHJvcGVydHlFbnVtZXJhdG9yOjplbWl0KHRoaXMsIGRz
dCwgYmFzZSk7CkBAIC00NTE0LDEyICs0NTMzLDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRUaGlzVG9BcnIKICAgICB9CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1
c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGVudW1lcmF0b3JSZWdpc3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1
Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGlu
ZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVu
dW1lcmF0b3JSZWdpc3RlciwgUmVnaXN0ZXJJRCogYmFzZVJlZ2lzdGVyKQogewogICAgIGlmICgh
bG9jYWxSZWdpc3RlcikKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIGJvZHlCeXRlY29k
ZVN0YXJ0T2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fZm9ySW5Db250ZXh0
U3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU3RydWN0dXJlRm9ySW5Db250ZXh0KGxvY2FsUmVn
aXN0ZXIsIGluZGV4UmVnaXN0ZXIsIHByb3BlcnR5UmVnaXN0ZXIsIGVudW1lcmF0b3JSZWdpc3Rl
ciwgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpKSk7CisgICAgbV9mb3JJbkNvbnRleHRTdGFjay5h
cHBlbmQoYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQobG9jYWxSZWdpc3Rlciwg
aW5kZXhSZWdpc3RlciwgcHJvcGVydHlSZWdpc3RlciwgZW51bWVyYXRvclJlZ2lzdGVyLCBiYXNl
UmVnaXN0ZXIsIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KSkpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0
ZXIpCkBAIC01MjIyLDYgKzUyNDEsMjcgQEAgdm9pZCBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZp
bmFsaXplKEJ5dAogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdFR1cGxlIDogbV9pbkluc3RzKQog
ICAgICAgICByZXdyaXRlT3A8T3BJblN0cnVjdHVyZVByb3BlcnR5PihnZW5lcmF0b3IsIGluc3RU
dXBsZSk7CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGhhc093blByb3BlcnR5VHVwbGUgOiBtX2hh
c093blByb3BlcnR5SnVtcEluc3RzKSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9w
Sm1wKSA8PSBzaXplb2YoT3BKbmVxUHRyKSk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluc3RJ
bmRleCA9IHN0ZDo6Z2V0PDA+KGhhc093blByb3BlcnR5VHVwbGUpOworICAgICAgICB1bnNpZ25l
ZCBuZXdUYXJnZXQgPSBzdGQ6OmdldDwxPihoYXNPd25Qcm9wZXJ0eVR1cGxlKTsKKworICAgICAg
ICBhdXRvIGluc3RydWN0aW9uID0gZ2VuZXJhdG9yLm1fd3JpdGVyLnJlZihicmFuY2hJbnN0SW5k
ZXgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0cnVjdGlvbi0+aXM8T3BKbmVxUHRyPigp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24tPmlzV2lkZTMyKCkpOworICAg
ICAgICBhdXRvIGVuZCA9IGJyYW5jaEluc3RJbmRleCArIGluc3RydWN0aW9uLT5zaXplKCk7CisK
KyAgICAgICAgZ2VuZXJhdG9yLm1fd3JpdGVyLnNlZWsoYnJhbmNoSW5zdEluZGV4KTsKKworICAg
ICAgICAvLyBkaXNhYmxlIHBlZXBob2xlIG9wdGltaXphdGlvbnMKKyAgICAgICAgZ2VuZXJhdG9y
Lm1fbGFzdE9wY29kZUlEID0gb3BfZW5kOworCisgICAgICAgIE9wSm1wOjplbWl0PE9wY29kZVNp
emU6OldpZGUzMj4oJmdlbmVyYXRvciwgQm91bmRMYWJlbChzdGF0aWNfY2FzdDxpbnQ+KG5ld1Rh
cmdldCkgLSBzdGF0aWNfY2FzdDxpbnQ+KGJyYW5jaEluc3RJbmRleCkpKTsKKworICAgICAgICB3
aGlsZSAoZ2VuZXJhdG9yLm1fd3JpdGVyLnBvc2l0aW9uKCkgPCBlbmQpCisgICAgICAgICAgICBP
cE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KCZnZW5lcmF0b3IpOworICAgIH0KKwogICAg
IGdlbmVyYXRvci5tX3dyaXRlci5zZWVrKGdlbmVyYXRvci5tX3dyaXRlci5zaXplKCkpOwogICAg
IGlmIChnZW5lcmF0b3IubV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBnZW5lcmF0b3IubV9s
YXN0SW5zdHJ1Y3Rpb24tPnNpemUoKSAhPSBnZW5lcmF0b3IubV93cml0ZXIuc2l6ZSgpKSB7CiAg
ICAgICAgIGdlbmVyYXRvci5tX2xhc3RPcGNvZGVJRCA9IGxhc3RPcGNvZGVJRDsKQEAgLTUyNzAs
NiArNTMxMCwyMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKICAgICBP
cFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2RlKCkpOwog
fQogCitTdHJ1Y3R1cmVGb3JJbkNvbnRleHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0
dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZvckluQ29udGV4dFN0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgRm9ySW5D
b250ZXh0JiBjb250ZXh0ID0gbV9mb3JJbkNvbnRleHRTdGFja1tpXS5nZXQoKTsKKyAgICAgICAg
aWYgKGNvbnRleHQubG9jYWwoKSAhPSBwcm9wZXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmICghY29udGV4dC5pc1N0cnVjdHVyZUZvckluQ29udGV4dCgpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgcmV0dXJuICZjb250ZXh0LmFzU3RydWN0dXJlRm9ySW5D
b250ZXh0KCk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI2
MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDE4ICsyMzksMjEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICB1c2luZyBHZXRJbnN0ID0gc3RkOjp0dXBsZTx1bnNp
Z25lZCwgaW50PjsKICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5zdDsKKyAgICAgICAgdXNp
bmcgSGFzT3duUHJvcGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVk
PjsKIAotICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdp
c3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdp
c3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCB1bnNpZ25lZCBib2R5Qnl0ZWNv
ZGVTdGFydE9mZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQq
IGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYmFzZSwgdW5zaWduZWQgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpCiAgICAgICAgICAgICA6
IEZvckluQ29udGV4dChsb2NhbFJlZ2lzdGVyLCBUeXBlOjpTdHJ1Y3R1cmVGb3JJbiwgYm9keUJ5
dGVjb2RlU3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAsIG1faW5kZXhSZWdpc3RlcihpbmRleFJl
Z2lzdGVyKQogICAgICAgICAgICAgLCBtX3Byb3BlcnR5UmVnaXN0ZXIocHJvcGVydHlSZWdpc3Rl
cikKICAgICAgICAgICAgICwgbV9lbnVtZXJhdG9yUmVnaXN0ZXIoZW51bWVyYXRvclJlZ2lzdGVy
KQorICAgICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVnaXN0ZXIu
Z2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBt
X3Byb3BlcnR5UmVnaXN0ZXIuZ2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW51bWVyYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW51bWVyYXRvclJlZ2lzdGVyLmdldCgpOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KIAogICAg
ICAgICB2b2lkIGFkZEdldEluc3QodW5zaWduZWQgaW5zdEluZGV4LCBpbnQgcHJvcGVydHlSZWdJ
bmRleCkKICAgICAgICAgewpAQCAtMjYyLDE0ICsyNjUsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBtX2luSW5zdHMuYXBwZW5kKEluSW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlS
ZWdJbmRleCB9KTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYWRkSGFzT3duUHJvcGVydHlK
dW1wKHVuc2lnbmVkIGJyYW5jaEluc3RJbmRleCwgdW5zaWduZWQgZ2VuZXJpY1BhdGhUYXJnZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHMuYXBwZW5k
KEhhc093blByb3BlcnR5SnVtcEluc3QgeyBicmFuY2hJbnN0SW5kZXgsIGdlbmVyaWNQYXRoVGFy
Z2V0IH0pOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBmaW5hbGl6ZShCeXRlY29kZUdlbmVy
YXRvciYsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgdW5zaWduZWQgYm9keUJ5dGVjb2Rl
RW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBt
X2luZGV4UmVnaXN0ZXI7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX3Byb3BlcnR5UmVn
aXN0ZXI7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2VudW1lcmF0b3JSZWdpc3RlcjsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fYmFzZTsKICAgICAgICAgVmVjdG9yPEdldElu
c3Q+IG1fZ2V0SW5zdHM7CiAgICAgICAgIFZlY3RvcjxJbkluc3Q+IG1faW5JbnN0czsKKyAgICAg
ICAgVmVjdG9yPEhhc093blByb3BlcnR5SnVtcEluc3Q+IG1faGFzT3duUHJvcGVydHlKdW1wSW5z
dHM7CiAgICAgfTsKIAogICAgIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQgOiBwdWJsaWMgRm9y
SW5Db250ZXh0IHsKQEAgLTY2NSw2ICs2NzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIGhvaXN0U2xvcHB5TW9kZUZ1bmN0aW9uSWZOZWNlc3NhcnkoY29uc3QgSWRlbnRpZmll
ciYgZnVuY3Rpb25OYW1lKTsKIAorICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQqIGZpbmRT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkpOworCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBlbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmREaXZvdCk7
CiAgICAgcHVibGljOgpAQCAtODcwLDYgKzg4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsK
ICAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQs
IExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOworICAgICAgICB1bnNpZ25lZCBlbWl0
V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVnaXN0ZXJJRCogY29uZCwgTGFi
ZWwmIHRhcmdldCk7CisgICAgICAgIHZvaWQgcmVjb3JkSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5
SW5Gb3JJbkxvb3AoU3RydWN0dXJlRm9ySW5Db250ZXh0JiwgdW5zaWduZWQgYnJhbmNoT2Zmc2V0
LCBMYWJlbCYgZ2VuZXJpY1BhdGgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpbk9w
LCB0eXBlbmFtZSBKbXBPcD4KICAgICAgICAgYm9vbCBmdXNlQ29tcGFyZUFuZEp1bXAoUmVnaXN0
ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCwgYm9vbCBzd2FwT3BlcmFuZHMgPSBmYWxzZSk7CkBA
IC04ODIsNiArODk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEhhc0luZGV4ZWRQcm9wZXJ0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5TmFtZSwgUmVnaXN0ZXJJRCogZW51bWVyYXRvcik7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWUsIFJlZ2lzdGVySUQqIGVu
dW1lcmF0b3IpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SGFzR2VuZXJpY1Byb3BlcnR5KFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1l
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5RW51bWVyYXRvcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
RW51bWVyYWJsZUxlbmd0aChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOwpAQCAt
MTAxMCw3ICsxMDI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBwdXNoSW5k
ZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4KTsKICAg
ICAgICAgdm9pZCBwb3BJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7Ci0gICAg
ICAgIHZvaWQgcHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lz
dGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogZW51bWVyYXRv
cik7CisgICAgICAgIHZvaWQgcHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9j
YWwsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
ZW51bWVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAgIHZvaWQgcG9wU3RydWN0dXJl
Rm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7CiAKICAgICAgICAgTGFiZWxTY29wZSogYnJl
YWtUYXJnZXQoY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9MYWJlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTGFiZWwuaAkocmV2aXNpb24gMjYyMjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9MYWJlbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMCAr
NTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdGFyZ2V0KDApCiAgICAg
ICAgIHsgfQogCi0gICAgICAgIGV4cGxpY2l0IEdlbmVyaWNCb3VuZExhYmVsKGludCB0YXJnZXQp
CisgICAgICAgIGV4cGxpY2l0IEdlbmVyaWNCb3VuZExhYmVsKGludCBvZmZzZXQpCiAgICAgICAg
ICAgICA6IG1fdHlwZShPZmZzZXQpCiAgICAgICAgICAgICAsIG1fZ2VuZXJhdG9yKG51bGxwdHIp
Ci0gICAgICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgICAgICwgbV90YXJnZXQo
b2Zmc2V0KQogICAgICAgICB7IH0KIAogICAgICAgICBHZW5lcmljQm91bmRMYWJlbChCeXRlY29k
ZUdlbmVyYXRvciogZ2VuZXJhdG9yLCBMYWJlbCogbGFiZWwpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lv
biAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjgsNiArMTgyOCw1OCBAQCBSZWdpc3RlcklE
KiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pCiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdl
dCgpOwogfQogCitSZWdpc3RlcklEKiBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2Jhc2UpOworCisgICAgaWYgKG1fYmFzZS0+aXNPcHRpb25hbENoYWlu
QmFzZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soYmFzZS5nZXQoKSk7
CisKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKKworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaGFz
T3duUHJvcGVydHkpOworICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCisgICAgICAgIGdl
bmVyYXRvci5lbWl0T3B0aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CisKKyAgICBSRUxFQVNF
X0FTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIg
JiYgIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsgIAorICAgIEV4cHJlc3Npb25Ob2RlKiBh
cmd1bWVudCA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByOworICAgIFJFTEVBU0VfQVNTRVJU
KGFyZ3VtZW50LT5pc1Jlc29sdmVOb2RlKCkpOworICAgIFN0cnVjdHVyZUZvckluQ29udGV4dCog
c3RydWN0dXJlQ29udGV4dCA9IG51bGxwdHI7CisgICAgVmFyaWFibGUgYXJndW1lbnRWYXJpYWJs
ZSA9IGdlbmVyYXRvci52YXJpYWJsZShzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3VtZW50
KS0+aWRlbnRpZmllcigpKTsKKyAgICBpZiAoYXJndW1lbnRWYXJpYWJsZS5pc0xvY2FsKCkpIHsK
KyAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBhcmd1bWVudFZhcmlhYmxlLmxvY2FsKCk7
CisgICAgICAgIHN0cnVjdHVyZUNvbnRleHQgPSBnZW5lcmF0b3IuZmluZFN0cnVjdHVyZUZvcklu
Q29udGV4dChwcm9wZXJ0eSk7CisgICAgfQorCisgICAgaWYgKHN0cnVjdHVyZUNvbnRleHQgJiYg
c3RydWN0dXJlQ29udGV4dC0+YmFzZSgpID09IGJhc2UuZ2V0KCkpIHsKKyAgICAgICAgUmVmPExh
YmVsPiByZWFsQ2FsbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICBSZWY8TGFiZWw+
IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworCisgICAgICAgIHVuc2lnbmVkIGJyYW5jaElu
c25PZmZzZXQgPSBnZW5lcmF0b3IuZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3Bl
cnR5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5KHJldHVyblZhbHVlLmdldCgpLCBiYXNlLmdldCgp
LCBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnQpLCBzdHJ1Y3R1cmVDb250ZXh0LT5lbnVtZXJh
dG9yKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKworICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJh
c2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24o
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSwgRGVidWdnYWJs
ZUNhbGw6Olllcyk7CisgICAgICAgIH0KKworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVu
ZC5nZXQoKSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLnJlY29yZEhhc1NlbGZTdHJ1Y3R1cmVQcm9w
ZXJ0eUluRm9ySW5Mb29wKCpzdHJ1Y3R1cmVDb250ZXh0LCBicmFuY2hJbnNuT2Zmc2V0LCByZWFs
Q2FsbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOworICAgIH0KKworICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOworfQorCiBzdGF0aWMgYm9vbCBhcmVUcml2
aWFsQXBwbHlBcmd1bWVudHMoQXJndW1lbnRzTm9kZSogYXJncykKIHsKICAgICByZXR1cm4gIWFy
Z3MtPm1fbGlzdE5vZGUgfHwgIWFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwciB8fCAhYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0CkBAIC0zNjk1LDExICszNzQ3LDEwIEBAIHZvaWQgRm9ySW5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICBpZiAobV9sZXhwci0+aXNBc3NpZ25SZXNvbHZl
Tm9kZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSwgbV9sZXhwcik7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbGVuZ3RoOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBlbnVtZXJhdG9yOwogCi0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGJh
c2UuZ2V0KCksIG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbG9jYWwgPSB0aGlz
LT50cnlHZXRCb3VuZExvY2FsKGdlbmVyYXRvcik7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVu
dW1lcmF0b3JJbmRleDsKIApAQCAtMzc3Nyw3ICszODI4LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbgogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNv
bnRyb2xGbG93KHByb2ZpbGVyU3RhcnRPZmZzZXQpOwogCi0gICAgICAgIGdlbmVyYXRvci5wdXNo
U3RydWN0dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBw
cm9wZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3Iu
cHVzaFN0cnVjdHVyZUZvckluU2NvcGUobG9jYWwuZ2V0KCksIGVudW1lcmF0b3JJbmRleC5nZXQo
KSwgcHJvcGVydHlOYW1lLmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogICAgICAgICBnZW5l
cmF0b3IucG9wU3RydWN0dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEx
NSw2ICs0MTE1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgorICAg
IGNhc2UgSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJv
cGVydHk6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFu
KTsKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjYyMjA0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4MjQsNiArNzgyNCwxNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5KTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfaGFzX3NlbGZfc3RydWN0dXJlX3By
b3BlcnR5OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNTZWxmU3RydWN0dXJlUHJvcGVydHksCisgICAgICAg
ICAgICAgICAgZ2V0KGJ5dGVjb2RlLm1fYmFzZSksCisgICAgICAgICAgICAgICAgZ2V0KGJ5dGVj
b2RlLm1fcHJvcGVydHkpLAorICAgICAgICAgICAgICAgIGdldChieXRlY29kZS5tX2VudW1lcmF0
b3IpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJv
cGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVy
dHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgYWRkVG9HcmFwaChJblN0cnVjdHVyZVByb3BlcnR5LApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYyMjA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTMsNiArMjUzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRAogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3Bf
aGFzX2dlbmVyaWNfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5
OgorICAgIGNhc2Ugb3BfaGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
aW5fc3RydWN0dXJlX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6
CiAgICAgY2FzZSBvcF9nZXRfZGlyZWN0X3BuYW1lOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTcsNiAr
Njk3LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNh
c2UgVG9PYmplY3Q6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAg
ICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0
b3I6CiAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDYgKzI5Nyw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEhhc0luZGV4
ZWRQcm9wZXJ0eToKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0
dXJlUHJvcGVydHk6CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2Fz
ZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSW5CeVZh
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
cmV2aXNpb24gMjYyMjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3OSw5ICsyMTc5LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPFN0
cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmlu
Z1VzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyNjIyMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5MCw2ICs0OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogTXVzdCBnZW5lcmF0ZSBiZWNhdXNlIG9mIFByb3hpZXMgb24gdGhlIHByb3RvdHlwZSBjaGFp
biAqLyBcCiAgICAgbWFjcm8oSGFzSW5kZXhlZFByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKEhhc1N0cnVj
dHVyZVByb3BlcnR5LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKEhhc1NlbGZTdHJ1
Y3R1cmVQcm9wZXJ0eSwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSGFzR2VuZXJpY1Byb3BlcnR5LCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKEdldERpcmVjdFBuYW1lLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUhhc1ZhckFyZ3MgfCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjYyMjA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3
NCw3ICsyMjc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYQog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihi
YXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTQ2VsbCogcHJvcGVy
dHkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJlUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU1N0cmlu
ZyogcHJvcGVydHkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyODMsNiAr
MjI4MywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNTZWxmU3RydWN0dXJlUHJvcGVydHkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0
eS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ob2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0
LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSk7Cit9CisKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUJ5SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogYmFzZUNlbGwsIGludDMyX3Qgc3Vic2NyaXB0LCBpbnQzMl90IGludGVybmFsTWV0
aG9kVHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjYyMjA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDcgKzk5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVP
ZihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTQ2Vs
bCopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNTZWxmU3RydWN0
dXJlUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU1N0cmluZyopOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNTdHJpbmcqKTsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUJ5SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwg
aW50MzJfdCwgaW50MzJfdCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJv
cGVydHlFbnVtZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGwoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2ICsxMjA2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICAg
ICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICAgICAgY2FzZSBIYXNTZWxmU3RydWN0
dXJlUHJvcGVydHk6CiAgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAg
Y2FzZSBIYXNJbmRleGVkUHJvcGVydHk6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3Bl
Y0Jvb2xlYW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsNiArNjE4LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgR2V0RW51bWVy
YWJsZUxlbmd0aDoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICBjYXNlIEhhc1N0
cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OgogICAg
IGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAg
IGNhc2UgR2V0UHJvcGVydHlFbnVtZXJhdG9yOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyNjIy
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDU3LDYgKzQwNTcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJv
cGVydHkobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEhhc1NlbGZTdHJ1
Y3R1cmVQcm9wZXJ0eTogeworICAgICAgICBjb21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3Bl
cnR5OiB7CiAgICAgICAgIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjYyMjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk4OCw2
ICs0OTg4LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBIYXNTZWxmU3RydWN0dXJlUHJvcGVydHk6IHsKKyAgICAgICAgY29t
cGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICBjb21waWxlSW5TdHJ1
Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjYyMjA0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyODE4LDE1ICsxMjgxOCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSGFzU3RydWN0dXJlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVu
dW1lcmF0b3IuZ3ByKCksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJl
SURPZmZzZXQoKSkpKTsKIAogICAgIG1vdmVUcnVlVG8ocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkp
OwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICBk
b25lLmxpbmsoJm1faml0KTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5R1BS
KSk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5v
ZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0
eShOb2RlKiBub2RlKQordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwoTm9kZSogbm9kZSwg
RnVuY3Rpb24gc2xvd1BhdGgpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTI4NDUsMTQgKzEyODQzLDIxIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJblN0cnVjdHVyZVAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZW51bWVyYXRvci5ncHIoKSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRT
dHJ1Y3R1cmVJRE9mZnNldCgpKSkpOwogCiAgICAgbW92ZVRydWVUbyhyZXN1bHRSZWdzLnBheWxv
YWRHUFIoKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
LQotICAgIGRvbmUubGluaygmbV9qaXQpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHdyb25nU3RydWN0dXJlLCB0aGlzLCBvcGVyYXRpb25JblN0cnVjdHVyZVByb3Bl
cnR5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwod3JvbmdT
dHJ1Y3R1cmUsIHRoaXMsIHNsb3dQYXRoLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpKTsKICAgICBibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyAgICBj
b21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1wbChub2RlLCBvcGVyYXRpb25IYXNTZWxm
U3RydWN0dXJlUHJvcGVydHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5T
dHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVIYXNTZWxmU3RydWN0
dXJlUHJvcGVydHlJbXBsKG5vZGUsIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHkpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUq
IG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CShyZXZpc2lvbiAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NDcsNiArMTQ0Nyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeUlkV2l0aFRoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUhhc1N0cnVjdHVyZVByb3Bl
cnR5KE5vZGUqKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBj
b21waWxlSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5SW1wbChOb2RlKiwgRnVuY3Rpb24pOworICAg
IHZvaWQgY29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0UG5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihO
b2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBCb29sZWFuVG9O
dW1iZXI6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1
cmVQcm9wZXJ0eToKKyAgICBjYXNlIEhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNl
IEluU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAg
Y2FzZSBHZXREaXJlY3RQbmFtZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3Nyw2
ICsxNDc3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToK
ICAgICAgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSgpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5OgorICAgICAgICAg
ICAgY29tcGlsZUhhc1NlbGZTdHJ1Y3R1cmVQcm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgICAgIGNvbXBpbGVJ
blN0cnVjdHVyZVByb3BlcnR5KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMjg2LDYgKzEy
Mjg5LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eUlt
cGwobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3Bl
cnR5KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVIYXNTZWxmU3RydWN0dXJlUHJvcGVydHko
KQorICAgIHsKKyAgICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25IYXNTZWxmU3RydWN0dXJlUHJvcGVydHkpOwor
ICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKQogICAgIHsKICAg
ICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYwLDYgKzQ2MCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF90b19h
cmd1bWVudHMpCiAKICAgICAgICAgREVGSU5FX09QKG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkp
CisgICAgICAgIERFRklORV9PUChvcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9P
UChvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9kaXJl
Y3RfcG5hbWUpCkBAIC02MTcsNiArNjE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRfZGlyZWN0X3BuYW1lKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfU0xPV19PUChoYXNfc3RydWN0dXJlX3Byb3BlcnR5KQorICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfU0xPV19PUChoYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGluX3N0cnVjdHVyZV9wcm9wZXJ0eSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AoY2hlY2tfdGR6KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MTgsNyArNjE4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BDb2RlVHlwZT4KKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19zdHJ1Y3R1
cmVfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9kaXJlY3RfcG5hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMSw5
ICsxMTMxLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnUKICAg
ICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgordm9pZCBKSVQ6OmVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wQ29kZVR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJh
dG9yOwpAQCAtMTE1MCwyMyArMTE1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0
dXJlX3Byb3BlcnR5CiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5PigpOwot
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVy
YXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKLQotICAgIGVtaXRMb2FkUGF5bG9hZChiYXNl
LCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UpOworICAgIGVt
aXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4o
Y3VycmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGVtaXRMb2FkUGF5bG9hZChlbnVtZXJhdG9y
LCByZWdUMSk7Cit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hh
c19zdHJ1Y3R1cmVfcHJvcGVydHlJbXBsPE9wSGFzU2VsZlN0cnVjdHVyZVByb3BlcnR5PihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQogCi0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsKLSAgICAKLSAgICBtb3ZlKFRydXN0ZWRJbW0z
MigxKSwgcmVnVDApOwotICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7Cit2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJbXBsPE9w
SW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI2
MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNTQsOSArMTM1NCwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJy
YXlfd2l0aF9zaXplKGNvCiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdm9pZCBKSVQ6OmVtaXRf
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BDb2RlVHlwZT4KK3ZvaWQgSklUOjplbWl0
X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcENvZGVUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVy
YXRvcjsKQEAgLTEzNzIsMjIgKzEzNzQsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3BlcnR5Pigp
OwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51
bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1
cmVfcHJvcGVydHlJbXBsPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KGN1cnJlbnRJbnN0cnVjdGlv
bik7Cit9CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGVudW1lcmF0b3IsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3Nl
bGZfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcEhhc1NlbGZT
dHJ1Y3R1cmVQcm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGxvYWQzMihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7Ci0gICAg
Ci0gICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkp
LCByZWdUMCk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwordm9pZCBKSVQ6OmVt
aXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcElu
U3RydWN0dXJlUHJvcGVydHk+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yODY4LDYg
KzI4NjgsMTAgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaGFzX3N0cnVjdHVyZV9wcm9wZQogICAg
IGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBf
c2xvd19wYXRoX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCiBlbmQpCiAKK2xsaW50T3BXaXRoUmV0
dXJuKG9wX2hhc19zZWxmX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BIYXNTZWxmU3RydWN0dXJlUHJv
cGVydHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgaGFzU3RydWN0
dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0Y2gsICByZXR1cm4sIF9zbG93X3BhdGhf
aGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5KQorZW5kKQorCiBsbGludE9wV2l0aFJldHVybihv
cF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHksIE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBoYXNTdHJ1Y3R1cmVQcm9wZXJ0eUltcGwo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgIHJldHVybiwgX3Nsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJv
cGVydHkpCiBlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNjIyMDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTE3NzIsNiArMTc3Miw3IEBAIHNsb3dQYXRoT3AoaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAK
IGlmIG5vdCBKU1ZBTFVFNjQKICAgICBzbG93UGF0aE9wKGhhc19zdHJ1Y3R1cmVfcHJvcGVydHkp
CisgICAgc2xvd1BhdGhPcChoYXNfc2VsZl9zdHJ1Y3R1cmVfcHJvcGVydHkpCiAgICAgc2xvd1Bh
dGhPcChpbl9zdHJ1Y3R1cmVfcHJvcGVydHkpCiBlbmQKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ0
LDYgKzE0NDQsMTkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbgog
ICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAgICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVz
b2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRl
bnRpZmllcigpICE9ICJSZWZsZWN0IikKICAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRv
dC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxP
ckFwcGx5Q2hpbGREZXB0aCk7CisgICAgfSBlbHNlIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIg
CisgICAgICAgICYmIGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+aGFz
T3duUHJvcGVydHkKKyAgICAgICAgJiYgYXJncy0+bV9saXN0Tm9kZQorICAgICAgICAmJiBhcmdz
LT5tX2xpc3ROb2RlLT5tX2V4cHIKKyAgICAgICAgJiYgYXJncy0+bV9saXN0Tm9kZS0+bV9leHBy
LT5pc1Jlc29sdmVOb2RlKCkKKyAgICAgICAgJiYgIWFyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dAor
ICAgICAgICAmJiBkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpCisgICAgICAgICYmIHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxl
Y3QiKSB7CisgICAgICAgIC8vIFdlIG1hdGNoIHRoZSBBU1QgcGF0dGVybjoKKyAgICAgICAgLy8g
PHJlc29sdmVOb2RlPi5oYXNPd25Qcm9wZXJ0eSg8cmVzb2x2ZU5vZGU+KQorICAgICAgICAvLyBp
LmU6CisgICAgICAgIC8vIG8uaGFzT3duUHJvcGVydHkocCkKKyAgICAgICAgbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKICAgICAgICAgbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3Jz
LmgJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDksNiArNDQ5LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAgICBpbmxpbmUgSGFzT3duUHJvcGVydHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIFBvc3RmaXhOb2RlOjpQb3N0Zml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3Bl
ciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogICAgICAgICA6IFByZWZp
eE5vZGUobG9jYXRpb24sIGV4cHIsIG9wZXIsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAy
NjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMTEsNiArMTAxMSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6
ZV90IG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5OwogICAgIH07CiAKKyAgICBjbGFz
cyBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25DYWxsRG90Tm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBIYXNPd25Qcm9wZXJ0eUZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikg
ZmluYWw7CisgICAgfTsKKwogICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKICAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjIsNyArMTAy
Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZW51bWVyYWJsZV8KIHsKICAgICBC
RUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRFbnVtZXJhYmxlTGVuZ3Ro
PigpOwotICAgIEpTVmFsdWUgZW51bWVyYXRvclZhbHVlID0gR0VUKGJ5dGVjb2RlLm1fYmFzZSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgZW51bWVyYXRvclZhbHVlID0gR0VUX0MoYnl0ZWNvZGUu
bV9iYXNlKS5qc1ZhbHVlKCk7CiAgICAgaWYgKGVudW1lcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICBSRVRVUk4oanNOdW1iZXIoMCkpOwogCkBAIC0xMDM2LDcgKzEwMzYs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX2luZGV4ZWRfcHJvCiAgICAgQkVHSU4o
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzSW5kZXhlZFByb3BlcnR5PigpOwog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBK
U09iamVjdCogYmFzZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBiYXNlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNl
KS5qc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFs
dWUoKTsKICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2Ut
PnN0cnVjdHVyZSh2bSkpOwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2hhc19zdHJ1Y3R1cmVfcAogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOwotICAgIEpTT2JqZWN0KiBiYXNl
ID0gR0VUKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIGJhc2UgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIEpTVmFs
dWUgcHJvcGVydHkgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOwpAQCAtMTA2Myw2ICsxMDYzLDI3IEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3AKICAgICBSRVRVUk4oanNC
b29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwog
fQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3NlbGZfc3RydWN0dXJlX3Byb3BlcnR5
KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1NlbGZT
dHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBHRVRfQyhieXRlY29kZS5t
X2Jhc2UpLmpzVmFsdWUoKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFsdWUoKS5hc0NlbGwoKSk7Cisg
ICAgaWYgKGJhc2UuaXNDZWxsKCkgJiYgYmFzZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+aWQo
KSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKQorICAgICAgICBSRVRVUk4oanNC
b29sZWFuKHRydWUpKTsKKyNlbmRpZgorCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRl
Y29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQocHJvcGVydHku
aXNTdHJpbmcoKSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKHByb3BlcnR5KTsK
KyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVj
dCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBSRVRVUk4oanNCb29sZWFuKG9iamVj
dFByb3RvdHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1l
KSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fc3RydWN0dXJlX3Byb3BlcnR5
KQogewogICAgIEJFR0lOKCk7CkBAIC0xMDgyLDcgKzExMDMsNyBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaGFzX2dlbmVyaWNfcHJvCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wSGFzR2VuZXJpY1Byb3BlcnR5PigpOwotICAgIEpTT2JqZWN0KiBiYXNl
ID0gR0VUKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIGJhc2UgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIEpTVmFs
dWUgcHJvcGVydHkgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOwogICAgIEFT
U0VSVChwcm9wZXJ0eS5pc1N0cmluZygpKTsKQEAgLTExMDksNyArMTEzMCw3IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW4KIHsKICAgICBCRUdJTigpOwogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I+KCk7Ci0gICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBp
ZiAoYmFzZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIFJFVFVSTih2bS5lbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyNjIyMDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjU0LDYgKzI1NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fcHJvcGUKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2VudW1lcmFibGVf
bGVuZ3RoKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX2dlbmVyaWNfcHJv
cGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3By
b3BlcnR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX3NlbGZfc3RydWN0
dXJlX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fc3RydWN0
dXJlX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX2luZGV4
ZWRfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZGlyZWN0
X3BuYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0OSw2ICsx
MDQ5LDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMKICAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpjYWxsRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBw
bHlGdW5jdGlvbildLnNldCh2bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAKKyAgICB7CisgICAg
ICAgIEpTVmFsdWUgaGFzT3duUHJvcGVydHlGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
b2JqZWN0UHJvdG90eXBlKCktPmdldCh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9w
ZXJ0eSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlv
bio+KHZtLCBoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSk7CisgICAgICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3Bl
cnR5RnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaGFzT3duUHJv
cGVydHlGdW5jdGlvbikpOworICAgIH0KKwogI2RlZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKGZ1
bmNOYW1lLCBjb2RlKSBcCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6ZnVuY05hbWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsgXAogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOyBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI2MjIwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDMzICs4NCw0MiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh2YWx1ZU9iaik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitib29sIG9iamVjdFByb3RvdHlwZUhhc093blByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gYmFzZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgIEhhc093blByb3BlcnR5Q2Fj
aGUqIGhhc093blByb3BlcnR5Q2FjaGUgPSB2bS5lbnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7
CiAgICAgaWYgKE9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9IGhhc093blByb3BlcnR5Q2FjaGUtPmdl
dChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCpyZXN1bHQgPT0g
dGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsK
ICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oKnJlc3VsdCkpOworICAgICAgICByZXR1cm4gKnJlc3VsdDsK
ICAgICB9CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgIGJvb2wgcmVzdWx0ID0g
dGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGhhc093blByb3Bl
cnR5Q2FjaGUtPnRyeUFkZCh2bSwgc2xvdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCByZXN1
bHQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
YmFzZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0UHJv
dG90eXBlSGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90
b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyNjIyMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNSArNTEsNiBAQCBwcml2
YXRlOgogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
Ym9vbCBvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MK
</data>
<flag name="review"
          id="415769"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400411</attachid>
            <date>2020-05-27 17:50:37 -0700</date>
            <delta_ts>2020-05-27 19:43:30 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>65209</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjIyMjUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIGhhc093blByb3BlcnR5IGluc2lkZSBzdHJ1Y3R1cmUgcHJvcGVydHkg
Zm9yLWluIGxvb3Agc2hvdWxkIHVzZSBhbiBvcGNvZGUgbGlrZSBoYXNfc3RydWN0dXJlX3Byb3Bl
cnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjI0OAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1p
bGxlci4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1p
bi1sb29wLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvaGFzLW93bi1wcm9wZXJ0eS1zdHJ1
Y3R1cmUtZm9yLWluLWxvb3AtY29ycmVjdG5lc3MuanM6IEFkZGVkLgorCiAyMDIwLTA1LTI3ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aXdl
ZCwgY2F0Y2ggZXhwZWN0ZWQgZXhjZXB0aW9uIGluIG5ldyB0ZXN0LgpJbmRleDogSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvaGFzLW93bi1wcm9wZXJ0eS1mb3ItaW4tbG9vcC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtb3duLXByb3BlcnR5LWZvci1pbi1sb29w
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1vd24tcHJv
cGVydHktZm9yLWluLWxvb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorZnVu
Y3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsK
K30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAg
ICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYg
KG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQg
byA9IHsKKyAgICAgICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAg
ICAgZDo1MAorICAgIH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYwMDAwMDsgKytpKSB7
CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1sb29w
LWNvcnJlY3RuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJv
cGVydHktc3RydWN0dXJlLWZvci1pbi1sb29wLWNvcnJlY3RuZXNzLmpzCShub25leGlzdGVudCkK
KysrIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktc3RydWN0dXJlLWZvci1pbi1sb29w
LWNvcnJlY3RuZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQor
CitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChvKSB7CisgICAgICAgIGxl
dCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAoby5o
YXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxldCBvID0g
eworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAgICAgICBk
OjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAg
ICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDEoKTsKKworZnVuY3Rp
b24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQgYyA9IDA7
CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgaWYgKHAgPT09ICJhIikK
KyAgICAgICAgICAgICAgICBkZWxldGUgby5hOworICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJv
cGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAg
ICAgYToyMCwKKyAgICAgICAgYjozMCwKKyAgICAgICAgYzo0MCwKKyAgICAgICAgZDo1MAorICAg
IH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3Nl
cnQoY291bnQobykgPT09IDMpOworICAgIH0KK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRlc3Qz
KCkgeworICAgIGZ1bmN0aW9uIGNvdW50KG8pIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAg
ICBmb3IgKGxldCBwIGluIG8pIHsKKyAgICAgICAgICAgIHAgPSAiYSI7CisgICAgICAgICAgICBp
ZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5saW5lKGNvdW50KTsKKworICAgIGxl
dCBvID0geworICAgICAgICBhOjIwLAorICAgICAgICBiOjMwLAorICAgICAgICBjOjQwLAorICAg
ICAgICBkOjUwCisgICAgfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgICAgIGFzc2VydChjb3VudChvKSA9PT0gNCk7CisgICAgfQorfQordGVzdDMoKTsKKwor
ZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZnVuY3Rpb24gY291bnQobykgeworICAgICAgICBsZXQg
YyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAgICAgICAgICAgcCA9ICJmIjsK
KyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsr
YzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291
bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAg
ICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAwKTsKKyAgICB9Cit9
Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBjb3VudChvKSB7
CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBvKSB7CisgICAgICAg
ICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KHApKQor
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9
CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAgICAgIGE6MjAsCisg
ICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAgICB9OworCisgICAg
bGV0IHAgPSB7CisgICAgICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisg
ICAgICAgIGQ6NTAKKyAgICB9OworCisgICAgby5fX3Byb3RvX18gPSBwOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGNvdW50KG8pID09PSAw
KTsKKyAgICB9Cit9Cit0ZXN0NSgpOworCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBmdW5jdGlv
biBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBv
KSB7CisgICAgICAgICAgICBkZWxldGUgb1twXTsKKyAgICAgICAgICAgIGlmIChvLmhhc093blBy
b3BlcnR5KHApKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gYzsKKyAgICB9CisgICAgbm9JbmxpbmUoY291bnQpOworCisgICAgbGV0IG8gPSB7CisgICAg
ICAgIGE6MjAsCisgICAgICAgIGI6MzAsCisgICAgICAgIGM6NDAsCisgICAgICAgIGQ6NTAKKyAg
ICB9OworCisgICAgbGV0IHAgPSB7IH07CisKKyAgICBvLl9fcHJvdG9fXyA9IHA7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoY291bnQobykg
PT09IDApOworICAgIH0KK30KK3Rlc3Q2KCk7CisKK2Z1bmN0aW9uIHRlc3Q3KCkgeworICAgIGZ1
bmN0aW9uIGNvdW50KG8sIG8yKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgcCBpbiBvKSB7CisgICAgICAgICAgICBpZiAobzIuaGFzT3duUHJvcGVydHkocCkpCisgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAg
ICBub0lubGluZShjb3VudCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkg
eworICAgICAgICBsZXQgbyA9IHthOiAyMH07CisgICAgICAgIGlmICghIShpICUgMikpIHsKKyAg
ICAgICAgICAgIGxldCBvayA9IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICBjb3VudChvLCBudWxsKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgICAgICBv
ayA9IGUudG9TdHJpbmcoKS5pbmRleE9mKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKSA+PSAwOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KG9rKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGFzc2VydChjb3VudChvLCB7fSkgPT09IDApOworICAgICAgICB9CisgICAg
fQorfQordGVzdDcoKTsKKworZnVuY3Rpb24gdGVzdDgoKSB7CisgICAgZnVuY3Rpb24gY291bnQo
bykgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IHAgaW4gbykgeworICAg
ICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkocCkpCisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICBub0lubGluZShjb3VudCk7
CisKKyAgICBsZXQgaGFzT3duUHJvcGVydHlDYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgcCA9IG5l
dyBQcm94eSh7YToyMH0sIHsKKyAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKC4uLmFy
Z3MpIHsKKyAgICAgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciguLi5hcmdzKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGNvdW50KHApID09PSAxKTsKKyAgICAgICAgYXNzZXJ0KGhhc093blBy
b3BlcnR5Q2FsbGVkID09PSB0cnVlKTsKKyAgICAgICAgaGFzT3duUHJvcGVydHlDYWxsZWQgPSBm
YWxzZTsKKyAgICB9Cit9Cit0ZXN0OCgpOworCitmdW5jdGlvbiB0ZXN0OSgpIHsKKyAgICBmdW5j
dGlvbiBjb3VudChvKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgcCBp
biBvKSB7CisgICAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShwKSkKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIG5vSW5s
aW5lKGNvdW50KTsKKworICAgIGxldCBoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9IGZhbHNlOworICAg
IGxldCBvID0geworICAgICAgICBoYXNPd25Qcm9wZXJ0eShwKSB7CisgICAgICAgICAgICBoYXNP
d25Qcm9wZXJ0eUNhbGxlZCA9IHAgPT09ICJhIiB8fCBwID09PSAiaGFzT3duUHJvcGVydHkiOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGE6IDQyCisgICAg
fTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGFzc2Vy
dChjb3VudChvKSA9PT0gMik7CisgICAgICAgIGFzc2VydChoYXNPd25Qcm9wZXJ0eUNhbGxlZCA9
PT0gdHJ1ZSk7CisgICAgICAgIGhhc093blByb3BlcnR5Q2FsbGVkID0gZmFsc2U7CisgICAgfQor
fQordGVzdDkoKTsKKworZnVuY3Rpb24gdGVzdDEwKCkgeworICAgIGZ1bmN0aW9uIHRlc3Qobywg
cCkgeworICAgICAgICByZXR1cm4gbz8uaGFzT3duUHJvcGVydHkocCkKKyAgICB9CisgICAgbm9J
bmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYTogNDIKKyAgICB9OworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRlc3Qo
bnVsbCwgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0KHRlc3QobywgImEiKSA9
PT0gdHJ1ZSk7CisgICAgfQorfQordGVzdDEwKCk7CisKK2Z1bmN0aW9uIHRlc3QxMSgpIHsKKyAg
ICBmdW5jdGlvbiB0ZXN0KG8sIHApIHsKKyAgICAgICAgcmV0dXJuIG8uaGFzT3duUHJvcGVydHk/
LihwKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdCk7CisKKyAgICBsZXQgbyA9IHsKKyAgICAg
ICAgYTogNDIsCisgICAgICAgIGhhc093blByb3BlcnR5OiB1bmRlZmluZWQKKyAgICB9OworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KHRlc3Qo
bywgImEiKSA9PT0gdW5kZWZpbmVkKTsKKyAgICB9Cit9Cit0ZXN0MTEoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBAQAorMjAyMC0wNS0y
NyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBoYXNPd25Qcm9w
ZXJ0eSBpbnNpZGUgc3RydWN0dXJlIHByb3BlcnR5IGZvci1pbiBsb29wIHNob3VsZCB1c2UgYW4g
b3Bjb2RlIGxpa2UgaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSBidXQgZm9yIGhhc093blByb3BlcnR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIyNDgK
KworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhcHBsaWVzIHRoZSBzYW1lIHByaW5jaXBsZXMgZnJvbSByMjYyMDgzIGJ1dCB0byBoYXNPd25Q
cm9wZXJ0eS4KKyAgICAgICAgCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGhhdmUgYSBmYXN0
IHBhdGggZm9yIHRoaXMgc3ludGFjdGljIHBhdHRlcm4gd2hlbgorICAgICAgICBpdGVyYXRpbmcg
c3RydWN0dXJlIHByb3BlcnRpZXM6CisgICAgICAgIAorICAgICAgICBmb3IgKGxldCA8cD4gaW4g
PG8+KQorICAgICAgICAgICAgaWYgKDxvPi5oYXNPd25Qcm9wZXJ0eSg8cD4pKQorICAgICAgICAK
KyAgICAgICAgV2UgbG9vayBmb3IgYm90aCA8cD4gYW5kIDxvPiBhcyByZXNvbHZlIG5vZGVzLCBh
bmQgd2UgbG9vayBmb3IgdGhlbSBiZWluZyB0aGUKKyAgICAgICAgc2FtZSB2YWx1ZXMgYm90aCBp
biB0aGUgaGVhZGVyIGFuZCBpbnNpZGUgdGhlIGJvZHkuCisgICAgICAgIAorICAgICAgICBVc2lu
ZyBhIHNpbXBsZSBzdGF0aWMgYW5hbHlzaXMsIHdoZW4gd2UgZGV0ZWN0IHRoaXMgcGF0dGVybiwg
d2UgY29tcGFyZSB0aGUKKyAgICAgICAgcmVzdWx0IG9mIGA8bz4uaGFzT3duUHJvcGVydHlgIHRv
IHRoZSBvcmlnaW5hbCBoYXNPd25Qcm9wZXJ0eSBmdW5jdGlvbi4gSWYKKyAgICAgICAgaXQncyB0
aGUgc2FtZSwgd2UgZXhlY3V0ZSB0aGUgZmFzdCBwYXRoIG5ldyBieXRlY29kZSBoYXNfb3duX3N0
cnVjdHVyZV9wcm9wZXJ0eSwKKyAgICAgICAgd2hpY2ggb24gdGhlIGZhc3QgcGF0aCBpcyB0d28g
bG9hZHMsIGEgY29tcGFyZSBhbmQgYnJhbmNoLCBhbmQgYSBtYXRlcmlhbGl6YXRpb24gb2YKKyAg
ICAgICAgdGhlIGJvb2xlYW4gY29uc3RhbnQgdHJ1ZS4KKyAgICAgICAgCisgICAgICAgIE9uIHRo
ZSBzbG93IHBhdGgsIGhhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5IGp1c3QgZXhlY3V0ZXMgdGhl
IHJ1bnRpbWUgY29kZSAKKyAgICAgICAgZm9yIGhhc093blByb3BlcnR5LgorICAgICAgICAKKyAg
ICAgICAgSW4gbXkgdGVzdGluZywgdGhpcyBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIDMtNSUgZmFz
dGVyIG9uIFNwZWVkb21ldGVyIDIncworICAgICAgICByZWFjdCBzdWJ0ZXN0cy4gSSB3YXMgZ2V0
dGluZyBzb21lIG5vaXNlIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgbG9jYWxseSwKKyAgICAgICAg
c28gSSBjYW4ndCBzYXkgZm9yIGNlcnRhaW4gaXQncyBhIGRlZmluaXRlIHNwZWVkdXAuIEJ1dCB0
aGUgZGF0YSBpbXBsaWVzCisgICAgICAgIGl0IGhhcyBhIGdvb2QgY2hhbmNlIGF0IGJlaW5nIGEg
c3BlZWR1cC4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAg
ICAgKiBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNvcmRIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eUluRm9ySW5M
b29wKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIYXNPd25TdHJ1Y3R1
cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoU3RydWN0
dXJlRm9ySW5TY29wZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6Zmlu
YWxpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFN0cnVjdHVyZUZv
ckluQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29udGV4dDo6U3RydWN0dXJlRm9ySW5Db250
ZXh0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjpiYXNlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlRm9ySW5Db250ZXh0OjphZGRIYXNPd25Qcm9wZXJ0eUp1
bXApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9MYWJlbC5oOgorICAgICAgICAoSlNDOjpHZW5l
cmljQm91bmRMYWJlbDo6R2VuZXJpY0JvdW5kTGFiZWwpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SGFzU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSGFzT3duU3RydWN0dXJlUHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSGFzT3duU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBq
aXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9oYXNfb3duX3N0cnVjdHVyZV9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9w
ZXJ0eUltcGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfb3duX3N0cnVjdHVyZV9wcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6Okhhc093
blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZTo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxE
b3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b3R5cGVIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0hh
c093blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorCiAy
MDIwLTA1LTI3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTjogQnVpbGQgZXJyb3JzIGR1cmluZyBKYXZhU2NyaXB0Q29yZSAiR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzIiBhYm91dCBtaXNzaW5nIEF2YWlsYWJpbGl0eS5oIGhlYWRlciBhbmQg
aW52YWxpZCBTREtST09UIFstV21pc3Npbmctc3lzcm9vdF0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHJldmlzaW9uIDI2MjIyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEp
IFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAg
IG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAotICAgIG1h
Y3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFuY2VGaWVsZElu
aXRpYWxpemVyKSBcCisgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlvbikgCiAKIG5hbWVz
cGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5h
bWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBs
IG5hbWUjI1N5bWJvbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTEwNSw2ICsx
MTA1LDE0IEBAIG9wIDpoYXNfc3RydWN0dXJlX3Byb3BlcnR5LAogICAgICAgICBlbnVtZXJhdG9y
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQogCitvcCA6aGFzX293bl9zdHJ1Y3R1cmVfcHJvcGVy
dHksCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
YmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6aW5f
c3RydWN0dXJlX3Byb3BlcnR5LAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVn
aXN0ZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsy
NDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlyCiAgICAgVVNF
UyhPcEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHkpCiAgICAgVVNF
UyhPcEluc3RhbmNlb2ZDdXN0b20sIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1
ZSkKICAgICBVU0VTKE9wSGFzU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBlbnVt
ZXJhdG9yKQorICAgIFVTRVMoT3BIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eSwgYmFzZSwgcHJvcGVy
dHksIGVudW1lcmF0b3IpCiAgICAgVVNFUyhPcEluU3RydWN0dXJlUHJvcGVydHksIGJhc2UsIHBy
b3BlcnR5LCBlbnVtZXJhdG9yKQogICAgIFVTRVMoT3BDb25zdHJ1Y3RWYXJhcmdzLCBjYWxsZWUs
IHRoaXNWYWx1ZSwgYXJndW1lbnRzKQogICAgIFVTRVMoT3BDYWxsVmFyYXJncywgY2FsbGVlLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cykKQEAgLTM3NSw2ICszNzYsNyBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVJbmRleEltcGwodW5zCiAgICAgREVGUyhPcEdldEVudW1lcmFibGVMZW5ndGgs
IGRzdCkKICAgICBERUZTKE9wSGFzSW5kZXhlZFByb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEhh
c1N0cnVjdHVyZVByb3BlcnR5LCBkc3QpCisgICAgREVGUyhPcEhhc093blN0cnVjdHVyZVByb3Bl
cnR5LCBkc3QpCiAgICAgREVGUyhPcEluU3RydWN0dXJlUHJvcGVydHksIGRzdCkKICAgICBERUZT
KE9wSGFzR2VuZXJpY1Byb3BlcnR5LCBkc3QpCiAgICAgREVGUyhPcEdldERpcmVjdFBuYW1lLCBk
c3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAg
dihhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIp
IFwKKyAgICB2KGhhc093blByb3BlcnR5RnVuY3Rpb24sIG51bGxwdHIpIFwKIAogCiAjZGVmaW5l
IERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTEs
NyArMTI5MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnRlcigpCiAgICAgICAg
IC8vIHRvIGhhdmUgc29tZXdoZXJlIHRvIGp1bXAgdG8gaWYgdGhlcmUgaXMgYSByZWN1cnNpdmUg
dGFpbC1jYWxsIHRoYXQgcG9pbnRzIHRvIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRKdW1wVGFyZ2V0KGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgICAgIC8vIFRo
aXMgZGlzYWJsZXMgcGVlcGhvbGUgb3B0aW1pemF0aW9ucyB3aGVuIGFuIGluc3RydWN0aW9uIGlz
IGEganVtcCB0YXJnZXQKLSAgICAgICAgbV9sYXN0T3Bjb2RlSUQgPSBvcF9lbmQ7CisgICAgICAg
IGRpc2FibGVQZWVwaG9sZU9wdGltaXphdGlvbigpOwogICAgIH0KIH0KIApAQCAtMTMxNCw3ICsx
MzE0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrVHJhcHMoKQogdm9pZCBB
TFdBWVNfSU5MSU5FIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXdpbmQoKQogewogICAgIEFTU0VSVCht
X2xhc3RJbnN0cnVjdGlvbi5pc1ZhbGlkKCkpOwotICAgIG1fbGFzdE9wY29kZUlEID0gb3BfZW5k
OworICAgIGRpc2FibGVQZWVwaG9sZU9wdGltaXphdGlvbigpOwogICAgIG1fd3JpdGVyLnJld2lu
ZChtX2xhc3RJbnN0cnVjdGlvbik7CiB9CiAKQEAgLTE0NTgsNiArMTQ1OCwxOSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuCiAgICAgT3BKbmVxUHRyOjplbWl0KHRo
aXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6
OmFwcGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKK3Vuc2lnbmVkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKK3sKKyAgICBPcEpuZXFQdHI6OmVtaXQ8T3Bj
b2RlU2l6ZTo6V2lkZTMyPih0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRy
LCBMaW5rVGltZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQo
dGhpcykpOworICAgIHJldHVybiBtX2xhc3RJbnN0cnVjdGlvbi5vZmZzZXQoKTsKK30KKwordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVjb3JkSGFzT3duU3RydWN0dXJlUHJvcGVydHlJbkZvcklu
TG9vcChTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmIHN0cnVjdHVyZUNvbnRleHQsIHVuc2lnbmVkIGJy
YW5jaE9mZnNldCwgTGFiZWwmIGdlbmVyaWNQYXRoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdl
bmVyaWNQYXRoLmlzQm91bmQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdlbmVyaWNQYXRoLmlz
Rm9yd2FyZCgpKTsKKyAgICBzdHJ1Y3R1cmVDb250ZXh0LmFkZEhhc093blByb3BlcnR5SnVtcChi
cmFuY2hPZmZzZXQsIGdlbmVyaWNQYXRoLmxvY2F0aW9uKCkpOworfQorCiBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpoYXNDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsK
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcmVwID0gaWRlbnQuaW1wbCgpOwpAQCAtNDMyOCw2ICs0
MzQxLDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SGFzU3QKICAgICBy
ZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEhhc093
blN0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKQoreworICAgIE9w
SGFzT3duU3RydWN0dXJlUHJvcGVydHk6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eU5h
bWUsIGVudW1lcmF0b3IpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0UHJvcGVydHlFbnVtZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSkKIHsKICAgICBPcEdldFByb3BlcnR5RW51bWVyYXRvcjo6ZW1pdCh0
aGlzLCBkc3QsIGJhc2UpOwpAQCAtNDUxNCwxMiArNDUzMywxMiBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0VGhpc1RvQXJyCiAgICAgfQogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwdXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGJhc2VSZWdpc3RlcikKIHsKICAg
ICBpZiAoIWxvY2FsUmVnaXN0ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBib2R5
Qnl0ZWNvZGVTdGFydE9mZnNldCA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX2Zvcklu
Q29udGV4dFN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFN0cnVjdHVyZUZvckluQ29udGV4dChs
b2NhbFJlZ2lzdGVyLCBpbmRleFJlZ2lzdGVyLCBwcm9wZXJ0eVJlZ2lzdGVyLCBlbnVtZXJhdG9y
UmVnaXN0ZXIsIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KSkpOworICAgIG1fZm9ySW5Db250ZXh0
U3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU3RydWN0dXJlRm9ySW5Db250ZXh0KGxvY2FsUmVn
aXN0ZXIsIGluZGV4UmVnaXN0ZXIsIHByb3BlcnR5UmVnaXN0ZXIsIGVudW1lcmF0b3JSZWdpc3Rl
ciwgYmFzZVJlZ2lzdGVyLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkpKTsKIH0KIAogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cG9wU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2Nh
bFJlZ2lzdGVyKQpAQCAtNTE4NSw4ICs1MjA0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIHJld3Jp
dGVPcChCeXRlY29kZUdlbgogCiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
bGRPcFR5cGU+KCk7CiAKLSAgICAvLyBkaXNhYmxlIHBlZXBob2xlIG9wdGltaXphdGlvbnMKLSAg
ICBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQgPSBvcF9lbmQ7CisgICAgZ2VuZXJhdG9yLmRpc2Fi
bGVQZWVwaG9sZU9wdGltaXphdGlvbigpOwogCiAgICAgLy8gQ2hhbmdlIHRoZSBvcGNvZGUgdG8g
Z2V0X2J5X3ZhbC4KICAgICAvLyAxLiBkc3Qgc3RheXMgdGhlIHNhbWUuCkBAIC01MjIyLDYgKzUy
NDAsMjYgQEAgdm9pZCBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZpbmFsaXplKEJ5dAogICAgIGZv
ciAoY29uc3QgYXV0byYgaW5zdFR1cGxlIDogbV9pbkluc3RzKQogICAgICAgICByZXdyaXRlT3A8
T3BJblN0cnVjdHVyZVByb3BlcnR5PihnZW5lcmF0b3IsIGluc3RUdXBsZSk7CiAKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGhhc093blByb3BlcnR5VHVwbGUgOiBtX2hhc093blByb3BlcnR5SnVtcElu
c3RzKSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wSm1wKSA8PSBzaXplb2YoT3BK
bmVxUHRyKSk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluc3RJbmRleCA9IHN0ZDo6Z2V0PDA+
KGhhc093blByb3BlcnR5VHVwbGUpOworICAgICAgICB1bnNpZ25lZCBuZXdCcmFuY2hUYXJnZXQg
PSBzdGQ6OmdldDwxPihoYXNPd25Qcm9wZXJ0eVR1cGxlKTsKKworICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gZ2VuZXJhdG9yLm1fd3JpdGVyLnJlZihicmFuY2hJbnN0SW5kZXgpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbnN0cnVjdGlvbi0+aXM8T3BKbmVxUHRyPigpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24tPmlzV2lkZTMyKCkpOworICAgICAgICBhdXRvIGVu
ZCA9IGJyYW5jaEluc3RJbmRleCArIGluc3RydWN0aW9uLT5zaXplKCk7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLm1fd3JpdGVyLnNlZWsoYnJhbmNoSW5zdEluZGV4KTsKKworICAgICAgICBnZW5lcmF0
b3IuZGlzYWJsZVBlZXBob2xlT3B0aW1pemF0aW9uKCk7CisKKyAgICAgICAgT3BKbXA6OmVtaXQo
JmdlbmVyYXRvciwgQm91bmRMYWJlbChzdGF0aWNfY2FzdDxpbnQ+KG5ld0JyYW5jaFRhcmdldCkg
LSBzdGF0aWNfY2FzdDxpbnQ+KGJyYW5jaEluc3RJbmRleCkpKTsKKworICAgICAgICB3aGlsZSAo
Z2VuZXJhdG9yLm1fd3JpdGVyLnBvc2l0aW9uKCkgPCBlbmQpCisgICAgICAgICAgICBPcE5vcDo6
ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KCZnZW5lcmF0b3IpOworICAgIH0KKwogICAgIGdlbmVy
YXRvci5tX3dyaXRlci5zZWVrKGdlbmVyYXRvci5tX3dyaXRlci5zaXplKCkpOwogICAgIGlmIChn
ZW5lcmF0b3IubV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBnZW5lcmF0b3IubV9sYXN0SW5z
dHJ1Y3Rpb24tPnNpemUoKSAhPSBnZW5lcmF0b3IubV93cml0ZXIuc2l6ZSgpKSB7CiAgICAgICAg
IGdlbmVyYXRvci5tX2xhc3RPcGNvZGVJRCA9IGxhc3RPcGNvZGVJRDsKQEAgLTUyNzAsNiArNTMw
OCwyMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKICAgICBPcFRvVGhp
czo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2RlKCkpOwogfQogCitT
dHJ1Y3R1cmVGb3JJbkNvbnRleHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9y
SW5Db250ZXh0KFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIGZvciAoc2l6ZV90IGkgPSBt
X2ZvckluQ29udGV4dFN0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgRm9ySW5Db250ZXh0
JiBjb250ZXh0ID0gbV9mb3JJbkNvbnRleHRTdGFja1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKGNv
bnRleHQubG9jYWwoKSAhPSBwcm9wZXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmICghY29udGV4dC5pc1N0cnVjdHVyZUZvckluQ29udGV4dCgpKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgcmV0dXJuICZjb250ZXh0LmFzU3RydWN0dXJlRm9ySW5Db250ZXh0
KCk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI2MjIyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDE4ICsyMzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHVibGljOgogICAgICAgICB1c2luZyBHZXRJbnN0ID0gc3RkOjp0dXBsZTx1bnNpZ25lZCwg
aW50PjsKICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5zdDsKKyAgICAgICAgdXNpbmcgSGFz
T3duUHJvcGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPjsKIAot
ICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFy
dE9mZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQqIGxvY2Fs
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgUmVnaXN0ZXJJRCogYmFz
ZSwgdW5zaWduZWQgYm9keUJ5dGVjb2RlU3RhcnRPZmZzZXQpCiAgICAgICAgICAgICA6IEZvcklu
Q29udGV4dChsb2NhbFJlZ2lzdGVyLCBUeXBlOjpTdHJ1Y3R1cmVGb3JJbiwgYm9keUJ5dGVjb2Rl
U3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAsIG1faW5kZXhSZWdpc3RlcihpbmRleFJlZ2lzdGVy
KQogICAgICAgICAgICAgLCBtX3Byb3BlcnR5UmVnaXN0ZXIocHJvcGVydHlSZWdpc3RlcikKICAg
ICAgICAgICAgICwgbV9lbnVtZXJhdG9yUmVnaXN0ZXIoZW51bWVyYXRvclJlZ2lzdGVyKQorICAg
ICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVnaXN0ZXIuZ2V0KCk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5UmVnaXN0ZXIuZ2V0KCk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW51bWVyYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZW51bWVyYXRvclJlZ2lzdGVyLmdldCgpOyB9CisgICAgICAgIFJlZ2lz
dGVySUQqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KIAogICAgICAgICB2
b2lkIGFkZEdldEluc3QodW5zaWduZWQgaW5zdEluZGV4LCBpbnQgcHJvcGVydHlSZWdJbmRleCkK
ICAgICAgICAgewpAQCAtMjYyLDE0ICsyNjUsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2luSW5zdHMuYXBwZW5kKEluSW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlSZWdJbmRl
eCB9KTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYWRkSGFzT3duUHJvcGVydHlKdW1wKHVu
c2lnbmVkIGJyYW5jaEluc3RJbmRleCwgdW5zaWduZWQgZ2VuZXJpY1BhdGhUYXJnZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHMuYXBwZW5kKEhhc093
blByb3BlcnR5SnVtcEluc3QgeyBicmFuY2hJbnN0SW5kZXgsIGdlbmVyaWNQYXRoVGFyZ2V0IH0p
OworICAgICAgICB9CisKICAgICAgICAgdm9pZCBmaW5hbGl6ZShCeXRlY29kZUdlbmVyYXRvciYs
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiwgdW5zaWduZWQgYm9keUJ5dGVjb2RlRW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2luZGV4
UmVnaXN0ZXI7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX3Byb3BlcnR5UmVnaXN0ZXI7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2VudW1lcmF0b3JSZWdpc3RlcjsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fYmFzZTsKICAgICAgICAgVmVjdG9yPEdldEluc3Q+IG1f
Z2V0SW5zdHM7CiAgICAgICAgIFZlY3RvcjxJbkluc3Q+IG1faW5JbnN0czsKKyAgICAgICAgVmVj
dG9yPEhhc093blByb3BlcnR5SnVtcEluc3Q+IG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHM7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQgOiBwdWJsaWMgRm9ySW5Db250
ZXh0IHsKQEAgLTY2NSw2ICs2NzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lk
IGhvaXN0U2xvcHB5TW9kZUZ1bmN0aW9uSWZOZWNlc3NhcnkoY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lKTsKIAorICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQqIGZpbmRTdHJ1Y3R1
cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkpOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBlbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oY29uc3QgSlNUZXh0UG9z
aXRpb24mIHN0YXJ0RGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmREaXZvdCk7CiAgICAg
cHVibGljOgpAQCAtODcwLDYgKzg4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAg
ICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVs
JiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lz
dGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOworICAgICAgICB1bnNpZ25lZCBlbWl0V2lkZUp1
bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRh
cmdldCk7CisgICAgICAgIHZvaWQgcmVjb3JkSGFzT3duU3RydWN0dXJlUHJvcGVydHlJbkZvcklu
TG9vcChTdHJ1Y3R1cmVGb3JJbkNvbnRleHQmLCB1bnNpZ25lZCBicmFuY2hPZmZzZXQsIExhYmVs
JiBnZW5lcmljUGF0aCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluT3AsIHR5cGVu
YW1lIEptcE9wPgogICAgICAgICBib29sIGZ1c2VDb21wYXJlQW5kSnVtcChSZWdpc3RlcklEKiBj
b25kLCBMYWJlbCYgdGFyZ2V0LCBib29sIHN3YXBPcGVyYW5kcyA9IGZhbHNlKTsKQEAgLTg4Miw2
ICs4OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SGFz
SW5kZXhlZFByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHlOYW1lKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEhhc1N0cnVjdHVy
ZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEhhc093blN0cnVjdHVyZVByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9y
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEhhc0dlbmVyaWNQcm9wZXJ0eShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eUVudW1lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEVudW1lcmFi
bGVMZW5ndGgoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKQEAgLTEwMTAsNyAr
MTAyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHVzaEluZGV4ZWRGb3JJ
blNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCk7CiAgICAgICAgIHZv
aWQgcG9wSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwpOwotICAgICAgICB2b2lk
IHB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklEKiBp
bmRleCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGVudW1lcmF0b3IpOworICAg
ICAgICB2b2lkIHB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdp
c3RlcklEKiBpbmRleCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGVudW1lcmF0
b3IsIFJlZ2lzdGVySUQqIGJhc2UpOwogICAgICAgICB2b2lkIHBvcFN0cnVjdHVyZUZvckluU2Nv
cGUoUmVnaXN0ZXJJRCogbG9jYWwpOwogCiAgICAgICAgIExhYmVsU2NvcGUqIGJyZWFrVGFyZ2V0
KGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTEwNzQsNiArMTA4OSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKTsKIAorICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBkaXNhYmxlUGVlcGhvbGVP
cHRpbWl6YXRpb24oKSB7IG1fbGFzdE9wY29kZUlEID0gb3BfZW5kOyB9CisgICAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCBjYW5Eb1BlZXBob2xlT3B0aW1pemF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0T3Bjb2RlSUQgIT0gb3BfZW5kOyB9CiAKICAgICBwdWJsaWM6CkBAIC0xMjE1LDcgKzEy
MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGF1dG8gcHJldkxhc3RPcGNvZGVJ
RCA9IG1fbGFzdE9wY29kZUlEOwogICAgICAgICAgICAgYXV0byBwcmV2TGFzdEluc3RydWN0aW9u
ID0gbV9sYXN0SW5zdHJ1Y3Rpb247CiAgICAgICAgICAgICBtX3dyaXRlci5zd2FwKHdyaXRlcik7
Ci0gICAgICAgICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKKyAgICAgICAgICAgIGRpc2Fi
bGVQZWVwaG9sZU9wdGltaXphdGlvbigpOwogICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24g
PSBtX3dyaXRlci5yZWYoKTsKICAgICAgICAgICAgIGZuKCk7CiAgICAgICAgICAgICBtX3dyaXRl
ci5zd2FwKHdyaXRlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0xhYmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9MYWJlbC5oCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0xhYmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV90YXJnZXQoMCkKICAgICAgICAgeyB9CiAKLSAg
ICAgICAgZXhwbGljaXQgR2VuZXJpY0JvdW5kTGFiZWwoaW50IHRhcmdldCkKKyAgICAgICAgZXhw
bGljaXQgR2VuZXJpY0JvdW5kTGFiZWwoaW50IG9mZnNldCkKICAgICAgICAgICAgIDogbV90eXBl
KE9mZnNldCkKICAgICAgICAgICAgICwgbV9nZW5lcmF0b3IobnVsbHB0cikKLSAgICAgICAgICAg
ICwgbV90YXJnZXQodGFyZ2V0KQorICAgICAgICAgICAgLCBtX3RhcmdldChvZmZzZXQpCiAgICAg
ICAgIHsgfQogCiAgICAgICAgIEdlbmVyaWNCb3VuZExhYmVsKEJ5dGVjb2RlR2VuZXJhdG9yKiBn
ZW5lcmF0b3IsIExhYmVsKiBsYWJlbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgyOCw2ICsxODI4LDU4IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbWkKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKK1Jl
Z2lzdGVySUQqIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fYmFzZSk7CisKKyAgICBpZiAobV9iYXNlLT5pc09wdGlvbmFsQ2hhaW5CYXNlKCkpCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0T3B0aW9uYWxDaGVjayhiYXNlLmdldCgpKTsKKworICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSk7
CisgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRP
cHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwciAmJiAhbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQpOyAgCisgICAgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50ID0gbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHI7CisgICAgUkVMRUFTRV9BU1NFUlQoYXJndW1lbnQtPmlz
UmVzb2x2ZU5vZGUoKSk7CisgICAgU3RydWN0dXJlRm9ySW5Db250ZXh0KiBzdHJ1Y3R1cmVDb250
ZXh0ID0gbnVsbHB0cjsKKyAgICBWYXJpYWJsZSBhcmd1bWVudFZhcmlhYmxlID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJndW1lbnQpLT5pZGVudGlmaWVy
KCkpOworICAgIGlmIChhcmd1bWVudFZhcmlhYmxlLmlzTG9jYWwoKSkgeworICAgICAgICBSZWdp
c3RlcklEKiBwcm9wZXJ0eSA9IGFyZ3VtZW50VmFyaWFibGUubG9jYWwoKTsKKyAgICAgICAgc3Ry
dWN0dXJlQ29udGV4dCA9IGdlbmVyYXRvci5maW5kU3RydWN0dXJlRm9ySW5Db250ZXh0KHByb3Bl
cnR5KTsKKyAgICB9CisKKyAgICBpZiAoc3RydWN0dXJlQ29udGV4dCAmJiBzdHJ1Y3R1cmVDb250
ZXh0LT5iYXNlKCkgPT0gYmFzZS5nZXQoKSkgeworICAgICAgICBSZWY8TGFiZWw+IHJlYWxDYWxs
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIFJlZjxMYWJlbD4gZW5kID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CisKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5zbk9mZnNldCA9IGdl
bmVyYXRvci5lbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoZnVuY3Rpb24u
Z2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIYXNPd25TdHJ1
Y3R1cmVQcm9wZXJ0eShyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVt
aXROb2RlKGFyZ3VtZW50KSwgc3RydWN0dXJlQ29udGV4dC0+ZW51bWVyYXRvcigpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5l
cmF0b3IubW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOworCisg
ICAgICAgIGdlbmVyYXRvci5yZWNvcmRIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eUluRm9ySW5Mb29w
KCpzdHJ1Y3R1cmVDb250ZXh0LCBicmFuY2hJbnNuT2Zmc2V0LCByZWFsQ2FsbCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9u
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCksIERlYnVnZ2Fi
bGVDYWxsOjpZZXMpOworICAgIH0KKworICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0
dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlLmdldCgpOworfQorCiBzdGF0aWMgYm9vbCBhcmVUcml2aWFsQXBwbHlBcmd1bWVu
dHMoQXJndW1lbnRzTm9kZSogYXJncykKIHsKICAgICByZXR1cm4gIWFyZ3MtPm1fbGlzdE5vZGUg
fHwgIWFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwciB8fCAhYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
CkBAIC0zNjk1LDExICszNzQ3LDEwIEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KICAgICBpZiAobV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpKQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9sZXhwcik7
CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbGVuZ3RoOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBlbnVtZXJhdG9yOwogCi0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIG1fZXhw
cik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9l
eHByKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbG9jYWwgPSB0aGlzLT50cnlHZXRCb3VuZExv
Y2FsKGdlbmVyYXRvcik7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGVudW1lcmF0b3JJbmRleDsK
IApAQCAtMzc3Nyw3ICszODI4LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbgogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHByb2Zp
bGVyU3RhcnRPZmZzZXQpOwogCi0gICAgICAgIGdlbmVyYXRvci5wdXNoU3RydWN0dXJlRm9ySW5T
Y29wZShsb2NhbC5nZXQoKSwgZW51bWVyYXRvckluZGV4LmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0
KCksIGVudW1lcmF0b3IuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IucHVzaFN0cnVjdHVyZUZv
ckluU2NvcGUobG9jYWwuZ2V0KCksIGVudW1lcmF0b3JJbmRleC5nZXQoKSwgcHJvcGVydHlOYW1l
LmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBiYXNlLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogICAgICAgICBnZW5lcmF0b3IucG9wU3RydWN0
dXJlRm9ySW5TY29wZShsb2NhbC5nZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDExNSw2ICs0MTE1LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzT3duU3Ry
dWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICBjbG9i
YmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgyNCw2ICs3
ODI0LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBvcF9oYXNfb3duX3N0cnVjdHVyZV9wcm9wZXJ0eTogeworICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNPd25TdHJ1
Y3R1cmVQcm9wZXJ0eT4oKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9H
cmFwaChIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNv
ZGUubV9iYXNlKSwKKyAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSksCisg
ICAgICAgICAgICAgICAgZ2V0KGJ5dGVjb2RlLm1fZW51bWVyYXRvcikpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2hhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5KTsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2Ugb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluU3RydWN0dXJlUHJvcGVy
dHk+KCk7CiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5TdHJ1
Y3R1cmVQcm9wZXJ0eSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1Myw3
IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9w
X2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5
OgogICAgIGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eToKKyAgICBjYXNlIG9wX2hhc19v
d25fc3RydWN0dXJlX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5
OgogICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9nZXRfZGly
ZWN0X3BuYW1lOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTcsNiArNjk3LDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2Fz
ZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAg
ICBjYXNlIEhhc093blN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9w
ZXJ0eToKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKICAgICBjYXNlIEdldERpcmVj
dFBuYW1lOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2
aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgIGNhc2Ug
SGFzT3duUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKKyAgICBjYXNl
IEhhc093blN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eToK
ICAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEluQnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNzksOSArMjE3OSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxLbm93
bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2UgSGFzT3duU3RydWN0dXJlUHJvcGVydHk6CiAgICAgICAgIGNhc2UgSW5T
dHJ1Y3R1cmVQcm9wZXJ0eTogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMygpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw2ICs0OTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogTXVzdCBnZW5lcmF0ZSBiZWNhdXNl
IG9mIFByb3hpZXMgb24gdGhlIHByb3RvdHlwZSBjaGFpbiAqLyBcCiAgICAgbWFjcm8oSGFzSW5k
ZXhlZFByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKEhhc1N0cnVjdHVyZVByb3BlcnR5LCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAorICAgIG1hY3JvKEhhc093blN0cnVjdHVyZVByb3BlcnR5LCBOb2RlUmVzdWx0
Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhJblN0cnVjdHVyZVByb3Bl
cnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhI
YXNHZW5lcmljUHJvcGVydHksIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oR2V0RGly
ZWN0UG5hbWUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVSZXN1bHRK
UykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc0LDcgKzIyNzQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBwcm9wZXJ0eSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjI4Myw2ICsyMjgzLDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHBy
b3BlcnR5KSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhh
c093blN0cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdFByb3Rv
dHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpOwor
fQorCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUlu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQzMl90
IHN1YnNjcmlwdCwgaW50MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQcm90b3R5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5l
cmljUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHko
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU0NlbGwqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSGFzT3duU3RydWN0dXJlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBKU1N0cmluZyopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JblN0cnVjdHVyZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNTdHJp
bmcqKTsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUJ5
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgaW50MzJfdCwgaW50MzJfdCk7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvckNlbGwoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwNiw2ICsxMjA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBj
YXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0
eToKKyAgICAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICAgICAgY2FzZSBJ
blN0cnVjdHVyZVByb3BlcnR5OgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eTogewog
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjYyMjI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxOCw2ICs2MTgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3RoOgogICAgIGNhc2UgSGFzR2Vu
ZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJvcGVydHk6CisgICAgY2FzZSBI
YXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6CiAg
ICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1Nyw2
ICs0MDU3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5KG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eTogeworICAgICAgICBjb21w
aWxlSGFzT3duU3RydWN0dXJlUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIEluU3RydWN0dXJlUHJvcGVydHk6IHsKICAgICAgICAgY29tcGlsZUluU3RydWN0
dXJlUHJvcGVydHkobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjIy
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTg4LDYgKzQ5ODgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVy
dHkobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEhhc093blN0cnVjdHVy
ZVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgSW5TdHJ1Y3R1cmVQcm9wZXJ0eTog
ewogICAgICAgICBjb21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0eShub2RlKTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODE4LDE1ICsxMjgxOCwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzU3RydWN0dXJlCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3IuZ3ByKCksIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsKIAogICAgIG1vdmVUcnVlVG8o
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKIAogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgb3BlcmF0aW9u
SGFzR2VuZXJpY1Byb3BlcnR5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIHByb3BlcnR5R1BSKSk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5TdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKiBub2RlKQordGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0aW9uPgordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc093blN0cnVjdHVyZVBy
b3BlcnR5SW1wbChOb2RlKiBub2RlLCBGdW5jdGlvbiBzbG93UGF0aCkKIHsKICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMjg0NSwxNCAr
MTI4NDMsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluU3RydWN0dXJlUAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yLmdwcigpLCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7CiAKICAgICBtb3Zl
VHJ1ZVRvKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKLSAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwod3JvbmdTdHJ1Y3R1cmUsIHRoaXMsIG9w
ZXJhdGlvbkluU3RydWN0dXJlUHJvcGVydHksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbCh3cm9uZ1N0cnVjdHVyZSwgdGhpcywgc2xvd1BhdGgsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikpOwog
ICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlKTsK
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5
KE5vZGUqIG5vZGUpCit7CisgICAgY29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5SW1wbChu
b2RlLCBvcGVyYXRpb25IYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisgICAg
Y29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5SW1wbChub2RlLCBvcGVyYXRpb25JblN0cnVj
dHVyZVByb3BlcnR5KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3Bl
cnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ3LDYg
KzE0NDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eShOb2RlKik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0aW9uPgorICAgIHZvaWQgY29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5SW1wbChOb2Rl
KiwgRnVuY3Rpb24pOworICAgIHZvaWQgY29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJblN0cnVjdHVyZVByb3BlcnR5KE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVHZXREaXJlY3RQbmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0UHJv
cGVydHlFbnVtZXJhdG9yKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgw
LDYgKzI4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAg
ICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgorICAgIGNhc2UgSGFzT3duU3RydWN0dXJlUHJv
cGVydHk6CiAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFzSW5kZXhl
ZFByb3BlcnR5OgogICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjIyMjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NzcsNiArMTQ3Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSGFzU3Ry
dWN0dXJlUHJvcGVydHk6CiAgICAgICAgICAgICBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHko
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhhc093blN0cnVjdHVyZVByb3Bl
cnR5OgorICAgICAgICAgICAgY29tcGlsZUhhc093blN0cnVjdHVyZVByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJblN0cnVjdHVyZVByb3BlcnR5OgogICAgICAg
ICAgICAgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHkoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTIyODYsNiArMTIyODksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGlsZUhhc1N0cnVj
dHVyZVByb3BlcnR5SW1wbChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25I
YXNHZW5lcmljUHJvcGVydHkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUhhc093blN0cnVj
dHVyZVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0
eUltcGwobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgb3BlcmF0aW9uSGFzT3duU3RydWN0dXJl
UHJvcGVydHkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUluU3RydWN0dXJlUHJvcGVydHko
KQogICAgIHsKICAgICAgICAgY29tcGlsZUhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBvcGVyYXRpb25JblN0cnVjdHVyZVByb3BlcnR5KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYwLDYgKzQ2MCw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF90b19hcmd1bWVudHMpCiAKICAgICAgICAgREVGSU5FX09QKG9wX2hhc19zdHJ1Y3R1
cmVfcHJvcGVydHkpCisgICAgICAgIERFRklORV9PUChvcF9oYXNfb3duX3N0cnVjdHVyZV9wcm9w
ZXJ0eSkKICAgICAgICAgREVGSU5FX09QKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKICAgICAg
ICAgREVGSU5FX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2RpcmVjdF9wbmFtZSkKQEAgLTYxNyw2ICs2MTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuc3Ry
aWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9kaXJlY3RfcG5hbWUp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19zdHJ1Y3R1cmVfcHJvcGVydHkp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGhhc19vd25fc3RydWN0dXJlX3Byb3Bl
cnR5KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChpbl9zdHJ1Y3R1cmVfcHJvcGVy
dHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVfc2NvcGUpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNoZWNrX3RkeikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDcgKzYxOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wQ29kZVR5cGU+CisgICAgICAgIHZvaWQgZW1pdF9vcF9o
YXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX293bl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX2luZGV4ZWRfcHJv
cGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9kaXJl
Y3RfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzMSw5ICsxMTMxLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJ
bnN0cnUKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPgordm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ29kZVR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUu
bV9lbnVtZXJhdG9yOwpAQCAtMTE1MCwyMyArMTE1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9o
YXNfc3RydWN0dXJlX3Byb3BlcnR5CiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJl
X3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJblN0cnVjdHVyZVByb3Bl
cnR5PigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKLQotICAgIGVtaXRMb2FkUGF5
bG9hZChiYXNlLCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2Up
OworICAgIGVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNTdHJ1Y3R1cmVQ
cm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGVtaXRMb2FkUGF5bG9hZChl
bnVtZXJhdG9yLCByZWdUMSk7Cit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfb3duX3N0cnVjdHVyZV9w
cm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVt
aXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eUltcGw8T3BIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0
eT4oY3VycmVudEluc3RydWN0aW9uKTsKK30KIAotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKSk7Ci0gICAgCi0gICAgbW92ZShUcnVz
dGVkSW1tMzIoMSksIHJlZ1QwKTsKLSAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwordm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5
SW1wbDxPcEluU3RydWN0dXJlUHJvcGVydHk+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzU0LDkgKzEzNTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2FycmF5X3dpdGhfc2l6ZShjbwogfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLXZvaWQgSklU
OjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKKwordGVtcGxhdGUgPHR5cGVuYW1lIE9wQ29kZVR5cGU+Cit2b2lkIEpJ
VDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KCk7CisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDb2RlVHlwZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5t
X2VudW1lcmF0b3I7CkBAIC0xMzcyLDIyICsxMzc0LDE5IEBAIHZvaWQgSklUOjplbWl0X29wX2hh
c19zdHJ1Y3R1cmVfcHJvcGVydHkKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVy
ZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5TdHJ1Y3R1cmVQcm9w
ZXJ0eT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3I7CisgICAgZW1pdF9vcF9oYXNf
c3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5z
dHJ1Y3Rpb24pOworfQogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihlbnVtZXJhdG9yLCByZWdUMSk7Ci0gICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKK3ZvaWQgSklUOjplbWl0X29w
X2hhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5SW1wbDxPcEhh
c093blN0cnVjdHVyZVByb3BlcnR5PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQogCi0gICAgbG9h
ZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpKTsK
LSAgICAKLSAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRy
dWUpKSksIHJlZ1QwKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit2b2lkIEpJ
VDo6ZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlJbXBs
PE9wSW5TdHJ1Y3R1cmVQcm9wZXJ0eT4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI4
NjgsNiArMjg2OCwxMCBAQCBsbGludE9wV2l0aFJldHVybihvcF9oYXNfc3RydWN0dXJlX3Byb3Bl
CiAgICAgaGFzU3RydWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0Y2gsICByZXR1
cm4sIF9zbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKIAorbGxpbnRPcFdp
dGhSZXR1cm4ob3BfaGFzX293bl9zdHJ1Y3R1cmVfcHJvcGVydHksIE9wSGFzT3duU3RydWN0dXJl
UHJvcGVydHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgaGFzU3Ry
dWN0dXJlUHJvcGVydHlJbXBsKHNpemUsIGdldCwgZGlzcGF0Y2gsICByZXR1cm4sIF9zbG93X3Bh
dGhfaGFzX293bl9zdHJ1Y3R1cmVfcHJvcGVydHkpCitlbmQpCisKIGxsaW50T3BXaXRoUmV0dXJu
KG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3BlcnR5LCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1w
bChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2luX3N0cnVjdHVyZV9w
cm9wZXJ0eSkKIGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI2MjIyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMTc3Miw2ICsxNzcyLDcgQEAgc2xvd1BhdGhPcChoYXNfaW5kZXhlZF9wcm9wZXJ0eSkK
IAogaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoaGFzX3N0cnVjdHVyZV9wcm9wZXJ0
eSkKKyAgICBzbG93UGF0aE9wKGhhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5KQogICAgIHNsb3dQ
YXRoT3AoaW5fc3RydWN0dXJlX3Byb3BlcnR5KQogZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
NCw2ICsxNDQ0LDE5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb24K
ICAgICAgICAgLy8gUmVmbGVjdC5hcHBseSB5ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjY4LgogICAgICAgICBpZiAoIWRvdC0+YmFzZSgpLT5pc1Jl
c29sdmVOb2RlKCkgfHwgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlk
ZW50aWZpZXIoKSAhPSAiUmVmbGVjdCIpCiAgICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxs
T3JBcHBseUNoaWxkRGVwdGgpOworICAgIH0gZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVy
IAorICAgICAgICAmJiBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmhh
c093blByb3BlcnR5CisgICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUKKyAgICAgICAgJiYgYXJn
cy0+bV9saXN0Tm9kZS0+bV9leHByCisgICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUtPm1fZXhw
ci0+aXNSZXNvbHZlTm9kZSgpCisgICAgICAgICYmICFhcmdzLT5tX2xpc3ROb2RlLT5tX25leHQK
KyAgICAgICAgJiYgZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKQorICAgICAgICAmJiBzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZs
ZWN0IikgeworICAgICAgICAvLyBXZSBtYXRjaCB0aGUgQVNUIHBhdHRlcm46CisgICAgICAgIC8v
IDxyZXNvbHZlTm9kZT4uaGFzT3duUHJvcGVydHkoPHJlc29sdmVOb2RlPikKKyAgICAgICAgLy8g
aS5lOgorICAgICAgICAvLyBvLmhhc093blByb3BlcnR5KHApCisgICAgICAgIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOwogICAgIH0KICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5lIEhhc093blByb3BlcnR5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAg
eworICAgIH0KKwogICAgIGlubGluZSBQb3N0Zml4Tm9kZTo6UG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgOiBQcmVm
aXhOb2RlKGxvY2F0aW9uLCBleHByLCBvcGVyLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDExLDYgKzEwMTEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNp
emVfdCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseTsKICAgICB9OwogCisgICAgY2xh
c3MgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgSGFzT3duUHJvcGVydHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IGZpbmFsOworICAgIH07CisKICAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIyLDcgKzEw
MjIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2VudW1lcmFibGVfCiB7CiAgICAg
QkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0RW51bWVyYWJsZUxlbmd0
aD4oKTsKLSAgICBKU1ZhbHVlIGVudW1lcmF0b3JWYWx1ZSA9IEdFVChieXRlY29kZS5tX2Jhc2Up
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGVudW1lcmF0b3JWYWx1ZSA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIGlmIChlbnVtZXJhdG9yVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgUkVUVVJOKGpzTnVtYmVyKDApKTsKIApAQCAtMTAzNiw3ICsxMDM2
LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19pbmRleGVkX3BybwogICAgIEJFR0lO
KCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc0luZGV4ZWRQcm9wZXJ0eT4oKTsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAg
SlNPYmplY3QqIGJhc2UgPSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogYmFzZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5KS5qc1Zh
bHVlKCk7CiAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNl
LT5zdHJ1Y3R1cmUodm0pKTsKQEAgLTEwNDgsNyArMTA0OCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9oYXNfc3RydWN0dXJlX3AKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKLSAgICBKU09iamVjdCogYmFz
ZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiBiYXNlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBKU1Zh
bHVlIHByb3BlcnR5ID0gR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChwcm9wZXJ0eS5pc1N0cmluZygpKTsKQEAgLTEwNjMsNiArMTA2MywyNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9wCiAgICAgUkVUVVJOKGpz
Qm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsK
IH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5
KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc093blN0
cnVjdHVyZVByb3BlcnR5PigpOworICAgIEpTVmFsdWUgYmFzZSA9IEdFVF9DKGJ5dGVjb2RlLm1f
YmFzZSkuanNWYWx1ZSgpOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKj4oR0VUKGJ5dGVjb2RlLm1fZW51bWVyYXRvcikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKKyAg
ICBpZiAoYmFzZS5pc0NlbGwoKSAmJiBiYXNlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5pZCgp
ID09IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpCisgICAgICAgIFJFVFVSTihqc0Jv
b2xlYW4odHJ1ZSkpOworI2VuZGlmCisKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gR0VUKGJ5dGVj
b2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChwcm9wZXJ0eS5p
c1N0cmluZygpKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHkpOwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAgIFJFVFVSTihqc0Jvb2xlYW4ob2JqZWN0
UHJvdG90eXBlSGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUp
KSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkp
CiB7CiAgICAgQkVHSU4oKTsKQEAgLTEwODIsNyArMTEwMyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9oYXNfZ2VuZXJpY19wcm8KIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BIYXNHZW5lcmljUHJvcGVydHk+KCk7Ci0gICAgSlNPYmplY3QqIGJhc2Ug
PSBHRVQoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogYmFzZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgSlNWYWx1
ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CiAgICAgQVNT
RVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOwpAQCAtMTEwOSw3ICsxMTMwLDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbgogewogICAgIEJFR0lOKCk7CiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByb3BlcnR5RW51bWVyYXRvcj4oKTsKLSAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIGlm
IChiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgUkVUVVJOKHZtLmVtcHR5
UHJvcGVydHlOYW1lRW51bWVyYXRvcigpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2MjIyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTQsNiArMjU0LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90
b19wcm9wZQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGgpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfZ2VuZXJpY19wcm9w
ZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfb3duX3N0cnVjdHVy
ZV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX3N0cnVjdHVy
ZV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19pbmRleGVk
X3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2RpcmVjdF9w
bmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksNiArMTA0
OSwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjCiAgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
Y2FsbEZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwogICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5
RnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogCisgICAgeworICAgICAg
ICBKU1ZhbHVlIGhhc093blByb3BlcnR5RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdFByb3RvdHlwZSgpLT5nZXQodGhpcywgdm0ucHJvcGVydHlOYW1lcy0+aGFzT3duUHJvcGVy
dHkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISFqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
Pih2bSwgaGFzT3duUHJvcGVydHlGdW5jdGlvbikpOworICAgICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGhhc093blByb3Bl
cnR5RnVuY3Rpb24pKTsKKyAgICB9CisKICNkZWZpbmUgSU5JVF9QUklWQVRFX0dMT0JBTChmdW5j
TmFtZSwgY29kZSkgXAogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNjIyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwzMyArODQsNDIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodmFsdWVPYmopOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorYm9vbCBvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGJhc2UudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hl
KiBoYXNPd25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJlSGFzT3duUHJvcGVydHlDYWNoZSgpOwog
ICAgIGlmIChPcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQo
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRo
aXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKCpyZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICBib29sIHJlc3VsdCA9IHRo
aXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBoYXNPd25Qcm9wZXJ0
eUNhY2hlLT50cnlBZGQodm0sIHNsb3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgcmVzdWx0
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJh
c2UgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdFByb3Rv
dHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90
eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAkocmV2aXNpb24gMjYyMjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDUgKzUxLDYgQEAgcHJpdmF0
ZToKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK2Jv
b2wgb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>