<?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>231975</bug_id>
          
          <creation_ts>2021-10-19 12:29:40 -0700</creation_ts>
          <short_desc>JSGenericTypedArrayView&lt;Adaptor&gt;::set crashes if the length + objectOffset is &gt; UINT32_MAX</short_desc>
          <delta_ts>2021-11-01 11:01:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>229353</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</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>1806229</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-19 12:29:40 -0700</bug_when>
    <thetext>UINT_MAX (and anything above it) is not a valid array index, so we cannot use JSObject::get(JSGlobalObject*, unsigned) with an index that big.
This was pointed by Yusuke in his review of my recent patch that introduced the problem (https://bugs.webkit.org/show_bug.cgi?id=229353#c21), but I misunderstood the code and thought we could never get values that big at that point, thus only putting a RELEASE_ASSERT. In this patch I instead apply his original suggestion to have a first loop using the (fast) JSObject::get(), and a second loop for any large indices, using a slower but safe code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806231</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-19 12:37:12 -0700</bug_when>
    <thetext>rdar://84402043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806265</commentid>
    <comment_count>2</comment_count>
      <attachid>441780</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-19 13:17:07 -0700</bug_when>
    <thetext>Created attachment 441780
Patch

The new test typed-array-set-large.js is quite slow (4s in release mode on an M1 MBP), so I&apos;d like to put it in a special directory that is not run by EWS by default, but I don&apos;t know how to do that.
Let&apos;s have it checked by EWS at least once right now, since it already caught 2 bugs for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806423</commentid>
    <comment_count>3</comment_count>
      <attachid>441823</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-19 17:23:41 -0700</bug_when>
    <thetext>Created attachment 441823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806443</commentid>
    <comment_count>4</comment_count>
      <attachid>441823</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-19 18:33:58 -0700</bug_when>
    <thetext>Comment on attachment 441823
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:328
&gt; +        size_t safeLengthForGet = std::min(length, static_cast&lt;size_t&gt;(std::numeric_limits&lt;uint32_t&gt;::max())) - objectOffset;

Isn&apos;t it possible that objectOffset is larger than `std::numeric_limits&lt;uint32_t&gt;::max()`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807453</commentid>
    <comment_count>5</comment_count>
      <attachid>442092</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-21 17:09:44 -0700</bug_when>
    <thetext>Created attachment 442092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807457</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-21 17:18:15 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; Comment on attachment 441823 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441823&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:328
&gt; &gt; +        size_t safeLengthForGet = std::min(length, static_cast&lt;size_t&gt;(std::numeric_limits&lt;uint32_t&gt;::max())) - objectOffset;
&gt; 
&gt; Isn&apos;t it possible that objectOffset is larger than
&gt; `std::numeric_limits&lt;uint32_t&gt;::max()`?

I could not create a test case that hits that case, but I still reworked the code to be safe just in case it becomes possible in the future.
The reason why it is hard (and probably impossible) to hit that case currently is the following:
- the only caller that can pass objectOffset != 0 is genericTypedArrayViewProtoFuncSlice (it passes `begin`)
- genericTypedArrayViewProtoFuncSlice returns early without calling JSGenericTypedArrayView&lt;Adaptor&gt;::set if length is == 0.
- length is end - begin
- end and begin are at most thisLength which is at most 4GB.
So if objectOffset/begin is &gt; UINT32_MAX, it must be 4GB, so length is at most 0, and so JSGenericTypedArrayView&lt;Adaptor&gt;::set will never be called at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807712</commentid>
    <comment_count>7</comment_count>
      <attachid>442092</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-22 09:34:55 -0700</bug_when>
    <thetext>Comment on attachment 442092
Patch

Some tests are failing, removing r? and cq? until I look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807868</commentid>
    <comment_count>8</comment_count>
      <attachid>442197</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-22 14:01:52 -0700</bug_when>
    <thetext>Created attachment 442197
Patch

Fixed: I had changed an int into a size_t, and the code was relying on it being decremented until it no longer compared &gt;= 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807994</commentid>
    <comment_count>9</comment_count>
      <attachid>442234</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-22 17:56:47 -0700</bug_when>
    <thetext>Created attachment 442234
Patch

Fix the last bug, which only occurred on some x86_64 machines.
Turns out converting from size_t to double to size_t is not guaranteed to roundtrip, and this caused an issue in genericTypedArrayViewProtoFuncSet.
The fix was fairly simple:
```
-        offset = static_cast&lt;size_t&gt;(std::min(offsetNumber, static_cast&lt;double&gt;(std::numeric_limits&lt;size_t&gt;::max())));
+        if (offsetNumber &lt;= maxSafeInteger() &amp;&amp; offsetNumber &lt;= static_cast&lt;double&gt;(std::numeric_limits&lt;size_t&gt;::max()))
+            offset = offsetNumber;
+        else
+            offset = std::numeric_limits&lt;size_t&gt;::max();
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808006</commentid>
    <comment_count>10</comment_count>
      <attachid>442234</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-22 18:43:20 -0700</bug_when>
    <thetext>Comment on attachment 442234
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:328
&gt; +        size_t safeUnadjustedLength = std::min(length, static_cast&lt;size_t&gt;(MAX_ARRAY_INDEX + 1));

Let&apos;s change this to `static_cast&lt;size_t&gt;(MAX_ARRAY_INDEX) + 1` to ensure MAX_ARRAY_INDEX will exceed it&apos;s max value.
In reality, since it is UINT32_MAX - 1, +1 does not make it 0, but the above form is anyway extra careful without any cost.

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:339
&gt; +            PropertyName property = PropertyName(ident);

This is not necessary since it has implicit constructor from ident. Let&apos;s just pass ident directly to object-&gt;get.

JSValue value = object-&gt;get(globalObject, ident);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808011</commentid>
    <comment_count>11</comment_count>
      <attachid>442243</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-22 19:03:32 -0700</bug_when>
    <thetext>Created attachment 442243
Patch

Apply Yusuke&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810247</commentid>
    <comment_count>12</comment_count>
      <attachid>442863</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-29 14:30:44 -0700</bug_when>
    <thetext>Created attachment 442863
Patch

Trivial rebase, sent to EWS again as I really don&apos;t see how the hell I could have broken this test, especially in this particular way (the symptom looks exactly like I turned ENABLE_APPLE_PAY_COUPON_CODE from 1 to 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810697</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-01 11:01:29 -0700</bug_when>
    <thetext>Committed r285117 (243758@main): &lt;https://commits.webkit.org/243758@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442863.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441780</attachid>
            <date>2021-10-19 13:17:07 -0700</date>
            <delta_ts>2021-10-19 17:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>8024</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDg5YmNiNzc2ODU2Li43Mjk2OTY0ZjRjODIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTkgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZWdyZXNz
LTg0NDAyMDQzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktc2V0LWxh
cmdlLmpzOiBBZGRlZC4KKwogMjAyMS0xMC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFB1dEJ5VmFsJ3MgY2hpbGQ1IHNob3VsZCBiZSBLbm93
bkludDMyVXNlIC8gSW50NTJSZXBVc2UgaW4gRlRMCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9yZWdyZXNzLTg0NDAyMDQzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy04NDQwMjA0My5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzMjQ2ZGExYmZkYQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanMKQEAg
LTAsMCArMSw0IEBACisvL0Bza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0ByZXF1aXJlT3B0aW9u
cygiLS13YXRjaGRvZz0xMDAwIiwgIi0td2F0Y2hkb2ctZXhjZXB0aW9uLW9rIikKKworbmV3IFVp
bnQ4QXJyYXkoe2xlbmd0aDogMioqMzJ9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5
cGVkLWFycmF5LXNldC1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1s
YXJnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjMjFkNDZh
OTM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1s
YXJnZS5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Bza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgk
YXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8v
QHJ1bkRlZmF1bHQoKQorCitsZXQgZ2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKK2xldCBzb3Vy
Y2VMZW5ndGggPSAyICogZ2lnYTsKK2xldCBkZXN0aW5hdGlvbkxlbmd0aCA9IDMgKiBnaWdhOwor
bGV0IG9mZnNldCA9IGdpZ2E7CisKK3ZhciBzb3VyY2UgPSBuZXcgVWludDhDbGFtcGVkQXJyYXko
c291cmNlTGVuZ3RoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgc291cmNl
W2ldID0gaSAmIDB4M0Y7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgbGV0
IGluZGV4ID0gZ2lnYSArIGk7CisgICAgc291cmNlW2luZGV4XSA9IGluZGV4ICYgMHgzRgorfQor
Cit2YXIgZGVzdGluYXRpb24gPSBuZXcgSW50OEFycmF5KGRlc3RpbmF0aW9uTGVuZ3RoKTsKK2Rl
c3RpbmF0aW9uLnNldChzb3VyY2UsIG9mZnNldCk7CisKKy8vIEJlZm9yZSB0aGUgb2Zmc2V0Cits
ZXQgdmFsdWUgPSBkZXN0aW5hdGlvbls0Ml07CitpZiAodmFsdWUgIT09IDApCisgICAgdGhyb3cg
IkF0IGluZGV4ICIgKyA0MiArICIsIGV4cGVjdGVkIDAgYnV0IGdvdCAiICsgdmFsdWU7CisKKy8v
IEFmdGVyIHRoZSBvZmZzZXQgYnV0IGJlZm9yZSBJTlQzMl9NQVgKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICBsZXQgaW5kZXggPSBvZmZzZXQgKyBpOworICAgIGxldCB2YWx1
ZSA9IGRlc3RpbmF0aW9uW2luZGV4XTsKKyAgICBsZXQgZXhwZWN0ZWRWYWx1ZSA9IChpbmRleCAt
IG9mZnNldCkgJiAweDNGOworICAgIGlmICh2YWx1ZSAhPSBleHBlY3RlZFZhbHVlKQorICAgICAg
ICB0aHJvdyAiQXQgaW5kZXggIiArIGluZGV4ICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkVmFs
dWUgKyAiIGJ1dCBnb3QgIiArIHZhbHVlOworfQorCisvLyBBZnRlciB0aGUgb2Zmc2V0IGFuZCBn
cmVhdGVyIHRoYW4gSU5UMzJfTUFYCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7Cisg
ICAgbGV0IGluZGV4ID0gMiAqIGdpZ2EgKyBpOworICAgIGxldCB2YWx1ZSA9IGRlc3RpbmF0aW9u
W2luZGV4XTsKKyAgICBsZXQgZXhwZWN0ZWRWYWx1ZSA9IChpbmRleCAtIG9mZnNldCkgJiAweDNG
OworICAgIGlmICh2YWx1ZSAhPSBleHBlY3RlZFZhbHVlKQorICAgICAgICB0aHJvdyAiQXQgaW5k
ZXggIiArIGluZGV4ICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkVmFsdWUgKyAiIGJ1dCBnb3Qg
IiArIHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTc2NGJjOTk3OTQ1Li5i
OGJiZGQ1MzhiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisy
MDIxLTEwLTE5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCBjcmFzaGVzIGlmIHRoZSBs
ZW5ndGggKyBvYmplY3RPZmZzZXQgaXMgPiBVSU5UMzJfTUFYCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5NzUKKyAgICAgICAgcmRhcjovLzg0NDAy
MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUlO
VF9NQVggKGFuZCBhbnl0aGluZyBhYm92ZSBpdCkgaXMgbm90IGEgdmFsaWQgYXJyYXkgaW5kZXgs
IHNvIHdlIGNhbm5vdCB1c2UgSlNPYmplY3Q6OmdldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
KSB3aXRoIGFuIGluZGV4IHRoYXQgYmlnLgorICAgICAgICBUaGlzIHdhcyBwb2ludGVkIGJ5IFl1
c3VrZSBpbiBoaXMgcmV2aWV3IG9mIG15IHJlY2VudCBwYXRjaCB0aGF0IGludHJvZHVjZWQgdGhl
IHByb2JsZW0gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMj
YzIxKSwKKyAgICAgICAgYnV0IEkgbWlzdW5kZXJzdG9vZCB0aGUgY29kZSBhbmQgdGhvdWdodCB3
ZSBjb3VsZCBuZXZlciBnZXQgdmFsdWVzIHRoYXQgYmlnIGF0IHRoYXQgcG9pbnQsIHRodXMgb25s
eSBwdXR0aW5nIGEgUkVMRUFTRV9BU1NFUlQuCisgICAgICAgIEluIHRoaXMgcGF0Y2ggSSBpbnN0
ZWFkIGFwcGx5IGhpcyBvcmlnaW5hbCBzdWdnZXN0aW9uIHRvIGhhdmUgYSBmaXJzdCBsb29wIHVz
aW5nIHRoZSAoZmFzdCkgSlNPYmplY3Q6OmdldCgpLAorICAgICAgICBhbmQgYSBzZWNvbmQgbG9v
cCBmb3IgYW55IGxhcmdlIGluZGljZXMsIHVzaW5nIGEgc2xvd2VyIGJ1dCBzYWZlIGNvZGUgcGF0
aC4KKworICAgICAgICBJIGFsc28gZml4ZWQgYW4gdW5yZWxhdGVkIGJ1ZyBJIG5vdGljZWQgaW4g
Q2xvYmJlcml6ZS9BYnN0cmFjdEludGVycHJldGVyIHdoaWxlIHRlc3RpbmcgdGhlIHJlc3Qgb2Yg
dGhlIHBhdGNoOgorICAgICAgICB0aGV5IHdlcmUgbm90IGF3YXJlIHRoYXQgTmV3VHlwZWRBcnJh
eSBjYW4gdGFrZSBhIEludDUyUmVwVXNlIGNoaWxkLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQpOgorCiAyMDIxLTEw
LTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
VXNlIFVTRShMQVJHRV9UWVBFRF9BUlJBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBhMWNkNjk5
NDRhYjEuLjFlNTg3OGEzN2QzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjk1OCw2ICsyOTU4
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2Ug
SW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhZDVjMjcwMjBk
Ni4uZjY2YTk4ZWM0ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtMTU1Miw2ICsxNTUyLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBj
YXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6
CiAgICAgICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgICAgICB3cml0ZShI
ZWFwT2JqZWN0Q291bnQpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCBhM2RkYzFmODM2YTcuLmViNTQ0ZGViODI2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKQEAgLTMxMywxOSArMzEzLDMzIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHdvbid0IGV2ZXIg
Y2FsbCBvYmplY3QtPmdldCgpIHdpdGggYW4gaW5kZXggb2YgVUlOVF9NQVggb3IgbW9yZQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChzdGF0aWNfY2FzdDx1
aW50NjRfdD4obGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9iamVjdE9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
KSk7Ci0gICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5v
dywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKKyAgICAgICAg
YXV0byB0cnlTZXRJbmRleCA9IFsmXShzaXplX3QgaW5kZXgsIEpTVmFsdWUgdmFsdWUpIC0+IGJv
b2wgeworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgIXN1Y2Nlc3MpOwogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisgICAgICAgIC8vIEl0
IGlzIG5vdCB2YWxpZCB0byBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9m
IFVJTlRfTUFYIG9yIG1vcmUuCisgICAgICAgIC8vIFNvIHdlIGl0ZXJhdGUgaW4gdGhlIG9wdGlt
aXplZCBsb29wIHVwIHRvIFVJTlRfTUFYLTEsIHRoZW4gaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8g
ZG8gYmV5b25kIHRoaXMsIHdlIHJlbHkgb24gc2xvd2VyIGNvZGUuCisgICAgICAgIHNpemVfdCBz
YWZlTGVuZ3RoRm9yR2V0ID0gc3RkOjptaW4obGVuZ3RoLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpIC0gb2JqZWN0T2Zmc2V0OworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhZmVMZW5ndGhGb3JHZXQ7ICsraSkgeworICAg
ICAgICAgICAgQVNTRVJUKGkgKyBvYmplY3RPZmZzZXQgPD0gTUFYX0FSUkFZX0lOREVYKTsKKyAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXRyeVNldEluZGV4
KG9mZnNldCArIGksIHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHNhZmVMZW5ndGhGb3JHZXQ7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b20odm0sIHN0YXRpY19jYXN0PHVpbnQ2NF90PihpKSk7CisgICAgICAgICAgICBQcm9wZXJ0eU5h
bWUgcHJvcGVydHkgPSBQcm9wZXJ0eU5hbWUoaWRlbnQpOworICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlT
ZXRJbmRleChvZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441823</attachid>
            <date>2021-10-19 17:23:41 -0700</date>
            <delta_ts>2021-10-21 17:09:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>8040</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDg5YmNiNzc2ODU2Li43Mjk2OTY0ZjRjODIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTkgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZWdyZXNz
LTg0NDAyMDQzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktc2V0LWxh
cmdlLmpzOiBBZGRlZC4KKwogMjAyMS0xMC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFB1dEJ5VmFsJ3MgY2hpbGQ1IHNob3VsZCBiZSBLbm93
bkludDMyVXNlIC8gSW50NTJSZXBVc2UgaW4gRlRMCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9yZWdyZXNzLTg0NDAyMDQzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy04NDQwMjA0My5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzMjQ2ZGExYmZkYQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanMKQEAg
LTAsMCArMSw0IEBACisvL0Bza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0ByZXF1aXJlT3B0aW9u
cygiLS13YXRjaGRvZz0xMDAwIiwgIi0td2F0Y2hkb2ctZXhjZXB0aW9uLW9rIikKKworbmV3IFVp
bnQ4QXJyYXkoe2xlbmd0aDogMioqMzJ9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5
cGVkLWFycmF5LXNldC1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1s
YXJnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkyYTY5MTk0
YjllMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1s
YXJnZS5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Bza2lwCisvLyBUaGlzIHRlc3RzIHRha2VzID40
cyBldmVuIGluIHJlbGVhc2UgbW9kZSBvbiBhbiBNMSBNQlAsIHNvIEknZCByYXRoZXIgYXZvaWQg
cnVubmluZyBpdCBvbiBFV1MgYnkgZGVmYXVsdC4KKworbGV0IGdpZ2EgPSAxMDI0ICogMTAyNCAq
IDEwMjQ7CitsZXQgc291cmNlTGVuZ3RoID0gMiAqIGdpZ2E7CitsZXQgZGVzdGluYXRpb25MZW5n
dGggPSAzICogZ2lnYTsKK2xldCBvZmZzZXQgPSBnaWdhOworCit2YXIgc291cmNlID0gbmV3IFVp
bnQ4Q2xhbXBlZEFycmF5KHNvdXJjZUxlbmd0aCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQorICAgIHNvdXJjZVtpXSA9IGkgJiAweDNGOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgIGxldCBpbmRleCA9IGdpZ2EgKyBpOworICAgIHNvdXJjZVtpbmRleF0gPSBp
bmRleCAmIDB4M0YKK30KKwordmFyIGRlc3RpbmF0aW9uID0gbmV3IEludDhBcnJheShkZXN0aW5h
dGlvbkxlbmd0aCk7CitkZXN0aW5hdGlvbi5zZXQoc291cmNlLCBvZmZzZXQpOworCisvLyBCZWZv
cmUgdGhlIG9mZnNldAorbGV0IHZhbHVlID0gZGVzdGluYXRpb25bNDJdOworaWYgKHZhbHVlICE9
PSAwKQorICAgIHRocm93ICJBdCBpbmRleCAiICsgNDIgKyAiLCBleHBlY3RlZCAwIGJ1dCBnb3Qg
IiArIHZhbHVlOworCisvLyBBZnRlciB0aGUgb2Zmc2V0IGJ1dCBiZWZvcmUgSU5UMzJfTUFYCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgbGV0IGluZGV4ID0gb2Zmc2V0ICsg
aTsKKyAgICBsZXQgdmFsdWUgPSBkZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVk
VmFsdWUgPSAoaW5kZXggLSBvZmZzZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0
ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVk
ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgZ290ICIgKyB2YWx1ZTsKK30KKworLy8gQWZ0ZXIg
dGhlIG9mZnNldCBhbmQgZ3JlYXRlciB0aGFuIElOVDMyX01BWAorZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgIGxldCBpbmRleCA9IDIgKiBnaWdhICsgaTsKKyAgICBsZXQgdmFs
dWUgPSBkZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXgg
LSBvZmZzZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAg
ICAgdGhyb3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZh
bHVlICsgIiBidXQgZ290ICIgKyB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDE3NjRiYzk5Nzk0NS4uYjhiYmRkNTM4YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAyMS0xMC0xOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBw
bGUuY29tPgorCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQg
Y3Jhc2hlcyBpZiB0aGUgbGVuZ3RoICsgb2JqZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTc1CisgICAg
ICAgIHJkYXI6Ly84NDQwMjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVJTlRfTUFYIChhbmQgYW55dGhpbmcgYWJvdmUgaXQpIGlzIG5vdCBhIHZh
bGlkIGFycmF5IGluZGV4LCBzbyB3ZSBjYW5ub3QgdXNlIEpTT2JqZWN0OjpnZXQoSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCkgd2l0aCBhbiBpbmRleCB0aGF0IGJpZy4KKyAgICAgICAgVGhpcyB3
YXMgcG9pbnRlZCBieSBZdXN1a2UgaW4gaGlzIHJldmlldyBvZiBteSByZWNlbnQgcGF0Y2ggdGhh
dCBpbnRyb2R1Y2VkIHRoZSBwcm9ibGVtIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MzUzI2MyMSksCisgICAgICAgIGJ1dCBJIG1pc3VuZGVyc3Rvb2QgdGhlIGNv
ZGUgYW5kIHRob3VnaHQgd2UgY291bGQgbmV2ZXIgZ2V0IHZhbHVlcyB0aGF0IGJpZyBhdCB0aGF0
IHBvaW50LCB0aHVzIG9ubHkgcHV0dGluZyBhIFJFTEVBU0VfQVNTRVJULgorICAgICAgICBJbiB0
aGlzIHBhdGNoIEkgaW5zdGVhZCBhcHBseSBoaXMgb3JpZ2luYWwgc3VnZ2VzdGlvbiB0byBoYXZl
IGEgZmlyc3QgbG9vcCB1c2luZyB0aGUgKGZhc3QpIEpTT2JqZWN0OjpnZXQoKSwKKyAgICAgICAg
YW5kIGEgc2Vjb25kIGxvb3AgZm9yIGFueSBsYXJnZSBpbmRpY2VzLCB1c2luZyBhIHNsb3dlciBi
dXQgc2FmZSBjb2RlIHBhdGguCisKKyAgICAgICAgSSBhbHNvIGZpeGVkIGFuIHVucmVsYXRlZCBi
dWcgSSBub3RpY2VkIGluIENsb2JiZXJpemUvQWJzdHJhY3RJbnRlcnByZXRlciB3aGlsZSB0ZXN0
aW5nIHRoZSByZXN0IG9mIHRoZSBwYXRjaDoKKyAgICAgICAgdGhleSB3ZXJlIG5vdCBhd2FyZSB0
aGF0IE5ld1R5cGVkQXJyYXkgY2FuIHRha2UgYSBJbnQ1MlJlcFVzZSBjaGlsZC4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KToKKwogMjAyMS0xMC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFVzZSBVU0UoTEFSR0VfVFlQRURfQVJSQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggYTFjZDY5OTQ0YWIxLi4xZTU4NzhhMzdkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTI5NTgsNiArMjk1OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
ewogICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApp
bmRleCA5YWQ1YzI3MDIwZDYuLmY2NmE5OGVjNGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE1NTIsNiArMTU1Miw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBj
YXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwogICAg
ICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTNkZGMxZjgzNmE3Li5lYjU0NGRlYjgyNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMTMsMTkgKzMxMywzMyBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3Vj
Y2VzcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBWZXJpZnkgdGhh
dCB3ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRf
TUFYIG9yIG1vcmUKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
YmplY3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSkpOwotICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNh
c2UuIEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5n
ZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2
YWx1ZSk7CisgICAgICAgIGF1dG8gdHJ5U2V0SW5kZXggPSBbJl0oc2l6ZV90IGluZGV4LCBKU1Zh
bHVlIHZhbHVlKSAtPiBib29sIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4
KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICAgICAgICAgIGlmICghc3Vj
Y2VzcykgewogICAgICAgICAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
OworICAgICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkg
d2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3JlLgorICAgICAgICAvLyBTbyB3ZSBpdGVy
YXRlIGluIHRoZSBvcHRpbWl6ZWQgbG9vcCB1cCB0byBVSU5UX01BWC0xLCB0aGVuIGlmIHRoZXJl
IGlzIGFueXRoaW5nIHRvIGRvIGJleW9uZCB0aGlzLCB3ZSByZWx5IG9uIHNsb3dlciBjb2RlLgor
ICAgICAgICBzaXplX3Qgc2FmZUxlbmd0aEZvckdldCA9IHN0ZDo6bWluKGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSAtIG9i
amVjdE9mZnNldDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYWZlTGVuZ3RoRm9y
R2V0OyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChpICsgb2JqZWN0T2Zmc2V0IDw9IE1BWF9B
UlJBWV9JTkRFWCk7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAg
aWYgKCF0cnlTZXRJbmRleChvZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzYWZlTGVuZ3Ro
Rm9yR2V0OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tKHZtLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaSkpOworICAgICAg
ICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5ID0gUHJvcGVydHlOYW1lKGlkZW50KTsKKyAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGlmICghdHJ5U2V0SW5kZXgob2Zmc2V0ICsgaSwgdmFsdWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442092</attachid>
            <date>2021-10-21 17:09:44 -0700</date>
            <delta_ts>2021-10-22 14:01:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>28742</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTg3MzFlZjJlNTQ0Li4xYzQzMzkwYTg1N2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTAtMjEgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJlZ3Jlc3MtODQ0MDIw
NDMgaXMgdGhlIHRlc3RjYXNlIHRoYXQgcmV2ZWFsZWQgdGhlIHByb2JsZW0uCisgICAgICAgIC0g
dHlwZWQtYXJyYXktc2V0LWxhcmdlKC1vZmZzZXQpIHRlc3QgdGhlIHNhbWUgZnVuY3Rpb24sIGlu
IHRoZSB0eXBlZC1hcnJheSB0byB0eXBlZC1hcnJheSBjYXNlCisgICAgICAgIC0gdHlwZWQtYXJy
YXktbGFyZ2Utc2xpY2UgdGVzdHMgdGhlIG9ubHkgY2FsbGVyIHRoYXQgcGFzc2VzIGEgbm9uLTAg
b2JqZWN0T2Zmc2V0LCBhbmQgZm91bmQgb3RoZXIgaXNzdWVzIHdpdGggaXQKKyAgICAgICAgLSB0
eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMgaXMganVzdCBhbm90aGVyIHRl
c3Qgb2YgdGhlIFdhc200R0IgY2hhbmdlIHRoYXQgSSBoYWQgZm9yZ290dGVuIHRvIGNvbW1pdAor
CisgICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cGVjdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFy
cmF5LXNldC1sYXJnZS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy90eXBlZC1h
cnJheS1zZXQtbGFyZ2UuanM6IEFkZGVkLgorCiAyMDIxLTEwLTIxICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW5zZXJ0ZWQgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgZm9yIFB1dEJ5VmFsIHNob3VsZCBoYXZlIE5vZGVSZXN1bHRJbnQ1Mgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy04NDQwMjA0My5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lMzI0NmRhMWJmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9yZWdyZXNzLTg0NDAyMDQzLmpzCkBAIC0wLDAgKzEsNCBAQAorLy9Ac2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorLy9AcmVxdWlyZU9wdGlvbnMoIi0td2F0Y2hkb2c9MTAwMCIsICItLXdhdGNoZG9n
LWV4Y2VwdGlvbi1vayIpCisKK25ldyBVaW50OEFycmF5KHtsZW5ndGg6IDIqKjMyfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjVmN2FiZmRj
ODYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1v
b2ItZXZlbnR1YWxseS1ub3QuanMKQEAgLTAsMCArMSwyOSBAQAorLy9AIHNraXAKKy8vIFRoaXMg
dGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9uIGFuIE0xIE1CUCwgc28gSSdk
IHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZhdWx0LgorCitsZXQgb25lR2ln
YSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVu
Z3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgdmFyIGluZGV4ID0gYWN0dWFsTGVuZ3RoICsgMTA7CisgICAgICAgIHZhciB2YWx1
ZSA9IDQyOworICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisgICAg
ICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0
ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAg
ICB2YXIgaW5kZXggPSAxMDsKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICB2YXIgcmVz
dWx0ID0gYXJyYXlbaW5kZXhdCisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJJbiBvdXQtb2YtYm91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIg
KyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAz
ICogb25lR2lnYTsKK2xldCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcg
VWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBl
ZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFy
Z2Utc2xpY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1zbGljZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwNzBlYmFhOGRkZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNlLmpz
CkBAIC0wLDAgKzEsMzUgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0
ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKworbGV0IGdp
Z2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2xldCBhcnJheSA9IG5ldyBJbnQ4QXJyYXkoNCAq
IGdpZ2EpOworYXJyYXlbMF0gPSAxOworYXJyYXlbZ2lnYV0gPSAyOworYXJyYXlbMiAqIGdpZ2Fd
ID0gMzsKK2FycmF5WzMgKiBnaWdhXSA9IDQ7CisKK2Z1bmN0aW9uIGV4cGVjdChiYXNlLCBpbmRl
eCwgZXhwZWN0ZWQsIHN0cmluZykKK3sKKyAgICBsZXQgcmVzdWx0ID0gYmFzZSBbaW5kZXhdCisg
ICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkV4cGVjdGVkICIgKyBl
eHBlY3RlZCArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiB3aGlsZSB0ZXN0aW5nICIgKyBzdHJp
bmc7Cit9CisKK2xldCBzbGljZTAgPSBhcnJheS5zbGljZShnaWdhKTsKK2V4cGVjdChzbGljZTAs
IDAsIDIsICJzbGljZTAiKTsKK2V4cGVjdChzbGljZTAsIGdpZ2EsIDMsICJzbGljZTAiKTsKK2V4
cGVjdChzbGljZTAsIDIqZ2lnYSwgNCwgInNsaWNlMCIpOworCitsZXQgc3Vic2xpY2UwID0gc2xp
Y2UwLnNsaWNlKGdpZ2EpOworZXhwZWN0KHN1YnNsaWNlMCwgMCwgMywgInN1YnNsaWNlMCIpOwor
ZXhwZWN0KHN1YnNsaWNlMCwgZ2lnYSwgNCwgInN1YnNsaWNlMCIpOworCitsZXQgc2xpY2UxID0g
YXJyYXkuc2xpY2UoZ2lnYSwgMiAqIGdpZ2EpOworZXhwZWN0KHNsaWNlMSwgMCwgMiwgInNsaWNl
MSIpOworCitsZXQgc2xpY2UyID0gYXJyYXkuc2xpY2UoMyAqIGdpZ2EpOworZXhwZWN0KHNsaWNl
MiwgMCwgNCwgInNsaWNlMiIpOworCitsZXQgc2xpY2UzID0gYXJyYXkuc2xpY2UoNCAqIGdpZ2Ep
OworbGV0IHN1YlNsaWNlMyA9IHNsaWNlMy5zbGljZSgwKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdHlwZWQtYXJyYXktc2V0LWxhcmdlLW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LXNldC1sYXJnZS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43YjNjOWM5YjIzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2Utb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMjggQEAK
Ky8vQHNraXAKKy8vIFRoaXMgdGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9u
IGFuIE0xIE1CUCwgc28gSSdkIHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZh
dWx0LgorCitsZXQgZ2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKK2xldCBzb3VyY2VMZW5ndGgg
PSBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gNCAqIGdpZ2E7CitsZXQgb2Zmc2V0ID0g
MyAqIGdpZ2E7CisKK3ZhciBzb3VyY2UgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoc291cmNlTGVu
Z3RoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgc291cmNlW2ldID0gaSAm
IDB4M0Y7CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5n
dGgpOworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBv
ZmZzZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAg
ICB0aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1
ZTsKKworLy8gQWZ0ZXIgdGhlIG9mZnNldAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0IHZhbHVlID0gZGVzdGluYXRp
b25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGluZGV4IC0gb2Zmc2V0KSAmIDB4
M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisgICAgICAgIHRocm93ICJBdCBp
bmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IGdv
dCAiICsgdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1z
ZXQtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTE2MjQ0ZWFkYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKQEAg
LTAsMCArMSw0MSBAQAorLy9Ac2tpcAorLy8gVGhpcyB0ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiBy
ZWxlYXNlIG1vZGUgb24gYW4gTTEgTUJQLCBzbyBJJ2QgcmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQg
b24gRVdTIGJ5IGRlZmF1bHQuCisKK2xldCBnaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworbGV0
IHNvdXJjZUxlbmd0aCA9IDIgKiBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gMyAqIGdp
Z2E7CitsZXQgb2Zmc2V0ID0gZ2lnYTsKKwordmFyIHNvdXJjZSA9IG5ldyBVaW50OENsYW1wZWRB
cnJheShzb3VyY2VMZW5ndGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBz
b3VyY2VbaV0gPSBpICYgMHgzRjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICBsZXQgaW5kZXggPSBnaWdhICsgaTsKKyAgICBzb3VyY2VbaW5kZXhdID0gaW5kZXggJiAweDNG
Cit9CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5ndGgp
OworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBvZmZz
ZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAgICB0
aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1ZTsK
KworLy8gQWZ0ZXIgdGhlIG9mZnNldCBidXQgYmVmb3JlIElOVDMyX01BWAorZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0
IHZhbHVlID0gZGVzdGluYXRpb25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGlu
ZGV4IC0gb2Zmc2V0KSAmIDB4M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisg
ICAgICAgIHRocm93ICJBdCBpbmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0
ZWRWYWx1ZSArICIgYnV0IGdvdCAiICsgdmFsdWU7Cit9CisKKy8vIEFmdGVyIHRoZSBvZmZzZXQg
YW5kIGdyZWF0ZXIgdGhhbiBJTlQzMl9NQVgKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kp
IHsKKyAgICBsZXQgaW5kZXggPSBvZmZzZXQgKyBnaWdhICsgaTsKKyAgICBsZXQgdmFsdWUgPSBk
ZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXggLSBvZmZz
ZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgdGhy
b3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZhbHVlICsg
IiBidXQgZ290ICIgKyB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OTAy
NzU3ZDUwYS4uNzUxMDg3OGRmZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAyMS0xMC0yMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29t
PgorCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hl
cyBpZiB0aGUgbGVuZ3RoICsgb2JqZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTc1CisgICAgICAgIHJk
YXI6Ly84NDQwMjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVJTlRfTUFYIChhbmQgYW55dGhpbmcgYWJvdmUgaXQpIGlzIG5vdCBhIHZhbGlkIGFy
cmF5IGluZGV4LCBzbyB3ZSBjYW5ub3QgdXNlIEpTT2JqZWN0OjpnZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCkgd2l0aCBhbiBpbmRleCB0aGF0IGJpZy4KKyAgICAgICAgVGhpcyB3YXMgcG9p
bnRlZCBieSBZdXN1a2UgaW4gaGlzIHJldmlldyBvZiBteSByZWNlbnQgcGF0Y2ggdGhhdCBpbnRy
b2R1Y2VkIHRoZSBwcm9ibGVtIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5MzUzI2MyMSksCisgICAgICAgIGJ1dCBJIG1pc3VuZGVyc3Rvb2QgdGhlIGNvZGUgYW5k
IHRob3VnaHQgd2UgY291bGQgbmV2ZXIgZ2V0IHZhbHVlcyB0aGF0IGJpZyBhdCB0aGF0IHBvaW50
LCB0aHVzIG9ubHkgcHV0dGluZyBhIFJFTEVBU0VfQVNTRVJULgorICAgICAgICBJbiB0aGlzIHBh
dGNoIEkgaW5zdGVhZCBhcHBseSBoaXMgb3JpZ2luYWwgc3VnZ2VzdGlvbiB0byBoYXZlIGEgZmly
c3QgbG9vcCB1c2luZyB0aGUgKGZhc3QpIEpTT2JqZWN0OjpnZXQoKSwKKyAgICAgICAgYW5kIGEg
c2Vjb25kIGxvb3AgZm9yIGFueSBsYXJnZSBpbmRpY2VzLCB1c2luZyBhIHNsb3dlciBidXQgc2Fm
ZSBjb2RlIHBhdGguCisKKyAgICAgICAgSSBhbHNvIGZpeGVkIGFuIHVucmVsYXRlZCBidWcgSSBu
b3RpY2VkIGluIENsb2JiZXJpemUvQWJzdHJhY3RJbnRlcnByZXRlciB3aGlsZSB0ZXN0aW5nIHRo
ZSByZXN0IG9mIHRoZSBwYXRjaDoKKyAgICAgICAgdGhleSB3ZXJlIG5vdCBhd2FyZSB0aGF0IE5l
d1R5cGVkQXJyYXkgY2FuIHRha2UgYSBJbnQ1MlJlcFVzZSBjaGlsZC4KKworICAgICAgICBGaW5h
bGx5LCB3aGlsZSB0cnlpbmcgdG8gcHJvcGVybHkgdGVzdCB0aGlzIGNoYW5nZSwgSSBkaXNjb3Zl
cmVkIHRoYXQgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UKKyAgICAgICAgKHdo
aWNoIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0IHdoaWNoIHBhc3NlcyBpdCBhIG5vbi0wIG9iamVjdE9mZnNldCkKKyAgICAgICAgd2Fz
IHN0aWxsIHVzaW5nIHVuc2lnbmVkIGV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBzaXplX3QsIGFuZCB0
aGF0IHRoZSBzYW1lIHdhcyB0cnVlIG9mIGFsbCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHNhbWUg
ZmlsZS4KKyAgICAgICAgU28gSSBmaXhlZCBpdCBpbiB0aGUgc2FtZSBwYXRjaC4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmlu
Z01vZGU+Ojpjb25zdHJ1Y3RJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0NvcHlXaXRoaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmls
bCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRl
eE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5
Q3JlYXRlKToKKwogMjAyMS0xMC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIE1ha2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBOb2RlUmVzdWx0SW50NTIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBlNWMxNDQ3MDViYTUuLjk0NWFmNDAyMGJmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMjk1OCw2ICsyOTU4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDlhZDVjMjcwMjBkNi4uZjY2YTk4ZWM0ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU1Miw2ICsxNTUyLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAg
ICAgICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzk5NzQ3NDFmNjEzLi5iOTJjZTE1NzNjMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmNwcApAQCAtODEsOSArODEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0dlbmVy
aWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0SW1wbChKU0ds
bwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2
bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmVXaXRoU2hhcmluZ01vZGU8c2hhcmluZ01vZGU+LCBuZXdU
YXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBzaXplX3QgbGVuZ3RoOwog
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBsZW5ndGggPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVu
Z3RoIik7CisgICAgICAgIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3Qgc2F5IHNvLCBpdCBp
cyBpbiBmYWN0IGNvcnJlY3QgdG8gc2F5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAppbmRleCAzMzZmMWFlZTNmNzEuLmY2ZTgwMGNkNWIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgIHNpemVfdCBvZmZzZXQgPSAwOwog
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3Vu
dCA+IDEpIHsKLSAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICAgICAgb2Zmc2V0ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChhcmdDb3VudCA+IDIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTNkZGMxZjgzNmE3Li41MGU0MWUwNDljNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMTMsMTkgKzMxMywzNCBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBWZXJpZnkgdGhhdCB3
ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFY
IG9yIG1vcmUKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmpl
Y3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSkpOwotICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2Uu
IEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1
ZSk7CisgICAgICAgIGF1dG8gdHJ5U2V0SW5kZXggPSBbJl0oc2l6ZV90IGluZGV4LCBKU1ZhbHVl
IHZhbHVlKSAtPiBib29sIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICAgICAgICAgIGlmICghc3VjY2Vz
cykgewogICAgICAgICAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Owor
ICAgICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0
aCBhbiBpbmRleCBvZiBtb3JlIHRoYW4gTUFYX0FSUkFZX0lOREVYLgorICAgICAgICAvLyBTbyB3
ZSBpdGVyYXRlIGluIHRoZSBvcHRpbWl6ZWQgbG9vcCB1cCB0byBNQVhfQVJSQVlfSU5ERVgsIHRo
ZW4gaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gZG8gYmV5b25kIHRoaXMsIHdlIHJlbHkgb24gc2xv
d2VyIGNvZGUuCisgICAgICAgIHNpemVfdCBzYWZlVW5hZGp1c3RlZExlbmd0aCA9IHN0ZDo6bWlu
KGxlbmd0aCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihNQVhfQVJSQVlfSU5ERVggKyAxKSk7CisgICAg
ICAgIHNpemVfdCBzYWZlTGVuZ3RoID0gb2JqZWN0T2Zmc2V0IDw9IHNhZmVVbmFkanVzdGVkTGVu
Z3RoID8gc2FmZVVuYWRqdXN0ZWRMZW5ndGggLSBvYmplY3RPZmZzZXQgOiAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhZmVMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNT
RVJUKGkgKyBvYmplY3RPZmZzZXQgPD0gTUFYX0FSUkFZX0lOREVYKTsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXRyeVNldEluZGV4KG9mZnNldCArIGks
IHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IHNhZmVMZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBQcm9wZXJ0eU5hbWUg
cHJvcGVydHkgPSBQcm9wZXJ0eU5hbWUoaWRlbnQpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlTZXRJ
bmRleChvZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggMDA0OTJjMGFiM2UzLi45YzAw
NGVkMDE3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaApAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXND
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gMCkKK2lubGluZSBzaXpl
X3QgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgdW5kZWZpbmVk
VmFsdWUgPSAwKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1
cm4gdW5kZWZpbmVkVmFsdWU7CkBAIC05NCw5ICs5NCw5IEBAIGlubGluZSB1bnNpZ25lZCBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgZG91YmxlIGluZGV4RG91YmxlID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOwogICAgIGlmIChpbmRleERvdWJsZSA8IDApIHsKICAgICAgICAgaW5kZXhE
b3VibGUgKz0gbGVuZ3RoOwotICAgICAgICByZXR1cm4gaW5kZXhEb3VibGUgPCAwID8gMCA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgICAgIHJldHVybiBpbmRleERv
dWJsZSA8IDAgPyAwIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiAgICAgfQot
ICAgIHJldHVybiBpbmRleERvdWJsZSA+IGxlbmd0aCA/IGxlbmd0aCA6IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgcmV0dXJuIGluZGV4RG91YmxlID4gbGVuZ3RoID8g
bGVuZ3RoIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KQEAgLTExMCwxMyArMTEwLDEzIEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwg
SlNHbG9iYWxPCiAgICAgaWYgKFVOTElLRUxZKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiX3MpOwogCi0gICAgdW5zaWduZWQgb2Zmc2V0
OworICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDApKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPZmZzZXQgc2hvdWxkIG5vdCBiZSBu
ZWdhdGl2ZSIpOwotICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
aW4ob2Zmc2V0TnVtYmVyLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkpKTsKKyAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzdGQ6Om1pbihvZmZzZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSkpKTsKICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0ID0g
MDsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9iYWxPCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgc2l6ZV90IGxlbmd0aDsKICAgICBpZiAoaXNU
eXBlZFZpZXcoc291cmNlQXJyYXktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlw
ZSkpIHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNB
cnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzb3Vy
Y2VWaWV3LT5pc0RldGFjaGVkKCkpKQpAQCAtMTM2LDcgKzEzNiw3IEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwg
SlNHbG9iYWxPCiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IHNv
dXJjZUFycmF5LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9MZW5ndGgoZ2xvYmFsT2JqZWN0KTsKICAgICB9CiAK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE1
NiwxOCArMTU2LDE4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihWTSYgdm0sIEpTCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2Fn
ZSk7CiAKLSAgICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwotICAgIGxvbmcg
dG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09i
amVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGxlbmd0aCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
bG9uZyBmcm9tID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGZyb20gPSBh
cmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBsb25nIGZpbmFsID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxlbmd0
aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZmluYWwgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBs
ZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgaWYgKGZpbmFsIDwgZnJvbSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGxvbmcgY291bnQgPSBzdGQ6Om1pbihs
ZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7CisgICAgc2l6ZV90IGNv
dW50ID0gc3RkOjptaW4obGVuZ3RoIC0gc3RkOjptYXgodG8sIGZyb20pLCBmaW5hbCAtIGZyb20p
OwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0Jl
ZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CkBAIC0xODcsMTQgKzE4NywxNCBAQCBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVz
KFZNJiB2bSwgSlNHbAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlVG9GaW5kID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKIAotICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRDbGFt
cGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGluZGV4ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0aCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQpAQCAtMjMzLDEzICsyMzMsMTMgQEAgQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJ
bmRleE9mKFZNJiB2bSwgSlNHbG8KICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlz
T2JqZWN0LT5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlVG9GaW5kID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xh
bXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLCBsZW5ndGgpOworICAgIHNpemVfdCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJv
bVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBsZW5ndGgp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKQEAgLTI2OSwxMiArMjY5LDEyIEBAIEFM
V0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Sm9pbihWTSYgdm0sIEpTR2xvYmFsCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhp
c09iamVjdC0+bGVuZ3RoKCk7CiAgICAgYXV0byBqb2luV2l0aFNlcGFyYXRvciA9IFsmXSAoU3Ry
aW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29kZWRKU1ZhbHVlIHsKICAgICAgICAgSlNTdHJpbmdK
b2luZXIgam9pbmVyKGdsb2JhbE9iamVjdCwgc2VwYXJhdG9yLCBsZW5ndGgpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoIXRoaXNPYmplY3Qt
PmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKFZpZXdDbGFzczo6QWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5KQog
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXNPYmplY3QtPmdldEluZGV4UXVpY2tseShp
KTsKQEAgLTI4Nyw3ICsyODcsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0mIHZtLCBKU0dsb2JhbAogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KQogICAgICAgICAgICAgICAgIGpvaW5lci5hcHBlbmRFbXB0eVN0cmluZygpOwogICAgICAgICB9
CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpvaW5l
ci5qb2luKGdsb2JhbE9iamVjdCkpKTsKQEAgLTMxNywxOSArMzE3LDE5IEBAIEFMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmlsbChWTSYg
dm0sIEpTR2xvYmFsCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09iamVjdC0+
bGVuZ3RoKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIHN0YXJ0ID0g
YXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSksIGxlbmd0aCwgMCk7CisgICAgc2l6ZV90IHN0YXJ0ID0gYXJndW1lbnRD
bGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMSksIGxlbmd0aCwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBsZW5ndGgpOworICAg
IHNpemVfdCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBsZW5ndGgpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRh
Y2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSBzdGFydDsgaW5kZXggPCBlbmQ7ICsraW5kZXgpCisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSBzdGFydDsgaW5kZXggPCBlbmQ7ICsraW5kZXgpCiAgICAgICAg
IHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaW5kZXgsIG5hdGl2ZVZh
bHVlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdCk7CkBAIC0zNDUs
MTQgKzM0NSwxNCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSgogICAgIGlmICh0aGlzT2JqZWN0
LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6
ZV90IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIAogICAgIEpTVmFs
dWUgdmFsdWVUb0ZpbmQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogCi0gICAgaW50IGluZGV4
ID0gbGVuZ3RoIC0gMTsKKyAgICBzaXplX3QgaW5kZXggPSBsZW5ndGggLSAxOwogICAgIGlmIChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIEpTVmFsdWUgZnJvbVZh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICAgICAgZG91YmxlIGZy
b21Eb3VibGUgPSBmcm9tVmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwpA
QCAtMzYzLDcgKzM2Myw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBKCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChmcm9tRG91YmxlIDwgbGVuZ3RoKQotICAgICAgICAgICAgaW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZnJvbURvdWJsZSk7CisgICAgICAgICAgICBpbmRleCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oZnJvbURvdWJsZSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlz
RGV0YWNoZWQoKSkKQEAgLTQ2MywxMSArNDYzLDExIEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2Jh
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gdGhpc09i
amVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5n
dGgoKTsKIAotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3Rh
cnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHRoaXNMZW5ndGgp
OworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCB0aGlzTGVuZ3RoKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB1bnNpZ25l
ZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xlbmd0aCk7CisgICAgc2l6
ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3RoKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmICh0
aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC00NzcsNyArNDc3LDcgQEAgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShWTSYg
dm0sIEpTR2xvYmEKICAgICBlbmQgPSBzdGQ6Om1heChiZWdpbiwgZW5kKTsKIAogICAgIEFTU0VS
VChlbmQgPj0gYmVnaW4pOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZCAtIGJlZ2luOworICAg
IHNpemVfdCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CkBAIC01NjksMTYgKzU2
OSwxNiBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gR2V0IHRoZSBsZW5ndGggaGVyZTsgbGF0ZXIgYXNz
ZXJ0IHRoYXQgdGhlIGxlbmd0aCBkaWRuJ3QgY2hhbmdlLgotICAgIHVuc2lnbmVkIHRoaXNMZW5n
dGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgdGhpc0xlbmd0aCA9IHRoaXNP
YmplY3QtPmxlbmd0aCgpOwogCiAgICAgLy8gSSB3b3VsZCBhc3NlcnQgdGhhdCB0aGUgYXJndW1l
bnRzIGFyZSBpbnRlZ2VycyBoZXJlIGJ1dCB0aGF0J3Mgbm90IHRydWUgc2luY2UKICAgICAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2ludGVnZXIgYWxsb3dzIHRoZSBy
ZXN1bHQgb2YgdGhlIG9wZXJhdGlvbgogICAgIC8vIHRvIGJlICsvLSBJbmZpbml0eSBhbmQgLTAu
CiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNOdW1iZXIoKSk7CiAgICAgQVNT
RVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSB8fCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLmlzTnVtYmVyKCkpOwotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFt
cGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIHRoaXNMZW5ndGgpOworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCB0aGlz
TGVuZ3RoKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHVuc2lnbmVkIGVu
ZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3RoKTsKKyAgICBzaXplX3Qg
ZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSksIHRoaXNMZW5ndGgsIHRoaXNMZW5ndGgpOwogICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdC0+
aXNEZXRhY2hlZCgpKTsKQEAgLTU4Nyw4ICs1ODcsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0m
CiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CiAKICAgICBBU1NFUlQoZW5kID49IGJl
Z2luKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBiZWdpbjsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBlbmQgLSBiZWdpbjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gYmVnaW47CisgICAgc2l6ZV90IGxl
bmd0aCA9IGVuZCAtIGJlZ2luOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IHRoaXNPYmplY3QtPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKFVOTElLRUxZ
KCFhcnJheUJ1ZmZlcikpIHsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUo
Vk0mCiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNMZW5ndGggPT0gdGhpc09iamVjdC0+
bGVuZ3RoKCkpOwogCi0gICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNPYmplY3QtPmJ5
dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CisgICAgc2l6ZV90
IG5ld0J5dGVPZmZzZXQgPSB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3
Q2xhc3M6OmVsZW1lbnRTaXplOwogCiAgICAgSlNPYmplY3QqIGRlZmF1bHRDb25zdHJ1Y3RvciA9
IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKTsKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDIpOwo=
</data>
<flag name="review"
          id="466503"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="466504"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442197</attachid>
            <date>2021-10-22 14:01:52 -0700</date>
            <delta_ts>2021-10-22 17:56:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>29382</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTg3MzFlZjJlNTQ0Li4xYzQzMzkwYTg1N2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTAtMjEgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJlZ3Jlc3MtODQ0MDIw
NDMgaXMgdGhlIHRlc3RjYXNlIHRoYXQgcmV2ZWFsZWQgdGhlIHByb2JsZW0uCisgICAgICAgIC0g
dHlwZWQtYXJyYXktc2V0LWxhcmdlKC1vZmZzZXQpIHRlc3QgdGhlIHNhbWUgZnVuY3Rpb24sIGlu
IHRoZSB0eXBlZC1hcnJheSB0byB0eXBlZC1hcnJheSBjYXNlCisgICAgICAgIC0gdHlwZWQtYXJy
YXktbGFyZ2Utc2xpY2UgdGVzdHMgdGhlIG9ubHkgY2FsbGVyIHRoYXQgcGFzc2VzIGEgbm9uLTAg
b2JqZWN0T2Zmc2V0LCBhbmQgZm91bmQgb3RoZXIgaXNzdWVzIHdpdGggaXQKKyAgICAgICAgLSB0
eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMgaXMganVzdCBhbm90aGVyIHRl
c3Qgb2YgdGhlIFdhc200R0IgY2hhbmdlIHRoYXQgSSBoYWQgZm9yZ290dGVuIHRvIGNvbW1pdAor
CisgICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cGVjdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFy
cmF5LXNldC1sYXJnZS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy90eXBlZC1h
cnJheS1zZXQtbGFyZ2UuanM6IEFkZGVkLgorCiAyMDIxLTEwLTIxICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW5zZXJ0ZWQgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgZm9yIFB1dEJ5VmFsIHNob3VsZCBoYXZlIE5vZGVSZXN1bHRJbnQ1Mgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy04NDQwMjA0My5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lMzI0NmRhMWJmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9yZWdyZXNzLTg0NDAyMDQzLmpzCkBAIC0wLDAgKzEsNCBAQAorLy9Ac2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorLy9AcmVxdWlyZU9wdGlvbnMoIi0td2F0Y2hkb2c9MTAwMCIsICItLXdhdGNoZG9n
LWV4Y2VwdGlvbi1vayIpCisKK25ldyBVaW50OEFycmF5KHtsZW5ndGg6IDIqKjMyfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjVmN2FiZmRj
ODYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1v
b2ItZXZlbnR1YWxseS1ub3QuanMKQEAgLTAsMCArMSwyOSBAQAorLy9AIHNraXAKKy8vIFRoaXMg
dGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9uIGFuIE0xIE1CUCwgc28gSSdk
IHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZhdWx0LgorCitsZXQgb25lR2ln
YSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVu
Z3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgdmFyIGluZGV4ID0gYWN0dWFsTGVuZ3RoICsgMTA7CisgICAgICAgIHZhciB2YWx1
ZSA9IDQyOworICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisgICAg
ICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0
ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAg
ICB2YXIgaW5kZXggPSAxMDsKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICB2YXIgcmVz
dWx0ID0gYXJyYXlbaW5kZXhdCisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJJbiBvdXQtb2YtYm91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIg
KyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAz
ICogb25lR2lnYTsKK2xldCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcg
VWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBl
ZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFy
Z2Utc2xpY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1zbGljZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwNzBlYmFhOGRkZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNlLmpz
CkBAIC0wLDAgKzEsMzUgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0
ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKworbGV0IGdp
Z2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2xldCBhcnJheSA9IG5ldyBJbnQ4QXJyYXkoNCAq
IGdpZ2EpOworYXJyYXlbMF0gPSAxOworYXJyYXlbZ2lnYV0gPSAyOworYXJyYXlbMiAqIGdpZ2Fd
ID0gMzsKK2FycmF5WzMgKiBnaWdhXSA9IDQ7CisKK2Z1bmN0aW9uIGV4cGVjdChiYXNlLCBpbmRl
eCwgZXhwZWN0ZWQsIHN0cmluZykKK3sKKyAgICBsZXQgcmVzdWx0ID0gYmFzZSBbaW5kZXhdCisg
ICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkV4cGVjdGVkICIgKyBl
eHBlY3RlZCArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiB3aGlsZSB0ZXN0aW5nICIgKyBzdHJp
bmc7Cit9CisKK2xldCBzbGljZTAgPSBhcnJheS5zbGljZShnaWdhKTsKK2V4cGVjdChzbGljZTAs
IDAsIDIsICJzbGljZTAiKTsKK2V4cGVjdChzbGljZTAsIGdpZ2EsIDMsICJzbGljZTAiKTsKK2V4
cGVjdChzbGljZTAsIDIqZ2lnYSwgNCwgInNsaWNlMCIpOworCitsZXQgc3Vic2xpY2UwID0gc2xp
Y2UwLnNsaWNlKGdpZ2EpOworZXhwZWN0KHN1YnNsaWNlMCwgMCwgMywgInN1YnNsaWNlMCIpOwor
ZXhwZWN0KHN1YnNsaWNlMCwgZ2lnYSwgNCwgInN1YnNsaWNlMCIpOworCitsZXQgc2xpY2UxID0g
YXJyYXkuc2xpY2UoZ2lnYSwgMiAqIGdpZ2EpOworZXhwZWN0KHNsaWNlMSwgMCwgMiwgInNsaWNl
MSIpOworCitsZXQgc2xpY2UyID0gYXJyYXkuc2xpY2UoMyAqIGdpZ2EpOworZXhwZWN0KHNsaWNl
MiwgMCwgNCwgInNsaWNlMiIpOworCitsZXQgc2xpY2UzID0gYXJyYXkuc2xpY2UoNCAqIGdpZ2Ep
OworbGV0IHN1YlNsaWNlMyA9IHNsaWNlMy5zbGljZSgwKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdHlwZWQtYXJyYXktc2V0LWxhcmdlLW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LXNldC1sYXJnZS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43YjNjOWM5YjIzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2Utb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMjggQEAK
Ky8vQHNraXAKKy8vIFRoaXMgdGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9u
IGFuIE0xIE1CUCwgc28gSSdkIHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZh
dWx0LgorCitsZXQgZ2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKK2xldCBzb3VyY2VMZW5ndGgg
PSBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gNCAqIGdpZ2E7CitsZXQgb2Zmc2V0ID0g
MyAqIGdpZ2E7CisKK3ZhciBzb3VyY2UgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoc291cmNlTGVu
Z3RoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgc291cmNlW2ldID0gaSAm
IDB4M0Y7CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5n
dGgpOworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBv
ZmZzZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAg
ICB0aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1
ZTsKKworLy8gQWZ0ZXIgdGhlIG9mZnNldAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0IHZhbHVlID0gZGVzdGluYXRp
b25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGluZGV4IC0gb2Zmc2V0KSAmIDB4
M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisgICAgICAgIHRocm93ICJBdCBp
bmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IGdv
dCAiICsgdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1z
ZXQtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTE2MjQ0ZWFkYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKQEAg
LTAsMCArMSw0MSBAQAorLy9Ac2tpcAorLy8gVGhpcyB0ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiBy
ZWxlYXNlIG1vZGUgb24gYW4gTTEgTUJQLCBzbyBJJ2QgcmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQg
b24gRVdTIGJ5IGRlZmF1bHQuCisKK2xldCBnaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworbGV0
IHNvdXJjZUxlbmd0aCA9IDIgKiBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gMyAqIGdp
Z2E7CitsZXQgb2Zmc2V0ID0gZ2lnYTsKKwordmFyIHNvdXJjZSA9IG5ldyBVaW50OENsYW1wZWRB
cnJheShzb3VyY2VMZW5ndGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBz
b3VyY2VbaV0gPSBpICYgMHgzRjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICBsZXQgaW5kZXggPSBnaWdhICsgaTsKKyAgICBzb3VyY2VbaW5kZXhdID0gaW5kZXggJiAweDNG
Cit9CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5ndGgp
OworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBvZmZz
ZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAgICB0
aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1ZTsK
KworLy8gQWZ0ZXIgdGhlIG9mZnNldCBidXQgYmVmb3JlIElOVDMyX01BWAorZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0
IHZhbHVlID0gZGVzdGluYXRpb25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGlu
ZGV4IC0gb2Zmc2V0KSAmIDB4M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisg
ICAgICAgIHRocm93ICJBdCBpbmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0
ZWRWYWx1ZSArICIgYnV0IGdvdCAiICsgdmFsdWU7Cit9CisKKy8vIEFmdGVyIHRoZSBvZmZzZXQg
YW5kIGdyZWF0ZXIgdGhhbiBJTlQzMl9NQVgKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kp
IHsKKyAgICBsZXQgaW5kZXggPSBvZmZzZXQgKyBnaWdhICsgaTsKKyAgICBsZXQgdmFsdWUgPSBk
ZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXggLSBvZmZz
ZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgdGhy
b3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZhbHVlICsg
IiBidXQgZ290ICIgKyB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OTAy
NzU3ZDUwYS4uNzUxMDg3OGRmZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAyMS0xMC0yMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29t
PgorCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hl
cyBpZiB0aGUgbGVuZ3RoICsgb2JqZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTc1CisgICAgICAgIHJk
YXI6Ly84NDQwMjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVJTlRfTUFYIChhbmQgYW55dGhpbmcgYWJvdmUgaXQpIGlzIG5vdCBhIHZhbGlkIGFy
cmF5IGluZGV4LCBzbyB3ZSBjYW5ub3QgdXNlIEpTT2JqZWN0OjpnZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCkgd2l0aCBhbiBpbmRleCB0aGF0IGJpZy4KKyAgICAgICAgVGhpcyB3YXMgcG9p
bnRlZCBieSBZdXN1a2UgaW4gaGlzIHJldmlldyBvZiBteSByZWNlbnQgcGF0Y2ggdGhhdCBpbnRy
b2R1Y2VkIHRoZSBwcm9ibGVtIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5MzUzI2MyMSksCisgICAgICAgIGJ1dCBJIG1pc3VuZGVyc3Rvb2QgdGhlIGNvZGUgYW5k
IHRob3VnaHQgd2UgY291bGQgbmV2ZXIgZ2V0IHZhbHVlcyB0aGF0IGJpZyBhdCB0aGF0IHBvaW50
LCB0aHVzIG9ubHkgcHV0dGluZyBhIFJFTEVBU0VfQVNTRVJULgorICAgICAgICBJbiB0aGlzIHBh
dGNoIEkgaW5zdGVhZCBhcHBseSBoaXMgb3JpZ2luYWwgc3VnZ2VzdGlvbiB0byBoYXZlIGEgZmly
c3QgbG9vcCB1c2luZyB0aGUgKGZhc3QpIEpTT2JqZWN0OjpnZXQoKSwKKyAgICAgICAgYW5kIGEg
c2Vjb25kIGxvb3AgZm9yIGFueSBsYXJnZSBpbmRpY2VzLCB1c2luZyBhIHNsb3dlciBidXQgc2Fm
ZSBjb2RlIHBhdGguCisKKyAgICAgICAgSSBhbHNvIGZpeGVkIGFuIHVucmVsYXRlZCBidWcgSSBu
b3RpY2VkIGluIENsb2JiZXJpemUvQWJzdHJhY3RJbnRlcnByZXRlciB3aGlsZSB0ZXN0aW5nIHRo
ZSByZXN0IG9mIHRoZSBwYXRjaDoKKyAgICAgICAgdGhleSB3ZXJlIG5vdCBhd2FyZSB0aGF0IE5l
d1R5cGVkQXJyYXkgY2FuIHRha2UgYSBJbnQ1MlJlcFVzZSBjaGlsZC4KKworICAgICAgICBGaW5h
bGx5LCB3aGlsZSB0cnlpbmcgdG8gcHJvcGVybHkgdGVzdCB0aGlzIGNoYW5nZSwgSSBkaXNjb3Zl
cmVkIHRoYXQgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UKKyAgICAgICAgKHdo
aWNoIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0IHdoaWNoIHBhc3NlcyBpdCBhIG5vbi0wIG9iamVjdE9mZnNldCkKKyAgICAgICAgd2Fz
IHN0aWxsIHVzaW5nIHVuc2lnbmVkIGV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBzaXplX3QsIGFuZCB0
aGF0IHRoZSBzYW1lIHdhcyB0cnVlIG9mIGFsbCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHNhbWUg
ZmlsZS4KKyAgICAgICAgU28gSSBmaXhlZCBpdCBpbiB0aGUgc2FtZSBwYXRjaC4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmlu
Z01vZGU+Ojpjb25zdHJ1Y3RJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0NvcHlXaXRoaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmls
bCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRl
eE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5
Q3JlYXRlKToKKwogMjAyMS0xMC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIE1ha2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBOb2RlUmVzdWx0SW50NTIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBlNWMxNDQ3MDViYTUuLjk0NWFmNDAyMGJmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMjk1OCw2ICsyOTU4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDlhZDVjMjcwMjBkNi4uZjY2YTk4ZWM0ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU1Miw2ICsxNTUyLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAg
ICAgICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzk5NzQ3NDFmNjEzLi5iOTJjZTE1NzNjMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmNwcApAQCAtODEsOSArODEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0dlbmVy
aWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0SW1wbChKU0ds
bwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2
bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmVXaXRoU2hhcmluZ01vZGU8c2hhcmluZ01vZGU+LCBuZXdU
YXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBzaXplX3QgbGVuZ3RoOwog
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBsZW5ndGggPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVu
Z3RoIik7CisgICAgICAgIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3Qgc2F5IHNvLCBpdCBp
cyBpbiBmYWN0IGNvcnJlY3QgdG8gc2F5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAppbmRleCAzMzZmMWFlZTNmNzEuLmY2ZTgwMGNkNWIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgIHNpemVfdCBvZmZzZXQgPSAwOwog
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3Vu
dCA+IDEpIHsKLSAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICAgICAgb2Zmc2V0ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChhcmdDb3VudCA+IDIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTNkZGMxZjgzNmE3Li41MGU0MWUwNDljNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMTMsMTkgKzMxMywzNCBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBWZXJpZnkgdGhhdCB3
ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFY
IG9yIG1vcmUKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmpl
Y3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSkpOwotICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2Uu
IEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1
ZSk7CisgICAgICAgIGF1dG8gdHJ5U2V0SW5kZXggPSBbJl0oc2l6ZV90IGluZGV4LCBKU1ZhbHVl
IHZhbHVlKSAtPiBib29sIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICAgICAgICAgIGlmICghc3VjY2Vz
cykgewogICAgICAgICAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Owor
ICAgICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0
aCBhbiBpbmRleCBvZiBtb3JlIHRoYW4gTUFYX0FSUkFZX0lOREVYLgorICAgICAgICAvLyBTbyB3
ZSBpdGVyYXRlIGluIHRoZSBvcHRpbWl6ZWQgbG9vcCB1cCB0byBNQVhfQVJSQVlfSU5ERVgsIHRo
ZW4gaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gZG8gYmV5b25kIHRoaXMsIHdlIHJlbHkgb24gc2xv
d2VyIGNvZGUuCisgICAgICAgIHNpemVfdCBzYWZlVW5hZGp1c3RlZExlbmd0aCA9IHN0ZDo6bWlu
KGxlbmd0aCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihNQVhfQVJSQVlfSU5ERVggKyAxKSk7CisgICAg
ICAgIHNpemVfdCBzYWZlTGVuZ3RoID0gb2JqZWN0T2Zmc2V0IDw9IHNhZmVVbmFkanVzdGVkTGVu
Z3RoID8gc2FmZVVuYWRqdXN0ZWRMZW5ndGggLSBvYmplY3RPZmZzZXQgOiAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhZmVMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNT
RVJUKGkgKyBvYmplY3RPZmZzZXQgPD0gTUFYX0FSUkFZX0lOREVYKTsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXRyeVNldEluZGV4KG9mZnNldCArIGks
IHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IHNhZmVMZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBQcm9wZXJ0eU5hbWUg
cHJvcGVydHkgPSBQcm9wZXJ0eU5hbWUoaWRlbnQpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlTZXRJ
bmRleChvZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggMDA0OTJjMGFiM2UzLi44YWEz
ZDkxMDRlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaApAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXND
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gMCkKK2lubGluZSBzaXpl
X3QgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgdW5kZWZpbmVk
VmFsdWUgPSAwKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1
cm4gdW5kZWZpbmVkVmFsdWU7CkBAIC05NCw5ICs5NCw5IEBAIGlubGluZSB1bnNpZ25lZCBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgZG91YmxlIGluZGV4RG91YmxlID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOwogICAgIGlmIChpbmRleERvdWJsZSA8IDApIHsKICAgICAgICAgaW5kZXhE
b3VibGUgKz0gbGVuZ3RoOwotICAgICAgICByZXR1cm4gaW5kZXhEb3VibGUgPCAwID8gMCA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgICAgIHJldHVybiBpbmRleERv
dWJsZSA8IDAgPyAwIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiAgICAgfQot
ICAgIHJldHVybiBpbmRleERvdWJsZSA+IGxlbmd0aCA/IGxlbmd0aCA6IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgcmV0dXJuIGluZGV4RG91YmxlID4gbGVuZ3RoID8g
bGVuZ3RoIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KQEAgLTExMCwxMyArMTEwLDEzIEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwg
SlNHbG9iYWxPCiAgICAgaWYgKFVOTElLRUxZKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiX3MpOwogCi0gICAgdW5zaWduZWQgb2Zmc2V0
OworICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDApKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPZmZzZXQgc2hvdWxkIG5vdCBiZSBu
ZWdhdGl2ZSIpOwotICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
aW4ob2Zmc2V0TnVtYmVyLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkpKTsKKyAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzdGQ6Om1pbihvZmZzZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSkpKTsKICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0ID0g
MDsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9iYWxPCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgc2l6ZV90IGxlbmd0aDsKICAgICBpZiAoaXNU
eXBlZFZpZXcoc291cmNlQXJyYXktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlw
ZSkpIHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNB
cnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzb3Vy
Y2VWaWV3LT5pc0RldGFjaGVkKCkpKQpAQCAtMTM2LDcgKzEzNiw3IEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwg
SlNHbG9iYWxPCiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IHNv
dXJjZUFycmF5LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9MZW5ndGgoZ2xvYmFsT2JqZWN0KTsKICAgICB9CiAK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE1
NiwxOCArMTU2LDIwIEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihWTSYgdm0sIEpTCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2Fn
ZSk7CiAKLSAgICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwotICAgIGxvbmcg
dG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09i
amVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGxlbmd0aCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
bG9uZyBmcm9tID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGZyb20gPSBh
cmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBsb25nIGZpbmFsID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxlbmd0
aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZmluYWwgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBs
ZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgaWYgKGZpbmFsIDwgZnJvbSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGxvbmcgY291bnQgPSBzdGQ6Om1pbihs
ZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7CisgICAgQVNTRVJUKHRv
IDw9IGxlbmd0aCk7CisgICAgQVNTRVJUKGZyb20gPD0gbGVuZ3RoKTsKKyAgICBzaXplX3QgY291
bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKQEAgLTE4NywxNCArMTg5LDE0IEBAIEFMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMo
Vk0mIHZtLCBKU0dsCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09iamVjdC0+
bGVuZ3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIEpTVmFsdWUgdmFsdWVUb0ZpbmQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogCi0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1w
ZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC0yMzMsMTMgKzIzNSwxMyBAQCBBTFdB
WVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
ZGV4T2YoVk0mIHZtLCBKU0dsbwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVk
QXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNP
YmplY3QtPmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIAogICAgIEpTVmFsdWUgdmFsdWVUb0ZpbmQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRDbGFt
cGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGluZGV4ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0aCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQpAQCAtMjY5LDEyICsyNzEsMTIgQEAgQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNK
b2luKFZNJiB2bSwgSlNHbG9iYWwKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlz
T2JqZWN0LT5sZW5ndGgoKTsKICAgICBhdXRvIGpvaW5XaXRoU2VwYXJhdG9yID0gWyZdIChTdHJp
bmdWaWV3IHNlcGFyYXRvcikgLT4gRW5jb2RlZEpTVmFsdWUgewogICAgICAgICBKU1N0cmluZ0pv
aW5lciBqb2luZXIoZ2xvYmFsT2JqZWN0LCBzZXBhcmF0b3IsIGxlbmd0aCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+
aXNEZXRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAgICAgICAgICAgICAgIGlm
IGNvbnN0ZXhwciAoVmlld0NsYXNzOjpBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHkpCiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkp
OwpAQCAtMjg3LDcgKzI4OSw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihWTSYgdm0sIEpTR2xvYmFsCiAgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
CiAgICAgICAgICAgICAgICAgam9pbmVyLmFwcGVuZEVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0K
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVy
LmpvaW4oZ2xvYmFsT2JqZWN0KSkpOwpAQCAtMzE3LDE5ICszMTksMTkgQEAgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKFZNJiB2
bSwgSlNHbG9iYWwKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0LT5s
ZW5ndGgoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRp
dmVGcm9tVmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgc3RhcnQgPSBh
cmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgbGVuZ3RoLCAwKTsKKyAgICBzaXplX3Qgc3RhcnQgPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSwgbGVuZ3RoLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwot
ICAgIHVuc2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0aCk7CisgICAg
c2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0aCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFj
aGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgKytpbmRleCkKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgKytpbmRleCkKICAgICAgICAg
dGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpbmRleCwgbmF0aXZlVmFs
dWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0KTsKQEAgLTM0NSwx
NCArMzQ3LDE0IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBKCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXpl
X3QgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZVRvRmluZCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKLSAgICBpbnQgaW5kZXgg
PSBsZW5ndGggLSAxOworICAgIHNpemVfdCBpbmRleCA9IGxlbmd0aCAtIDE7CiAgICAgaWYgKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgSlNWYWx1ZSBmcm9tVmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgICAgICBkb3VibGUgZnJv
bURvdWJsZSA9IGZyb21WYWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CkBA
IC0zNjMsNyArMzY1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEoKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGZyb21Eb3VibGUgPCBsZW5ndGgpCi0gICAgICAgICAgICBpbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihmcm9tRG91YmxlKTsKKyAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nh
c3Q8c2l6ZV90Pihmcm9tRG91YmxlKTsKICAgICB9CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNE
ZXRhY2hlZCgpKQpAQCAtMzc3LDEwICszNzksMTQgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEoK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoIXRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSk7CiAKLSAgICBmb3IgKDsgaW5k
ZXggPj0gMDsgLS1pbmRleCkgeworICAgIC8vIFdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IG9uZSBp
dGVyYXRpb24sIHNpbmNlIHdlIGNoZWNrZWQgdGhhdCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20g
MCBlYXJsaWVyLgorICAgIGRvIHsKICAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSB0YXJnZXRP
cHRpb24pCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4
KSk7Ci0gICAgfQorICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIC0taW5kZXg7CisgICAgfSB3aGlsZSAodHJ1ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiB9CkBAIC00NjMsMTEgKzQ2OSwxMSBAQCBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZN
JiB2bSwgSlNHbG9iYQogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgdGhpc0xl
bmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCB0aGlzTGVuZ3RoID0gdGhp
c09iamVjdC0+bGVuZ3RoKCk7CiAKLSAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCB0aGlzTGVuZ3RoKTsKKyAgICBzaXplX3QgYmVnaW4gPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgdGhpc0xl
bmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgdW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHRoaXNMZW5ndGgsIHRoaXNMZW5n
dGgpOworICAgIHNpemVfdCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5k
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xl
bmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQpAQCAtNDc3LDcgKzQ4Myw3IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UoVk0mIHZtLCBKU0dsb2JhCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7
CiAKICAgICBBU1NFUlQoZW5kID49IGJlZ2luKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBlbmQg
LSBiZWdpbjsKKyAgICBzaXplX3QgbGVuZ3RoID0gZW5kIC0gYmVnaW47CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxlbmd0aCkpOwpA
QCAtNTY5LDE2ICs1NzUsMTYgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKFZNJgogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVy
SGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIEdldCB0aGUgbGVuZ3RoIGhl
cmU7IGxhdGVyIGFzc2VydCB0aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KLSAgICB1bnNp
Z25lZCB0aGlzTGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRoaXNM
ZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIAogICAgIC8vIEkgd291bGQgYXNzZXJ0IHRo
YXQgdGhlIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMgaGVyZSBidXQgdGhhdCdzIG5vdCB0cnVlIHNp
bmNlCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vy
IGFsbG93cyB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24KICAgICAvLyB0byBiZSArLy0gSW5m
aW5pdHkgYW5kIC0wLgogICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzTnVtYmVy
KCkpOwogICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgfHwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc051bWJlcigpKTsKLSAgICB1bnNpZ25lZCBiZWdpbiA9
IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLCB0aGlzTGVuZ3RoKTsKKyAgICBzaXplX3QgYmVnaW4gPSBhcmd1bWVu
dENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgdGhpc0xlbmd0aCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAg
ICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xlbmd0aCk7
CisgICAgc2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3Ro
KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQo
IXRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSk7CkBAIC01ODcsOCArNTkzLDggQEAgQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFy
cmF5Q3JlYXRlKFZNJgogICAgIGVuZCA9IHN0ZDo6bWF4KGJlZ2luLCBlbmQpOwogCiAgICAgQVNT
RVJUKGVuZCA+PSBiZWdpbik7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gYmVnaW47Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gZW5kIC0gYmVnaW47CisgICAgc2l6ZV90IG9mZnNldCA9IGJlZ2luOwor
ICAgIHNpemVfdCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAg
IGlmIChVTkxJS0VMWSghYXJyYXlCdWZmZXIpKSB7CkBAIC01OTcsNyArNjAzLDcgQEAgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJgogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzTGVuZ3RoID09
IHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKIAotICAgIHVuc2lnbmVkIG5ld0J5dGVPZmZzZXQgPSB0
aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3Q2xhc3M6OmVsZW1lbnRTaXpl
OworICAgIHNpemVfdCBuZXdCeXRlT2Zmc2V0ID0gdGhpc09iamVjdC0+Ynl0ZU9mZnNldCgpICsg
b2Zmc2V0ICogVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKIAogICAgIEpTT2JqZWN0KiBkZWZhdWx0
Q29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaWV3Q2xh
c3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgSlNWYWx1ZSBzcGVjaWVzID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442234</attachid>
            <date>2021-10-22 17:56:47 -0700</date>
            <delta_ts>2021-10-22 19:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>29492</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTg3MzFlZjJlNTQ0Li4xYzQzMzkwYTg1N2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTAtMjEgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJlZ3Jlc3MtODQ0MDIw
NDMgaXMgdGhlIHRlc3RjYXNlIHRoYXQgcmV2ZWFsZWQgdGhlIHByb2JsZW0uCisgICAgICAgIC0g
dHlwZWQtYXJyYXktc2V0LWxhcmdlKC1vZmZzZXQpIHRlc3QgdGhlIHNhbWUgZnVuY3Rpb24sIGlu
IHRoZSB0eXBlZC1hcnJheSB0byB0eXBlZC1hcnJheSBjYXNlCisgICAgICAgIC0gdHlwZWQtYXJy
YXktbGFyZ2Utc2xpY2UgdGVzdHMgdGhlIG9ubHkgY2FsbGVyIHRoYXQgcGFzc2VzIGEgbm9uLTAg
b2JqZWN0T2Zmc2V0LCBhbmQgZm91bmQgb3RoZXIgaXNzdWVzIHdpdGggaXQKKyAgICAgICAgLSB0
eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMgaXMganVzdCBhbm90aGVyIHRl
c3Qgb2YgdGhlIFdhc200R0IgY2hhbmdlIHRoYXQgSSBoYWQgZm9yZ290dGVuIHRvIGNvbW1pdAor
CisgICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cGVjdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFy
cmF5LXNldC1sYXJnZS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy90eXBlZC1h
cnJheS1zZXQtbGFyZ2UuanM6IEFkZGVkLgorCiAyMDIxLTEwLTIxICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW5zZXJ0ZWQgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgZm9yIFB1dEJ5VmFsIHNob3VsZCBoYXZlIE5vZGVSZXN1bHRJbnQ1Mgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy04NDQwMjA0My5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lMzI0NmRhMWJmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9yZWdyZXNzLTg0NDAyMDQzLmpzCkBAIC0wLDAgKzEsNCBAQAorLy9Ac2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorLy9AcmVxdWlyZU9wdGlvbnMoIi0td2F0Y2hkb2c9MTAwMCIsICItLXdhdGNoZG9n
LWV4Y2VwdGlvbi1vayIpCisKK25ldyBVaW50OEFycmF5KHtsZW5ndGg6IDIqKjMyfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1u
b3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjVmN2FiZmRj
ODYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1v
b2ItZXZlbnR1YWxseS1ub3QuanMKQEAgLTAsMCArMSwyOSBAQAorLy9AIHNraXAKKy8vIFRoaXMg
dGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9uIGFuIE0xIE1CUCwgc28gSSdk
IHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZhdWx0LgorCitsZXQgb25lR2ln
YSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVu
Z3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgdmFyIGluZGV4ID0gYWN0dWFsTGVuZ3RoICsgMTA7CisgICAgICAgIHZhciB2YWx1
ZSA9IDQyOworICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisgICAg
ICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0
ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAg
ICB2YXIgaW5kZXggPSAxMDsKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICB2YXIgcmVz
dWx0ID0gYXJyYXlbaW5kZXhdCisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJJbiBvdXQtb2YtYm91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIg
KyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAz
ICogb25lR2lnYTsKK2xldCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcg
VWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBl
ZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFy
Z2Utc2xpY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1zbGljZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwNzBlYmFhOGRkZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNlLmpz
CkBAIC0wLDAgKzEsMzUgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0
ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKworbGV0IGdp
Z2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2xldCBhcnJheSA9IG5ldyBJbnQ4QXJyYXkoNCAq
IGdpZ2EpOworYXJyYXlbMF0gPSAxOworYXJyYXlbZ2lnYV0gPSAyOworYXJyYXlbMiAqIGdpZ2Fd
ID0gMzsKK2FycmF5WzMgKiBnaWdhXSA9IDQ7CisKK2Z1bmN0aW9uIGV4cGVjdChiYXNlLCBpbmRl
eCwgZXhwZWN0ZWQsIHN0cmluZykKK3sKKyAgICBsZXQgcmVzdWx0ID0gYmFzZSBbaW5kZXhdCisg
ICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkV4cGVjdGVkICIgKyBl
eHBlY3RlZCArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiB3aGlsZSB0ZXN0aW5nICIgKyBzdHJp
bmc7Cit9CisKK2xldCBzbGljZTAgPSBhcnJheS5zbGljZShnaWdhKTsKK2V4cGVjdChzbGljZTAs
IDAsIDIsICJzbGljZTAiKTsKK2V4cGVjdChzbGljZTAsIGdpZ2EsIDMsICJzbGljZTAiKTsKK2V4
cGVjdChzbGljZTAsIDIqZ2lnYSwgNCwgInNsaWNlMCIpOworCitsZXQgc3Vic2xpY2UwID0gc2xp
Y2UwLnNsaWNlKGdpZ2EpOworZXhwZWN0KHN1YnNsaWNlMCwgMCwgMywgInN1YnNsaWNlMCIpOwor
ZXhwZWN0KHN1YnNsaWNlMCwgZ2lnYSwgNCwgInN1YnNsaWNlMCIpOworCitsZXQgc2xpY2UxID0g
YXJyYXkuc2xpY2UoZ2lnYSwgMiAqIGdpZ2EpOworZXhwZWN0KHNsaWNlMSwgMCwgMiwgInNsaWNl
MSIpOworCitsZXQgc2xpY2UyID0gYXJyYXkuc2xpY2UoMyAqIGdpZ2EpOworZXhwZWN0KHNsaWNl
MiwgMCwgNCwgInNsaWNlMiIpOworCitsZXQgc2xpY2UzID0gYXJyYXkuc2xpY2UoNCAqIGdpZ2Ep
OworbGV0IHN1YlNsaWNlMyA9IHNsaWNlMy5zbGljZSgwKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdHlwZWQtYXJyYXktc2V0LWxhcmdlLW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3R5cGVkLWFycmF5LXNldC1sYXJnZS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43YjNjOWM5YjIzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2Utb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMjggQEAK
Ky8vQHNraXAKKy8vIFRoaXMgdGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9u
IGFuIE0xIE1CUCwgc28gSSdkIHJhdGhlciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZh
dWx0LgorCitsZXQgZ2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKK2xldCBzb3VyY2VMZW5ndGgg
PSBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gNCAqIGdpZ2E7CitsZXQgb2Zmc2V0ID0g
MyAqIGdpZ2E7CisKK3ZhciBzb3VyY2UgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoc291cmNlTGVu
Z3RoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgc291cmNlW2ldID0gaSAm
IDB4M0Y7CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5n
dGgpOworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBv
ZmZzZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAg
ICB0aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1
ZTsKKworLy8gQWZ0ZXIgdGhlIG9mZnNldAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0IHZhbHVlID0gZGVzdGluYXRp
b25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGluZGV4IC0gb2Zmc2V0KSAmIDB4
M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisgICAgICAgIHRocm93ICJBdCBp
bmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IGdv
dCAiICsgdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1z
ZXQtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTE2MjQ0ZWFkYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKQEAg
LTAsMCArMSw0MSBAQAorLy9Ac2tpcAorLy8gVGhpcyB0ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiBy
ZWxlYXNlIG1vZGUgb24gYW4gTTEgTUJQLCBzbyBJJ2QgcmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQg
b24gRVdTIGJ5IGRlZmF1bHQuCisKK2xldCBnaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworbGV0
IHNvdXJjZUxlbmd0aCA9IDIgKiBnaWdhOworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gMyAqIGdp
Z2E7CitsZXQgb2Zmc2V0ID0gZ2lnYTsKKwordmFyIHNvdXJjZSA9IG5ldyBVaW50OENsYW1wZWRB
cnJheShzb3VyY2VMZW5ndGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBz
b3VyY2VbaV0gPSBpICYgMHgzRjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICBsZXQgaW5kZXggPSBnaWdhICsgaTsKKyAgICBzb3VyY2VbaW5kZXhdID0gaW5kZXggJiAweDNG
Cit9CisKK3ZhciBkZXN0aW5hdGlvbiA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5ndGgp
OworZGVzdGluYXRpb24uc2V0KHNvdXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBvZmZz
ZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAgICB0
aHJvdyAiQXQgaW5kZXggIiArIDQyICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1ZTsK
KworLy8gQWZ0ZXIgdGhlIG9mZnNldCBidXQgYmVmb3JlIElOVDMyX01BWAorZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0
IHZhbHVlID0gZGVzdGluYXRpb25baW5kZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGlu
ZGV4IC0gb2Zmc2V0KSAmIDB4M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisg
ICAgICAgIHRocm93ICJBdCBpbmRleCAiICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0
ZWRWYWx1ZSArICIgYnV0IGdvdCAiICsgdmFsdWU7Cit9CisKKy8vIEFmdGVyIHRoZSBvZmZzZXQg
YW5kIGdyZWF0ZXIgdGhhbiBJTlQzMl9NQVgKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kp
IHsKKyAgICBsZXQgaW5kZXggPSBvZmZzZXQgKyBnaWdhICsgaTsKKyAgICBsZXQgdmFsdWUgPSBk
ZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXggLSBvZmZz
ZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgdGhy
b3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZhbHVlICsg
IiBidXQgZ290ICIgKyB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OTAy
NzU3ZDUwYS4uNzUxMDg3OGRmZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAyMS0xMC0yMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29t
PgorCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hl
cyBpZiB0aGUgbGVuZ3RoICsgb2JqZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTc1CisgICAgICAgIHJk
YXI6Ly84NDQwMjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVJTlRfTUFYIChhbmQgYW55dGhpbmcgYWJvdmUgaXQpIGlzIG5vdCBhIHZhbGlkIGFy
cmF5IGluZGV4LCBzbyB3ZSBjYW5ub3QgdXNlIEpTT2JqZWN0OjpnZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCkgd2l0aCBhbiBpbmRleCB0aGF0IGJpZy4KKyAgICAgICAgVGhpcyB3YXMgcG9p
bnRlZCBieSBZdXN1a2UgaW4gaGlzIHJldmlldyBvZiBteSByZWNlbnQgcGF0Y2ggdGhhdCBpbnRy
b2R1Y2VkIHRoZSBwcm9ibGVtIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5MzUzI2MyMSksCisgICAgICAgIGJ1dCBJIG1pc3VuZGVyc3Rvb2QgdGhlIGNvZGUgYW5k
IHRob3VnaHQgd2UgY291bGQgbmV2ZXIgZ2V0IHZhbHVlcyB0aGF0IGJpZyBhdCB0aGF0IHBvaW50
LCB0aHVzIG9ubHkgcHV0dGluZyBhIFJFTEVBU0VfQVNTRVJULgorICAgICAgICBJbiB0aGlzIHBh
dGNoIEkgaW5zdGVhZCBhcHBseSBoaXMgb3JpZ2luYWwgc3VnZ2VzdGlvbiB0byBoYXZlIGEgZmly
c3QgbG9vcCB1c2luZyB0aGUgKGZhc3QpIEpTT2JqZWN0OjpnZXQoKSwKKyAgICAgICAgYW5kIGEg
c2Vjb25kIGxvb3AgZm9yIGFueSBsYXJnZSBpbmRpY2VzLCB1c2luZyBhIHNsb3dlciBidXQgc2Fm
ZSBjb2RlIHBhdGguCisKKyAgICAgICAgSSBhbHNvIGZpeGVkIGFuIHVucmVsYXRlZCBidWcgSSBu
b3RpY2VkIGluIENsb2JiZXJpemUvQWJzdHJhY3RJbnRlcnByZXRlciB3aGlsZSB0ZXN0aW5nIHRo
ZSByZXN0IG9mIHRoZSBwYXRjaDoKKyAgICAgICAgdGhleSB3ZXJlIG5vdCBhd2FyZSB0aGF0IE5l
d1R5cGVkQXJyYXkgY2FuIHRha2UgYSBJbnQ1MlJlcFVzZSBjaGlsZC4KKworICAgICAgICBGaW5h
bGx5LCB3aGlsZSB0cnlpbmcgdG8gcHJvcGVybHkgdGVzdCB0aGlzIGNoYW5nZSwgSSBkaXNjb3Zl
cmVkIHRoYXQgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UKKyAgICAgICAgKHdo
aWNoIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0IHdoaWNoIHBhc3NlcyBpdCBhIG5vbi0wIG9iamVjdE9mZnNldCkKKyAgICAgICAgd2Fz
IHN0aWxsIHVzaW5nIHVuc2lnbmVkIGV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBzaXplX3QsIGFuZCB0
aGF0IHRoZSBzYW1lIHdhcyB0cnVlIG9mIGFsbCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHNhbWUg
ZmlsZS4KKyAgICAgICAgU28gSSBmaXhlZCBpdCBpbiB0aGUgc2FtZSBwYXRjaC4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmlu
Z01vZGU+Ojpjb25zdHJ1Y3RJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0NvcHlXaXRoaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmls
bCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRl
eE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5
Q3JlYXRlKToKKwogMjAyMS0xMC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIE1ha2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBOb2RlUmVzdWx0SW50NTIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBlNWMxNDQ3MDViYTUuLjk0NWFmNDAyMGJmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMjk1OCw2ICsyOTU4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDlhZDVjMjcwMjBkNi4uZjY2YTk4ZWM0ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU1Miw2ICsxNTUyLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAg
ICAgICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzk5NzQ3NDFmNjEzLi5iOTJjZTE1NzNjMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmNwcApAQCAtODEsOSArODEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0dlbmVy
aWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdNb2RlPjo6Y29uc3RydWN0SW1wbChKU0ds
bwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2
bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmVXaXRoU2hhcmluZ01vZGU8c2hhcmluZ01vZGU+LCBuZXdU
YXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBzaXplX3QgbGVuZ3RoOwog
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBsZW5ndGggPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVu
Z3RoIik7CisgICAgICAgIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRvZXNuJ3Qgc2F5IHNvLCBpdCBp
cyBpbiBmYWN0IGNvcnJlY3QgdG8gc2F5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAppbmRleCAzMzZmMWFlZTNmNzEuLmY2ZTgwMGNkNWIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgIHNpemVfdCBvZmZzZXQgPSAwOwog
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3Vu
dCA+IDEpIHsKLSAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICAgICAgb2Zmc2V0ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIGlmIChhcmdDb3VudCA+IDIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTNkZGMxZjgzNmE3Li41MGU0MWUwNDljNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMTMsMTkgKzMxMywzNCBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBWZXJpZnkgdGhhdCB3
ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFY
IG9yIG1vcmUKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmpl
Y3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSkpOwotICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2Uu
IEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1
ZSk7CisgICAgICAgIGF1dG8gdHJ5U2V0SW5kZXggPSBbJl0oc2l6ZV90IGluZGV4LCBKU1ZhbHVl
IHZhbHVlKSAtPiBib29sIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKICAgICAgICAgICAgIGlmICghc3VjY2Vz
cykgewogICAgICAgICAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Owor
ICAgICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0
aCBhbiBpbmRleCBvZiBtb3JlIHRoYW4gTUFYX0FSUkFZX0lOREVYLgorICAgICAgICAvLyBTbyB3
ZSBpdGVyYXRlIGluIHRoZSBvcHRpbWl6ZWQgbG9vcCB1cCB0byBNQVhfQVJSQVlfSU5ERVgsIHRo
ZW4gaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gZG8gYmV5b25kIHRoaXMsIHdlIHJlbHkgb24gc2xv
d2VyIGNvZGUuCisgICAgICAgIHNpemVfdCBzYWZlVW5hZGp1c3RlZExlbmd0aCA9IHN0ZDo6bWlu
KGxlbmd0aCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihNQVhfQVJSQVlfSU5ERVggKyAxKSk7CisgICAg
ICAgIHNpemVfdCBzYWZlTGVuZ3RoID0gb2JqZWN0T2Zmc2V0IDw9IHNhZmVVbmFkanVzdGVkTGVu
Z3RoID8gc2FmZVVuYWRqdXN0ZWRMZW5ndGggLSBvYmplY3RPZmZzZXQgOiAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhZmVMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNT
RVJUKGkgKyBvYmplY3RPZmZzZXQgPD0gTUFYX0FSUkFZX0lOREVYKTsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXRyeVNldEluZGV4KG9mZnNldCArIGks
IHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IHNhZmVMZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBQcm9wZXJ0eU5hbWUg
cHJvcGVydHkgPSBQcm9wZXJ0eU5hbWUoaWRlbnQpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlTZXRJ
bmRleChvZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggMDA0OTJjMGFiM2UzLi5kZjA0
MzVmNmUzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaApAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXND
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gMCkKK2lubGluZSBzaXpl
X3QgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgdW5kZWZpbmVk
VmFsdWUgPSAwKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1
cm4gdW5kZWZpbmVkVmFsdWU7CkBAIC05NCw5ICs5NCw5IEBAIGlubGluZSB1bnNpZ25lZCBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgZG91YmxlIGluZGV4RG91YmxlID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOwogICAgIGlmIChpbmRleERvdWJsZSA8IDApIHsKICAgICAgICAgaW5kZXhE
b3VibGUgKz0gbGVuZ3RoOwotICAgICAgICByZXR1cm4gaW5kZXhEb3VibGUgPCAwID8gMCA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgICAgIHJldHVybiBpbmRleERv
dWJsZSA8IDAgPyAwIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiAgICAgfQot
ICAgIHJldHVybiBpbmRleERvdWJsZSA+IGxlbmd0aCA/IGxlbmd0aCA6IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgcmV0dXJuIGluZGV4RG91YmxlID4gbGVuZ3RoID8g
bGVuZ3RoIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KQEAgLTExMCwxMyArMTEwLDE2IEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwg
SlNHbG9iYWxPCiAgICAgaWYgKFVOTElLRUxZKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiX3MpOwogCi0gICAgdW5zaWduZWQgb2Zmc2V0
OworICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDApKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPZmZzZXQgc2hvdWxkIG5vdCBiZSBu
ZWdhdGl2ZSIpOwotICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
aW4ob2Zmc2V0TnVtYmVyLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkpKTsKKyAgICAgICAgaWYgKG9mZnNldE51bWJlciA8PSBtYXhTYWZl
SW50ZWdlcigpICYmIG9mZnNldE51bWJlciA8PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpKQorICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0
TnVtYmVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvZmZzZXQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwog
CkBAIC0xMjYsNyArMTI5LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBKU0dsb2JhbE8KICAgICBKU09iamVj
dCogc291cmNlQXJyYXkgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAot
ICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBzaXplX3QgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVk
Vmlldyhzb3VyY2VBcnJheS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkg
ewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmlldyA9IGpzQ2FzdDxKU0FycmF5
QnVmZmVyVmlldyo+KHNvdXJjZUFycmF5KTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNvdXJjZVZp
ZXctPmlzRGV0YWNoZWQoKSkpCkBAIC0xMzYsNyArMTM5LDcgQEAgQUxXQVlTX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBKU0ds
b2JhbE8KICAgICB9IGVsc2UgewogICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gc291cmNl
QXJyYXktPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAg
ICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihnbG9iYWxPYmplY3QpOworICAgICAgICBs
ZW5ndGggPSBsZW5ndGhWYWx1ZS50b0xlbmd0aChnbG9iYWxPYmplY3QpOwogICAgIH0KIAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTU2LDE4
ICsxNTksMjAgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKFZNJiB2bSwgSlMKICAgICBpZiAodGhpc09iamVjdC0+
aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
IAotICAgIGxvbmcgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7Ci0gICAgbG9uZyB0byA9
IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLCBsZW5ndGgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0
LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgdG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFy
dE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgbGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBsb25n
IGZyb20gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZnJvbSA9IGFyZ3Vt
ZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGxvbmcgZmluYWwgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBs
ZW5ndGgpOworICAgIHNpemVfdCBmaW5hbCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0
T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0
aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBpZiAoZmluYWwgPCBmcm9tKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgbG9uZyBjb3VudCA9IHN0ZDo6bWluKGxlbmd0
aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKKyAgICBBU1NFUlQodG8gPD0g
bGVuZ3RoKTsKKyAgICBBU1NFUlQoZnJvbSA8PSBsZW5ndGgpOworICAgIHNpemVfdCBjb3VudCA9
IHN0ZDo6bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwpAQCAtMTg3LDE0ICsxOTIsMTQgQEAgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhWTSYg
dm0sIEpTR2wKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVy
SGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRo
aXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5n
dGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAKLSAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZElu
ZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBs
ZW5ndGgpOworICAgIHNpemVfdCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0
T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBsZW5ndGgpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKQEAgLTIzMywxMyArMjM4LDEzIEBAIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhP
ZihWTSYgdm0sIEpTR2xvCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09iamVj
dC0+bGVuZ3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcigtMSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJ
bmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwg
bGVuZ3RoKTsKKyAgICBzaXplX3QgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFy
dE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlm
ICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC0yNjksMTIgKzI3NCwxMiBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4o
Vk0mIHZtLCBKU0dsb2JhbAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJy
YXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNPYmpl
Y3QtPmxlbmd0aCgpOwogICAgIGF1dG8gam9pbldpdGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1Zp
ZXcgc2VwYXJhdG9yKSAtPiBFbmNvZGVkSlNWYWx1ZSB7CiAgICAgICAgIEpTU3RyaW5nSm9pbmVy
IGpvaW5lcihnbG9iYWxPYmplY3QsIHNlcGFyYXRvciwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0Rl
dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChWaWV3Q2xhc3M6OkFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseSkKICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CkBA
IC0yODcsNyArMjkyLDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWwKICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAg
ICAgICAgICAgICAgICBqb2luZXIuYXBwZW5kRW1wdHlTdHJpbmcoKTsKICAgICAgICAgfQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqb2luZXIuam9p
bihnbG9iYWxPYmplY3QpKSk7CkBAIC0zMTcsMTkgKzMyMiwxOSBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwoVk0mIHZtLCBK
U0dsb2JhbAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhp
c09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0
aCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZy
b21WYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICB1bnNpZ25lZCBzdGFydCA9IGFyZ3Vt
ZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLCBsZW5ndGgsIDApOworICAgIHNpemVfdCBzdGFydCA9IGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
LCBsZW5ndGgsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAg
dW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICBzaXpl
X3QgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxlbmd0aCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
dHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyArK2luZGV4KQorICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyArK2luZGV4KQogICAgICAgICB0aGlz
T2JqZWN0LT5zZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGluZGV4LCBuYXRpdmVWYWx1ZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QpOwpAQCAtMzQ1LDE0ICsz
NTAsMTQgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEoKICAgICBpZiAodGhpc09iamVjdC0+aXNE
ZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBs
ZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlVG9GaW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAotICAgIGludCBpbmRleCA9IGxl
bmd0aCAtIDE7CisgICAgc2l6ZV90IGluZGV4ID0gbGVuZ3RoIC0gMTsKICAgICBpZiAoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBKU1ZhbHVlIGZyb21WYWx1ZSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgICAgIGRvdWJsZSBmcm9tRG91
YmxlID0gZnJvbVZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKQEAgLTM2
Myw3ICszNjgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSgogICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZnJvbURvdWJsZSA8IGxlbmd0aCkKLSAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZyb21Eb3VibGUpOworICAgICAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGZyb21Eb3VibGUpOwogICAgIH0KIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFj
aGVkKCkpCkBAIC0zNzcsMTAgKzM4MiwxNCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSgogICAg
IHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKICAgICBSRUxFQVNF
X0FTU0VSVCghdGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKTsKIAotICAgIGZvciAoOyBpbmRleCA+
PSAwOyAtLWluZGV4KSB7CisgICAgLy8gV2UgYWx3YXlzIGhhdmUgYXQgbGVhc3Qgb25lIGl0ZXJh
dGlvbiwgc2luY2Ugd2UgY2hlY2tlZCB0aGF0IGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSAwIGVh
cmxpZXIuCisgICAgZG8gewogICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09IHRhcmdldE9wdGlv
bikKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsK
LSAgICB9CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
LS1pbmRleDsKKyAgICB9IHdoaWxlICh0cnVlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoLTEpKTsKIH0KQEAgLTQ2MywxMSArNDcyLDExIEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZt
LCBKU0dsb2JhCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCB0aGlzTGVuZ3Ro
ID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRoaXNMZW5ndGggPSB0aGlzT2Jq
ZWN0LT5sZW5ndGgoKTsKIAotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5k
ZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHRo
aXNMZW5ndGgpOworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0
YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCB0aGlzTGVuZ3Ro
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xlbmd0aCk7
CisgICAgc2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3Ro
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC00NzcsNyArNDg2LDcgQEAgQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
bGljZShWTSYgdm0sIEpTR2xvYmEKICAgICBlbmQgPSBzdGQ6Om1heChiZWdpbiwgZW5kKTsKIAog
ICAgIEFTU0VSVChlbmQgPj0gYmVnaW4pOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZCAtIGJl
Z2luOworICAgIHNpemVfdCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CkBAIC01
NjksMTYgKzU3OCwxNiBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gR2V0IHRoZSBsZW5ndGggaGVyZTsg
bGF0ZXIgYXNzZXJ0IHRoYXQgdGhlIGxlbmd0aCBkaWRuJ3QgY2hhbmdlLgotICAgIHVuc2lnbmVk
IHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgdGhpc0xlbmd0
aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCiAgICAgLy8gSSB3b3VsZCBhc3NlcnQgdGhhdCB0
aGUgYXJndW1lbnRzIGFyZSBpbnRlZ2VycyBoZXJlIGJ1dCB0aGF0J3Mgbm90IHRydWUgc2luY2UK
ICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2ludGVnZXIgYWxs
b3dzIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbgogICAgIC8vIHRvIGJlICsvLSBJbmZpbml0
eSBhbmQgLTAuCiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNOdW1iZXIoKSk7
CiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSB8fCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpLmlzTnVtYmVyKCkpOwotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJn
dW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIHRoaXNMZW5ndGgpOworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xh
bXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCB0aGlzTGVuZ3RoKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHVu
c2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3RoKTsKKyAg
ICBzaXplX3QgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHRoaXNMZW5ndGgsIHRoaXNMZW5ndGgpOwog
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghdGhp
c09iamVjdC0+aXNEZXRhY2hlZCgpKTsKQEAgLTU4Nyw4ICs1OTYsOCBAQCBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlD
cmVhdGUoVk0mCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CiAKICAgICBBU1NFUlQo
ZW5kID49IGJlZ2luKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBiZWdpbjsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gYmVnaW47CisgICAg
c2l6ZV90IGxlbmd0aCA9IGVuZCAtIGJlZ2luOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IHRoaXNPYmplY3QtPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYg
KFVOTElLRUxZKCFhcnJheUJ1ZmZlcikpIHsKQEAgLTU5Nyw3ICs2MDYsNyBAQCBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJy
YXlDcmVhdGUoVk0mCiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNMZW5ndGggPT0gdGhp
c09iamVjdC0+bGVuZ3RoKCkpOwogCi0gICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNP
YmplY3QtPmJ5dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7Cisg
ICAgc2l6ZV90IG5ld0J5dGVPZmZzZXQgPSB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZz
ZXQgKiBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogCiAgICAgSlNPYmplY3QqIGRlZmF1bHRDb25z
dHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6
VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDIpOwo=
</data>
<flag name="review"
          id="466692"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442243</attachid>
            <date>2021-10-22 19:03:32 -0700</date>
            <delta_ts>2021-10-29 14:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>29429</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTg3MzFlZjJlNTQ0Li41MDVmNWJkMDdmMmEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTAtMjEgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIC0gcmVncmVzcy04NDQwMjA0
MyBpcyB0aGUgdGVzdGNhc2UgdGhhdCByZXZlYWxlZCB0aGUgcHJvYmxlbS4KKyAgICAgICAgLSB0
eXBlZC1hcnJheS1zZXQtbGFyZ2UoLW9mZnNldCkgdGVzdCB0aGUgc2FtZSBmdW5jdGlvbiwgaW4g
dGhlIHR5cGVkLWFycmF5IHRvIHR5cGVkLWFycmF5IGNhc2UKKyAgICAgICAgLSB0eXBlZC1hcnJh
eS1sYXJnZS1zbGljZSB0ZXN0cyB0aGUgb25seSBjYWxsZXIgdGhhdCBwYXNzZXMgYSBub24tMCBv
YmplY3RPZmZzZXQsIGFuZCBmb3VuZCBvdGhlciBpc3N1ZXMgd2l0aCBpdAorICAgICAgICAtIHR5
cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5vdC5qcyBpcyBqdXN0IGFub3RoZXIgdGVz
dCBvZiB0aGUgV2FzbTRHQiBjaGFuZ2UgdGhhdCBJIGhhZCBmb3Jnb3R0ZW4gdG8gY29tbWl0CisK
KyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy04NDQwMjA0My5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5vdC5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2Utc2xpY2Uu
anM6IEFkZGVkLgorICAgICAgICAoZXhwZWN0KToKKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJy
YXktc2V0LWxhcmdlLW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3R5cGVkLWFy
cmF5LXNldC1sYXJnZS5qczogQWRkZWQuCisKIDIwMjEtMTAtMjEgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbnNlcnRlZCBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MiBmb3IgUHV0QnlWYWwgc2hvdWxkIGhhdmUgTm9kZVJlc3VsdEludDUyCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTg0NDAyMDQzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcmVncmVzcy04NDQwMjA0My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmUzMjQ2ZGExYmZkYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3JlZ3Jlc3MtODQ0MDIwNDMuanMKQEAgLTAsMCArMSw0IEBACisvL0Bza2lwIGlmICRtZW1vcnlM
aW1pdGVkCisvL0ByZXF1aXJlT3B0aW9ucygiLS13YXRjaGRvZz0xMDAwIiwgIi0td2F0Y2hkb2ct
ZXhjZXB0aW9uLW9rIikKKworbmV3IFVpbnQ4QXJyYXkoe2xlbmd0aDogMioqMzJ9KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5v
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5v
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiNWY3YWJmZGM4
NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLW9v
Yi1ldmVudHVhbGx5LW5vdC5qcwpAQCAtMCwwICsxLDI5IEBACisvL0Agc2tpcAorLy8gVGhpcyB0
ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiByZWxlYXNlIG1vZGUgb24gYW4gTTEgTUJQLCBzbyBJJ2Qg
cmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQgb24gRVdTIGJ5IGRlZmF1bHQuCisKK2xldCBvbmVHaWdh
ID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5n
dGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgewor
ICAgICAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICAgICAgdmFyIHZhbHVl
ID0gNDI7CisgICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworICAgICAgICB2YXIgcmVzdWx0
ID0gYXJyYXlbaW5kZXhdOworICAgICAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IDEwOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworICAgIHZhciByZXN1
bHQgPSBhcnJheVtpbmRleF0KKyAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICB0aHJv
dyAoIkluIG91dC1vZi1ib3VuZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiAr
IHJlc3VsdCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMg
KiBvbmVHaWdhOworbGV0IGZvdXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhB
cnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBV
aW50OEFycmF5KGZvdXJHaWdzKSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChu
ZXcgVWludDhDbGFtcGVkQXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVk
QXJyYXkvM0dCIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJn
ZS1zbGljZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODA3MGViYWE4ZGRkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2Utc2xpY2UuanMK
QEAgLTAsMCArMSwzNSBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorCitsZXQgZ2ln
YSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworbGV0IGFycmF5ID0gbmV3IEludDhBcnJheSg0ICog
Z2lnYSk7CithcnJheVswXSA9IDE7CithcnJheVtnaWdhXSA9IDI7CithcnJheVsyICogZ2lnYV0g
PSAzOworYXJyYXlbMyAqIGdpZ2FdID0gNDsKKworZnVuY3Rpb24gZXhwZWN0KGJhc2UsIGluZGV4
LCBleHBlY3RlZCwgc3RyaW5nKQoreworICAgIGxldCByZXN1bHQgPSBiYXNlIFtpbmRleF0KKyAg
ICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyAiRXhwZWN0ZWQgIiArIGV4
cGVjdGVkICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIHdoaWxlIHRlc3RpbmcgIiArIHN0cmlu
ZzsKK30KKworbGV0IHNsaWNlMCA9IGFycmF5LnNsaWNlKGdpZ2EpOworZXhwZWN0KHNsaWNlMCwg
MCwgMiwgInNsaWNlMCIpOworZXhwZWN0KHNsaWNlMCwgZ2lnYSwgMywgInNsaWNlMCIpOworZXhw
ZWN0KHNsaWNlMCwgMipnaWdhLCA0LCAic2xpY2UwIik7CisKK2xldCBzdWJzbGljZTAgPSBzbGlj
ZTAuc2xpY2UoZ2lnYSk7CitleHBlY3Qoc3Vic2xpY2UwLCAwLCAzLCAic3Vic2xpY2UwIik7Citl
eHBlY3Qoc3Vic2xpY2UwLCBnaWdhLCA0LCAic3Vic2xpY2UwIik7CisKK2xldCBzbGljZTEgPSBh
cnJheS5zbGljZShnaWdhLCAyICogZ2lnYSk7CitleHBlY3Qoc2xpY2UxLCAwLCAyLCAic2xpY2Ux
Iik7CisKK2xldCBzbGljZTIgPSBhcnJheS5zbGljZSgzICogZ2lnYSk7CitleHBlY3Qoc2xpY2Uy
LCAwLCA0LCAic2xpY2UyIik7CisKK2xldCBzbGljZTMgPSBhcnJheS5zbGljZSg0ICogZ2lnYSk7
CitsZXQgc3ViU2xpY2UzID0gc2xpY2UzLnNsaWNlKDApOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2Utb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dHlwZWQtYXJyYXktc2V0LWxhcmdlLW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjdiM2M5YzliMjMzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3R5cGVkLWFycmF5LXNldC1sYXJnZS1vZmZzZXQuanMKQEAgLTAsMCArMSwyOCBAQAor
Ly9Ac2tpcAorLy8gVGhpcyB0ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiByZWxlYXNlIG1vZGUgb24g
YW4gTTEgTUJQLCBzbyBJJ2QgcmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQgb24gRVdTIGJ5IGRlZmF1
bHQuCisKK2xldCBnaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworbGV0IHNvdXJjZUxlbmd0aCA9
IGdpZ2E7CitsZXQgZGVzdGluYXRpb25MZW5ndGggPSA0ICogZ2lnYTsKK2xldCBvZmZzZXQgPSAz
ICogZ2lnYTsKKwordmFyIHNvdXJjZSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShzb3VyY2VMZW5n
dGgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBzb3VyY2VbaV0gPSBpICYg
MHgzRjsKKwordmFyIGRlc3RpbmF0aW9uID0gbmV3IEludDhBcnJheShkZXN0aW5hdGlvbkxlbmd0
aCk7CitkZXN0aW5hdGlvbi5zZXQoc291cmNlLCBvZmZzZXQpOworCisvLyBCZWZvcmUgdGhlIG9m
ZnNldAorbGV0IHZhbHVlID0gZGVzdGluYXRpb25bNDJdOworaWYgKHZhbHVlICE9PSAwKQorICAg
IHRocm93ICJBdCBpbmRleCAiICsgNDIgKyAiLCBleHBlY3RlZCAwIGJ1dCBnb3QgIiArIHZhbHVl
OworCisvLyBBZnRlciB0aGUgb2Zmc2V0Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgbGV0IGluZGV4ID0gb2Zmc2V0ICsgaTsKKyAgICBsZXQgdmFsdWUgPSBkZXN0aW5hdGlv
bltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXggLSBvZmZzZXQpICYgMHgz
RjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkF0IGlu
ZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgZ290
ICIgKyB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNl
dC1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1sYXJnZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ1MTYyNDRlYWRhYQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1sYXJnZS5qcwpAQCAt
MCwwICsxLDQxIEBACisvL0Bza2lwCisvLyBUaGlzIHRlc3RzIHRha2VzID40cyBldmVuIGluIHJl
bGVhc2UgbW9kZSBvbiBhbiBNMSBNQlAsIHNvIEknZCByYXRoZXIgYXZvaWQgcnVubmluZyBpdCBv
biBFV1MgYnkgZGVmYXVsdC4KKworbGV0IGdpZ2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CitsZXQg
c291cmNlTGVuZ3RoID0gMiAqIGdpZ2E7CitsZXQgZGVzdGluYXRpb25MZW5ndGggPSAzICogZ2ln
YTsKK2xldCBvZmZzZXQgPSBnaWdhOworCit2YXIgc291cmNlID0gbmV3IFVpbnQ4Q2xhbXBlZEFy
cmF5KHNvdXJjZUxlbmd0aCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIHNv
dXJjZVtpXSA9IGkgJiAweDNGOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
IGxldCBpbmRleCA9IGdpZ2EgKyBpOworICAgIHNvdXJjZVtpbmRleF0gPSBpbmRleCAmIDB4M0YK
K30KKwordmFyIGRlc3RpbmF0aW9uID0gbmV3IEludDhBcnJheShkZXN0aW5hdGlvbkxlbmd0aCk7
CitkZXN0aW5hdGlvbi5zZXQoc291cmNlLCBvZmZzZXQpOworCisvLyBCZWZvcmUgdGhlIG9mZnNl
dAorbGV0IHZhbHVlID0gZGVzdGluYXRpb25bNDJdOworaWYgKHZhbHVlICE9PSAwKQorICAgIHRo
cm93ICJBdCBpbmRleCAiICsgNDIgKyAiLCBleHBlY3RlZCAwIGJ1dCBnb3QgIiArIHZhbHVlOwor
CisvLyBBZnRlciB0aGUgb2Zmc2V0IGJ1dCBiZWZvcmUgSU5UMzJfTUFYCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgbGV0IGluZGV4ID0gb2Zmc2V0ICsgaTsKKyAgICBsZXQg
dmFsdWUgPSBkZXN0aW5hdGlvbltpbmRleF07CisgICAgbGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5k
ZXggLSBvZmZzZXQpICYgMHgzRjsKKyAgICBpZiAodmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAg
ICAgICAgdGhyb3cgIkF0IGluZGV4ICIgKyBpbmRleCArICIsIGV4cGVjdGVkICIgKyBleHBlY3Rl
ZFZhbHVlICsgIiBidXQgZ290ICIgKyB2YWx1ZTsKK30KKworLy8gQWZ0ZXIgdGhlIG9mZnNldCBh
bmQgZ3JlYXRlciB0aGFuIElOVDMyX01BWAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgIGxldCBpbmRleCA9IG9mZnNldCArIGdpZ2EgKyBpOworICAgIGxldCB2YWx1ZSA9IGRl
c3RpbmF0aW9uW2luZGV4XTsKKyAgICBsZXQgZXhwZWN0ZWRWYWx1ZSA9IChpbmRleCAtIG9mZnNl
dCkgJiAweDNGOworICAgIGlmICh2YWx1ZSAhPSBleHBlY3RlZFZhbHVlKQorICAgICAgICB0aHJv
dyAiQXQgaW5kZXggIiArIGluZGV4ICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkVmFsdWUgKyAi
IGJ1dCBnb3QgIiArIHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTc5MDI3
NTdkNTBhLi43OWUwMjVmZDkzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDIxLTEwLTIxICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+
CisKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCBjcmFzaGVz
IGlmIHRoZSBsZW5ndGggKyBvYmplY3RPZmZzZXQgaXMgPiBVSU5UMzJfTUFYCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5NzUKKyAgICAgICAgcmRh
cjovLzg0NDAyMDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBVSU5UX01BWCAoYW5kIGFueXRoaW5nIGFib3ZlIGl0KSBpcyBub3QgYSB2YWxpZCBhcnJh
eSBpbmRleCwgc28gd2UgY2Fubm90IHVzZSBKU09iamVjdDo6Z2V0KEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQpIHdpdGggYW4gaW5kZXggdGhhdCBiaWcuCisgICAgICAgIFRoaXMgd2FzIHBvaW50
ZWQgYnkgWXVzdWtlIGluIGhpcyByZXZpZXcgb2YgbXkgcmVjZW50IHBhdGNoIHRoYXQgaW50cm9k
dWNlZCB0aGUgcHJvYmxlbSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTM1MyNjMjEpLAorICAgICAgICBidXQgSSBtaXN1bmRlcnN0b29kIHRoZSBjb2RlIGFuZCB0
aG91Z2h0IHdlIGNvdWxkIG5ldmVyIGdldCB2YWx1ZXMgdGhhdCBiaWcgYXQgdGhhdCBwb2ludCwg
dGh1cyBvbmx5IHB1dHRpbmcgYSBSRUxFQVNFX0FTU0VSVC4KKyAgICAgICAgSW4gdGhpcyBwYXRj
aCBJIGluc3RlYWQgYXBwbHkgaGlzIG9yaWdpbmFsIHN1Z2dlc3Rpb24gdG8gaGF2ZSBhIGZpcnN0
IGxvb3AgdXNpbmcgdGhlIChmYXN0KSBKU09iamVjdDo6Z2V0KCksCisgICAgICAgIGFuZCBhIHNl
Y29uZCBsb29wIGZvciBhbnkgbGFyZ2UgaW5kaWNlcywgdXNpbmcgYSBzbG93ZXIgYnV0IHNhZmUg
Y29kZSBwYXRoLgorCisgICAgICAgIEkgYWxzbyBmaXhlZCBhbiB1bnJlbGF0ZWQgYnVnIEkgbm90
aWNlZCBpbiBDbG9iYmVyaXplL0Fic3RyYWN0SW50ZXJwcmV0ZXIgd2hpbGUgdGVzdGluZyB0aGUg
cmVzdCBvZiB0aGUgcGF0Y2g6CisgICAgICAgIHRoZXkgd2VyZSBub3QgYXdhcmUgdGhhdCBOZXdU
eXBlZEFycmF5IGNhbiB0YWtlIGEgSW50NTJSZXBVc2UgY2hpbGQuCisKKyAgICAgICAgRmluYWxs
eSwgd2hpbGUgdHJ5aW5nIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBjaGFuZ2UsIEkgZGlzY292ZXJl
ZCB0aGF0IGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlCisgICAgICAgICh3aGlj
aCBpcyB0aGUgb25seSBjYWxsZXIgb2YgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldCB3aGljaCBwYXNzZXMgaXQgYSBub24tMCBvYmplY3RPZmZzZXQpCisgICAgICAgIHdhcyBz
dGlsbCB1c2luZyB1bnNpZ25lZCBldmVyeXdoZXJlIGluc3RlYWQgb2Ygc2l6ZV90LCBhbmQgdGhh
dCB0aGUgc2FtZSB3YXMgdHJ1ZSBvZiBhbGwgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzYW1lIGZp
bGUuCisgICAgICAgIFNvIEkgZml4ZWQgaXQgaW4gdGhlIHNhbWUgcGF0Y2guCisKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcml6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPHNoYXJpbmdN
b2RlPjo6Y29uc3RydWN0SW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6c2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OmFyZ3VtZW50Q2xhbXBlZElu
ZGV4RnJvbVN0YXJ0T3JFbmQpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Sm9pbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwp
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZSk6CisKIDIwMjEtMTAtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBNYWtlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgTm9kZVJlc3VsdEludDUyCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggZTVjMTQ0NzA1YmE1Li45NDVhZjQwMjBiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTI5NTgsNiArMjk1OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
ewogICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApp
bmRleCA5YWQ1YzI3MDIwZDYuLmY2NmE5OGVjNGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE1NTIsNiArMTU1Miw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBj
YXNlIEludDUyUmVwVXNlOgogICAgICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwogICAg
ICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Q29uc3RydWN0b3IuY3BwCmluZGV4IDM5OTc0NzQxZjYxMy4uYjkyY2UxNTczYzBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5jcHAKQEAgLTgxLDkgKzgxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNHZW5lcmlj
QXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEltcGwoSlNHbG8K
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0s
IGFycmF5QnVmZmVyU3RydWN0dXJlV2l0aFNoYXJpbmdNb2RlPHNoYXJpbmdNb2RlPiwgbmV3VGFy
Z2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgc2l6ZV90IGxlbmd0aDsKICAg
ICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgbGVuZ3RoID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0
aCIpOworICAgICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
VHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBkb2Vzbid0IHNheSBzbywgaXQgaXMg
aW4gZmFjdCBjb3JyZWN0IHRvIHNheQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKaW5kZXggMzM2ZjFhZWUzZjcxLi5mNmU4MDBjZDViMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjc4LDcgKzI3
OCw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAg
ICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQg
PiAxKSB7Ci0gICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgICAgIG9mZnNldCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoYXJnQ291bnQgPiAyKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGEzZGRjMWY4MzZhNy4uMGI3Mzg4OTEwYTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzEzLDE5ICszMTMsMzMgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ug
d29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBv
ciBtb3JlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0
T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkpKTsKLSAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBC
dXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKLSAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUp
OworICAgICAgICBhdXRvIHRyeVNldEluZGV4ID0gWyZdKHNpemVfdCBpbmRleCwgSlNWYWx1ZSB2
YWx1ZSkgLT4gYm9vbCB7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3Mp
IHsKICAgICAgICAgICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfTsKKyAg
ICAgICAgLy8gSXQgaXMgbm90IHZhbGlkIHRvIGV2ZXIgY2FsbCBvYmplY3QtPmdldCgpIHdpdGgg
YW4gaW5kZXggb2YgbW9yZSB0aGFuIE1BWF9BUlJBWV9JTkRFWC4KKyAgICAgICAgLy8gU28gd2Ug
aXRlcmF0ZSBpbiB0aGUgb3B0aW1pemVkIGxvb3AgdXAgdG8gTUFYX0FSUkFZX0lOREVYLCB0aGVu
IGlmIHRoZXJlIGlzIGFueXRoaW5nIHRvIGRvIGJleW9uZCB0aGlzLCB3ZSByZWx5IG9uIHNsb3dl
ciBjb2RlLgorICAgICAgICBzaXplX3Qgc2FmZVVuYWRqdXN0ZWRMZW5ndGggPSBzdGQ6Om1pbihs
ZW5ndGgsIHN0YXRpY19jYXN0PHNpemVfdD4oTUFYX0FSUkFZX0lOREVYKSArIDEpOworICAgICAg
ICBzaXplX3Qgc2FmZUxlbmd0aCA9IG9iamVjdE9mZnNldCA8PSBzYWZlVW5hZGp1c3RlZExlbmd0
aCA/IHNhZmVVbmFkanVzdGVkTGVuZ3RoIC0gb2JqZWN0T2Zmc2V0IDogMDsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzYWZlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VS
VChpICsgb2JqZWN0T2Zmc2V0IDw9IE1BWF9BUlJBWV9JTkRFWCk7CisgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlTZXRJbmRleChvZmZzZXQgKyBpLCB2
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSBzYWZlTGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCF0cnlTZXRJbmRleChv
ZmZzZXQgKyBpLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggMDA0OTJjMGFiM2UzLi5kZjA0MzVmNmUz
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApA
QCAtODYsNyArODYsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1pbmxpbmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRP
ckVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gMCkKK2lubGluZSBzaXplX3QgYXJn
dW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgdW5kZWZpbmVkVmFsdWUg
PSAwKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkVmFsdWU7CkBAIC05NCw5ICs5NCw5IEBAIGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgZG91YmxlIGluZGV4RG91YmxlID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxP
YmplY3QpOwogICAgIGlmIChpbmRleERvdWJsZSA8IDApIHsKICAgICAgICAgaW5kZXhEb3VibGUg
Kz0gbGVuZ3RoOwotICAgICAgICByZXR1cm4gaW5kZXhEb3VibGUgPCAwID8gMCA6IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbmRleERvdWJsZSk7CisgICAgICAgIHJldHVybiBpbmRleERvdWJsZSA8
IDAgPyAwIDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiAgICAgfQotICAgIHJl
dHVybiBpbmRleERvdWJsZSA+IGxlbmd0aCA/IGxlbmd0aCA6IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpbmRleERvdWJsZSk7CisgICAgcmV0dXJuIGluZGV4RG91YmxlID4gbGVuZ3RoID8gbGVuZ3Ro
IDogc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleERvdWJsZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KQEAgLTExMCwxMyArMTEwLDE2IEBAIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9i
YWxPCiAgICAgaWYgKFVOTElLRUxZKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3Rl
ZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiX3MpOwogCi0gICAgdW5zaWduZWQgb2Zmc2V0OworICAg
IHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIp
IHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKG9mZnNldE51bWJlciA8IDApKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPZmZzZXQgc2hvdWxkIG5vdCBiZSBuZWdhdGl2
ZSIpOwotICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptaW4ob2Zm
c2V0TnVtYmVyLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkpKTsKKyAgICAgICAgaWYgKG9mZnNldE51bWJlciA8PSBtYXhTYWZlSW50ZWdl
cigpICYmIG9mZnNldE51bWJlciA8PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpKQorICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0TnVtYmVy
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBvZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCkBAIC0x
MjYsNyArMTI5LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBKU0dsb2JhbE8KICAgICBKU09iamVjdCogc291
cmNlQXJyYXkgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHVu
c2lnbmVkIGxlbmd0aDsKKyAgICBzaXplX3QgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVkVmlldyhz
b3VyY2VBcnJheS0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewogICAg
ICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmlldyA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KHNvdXJjZUFycmF5KTsKICAgICAgICAgaWYgKFVOTElLRUxZKHNvdXJjZVZpZXctPmlz
RGV0YWNoZWQoKSkpCkBAIC0xMzYsNyArMTM5LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBKU0dsb2JhbE8K
ICAgICB9IGVsc2UgewogICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gc291cmNlQXJyYXkt
PmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBsZW5n
dGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihnbG9iYWxPYmplY3QpOworICAgICAgICBsZW5ndGgg
PSBsZW5ndGhWYWx1ZS50b0xlbmd0aChnbG9iYWxPYmplY3QpOwogICAgIH0KIAogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTU2LDE4ICsxNTks
MjAgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNDb3B5V2l0aGluKFZNJiB2bSwgSlMKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRh
Y2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAg
IGxvbmcgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7Ci0gICAgbG9uZyB0byA9IGFyZ3Vt
ZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBsZW5ndGgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5n
dGgoKTsKKyAgICBzaXplX3QgdG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5k
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgbGVuZ3RoKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBsb25nIGZyb20g
PSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZnJvbSA9IGFyZ3VtZW50Q2xh
bXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGxvbmcgZmluYWwgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9y
RW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3RoLCBsZW5ndGgp
OworICAgIHNpemVfdCBmaW5hbCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0aCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBp
ZiAoZmluYWwgPCBmcm9tKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgbG9uZyBjb3VudCA9IHN0ZDo6bWluKGxlbmd0aCAtIHN0
ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKKyAgICBBU1NFUlQodG8gPD0gbGVuZ3Ro
KTsKKyAgICBBU1NFUlQoZnJvbSA8PSBsZW5ndGgpOworICAgIHNpemVfdCBjb3VudCA9IHN0ZDo6
bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKIAogICAgIGlm
ICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwpAQCAtMTg3LDE0ICsxOTIsMTQgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhWTSYgdm0sIEpT
R2wKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmpl
Y3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsK
IAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAKLSAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJv
bVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBsZW5ndGgp
OworICAgIHNpemVfdCBpbmRleCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBsZW5ndGgpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzRGV0YWNoZWQoKSkKQEAgLTIzMywxMyArMjM4LDEzIEBAIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYg
dm0sIEpTR2xvCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVu
Z3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigtMSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3Ro
KTsKKyAgICBzaXplX3QgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5k
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC0yNjksMTIgKzI3NCwxMiBAQCBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0mIHZt
LCBKU0dsb2JhbAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxl
bmd0aCgpOwogICAgIGF1dG8gam9pbldpdGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1ZpZXcgc2Vw
YXJhdG9yKSAtPiBFbmNvZGVkSlNWYWx1ZSB7CiAgICAgICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5l
cihnbG9iYWxPYmplY3QsIHNlcGFyYXRvciwgbGVuZ3RoKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0RldGFjaGVk
KCkpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChWaWV3Q2xhc3M6OkFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseSkKICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CkBAIC0yODcs
NyArMjkyLDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWwKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAg
ICAgICAgICBqb2luZXIuYXBwZW5kRW1wdHlTdHJpbmcoKTsKICAgICAgICAgfQogICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqb2luZXIuam9pbihnbG9i
YWxPYmplY3QpKSk7CkBAIC0zMTcsMTkgKzMyMiwxOSBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwoVk0mIHZtLCBKU0dsb2Jh
bAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVj
dC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICB1bnNpZ25lZCBzdGFydCA9IGFyZ3VtZW50Q2xh
bXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLCBsZW5ndGgsIDApOworICAgIHNpemVfdCBzdGFydCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBsZW5n
dGgsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgdW5zaWdu
ZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZW5k
ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMiksIGxlbmd0aCwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyArK2luZGV4KQorICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyArK2luZGV4KQogICAgICAgICB0aGlzT2JqZWN0
LT5zZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGluZGV4LCBuYXRpdmVWYWx1ZSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QpOwpAQCAtMzQ1LDE0ICszNTAsMTQg
QEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEoKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hl
ZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGgg
PSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlVG9G
aW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKIAotICAgIGludCBpbmRleCA9IGxlbmd0aCAt
IDE7CisgICAgc2l6ZV90IGluZGV4ID0gbGVuZ3RoIC0gMTsKICAgICBpZiAoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBKU1ZhbHVlIGZyb21WYWx1ZSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgICAgIGRvdWJsZSBmcm9tRG91YmxlID0g
ZnJvbVZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKQEAgLTM2Myw3ICsz
NjgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSgogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJv
bURvdWJsZSA8IGxlbmd0aCkKLSAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGZyb21Eb3VibGUpOworICAgICAgICAgICAgaW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGZyb21Eb3VibGUpOwogICAgIH0KIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkp
CkBAIC0zNzcsMTAgKzM4MiwxNCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSgogICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKICAgICBSRUxFQVNFX0FTU0VS
VCghdGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKTsKIAotICAgIGZvciAoOyBpbmRleCA+PSAwOyAt
LWluZGV4KSB7CisgICAgLy8gV2UgYWx3YXlzIGhhdmUgYXQgbGVhc3Qgb25lIGl0ZXJhdGlvbiwg
c2luY2Ugd2UgY2hlY2tlZCB0aGF0IGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSAwIGVhcmxpZXIu
CisgICAgZG8gewogICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09IHRhcmdldE9wdGlvbikKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKLSAgICB9
CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLS1pbmRl
eDsKKyAgICB9IHdoaWxlICh0cnVlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoLTEpKTsKIH0KQEAgLTQ2MywxMSArNDcyLDExIEBAIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0ds
b2JhCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0Jl
ZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gdGhp
c09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5s
ZW5ndGgoKTsKIAotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9t
U3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHRoaXNMZW5n
dGgpOworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JF
bmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCB0aGlzTGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB1bnNp
Z25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xlbmd0aCk7CisgICAg
c2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlm
ICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC00NzcsNyArNDg2LDcgQEAgQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShW
TSYgdm0sIEpTR2xvYmEKICAgICBlbmQgPSBzdGQ6Om1heChiZWdpbiwgZW5kKTsKIAogICAgIEFT
U0VSVChlbmQgPj0gYmVnaW4pOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZCAtIGJlZ2luOwor
ICAgIHNpemVfdCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CkBAIC01NjksMTYg
KzU3OCwxNiBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gR2V0IHRoZSBsZW5ndGggaGVyZTsgbGF0ZXIg
YXNzZXJ0IHRoYXQgdGhlIGxlbmd0aCBkaWRuJ3QgY2hhbmdlLgotICAgIHVuc2lnbmVkIHRoaXNM
ZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgdGhpc0xlbmd0aCA9IHRo
aXNPYmplY3QtPmxlbmd0aCgpOwogCiAgICAgLy8gSSB3b3VsZCBhc3NlcnQgdGhhdCB0aGUgYXJn
dW1lbnRzIGFyZSBpbnRlZ2VycyBoZXJlIGJ1dCB0aGF0J3Mgbm90IHRydWUgc2luY2UKICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2ludGVnZXIgYWxsb3dzIHRo
ZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbgogICAgIC8vIHRvIGJlICsvLSBJbmZpbml0eSBhbmQg
LTAuCiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNOdW1iZXIoKSk7CiAgICAg
QVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSB8fCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpLmlzTnVtYmVyKCkpOwotICAgIHVuc2lnbmVkIGJlZ2luID0gYXJndW1lbnRD
bGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIHRoaXNMZW5ndGgpOworICAgIHNpemVfdCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZElu
ZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCB0
aGlzTGVuZ3RoKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHVuc2lnbmVk
IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVuZ3RoKTsKKyAgICBzaXpl
X3QgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHRoaXNMZW5ndGgsIHRoaXNMZW5ndGgpOwogICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVj
dC0+aXNEZXRhY2hlZCgpKTsKQEAgLTU4Nyw4ICs1OTYsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUo
Vk0mCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CiAKICAgICBBU1NFUlQoZW5kID49
IGJlZ2luKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBiZWdpbjsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSBlbmQgLSBiZWdpbjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gYmVnaW47CisgICAgc2l6ZV90
IGxlbmd0aCA9IGVuZCAtIGJlZ2luOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IHRoaXNPYmplY3QtPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKFVOTElL
RUxZKCFhcnJheUJ1ZmZlcikpIHsKQEAgLTU5Nyw3ICs2MDYsNyBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVh
dGUoVk0mCiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNMZW5ndGggPT0gdGhpc09iamVj
dC0+bGVuZ3RoKCkpOwogCi0gICAgdW5zaWduZWQgbmV3Qnl0ZU9mZnNldCA9IHRoaXNPYmplY3Qt
PmJ5dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CisgICAgc2l6
ZV90IG5ld0J5dGVPZmZzZXQgPSB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBW
aWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogCiAgICAgSlNPYmplY3QqIGRlZmF1bHRDb25zdHJ1Y3Rv
ciA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpZXdDbGFzczo6VHlwZWRB
cnJheVN0b3JhZ2VUeXBlKTsKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpOwo=
</data>
<flag name="commit-queue"
          id="466699"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442863</attachid>
            <date>2021-10-29 14:30:44 -0700</date>
            <delta_ts>2021-11-01 11:01:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch231975</filename>
            <type>text/plain</type>
            <size>29385</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZmM1Mjg3YzY0ZjNmLi4wMjI1NjU0ODJiYTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTAtMjkgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0IGNyYXNoZXMgaWYgdGhlIGxlbmd0aCArIG9iamVj
dE9mZnNldCBpcyA+IFVJTlQzMl9NQVgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTk3NQorICAgICAgICByZGFyOi8vODQ0MDIwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIC0gcmVncmVzcy04NDQwMjA0
MyBpcyB0aGUgdGVzdGNhc2UgdGhhdCByZXZlYWxlZCB0aGUgcHJvYmxlbS4KKyAgICAgICAgLSB0
eXBlZC1hcnJheS1zZXQtbGFyZ2UoLW9mZnNldCkgdGVzdCB0aGUgc2FtZSBmdW5jdGlvbiwgaW4g
dGhlIHR5cGVkLWFycmF5IHRvIHR5cGVkLWFycmF5IGNhc2UKKyAgICAgICAgLSB0eXBlZC1hcnJh
eS1sYXJnZS1zbGljZSB0ZXN0cyB0aGUgb25seSBjYWxsZXIgdGhhdCBwYXNzZXMgYSBub24tMCBv
YmplY3RPZmZzZXQsIGFuZCBmb3VuZCBvdGhlciBpc3N1ZXMgd2l0aCBpdAorICAgICAgICAtIHR5
cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5vdC5qcyBpcyBqdXN0IGFub3RoZXIgdGVz
dCBvZiB0aGUgV2FzbTRHQiBjaGFuZ2UgdGhhdCBJIGhhZCBmb3Jnb3R0ZW4gdG8gY29tbWl0CisK
KyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy04NDQwMjA0My5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLW9vYi1ldmVudHVhbGx5LW5vdC5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2Utc2xpY2Uu
anM6IEFkZGVkLgorICAgICAgICAoZXhwZWN0KToKKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJy
YXktc2V0LWxhcmdlLW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3R5cGVkLWFy
cmF5LXNldC1sYXJnZS5qczogQWRkZWQuCisKIDIwMjEtMTAtMjcgIERtaXRyeSBCZXpoZXRza292
ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1GdW5jdGlvbi1SZWZl
cmVuY2VzXSBBZGQgY2FsbF9yZWYgc3BlYyB0ZXN0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcmVncmVzcy04NDQwMjA0My5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtODQ0MDIwNDMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzI0NmRhMWJmZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTg0NDAyMDQzLmpzCkBA
IC0wLDAgKzEsNCBAQAorLy9Ac2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AcmVxdWlyZU9wdGlv
bnMoIi0td2F0Y2hkb2c9MTAwMCIsICItLXdhdGNoZG9nLWV4Y2VwdGlvbi1vayIpCisKK25ldyBV
aW50OEFycmF5KHtsZW5ndGg6IDIqKjMyfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90
eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90
eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjVmN2FiZmRjODYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1vb2ItZXZlbnR1YWxseS1ub3QuanMKQEAg
LTAsMCArMSwyOSBAQAorLy9AIHNraXAKKy8vIFRoaXMgdGVzdHMgdGFrZXMgPjRzIGV2ZW4gaW4g
cmVsZWFzZSBtb2RlIG9uIGFuIE0xIE1CUCwgc28gSSdkIHJhdGhlciBhdm9pZCBydW5uaW5nIGl0
IG9uIEVXUyBieSBkZWZhdWx0LgorCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsK
KworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIGluZGV4ID0gYWN0
dWFsTGVuZ3RoICsgMTA7CisgICAgICAgIHZhciB2YWx1ZSA9IDQyOworICAgICAgICBhcnJheVtp
bmRleF0gPSB2YWx1ZTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGFycmF5W2luZGV4XTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVk
ICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcp
OworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAxMDsKKyAgICBh
cnJheVtpbmRleF0gPSB2YWx1ZTsKKyAgICB2YXIgcmVzdWx0ID0gYXJyYXlbaW5kZXhdCisgICAg
aWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2YtYm91bmRzIGNh
c2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiAr
IHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xldCBmb3VyR2ln
cyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVH
aWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3VyR2lncyksIGZv
dXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRo
cmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2Utc2xpY2UuanMgYi9KU1Rlc3RzL3N0
cmVzcy90eXBlZC1hcnJheS1sYXJnZS1zbGljZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjgwNzBlYmFhOGRkZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLXNsaWNlLmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8vQCBz
a2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFy
Y2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKworbGV0IGdpZ2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7
CisKK2xldCBhcnJheSA9IG5ldyBJbnQ4QXJyYXkoNCAqIGdpZ2EpOworYXJyYXlbMF0gPSAxOwor
YXJyYXlbZ2lnYV0gPSAyOworYXJyYXlbMiAqIGdpZ2FdID0gMzsKK2FycmF5WzMgKiBnaWdhXSA9
IDQ7CisKK2Z1bmN0aW9uIGV4cGVjdChiYXNlLCBpbmRleCwgZXhwZWN0ZWQsIHN0cmluZykKK3sK
KyAgICBsZXQgcmVzdWx0ID0gYmFzZSBbaW5kZXhdCisgICAgaWYgKHJlc3VsdCAhPSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgIkV4cGVjdGVkICIgKyBleHBlY3RlZCArICIgYnV0IGdvdCAiICsg
cmVzdWx0ICsgIiB3aGlsZSB0ZXN0aW5nICIgKyBzdHJpbmc7Cit9CisKK2xldCBzbGljZTAgPSBh
cnJheS5zbGljZShnaWdhKTsKK2V4cGVjdChzbGljZTAsIDAsIDIsICJzbGljZTAiKTsKK2V4cGVj
dChzbGljZTAsIGdpZ2EsIDMsICJzbGljZTAiKTsKK2V4cGVjdChzbGljZTAsIDIqZ2lnYSwgNCwg
InNsaWNlMCIpOworCitsZXQgc3Vic2xpY2UwID0gc2xpY2UwLnNsaWNlKGdpZ2EpOworZXhwZWN0
KHN1YnNsaWNlMCwgMCwgMywgInN1YnNsaWNlMCIpOworZXhwZWN0KHN1YnNsaWNlMCwgZ2lnYSwg
NCwgInN1YnNsaWNlMCIpOworCitsZXQgc2xpY2UxID0gYXJyYXkuc2xpY2UoZ2lnYSwgMiAqIGdp
Z2EpOworZXhwZWN0KHNsaWNlMSwgMCwgMiwgInNsaWNlMSIpOworCitsZXQgc2xpY2UyID0gYXJy
YXkuc2xpY2UoMyAqIGdpZ2EpOworZXhwZWN0KHNsaWNlMiwgMCwgNCwgInNsaWNlMiIpOworCits
ZXQgc2xpY2UzID0gYXJyYXkuc2xpY2UoNCAqIGdpZ2EpOworbGV0IHN1YlNsaWNlMyA9IHNsaWNl
My5zbGljZSgwKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktc2V0
LWxhcmdlLW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LXNldC1sYXJnZS1v
ZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YjNjOWM5
YjIzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQt
bGFyZ2Utb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQHNraXAKKy8vIFRoaXMgdGVzdHMg
dGFrZXMgPjRzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlIG9uIGFuIE0xIE1CUCwgc28gSSdkIHJhdGhl
ciBhdm9pZCBydW5uaW5nIGl0IG9uIEVXUyBieSBkZWZhdWx0LgorCitsZXQgZ2lnYSA9IDEwMjQg
KiAxMDI0ICogMTAyNDsKK2xldCBzb3VyY2VMZW5ndGggPSBnaWdhOworbGV0IGRlc3RpbmF0aW9u
TGVuZ3RoID0gNCAqIGdpZ2E7CitsZXQgb2Zmc2V0ID0gMyAqIGdpZ2E7CisKK3ZhciBzb3VyY2Ug
PSBuZXcgVWludDhDbGFtcGVkQXJyYXkoc291cmNlTGVuZ3RoKTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpCisgICAgc291cmNlW2ldID0gaSAmIDB4M0Y7CisKK3ZhciBkZXN0aW5hdGlv
biA9IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5ndGgpOworZGVzdGluYXRpb24uc2V0KHNv
dXJjZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBvZmZzZXQKK2xldCB2YWx1ZSA9IGRlc3Rp
bmF0aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAgICB0aHJvdyAiQXQgaW5kZXggIiArIDQy
ICsgIiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1ZTsKKworLy8gQWZ0ZXIgdGhlIG9mZnNl
dAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgIGxldCBpbmRleCA9IG9mZnNl
dCArIGk7CisgICAgbGV0IHZhbHVlID0gZGVzdGluYXRpb25baW5kZXhdOworICAgIGxldCBleHBl
Y3RlZFZhbHVlID0gKGluZGV4IC0gb2Zmc2V0KSAmIDB4M0Y7CisgICAgaWYgKHZhbHVlICE9IGV4
cGVjdGVkVmFsdWUpCisgICAgICAgIHRocm93ICJBdCBpbmRleCAiICsgaW5kZXggKyAiLCBleHBl
Y3RlZCAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IGdvdCAiICsgdmFsdWU7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0
cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi40NTE2MjQ0ZWFkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy90eXBlZC1hcnJheS1zZXQtbGFyZ2UuanMKQEAgLTAsMCArMSw0MSBAQAorLy9Ac2tpcAor
Ly8gVGhpcyB0ZXN0cyB0YWtlcyA+NHMgZXZlbiBpbiByZWxlYXNlIG1vZGUgb24gYW4gTTEgTUJQ
LCBzbyBJJ2QgcmF0aGVyIGF2b2lkIHJ1bm5pbmcgaXQgb24gRVdTIGJ5IGRlZmF1bHQuCisKK2xl
dCBnaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworbGV0IHNvdXJjZUxlbmd0aCA9IDIgKiBnaWdh
OworbGV0IGRlc3RpbmF0aW9uTGVuZ3RoID0gMyAqIGdpZ2E7CitsZXQgb2Zmc2V0ID0gZ2lnYTsK
KwordmFyIHNvdXJjZSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShzb3VyY2VMZW5ndGgpOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBzb3VyY2VbaV0gPSBpICYgMHgzRjsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBsZXQgaW5kZXggPSBnaWdhICsgaTsK
KyAgICBzb3VyY2VbaW5kZXhdID0gaW5kZXggJiAweDNGCit9CisKK3ZhciBkZXN0aW5hdGlvbiA9
IG5ldyBJbnQ4QXJyYXkoZGVzdGluYXRpb25MZW5ndGgpOworZGVzdGluYXRpb24uc2V0KHNvdXJj
ZSwgb2Zmc2V0KTsKKworLy8gQmVmb3JlIHRoZSBvZmZzZXQKK2xldCB2YWx1ZSA9IGRlc3RpbmF0
aW9uWzQyXTsKK2lmICh2YWx1ZSAhPT0gMCkKKyAgICB0aHJvdyAiQXQgaW5kZXggIiArIDQyICsg
IiwgZXhwZWN0ZWQgMCBidXQgZ290ICIgKyB2YWx1ZTsKKworLy8gQWZ0ZXIgdGhlIG9mZnNldCBi
dXQgYmVmb3JlIElOVDMyX01BWAorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
IGxldCBpbmRleCA9IG9mZnNldCArIGk7CisgICAgbGV0IHZhbHVlID0gZGVzdGluYXRpb25baW5k
ZXhdOworICAgIGxldCBleHBlY3RlZFZhbHVlID0gKGluZGV4IC0gb2Zmc2V0KSAmIDB4M0Y7Cisg
ICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVmFsdWUpCisgICAgICAgIHRocm93ICJBdCBpbmRleCAi
ICsgaW5kZXggKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IGdvdCAiICsg
dmFsdWU7Cit9CisKKy8vIEFmdGVyIHRoZSBvZmZzZXQgYW5kIGdyZWF0ZXIgdGhhbiBJTlQzMl9N
QVgKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBsZXQgaW5kZXggPSBvZmZz
ZXQgKyBnaWdhICsgaTsKKyAgICBsZXQgdmFsdWUgPSBkZXN0aW5hdGlvbltpbmRleF07CisgICAg
bGV0IGV4cGVjdGVkVmFsdWUgPSAoaW5kZXggLSBvZmZzZXQpICYgMHgzRjsKKyAgICBpZiAodmFs
dWUgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkF0IGluZGV4ICIgKyBpbmRleCAr
ICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgZ290ICIgKyB2YWx1ZTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDA1MzY0ZDk3MmNjOC4uNzE0ZTc1N2JlZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAyMS0xMC0yOSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hlcyBpZiB0aGUgbGVuZ3RoICsgb2JqZWN0
T2Zmc2V0IGlzID4gVUlOVDMyX01BWAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxOTc1CisgICAgICAgIHJkYXI6Ly84NDQwMjA0MworCisgICAgICAg
IFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVUlOVF9NQVggKGFuZCBhbnl0
aGluZyBhYm92ZSBpdCkgaXMgbm90IGEgdmFsaWQgYXJyYXkgaW5kZXgsIHNvIHdlIGNhbm5vdCB1
c2UgSlNPYmplY3Q6OmdldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKSB3aXRoIGFuIGluZGV4
IHRoYXQgYmlnLgorICAgICAgICBUaGlzIHdhcyBwb2ludGVkIGJ5IFl1c3VrZSBpbiBoaXMgcmV2
aWV3IG9mIG15IHJlY2VudCBwYXRjaCB0aGF0IGludHJvZHVjZWQgdGhlIHByb2JsZW0gKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMjYzIxKSwKKyAgICAgICAg
YnV0IEkgbWlzdW5kZXJzdG9vZCB0aGUgY29kZSBhbmQgdGhvdWdodCB3ZSBjb3VsZCBuZXZlciBn
ZXQgdmFsdWVzIHRoYXQgYmlnIGF0IHRoYXQgcG9pbnQsIHRodXMgb25seSBwdXR0aW5nIGEgUkVM
RUFTRV9BU1NFUlQuCisgICAgICAgIEluIHRoaXMgcGF0Y2ggSSBpbnN0ZWFkIGFwcGx5IGhpcyBv
cmlnaW5hbCBzdWdnZXN0aW9uIHRvIGhhdmUgYSBmaXJzdCBsb29wIHVzaW5nIHRoZSAoZmFzdCkg
SlNPYmplY3Q6OmdldCgpLAorICAgICAgICBhbmQgYSBzZWNvbmQgbG9vcCBmb3IgYW55IGxhcmdl
IGluZGljZXMsIHVzaW5nIGEgc2xvd2VyIGJ1dCBzYWZlIGNvZGUgcGF0aC4KKworICAgICAgICBJ
IGFsc28gZml4ZWQgYW4gdW5yZWxhdGVkIGJ1ZyBJIG5vdGljZWQgaW4gQ2xvYmJlcml6ZS9BYnN0
cmFjdEludGVycHJldGVyIHdoaWxlIHRlc3RpbmcgdGhlIHJlc3Qgb2YgdGhlIHBhdGNoOgorICAg
ICAgICB0aGV5IHdlcmUgbm90IGF3YXJlIHRoYXQgTmV3VHlwZWRBcnJheSBjYW4gdGFrZSBhIElu
dDUyUmVwVXNlIGNoaWxkLgorCisgICAgICAgIEZpbmFsbHksIHdoaWxlIHRyeWluZyB0byBwcm9w
ZXJseSB0ZXN0IHRoaXMgY2hhbmdlLCBJIGRpc2NvdmVyZWQgdGhhdCBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNTbGljZQorICAgICAgICAod2hpY2ggaXMgdGhlIG9ubHkgY2FsbGVyIG9m
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgd2hpY2ggcGFzc2VzIGl0IGEg
bm9uLTAgb2JqZWN0T2Zmc2V0KQorICAgICAgICB3YXMgc3RpbGwgdXNpbmcgdW5zaWduZWQgZXZl
cnl3aGVyZSBpbnN0ZWFkIG9mIHNpemVfdCwgYW5kIHRoYXQgdGhlIHNhbWUgd2FzIHRydWUgb2Yg
YWxsIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgc2FtZSBmaWxlLgorICAgICAgICBTbyBJIGZpeGVk
IGl0IGluIHRoZSBzYW1lIHBhdGNoLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcjxzaGFyaW5nTW9kZT46OmNvbnN0cnVjdEltcGwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbCk6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjphcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAg
KEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAg
IChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAg
KEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNU
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOgorCiAyMDIxLTEwLTI4ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGNhbGwgdHlw
ZSgpIG9uIFN0cnVjdHVyZSwgaW5zdGVhZCBjYWxsIHR5cGUoKSBvbiBpdHMgdHlwZUluZm8oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDM4OGUwNjZhODg4NS4uZGIyYTkzZTZhMTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC0yOTU4LDYgKzI5NTgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKaW5kZXggOWFkNWMyNzAyMGQ2Li5mNjZhOThlYzRlMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVz
ZToKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIHJlYWQoSGVhcE9iamVj
dENvdW50KTsKICAgICAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCAzOTk3NDc0MWY2MTMuLmI5MmNlMTU3
M2MwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCkBAIC04MSw5ICs4MSw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+Ojpjb25zdHJ1
Y3RJbXBsKEpTR2xvCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURf
U1RSVUNUVVJFKHZtLCBhcnJheUJ1ZmZlclN0cnVjdHVyZVdpdGhTaGFyaW5nTW9kZTxzaGFyaW5n
TW9kZT4sIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoOworICAgIHNpemVf
dCBsZW5ndGg7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAg
IGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxP
YmplY3QsICJsZW5ndGgiKTsKKyAgICAgICAgbGVuZ3RoID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gQWx0aG91Z2ggdGhlIGRvY3VtZW50YXRpb24gZG9lc24ndCBz
YXkgc28sIGl0IGlzIGluIGZhY3QgY29ycmVjdCB0byBzYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDMzNmYxYWVlM2Y3MS4uZjZlODAwY2Q1
YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
QEAgLTI3OCw3ICsyNzgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgc2l6ZV90IG9m
ZnNldCA9IDA7CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCA9IHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUp
ICYmIGFyZ0NvdW50ID4gMSkgewotICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgICAg
ICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvVHlwZWRBcnJheUlu
ZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgaWYgKGFyZ0NvdW50ID4g
MikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhM2RkYzFmODM2YTcuLjBiNzM4
ODkxMGE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMxMywxOSArMzEzLDMz
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAg
aWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIFZl
cmlmeSB0aGF0IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmplY3QtPmdldCgpIHdpdGggYW4gaW5kZXgg
b2YgVUlOVF9NQVggb3IgbW9yZQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9iamVjdE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7Ci0gICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXpl
IHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBv
YmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0
T2Zmc2V0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNl
dCArIGksIHZhbHVlKTsKKyAgICAgICAgYXV0byB0cnlTZXRJbmRleCA9IFsmXShzaXplX3QgaW5k
ZXgsIEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgeworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0g
c2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwogICAgICAgICAgICAg
aWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH07CisgICAgICAgIC8vIEl0IGlzIG5vdCB2YWxpZCB0byBldmVyIGNhbGwgb2JqZWN0
LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIG1vcmUgdGhhbiBNQVhfQVJSQVlfSU5ERVguCisgICAg
ICAgIC8vIFNvIHdlIGl0ZXJhdGUgaW4gdGhlIG9wdGltaXplZCBsb29wIHVwIHRvIE1BWF9BUlJB
WV9JTkRFWCwgdGhlbiBpZiB0aGVyZSBpcyBhbnl0aGluZyB0byBkbyBiZXlvbmQgdGhpcywgd2Ug
cmVseSBvbiBzbG93ZXIgY29kZS4KKyAgICAgICAgc2l6ZV90IHNhZmVVbmFkanVzdGVkTGVuZ3Ro
ID0gc3RkOjptaW4obGVuZ3RoLCBzdGF0aWNfY2FzdDxzaXplX3Q+KE1BWF9BUlJBWV9JTkRFWCkg
KyAxKTsKKyAgICAgICAgc2l6ZV90IHNhZmVMZW5ndGggPSBvYmplY3RPZmZzZXQgPD0gc2FmZVVu
YWRqdXN0ZWRMZW5ndGggPyBzYWZlVW5hZGp1c3RlZExlbmd0aCAtIG9iamVjdE9mZnNldCA6IDA7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FmZUxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBBU1NFUlQoaSArIG9iamVjdE9mZnNldCA8PSBNQVhfQVJSQVlfSU5ERVgpOworICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghdHJ5U2V0SW5kZXgo
b2Zmc2V0ICsgaSwgdmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gc2FmZUxlbmd0aDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGkgKyBvYmplY3RPZmZzZXQpKTsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICgh
dHJ5U2V0SW5kZXgob2Zmc2V0ICsgaSwgdmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IDAwNDkyYzBhYjNl
My4uZGYwNDM1ZjZlMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgKQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBz
cGVjaWVzQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWMKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZElu
ZGV4RnJvbVN0YXJ0T3JFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IDApCitpbmxp
bmUgc2l6ZV90IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IHVu
ZGVmaW5lZFZhbHVlID0gMCkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIHVuZGVmaW5lZFZhbHVlOwpAQCAtOTQsOSArOTQsOSBAQCBpbmxpbmUgdW5zaWdu
ZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIGRvdWJsZSBpbmRleERvdWJsZSA9IHZhbHVlLnRvSW50ZWdlck9ySW5m
aW5pdHkoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaW5kZXhEb3VibGUgPCAwKSB7CiAgICAgICAg
IGluZGV4RG91YmxlICs9IGxlbmd0aDsKLSAgICAgICAgcmV0dXJuIGluZGV4RG91YmxlIDwgMCA/
IDAgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhEb3VibGUpOworICAgICAgICByZXR1cm4g
aW5kZXhEb3VibGUgPCAwID8gMCA6IHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXhEb3VibGUpOwog
ICAgIH0KLSAgICByZXR1cm4gaW5kZXhEb3VibGUgPiBsZW5ndGggPyBsZW5ndGggOiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5kZXhEb3VibGUpOworICAgIHJldHVybiBpbmRleERvdWJsZSA+IGxl
bmd0aCA/IGxlbmd0aCA6IHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXhEb3VibGUpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkBAIC0xMTAsMTMgKzExMCwxNiBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChW
TSYgdm0sIEpTR2xvYmFsTwogICAgIGlmIChVTkxJS0VMWSghY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Il9zKTsKIAotICAgIHVuc2lnbmVk
IG9mZnNldDsKKyAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGRvdWJsZSBvZmZzZXROdW1iZXIgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShvZmZzZXROdW1iZXIgPCAwKSkKICAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2Zmc2V0IHNob3VsZCBu
b3QgYmUgbmVnYXRpdmUiKTsKLSAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0ZDo6bWluKG9mZnNldE51bWJlciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CisgICAgICAgIGlmIChvZmZzZXROdW1iZXIgPD0g
bWF4U2FmZUludGVnZXIoKSAmJiBvZmZzZXROdW1iZXIgPD0gc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSkKKyAgICAgICAgICAgIG9mZnNldCA9
IG9mZnNldE51bWJlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb2Zmc2V0ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0
ID0gMDsKIApAQCAtMTI2LDcgKzEyOSw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9iYWxPCiAgICAg
SlNPYmplY3QqIHNvdXJjZUFycmF5ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgc2l6ZV90IGxlbmd0aDsKICAgICBpZiAo
aXNUeXBlZFZpZXcoc291cmNlQXJyYXktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZSkpIHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8
SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShz
b3VyY2VWaWV3LT5pc0RldGFjaGVkKCkpKQpAQCAtMTM2LDcgKzEzOSw3IEBAIEFMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2
bSwgSlNHbG9iYWxPCiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9
IHNvdXJjZUFycmF5LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9MZW5ndGgoZ2xvYmFsT2JqZWN0KTsKICAgICB9
CiAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTE1NiwxOCArMTU5LDIwIEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihWTSYgdm0sIEpTCiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKLSAgICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwotICAgIGxv
bmcgdG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhp
c09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGxlbmd0
aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgbG9uZyBmcm9tID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGZyb20g
PSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBsb25nIGZpbmFsID0gYXJndW1lbnRDbGFtcGVkSW5k
ZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMiksIGxl
bmd0aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgZmluYWwgPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgbGVuZ3Ro
LCBsZW5ndGgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgaWYgKGZpbmFsIDwgZnJvbSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGxvbmcgY291bnQgPSBzdGQ6Om1p
bihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7CisgICAgQVNTRVJU
KHRvIDw9IGxlbmd0aCk7CisgICAgQVNTRVJUKGZyb20gPD0gbGVuZ3RoKTsKKyAgICBzaXplX3Qg
Y291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFsIC0gZnJv
bSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKQEAgLTE4NywxNCArMTkyLDE0IEBAIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVk
ZXMoVk0mIHZtLCBKU0dsCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpc09iamVj
dC0+bGVuZ3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIEpTVmFsdWUgdmFsdWVUb0ZpbmQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogCi0gICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSwgbGVuZ3RoKTsKKyAgICBzaXplX3QgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZy
b21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgbGVuZ3Ro
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCkBAIC0yMzMsMTMgKzIzOCwxMyBAQCBB
TFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YoVk0mIHZtLCBKU0dsbwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRo
aXNPYmplY3QtPmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIAogICAgIEpTVmFsdWUgdmFsdWVUb0ZpbmQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRD
bGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMSksIGxlbmd0aCk7CisgICAgc2l6ZV90IGluZGV4ID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGxlbmd0
aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQpAQCAtMjY5LDEyICsyNzQsMTIgQEAg
QUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luKFZNJiB2bSwgSlNHbG9iYWwKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0
aGlzT2JqZWN0LT5sZW5ndGgoKTsKICAgICBhdXRvIGpvaW5XaXRoU2VwYXJhdG9yID0gWyZdIChT
dHJpbmdWaWV3IHNlcGFyYXRvcikgLT4gRW5jb2RlZEpTVmFsdWUgewogICAgICAgICBKU1N0cmlu
Z0pvaW5lciBqb2luZXIoZ2xvYmFsT2JqZWN0LCBzZXBhcmF0b3IsIGxlbmd0aCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlmICghdGhpc09iamVj
dC0+aXNEZXRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoVmlld0NsYXNzOjpBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHkp
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5
KGkpOwpAQCAtMjg3LDcgKzI5Miw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihWTSYgdm0sIEpTR2xvYmFsCiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCiAgICAgICAgICAgICAgICAgam9pbmVyLmFwcGVuZEVtcHR5U3RyaW5nKCk7CiAgICAgICAg
IH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9p
bmVyLmpvaW4oZ2xvYmFsT2JqZWN0KSkpOwpAQCAtMzE3LDE5ICszMjIsMTkgQEAgQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKFZN
JiB2bSwgSlNHbG9iYWwKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzT2JqZWN0
LT5sZW5ndGgoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gVmlld0NsYXNzOjp0b0FkYXB0b3JO
YXRpdmVGcm9tVmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgdW5zaWduZWQgc3RhcnQg
PSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSwgbGVuZ3RoLCAwKTsKKyAgICBzaXplX3Qgc3RhcnQgPSBhcmd1bWVu
dENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgxKSwgbGVuZ3RoLCAwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgIHVuc2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0aCk7Cisg
ICAgc2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBsZW5ndGgsIGxlbmd0aCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0Rl
dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0g
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgKytpbmRleCkKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgKytpbmRleCkKICAgICAg
ICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpbmRleCwgbmF0aXZl
VmFsdWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0KTsKQEAgLTM0
NSwxNCArMzUwLDE0IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBKCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2Fn
ZSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZVRvRmluZCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAKLSAgICBpbnQgaW5k
ZXggPSBsZW5ndGggLSAxOworICAgIHNpemVfdCBpbmRleCA9IGxlbmd0aCAtIDE7CiAgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgSlNWYWx1ZSBmcm9t
VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgICAgICBkb3VibGUg
ZnJvbURvdWJsZSA9IGZyb21WYWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7
CkBAIC0zNjMsNyArMzY4LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEoKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGZyb21Eb3VibGUgPCBsZW5ndGgpCi0gICAgICAgICAgICBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmcm9tRG91YmxlKTsKKyAgICAgICAgICAgIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihmcm9tRG91YmxlKTsKICAgICB9CiAKICAgICBpZiAodGhpc09iamVjdC0+
aXNEZXRhY2hlZCgpKQpAQCAtMzc3LDEwICszODIsMTQgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0s
IEoKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIXRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSk7CiAKLSAgICBmb3IgKDsg
aW5kZXggPj0gMDsgLS1pbmRleCkgeworICAgIC8vIFdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IG9u
ZSBpdGVyYXRpb24sIHNpbmNlIHdlIGNoZWNrZWQgdGhhdCBsZW5ndGggaXMgZGlmZmVyZW50IGZy
b20gMCBlYXJsaWVyLgorICAgIGRvIHsKICAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSB0YXJn
ZXRPcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGlu
ZGV4KSk7Ci0gICAgfQorICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIC0taW5kZXg7CisgICAgfSB3aGlsZSAodHJ1ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiB9CkBAIC00NjMsMTEgKzQ3MiwxMSBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNl
KFZNJiB2bSwgSlNHbG9iYQogICAgIGlmICh0aGlzT2JqZWN0LT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHR5cGVkQXJy
YXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgdW5zaWduZWQgdGhp
c0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOworICAgIHNpemVfdCB0aGlzTGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKLSAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xh
bXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCB0aGlzTGVuZ3RoKTsKKyAgICBzaXplX3QgYmVnaW4gPSBhcmd1bWVudENsYW1wZWRJbmRl
eEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgdGhp
c0xlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgdW5zaWduZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVu
ZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHRoaXNMZW5ndGgsIHRoaXNM
ZW5ndGgpOworICAgIHNpemVfdCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9y
RW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhp
c0xlbmd0aCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQpAQCAtNDc3LDcgKzQ4Niw3
IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2JhCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVu
ZCk7CiAKICAgICBBU1NFUlQoZW5kID49IGJlZ2luKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBl
bmQgLSBiZWdpbjsKKyAgICBzaXplX3QgbGVuZ3RoID0gZW5kIC0gYmVnaW47CiAKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxlbmd0aCkp
OwpAQCAtNTY5LDE2ICs1NzgsMTYgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKFZNJgogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIEdldCB0aGUgbGVuZ3Ro
IGhlcmU7IGxhdGVyIGFzc2VydCB0aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KLSAgICB1
bnNpZ25lZCB0aGlzTGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IHRo
aXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIAogICAgIC8vIEkgd291bGQgYXNzZXJ0
IHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMgaGVyZSBidXQgdGhhdCdzIG5vdCB0cnVl
IHNpbmNlCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRl
Z2VyIGFsbG93cyB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24KICAgICAvLyB0byBiZSArLy0g
SW5maW5pdHkgYW5kIC0wLgogICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzTnVt
YmVyKCkpOwogICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkg
fHwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc051bWJlcigpKTsKLSAgICB1bnNpZ25lZCBiZWdp
biA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCB0aGlzTGVuZ3RoKTsKKyAgICBzaXplX3QgYmVnaW4gPSBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSwgdGhpc0xlbmd0aCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
LSAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdGhpc0xlbmd0aCwgdGhpc0xlbmd0
aCk7CisgICAgc2l6ZV90IGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCB0aGlzTGVuZ3RoLCB0aGlzTGVu
Z3RoKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQoIXRoaXNPYmplY3QtPmlzRGV0YWNoZWQoKSk7CkBAIC01ODcsOCArNTk2LDggQEAgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJgogICAgIGVuZCA9IHN0ZDo6bWF4KGJlZ2luLCBlbmQpOwogCiAgICAg
QVNTRVJUKGVuZCA+PSBiZWdpbik7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gYmVnaW47Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gZW5kIC0gYmVnaW47CisgICAgc2l6ZV90IG9mZnNldCA9IGJlZ2lu
OworICAgIHNpemVfdCBsZW5ndGggPSBlbmQgLSBiZWdpbjsKIAogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwog
ICAgIGlmIChVTkxJS0VMWSghYXJyYXlCdWZmZXIpKSB7CkBAIC01OTcsNyArNjA2LDcgQEAgQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y1N1YmFycmF5Q3JlYXRlKFZNJgogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzTGVuZ3Ro
ID09IHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKIAotICAgIHVuc2lnbmVkIG5ld0J5dGVPZmZzZXQg
PSB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3Q2xhc3M6OmVsZW1lbnRT
aXplOworICAgIHNpemVfdCBuZXdCeXRlT2Zmc2V0ID0gdGhpc09iamVjdC0+Ynl0ZU9mZnNldCgp
ICsgb2Zmc2V0ICogVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKIAogICAgIEpTT2JqZWN0KiBkZWZh
dWx0Q29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlDb25zdHJ1Y3RvcihWaWV3
Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgSlNWYWx1ZSBzcGVjaWVzID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>